[mpich2-commits] r9527 - in mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc: . config contrib contrib/dist contrib/hg doc doc/images include include/hwloc include/hwloc/autogen include/private m4 src tests tests/embedded tests/embedded/config tests/linux tests/linux/gather tests/ports tests/ports/include tests/ports/include/sys tests/rename tests/xml utils

balaji at mcs.anl.gov balaji at mcs.anl.gov
Fri Feb 24 18:52:56 CST 2012


Author: balaji
Date: 2012-02-24 18:52:55 -0600 (Fri, 24 Feb 2012)
New Revision: 9527

Added:
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/decl.m4
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_vendor.m4
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen-config.cfg.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen.css
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc-hello.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/HACKING
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.pdf
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.png
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/diagram.fig
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/dudley.png
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/dudley.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/emmett.png
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/emmett.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/hagrid.png
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/hagrid.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.pdf
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.png
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.pdf
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.png
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.pdf
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.png
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-css.inc
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-footer.inc
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-header.inc
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org.cfg
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/solaris-chiptype.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris-chiptype.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/cuda.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/cudart.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/README.txt
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/autogen.sh
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/config/README.txt
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/configure.ac
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/do_test.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/main.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/run-embedded-tests.sh
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/glibc-sched.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_backends.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bind.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_first_last_weight.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_singlify.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_string.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_custom.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_distances.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_cache_covering_cpuset.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_closest_objs.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_largest_objs_inside_cpuset.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_last_cpu_location.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_next_obj_covering_cpuset.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_covering_cpuset.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_inside_cpuset.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_shared_cache_covering_obj.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_groups.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_groups2.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_insert_misc.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_iodevs.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_is_thissystem.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_obj_infos.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_object_userdata.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_synthetic.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_topology_restrict.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_type_depth.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux-libnuma.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/128ia64-17n4s2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/128ia64-17n4s2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.options
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.options
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-2m4c2t.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.options
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.options
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.options
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.options
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.options
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/20s390-2g6s4c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/20s390-2g6s4c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ia64-64n2s2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.exclude
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.exclude
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2amd64-2n.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2amd64-2n.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.env
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.options
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2s390-2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2s390-2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.env
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.env
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.options
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32ppc-4n4c2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32ppc-4n4c2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ia64-4s.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ia64-4s.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ppc-4c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ppc-4c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4qs22-2s2t.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8amd64-4n2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2n2s2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2n2s2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2s2c2t.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2s2c2t.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-4s2c.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.env
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.source
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.bz2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/hwloc-gather-topology.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/test-topology.sh.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/myriexpress.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/openfabrics-verbs.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/cpuset.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/kstat.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/numa.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/picl.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/pthread_np.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/radset.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/cpuset.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/lgrp_user.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/mpctl.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/processor.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/procset.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/rset.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/sysctl.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/systemcfg.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/systeminfo.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/thread.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/windows.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/main.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16amd64-8n2c-cpusets.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16em64t-4s2c2t-offlines.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16em64t-4s2c2t.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/24em64t-2n6c2t-pci.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/8em64t-2mi2ma2c.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/96em64t-4n4d3ca2co-pci.xml
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/test-topology.sh.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xmlbuffer.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler-remote.1in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler-remote.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler.1in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.1in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.1in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distances.1in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distances.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.1in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-gather-topology.1in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.1in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc.7in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-cairo.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-color.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-fig.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-text.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-windows.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-xml.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.1in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/misc.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.input1
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.input2
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.sh.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-calc.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-calc.sh.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distances.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distances.sh.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.sh.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-ls.output
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-ls.sh.in
Removed:
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/depcomp_pgcc.patch
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/README
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/m4/decl.m4
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/README
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/README
Modified:
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/COPYING
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/README
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/distscript.csh
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_attributes.m4
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_visibility.m4
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_internal.m4
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_pkg.m4
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/configure.ac
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/dist/make_dist_tarball
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/hg/build-hgignore.pl
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/update-my-copyright.pl
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/autogen/config.h.in
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/bitmap.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cpuset.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cuda.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cudart.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/glibc-sched.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux-libnuma.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/myriexpress.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/openfabrics-verbs.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/debug.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/misc.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/private.h
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/bind.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/cpuset.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/dolib.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/misc.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-aix.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-darwin.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-hpux.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-libpci.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-osf.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-synthetic.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-windows.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
   mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/traversal.c
Log:
Upgrade hwloc to 1.4.1rc1.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/COPYING
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/COPYING	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/COPYING	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,5 +1,5 @@
 Copyright © 2009 CNRS
-Copyright © 2009 INRIA.  All rights reserved.
+Copyright © 2009 inria.  All rights reserved.
 Copyright © 2009 Université Bordeaux 1
 Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
 See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,4 +1,4 @@
-# Copyright © 2009      INRIA.  All rights reserved.
+# Copyright © 2009      inria.  All rights reserved.
 # Copyright © 2009      Université Bordeaux 1
 # Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
 # See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/NEWS	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,5 +1,5 @@
 Copyright © 2009 CNRS
-Copyright © 2009-2011 INRIA.  All rights reserved.
+Copyright © 2009-2011 inria.  All rights reserved.
 Copyright © 2009-2011 Université Bordeaux 1
 Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
 
@@ -17,6 +17,118 @@
 in v0.9.1).
 
 
+Version 1.4.1
+-------------
+* This release contains all changes from v1.3.2.
+* Fix some overzealous assertions in the distance grouping code.
+* Workaround BIOS reporting empty I/O locality in cuda and openfabrics
+  helpers on Linux. Thanks to Albert Solernou for reporting the problem.
+* Fix helpers converting from Linux libnuma to hwloc (hwloc/linux-libnuma.h)
+  in case of out-of-order NUMA node ids.
+
+
+Version 1.4.0 (does not contain all v1.3.2 changes)
+-------------
+* Major features
+  + Add "custom" interface and "assembler" tools to build multi-node
+    topology. See the Multi-node Topologies section in the documentation
+    for details.
+* Interface improvements
+  + Add symmetric_subtree object attribute to ease assumptions when consulting
+    regular symmetric topologies.
+  + Add a CPUModel and CPUType info attribute to Socket objects on Linux
+    and Solaris.
+  + Add hwloc_get_obj_index_inside_cpuset() to retrieve the "logical" index
+    of an object within a subtree of the topology.
+  + Add more NVIDIA CUDA helpers in cuda.h and cudart.h to find hwloc objects
+    corresponding to CUDA devices.
+* Discovery improvements
+  + Add a group object above partial distance matrices to make sure
+    the matrices are available in the final topology, except when this
+    new object would contradict the existing hierarchy.
+  + Grouping by distances now also works when loading from XML.
+  + Fix some corner cases in object insertion, for instance when dealing
+    with NUMA nodes without any CPU.
+* Backends
+  + Implement hwloc_get_area_membind() on Linux.
+  + Honor I/O topology flags when importing from XML.
+  + Further improve XML-related error checking and reporting.
+  + Hide synthetic topology error messages unless HWLOC_SYNTHETIC_VERBOSE=1.
+* Tools
+  + Add synthetic exporting of symmetric topologies to lstopo.
+  + lstopo --horiz and --vert can now be applied to some specific object types.
+  + lstopo -v -p now displays distance matrices with physical indexes.
+  + Add hwloc-distances utility to list distances.
+* Documentation
+  + Fix and/or document the behavior of most inline functions in hwloc/helper.h
+    when the topology contains some I/O or Misc objects.
+  + Backend documentation enhancements.
+* Bug fixes
+  + Fix missing last bit in hwloc_linux_get_thread_cpubind().
+    Thanks to Carolina Gómez-Tostón Gutiérrez for reporting the issue.
+  + Fix FreeBSD build without cpuid support.
+  + Fix several Windows build issues.
+  + Fix inline keyword definition in public headers.
+  + Fix dependencies in the embedded library.
+  + Improve visibility support detection. Thanks to Dave Love for providing
+    the patch.
+  + Remove references to internal symbols in the tools.
+
+
+Version 1.3.2
+-------------
+* Fix missing last bit in hwloc_linux_get_thread_cpubind().
+  Thanks to Carolina Gómez-Tostón Gutiérrez for reporting the issue.
+* Fix build with -mcmodel=medium. Thanks to Devendar Bureddy for reporting
+  the issue.
+* Fix build with Solaris Studio 12 compiler when XML is disabled.
+  Thanks to Paul H. Hargrove for reporting the problem.
+* Fix installation with old GNU sed, for instance on Red Hat 8.
+  Thanks to Paul H. Hargrove for reporting the problem.
+* Fix PCI locality when Linux cgroups restrict the available CPUs.
+* Fix floating point issue when grouping by distance on mips64 architecture.
+  Thanks to Paul H. Hargrove for reporting the problem.
+* Fix conversion from/to Linux libnuma when some NUMA nodes have no memory.
+* Fix support for gccfss compilers with broken ffs() support. Thanks to
+  Paul H. Hargrove for reporting the problem and providing a patch.
+* Fix FreeBSD build without cpuid support.
+* Fix several Windows build issues.
+* Fix inline keyword definition in public headers.
+* Fix dependencies in the embedded library.
+* Detect when a compiler such as xlc may not report compile errors
+  properly, causing some configure checks to be wrong. Thanks to
+  Paul H. Hargrove for reporting the problem and providing a patch.
+* Improve visibility support detection. Thanks to Dave Love for providing
+  the patch.
+* Remove references to internal symbols in the tools.
+* Fix installation on systems with limited command-line size.
+  Thanks to Paul H. Hargrove for reporting the problem.
+* Further improve XML-related error checking and reporting.
+
+
+Version 1.3.1
+-------------
+* Fix pciutils detection with pkg-config when not installed in standard
+  directories.
+* Fix visibility options detection with the Solaris Studio compiler.
+  Thanks to Igor Galić and Terry Dontje for reporting the problems.
+* Fix support for old Linux sched.h headers such as those found
+  on Red Hat 8. Thanks to Paul H. Hargrove for reporting the problems.
+* Fix inline and attribute support for Solaris compilers. Thanks to
+  Dave Love for reporting the problems.
+* Print a short summary at the end of the configure output. Thanks to
+  Stefan Eilemann for the suggestion.
+* Add --disable-libnuma configure option to disable libnuma-based
+  memory binding support on Linux.  Thanks to Rayson Ho for the
+  suggestion.
+* Make hwloc's configure script properly obey $PKG_CONFIG.  Thanks to
+  Nathan Phillip Brink for raising the issue.
+* Silence some harmless pciutils warnings, thanks to Paul H. Hargrove
+  for reporting the problem.
+* Fix the documentation with respect to hwloc_pid_t and hwloc_thread_t
+  being either pid_t and pthread_t on Unix, or HANDLE on Windows.
+
+
 Version 1.3.0
 -------------
 * Major features

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/README
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/README	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/README	2012-02-25 00:52:55 UTC (rev 9527)
@@ -12,7 +12,7 @@
 locality on modern computing platforms.
 
 Note that the hwloc project represents the merger of the libtopology project
-from INRIA and the Portable Linux Processor Affinity (PLPA) sub-project from
+from inria and the Portable Linux Processor Affinity (PLPA) sub-project from
 Open MPI. Both of these prior projects are now deprecated. The first hwloc
 release was essentially a "re-branding" of the libtopology code base, but with
 both a few genuinely new features and a few PLPA-like features added in. Prior
@@ -102,9 +102,12 @@
 
 The hwloc core may also benefit from the following development packages:
 
-  * libxml2 (also needed for lstopo XML support).
   * pciutils (libpci) for I/O discovery.
   * libnuma for memory binding and migration support on Linux.
+  * libxml2 for full XML import/export support (otherwise, the internal
+ minimalistic parser will only be able to import XML files that were
+ exported by the same hwloc release). See Importing and exporting topologies
+ from/to XML files for details.
 
 CLI Examples
 
@@ -357,7 +360,8 @@
 routines for advanced programmers that want to manually manipulate objects and
 follow links between them. Documentation for everything in hwloc.h are provided
 later in this document. Developers should also look at hwloc/helper.h (and also
-in this document, which provides good higher-level topology traversal examples.
+in this document, which provides good higher-level topology traversal
+examples).
 
 To precisely define the vocabulary used by hwloc, a Terms and Definitions
 section is available and should probably be read first.
@@ -446,7 +450,7 @@
 
 /* Example hwloc API program.
  *
- * Copyright ? 2009-2010 INRIA.  All rights reserved.
+ * Copyright ? 2009-2010 inria.  All rights reserved.
  * Copyright ? 2009-2011 Universit? Bordeaux 1
  * Copyright ? 2009-2010 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -686,7 +690,7 @@
 Because of functional and ideological overlap, these two code bases and ideas
 were merged and released under the name "hwloc" as an Open MPI sub-project.
 
-libtopology was initially developed by the INRIA Runtime Team-Project (http://
+libtopology was initially developed by the inria Runtime Team-Project (http://
 runtime.bordeaux.inria.fr/) (headed by Raymond Namyst (http://
 dept-info.labri.fr/~namyst/). PLPA was initially developed by the Open MPI
 development team as a sub-project. Both are now deprecated in favor of hwloc,
@@ -701,6 +705,8 @@
   * Environment Variables
   * CPU and Memory Binding Overview
   * I/O Devices
+  * Multi-node Topologies
+  * Importing and exporting topologies from/to XML files
   * Interoperability With Other Software
   * Thread Safety
   * Embedding hwloc in Other Software
@@ -710,5 +716,5 @@
 
 -------------------------------------------------------------------------------
 
-Generated on Thu Aug 11 2011 10:45:18 for Hardware Locality (hwloc) by  doxygen
+Generated on Thu Oct 20 2011 10:28:29 for Hardware Locality (hwloc) by  doxygen
 1.7.4

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/VERSION	2012-02-25 00:52:55 UTC (rev 9527)
@@ -6,8 +6,8 @@
 # <major>.<minor>.<release>.  If release is zero, then it is omitted.
 
 major=1
-minor=3
-release=0
+minor=4
+release=1
 
 # greek is used for alpha or beta release tags.  If it is non-empty,
 # it will be appended to the version number.  It does not have to be
@@ -16,7 +16,7 @@
 # requirement is that it must be entirely printable ASCII characters
 # and have no white space.
 
-greek=rc3
+greek=rc1
 
 # If want_repo_rev=1, then the SVN r number will be included in the overall
 # hwloc version number in some form.
@@ -58,4 +58,4 @@
 # 2. Version numbers are described in the Libtool current:revision:age
 # format.
 
-libhwloc_so_version=4:0:4
+libhwloc_so_version=5:1:0

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/autogen.sh	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,10 +1,2 @@
 :
-autoreconf ${autoreconf_args:-"-vif"}
-
-# fix depcomp to support pgcc correctly
-if grep "pgcc)" config/depcomp 2>&1 >/dev/null ; then :
-else
-    echo 'patching "config/depcomp" to support pgcc'
-    patch -f -p0 < config/depcomp_pgcc.patch
-fi
-
+autoreconf -ivf

Copied: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/decl.m4 (from rev 9526, mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/m4/decl.m4)
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/decl.m4	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/decl.m4	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,31 @@
+dnl -*- Autoconf -*-
+dnl Copyright © 2009 CNRS
+dnl Copyright © 2009 inria.  All rights reserved.
+dnl Copyright © 2009 Université Bordeaux 1
+dnl See COPYING in top-level directory.
+
+dnl HWLOC_CHECK_DECL
+dnl
+dnl Check declaration of given function by trying to call it with an insane
+dnl number of arguments (10). Success means the compiler couldn't really check.
+AC_DEFUN([HWLOC_CHECK_DECL], [
+  AC_MSG_CHECKING([whether function $1 is declared])
+  AC_REQUIRE([AC_PROG_CC])
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$4])],[$1(1,2,3,4,5,6,7,8,9,10);])],
+    ac_res=no
+    $3,
+    ac_res=yes
+    $2
+  )
+  AC_MSG_RESULT([$ac_res])
+])
+
+dnl HWLOC_CHECK_DECLS
+dnl
+dnl Same as HWLOCK_CHECK_DECL, but defines HAVE_DECL_foo to 1 or 0 depending on
+dnl the result.
+AC_DEFUN([HWLOC_CHECK_DECLS], [
+  HWLOC_CHECK_DECL([$1], [ac_have_decl=1], [ac_have_decl=0], [$4])
+  AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_DECL_$1]), [$ac_have_decl],
+    [Define to 1 if you have the declaration of `$1', and to 0 if you don't])
+])

Deleted: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/depcomp_pgcc.patch
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/depcomp_pgcc.patch	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/depcomp_pgcc.patch	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,91 +0,0 @@
---- confdb/depcomp.orig	2011-12-13 15:36:07.000000000 -0600
-+++ confdb/depcomp	2011-12-14 13:25:33.000000000 -0600
-@@ -302,6 +302,88 @@
-   rm -f "$tmpdepfile"
-   ;;
- 
-+## --------------------------------------------------------------------------
-+## begin ANL modification:
-+##
-+## PGCC support based on a code from Jeff Daily @ PNNL via the automake list:
-+##   https://lists.gnu.org/archive/html/automake/2011-06/msg00002.html
-+##
-+## Note that the order of this option in the case statement is important, since
-+## the shell code in configure will try each of these formats in the order
-+## listed in this file.  A plain `-MD' option would be understood by many
-+## compilers, so we must ensure this comes after the gcc and icc options.
-+pgcc)
-+  # Portland's C compiler understands `-MD'.
-+  # Will always output deps to `file.d' where file is the root name of the
-+  # source file under compilation, even if file resides in a subdirectory.
-+  # The object file name does not affect the name of the ".d" file.
-+  # pgcc 10.2 will output
-+  #    foo.o: sub/foo.c sub/foo.h
-+  # and will wrap long lines using \ :
-+  #    foo.o: sub/foo.c ... \
-+  #     sub/foo.h ... \
-+  #     ...
-+  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-+  test "x$dir" = "x$object" && dir=
-+  ##base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-+  # use the source, not the object to determine the base name, since that's
-+  # sadly what pgcc will do too
-+  base=`echo "$source" | sed -e 's|^.*/||' -e 's/\.[-_a-zA-Z0-9]*$//'`
-+  tmpdepfile="$base.d"
-+
-+  # For projects that build the same source file twice into different object
-+  # files, the pgcc approach of using the *source* file root name can cause
-+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
-+  # the same $tmpdepfile.
-+  lockdir="$base.d-lock"
-+  trap "echo '$0: caught signal, cleaning up...' ; rm -rf $lockdir" 1 2 13 15
-+  numtries=100
-+  i=$numtries
-+  while test $i -gt 0 ; do
-+    # mkdir is a portable test-and-set
-+    if mkdir $lockdir 2>/dev/null; then
-+      # this process acquired the lock
-+      "$@" -MD
-+      stat=$?
-+      # release the lock
-+      rm -rf $lockdir
-+      break
-+    else
-+      ## the lock is being held by a different process,
-+      ## wait until the winning process is done or we timeout
-+      while test -d $lockdir && test $i -gt 0 ; do
-+        sleep 1;
-+        i=`expr $i - 1`
-+      done
-+    fi
-+    i=`expr $i - 1`
-+  done
-+  trap - 1 2 13 15
-+  if test $i -le 0 ; then
-+    echo "$0 ERROR: failed to acquire lock after $numtries attempts, check lockdir '$lockdir'"
-+    exit 1;
-+  fi
-+
-+  if test $stat -eq 0; then :
-+  else
-+    rm -f "$tmpdepfile"
-+    exit $stat
-+  fi
-+  rm -f "$depfile"
-+  # Each line is of the form `foo.o: dependent.h',
-+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
-+  # Do two passes, one to just change these to
-+  # `$object: dependent.h' and one to simply `dependent.h:'.
-+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
-+  # Some versions of the HPUX 10.20 sed can't process this invocation
-+  # correctly.  Breaking it into two sed invocations is a workaround.
-+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
-+    sed -e 's/$/ :/' >> "$depfile"
-+  rm -f "$tmpdepfile"
-+  ;;
-+## end ANL modification
-+## --------------------------------------------------------------------------
-+
- hp2)
-   # The "hp" stanza above does not work with aCC (C++) and HP's ia64
-   # compilers, which have integrated preprocessors.  The correct option

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/distscript.csh
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/distscript.csh	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/distscript.csh	2012-02-25 00:52:55 UTC (rev 9527)
@@ -10,7 +10,7 @@
 #                         University of Stuttgart.  All rights reserved.
 # Copyright (c) 2004-2005 The Regents of the University of California.
 #                         All rights reserved.
-# Copyright © 2010 INRIA.  All rights reserved.
+# Copyright © 2010 inria.  All rights reserved.
 # Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
 # $COPYRIGHT$
 # 

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc.m4	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,11 +1,11 @@
 dnl -*- Autoconf -*-
 dnl
-dnl Copyright (c) 2009-2010 INRIA.  All rights reserved.
-dnl Copyright (c) 2009-2011 Université Bordeaux 1
+dnl Copyright (c) 2009-2010 inria.  All rights reserved.
+dnl Copyright (c) 2009-2012 Université Bordeaux 1
 dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
 dnl                         University Research and Technology
 dnl                         Corporation.  All rights reserved.
-dnl Copyright (c) 2004-2005 The Regents of the University of California.
+dnl Copyright (c) 2004-2012 The Regents of the University of California.
 dnl                         All rights reserved.
 dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, 
 dnl                         University of Stuttgart.  All rights reserved.
@@ -21,7 +21,6 @@
 # 4. If non-empty, print the announcement banner
 #
 AC_DEFUN([HWLOC_SETUP_CORE],[
-    AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
     AC_REQUIRE([AC_CANONICAL_TARGET])
     AC_REQUIRE([AC_PROG_CC])
 
@@ -142,6 +141,7 @@
     fi
 
     # Enample system extensions for O_DIRECTORY, fdopen, fssl, etc.
+    AC_USE_SYSTEM_EXTENSIONS
     AH_VERBATIM([USE_HPUX_SYSTEM_EXTENSIONS],
 [/* Enable extensions on HP-UX. */
 #ifndef _HPUX_SOURCE
@@ -234,20 +234,28 @@
           4)
             AC_DEFINE(HWLOC_X86_32_ARCH, 1, [Define to 1 on x86_32])
             hwloc_x86_32=yes
+	    HWLOC_MS_LIB_ARCH=X86
             AC_MSG_RESULT([x86_32])
             ;;
           8)
             AC_DEFINE(HWLOC_X86_64_ARCH, 1, [Define to 1 on x86_64])
             hwloc_x86_64=yes
+	    HWLOC_MS_LIB_ARCH=X64
             AC_MSG_RESULT([x86_64])
             ;;
           *)
             AC_DEFINE(HWLOC_X86_64_ARCH, 1, [Define to 1 on x86_64])
             hwloc_x86_64=yes
+	    HWLOC_MS_LIB_ARCH=X64
             AC_MSG_RESULT([unknown -- assuming x86_64])
             ;;
         esac
+        ;;
+      *)
+        AC_MSG_RESULT([unknown])
+        ;;
     esac
+    AC_SUBST(HWLOC_MS_LIB_ARCH)
     
     AC_CHECK_SIZEOF([unsigned long])
     AC_DEFINE_UNQUOTED([HWLOC_SIZEOF_UNSIGNED_LONG], $ac_cv_sizeof_unsigned_long, [The size of `unsigned long', as computed by sizeof])
@@ -257,27 +265,54 @@
     #
     # Check for compiler attributes and visibility
     #
+    _HWLOC_C_COMPILER_VENDOR([hwloc_c_vendor])
     _HWLOC_CHECK_ATTRIBUTES
     _HWLOC_CHECK_VISIBILITY
     HWLOC_CFLAGS="$HWLOC_FLAGS $HWLOC_VISIBILITY_CFLAGS"
     AS_IF([test "$HWLOC_VISIBILITY_CFLAGS" != ""],
           [AC_MSG_WARN(["$HWLOC_VISIBILITY_CFLAGS" has been added to the hwloc CFLAGS])])
 
+    # Make sure the compiler returns an error code when function arg
+    # count is wrong, otherwise sched_setaffinity checks may fail.
+    HWLOC_STRICT_ARGS_CFLAGS=
+    hwloc_args_check=0
+    AC_MSG_CHECKING([whether the C compiler rejects function calls with too many arguments])
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+        extern int one_arg(int x);
+        int foo(void) { return one_arg(1, 2); }
+      ]])],
+      [AC_MSG_RESULT([no])],
+      [hwloc_args_check=1
+       AC_MSG_RESULT([yes])])
+    AC_MSG_CHECKING([whether the C compiler rejects function calls with too few arguments])
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+        extern int two_arg(int x, int y);
+        int foo(void) { return two_arg(3); }
+      ]])],
+      [AC_MSG_RESULT([no])],
+      [hwloc_args_check=`expr $hwloc_args_check + 1`
+       AC_MSG_RESULT([yes])])
+    AS_IF([test "$hwloc_args_check" != "2"],[
+         AC_MSG_WARN([Your C compiler does not consider incorrect argument counts to be a fatal error.])
+        case "$hwloc_c_vendor" in
+        ibm)
+            HWLOC_STRICT_ARGS_CFLAGS="-qhalt=e"
+            ;;
+        intel)
+            HWLOC_STRICT_ARGS_CFLAGS="-we140"
+            ;;
+        *)
+            HWLOC_STRICT_ARGS_CFLAGS=FAIL
+            AC_MSG_WARN([Please report this warning and configure using a different C compiler if possible.])
+            ;;
+        esac
+        AS_IF([test "$HWLOC_STRICT_ARGS_CFLAGS" != "FAIL"],[
+            AC_MSG_WARN([Configure will append '$HWLOC_STRICT_ARGS_CFLAGS' to the value of CFLAGS when needed.])
+             AC_MSG_WARN([Alternatively you may configure with a different compiler.])
+        ])
+    ])
+
     #
-    # Check for inline compatibility support
-    #
-    AC_MSG_CHECKING([for inline compatibility keyword])
-    AC_TRY_COMPILE([static void __inline__ f(void) { }], [],
-      [__hwloc_inline=__inline__],
-      [AC_TRY_COMPILE([static void __inline f(void) {}], [],
-        [__hwloc_inline=__inline],
-        [__hwloc_inline=]
-      )]
-    )
-    AC_MSG_RESULT([$__hwloc_inline])
-    AC_DEFINE_UNQUOTED(__hwloc_inline, $__hwloc_inline, [Define this to a keyword that can safely replace inline in installed headers])
-    
-    #
     # Now detect support
     #
     
@@ -297,6 +332,8 @@
     ])
     AC_CHECK_HEADERS([sys/mman.h])
     
+    old_CPPFLAGS="$CPPFLAGS"
+    CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0601"
     AC_CHECK_TYPES([KAFFINITY,
                     PROCESSOR_CACHE_TYPE,
                     CACHE_DESCRIPTOR,
@@ -313,6 +350,7 @@
 		    PSAPI_WORKING_SET_EX_BLOCK,
 		    PSAPI_WORKING_SET_EX_INFORMATION],
                     [],[],[[#include <windows.h>]])
+    CPPFLAGS="$old_CPPFLAGS"
     AC_CHECK_LIB([gdi32], [main],
                  [HWLOC_LIBS="-lgdi32 $HWLOC_LIBS"
                   AC_DEFINE([HAVE_LIBGDI32], 1, [Define to 1 if we have -lgdi32])])
@@ -331,7 +369,11 @@
                    [HWLOC_LIBS="-lkstat $HWLOC_LIBS"
                     AC_DEFINE([HAVE_LIBKSTAT], 1, [Define to 1 if we have -lkstat])])
     ])
-    
+    AC_CHECK_LIB([m], [fabsf],
+                 [HWLOC_LIBS="-lm $HWLOC_LIBS"])
+
+    AC_CHECK_HEADERS([picl.h])
+
     AC_CHECK_DECLS([_SC_NPROCESSORS_ONLN,
     		_SC_NPROCESSORS_CONF,
     		_SC_NPROC_ONLN,
@@ -375,16 +417,25 @@
     fi
     
     _HWLOC_CHECK_DECL([sched_setaffinity], [
+      AC_DEFINE([HWLOC_HAVE_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides a prototype of sched_setaffinity()])
+      AS_IF([test "$HWLOC_STRICT_ARGS_CFLAGS" = "FAIL"],[
+        AC_MSG_WARN([Support for sched_setaffinity() requires a C compiler which])
+        AC_MSG_WARN([considers incorrect argument counts to be a fatal error.])
+        AC_MSG_ERROR([Cannot continue.])
+      ])
       AC_MSG_CHECKING([for old prototype of sched_setaffinity])
+      hwloc_save_CFLAGS=$CFLAGS
+      CFLAGS="$CFLAGS $HWLOC_STRICT_ARGS_CFLAGS"
       AC_COMPILE_IFELSE([
-        AC_LANG_PROGRAM([[
-          #define _GNU_SOURCE
-          #include <sched.h>
-          static unsigned long mask;
-          ]], [[ sched_setaffinity(0, (void*) &mask); ]])],
-        [AC_DEFINE([HWLOC_HAVE_OLD_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides the old prototype of sched_setaffinity()])
-         AC_MSG_RESULT([yes])],
-        [AC_MSG_RESULT([no])])
+          AC_LANG_PROGRAM([[
+              #define _GNU_SOURCE
+              #include <sched.h>
+              static unsigned long mask;
+              ]], [[ sched_setaffinity(0, (void*) &mask); ]])],
+          [AC_DEFINE([HWLOC_HAVE_OLD_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides the old prototype (without length) of sched_setaffinity()])
+           AC_MSG_RESULT([yes])],
+          [AC_MSG_RESULT([no])])
+      CFLAGS=$hwloc_save_CFLAGS
     ], , [[
 #define _GNU_SOURCE
 #include <sched.h>
@@ -443,6 +494,19 @@
         AC_DEFINE([HWLOC_HAVE_DECL_FFS], [1], [Define to 1 if function `ffs' is declared by system headers])
       ])
       AC_DEFINE([HWLOC_HAVE_FFS], [1], [Define to 1 if you have the `ffs' function.])
+      if ( $CC --version | grep gccfss ) >/dev/null 2>&1 ; then
+        dnl May be broken due to
+        dnl    https://forums.oracle.com/forums/thread.jspa?threadID=1997328
+        dnl TODO: a more selective test, since bug may be version dependent.
+        dnl We can't use AC_TRY_LINK because the failure does not appear until
+        dnl run/load time and there is currently no precedent for AC_TRY_RUN
+        dnl use in hwloc.  --PHH
+	dnl For now, we're going with "all gccfss compilers are broken". 
+	dnl Better to be safe and correct; it's not like this is
+	dnl performance-critical code, after all.
+        AC_DEFINE([HWLOC_HAVE_BROKEN_FFS], [1], 
+                  [Define to 1 if your `ffs' function is known to be broken.])
+      fi
     ])
     AC_CHECK_FUNCS([ffsl], [
       _HWLOC_CHECK_DECL([ffsl],[
@@ -485,25 +549,6 @@
     AC_CHECK_HEADERS([sys/utsname.h])
     AC_CHECK_FUNCS([uname])
 
-    # set_mempolicy and mbind support   
-    AC_CHECK_HEADERS([numaif.h], [
-      AC_CHECK_LIB([numa], [set_mempolicy], [
-	enable_set_mempolicy=yes
-	AC_SUBST([HWLOC_LINUX_LIBNUMA_LIBS], ["-lnuma"])
-	AC_DEFINE([HWLOC_HAVE_SET_MEMPOLICY], [1], [Define to 1 if set_mempolicy is available.])
-      ])
-      AC_CHECK_LIB([numa], [mbind], [
-	enable_mbind=yes
-	AC_SUBST([HWLOC_LINUX_LIBNUMA_LIBS], ["-lnuma"])
-	AC_DEFINE([HWLOC_HAVE_MBIND], [1], [Define to 1 if mbind is available.])
-      ])
-      AC_CHECK_LIB([numa], [migrate_pages], [
-	enable_migrate_pages=yes
-	AC_SUBST([HWLOC_LINUX_LIBNUMA_LIBS], ["-lnuma"])
-	AC_DEFINE([HWLOC_HAVE_MIGRATE_PAGES], [1], [Define to 1 if migrate_pages is available.])
-      ])
-    ])
-
     AC_CHECK_HEADERS([pthread_np.h])
     AC_CHECK_DECLS([pthread_setaffinity_np],,[:],[[
       #include <pthread.h>
@@ -523,6 +568,41 @@
       AC_DEFINE([HWLOC_HAVE_PTHREAD_GETTHRDS_NP], 1, `Define to 1 if you have pthread_getthrds_np')
     )
 
+    # Linux libnuma support
+    hwloc_linux_libnuma_happy=no
+    if test "x$enable_libnuma" != "xno"; then
+        hwloc_linux_libnuma_happy=yes
+        AC_CHECK_HEADERS([numaif.h], [
+            AC_CHECK_LIB([numa], [numa_available], [HWLOC_LINUX_LIBNUMA_LIBS="-lnuma"], [hwloc_linux_libnuma_happy=no])
+        ], [hwloc_linux_libnuma_happy=no])
+    fi
+    AC_SUBST(HWLOC_LINUX_LIBNUMA_LIBS)
+    # If we asked for Linux libnuma support but couldn't deliver, fail
+    HWLOC_LIBS="$HWLOC_LIBS $HWLOC_LINUX_LIBNUMA_LIBS"
+    AS_IF([test "$enable_libnuma" = "yes" -a "$hwloc_linux_libnuma_happy" = "no"],
+          [AC_MSG_WARN([Specified --enable-libnuma switch, but could not])
+           AC_MSG_WARN([find appropriate support])
+           AC_MSG_ERROR([Cannot continue])])
+    if test "x$hwloc_linux_libnuma_happy" = "xyes"; then
+      tmp_save_LIBS="$LIBS"
+      LIBS="$LIBS $HWLOC_LINUX_LIBNUMA_LIBS"
+
+      AC_CHECK_LIB([numa], [set_mempolicy], [
+	enable_set_mempolicy=yes
+	AC_DEFINE([HWLOC_HAVE_SET_MEMPOLICY], [1], [Define to 1 if set_mempolicy is available.])
+      ])
+      AC_CHECK_LIB([numa], [mbind], [
+	enable_mbind=yes
+	AC_DEFINE([HWLOC_HAVE_MBIND], [1], [Define to 1 if mbind is available.])
+      ])
+      AC_CHECK_LIB([numa], [migrate_pages], [
+	enable_migrate_pages=yes
+	AC_DEFINE([HWLOC_HAVE_MIGRATE_PAGES], [1], [Define to 1 if migrate_pages is available.])
+      ])
+
+      LIBS="$tmp_save_LIBS"
+    fi
+
     # PCI support
     hwloc_pci_happy=no
     if test "x$enable_pci" != "xno"; then
@@ -567,13 +647,19 @@
         ])
     fi
     AC_SUBST(HWLOC_PCI_LIBS)
+    HWLOC_LIBS="$HWLOC_LIBS $HWLOC_PCI_LIBS"
     # If we asked for pci support but couldn't deliver, fail
     AS_IF([test "$enable_pci" = "yes" -a "$hwloc_pci_happy" = "no"],
           [AC_MSG_WARN([Specified --enable-pci switch, but could not])
            AC_MSG_WARN([find appropriate support])
            AC_MSG_ERROR([Cannot continue])])
     if test "x$hwloc_pci_happy" = "xyes"; then
+      tmp_save_CFLAGS="$CFLAGS"
+      CFLAGS="$CFLAGS $HWLOC_PCI_CFLAGS"
+      tmp_save_LIBS="$LIBS"
+      LIBS="$LIBS $HWLOC_PCI_LIBS"
       AC_CHECK_DECLS([PCI_LOOKUP_NO_NUMBERS],,[:],[[#include <pci/pci.h>]])
+      AC_CHECK_DECLS([PCI_LOOKUP_NO_NUMBERS],,[:],[[#include <pci/pci.h>]])
       AC_CHECK_LIB([pci], [pci_find_cap], [enable_pci_caps=yes], [enable_pci_caps=no], [$HWLOC_PCI_ADDITIONAL_LIBS])
       if test "x$enable_pci_caps" = "xyes"; then
         AC_DEFINE([HWLOC_HAVE_PCI_FIND_CAP], [1], [Define to 1 if `libpci' has the `pci_find_cap' function.])
@@ -600,6 +686,8 @@
       HWLOC_REQUIRES="libpci $HWLOC_REQUIRES"
       AC_DEFINE([HWLOC_HAVE_LIBPCI], [1], [Define to 1 if you have the `libpci' library.])
       AC_SUBST([HWLOC_HAVE_LIBPCI], [1])
+      CFLAGS="$tmp_save_CFLAGS"
+      LIBS="$tmp_save_LIBS"
     else
       AC_SUBST([HWLOC_HAVE_LIBPCI], [0])
     fi
@@ -623,11 +711,12 @@
                AC_MSG_ERROR([Cannot continue])])
     fi
     HWLOC_CFLAGS="$HWLOC_CFLAGS $HWLOC_LIBXML2_CFLAGS"    
+    HWLOC_LIBS="$HWLOC_LIBS $HWLOC_LIBXML2_LIBS"
 
     # Setup HWLOC's C, CPP, and LD flags, and LIBS
     AC_SUBST(HWLOC_REQUIRES)
     AC_SUBST(HWLOC_CFLAGS)
-    HWLOC_CPPFLAGS='-I$(HWLOC_top_srcdir)/include -I$(HWLOC_top_builddir)/include'
+    HWLOC_CPPFLAGS='-I$(HWLOC_top_builddir)/include -I$(HWLOC_top_srcdir)/include'
     AC_SUBST(HWLOC_CPPFLAGS)
     HWLOC_LDFLAGS='-L$(HWLOC_top_builddir)/src'
     AC_SUBST(HWLOC_LDFLAGS)
@@ -635,22 +724,30 @@
 
     # Set these values explicitly for embedded builds.  Exporting
     # these values through *_EMBEDDED_* values gives us the freedom to
-    # do something different someday if we ever need to.
-    HWLOC_EMBEDDED_CFLAGS=$HWLOC_CFLAGS
+    # do something different someday if we ever need to.  There's no
+    # need to fill these values in unless we're in embedded mode.
+    # Indeed, if we're building in embedded mode, we want HWLOC_LIBS
+    # to be empty so that nothing is linked into libhwloc_embedded.la
+    # itself -- only the upper-layer will link in anything required.
+
+    AS_IF([test "$hwloc_mode" = "embedded"],
+          [HWLOC_EMBEDDED_CFLAGS=$HWLOC_CFLAGS
+           HWLOC_EMBEDDED_CPPFLAGS=$HWLOC_CPPFLAGS
+           HWLOC_EMBEDDED_LDADD='$(HWLOC_top_builddir)/src/libhwloc_embedded.la'
+           HWLOC_EMBEDDED_LIBS=$HWLOC_LIBS
+           HWLOC_LIBS=])
     AC_SUBST(HWLOC_EMBEDDED_CFLAGS)
-    HWLOC_EMBEDDED_CPPFLAGS=$HWLOC_CPPFLAGS
     AC_SUBST(HWLOC_EMBEDDED_CPPFLAGS)
-    HWLOC_EMBEDDED_LDADD='$(HWLOC_top_builddir)/src/libhwloc_embedded.la'
     AC_SUBST(HWLOC_EMBEDDED_LDADD)
-    HWLOC_EMBEDDED_LIBS=$HWLOC_LIBS
     AC_SUBST(HWLOC_EMBEDDED_LIBS)
 
     # Try to compile the cpuid inlines
     AC_MSG_CHECKING([for cpuid])
     old_CPPFLAGS="$CPPFLAGS"
-    CFLAGS="$CFLAGS -I$HWLOC_top_srcdir/include"
+    CPPFLAGS="$CPPFLAGS -I$HWLOC_top_srcdir/include"
     AC_LINK_IFELSE([AC_LANG_PROGRAM([[
         #include <stdio.h>
+        #define __hwloc_inline
         #include <private/cpuid.h>
       ]], [[
         if (hwloc_have_cpuid()) {

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_attributes.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_attributes.m4	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_attributes.m4	2012-02-25 00:52:55 UTC (rev 9527)
@@ -10,7 +10,7 @@
 # Copyright (c) 2004-2005 The Regents of the University of California.
 #                         All rights reserved.
 # and renamed for hwloc:
-# Copyright (c) 2009 INRIA.  All rights reserved.
+# Copyright (c) 2009 inria.  All rights reserved.
 # Copyright (c) 2009 Université Bordeaux 1
 # Copyright (c) 2010 Cisco Systems, Inc.  All rights reserved.
 # See COPYING in top-level directory.

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_vendor.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_vendor.m4	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_vendor.m4	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,239 @@
+dnl -*- shell-script -*-
+dnl
+dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
+dnl                         University Research and Technology
+dnl                         Corporation.  All rights reserved.
+dnl Copyright (c) 2004-2005 The University of Tennessee and The University
+dnl                         of Tennessee Research Foundation.  All rights
+dnl                         reserved.
+dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, 
+dnl                         University of Stuttgart.  All rights reserved.
+dnl Copyright (c) 2004-2005 The Regents of the University of California.
+dnl                         All rights reserved.
+dnl Copyright (c) 2011      Cisco Systems, Inc.  All rights reserved.
+dnl $COPYRIGHT$
+dnl 
+dnl Additional copyrights may follow
+dnl 
+dnl $HEADER$
+dnl
+
+dnl ------------------------------------------------------------------
+dnl This m4 file originally copied from Open MPI
+dnl config/ompi_check_vendor.m4.
+dnl ------------------------------------------------------------------
+
+
+# HWLOC_C_COMPILER_VENDOR(VENDOR_VARIABLE)
+# ---------------------------------------
+# Set shell variable VENDOR_VARIABLE to the name of the compiler
+# vendor for the current C compiler.
+#
+# See comment for _HWLOC_CHECK_COMPILER_VENDOR for a complete
+# list of currently detected compilers.
+AC_DEFUN([_HWLOC_C_COMPILER_VENDOR], [
+    AC_REQUIRE([AC_PROG_CC])
+
+    AC_CACHE_CHECK([for the C compiler vendor],
+        [hwloc_cv_c_compiler_vendor],
+        [AC_LANG_PUSH(C)
+         _HWLOC_CHECK_COMPILER_VENDOR([hwloc_cv_c_compiler_vendor])
+         AC_LANG_POP(C)])
+
+    $1="$hwloc_cv_c_compiler_vendor"
+])
+
+
+# workaround to avoid syntax error with Autoconf < 2.68:
+m4_ifndef([AC_LANG_DEFINES_PROVIDED],
+	  [m4_define([AC_LANG_DEFINES_PROVIDED])])
+
+# HWLOC_IFDEF_IFELSE(symbol, [action-if-defined], 
+#                   [action-if-not-defined])
+# ----------------------------------------------
+# Run compiler to determine if preprocessor symbol "symbol" is
+# defined by the compiler.
+AC_DEFUN([HWLOC_IFDEF_IFELSE], [
+    AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED
+#ifndef $1
+#error "symbol $1 not defined"
+choke me
+#endif], [$2], [$3])])
+
+
+# HWLOC_IF_IFELSE(symbol, [action-if-defined], 
+#                [action-if-not-defined])
+# ----------------------------------------------
+# Run compiler to determine if preprocessor symbol "symbol" is
+# defined by the compiler.
+AC_DEFUN([HWLOC_IF_IFELSE], [
+    AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED
+#if !( $1 )
+#error "condition $1 not met"
+choke me
+#endif], [$2], [$3])])
+
+
+# _HWLOC_CHECK_COMPILER_VENDOR(VENDOR_VARIABLE)
+# --------------------------------------------
+# Set shell variable VENDOR_VARIABLE to the name of the compiler
+# vendor for the compiler for the current language.  Language must be
+# one of C, OBJC, or C++.
+#
+# thanks to http://predef.sourceforge.net/precomp.html for the list
+# of defines to check.
+AC_DEFUN([_HWLOC_CHECK_COMPILER_VENDOR], [
+    hwloc_check_compiler_vendor_result="unknown"
+
+    # GNU is probably the most common, so check that one as soon as
+    # possible.  Intel pretends to be GNU, so need to check Intel
+    # before checking for GNU.
+
+    # Intel
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IF_IFELSE([defined(__INTEL_COMPILER) || defined(__ICC)], 
+               [hwloc_check_compiler_vendor_result="intel"])])
+
+    # GNU
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__GNUC__], 
+               [hwloc_check_compiler_vendor_result="gnu"])])
+
+    # Borland Turbo C
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__TURBOC__], 
+               [hwloc_check_compiler_vendor_result="borland"])])
+
+    # Borland C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__BORLANDC__], 
+               [hwloc_check_compiler_vendor_result="borland"])])
+
+    # Comeau C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__COMO__], 
+               [hwloc_check_compiler_vendor_result="comeau"])])
+
+    # Compaq C/C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IF_IFELSE([defined(__DECC) || defined(VAXC) || defined(__VAXC)],
+               [hwloc_check_compiler_vendor_result="compaq"],
+               [HWLOC_IF_IFELSE([defined(__osf__) && defined(__LANGUAGE_C__)],
+                    [hwloc_check_compiler_vendor_result="compaq"],
+                    [HWLOC_IFDEF_IFELSE([__DECCXX],
+                         [hwloc_check_compiler_vendor_result="compaq"])])])])
+
+    # Cray C/C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([_CRAYC], 
+               [hwloc_check_compiler_vendor_result="cray"])])
+
+    # Diab C/C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__DCC__], 
+               [hwloc_check_compiler_vendor_result="diab"])])
+
+    # Digital Mars
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IF_IFELSE([defined(__DMC__) || defined(__SC__) || defined(__ZTC__)],
+               [hwloc_check_compiler_vendor_result="digital mars"])])
+
+    # HP ANSI C / aC++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IF_IFELSE([defined(__HP_cc) || defined(__HP_aCC)],
+               [hwloc_check_compiler_vendor_result="hp"])])
+
+    # IBM XL C/C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IF_IFELSE([defined(__xlC__) || defined(__IBMC__) || defined(__IBMCPP__)],
+               [hwloc_check_compiler_vendor_result="ibm"],
+               [HWLOC_IF_IFELSE([defined(_AIX) && !defined(__GNUC__)],
+                    [hwloc_check_compiler_vendor_result="ibm"])])])
+
+    # KAI C++ (rest in peace)
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__KCC],
+               [hwloc_check_compiler_vendor_result="kai"])])
+
+    # LCC
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__LCC__],
+               [hwloc_check_compiler_vendor_result="lcc"])])
+
+    # MetaWare High C/C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__HIGHC__],
+               [hwloc_check_compiler_vendor_result="metaware high"])])
+
+    # Metrowerks Codewarrior
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__MWERKS__],
+               [hwloc_check_compiler_vendor_result="metrowerks"])])
+
+    # MIPSpro (SGI)
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IF_IFELSE([defined(sgi) || defined(__sgi)], 
+               [hwloc_check_compiler_vendor_result="sgi"])])
+
+    # MPW C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IF_IFELSE([defined(__MRC__) || defined(MPW_C) || defined(MPW_CPLUS)], 
+               [hwloc_check_compiler_vendor_result="mpw"])])
+
+    # Microsoft
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [# Always use C compiler when checking for Microsoft, as 
+           # Visual C++ doesn't recognize .cc as a C++ file.
+           AC_LANG_PUSH(C)
+           HWLOC_IF_IFELSE([defined(_MSC_VER) || defined(__MSC_VER)], 
+               [hwloc_check_compiler_vendor_result="microsoft"])
+           AC_LANG_POP(C)])
+
+    # Norcroft C
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__CC_NORCROFT],
+               [hwloc_check_compiler_vendor_result="norcroft"])])
+
+    # Pelles C
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__POCC__],
+               [hwloc_check_compiler_vendor_result="pelles"])])
+
+    # Portland Group
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__PGI], 
+               [hwloc_check_compiler_vendor_result="portland group"])])
+
+    # SAS/C
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IF_IFELSE([defined(SASC) || defined(__SASC) || defined(__SASC__)],
+               [hwloc_check_compiler_vendor_result="sas"])])
+
+    # Sun Workshop C/C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IF_IFELSE([defined(__SUNPRO_C) || defined(__SUNPRO_CC)],
+               [hwloc_check_compiler_vendor_result="sun"])])
+
+    # TenDRA C/C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__TenDRA__],
+               [hwloc_check_compiler_vendor_result="tendra"])])
+
+    # Tiny C
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__TINYC__],
+               [hwloc_check_compiler_vendor_result="tiny"])])
+
+    # USL C
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__USLC__],
+               [hwloc_check_compiler_vendor_result="usl"])])
+
+    # Watcom C++
+    AS_IF([test "$hwloc_check_compiler_vendor_result" = "unknown"],
+          [HWLOC_IFDEF_IFELSE([__WATCOMC__],
+               [hwloc_check_compiler_vendor_result="watcom"])])
+
+    $1="$hwloc_check_compiler_vendor_result"
+    unset hwloc_check_compiler_vendor_result
+])

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_visibility.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_visibility.m4	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_check_visibility.m4	2012-02-25 00:52:55 UTC (rev 9527)
@@ -10,10 +10,10 @@
 # Copyright (c) 2004-2005 The Regents of the University of California.
 #                         All rights reserved.
 # Copyright (c) 2006-2007 Cisco Systems, Inc.  All rights reserved.
-# and renamed for hwloc:
-# Copyright (c) 2009 INRIA.  All rights reserved.
+# and renamed/modified for hwloc:
+# Copyright (c) 2009 inria.  All rights reserved.
 # Copyright (c) 2009-2010 Université Bordeaux 1
-# Copyright (c) 2010 Cisco Systems, Inc.  All rights reserved.
+# Copyright © 2010-2012 Cisco Systems, Inc.  All rights reserved.
 # See COPYING in top-level directory.
 # 
 # Redistribution and use in source and binary forms, with or without
@@ -60,63 +60,72 @@
              [AC_REQUIRE([AC_PROG_GREP])],
              [GREP=grep])
 
-    msg="whether to enable visibility"
     # Check if the compiler has support for visibility, like some
-    # versions of gcc, icc.
+    # versions of gcc, icc, Sun Studio cc.
     AC_ARG_ENABLE(visibility, 
         AC_HELP_STRING([--enable-visibility],
-            [enable visibility feature of certain compilers/linkers (default: enabled)]))
+            [enable visibility feature of certain compilers/linkers (default: enabled on platforms that support it)]))
 
     case ${target} in
-      *-*-aix*|*-*-mingw*|*-*-cygwin*|*-*-hpux*)
-        enable_visibility=no
-        ;;
+        *-*-aix*|*-*-mingw*|*-*-cygwin*|*-*-hpux*)
+            enable_visibility=no
+            ;;
     esac
 
+    hwloc_visibility_define=0
+    hwloc_msg="whether to enable symbol visibility"
     if test "$enable_visibility" = "no"; then
-        AC_MSG_CHECKING([$msg])
+        AC_MSG_CHECKING([$hwloc_msg])
         AC_MSG_RESULT([no (disabled)]) 
-        have_visibility=0
     else
-        CFLAGS_orig="$CFLAGS"
-        CFLAGS="$CFLAGS_orig -fvisibility=hidden"
+        CFLAGS_orig=$CFLAGS
+
         hwloc_add=
-        AC_CACHE_CHECK([if $CC supports -fvisibility],
-            [hwloc_cv_cc_fvisibility],
-            [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
-                    __attribute__((visibility("default"))) int foo;
-                    ]],[[int i;]])],
-                    [hwloc_cv_cc_fvisibility=yes],
-                    [if test -s conftest.err ; then
-                        $GREP -iq "visibility" conftest.err
-                        if test "$?" = "0" ; then
-                            hwloc_cv_cc_fvisibility=no
-                        else
-                            hwloc_cv_cc_fvisibility=yes
-                        fi
-                     else
-                        hwloc_cv_cc_fvisibility=yes
-                     fi],
-                    [hwloc_cv_cc_fvisibility=no])
-                ])
+        case "$hwloc_c_vendor" in
+        sun)
+            # Check using Sun Studio -xldscope=hidden flag
+            hwloc_add=-xldscope=hidden
+            CFLAGS="$CFLAGS_orig $hwloc_add -errwarn=%all"
+            ;;
 
-        if test "$hwloc_cv_cc_fvisibility" = "yes" ; then
-            hwloc_add=" -fvisibility=hidden"
-            have_visibility=1
-            AC_MSG_CHECKING([$msg])
-            AC_MSG_RESULT([yes (via$hwloc_add)]) 
+        *)
+            # Check using -fvisibility=hidden
+            hwloc_add=-fvisibility=hidden
+            CFLAGS="$CFLAGS_orig $hwloc_add -Werror"
+            ;;
+        esac
+
+        AC_MSG_CHECKING([if $CC supports $hwloc_add])
+        AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+            #include <stdio.h>
+            __attribute__((visibility("default"))) int foo;
+            ]],[[fprintf(stderr, "Hello, world\n");]])],
+            [AS_IF([test -s conftest.err],
+                   [$GREP -iq visibility conftest.err
+                    # If we find "visibility" in the stderr, then
+                    # assume it doesn't work
+                    AS_IF([test "$?" = "0"], [hwloc_add=])])
+            ], [hwloc_add=])
+        AS_IF([test "$hwloc_add" = ""],
+              [AC_MSG_RESULT([no])],
+              [AC_MSG_RESULT([yes])])
+
+        CFLAGS=$CFLAGS_orig
+        HWLOC_VISIBILITY_CFLAGS=$hwloc_add
+
+        if test "$hwloc_add" != "" ; then
+            hwloc_visibility_define=1
+            AC_MSG_CHECKING([$hwloc_msg])
+            AC_MSG_RESULT([yes (via $hwloc_add)]) 
         elif test "$enable_visibility" = "yes"; then
             AC_MSG_ERROR([Symbol visibility support requested but compiler does not seem to support it.  Aborting])
         else 
-            AC_MSG_CHECKING([$msg])
+            AC_MSG_CHECKING([$hwloc_msg])
             AC_MSG_RESULT([no (unsupported)]) 
-            have_visibility=0
         fi
-        CFLAGS=$CFLAGS_orig
-        HWLOC_VISIBILITY_CFLAGS=$hwloc_add
         unset hwloc_add 
     fi
 
-    AC_DEFINE_UNQUOTED([HWLOC_C_HAVE_VISIBILITY], [$have_visibility],
-            [Whether C compiler supports -fvisibility])
+    AC_DEFINE_UNQUOTED([HWLOC_C_HAVE_VISIBILITY], [$hwloc_visibility_define],
+            [Whether C compiler supports symbol visibility or not])
 ])

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_internal.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_internal.m4	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_internal.m4	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 dnl -*- Autoconf -*-
 dnl
-dnl Copyright (c) 2009 INRIA.  All rights reserved.
+dnl Copyright (c) 2009 inria.  All rights reserved.
 dnl Copyright (c) 2009, 2011 Université Bordeaux 1
 dnl Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
 dnl                         University Research and Technology
@@ -9,7 +9,7 @@
 dnl                         All rights reserved.
 dnl Copyright (c) 2004-2008 High Performance Computing Center Stuttgart, 
 dnl                         University of Stuttgart.  All rights reserved.
-dnl Copyright ©  2010 INRIA.  All rights reserved.
+dnl Copyright ©  2010 inria.  All rights reserved.
 dnl Copyright © 2006-2011 Cisco Systems, Inc.  All rights reserved.
 dnl
 dnl See COPYING in top-level directory.
@@ -65,6 +65,11 @@
                   AS_HELP_STRING([--disable-pci],
                                  [Disable the PCI device discovery using libpci]))
 
+    # Linux libnuma
+    AC_ARG_ENABLE([libnuma],
+                  AS_HELP_STRING([--disable-libnuma],
+                                 [Disable the Linux libnuma]))
+
 ])dnl
 
 #-----------------------------------------------------------------------
@@ -167,7 +172,7 @@
     # specifically disabled by the user.
     AC_MSG_CHECKING([whether to enable "picky" compiler mode])
     hwloc_want_picky=0
-    AS_IF([test "$GCC" = "yes"],
+    AS_IF([test "$hwloc_c_vendor" = "gnu"],
           [AS_IF([test -d "$srcdir/.svn" -o -d "$srcdir/.hg" -o -d "$srcdir/.git"],
                  [hwloc_want_picky=1])])
     if test "$enable_picky" = "yes"; then
@@ -383,14 +388,19 @@
         hwloc_config_prefix[tests/linux/gather/Makefile]
         hwloc_config_prefix[tests/xml/Makefile]
         hwloc_config_prefix[tests/ports/Makefile]
+        hwloc_config_prefix[tests/rename/Makefile]
         hwloc_config_prefix[tests/linux/hwloc-gather-topology]
         hwloc_config_prefix[tests/linux/gather/test-gather-topology.sh]
         hwloc_config_prefix[tests/linux/test-topology.sh]
         hwloc_config_prefix[tests/xml/test-topology.sh]
+        hwloc_config_prefix[utils/hwloc-assembler-remote]
+        hwloc_config_prefix[utils/test-hwloc-assembler.sh]
         hwloc_config_prefix[utils/test-hwloc-calc.sh]
-        hwloc_config_prefix[utils/test-hwloc-distrib.sh])
+        hwloc_config_prefix[utils/test-hwloc-distances.sh]
+        hwloc_config_prefix[utils/test-hwloc-distrib.sh]
+        hwloc_config_prefix[utils/test-hwloc-ls.sh])
 
-    AC_CONFIG_COMMANDS([chmoding-scripts], [chmod +x ]hwloc_config_prefix[tests/linux/test-topology.sh ]hwloc_config_prefix[tests/xml/test-topology.sh ]hwloc_config_prefix[tests/linux/hwloc-gather-topology ]hwloc_config_prefix[tests/linux/gather/test-gather-topology.sh ]hwloc_config_prefix[utils/test-hwloc-calc.sh ]hwloc_config_prefix[utils/test-hwloc-distrib.sh])
+    AC_CONFIG_COMMANDS([chmoding-scripts], [chmod +x ]hwloc_config_prefix[tests/linux/test-topology.sh ]hwloc_config_prefix[tests/xml/test-topology.sh ]hwloc_config_prefix[tests/linux/hwloc-gather-topology ]hwloc_config_prefix[tests/linux/gather/test-gather-topology.sh ]hwloc_config_prefix[utils/hwloc-assembler-remote ]hwloc_config_prefix[utils/test-hwloc-assembler.sh ]hwloc_config_prefix[utils/test-hwloc-calc.sh ]hwloc_config_prefix[utils/test-hwloc-distances.sh ]hwloc_config_prefix[utils/test-hwloc-distrib.sh ]hwloc_config_prefix[utils/test-hwloc-ls.sh])
 
     # These links are only needed in standalone mode.  It would
     # be nice to m4 foreach this somehow, but whenever I tried
@@ -403,6 +413,7 @@
 	hwloc_config_prefix[tests/ports/traversal.c]:hwloc_config_prefix[src/traversal.c]
 	hwloc_config_prefix[tests/ports/topology-synthetic.c]:hwloc_config_prefix[src/topology-synthetic.c]
 	hwloc_config_prefix[tests/ports/topology-solaris.c]:hwloc_config_prefix[src/topology-solaris.c]
+	hwloc_config_prefix[tests/ports/topology-solaris-chiptype.c]:hwloc_config_prefix[src/topology-solaris-chiptype.c]
 	hwloc_config_prefix[tests/ports/topology-aix.c]:hwloc_config_prefix[src/topology-aix.c]
 	hwloc_config_prefix[tests/ports/topology-osf.c]:hwloc_config_prefix[src/topology-osf.c]
 	hwloc_config_prefix[tests/ports/topology-windows.c]:hwloc_config_prefix[src/topology-windows.c]

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_pkg.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_pkg.m4	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/config/hwloc_pkg.m4	2012-02-25 00:52:55 UTC (rev 9527)
@@ -31,21 +31,30 @@
 
 # HWLOC_PKG_PROG_PKG_CONFIG([MIN-VERSION])
 # ----------------------------------
+# hwloc note: Per https://svn.open-mpi.org/trac/hwloc/ticket/55, keep
+# the environment variable $PKG_CONFIG (vs. renaming it
+# $HWLOC_PKG_CONFIG).  Short explanation: $PKG_CONFIG is a well-known
+# environment variable that can be set by users to override what these
+# .m4 macros do.  There's no reason we should have a different env
+# variable name (e.g., $HWLOC_PKG_CONFIG).  So leave it named
+# $PKG_CONFIG both here in this specific macro, and all the other
+# macros that use it.
 AC_DEFUN([HWLOC_PKG_PROG_PKG_CONFIG],
 [m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^HWLOC_PKG_CONFIG(_PATH)?$])
-AC_ARG_VAR([HWLOC_PKG_CONFIG], [path to pkg-config utility])dnl
-if test "x$ac_cv_env_HWLOC_PKG_CONFIG_set" != "xset"; then
-	AC_PATH_TOOL([HWLOC_PKG_CONFIG], [pkg-config])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
 fi
-if test -n "$HWLOC_PKG_CONFIG"; then
+if test -n "$PKG_CONFIG"; then
 	HWLOC_pkg_min_version=m4_default([$1], [0.9.0])
 	AC_MSG_CHECKING([pkg-config is at least version $HWLOC_pkg_min_version])
-	if $HWLOC_PKG_CONFIG --atleast-pkgconfig-version $HWLOC_pkg_min_version; then
+	if $PKG_CONFIG --atleast-pkgconfig-version $HWLOC_pkg_min_version; then
 		AC_MSG_RESULT([yes])
 	else
 		AC_MSG_RESULT([no])
-		HWLOC_PKG_CONFIG=""
+		PKG_CONFIG=""
 	fi
 		
 fi[]dnl
@@ -63,8 +72,8 @@
 # --------------------------------------------------------------
 AC_DEFUN([HWLOC_PKG_CHECK_EXISTS],
 [AC_REQUIRE([HWLOC_PKG_PROG_PKG_CONFIG])dnl
-if test -n "$HWLOC_PKG_CONFIG" && \
-    AC_RUN_LOG([$HWLOC_PKG_CONFIG --exists --silence-errors "$1"]); then
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --silence-errors "$1"]); then
     m4_ifval([$2], [$2], [:])
     m4_ifvaln([$3], [else
                      $3])dnl
@@ -74,12 +83,12 @@
 # _HWLOC_PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
 # ---------------------------------------------
 m4_define([_HWLOC_PKG_CONFIG],
-[if test -n "$HWLOC_PKG_CONFIG"; then
+[if test -n "$PKG_CONFIG"; then
     if test -n "$$1"; then
         HWLOC_pkg_cv_[]$1="$$1"
     else
         HWLOC_PKG_CHECK_EXISTS([$3],
-                         [HWLOC_pkg_cv_[]$1=`$HWLOC_PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+                         [HWLOC_pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
 			 [HWLOC_pkg_failed=yes])
     fi
 else
@@ -91,7 +100,7 @@
 # -----------------------------
 AC_DEFUN([_HWLOC_PKG_SHORT_ERRORS_SUPPORTED],
 [AC_REQUIRE([HWLOC_PKG_PROG_PKG_CONFIG])
-if $HWLOC_PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
         HWLOC_pkg_short_errors_supported=yes
 else
         HWLOC_pkg_short_errors_supported=no
@@ -128,9 +137,9 @@
     if test $HWLOC_pkg_failed = yes; then
         _HWLOC_PKG_SHORT_ERRORS_SUPPORTED
         if test $HWLOC_pkg_short_errors_supported = yes; then
-            HWLOC_[]$1[]_PKG_ERRORS=`$HWLOC_PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2" 2>&1`
+            HWLOC_[]$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2" 2>&1`
         else 
-            HWLOC_[]$1[]_PKG_ERRORS=`$HWLOC_PKG_CONFIG --errors-to-stdout --print-errors "$2" 2>&1`
+            HWLOC_[]$1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2" 2>&1`
         fi
         # Put the nasty error message in config.log where it belongs
 	echo "$HWLOC_[]$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
@@ -138,9 +147,9 @@
 	ifelse([$5], , [AC_MSG_ERROR(dnl
 [Package requirements ($2) were not met:
 
-$HWLOCC_$1_PKG_ERRORS
+$HWLOC_$1_PKG_ERRORS
 
-Consider adjusting the HWLOC_PKG_CONFIG_PATH environment variable if you
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
 installed software in a non-standard prefix.
 
 _HWLOC_PKG_TEXT
@@ -150,7 +159,7 @@
     elif test $HWLOC_pkg_failed = untried; then
         ifelse([$5], , [AC_MSG_FAILURE(dnl
 [The pkg-config script could not be found or is too old.  Make sure it
-is in your PATH or set the HWLOC_PKG_CONFIG environment variable to the full
+is in your PATH or set the PKG_CONFIG environment variable to the full
 path to pkg-config.
 
 _HWLOC_PKG_TEXT

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/configure.ac
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/configure.ac	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/configure.ac	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,8 +1,8 @@
 # -*- shell-script -*-
 #
 # Copyright © 2009      CNRS
-# Copyright © 2009-2010 INRIA.  All rights reserved.
-# Copyright © 2009, 2011      Université Bordeaux 1
+# Copyright © 2009-2010 inria.  All rights reserved.
+# Copyright © 2009, 2011-2012      Université Bordeaux 1
 # Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
 #
 # See COPYING in top-level directory.
@@ -14,7 +14,7 @@
 
 AC_INIT([hwloc], 
         [m4_normalize(esyscmd([config/hwloc_get_version.sh VERSION --base]))],
-        [http://www.open-mpi.org/community/help/], [hwloc])
+        [http://www.open-mpi.org/projects/hwloc/], [hwloc])
 AC_PREREQ(2.63)
 AC_CONFIG_AUX_DIR(./config)
 # Note that this directory must *exactly* match what was specified via
@@ -85,7 +85,7 @@
 # Setup the header file
 AH_TOP([/* -*- c -*-
  *
- * Copyright © 2009 CNRS, INRIA., Université Bordeaux 1  All rights reserved.
+ * Copyright © 2009 CNRS, inria., Université Bordeaux 1  All rights reserved.
  * Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
  * $COPYRIGHT$
  * 
@@ -131,16 +131,11 @@
 # Setup the hwloc core
 HWLOC_SETUP_CORE([], [], [AC_MSG_ERROR([Cannot build hwloc core])], [1])
 
-dnl MPICH2 modification: don't expand these macros, even inside a shell-if,
-dnl because we have deleted the directories that these macros configure.
-dnl Therefore numerous ".in" files listed in AC_CONFIG_FILES are no longer
-dnl present and cause errors at automake time.
-dnl
-dnl # Setup hwloc's docs, utils, and tests
-dnl AS_IF([test "$hwloc_mode" = "standalone"],
-dnl       [HWLOC_SETUP_DOCS
-dnl        HWLOC_SETUP_UTILS
-dnl        HWLOC_SETUP_TESTS])
+# Setup hwloc's docs, utils, and tests
+AS_IF([test "$hwloc_mode" = "standalone"],
+      [HWLOC_SETUP_DOCS
+       HWLOC_SETUP_UTILS
+       HWLOC_SETUP_TESTS])
 
 # Run the AM_CONDITIONALs
 HWLOC_DO_AM_CONDITIONALS
@@ -159,3 +154,44 @@
 
 # Party on
 AC_OUTPUT
+
+# Create a comma-delimited list in an environment variable.
+# $1 = variable name
+# $2 = value to append
+append_env() {
+    # Tricky shell/m4 quoting here -- not for the meek.
+    var=[$]1
+    # Note: quotes *NOT* needed in this assignment
+    eval initial_value=\$$var
+
+    AS_IF([test "$initial_value" != ""], 
+          [new_value="$initial_value, [$]2"],
+          [new_value="[$]2]")
+    eval "[$]1=\"$new_value\""
+}
+
+# Show which optional support we'll be building
+hwloc_xml_status=basic
+AS_IF([test "$hwloc_libxml2_happy" = "yes"], [hwloc_xml_status=full])
+
+# Beginning of generic support
+cat <<EOF
+
+-----------------------------------------------------------------------------
+Hwloc optional build support status (more details can be found above):
+
+Probe / display PCI devices: $hwloc_pci_happy
+Graphical output (Cairo):    $hwloc_cairo_happy
+XML input / output:          $hwloc_xml_status
+EOF
+
+# Linux specific support
+AS_IF([test "$hwloc_linux" = "yes"], [cat <<EOF
+libnuma memory support:      $hwloc_linux_libnuma_happy
+EOF])
+
+# End of generic support
+cat <<EOF
+-----------------------------------------------------------------------------
+
+EOF

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/dist/make_dist_tarball
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/dist/make_dist_tarball	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/dist/make_dist_tarball	2012-02-25 00:52:55 UTC (rev 9527)
@@ -22,9 +22,9 @@
 # Version of auto tools that we want
 #
 
-AM_TARGET_VERSION=1.11.1
+AM_TARGET_VERSION=1.11.2
 AC_TARGET_VERSION=2.68
-LT_TARGET_VERSION=2.4
+LT_TARGET_VERSION=2.4.2
 
 #
 # First things first -- check that the auto versions that we have are

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/hg/build-hgignore.pl
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/hg/build-hgignore.pl	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/hg/build-hgignore.pl	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,6 @@
 #!/usr/bin/env perl
 #
-# Copyright (c) 2008 Cisco Systems, Inc.  All rights reserved.
-# See COPYING in top-level directory.
+# Copyright (c) 2008-2010 Cisco Systems, Inc.  All rights reserved.
 #
 # Dumb script to run through all the svn:ignore's in the tree and build
 # build a .hgignore file for Mercurial.  Do a few trivial things to
@@ -30,6 +29,8 @@
 *.dSYM
 *.S
 *.loT
+*.orig
+*.rej
 .git*
 .DS_Store
 stamp-h[1-9]
@@ -60,6 +61,17 @@
 # Start at the top level
 process(".");
 
+# See if there's an .hgignore_local file.  If so, add its contents to the end.
+if (-f ".hgignore_local") {
+    open(IN, ".hgignore_local") || die "Can't open .hgignore_local";
+    while (<IN>) {
+        chomp;
+        push(@globals, $_);
+    }
+
+    close(IN);
+}
+
 # If there's an old .hgignore, delete it
 unlink(".hgignore")
     if (-f ".hgignore");
@@ -78,10 +90,6 @@
 sub process {
     my $dir = shift;
 
-    # Ensure we're in a svn-controlled directory
-    return
-        if (! -d "$dir/.svn");
-
     # Look at the svn:ignore property for this directory
     my $svn_ignore = `svn pg svn:ignore $dir 2> /dev/null`;
     # If svn failed, bail on this directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/update-my-copyright.pl
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/update-my-copyright.pl	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/contrib/update-my-copyright.pl	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 #
 # Copyright (c) 2010-2011 Cisco Systems, Inc.  All rights reserved.
-# Copyright (c) 2011 INRIA.  All rights reserved.
+# Copyright (c) 2011 inria.  All rights reserved.
 # $COPYRIGHT$
 #
 

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/Makefile.am	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,792 @@
+# Copyright © 2009-2011 inria.  All rights reserved.
+# Copyright © 2009-2011 Université Bordeaux 1
+# Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+
+AM_CPPFLAGS = $(HWLOC_CPPFLAGS)
+
+DOCDIR = $(HWLOC_top_builddir)/doc
+DOX_CONFIG = $(HWLOC_top_srcdir)/doc/doxygen.cfg
+
+DOX_DIR = doxygen-doc
+DOX_HTML_DIR = $(DOX_DIR)/html
+DOX_MAN_DIR = $(DOX_DIR)/man
+DOX_LATEX_DIR = $(DOX_DIR)/latex
+DOX_A4PDF = doxygen-doc/$(PACKAGE)-a4.pdf
+DOX_LETTERPDF = doxygen-doc/$(PACKAGE)-letter.pdf
+DOX_TAG = $(DOX_DIR)/$(PACKAGE).tag
+
+#
+# The goal is that Doxygen output (i.e., the documentation) is
+# included in release tarballs; there is no need to build anything
+# from tarballs.  Developers will need to build the docs the first
+# time they build after a checkout (or if something in the docs
+# changes, etc.).
+#
+# Note that by listing directories in EXTRA_DIST, we pick up the whole
+# tree (e.g., everything in the man and latex directories).
+#
+
+# images already available in repository
+PREBUILT_IMAGES = images/dudley.png images/emmett.png images/hagrid.png
+# images built from repository before inclusion in make dist
+BUILT_IMAGES = images/diagram.png images/diagram.eps
+
+EXTRA_DIST = \
+        hwloc.doxy \
+        doxygen.css \
+        doxygen.cfg \
+        images/diagram.fig \
+        images/devel09-pci.png \
+        images/devel09-pci.pdf \
+        images/ppc64-with-smt.png \
+        images/ppc64-with-smt.pdf \
+        images/ppc64-without-smt.png \
+        images/ppc64-without-smt.pdf \
+        images/ppc64-full-with-smt.png \
+        images/ppc64-full-with-smt.pdf \
+        www.open-mpi.org.cfg \
+        www.open-mpi.org-css.inc \
+        www.open-mpi.org-footer.inc \
+        www.open-mpi.org-header.inc \
+        $(PREBUILT_IMAGES) \
+        $(BUILT_IMAGES)
+
+#
+# Files where the doxygen inputs live (i.e., dependencies).  Make the
+# generated tagfile depend on these files, which will force them to be
+# regenerated (i.e., re-run doxygen) whenever any of these files
+# change.
+#
+
+dox_inputs = $(DOX_CONFIG) \
+       $(srcdir)/hwloc.doxy \
+       $(HWLOC_top_srcdir)/include/hwloc.h \
+       $(HWLOC_top_srcdir)/include/hwloc/helper.h \
+       $(HWLOC_top_srcdir)/include/hwloc/bitmap.h \
+       $(HWLOC_top_srcdir)/include/hwloc/glibc-sched.h \
+       $(HWLOC_top_srcdir)/include/hwloc/linux.h \
+       $(HWLOC_top_srcdir)/include/hwloc/linux-libnuma.h \
+       $(HWLOC_top_srcdir)/include/hwloc/cuda.h \
+       $(HWLOC_top_srcdir)/include/hwloc/cudart.h \
+       $(HWLOC_top_srcdir)/include/hwloc/openfabrics-verbs.h \
+       $(HWLOC_top_srcdir)/include/hwloc/myriexpress.h
+
+#
+# Create the images that we need for the PDF output and the HTML
+# output.  There is not an easy way to check if the output of
+# AC_PATH_PROG found something in configure.ac (!), so we have to put
+# a run-time check here to see if fig2dev was found.  :-(
+#
+# Note that BUILD_DOXYGEN will automatically be false if we're not
+# building standalone.
+#
+
+if HWLOC_BUILD_DOXYGEN
+BUILT_SOURCES = $(BUILT_IMAGES)
+
+images/diagram.png: $(srcdir)/images/diagram.fig
+	$(MKDIR_P) images
+	@if test "x$(FIG2DEV)" = "x"; then \
+	    echo "ERROR: Cannot find the 'fig2dev' executable -- cannot make $@"; \
+	    exit 1; \
+	fi
+	$(FIG2DEV) -L png $< $@
+
+images/diagram.eps: $(srcdir)/images/diagram.fig
+	$(MKDIR_P) images
+	@if test "x$(FIG2DEV)" = "x"; then \
+	    echo "ERROR: Cannot find the 'fig2dev' executable -- cannot make $@"; \
+	    exit 1; \
+	fi
+	$(FIG2DEV) -L eps $< $@
+endif
+
+#
+# Rules for running doxygen.  It depends on the built images and the
+# dox_inputs.
+# Remove useless manpages, they have too long filenames anyway because
+# of nested structurre/union declarations.
+#
+
+if HWLOC_BUILD_DOXYGEN
+$(DOX_TAG): $(BUILT_SOURCES) $(dox_inputs) $(PREBUILT_IMAGES)
+	rm -fr $(DOX_DIR)
+	$(DOXYGEN) $(DOX_CONFIG)
+	-$(SED_I) -e 's/__hwloc_restrict/restrict/g' \
+	          -e 's/\\_\\-\\_\\-hwloc\\_\\-restrict/restrict/g' \
+	          -e 's/__hwloc_attribute_unused//g' \
+	          -e 's/\\_\\-\\_\\-hwloc\\_\\-attribute\\_\\-unused//g' \
+	          -e 's/__hwloc_attribute_malloc//g' \
+	          -e 's/\\_\\-\\_\\-hwloc\\_\\-attribute\\_\\-malloc//g' \
+	          -e 's/__hwloc_attribute_const//g' \
+	          -e 's/\\_\\-\\_\\-hwloc\\_\\-attribute\\_\\-const//g' \
+	          -e 's/__hwloc_attribute_pure//g' \
+	          -e 's/\\_\\-\\_\\-hwloc\\_\\-attribute\\_\\-pure//g' \
+	          -e 's/__hwloc_attribute_deprecated//g' \
+	          -e 's/\\_\\-\\_\\-hwloc\\_\\-attribute\\_\\-deprecated//g' \
+	          -e 's/HWLOC_DECLSPEC//g' \
+	          -e 's/HWLOC\\_\\-DECLSPEC//g' \
+	          -e 's/__hwloc_inline/inline/g' \
+	          -e 's/\\_\\-\\_\\-hwloc\\_\\-inline/inline/g' \
+		$(DOX_DIR)/html/*.html $(DOX_DIR)/latex/*.tex $(DOX_DIR)/man/man3/*.3
+	@echo "Work-around spurious leading _ in doxygen filenames..."
+	-(cd $(DOX_DIR)/man/man3 ; \
+	for i in _hwloc* ; do \
+		[ ! -f $$i ] || mv $$i $${i#_} ; \
+	done)
+	@echo "Removing useless manpages..."
+	@mkdir $(DOX_DIR)/man.tmp
+	@mv $(DOX_MAN_DIR)/man3/hwloc* $(DOX_MAN_DIR)/man3/HWLOC* $(DOX_DIR)/man.tmp/
+	@rm -rf $(DOX_MAN_DIR)/man3
+	@mv $(DOX_DIR)/man.tmp $(DOX_MAN_DIR)/man3
+if HWLOC_DOXYGEN_BROKEN_SHORT_NAMES
+	@echo "Work-around buggy doxygen filenames..."
+	- at mv -f $(DOX_DIR)/html/termsanddefs.html $(DOX_DIR)/html/a00001.html
+	- at mv -f $(DOX_DIR)/latex/termsanddefs.tex $(DOX_DIR)/latex/a00001.tex
+	- at mv -f $(DOX_DIR)/html/tools.html $(DOX_DIR)/html/a00002.html
+	- at mv -f $(DOX_DIR)/latex/tools.tex $(DOX_DIR)/latex/a00002.tex
+	- at mv -f $(DOX_DIR)/html/envvar.html $(DOX_DIR)/html/a00003.html
+	- at mv -f $(DOX_DIR)/latex/envvar.tex $(DOX_DIR)/latex/a00003.tex
+	- at mv -f $(DOX_DIR)/html/cpu_mem_bind.html $(DOX_DIR)/html/a00004.html
+	- at mv -f $(DOX_DIR)/latex/cpu_mem_bind.tex $(DOX_DIR)/latex/a00004.tex
+	- at mv -f $(DOX_DIR)/html/iodevices.html $(DOX_DIR)/html/a00005.html
+	- at mv -f $(DOX_DIR)/latex/iodevices.tex $(DOX_DIR)/latex/a00005.tex
+	- at mv -f $(DOX_DIR)/html/multinode.html $(DOX_DIR)/html/a00006.html
+	- at mv -f $(DOX_DIR)/latex/multinode.tex $(DOX_DIR)/latex/a00006.tex
+	- at mv -f $(DOX_DIR)/html/xml.html $(DOX_DIR)/html/a00007.html
+	- at mv -f $(DOX_DIR)/latex/xml.tex $(DOX_DIR)/latex/a00007.tex
+	- at mv -f $(DOX_DIR)/html/interoperability.html $(DOX_DIR)/html/a00008.html
+	- at mv -f $(DOX_DIR)/latex/interoperability.tex $(DOX_DIR)/latex/a00008.tex
+	- at mv -f $(DOX_DIR)/html/threadsafety.html $(DOX_DIR)/html/a00009.html
+	- at mv -f $(DOX_DIR)/latex/threadsafety.tex $(DOX_DIR)/latex/a00009.tex
+	- at mv -f $(DOX_DIR)/html/embed.html $(DOX_DIR)/html/a00010.html
+	- at mv -f $(DOX_DIR)/latex/embed.tex $(DOX_DIR)/latex/a00010.tex
+	- at mv -f $(DOX_DIR)/html/faq.html $(DOX_DIR)/html/a00011.html
+	- at mv -f $(DOX_DIR)/latex/faq.tex $(DOX_DIR)/latex/a00011.tex
+endif
+endif
+
+#
+# Rules for building the PDF
+#
+
+if HWLOC_BUILD_DOXYGEN
+
+# The Doxygen config is set to generate a4 latex -- no transformation
+# is necessary.
+$(DOX_A4PDF): $(DOX_TAG)
+	cd $(DOX_LATEX_DIR); \
+	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+	cp refman.tex a4-refman.tex; \
+	$(PDFLATEX) a4-refman.tex; \
+	$(MAKEINDEX) a4-refman.idx; \
+	$(PDFLATEX) a4-refman.tex; \
+	done=0; repeat=5; \
+	while test $$done = 0 -a $$repeat -gt 0; do \
+           if $(EGREP) 'Rerun (LaTeX|to get cross-references right)' a4-refman.log > /dev/null 2>&1; then \
+	       $(PDFLATEX) a4-refman.tex; \
+	       repeat=`expr $$repeat - 1`; \
+	   else \
+	       done=1; \
+	   fi; \
+	done; \
+	mv a4-refman.pdf $(DOCDIR)/$(DOX_A4PDF)
+
+# The Doxygen config is set to generate a4 latex -- slightly transform
+# to make suitable for US letter.
+$(DOX_LETTERPDF): $(DOX_TAG)
+	cd $(DOX_LATEX_DIR); \
+	rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \
+	$(SED) -e 's/a4paper/letterpaper/g' -e 's/\\usepackage{a4wide}//' refman.tex > letter-refman.tex; \
+	$(PDFLATEX) letter-refman.tex; \
+	$(MAKEINDEX) letter-refman.idx; \
+	$(PDFLATEX) letter-refman.tex; \
+	done=0; repeat=5; \
+	while test $$done = 0 -a $$repeat -gt 0; do \
+           if $(EGREP) 'Rerun (LaTeX|to get cross-references right)' letter-refman.log > /dev/null 2>&1; then \
+	       $(PDFLATEX) letter-refman.tex; \
+	       repeat=`expr $$repeat - 1`; \
+	   else \
+	       done=1; \
+	   fi; \
+	done; \
+	mv letter-refman.pdf $(DOCDIR)/$(DOX_LETTERPDF)
+endif
+
+#
+# Note that we want to use our own doxygen.css file; not the one that
+# doxygen installs in the HTML directory.  So manually copy it over.
+# Be a little clever: only copy the doxygen.css file over if it exists
+# in DOX_HTML_DIR (which is in the build tree).  If the html tree
+# doesn't exist in the build tree, then we're using an html tree in
+# the source tree, and we don't need to copy over the doxygen.css
+# because we didn't build the html tree (e.g., the html tree came
+# pre-bundled in a tarball).
+#
+
+if HWLOC_BUILD_DOXYGEN
+all-local: $(DOX_TAG)
+	if test -d $(DOX_HTML_DIR) -a -f $(DOX_HTML_DIR)/doxygen.css; then \
+	    cp -f $(srcdir)/doxygen.css $(DOX_HTML_DIR); \
+	fi
+endif
+
+#
+# Un/install the generated PDF and man pages (just like BUILD_DOXYGEN,
+# INSTALL_DOXYGEN will automatically be false if we're not building in
+# standalone mode).
+#
+
+if HWLOC_INSTALL_DOXYGEN
+dist_pdf_DATA = $(DOX_A4PDF) $(DOX_LETTERPDF)
+endif
+
+#
+# Install the HWLOC_* and hwloc_* man pages.  It would be great to
+# figure out how to not have to list every installable man page here
+# in the Makefile.am...  :-(
+#
+
+if HWLOC_INSTALL_DOXYGEN
+
+# We have so many man pages that if we put them all in man3_MANS, we
+# exceed the maximum command line length on some systems (during "make
+# install").  :-( So we have to split them up so that the total
+# command line length will be shorter.  It seemed logical to split
+# them by small-ish groups.  Put at least one group in man3_MANS so
+# that the proper $mandir/man/man3 is created, and then put the rest
+# in _DATA suffix names, because AM won't allow us to do things like
+# man3_extra_MANS = ...group...
+
+man3_MANS = \
+        $(DOX_MAN_DIR)/man3/hwlocality_api_version.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_API_VERSION.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_api_version.3
+
+man3_topologydir = $(man3dir)
+man3_topology_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_topology.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_t.3
+
+man3_setsdir = $(man3dir)
+man3_sets_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_sets.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_t.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_const_bitmap_t.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_t.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_const_cpuset_t.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_nodeset_t.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_const_nodeset_t.3
+
+man3_typesdir = $(man3dir)
+man3_types_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_types.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_BRIDGE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_CACHE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_CORE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_GROUP.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_MACHINE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_MISC.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_NODE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OS_DEVICE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_PU.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_PCI_DEVICE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_SOCKET.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_SYSTEM.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_TYPE_MAX.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_type_t.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_BRIDGE_HOST.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_BRIDGE_PCI.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_bridge_type_e.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_bridge_type_t.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_BLOCK.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_DMA.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_GPU.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_NETWORK.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_OBJ_OSDEV_OPENFABRICS.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_osdev_type_e.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_osdev_type_t.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_compare_types.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_compare_types_e.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TYPE_UNORDERED.3
+
+man3_objectsdir = $(man3dir)
+man3_objects_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_objects.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_t.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_memory_s.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_memory_s_hwloc_obj_memory_page_type_s.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_bridge_attr_s.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_cache_attr_s.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_group_attr_s.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_osdev_attr_s.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_attr_u_hwloc_pcidev_attr_s.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_distances_s.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_info_s.3
+
+man3_creationdir = $(man3dir)
+man3_creation_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_creation.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_init.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_load.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_destroy.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_check.3
+
+man3_configurationdir = $(man3dir)
+man3_configuration_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_configuration.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_ignore_type.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_ignore_type_keep_structure.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_ignore_all_keep_structure.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_IO_BRIDGES.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_IO_DEVICES.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_WHOLE_IO.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_flags_e.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_set_flags.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_set_pid.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_set_fsroot.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_set_synthetic.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_set_xml.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_set_xmlbuffer.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_set_custom.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_set_distance_matrix.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_discovery_support.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_cpubind_support.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_membind_support.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_support.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_get_support.3
+
+man3_tinkerdir = $(man3dir)
+man3_tinker_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_tinker.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_export_xml.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_export_xmlbuffer.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_free_xmlbuffer.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_insert_misc_object_by_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_insert_misc_object_by_parent.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_RESTRICT_FLAG_ADAPT_IO.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_RESTRICT_FLAG_ADAPT_MISC.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_restrict_flags_e.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_restrict.3
+
+man3_informationdir = $(man3dir)
+man3_information_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_information.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_get_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_type_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_type_depth_e.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_MULTIPLE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_UNKNOWN.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_BRIDGE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_PCI_DEVICE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_TYPE_DEPTH_OS_DEVICE.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_depth_type.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_nbobjs_by_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_nbobjs_by_type.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_is_thissystem.3
+
+man3_traversaldir = $(man3dir)
+man3_traversal_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_traversal.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_obj_by_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_obj_by_type.3
+
+man3_conversiondir = $(man3dir)
+man3_conversion_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_conversion.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_type_string.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_type_of_string.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_type_snprintf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_attr_snprintf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_snprintf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_cpuset_snprintf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_get_info_by_name.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_add_info.3
+
+man3_cpubindingdir = $(man3dir)
+man3_cpubinding_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_cpubinding.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_CPUBIND_NOMEMBIND.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_CPUBIND_PROCESS.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_CPUBIND_STRICT.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_CPUBIND_THREAD.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpubind_flags_t.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_set_cpubind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_cpubind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_set_proc_cpubind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_proc_cpubind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_set_thread_cpubind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_thread_cpubind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_proc_last_cpu_location.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_last_cpu_location.3
+
+man3_membindingdir = $(man3dir)
+man3_membinding_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_membinding.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_BIND.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_DEFAULT.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_FIRSTTOUCH.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_INTERLEAVE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_MIGRATE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_MIXED.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_NEXTTOUCH.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_NOCPUBIND.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_PROCESS.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_REPLICATE.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_STRICT.3 \
+        $(DOX_MAN_DIR)/man3/HWLOC_MEMBIND_THREAD.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_membind_flags_t.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_membind_policy_t.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_set_membind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_set_membind_nodeset.3  \
+        $(DOX_MAN_DIR)/man3/hwloc_get_membind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_membind_nodeset.3  \
+        $(DOX_MAN_DIR)/man3/hwloc_set_proc_membind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_set_proc_membind_nodeset.3  \
+        $(DOX_MAN_DIR)/man3/hwloc_get_proc_membind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_proc_membind_nodeset.3  \
+        $(DOX_MAN_DIR)/man3/hwloc_set_area_membind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_set_area_membind_nodeset.3  \
+        $(DOX_MAN_DIR)/man3/hwloc_get_area_membind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_area_membind_nodeset.3  \
+        $(DOX_MAN_DIR)/man3/hwloc_alloc.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_alloc_membind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_alloc_membind_nodeset.3  \
+        $(DOX_MAN_DIR)/man3/hwloc_free.3
+
+man3_customdir = $(man3dir)
+man3_custom_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_custom.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_custom_insert_topology.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_custom_insert_group_object_by_parent.3
+
+man3_bitmapdir = $(man3dir)
+man3_bitmap_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_bitmap.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_allbut.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_alloc.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_alloc_full.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_and.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_andnot.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_asprintf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_clr.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_clr_range.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_compare.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_compare_first.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_copy.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_dup.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_fill.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_first.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_foreach_begin.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_foreach_end.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_free.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_from_ith_ulong.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_from_ulong.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_intersects.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_isequal.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_isfull.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_isincluded.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_isset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_iszero.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_last.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_list_asprintf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_list_snprintf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_list_sscanf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_next.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_not.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_only.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_or.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_set.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_set_ith_ulong.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_set_range.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_singlify.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_snprintf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_sscanf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_taskset_asprintf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_taskset_snprintf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_taskset_sscanf.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_to_ith_ulong.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_to_ulong.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_weight.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_xor.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bitmap_zero.3
+
+man3_helper_typesdir = $(man3dir)
+man3_helper_types_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_types.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_type_or_above_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_type_or_below_depth.3
+
+man3_helper_traversal_basicdir = $(man3dir)
+man3_helper_traversal_basic_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_traversal_basic.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_root_obj.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_ancestor_obj_by_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_ancestor_obj_by_type.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_by_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_by_type.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_pu_obj_by_os_index.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_next_child.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_common_ancestor_obj.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_obj_is_in_subtree.3
+
+man3_helper_find_insidedir = $(man3dir)
+man3_helper_find_inside_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_find_inside.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_first_largest_obj_inside_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_largest_objs_inside_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_inside_cpuset_by_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_inside_cpuset_by_type.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_obj_inside_cpuset_by_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_obj_inside_cpuset_by_type.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_nbobjs_inside_cpuset_by_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_nbobjs_inside_cpuset_by_type.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_obj_index_inside_cpuset.3
+
+man3_helper_find_coveringdir = $(man3dir)
+man3_helper_find_covering_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_find_covering.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_child_covering_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_obj_covering_cpuset.3
+
+man3_helper_find_coveringsdir = $(man3dir)
+man3_helper_find_coverings_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_find_coverings.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_covering_cpuset_by_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_next_obj_covering_cpuset_by_type.3
+
+man3_helper_find_cachedir = $(man3dir)
+man3_helper_find_cache_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_find_cache.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_cache_covering_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_shared_cache_covering_obj.3
+
+man3_helper_traversaldir = $(man3dir)
+man3_helper_traversal_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_traversal.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_closest_objs.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_obj_below_array_by_type.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_obj_below_by_type.3
+
+man3_helper_bindingdir = $(man3dir)
+man3_helper_binding_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_binding.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_distribute.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_distributev.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_alloc_membind_policy.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_alloc_membind_policy_nodeset.3
+
+man3_helper_cpusetdir = $(man3dir)
+man3_helper_cpuset_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_get_allowed_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_get_complete_nodeset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_get_online_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_get_topology_cpuset.3
+
+man3_helper_nodesetdir = $(man3dir)
+man3_helper_nodeset_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_nodeset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_get_allowed_nodeset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_get_complete_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_topology_get_topology_nodeset.3
+
+man3_helper_nodeset_convertdir = $(man3dir)
+man3_helper_nodeset_convert_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_helper_nodeset_convert.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_nodeset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_nodeset_strict.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_nodeset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_nodeset_strict.3
+
+man3_helper_distancesdir = $(man3dir)
+man3_helper_distances_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_distances.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_whole_distance_matrix_by_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_whole_distance_matrix_by_type.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_distance_matrix_covering_obj_by_depth.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_latency.3
+
+man3_helper_advanced_iodir = $(man3dir)
+man3_helper_advanced_io_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_advanced_io.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_non_io_ancestor_obj.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_next_pcidev.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_pcidev_by_busid.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_pcidev_by_busidstring.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_next_osdev.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_next_bridge.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_bridge_covers_pcibus.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_get_hostbridge_by_pcibus.3
+
+man3_cudadir = $(man3dir)
+man3_cuda_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_cuda.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cuda_get_device_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cuda_get_device_pci_ids.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cuda_get_device_pcidev.3 \
+        $(DOX_MAN_DIR)/man3/hwlocality_cudart.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cudart_get_device_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cudart_get_device_pci_ids.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cudart_get_device_pcidev.3
+
+man3_glibc_scheddir = $(man3dir)
+man3_glibc_sched_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_glibc_sched.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_glibc_sched_affinity.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_glibc_sched_affinity.3
+
+man3_linuxdir = $(man3dir)
+man3_linux_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_linux.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_linux_get_tid_cpubind.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_linux_parse_cpumap_file.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_linux_set_tid_cpubind.3
+
+man3_linux_libnumadir = $(man3dir)
+man3_linux_libnuma_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_linux_libnuma_bitmask.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_linux_libnuma_bitmask.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_nodeset_from_linux_libnuma_bitmask.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_linux_libnuma_bitmask.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_nodeset_from_linux_libnuma_nodemask.3 \
+        $(DOX_MAN_DIR)/man3/hwlocality_linux_libnuma_nodemask.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_linux_libnuma_nodemask.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_nodeset_to_linux_libnuma_bitmask.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_linux_libnuma_nodemask.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_nodeset_to_linux_libnuma_nodemask.3 \
+        $(DOX_MAN_DIR)/man3/hwlocality_linux_libnuma_ulongs.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_from_linux_libnuma_ulongs.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_nodeset_from_linux_libnuma_ulongs.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_cpuset_to_linux_libnuma_ulongs.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_nodeset_to_linux_libnuma_ulongs.3
+
+man3_myriexpressdir = $(man3dir)
+man3_myriexpress_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_myriexpress.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_mx_board_get_device_cpuset.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_mx_endpoint_get_device_cpuset.3
+
+man3_openfabricsdir = $(man3dir)
+man3_openfabrics_DATA = \
+        $(DOX_MAN_DIR)/man3/hwlocality_openfabrics.3 \
+        $(DOX_MAN_DIR)/man3/hwloc_ibv_get_device_cpuset.3
+
+# end of manpages(3) if HWLOC_BUILD_DOXYGEN
+endif
+
+if HWLOC_BUILD_DOXYGEN
+
+# Put in these rules to force the generation of the man pages and get
+# all the dependencies right.  Additionally, this forces a
+# serialization during parallel builds (e.g., "make -j X") to ensure
+# that we don't get partial target errors (i.e., doxygen must be run
+# *first* before we can try to process/install man pages, the HTML,
+# run pdflatex, .etc.).
+
+$(man3_MANS): $(DOX_TAG)
+$(man3_topology_DATA): $(DOX_TAG)
+$(man3_sets_DATA): $(DOX_TAG)
+$(man3_types_DATA): $(DOX_TAG)
+$(man3_objects_DATA): $(DOX_TAG)
+$(man3_creation_DATA): $(DOX_TAG)
+$(man3_configuration_DATA): $(DOX_TAG)
+$(man3_tinker_DATA): $(DOX_TAG)
+$(man3_information_DATA): $(DOX_TAG)
+$(man3_traversal_DATA): $(DOX_TAG)
+$(man3_conversion_DATA): $(DOX_TAG)
+$(man3_cpubinding_DATA): $(DOX_TAG)
+$(man3_membinding_DATA): $(DOX_TAG)
+$(man3_custom_DATA): $(DOX_TAG)
+$(man3_bitmap_DATA): $(DOX_TAG)
+$(man3_helper_types_DATA): $(DOX_TAG)
+$(man3_helper_traversal_basic_DATA): $(DOX_TAG)
+$(man3_helper_find_inside_DATA): $(DOX_TAG)
+$(man3_helper_find_coverings_DATA): $(DOX_TAG)
+$(man3_helper_find_covering_DATA): $(DOX_TAG)
+$(man3_helper_find_cache_DATA): $(DOX_TAG)
+$(man3_helper_traversal_DATA): $(DOX_TAG)
+$(man3_helper_binding_DATA): $(DOX_TAG)
+$(man3_helper_cpuset_DATA): $(DOX_TAG)
+$(man3_helper_nodeset_DATA): $(DOX_TAG)
+$(man3_helper_nodeset_convert_DATA): $(DOX_TAG)
+$(man3_helper_distances_DATA): $(DOX_TAG)
+$(man3_helper_advanced_io_DATA): $(DOX_TAG)
+$(man3_cuda_DATA): $(DOX_TAG)
+$(man3_glibc_sched_DATA): $(DOX_TAG)
+$(man3_linux_DATA): $(DOX_TAG)
+$(man3_linux_libnuma_DATA): $(DOX_TAG)
+$(man3_myriexpress_DATA): $(DOX_TAG)
+$(man3_openfabrics_DATA): $(DOX_TAG)
+
+$(DOX_LETTERPDF): $(DOX_TAG)
+$(DOX_HTML_DIR): $(DOX_TAG)
+$(DOX_LATEX_DIR): $(DOX_TAG)
+$(DOX_MAN_DIR): $(DOX_TAG)
+
+# Additionally, we have to ensure that the A4 and Letter PDFs aren't
+# built at the same time during a parallel build (e.g., "make -j X").
+# So arbitrarily make the A4 PDF dependent upon the Letter PDF.
+$(DOX_A4PDF): $(DOX_TAG) $(DOX_LETTERPDF)
+endif
+
+#
+# Make sure that the documentation example works
+#
+
+if HWLOC_BUILD_TESTS
+TESTS = hwloc-hello
+check_PROGRAMS = $(TESTS)
+endif HWLOC_BUILD_TESTS
+
+hwloc_hello_LDADD = $(HWLOC_top_builddir)/src/libhwloc.la
+hwloc_hello_DEPENDENCIES = $(hwloc_hello_LDADD)
+
+#
+# Only remove the actual generated documentation files for maintainers
+#
+
+MAINTAINERCLEANFILES = $(DOX_TAG) \
+    -r \
+    $(DOX_HTML_DIR) \
+    $(DOX_MAN_DIR) \
+    $(DOX_LATEX_DIR) \
+    $(DOX_A4PDF) \
+    $(DOX_LETTERPDF)
+
+#
+# Rules for creating the top-level README file.  There does not appear
+# to be an easy way to know if AC_PATH_PROG found something in
+# configure.ac (!), so put a run-time check here to see if we have
+# w3c.  
+#
+# Just like BUILD_DOXYGEN, BUILD_README will automatically be false if
+# we're not building standalone.
+#
+
+if HWLOC_BUILD_README
+doc readme: all $(HWLOC_top_srcdir)/README
+$(HWLOC_top_srcdir)/README: $(DOX_HTML_DIR)
+	LC_ALL=C $(HWLOC_W3_GENERATOR) $(DOX_HTML_DIR)/index.html | $(SED) -n -e 's/^   //' -e '/^Introduction$$/,$$p' > $@
+else
+doc readme: no-build-readme
+$(HWLOC_top_srcdir)/README: no-build-readme
+
+no-build-readme:
+	@echo "ERROR: You do not have the 'w3m' or 'lynx' executables to build the README, or do not have the 'doxygen' executable to build the docs."
+	@echo "ERROR: Cannot continue."
+	@exit 1
+endif
+
+#DOCUPLOADHOST=sync.bordeaux.inria.fr
+#DOCUPLOADOPTS=
+#doc-upload: @DX_DOCDIR@/html
+#	echo FIXME
+#	false
+#	rsync -avz --delete --chmod=ug+rwX,o+rX $(DOCUPLOADOPTS) @DX_DOCDIR@/html/ $(DOCUPLOADHOST):/web/runtime/libtopology/doc/

Deleted: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/README
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/README	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/README	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,4 +0,0 @@
-The contents of this directory have been deleted from the MPICH2 repository.
-Because we build hwloc in "embedded" mode, these directories cause problems with
-the tarballs resulting from "make dist".  The directory itself is left in place
-to keep automake happy and hold this README.

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen-config.cfg.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen-config.cfg.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen-config.cfg.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,26 @@
+# Copyright © 2010 inria.  All rights reserved.
+# Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+
+# See big comments in doxygen.cfg about the purpose of this file.
+
+PROJECT_NUMBER = @PACKAGE_VERSION@
+
+INPUT          = \
+		@top_srcdir@/doc/hwloc.doxy \
+		@top_srcdir@/include/hwloc.h \
+		@top_srcdir@/include/hwloc/helper.h \
+		@top_srcdir@/include/hwloc/bitmap.h \
+		@top_srcdir@/include/hwloc/glibc-sched.h \
+		@top_srcdir@/include/hwloc/linux.h \
+		@top_srcdir@/include/hwloc/linux-libnuma.h \
+		@top_srcdir@/include/hwloc/cuda.h \
+		@top_srcdir@/include/hwloc/cudart.h \
+		@top_srcdir@/include/hwloc/openfabrics-verbs.h \
+		@top_srcdir@/include/hwloc/myriexpress.h
+
+EXAMPLE_PATH   = @top_srcdir@/doc
+
+IMAGE_PATH     = @top_srcdir@/doc/images images
+
+INCLUDE_PATH   = @top_srcdir@/doc

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen.css
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen.css	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/doxygen.css	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,108 @@
+body {
+	font-size: 13px;
+/*	margin-top: 0px; */
+}
+
+div.menu {
+	text-align: center;
+	margin-top: 12px;
+	margin-bottom: 3px;
+	background: #eeeeff;
+	font-variant: small-caps;
+/*	position: fixed;*/
+	width: 100%;
+}
+div.menu a {
+	text-decoration: none;
+	color: #0020a0;
+}
+div.menu hr.menu {
+	height: 4px;
+	background: #fe0;
+	border: 0px;
+	margin-top: 0px;
+	margin-bottom: 0px;
+}
+
+h1 {
+	font: bold normal 2.5em sans-serif ;
+	margin: 0px;
+	color: #0020a0;
+}
+h1.sub {
+	font: bold normal 2em sans-serif ;
+	text-align: right ;
+	color: #0020a0;
+}
+h1 a {
+	color: #0020a0;
+	text-decoration: none;
+}
+
+h2 {
+	font: bold normal small-caps 1.5em sans-serif ;
+	color: #0020a0;
+	margin-top: 8px;
+	margin-bottom: 8px;
+}
+
+h4 {
+	font: bold normal small-caps 1em sans-serif ;
+	color: #0020a0;
+	margin-top: 8px;
+	margin-bottom: 4px;
+}
+
+h6.mirrors {
+	text-align: right;
+	margin: 0px;
+	font-size: 10px;
+}
+
+div.section {
+	background: #eeeeff;
+	padding-left: 2px;
+	padding-bottom: 2px;
+	margin-top: 12px;
+	margin-bottom: 12px;
+}
+
+p {
+	margin-top: 8px;
+	margin-bottom: 4px;
+	margin-left: 6px;
+	margin-right: 6px;
+}
+
+hr {
+	height: 8px;
+	background: #fe0;
+	border: 0px;
+	margin-top: 6px;
+	margin-bottom: 6px;
+}
+
+pre {
+	font-size: 12px;
+	background: #dddddd;
+	padding: 3px;
+	padding-left: 0px;
+	margin-left: 12px;
+}
+
+a {
+	font-weight: bold;
+}
+
+div.publis-desc {
+	text-align: right;
+	font-style: italic;
+	font-size: 12px;
+	padding-left: 15%;
+}
+
+p.updated {
+	text-align: right;
+	font-size: 10px;
+	font-style: italic;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc-hello.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc-hello.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc-hello.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,169 @@
+/* Example hwloc API program.
+ *
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ *
+ * hwloc-hello.c
+ */
+
+#include <hwloc.h>
+#include <errno.h>
+#include <stdio.h>
+#include <string.h>
+
+static void print_children(hwloc_topology_t topology, hwloc_obj_t obj, 
+                           int depth)
+{
+    char string[128];
+    unsigned i;
+
+    hwloc_obj_snprintf(string, sizeof(string), topology, obj, "#", 0);
+    printf("%*s%s\n", 2*depth, "", string);
+    for (i = 0; i < obj->arity; i++) {
+        print_children(topology, obj->children[i], depth + 1);
+    }
+}
+
+int main(void)
+{
+    int depth;
+    unsigned i, n;
+    unsigned long size;
+    int levels;
+    char string[128];
+    int topodepth;
+    hwloc_topology_t topology;
+    hwloc_cpuset_t cpuset;
+    hwloc_obj_t obj;
+
+    /* Allocate and initialize topology object. */
+    hwloc_topology_init(&topology);
+
+    /* ... Optionally, put detection configuration here to ignore
+       some objects types, define a synthetic topology, etc....  
+
+       The default is to detect all the objects of the machine that
+       the caller is allowed to access.  See Configure Topology
+       Detection. */
+
+    /* Perform the topology detection. */
+    hwloc_topology_load(topology);
+
+    /* Optionally, get some additional topology information
+       in case we need the topology depth later. */
+    topodepth = hwloc_topology_get_depth(topology);
+
+    /*****************************************************************
+     * First example:
+     * Walk the topology with an array style, from level 0 (always
+     * the system level) to the lowest level (always the proc level).
+     *****************************************************************/
+    for (depth = 0; depth < topodepth; depth++) {
+        printf("*** Objects at level %d\n", depth);
+        for (i = 0; i < hwloc_get_nbobjs_by_depth(topology, depth); 
+             i++) {
+            hwloc_obj_snprintf(string, sizeof(string), topology,
+                       hwloc_get_obj_by_depth(topology, depth, i),
+                       "#", 0);
+            printf("Index %u: %s\n", i, string);
+        }
+    }
+
+    /*****************************************************************
+     * Second example:
+     * Walk the topology with a tree style.
+     *****************************************************************/
+    printf("*** Printing overall tree\n");
+    print_children(topology, hwloc_get_root_obj(topology), 0);
+
+    /*****************************************************************
+     * Third example:
+     * Print the number of sockets.
+     *****************************************************************/
+    depth = hwloc_get_type_depth(topology, HWLOC_OBJ_SOCKET);
+    if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+        printf("*** The number of sockets is unknown\n");
+    } else {
+        printf("*** %u socket(s)\n", 
+               hwloc_get_nbobjs_by_depth(topology, depth));
+    }
+
+    /*****************************************************************
+     * Fourth example:
+     * Compute the amount of cache that the first logical processor
+     * has above it.
+     *****************************************************************/
+    levels = 0;
+    size = 0;
+    for (obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, 0);
+         obj;
+         obj = obj->parent)
+      if (obj->type == HWLOC_OBJ_CACHE) {
+        levels++;
+        size += obj->attr->cache.size;
+      }
+    printf("*** Logical processor 0 has %d caches totaling %luKB\n", 
+           levels, size / 1024);
+
+    /*****************************************************************
+     * Fifth example:
+     * Bind to only one thread of the last core of the machine.
+     *
+     * First find out where cores are, or else smaller sets of CPUs if
+     * the OS doesn't have the notion of a "core".
+     *****************************************************************/
+    depth = hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_CORE);
+
+    /* Get last core. */
+    obj = hwloc_get_obj_by_depth(topology, depth,
+                   hwloc_get_nbobjs_by_depth(topology, depth) - 1);
+    if (obj) {
+        /* Get a copy of its cpuset that we may modify. */
+        cpuset = hwloc_bitmap_dup(obj->cpuset);
+
+        /* Get only one logical processor (in case the core is
+           SMT/hyperthreaded). */
+        hwloc_bitmap_singlify(cpuset);
+
+        /* And try to bind ourself there. */
+        if (hwloc_set_cpubind(topology, cpuset, 0)) {
+            char *str;
+            int error = errno;
+            hwloc_bitmap_asprintf(&str, obj->cpuset);
+            printf("Couldn't bind to cpuset %s: %s\n", str, strerror(error));
+            free(str);
+        }
+
+        /* Free our cpuset copy */
+        hwloc_bitmap_free(cpuset);
+    }
+
+    /*****************************************************************
+     * Sixth example:
+     * Allocate some memory on the last NUMA node, bind some existing
+     * memory to the last NUMA node.
+     *****************************************************************/
+    /* Get last node. */
+    n = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE);
+    if (n) {
+        void *m;
+        size = 1024*1024;
+
+        obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NODE, n - 1);
+        m = hwloc_alloc_membind_nodeset(topology, size, obj->nodeset,
+                HWLOC_MEMBIND_DEFAULT, 0);
+        hwloc_free(topology, m, size);
+
+        m = malloc(size);
+        hwloc_set_area_membind_nodeset(topology, m, size, obj->nodeset,
+                HWLOC_MEMBIND_DEFAULT, 0);
+        free(m);
+    }
+
+    /* Destroy topology object. */
+    hwloc_topology_destroy(topology);
+
+    return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/hwloc.doxy	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,1988 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+/*! \mainpage Hardware Locality
+
+<h1 class="sub">Portable abstraction of hierarchical architectures for high-performance computing</h1>
+
+<hr>
+
+\htmlonly
+<div class="section" id="introduction">
+\endhtmlonly
+\section Introduction
+
+hwloc provides command line tools and a C API to obtain the
+hierarchical map of key computing elements, such as: NUMA memory
+nodes, shared caches, processor sockets, processor cores,
+processing units (logical processors or "threads")
+and even I/O devices.
+hwloc also gathers various attributes such as
+cache and memory information, and is portable across a variety of
+different operating systems and platforms.
+Additionally it may assemble the topologies of multiple machines
+into a single one so as to let applications consult the topology
+of an entire fabric or cluster at once.
+
+hwloc primarily aims at helping high-performance computing (HPC)
+applications, but is also applicable to any project seeking to exploit
+code and/or data locality on modern computing platforms.
+
+*** Note that the hwloc project represents the merger of the
+libtopology project from inria and the Portable Linux Processor
+Affinity (PLPA) sub-project from Open MPI.  <em>Both of these prior
+projects are now deprecated.</em> The first hwloc release was
+essentially a "re-branding" of the libtopology code base, but with
+both a few genuinely new features and a few PLPA-like features added
+in.  Prior releases of hwloc included documentation about switching
+from PLPA to hwloc; this documentation has been dropped on the
+assumption that everyone who was using PLPA has already switched to
+hwloc.
+
+hwloc supports the following operating systems:
+
+<ul>
+<li>Linux (including old kernels not having sysfs topology
+information, with knowledge of cpusets, offline CPUs, ScaleMP vSMP,
+and Kerrighed support)</li>
+<li>Solaris</li>
+<li>AIX</li>
+<li>Darwin / OS X</li>
+<li>FreeBSD and its variants, such as kFreeBSD/GNU</li>
+<li>OSF/1 (a.k.a., Tru64)</li>
+<li>HP-UX</li>
+<li>Microsoft Windows</li>
+</ul>
+
+Since it uses standard Operating System information, hwloc's support is mostly
+independant from the processor type (x86, powerpc, ...) and just relies on the
+Operating System support. The only exception to this is kFreeBSD, which does
+not support topology information, and hwloc thus uses an x86-only CPUID-based
+backend (which could be used for other OSes too).
+
+To check whether hwloc works on a particular machine, just try to build it
+and run <tt>lstopo</tt>. If some things do not look right (e.g. bogus or missing
+cache information), see \ref bugs below.
+
+hwloc only reports the number of processors on unsupported operating
+systems; no topology information is available.
+
+For development and debugging purposes, hwloc also offers the ability to
+work on "fake" topologies:
+
+<ul>
+  <li> Symmetrical tree of resources generated from a list of level arities</li>
+  <li> Remote machine simulation through the gathering of Linux sysfs topology files</li>
+</ul>
+
+hwloc can display the topology in a human-readable format, either in
+graphical mode (X11), or by exporting in one of several different
+formats, including: plain text, PDF, PNG, and FIG (see \ref cli_examples
+below).  Note that some of the export formats require additional
+support libraries.
+
+hwloc offers a programming interface for manipulating topologies and
+objects. It also brings a powerful CPU bitmap API that is used to
+describe topology objects location on physical/logical processors. See
+the \ref interface below. It may also be used to binding applications
+onto certain cores or memory nodes. Several utility programs are also
+provided to ease command-line manipulation of topology objects,
+binding of processes, and so on.
+
+Perl bindings are available from Bernd Kallies
+<a href=http://search.cpan.org/~bka/Sys-Hwloc-0.10/>on CPAN:</a>
+
+Python bindings are available from Guy Streeter:
+<ul>
+<li><a href=http://people.redhat.com/streeter/>Fedora RPM and tarball</a>.</li>
+<li><a href=git://git.fedorahosted.org/python-hwloc.git>git tree</a>
+(<a href=http://git.fedorahosted.org/git/python-hwloc.git>html</a>).</li>
+</ul>
+
+\htmlonly
+</div><div class="section" id="installation">
+\endhtmlonly
+\section installation Installation
+
+hwloc (http://www.open-mpi.org/projects/hwloc/) is available under the
+BSD license.  It is hosted as a sub-project of the overall Open MPI
+project (http://www.open-mpi.org/).  Note that hwloc does not require
+any functionality from Open MPI -- it is a wholly separate (and much
+smaller!) project and code base.  It just happens to be hosted as part
+of the overall Open MPI project.
+
+Nightly development snapshots are available on the web site.
+Additionally, the code can be directly checked out of Subversion:
+
+\code
+shell$ svn checkout http://svn.open-mpi.org/svn/hwloc/trunk hwloc-trunk
+shell$ cd hwloc-trunk
+shell$ ./autogen.sh
+\endcode
+
+Note that GNU Autoconf >=2.63, Automake >=1.10 and Libtool >=2.2.6 are
+required when building from a Subversion checkout.
+
+Installation by itself is the fairly common GNU-based process:
+
+\code
+shell$ ./configure --prefix=...
+shell$ make
+shell$ make install
+\endcode
+
+The hwloc command-line tool "lstopo" produces human-readable topology
+maps, as mentioned above.  It can also export maps to the "fig" file
+format.  Support for PDF, Postscript, and PNG exporting is provided if
+the "Cairo" development package can be found when hwloc is configured
+and build.
+
+The hwloc core may also benefit from the following development packages:
+<ul>
+<li>pciutils (libpci) for I/O discovery.</li>
+<li>libnuma for memory binding and migration support on Linux.</li>
+<li>libxml2 for full XML import/export support (otherwise, the
+    internal minimalistic parser will only be able to import
+    XML files that were exported by the same hwloc release).
+    See \ref xml for details.</li>
+</ul>
+
+
+\htmlonly
+</div><div class="section" id="cli_examples">
+\endhtmlonly
+\section cli_examples CLI Examples
+
+On a 4-socket 2-core machine with hyperthreading, the \c lstopo tool
+may show the following graphical output:
+
+\image html dudley.png
+\image latex dudley.png "" width=9cm
+
+Here's the equivalent output in textual form:
+
+\verbatim
+Machine (16GB)
+  Socket L#0 + L3 L#0 (4096KB)
+    L2 L#0 (1024KB) + L1 L#0 (16KB) + Core L#0
+      PU L#0 (P#0)
+      PU L#1 (P#8)
+    L2 L#1 (1024KB) + L1 L#1 (16KB) + Core L#1
+      PU L#2 (P#4)
+      PU L#3 (P#12)
+  Socket L#1 + L3 L#1 (4096KB)
+    L2 L#2 (1024KB) + L1 L#2 (16KB) + Core L#2
+      PU L#4 (P#1)
+      PU L#5 (P#9)
+    L2 L#3 (1024KB) + L1 L#3 (16KB) + Core L#3
+      PU L#6 (P#5)
+      PU L#7 (P#13)
+  Socket L#2 + L3 L#2 (4096KB)
+    L2 L#4 (1024KB) + L1 L#4 (16KB) + Core L#4
+      PU L#8 (P#2)
+      PU L#9 (P#10)
+    L2 L#5 (1024KB) + L1 L#5 (16KB) + Core L#5
+      PU L#10 (P#6)
+      PU L#11 (P#14)
+  Socket L#3 + L3 L#3 (4096KB)
+    L2 L#6 (1024KB) + L1 L#6 (16KB) + Core L#6
+      PU L#12 (P#3)
+      PU L#13 (P#11)
+    L2 L#7 (1024KB) + L1 L#7 (16KB) + Core L#7
+      PU L#14 (P#7)
+      PU L#15 (P#15)
+\endverbatim
+
+Finally, here's the equivalent output in XML.  Long lines were
+artificially broken for document clarity (in the real output, each XML
+tag is on a single line), and only socket #0 is shown for brevity:
+
+\verbatim
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000ffff" 
+      complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" 
+      allowed_cpuset="0x0000ffff" 
+      dmi_board_vendor="Dell Computer Corporation" dmi_board_name="0RD318" 
+      local_memory="16648183808">
+    <page_type size="4096" count="4064498"/>
+    <page_type size="2097152" count="0"/>
+    <object type="Socket" os_level="-1" os_index="0" cpuset="0x00001111" 
+        complete_cpuset="0x00001111" online_cpuset="0x00001111" 
+        allowed_cpuset="0x00001111">
+      <object type="Cache" os_level="-1" cpuset="0x00001111" 
+          complete_cpuset="0x00001111" online_cpuset="0x00001111" 
+          allowed_cpuset="0x00001111" cache_size="4194304" depth="3" 
+          cache_linesize="64">
+        <object type="Cache" os_level="-1" cpuset="0x00000101" 
+            complete_cpuset="0x00000101" online_cpuset="0x00000101" 
+            allowed_cpuset="0x00000101" cache_size="1048576" depth="2" 
+            cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000101" 
+              complete_cpuset="0x00000101" online_cpuset="0x00000101" 
+              allowed_cpuset="0x00000101" cache_size="16384" depth="1" 
+              cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="0" cpuset="0x00000101" 
+                complete_cpuset="0x00000101" online_cpuset="0x00000101" 
+                allowed_cpuset="0x00000101">
+              <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" 
+                  complete_cpuset="0x00000001" online_cpuset="0x00000001" 
+                  allowed_cpuset="0x00000001"/>
+              <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" 
+                  complete_cpuset="0x00000100" online_cpuset="0x00000100" 
+                  allowed_cpuset="0x00000100"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00001010" 
+            complete_cpuset="0x00001010" online_cpuset="0x00001010" 
+            allowed_cpuset="0x00001010" cache_size="1048576" depth="2" 
+            cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00001010" 
+              complete_cpuset="0x00001010" online_cpuset="0x00001010" 
+              allowed_cpuset="0x00001010" cache_size="16384" depth="1" 
+              cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="1" cpuset="0x00001010" 
+                complete_cpuset="0x00001010" online_cpuset="0x00001010" 
+                allowed_cpuset="0x00001010">
+              <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" 
+                  complete_cpuset="0x00000010" online_cpuset="0x00000010" 
+                  allowed_cpuset="0x00000010"/>
+              <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" 
+                  complete_cpuset="0x00001000" online_cpuset="0x00001000" 
+                  allowed_cpuset="0x00001000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <!-- ...other sockets listed here ... -->
+  </object>
+</topology>
+\endverbatim
+
+On a 4-socket 2-core Opteron NUMA machine, the \c lstopo tool may show
+the following graphical output:
+
+\image html hagrid.png
+\image latex hagrid.png width=\textwidth
+
+Here's the equivalent output in textual form:
+
+\verbatim
+Machine (32GB)
+  NUMANode L#0 (P#0 8190MB) + Socket L#0
+    L2 L#0 (1024KB) + L1 L#0 (64KB) + Core L#0 + PU L#0 (P#0)
+    L2 L#1 (1024KB) + L1 L#1 (64KB) + Core L#1 + PU L#1 (P#1)
+  NUMANode L#1 (P#1 8192MB) + Socket L#1
+    L2 L#2 (1024KB) + L1 L#2 (64KB) + Core L#2 + PU L#2 (P#2)
+    L2 L#3 (1024KB) + L1 L#3 (64KB) + Core L#3 + PU L#3 (P#3)
+  NUMANode L#2 (P#2 8192MB) + Socket L#2
+    L2 L#4 (1024KB) + L1 L#4 (64KB) + Core L#4 + PU L#4 (P#4)
+    L2 L#5 (1024KB) + L1 L#5 (64KB) + Core L#5 + PU L#5 (P#5)
+  NUMANode L#3 (P#3 8192MB) + Socket L#3
+    L2 L#6 (1024KB) + L1 L#6 (64KB) + Core L#6 + PU L#6 (P#6)
+    L2 L#7 (1024KB) + L1 L#7 (64KB) + Core L#7 + PU L#7 (P#7)
+\endverbatim
+
+And here's the equivalent output in XML.  Similar to above, line
+breaks were added and only PU #0 is shown for brevity:
+
+\verbatim
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0x000000ff" 
+      complete_cpuset="0x000000ff" online_cpuset="0x000000ff" 
+      allowed_cpuset="0x000000ff" nodeset="0x000000ff" 
+      complete_nodeset="0x000000ff" allowed_nodeset="0x000000ff" 
+      dmi_board_vendor="TYAN Computer Corp" dmi_board_name="S4881 ">
+    <page_type size="4096" count="0"/>
+    <page_type size="2097152" count="0"/>
+    <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x00000003" 
+        complete_cpuset="0x00000003" online_cpuset="0x00000003" 
+        allowed_cpuset="0x00000003" nodeset="0x00000001" 
+        complete_nodeset="0x00000001" allowed_nodeset="0x00000001" 
+        local_memory="7514177536">
+      <page_type size="4096" count="1834516"/>
+      <page_type size="2097152" count="0"/>
+      <object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003" 
+          complete_cpuset="0x00000003" online_cpuset="0x00000003" 
+          allowed_cpuset="0x00000003" nodeset="0x00000001" 
+          complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" os_level="-1" cpuset="0x00000001" 
+            complete_cpuset="0x00000001" online_cpuset="0x00000001" 
+            allowed_cpuset="0x00000001" nodeset="0x00000001" 
+            complete_nodeset="0x00000001" allowed_nodeset="0x00000001" 
+            cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000001" 
+              complete_cpuset="0x00000001" online_cpuset="0x00000001" 
+              allowed_cpuset="0x00000001" nodeset="0x00000001" 
+              complete_nodeset="0x00000001" allowed_nodeset="0x00000001" 
+              cache_size="65536" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="0" 
+                cpuset="0x00000001" complete_cpuset="0x00000001" 
+                online_cpuset="0x00000001" allowed_cpuset="0x00000001" 
+                nodeset="0x00000001" complete_nodeset="0x00000001" 
+                allowed_nodeset="0x00000001">
+              <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" 
+                  complete_cpuset="0x00000001" online_cpuset="0x00000001" 
+                  allowed_cpuset="0x00000001" nodeset="0x00000001" 
+                  complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+          </object>
+        </object>
+  <!-- ...more objects listed here ... -->
+</topology>
+\endverbatim
+
+On a 2-socket quad-core Xeon (pre-Nehalem, with 2 dual-core dies into
+each socket):
+
+\image html emmett.png
+\image latex emmett.png "" width=7cm
+
+Here's the same output in textual form:
+
+\verbatim
+Machine (16GB)
+  Socket L#0
+    L2 L#0 (4096KB)
+      L1 L#0 (32KB) + Core L#0 + PU L#0 (P#0)
+      L1 L#1 (32KB) + Core L#1 + PU L#1 (P#4)
+    L2 L#1 (4096KB)
+      L1 L#2 (32KB) + Core L#2 + PU L#2 (P#2)
+      L1 L#3 (32KB) + Core L#3 + PU L#3 (P#6)
+  Socket L#1
+    L2 L#2 (4096KB)
+      L1 L#4 (32KB) + Core L#4 + PU L#4 (P#1)
+      L1 L#5 (32KB) + Core L#5 + PU L#5 (P#5)
+    L2 L#3 (4096KB)
+      L1 L#6 (32KB) + Core L#6 + PU L#6 (P#3)
+      L1 L#7 (32KB) + Core L#7 + PU L#7 (P#7)
+\endverbatim
+
+And the same output in XML (line breaks added, only PU #0 shown):
+
+\verbatim
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0x000000ff" 
+      complete_cpuset="0x000000ff" online_cpuset="0x000000ff" 
+      allowed_cpuset="0x000000ff" dmi_board_vendor="Dell Inc." 
+      dmi_board_name="0NR282" local_memory="16865292288">
+    <page_type size="4096" count="4117503"/>
+    <page_type size="2097152" count="0"/>
+    <object type="Socket" os_level="-1" os_index="0" cpuset="0x00000055" 
+        complete_cpuset="0x00000055" online_cpuset="0x00000055" 
+        allowed_cpuset="0x00000055">
+      <object type="Cache" os_level="-1" cpuset="0x00000011" 
+          complete_cpuset="0x00000011" online_cpuset="0x00000011" 
+          allowed_cpuset="0x00000011" cache_size="4194304" depth="2" 
+          cache_linesize="64">
+        <object type="Cache" os_level="-1" cpuset="0x00000001" 
+            complete_cpuset="0x00000001" online_cpuset="0x00000001" 
+            allowed_cpuset="0x00000001" cache_size="32768" depth="1" 
+            cache_linesize="64">
+          <object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" 
+              complete_cpuset="0x00000001" online_cpuset="0x00000001" 
+              allowed_cpuset="0x00000001">
+            <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" 
+                complete_cpuset="0x00000001" online_cpuset="0x00000001" 
+                allowed_cpuset="0x00000001"/>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00000010" 
+            complete_cpuset="0x00000010" online_cpuset="0x00000010" 
+            allowed_cpuset="0x00000010" cache_size="32768" depth="1" 
+            cache_linesize="64">
+          <object type="Core" os_level="-1" os_index="1" cpuset="0x00000010" 
+              complete_cpuset="0x00000010" online_cpuset="0x00000010" 
+              allowed_cpuset="0x00000010">
+            <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" 
+                complete_cpuset="0x00000010" online_cpuset="0x00000010" 
+                allowed_cpuset="0x00000010"/>
+          </object>
+        </object>
+      </object>
+  <!-- ...more objects listed here ... -->
+</topology>
+\endverbatim
+
+\htmlonly
+</div><div class="section" id="interface">
+\endhtmlonly
+
+\section interface Programming Interface
+
+The basic interface is available in hwloc.h.  It essentially offers
+low-level routines for advanced programmers that want to manually
+manipulate objects and follow links between them.  Documentation for
+everything in hwloc.h are provided later in this document.  Developers
+should also look at hwloc/helper.h (and also in this document, which
+provides good higher-level topology traversal examples).
+
+To precisely define the vocabulary used by hwloc, a \ref termsanddefs
+section is available and should probably be read first.  
+
+Each hwloc object contains a cpuset describing the list of processing
+units that it contains.  These bitmaps may be used for \ref
+hwlocality_cpubinding and \ref hwlocality_membinding.  hwloc offers an extensive
+bitmap manipulation interface in hwloc/bitmap.h.
+
+Moreover, hwloc also comes with additional helpers for
+interoperability with several commonly used environments.
+See the \ref interoperability section for details.
+
+The complete API documentation is available in a full set of HTML
+pages, man pages, and self-contained PDF files (formatted for both
+both US letter and A4 formats) in the source tarball in
+doc/doxygen-doc/.  
+
+<strong>NOTE:</strong> If you are building the documentation from a
+Subversion checkout, you will need to have Doxygen and pdflatex
+installed -- the documentation will be built during the normal "make"
+process.  The documentation is installed during "make install" to
+$prefix/share/doc/hwloc/ and your systems default man page tree (under
+$prefix, of course).
+
+\subsection portability Portability
+
+As shown in \ref cli_examples, hwloc can obtain information on a wide
+variety of hardware topologies.  However, some platforms and/or
+operating system versions will only report a subset of this
+information.  For example, on an PPC64-based system with 32 cores
+(each with 2 hardware threads) running a default 2.6.18-based kernel
+from RHEL 5.4, hwloc is only able to glean information about NUMA
+nodes and processor units (PUs).  No information about caches,
+sockets, or cores is available.
+
+Similarly, Operating System have varying support for CPU and memory binding,
+e.g. while some Operating Systems provide interfaces for all kinds of CPU and
+memory bindings, some others provide only interfaces for a limited number of
+kinds of CPU and memory binding, and some do not provide any binding interface
+at all.  Hwloc's binding functions would then simply return the ENOSYS error
+(Function not implemented), meaning that the underlying Operating System
+does not provide any interface for them. \ref hwlocality_cpubinding and \ref
+hwlocality_membinding provide more information on which hwloc binding functions
+should be preferred because interfaces for them are usually available on the
+supported Operating Systems.
+
+Here's the graphical output from lstopo on this platform when
+Simultaneous Multi-Threading (SMT) is enabled:
+
+\image html ppc64-with-smt.png
+\image latex ppc64-with-smt.pdf "" width=\textwidth
+
+And here's the graphical output from lstopo on this platform when SMT is
+disabled:
+
+\image html ppc64-without-smt.png
+\image latex ppc64-without-smt.pdf "" width=\textwidth
+
+Notice that hwloc only sees half the PUs when SMT is disabled.  PU #15,
+for example, seems to change location from NUMA node #0 to #1.  In
+reality, no PUs "moved" -- they were simply re-numbered when hwloc
+only saw half as many.  Hence, PU #15 in the SMT-disabled picture
+probably corresponds to PU #30 in the SMT-enabled picture.  
+
+This same "PUs have disappeared" effect can be seen on other platforms
+-- even platforms / OSs that provide much more information than the
+above PPC64 system.  This is an unfortunate side-effect of how
+operating systems report information to hwloc.
+
+Note that upgrading the Linux kernel on the same PPC64 system
+mentioned above to 2.6.34, hwloc is able to discover all the topology
+information.  The following picture shows the entire topology layout
+when SMT is enabled:
+
+\image html ppc64-full-with-smt.png
+\image latex ppc64-full-with-smt.pdf "" width=\textwidth
+
+Developers using the hwloc API or XML output for portable applications
+should therefore be extremely careful to not make any assumptions
+about the structure of data that is returned.  For example, per the
+above reported PPC topology, it is not safe to assume that PUs will
+always be descendants of cores.
+
+Additionally, future hardware may insert new topology elements that
+are not available in this version of hwloc.  Long-lived applications
+that are meant to span multiple different hardware platforms should
+also be careful about making structure assumptions.  For example,
+there may someday be an element "lower" than a PU, or perhaps a new
+element may exist between a core and a PU.
+
+\subsection interface_example API Example
+
+The following small C example (named ``hwloc-hello.c'') prints the
+topology of the machine and bring the process to the first logical processor
+of the second core of the machine.
+
+\include hwloc-hello.c
+
+hwloc provides a \c pkg-config executable to obtain relevant compiler
+and linker flags.  For example, it can be used thusly to compile
+applications that utilize the hwloc library (assuming GNU Make):
+
+\verbatim
+CFLAGS += $(pkg-config --cflags hwloc)
+LDLIBS += $(pkg-config --libs hwloc)
+cc hwloc-hello.c $(CFLAGS) -o hwloc-hello $(LDLIBS)
+\endverbatim
+
+On a machine with 4GB of RAM and 2 processor sockets -- each socket of
+which has two processing cores -- the output from running \c
+hwloc-hello could be something like the following:
+
+\verbatim
+shell$ ./hwloc-hello
+*** Objects at level 0
+Index 0: Machine(3938MB)
+*** Objects at level 1
+Index 0: Socket#0
+Index 1: Socket#1
+*** Objects at level 2
+Index 0: Core#0
+Index 1: Core#1
+Index 2: Core#3
+Index 3: Core#2
+*** Objects at level 3
+Index 0: PU#0
+Index 1: PU#1
+Index 2: PU#2
+Index 3: PU#3
+*** Printing overall tree
+Machine(3938MB)
+  Socket#0
+    Core#0
+      PU#0
+    Core#1
+      PU#1
+  Socket#1
+    Core#3
+      PU#2
+    Core#2
+      PU#3
+*** 2 socket(s)
+shell$ 
+\endverbatim
+
+\htmlonly
+</div><div class="section" id="bugs">
+\endhtmlonly
+\section bugs Questions and Bugs
+
+Questions should be sent to the devel mailing
+list (http://www.open-mpi.org/community/lists/hwloc.php).
+Bug reports should be reported in the tracker
+(https://svn.open-mpi.org/trac/hwloc/).
+
+If hwloc discovers an incorrect topology for your machine, the very
+first thing you should check is to ensure that you have the most
+recent updates installed for your operating system.  Indeed, most of
+hwloc topology discovery relies on hardware information retrieved
+through the operation system (e.g., via the /sys virtual filesystem of
+the Linux kernel).  If upgrading your OS or Linux kernel does not
+solve your problem, you may also want to ensure that you are running
+the most recent version of the BIOS for your machine.
+
+If those things fail, contact us on the mailing list for additional
+help.  Please attach the output of lstopo after having given the
+--enable-debug option to ./configure and rebuilt completely, to get
+debugging output. Also attach the <tt>/proc</tt> + <tt>/sys</tt> tarball
+generated by the installed script <tt>hwloc-gather-topology.sh</tt>
+when submitting problems about Linux, or send the
+output of <tt>kstat cpu_info</tt> in the Solaris case, or the output of
+<tt>sysctl hw</tt> in the Darwin or BSD cases.
+
+\htmlonly
+</div><div class="section" id="credits">
+\endhtmlonly
+\section history History / Credits
+
+hwloc is the evolution and merger of the libtopology
+(http://runtime.bordeaux.inria.fr/libtopology/) project and the Portable
+Linux Processor Affinity (PLPA) (http://www.open-mpi.org/projects/plpa/)
+project. Because of functional and ideological overlap, these two code bases
+and ideas were merged and released under the name "hwloc" as an Open MPI
+sub-project.
+
+libtopology was initially developed by the inria Runtime Team-Project
+(http://runtime.bordeaux.inria.fr/) (headed by Raymond Namyst
+(http://dept-info.labri.fr/~namyst/). PLPA was initially developed by
+the Open MPI development team as a sub-project. Both are now deprecated
+in favor of hwloc, which is distributed as an Open MPI sub-project.
+
+\htmlonly
+</div><div class="section" id="further_reading">
+\endhtmlonly
+\section further_read Further Reading
+
+The documentation chapters include
+
+<ul>
+<li> \ref termsanddefs 
+<li> \ref tools
+<li> \ref envvar
+<li> \ref cpu_mem_bind
+<li> \ref iodevices
+<li> \ref multinode
+<li> \ref xml
+<li> \ref interoperability
+<li> \ref threadsafety
+<li> \ref embed
+<li> \ref faq
+</ul>
+
+Make sure to have had a look at those too!
+
+\htmlonly
+</div>
+\endhtmlonly
+
+
+
+\page termsanddefs Terms and Definitions 
+
+<dl>
+
+<dt>Object</dt>
+  <dd>Interesting kind of part of the system, such as a Core, a Cache,
+  a Memory node, etc. The different types detected by hwloc are
+  detailed in the ::hwloc_obj_type_t enumeration.
+  
+  They are topologically sorted by CPU set into a tree.
+  </dd>
+
+<dt>CPU set</dt>
+  <dd>The set of logical processors (or processing units) logically included in an object
+  (if it makes sense).  They are always expressed using physical logical
+  processor numbers (as announced by the OS).  They are implemented as the
+  ::hwloc_bitmap_t opaque structure.  hwloc CPU sets are just masks, they
+  do \em not have any relation with an operating system actual binding notion like
+  Linux' cpusets.</dd>
+
+<dt>Node set</dt>
+  <dd>The set of NUMA memory nodes logically included in an object
+  (if it makes sense).  They are always expressed using physical node
+  numbers (as announced by the OS).  They are implemented with the
+  ::hwloc_bitmap_t opaque structure.
+  as bitmaps.</dd>
+
+<dt>Bitmap</dt>
+  <dd>A possibly-infinite set of bits used for describing sets of objects
+  such as CPUs (CPU sets) or memory nodes (Node sets). They are implemented
+  with the ::hwloc_bitmap_t opaque structure.
+</dd>
+
+<dt>Parent object</dt>
+  <dd>The object logically containing the current object, for example
+  because its CPU set includes the CPU set of the current object.</dd>
+
+<dt>Ancestor object</dt>
+  <dd>The parent object, or its own parent object, and so on.</dd>
+
+<dt>Children object(s)</dt>
+  <dd>The object (or objects) contained in the current object because
+  their CPU set is included in the CPU set of the current object.</dd>
+
+<dt>Arity</dt>
+  <dd>The number of children of an object.</dd>
+
+<dt>Sibling objects</dt>
+  <dd>Objects which have the same parent. They usually have the same type
+  (and hence are cousins, as well), but they may not if the topology
+  is asymmetric.</dd>
+
+<dt>Sibling rank</dt>
+  <dd>Index to uniquely identify objects which have
+  the same parent, and is always in the range [0, parent_arity).</dd>
+
+<dt>Cousin objects</dt>
+  <dd>Objects of the same type (and depth) as the current object,
+  even if they do not have the same parent.</dd>
+
+<dt>Level</dt>
+  <dd>Set of objects of the same type and depth. All these objects
+  are cousins.</dd>
+
+<dt>Depth</dt>
+  <dd>Nesting level in the object tree, starting from the root object.
+  If the topology is symmetric, the depth of a child is equal to the
+  parent depth plus one, and an object depth is also equal to the number
+  of parent/child links between the root object and the given object.
+  If the topology is asymmetric, the difference between some parent
+  and child depths may be larger than one when some intermediate levels
+  (for instance caches) are missing in only some parts of the machine.
+  </dd>
+
+<dt>OS or physical index</dt>
+  <dd>The index that the operating system (OS) uses to identify the
+  object.  This may be completely arbitrary, non-unique, non-contiguous, not
+  representative of logical proximity, and may depend on the BIOS
+  configuration. That is why hwloc almost never uses them, only in the default
+  lstopo output (<tt>P#x</tt>) and cpuset masks.</dd>
+
+<dt>Logical index</dt>
+  <dd>Index to uniquely identify objects of the same type and depth,
+  automatically computed by hwloc according to the topology.  It expresses
+  logical proximity in a generic way, i.e. objects which have adjacent logical
+  indexes are adjacent in the topology. That is why hwloc almost always uses
+  it in its API, since it expresses logical proximity. They can be shown (as
+  <tt>L#x</tt>) by <tt>lstopo</tt> thanks to the <tt>-l</tt> option.  This index
+  is always linear and in
+  the range [0, num_objs_same_type_same_level-1].  Think of it as ``cousin
+  rank.'' The ordering is based on topology first, and then on OS CPU numbers,
+  so it is stable across everything except firmware CPU renumbering.
+  "Logical index" should not be confused with "Logical processor". A "Logical
+  processor" (which in hwloc we rather call "processing unit" to avoid the
+  confusion) has both a physical index (as chosen arbitrarily by BIOS/OS) and a logical
+  index (as computed according to logical proximity by hwloc).
+  </dd>
+
+<dt>Logical processor</dt>
+<dt>Processing unit</dt>
+  <dd>The smallest processing element that can be represented by a hwloc
+  object. It may be a single-core processor, a core of a multicore
+  processor, or a single thread in SMT processor.
+  "Logical processor" should not be confused with "Logical index of a
+  processor". "Logical processor" is only one of the names which can be found in
+  various documentations to designate a processing unit.
+  </dd>
+
+</dl>
+
+The following diagram can help to understand the vocabulary of the relationships
+by showing the example of a machine with two dual core sockets (with no
+hardware threads); thus, a topology with 4 levels. Each box with rounded corner
+corresponds to one hwloc_obj_t, containing the values of the different integer
+fields (depth, logical_index, etc.), and arrows show to which other hwloc_obj_t
+pointers point to (first_child, parent, etc.). The L2 cache of the last core is intentionally missing to show how asymmetric topologies are handled.
+
+\image html diagram.png
+\image latex diagram.eps width=\textwidth
+
+It should be noted that for PU objects, the logical index -- as
+computed linearly by hwloc -- is not the same as the OS index.
+
+See also \ref faq_asymmetric for more details.
+
+
+\page tools Command-Line Tools 
+
+hwloc comes with an extensive C programming interface and several
+command line utilities. Each of them is fully documented in its own
+manual page; the following is a summary of the available command line
+tools.
+
+\section cli_lstopo lstopo
+
+lstopo (also known as hwloc-info and hwloc-ls) displays the
+hierarchical topology map of the current system.  The output may be
+graphical or textual, and can also be exported to numerous file
+formats such as PDF, PNG, XML, and others.
+
+This command can also display the processes currently bound to a part
+of the machine (via the --ps option).
+
+Note that lstopo can read XML files and/or alternate chroot
+filesystems and display topological maps representing those systems
+(e.g., use lstopo to output an XML file on one system, and then use
+lstopo to read in that XML file and display it on a different system).
+
+\section cli_hwloc_bind hwloc-bind
+
+hwloc-bind binds processes to specific hardware objects through a
+flexible syntax.  A simple example is binding an executable to
+specific cores (or sockets or bitmaps or ...).  The hwloc-bind(1) man
+page provides much more detail on what is possible.
+
+hwloc-bind can also be used to retrieve the current process' binding.
+
+\section cli_hwloc_calc hwloc-calc
+
+hwloc-calc is generally used to create bitmap strings to pass to
+hwloc-bind.  Although hwloc-bind accepts many forms of object
+specification (i.e., bitmap strings are one of many forms that
+hwloc-bind understands), they can be useful, compact representations
+in shell scripts, for example.
+
+hwloc-calc generates bitmap strings from given hardware objects with
+the ability to aggregate them, intersect them, and more.  hwloc-calc
+generally uses the same syntax than hwloc-bind, but multiple instances
+may be composed to generate complex combinations.  
+
+Note that hwloc-calc can also generate lists of logical processors or
+NUMA nodes that are convenient to pass to some external tools such as
+taskset or numactl.
+
+\section cli_hwloc_distrib hwloc-distrib
+
+hwloc-distrib generates a set of bitmap strings that are uniformly
+distributed across the machine for the given number of processes.
+These strings may be used with hwloc-bind to run processes to maximize
+their memory bandwidth by properly distributing them across the
+machine.
+
+\section cli_hwloc_ps hwloc-ps
+
+hwloc-ps is a tool to display the bindings of processes that are
+currently running on the local machine.  By default, hwloc-ps only
+lists processes that are bound; unbound process (and Linux kernel
+threads) are not displayed.
+
+\section cli_hwloc_gather hwloc-gather-topology
+
+hwloc-gather-topology is a Linux-specific tool that saves the
+relevant topology files of the current machine into a tarball
+(and the corresponding lstopo output). These files may be used
+later (possibly offline) for simulating or debugging a machine
+without actually running on it.
+
+\section cli_hwloc_distances hwloc-distances
+
+hwloc-distances displays all distance matrices attached to
+the topology. Note that lstopo may also display distance
+matrices in its verbose textual output. However lstopo only
+prints matrices that cover the entire topology while
+hwloc-distances also displays matrices that ignore part
+of the topology.
+
+\section cli_hwloc_assembler hwloc-assembler
+
+hwloc-assembler combines several XML topology files into a single
+multi-node XML topology.
+It may then be used later as input with hwloc_topology_set_xml()
+or with the HWLOC_XMLFILE environment variable.
+See \ref multinode for details.
+
+\section cli_hwloc_assembler_remote hwloc-assembler-remote
+
+hwloc-assembler-remote is a frontend to hwloc-assembler.
+It takes care of contacting the given list of remote hosts
+(through ssh) and retrieving their topologies as XML before
+assembling them with hwloc-assembler.
+
+
+
+
+\page envvar Environment Variables
+
+The behavior of the hwloc library and tools may be tuned thanks to the
+following environment variables.
+
+<dl>
+
+<dt>HWLOC_XMLFILE=/path/to/file.xml</dt>
+  <dd>enforces the discovery from the given XML file as if
+  hwloc_topology_set_xml() had been called.
+  This file may have been generated earlier with lstopo file.xml.
+  For convenience, this backend provides empty binding hooks which just
+  return success.  To have hwloc still actually call OS-specific hooks,
+  HWLOC_THISSYSTEM should be set 1 in the environment too, to assert that
+  the loaded file is really the underlying system.
+  See also \ref xml.
+  </dd>
+
+<dt>HWLOC_XML_VERBOSE=1</dt>
+<dt>HWLOC_SYNTHETIC_VERBOSE=1</dt>
+  <dd>enable verbose messages in the XML or synthetic topology backends.
+  hwloc XML backends (see \ref xml) can emit some error messages to
+  the error output stream.
+  Enabling these verbose messages within hwloc can be useful for
+  understanding failures to parse input XML topologies.
+  Similarly, enabling verbose messages in the synthetic topology
+  backend can help understand why the description string is invalid.
+  </dd>
+
+<dt>HWLOC_FSROOT=/path/to/linux/filesystem-root/</dt>
+  <dd>switches to reading the topology from the specified
+  Linux filesystem root instead of the main file-system root, as if
+  hwloc_topology_set_fsroot() had been called.
+  Not using the main file-system root causes hwloc_topology_is_thissystem()
+  to return 0.
+  For convenience, this backend provides empty binding hooks which just
+  return success.  To have hwloc still actually call OS-specific hooks,
+  HWLOC_THISSYSTEM should be set 1 in the environment too, to assert that
+  the loaded file is really the underlying system.
+  </dd>
+
+<dt>HWLOC_THISSYSTEM=1</dt>
+  <dd>enforces the return value of hwloc_topology_is_thissystem().
+  It means that it makes hwloc assume that the selected backend provides the
+  topology for the system on which we are running, even if it is not the
+  OS-specific backend but the XML backend for instance.
+  This means making the binding functions actually call the OS-specific
+  system calls and really do binding, while the XML backend would otherwise
+  provide empty hooks just returning success.
+  This can be used for efficiency reasons to first detect the topology once,
+  save it to an XML file, and quickly reload it later through the XML
+  backend, but still having binding functions actually do bind.
+  </dd>
+
+<dt>HWLOC_HIDE_ERRORS=0</dt>
+  <dd>enables or disables verbose reporting of errors.
+  The hwloc library may issue warnings to the standard error stream
+  when it detects a problem during topology discovery, for instance
+  if the operating system (or user) gives contradictory topology
+  information.   Setting this environment variable to 1 removes the
+  actual displaying of these error messages.
+  </dd>
+
+<dt>HWLOC_GROUPING=1</dt>
+  <dd>enables or disables objects grouping based on distances.
+  By default, hwloc uses distance matrices between objects (either read
+  from the OS or given by the user) to find groups of close objects.
+  These groups are described by adding intermediate Group objects in the topology.
+  Setting this environment variable to 0 will disable this grouping.
+  This variable supersedes the obsolete HWLOC_IGNORE_DISTANCES variable.
+  </dd>
+
+<dt>HWLOC_GROUPING_ACCURACY=0.05</dt>
+  <dd>relaxes distance comparison during grouping.
+  By default, objects may be grouped if their distances form a minimal
+  distance graph. When setting this variable to 0.02, these distances
+  do not have to be strictly equal anymore, they may just be equal
+  with a 2% error.
+  If set to <tt>try</tt> instead of a numerical value, hwloc will try
+  to group with perfect accuracy (0, the default), then with 0.01, 0.02,
+  0.05 and finally 0.1.</dd>
+
+<dt>HWLOC_GROUPING_VERBOSE=0</dt>
+  <dd>enables or disables some verbose messages during grouping.
+  If this variable is set to 1, some debug messages will be displayed
+  during distance-based grouping of objects even if debug was not specific
+  at configure time.
+  This is useful when trying to find an interesting distance grouping
+  accuracy.</dd>
+
+<dt>HWLOC_&lt;type&gt;_DISTANCES=index,...:X*Y</dt>
+<dt>HWLOC_&lt;type&gt;_DISTANCES=begin-end:X*Y*Z</dt>
+<dt>HWLOC_&lt;type&gt;_DISTANCES=index,...:distance,...</dt>
+  <dd>sets a distance matrix for objects of the given type and physical indexes.
+  The type should be given as its case-sensitive stringified value
+  (e.g. <tt>NUMANode</tt>, <tt>Socket</tt>, <tt>Cache</tt>, <tt>Core</tt>, <tt>PU</tt>).
+  If another distance matrix already exists for the given type,
+  either because the user specified it or because the OS offers it,
+  it will be replaced by the given one.
+
+  If the variable value is <tt>none</tt>, the existing distance matrix for
+  the given type is removed.
+  Otherwise, the variable value first consists in a list of physical indexes
+  that may be specified as a comma-separated list (e.g. <tt>0,2,4,1,3,5</tt>)
+  or as a range of consecutive indexes (<tt>0-5</tt>).
+  It is followed by a colon and the corresponding distances:
+  <ul>
+  <li>If <tt>X*Y</tt> is given, X groups of Y close objects are specified.</li>
+  <li>If <tt>X*Y*Z</tt> is given, X groups of Y groups of Z close objects are specified.</li>
+  <li>Otherwise, the comma-separated list of distances should be given.
+  If N objects are considered, the i*N+j-th value gives the
+  distance from the i-th object to the j-th object.</li>
+  </ul>
+
+  Note that distances are ignored in multi-node topologies.
+  </dd>
+
+<dt>HWLOC_PCI_&lt;domain&gt;_&lt;bus&gt;_LOCALCPUS=&lt;cpuset&gt;</dt>
+  <dd>changes the locality of I/O devices behind the specified PCI hostbridge.
+  If no I/O locality information is available or if the BIOS reports
+  incorrect information, it is possible to move a I/O device tree (the
+  entire set of objects behind a host bridge) near a custom set of
+  processors.
+  <tt>domain</tt> and <tt>bus</tt> are the PCI domain and primary bus
+  of the corresponding host bridge.
+  </dd>
+
+</dl>
+
+<!-- not documented:
+ HWLOC_FORCE_FSROOT/XMLFILE/THISSYSTEM
+  force backend anyway (while variables without FORCE in their name do not
+  force the backend if the default was already changed)
+ HWLOC_LINUX_USE_CPUINFO
+  uses /proc/cpuinfo instead of sysfs.
+  may be useful in the doc for debugging?
+ HWLOC_DEBUG_CHECK
+  run sanity checks during discovery, as if --enable-debug was passed but
+  without debug messages
+  may be useful in the doc for debugging?
+ add a HWLOC_USE_x86_BACKEND?
+  to force testing of the x86 backend
+-->
+
+
+
+
+\page cpu_mem_bind CPU and Memory Binding Overview
+
+Some operating systems do not systematically provide separate
+functions for CPU and memory binding.  This means that CPU binding
+functions may have have effects on the memory binding policy.
+Likewise, changing the memory binding policy may change the CPU
+binding of the current thread.  This is often not a problem for
+applications, so by default hwloc will make use of these functions
+when they provide better binding support.
+
+If the application does not want the CPU binding to change when
+changing the memory policy, it needs to use the
+HWLOC_MEMBIND_NOCPUBIND flag to prevent hwloc from using OS functions
+which would change the CPU binding.  Additionally,
+HWLOC_CPUBIND_NOMEMBIND can be passed to CPU binding function to
+prevent hwloc from using OS functions would change the memory binding
+policy.  Of course, using these flags will reduce hwloc's overall support for
+binding, so their use is discouraged.
+
+One can avoid using these flags but still closely control both memory
+and CPU binding by allocating memory, touching each page in the
+allocated memory, and then changing the CPU binding.  The
+already-really-allocated memory will then be "locked" to physical
+memory and will not be migrated.  Thus, even if the memory binding
+policy gets changed by the CPU binding order, the already-allocated
+memory will not change with it.  When binding and allocating further
+memory, the CPU binding should be performed again in case the memory
+binding altered the previously-selected CPU binding.
+
+Not all operating systems support the notion of a "current" memory
+binding policy for the current process, but such operating systems often still
+provide a way to allocate data on a given node set.  Conversely, some
+operating systems support the notion of a "current" memory binding policy and do
+not permit allocating data on a specific node set without changing the
+current policy and allocate the data. To provide the most powerful coverage of
+these facilities, hwloc provides:
+
+<ul>
+<li>functions that set/get the current memory binding policies (if supported):
+hwloc_set/get_membind_*() and hwloc_set/get_proc_membind()
+<li>functions that allocate memory bound to specific node set without changing
+the current memory binding policy (if supported): hwloc_alloc_membind() and
+hwloc_alloc_membind_nodeset().
+<li>helpers which, if needed, change the current memory binding policy of the
+process in order to obtain memory binding: hwloc_alloc_membind_policy() and
+hwloc_alloc_membind_policy_nodeset()
+</ul>
+
+An application can thus use the two first sets of functions if it wants to
+manage separately the global process binding policy and directed allocation,
+or use the third set of functions if it does not care about the process memory
+binding policy.
+
+See \ref hwlocality_cpubinding and \ref hwlocality_membinding for
+hwloc's API functions regarding CPU and memory binding, respectively.
+
+
+
+\page iodevices I/O Devices
+
+hwloc usually manipulates processing units and memory but it can actually
+discover I/O devices and report their locality as well.
+This is useful for placing I/O intensive applications on cores near the
+I/O devices they use.
+
+\section iodevices_enabling Enabling and requirements
+
+I/O discovery is disabled by default (except in lstopo) so as not to
+break legacy application by adding unexpected I/O objects to the topology.
+It can be enabled by passing flags such as <tt>::HWLOC_TOPOLOGY_FLAG_IO_DEVICES</tt>
+to hwloc_topology_set_flags() before loading the topology.
+
+Note that I/O discovery requires significant help from the operating system.
+The pciutils library is needed to detect PCI devices and bridges,
+and the actual locality of these devices is only currently detected
+on Linux. Also, some operating systems require privileges for probing PCI
+devices, see \ref faq_privileged for details.
+
+\section iodevices_hierarchy I/O object hierarchy
+
+When I/O discovery is enabled and supported, some additional objects
+(types <tt>::HWLOC_OBJ_BRIDGE</tt>, <tt>::HWLOC_OBJ_PCI_DEVICE</tt> and
+<tt>::HWLOC_OBJ_OS_DEVICE</tt>)
+are added to the topology as a child of the object they are close to.
+For instance, if a I/O Hub is connected to a socket, the corresponding
+hwloc bridge object (and its PCI bridges and devices children) is inserted
+as a child of the corresponding hwloc socket object.
+
+These new objects have neither CPU sets nor node sets (NULL pointers) because
+they are not directly usable by the user applications.
+Moreover I/O hierarchies may be highly complex (asymmetric trees of bridges).
+So I/O objects are placed in specific levels with custom depths.
+Their lists may still be traversed with regular helpers such as
+hwloc_get_next_obj_by_type().
+However, hwloc offers some dedicated helpers such as hwloc_get_next_pcidev()
+and hwloc_get_next_osdev() for convenience (see \ref hwlocality_advanced_io).
+
+An I/O hierarchy is organized as follows:
+A hostbridge object ( <tt>::HWLOC_OBJ_BRIDGE</tt> object with upstream
+type <em>Host</em> and downstream type <em>PCI</em>) is attached below
+a regular object (usually the entire machine or a NUMA node).
+There may be multiple hostbridges in the machine, attached to
+different places, but all I/O devices are below one of them.
+Each hostbridge contains one or several children, either other bridges
+(usually PCI to PCI) or PCI devices (<tt>::HWLOC_OBJ_PCI_DEVICE</tt>).
+The number of bridges between the hostbridge and a PCI device depends
+on the machine and on the topology flags.
+
+\section iodevices_osdev Software devices
+
+Although each PCI device is uniquely identified by its bus ID
+(e.g. 0000:01:02.3), the application can hardly find out which
+PCI device is actually used when manipulating software handle
+(such as the <em>eth0</em> network interface or the <em>mlx4_0</em>
+OpenFabrics HCA).
+Therefore hwloc tries to add software devices (<tt>::HWLOC_OBJ_OS_DEVICE</tt>)
+below their PCI objects.
+These objects can be identified by their usual operating system-wide
+names, e.g. <em>eth0</em> or <em>mlx4_0</em>.
+However, this ability is currently only available on Linux for some
+classes of devices.
+It should especially be noted that proprietary graphics driver
+currently do not create any interesting software device for GPUs,
+they should therefore be manipulated as PCI device objects.
+On the contrary some PCI devices may contain multiple software device
+(see the example below).
+
+See also \ref interoperability for managing these devices without
+considering them as hwloc objects.
+
+\section iodevices_consult Consulting I/O devices and binding
+
+I/O devices may be consulted by traversing the topology manually
+(with usual routines such as hwloc_get_obj_by_type()) or by using
+dedicated helpers (such as hwloc_get_pcidev_by_busid(), see
+\ref hwlocality_advanced_io).
+
+I/O objects do not actually contain any locality information because
+their CPU sets and node sets are NULL.
+Their locality must be retrieved by walking up the object tree
+(through the <tt>parent</tt> link) until an non-I/O object is found
+(see hwloc_get_non_io_ancestor_obj()).
+This regular object should have non-NULL CPU sets and node sets
+which describe the processing units and memory that are immediately
+close to the I/O device.
+For instance the path from a OS device to its locality may go
+across a PCI device parent, one or several bridges, up to a
+a NUMA node with the same locality.
+
+Command-line tools are also aware of I/O devices.
+lstopo displays the interesting ones by default
+(passing <tt>--no-io</tt> disables it).
+
+hwloc-calc and hwloc-bind may manipulate I/O devices specified
+by PCI bus ID or by OS device name.
+For instance, <tt>pci=0000:02:03.0</tt> (respectively <tt>os=eth0</tt>)
+is replaced by the set of CPUs that are close to this PCI device
+(respectively software device).
+This enables easy binding of I/O-intensive applications near the
+device they use.
+
+\section iodevices_examples Examples
+
+The following picture shows a dual-socket dual-core host whose
+PCI bus is connected to the first socket and NUMA node.
+
+\image html devel09-pci.png
+\image latex devel09-pci.pdf "" width=\textwidth
+
+Six interesting PCI devices were discovered.
+However hwloc found some corresponding software devices
+(<em>eth0</em>, <em>eth1</em>, <em>sda</em>, <em>mlx4_0</em>,
+<em>ib0</em>, and <em>ib1</em>) for only four of these physical
+devices.
+The other ones (<em>PCI 102b:0532</em> and <em>PCI 8086:3a20</em>)
+are an unused IDE controller (no disk attached)
+and a graphic card (no corresponding software device reported
+to the user by the operating system).
+
+On the contrary, it should be noted three different software
+devices were found for the last PCI device (<em>PCI 15b3:634a</em>).
+Indeed this OpenFabrics HCA PCI device object contains one
+one OpenFabrics software device (<em>mlx4_0</em>) and two virtual
+network interface software devices (<em>ib0</em> and <em>ib1</em>).
+
+PCI link speed is also reported for some bridges and devices
+because lstopo was privileged when it discovered the topology.
+
+
+Here is the corresponding textual output:
+
+\verbatim
+Machine (24GB)
+  NUMANode L#0 (P#0 12GB)
+    Socket L#0 + L3 L#0 (8192KB)
+      L2 L#0 (256KB) + L1 L#0 (32KB) + Core L#0 + PU L#0 (P#0)
+      L2 L#1 (256KB) + L1 L#1 (32KB) + Core L#1 + PU L#1 (P#2)
+    HostBridge
+      PCIBridge
+        PCI 14e4:163b
+          Net "eth0"
+        PCI 14e4:163b
+          Net "eth1"
+      PCIBridge
+        PCI 1000:0060
+          Block "sda"
+      PCIBridge
+        PCI 102b:0532
+      PCI 8086:3a20
+      PCI 15b3:634a
+        Net "ib0"
+        Net "ib1"
+        Net "mlx4_0"
+  NUMANode L#1 (P#1 12GB) + Socket L#1 + L3 L#1 (8192KB)
+    L2 L#2 (256KB) + L1 L#2 (32KB) + Core L#2 + PU L#2 (P#1)
+    L2 L#3 (256KB) + L1 L#3 (32KB) + Core L#3 + PU L#3 (P#3)
+\endverbatim
+
+
+
+
+\page multinode Multi-node Topologies
+
+hwloc is usually used for consulting and manipulating single machine
+topologies. This includes large systems as long as a single instance of
+the operating system manages the entire system. However it is sometimes
+desirable to have multiple independent hosts inside the same topology,
+for instance when applying algorithms to an entire cluster topology.
+hwloc therefore offers the ability to agregate multiple host topologies
+into a single global one.
+
+\section multinode_cpusets Multi-node Objects Specifities
+
+A multi-node topology contains several single-node topologies.
+Those are assembled by making their own root objects (usually
+Machine object) children of higher objects.
+These higher objects include at least the root of the global
+topology (usually a System object).
+Some intermediate objects may also exists, for instance to
+represent switches in a large fabric.
+
+There are actually three possible types of objects that have different
+properties with respect to cpusets, nodesets and binding.
+Indeed those cpusets and nodesets were designed for execution and memory
+binding within a single operating system. Binding on another system or
+across several different systems would be meaningless.
+
+<dl>
+<dt>Local objects</dt>
+<dd>
+ Any object that corresponds to the local machine may be manipulated
+ as usual.
+ Obviously, if the multi-node topology does not contain the local
+ machine topology, no such local object exists.
+</dd>
+<dt>Objects from other nodes</dt>
+<dd>
+ Any object that comes from inside another node is represented as
+ usual but its cpusets and nodesets should not be used for binding
+ since binding on another system makes no sense.
+</dd>
+<dt>Objects above single nodes</dt>
+<dd>
+ Any object above single-node topologies does not have any cpuset or
+ nodeset pointer because binding across multiple systems makes no sense.
+ This includes the glocal root object of a multi-node topology and possibly
+ some intermediate objects between this global root and the local root
+ of single-node topologies.
+</dd>
+</dl>
+
+It is important to keep this in mind before binding using multi-node
+topologies.
+To make sure binding on an object is possible, one should first check
+that its cpuset or nodeset pointer is not NULL.
+Then, one should check whether the object is indeed local.
+
+To find out which machine a given object correspond too, one may look
+at the info attributes of the parent Machine object. The <tt>HostName</tt>
+info is usually available in Machine objects, it may be retrieved with the
+following code:
+<pre>
+  hwloc_obj_t machine_obj;
+  obj = hwloc_get_ancestor_obj_by_type(topology, HWLOC_OBJ_MACHINE, obj);
+  if (machine_obj)
+    return hwloc_obj_get_info_by_name(machine_obj, "HostName");
+  else
+    return NULL;
+</pre>
+The hwloc assembler scripts (see below) also add <tt>AssemblerName</tt>
+and <tt>AssemblerIndex</tt> info attributes to the Machine objects to
+identify the corresponding host name and index during assembly.
+
+\section multinode_tools Assembling topologies with command-line tools
+
+One way to manipulate multinode topologies is to retrieve
+other nodes' topologies as XML files and combine them as a
+global XML topology.
+It may then be loaded with hwloc_topology_set_xml() or with
+the HWLOC_XMLFILE environment variable.
+
+The hwloc-assembler and hwloc-assembler-remote utilities
+offer the ability to combine XML topologies or remote
+nodes' topologies (see \ref tools).
+
+\section multinode_interface Assembling topologies with the programming interface
+
+The hwloc programming interface offers the ability to build multinode
+topologies using the <em>custom</em> interface.
+A new multinode topology has to be initialized with hwloc_topology_init()
+and then set to custom with hwloc_topology_set_custom().
+Topologies and objects mat then be assembled.
+Later, the custom topology is finalized as usual with hwloc_topology_load().
+
+A custom topology starts with a single root object of type System.
+It may be modified by inserting a new child object with
+hwloc_custom_insert_group_object_by_parent() or by duplicating
+another topology with hwloc_custom_insert_topology().
+Both of these operations require to specify the parent object
+in the custom topology where the insertion will take place.
+This parent may be either the root
+(returned by hwloc_get_root_obj())
+or an already-inserted object
+(returned by hwloc_custom_insert_group_object_by_parent()).
+
+Ideally, any existing object in the custom topology could be the parent.
+However, special care should be taken when traversing the topology
+to find such an object because most links between objects
+(children, siblings, cousins) are not setup until hwloc_topology_load()
+is invoked.
+
+\section multinode_example Example of assembly with the programming interface
+
+If the topologies of two hosts have been previously gathered in XML
+files <tt>host1.xml</tt> and <tt>host2.xml</tt>, the global topology
+may be assembled with the following code.
+
+<pre>
+hwloc_topology_t host1, host2, global;
+
+/* initialize global topology */
+hwloc_topology_init(&global);
+hwloc_topology_set_custom(global);
+
+/* insert host1 entire topology below the global topology root */
+hwloc_topology_init(&host1);
+hwloc_topology_load(host1);
+hwloc_custom_insert_topology(global, hwloc_get_root_obj(global),
+                             host1, NULL);
+hwloc_topology_destroy(host1);
+
+/* insert host2 entire topology below the global topology root */
+hwloc_topology_init(&host2);
+hwloc_topology_load(host2);
+hwloc_custom_insert_topology(global, hwloc_get_root_obj(global),
+                             host2, NULL);
+hwloc_topology_destroy(host2);
+
+/* load and play with the global topology */
+hwloc_topology_load(global);
+...
+</pre>
+
+If a intermediate object such as a switch should be inserted
+above one of the host topologies:
+<pre>
+...
+/* insert a switch object below the global topology root */
+hwloc_obj_t sw =
+   hwloc_custom_insert_group_object_by_parent(global,
+                              hwloc_get_root_obj(global), 0);
+
+/* insert host2 entire topology below the switch */
+hwloc_topology_init(&host2);
+hwloc_topology_load(host2);
+hwloc_custom_insert_topology(global, switch, host2, NULL);
+hwloc_topology_destroy(host2);
+
+/* load and play with the global topology */
+hwloc_topology_load(global);
+...
+</pre>
+
+
+
+
+\page xml Importing and exporting topologies from/to XML files
+
+hwloc offers the ability to export topologies to XML files and reload
+them later. This is for instance useful for loading topologies faster
+(see \ref faq_xml), manipulating other nodes' topology, or avoiding
+the need for privileged processes (see \ref faq_privileged).
+
+Topologies may be exported to XML files thanks to hwloc_topology_export_xml(),
+or to a XML memory buffer with hwloc_topology_export_xmlbuffer().
+The lstopo program can also serve as a XML topology export tool.
+
+XML topologies may then be reloaded later with hwloc_topology_set_xml()
+and hwloc_topology_set_xmlbuffer().
+The XMLFILE environment variable also tells hwloc to load the topology
+from the given XML file.
+
+\section xml_backends libxml2 and minimalistic XML backends
+
+hwloc offers two backends for importing/exporting XML.
+
+First, it can use the libxml2 library for importing/exporting XML
+files. It features full XML support, for instance when those files
+have to be manipulated by non-hwloc software (e.g. a XSLT parser).
+The libxml2 backend is enabled by default if libxml2 development
+headers are available.
+
+If libxml2 is not available at configure time,
+or if <tt>--disable-libxml2</tt> is passed, hwloc falls back to a
+custom backend.
+Contrary to the aforementioned full XML backend with libxml2, this
+minimalistic XML backend cannot be guaranteed to work with external
+programs.
+It should only be assumed to be compatible with the same hwloc
+release (even if using the libxml2 backend).
+Its advantage is however to always be available without requiring
+any external dependency.
+
+\section xml_errors XML import error management
+
+Importing XML files can fail at least because of file access errors,
+invalid XML syntax or non-hwloc-valid XML contents.
+
+Both backend cannot detect all these errors when the input XML
+file or buffer is selected (when hwloc_topology_set_xml() or
+hwloc_topology_set_xmlbuffer() is called).
+Some errors such non-hwloc-valid contents can only be detected
+later when loading the topology with hwloc_topology_load().
+
+It is therefore strongly recommended to check the return value of
+both hwloc_topology_set_xml() (or hwloc_topology_set_xmlbuffer())
+and hwloc_topology_load() to handle all these errors.
+
+
+
+
+\page interoperability Interoperability With Other Software
+
+Although hwloc offers its own portable interface, it still may have to
+interoperate with specific or non-portable libraries that manipulate
+similar kinds of objects.  hwloc therefore offers several specific
+"helpers" to assist converting between those specific interfaces and
+hwloc.
+
+Some external libraries may be specific to a particular OS; others may
+not always be available.  The hwloc core therefore generally does not
+explicitly depend on these types of libraries.  However, when a custom
+application uses or otherwise depends on such a library, it may
+optionally include the corresponding hwloc helper to extend the hwloc
+interface with dedicated helpers.
+
+<dl>
+
+<dt>Linux specific features</dt>
+ <dd>
+  hwloc/linux.h offers Linux-specific helpers that utilize some
+  non-portable features of the Linux system, such as binding threads
+  through their thread ID ("tid") or parsing kernel CPU mask files.
+ </dd>
+
+<dt>Linux libnuma</dt>
+ <dd>
+  hwloc/linux-libnuma.h provides conversion helpers between hwloc CPU
+  sets and libnuma-specific types, such as nodemasks and bitmasks.  It
+  helps you use libnuma memory-binding functions with hwloc CPU sets.
+ </dd>
+
+<dt>Glibc</dt>
+ <dd>
+  hwloc/glibc-sched.h offers conversion routines between Glibc and
+  hwloc CPU sets in order to use hwloc with functions such as
+  sched_setaffinity().
+ </dd>
+
+<dt>OpenFabrics Verbs</dt>
+ <dd>
+  hwloc/openfabrics-verbs.h helps interoperability with the
+  OpenFabrics Verbs interface.  For example, it can return a list of
+  processors near an OpenFabrics device.
+  Note that if I/O device discovery is enabled, such devices may also
+  appear as PCI objects and as OS objects in the topology.
+ </dd>
+
+<dt>Myrinet Express</dt>
+ <dd>
+  hwloc/myriexpress.h offers interoperability with the Myrinet
+  Express interface.  It can return the list of processors near
+  a Myrinet board managed by the MX driver.
+  Note that if I/O device discovery is enabled, such boards may also
+  appear as PCI objects in the topology.
+ </dd>
+
+<dt>NVIDIA CUDA</dt>
+ <dd>
+  hwloc/cuda.h and hwloc/cudart.h enable interoperability with
+  NVIDIA CUDA Driver and Runtime interfaces. For instance, it may
+  return the list of processors near NVIDIA GPUs.
+  Note that if I/O device discovery is enabled, GPUs may also
+  appear as PCI objects in the topology.
+ </dd>
+
+<dt>Taskset command-line tool</dt>
+ <dd>
+  The taskset command-line tool is widely used for binding
+  processes. It manipulates CPU set strings in a format that
+  is slightly different from hwloc's one (it does not divide the
+  string in fixed-size subsets and separates them with commas).
+  To ease interoperability, hwloc offers routines to convert
+  hwloc CPU sets from/to taskset-specific string format.
+  Most hwloc command-line tools also support the --taskset
+  option to manipulate taskset-specific strings.
+ </dd>
+
+</dl>
+
+
+
+\page threadsafety Thread Safety
+
+Like most libraries that mainly fill data structures, hwloc is not
+thread safe but rather reentrant: all state is held in a \ref
+hwloc_topology_t instance without mutex protection.  That means, for
+example, that two threads can safely operate on and modify two
+different \ref hwloc_topology_t instances, but they should not
+simultaneously invoke functions that modify the <em>same</em>
+instance.  Similarly, one thread should not modify a \ref
+hwloc_topology_t instance while another thread is reading or
+traversing it.  However, two threads can safely read or traverse the
+same \ref hwloc_topology_t instance concurrently.
+
+When running in multiprocessor environments, be aware that proper thread
+synchronization and/or memory coherency protection is needed to pass hwloc
+data (such as \ref hwloc_topology_t pointers) from one processor
+to another (e.g., a mutex, semaphore, or a memory barrier).
+Note that this is not a hwloc-specific requirement, but it is worth
+mentioning.
+
+For reference, \ref hwloc_topology_t modification operations include
+(but may not be limited to):
+
+<dl>
+
+<dt>Creation and destruction</dt>
+  <dd><tt>hwloc_topology_init(), hwloc_topology_load(),
+  hwloc_topology_destroy()</tt> (see \ref hwlocality_creation) imply
+  major modifications of the structure, including freeing some
+  objects.  No other thread cannot access the topology or any of its
+  objects at the same time.
+
+  Also references to objects inside the topology are not valid anymore
+  after these functions return.  </dd>
+
+<dt>Runtime topology modifications</dt>
+  <dd><tt>hwloc_topology_insert_misc_object_by_*</tt> (see \ref
+  hwlocality_tinker) may modify the topology significantly by adding
+  objects inside the tree, changing the topology depth, etc.
+  <tt>hwloc_topology_restrict</tt> modifies the topology even more
+  dramatically by removing some objects.
+
+  Although references to former objects <em>may</em> still be valid
+  after insertion or restriction, it is strongly advised to not rely on any such
+  guarantee and always re-consult the topology to reacquire new
+  instances of objects.  </dd>
+
+<dt>Locating topologies</dt>
+
+  <dd><tt>hwloc_topology_ignore*</tt>, <tt>hwloc_topology_set*</tt>
+  (see \ref hwlocality_configuration) do not modify the topology
+  directly, but they do modify internal structures describing the
+  behavior of the next invocation of <tt>hwloc_topology_load()</tt>.
+  Hence, all of these functions should not be used concurrently.
+
+  Note that these functions do not modify the current topology until
+  it is actually reloaded; it is possible to use them while other
+  threads are only read the current topology.  </dd>
+
+</dl>
+
+
+
+\page embed Embedding hwloc in Other Software
+
+It can be desirable to include hwloc in a larger software package (be
+sure to check out the LICENSE file) so that users don't have to
+separately download and install it before installing your software.
+This can be advantageous to ensure that your software uses a
+known-tested/good version of hwloc, or for use on systems that do not
+have hwloc pre-installed.
+
+When used in "embedded" mode, hwloc will:
+
+- not install any header files
+- not build any documentation files
+- not build or install any executables or tests
+- not build <tt>libhwloc.*</tt> -- instead, it will build
+  <tt>libhwloc_embedded.*</tt>
+
+There are two ways to put hwloc into "embedded" mode.  The first is
+directly from the configure command line:
+
+\verbatim
+shell$ ./configure --enable-embedded-mode ...
+\endverbatim
+
+The second requires that your software project uses the GNU Autoconf /
+Automake / Libtool tool chain to build your software.  If you do this,
+you can directly integrate hwloc's m4 configure macro into your
+configure script.  You can then invoke hwloc's configuration tests and
+build setup by calling an m4 macro (see below).
+
+\section embedding_m4 Using hwloc's M4 Embedding Capabilities
+
+Every project is different, and there are many different ways of
+integrating hwloc into yours.  What follows is <em>one</em> example of
+how to do it.
+
+If your project uses recent versions Autoconf, Automake, and Libtool
+to build, you can use hwloc's embedded m4 capabilities.  We have
+tested the embedded m4 with projects that use Autoconf 2.65, Automake
+1.11.1, and Libtool 2.2.6b.  Slightly earlier versions of may also
+work but are untested.  Autoconf versions prior to 2.65 are almost
+certain to not work.
+
+You can either copy all the config/hwloc*m4 files from the hwloc
+source tree to the directory where your project's m4 files reside, or
+you can tell aclocal to find more m4 files in the embedded hwloc's
+"config" subdirectory (e.g., add "-Ipath/to/embedded/hwloc/config" to
+your Makefile.am's ACLOCAL_AMFLAGS).
+
+The following macros can then be used from your configure script (only
+HWLOC_SETUP_CORE <em>must</em> be invoked if using the m4 macros):
+
+- HWLOC_SETUP_CORE(config-dir-prefix, action-upon-success,
+  action-upon-failure, print_banner_or_not): Invoke the hwloc
+  configuration tests and setup the hwloc tree to build.  The first
+  argument is the prefix to use for AC_OUTPUT files -- it's where the
+  hwloc tree is located relative to <tt>$top_srcdir</tt>.  Hence, if
+  your embedded hwloc is located in the source tree at contrib/hwloc,
+  you should pass <tt>[contrib/hwloc]</tt> as the first argument.  If
+  HWLOC_SETUP_CORE and the rest of <tt>configure</tt> completes
+  successfully, then "make" traversals of the hwloc tree with standard
+  Automake targets (all, clean, install, etc.) should behave as
+  expected.  For example, it is safe to list the hwloc directory in
+  the SUBDIRS of a higher-level Makefile.am.  The last argument, if
+  not empty, will cause the macro to display an announcement banner
+  that it is starting the hwloc core configuration tests.
+
+  HWLOC_SETUP_CORE will set the following environment variables and
+  AC_SUBST them: HWLOC_EMBEDDED_CFLAGS, HWLOC_EMBEDDED_CPPFLAGS, and
+  HWLOC_EMBEDDED_LIBS.  These flags are filled with the values
+  discovered in the hwloc-specific m4 tests, and can be used in your
+  build process as relevant.  The _CFLAGS, _CPPFLAGS, and _LIBS
+  variables are necessary to build libhwloc (or libhwloc_embedded)
+  itself.  
+
+  HWLOC_SETUP_CORE also sets HWLOC_EMBEDDED_LDADD environment variable
+  (and AC_SUBSTs it) to contain the location of the
+  libhwloc_embedded.la convenience Libtool archive.  It can be used in
+  your build process to link an application or other library against
+  the embedded hwloc library.
+
+  <strong>NOTE: If the HWLOC_SET_SYMBOL_PREFIX macro is used, it must
+  be invoked <em>before</em> HWLOC_SETUP_CORE.</strong>
+
+- HWLOC_BUILD_STANDALONE: HWLOC_SETUP_CORE defaults to building hwloc
+  in an "embedded" mode (described above).  If HWLOC_BUILD_STANDALONE
+  is invoked *before* HWLOC_SETUP_CORE, the embedded definitions will
+  not apply (e.g., libhwloc.la will be built, not
+  libhwloc_embedded.la).
+
+- HWLOC_SET_SYMBOL_PREFIX(foo_): Tells the hwloc to prefix all of
+  hwloc's types and public symbols with "foo_"; meaning that function
+  hwloc_init() becomes foo_hwloc_init().  Enum values are prefixed
+  with an upper-case translation if the prefix supplied;
+  HWLOC_OBJ_SYSTEM becomes FOO_HWLOC_OBJ_SYSTEM.  This is recommended
+  behavior if you are including hwloc in middleware -- it is possible
+  that your software will be combined with other software that links
+  to another copy of hwloc.  If both uses of hwloc utilize different
+  symbol prefixes, there will be no type/symbol clashes, and
+  everything will compile, link, and run successfully.  If you both
+  embed hwloc without changing the symbol prefix and also link against
+  an external hwloc, you may get multiple symbol definitions when
+  linking your final library or application.
+
+- HWLOC_SETUP_DOCS, HWLOC_SETUP_UTILS, HWLOC_SETUP_TESTS: These three
+  macros only apply when hwloc is built in "standalone" mode (i.e.,
+  they should NOT be invoked unless HWLOC_BUILD_STANDALONE has already
+  been invoked).
+
+- HWLOC_DO_AM_CONDITIONALS: If you embed hwloc in a larger project and
+  build it conditionally with Automake (e.g., if HWLOC_SETUP_CORE is
+  invoked conditionally), you must unconditionally invoke
+  HWLOC_DO_AM_CONDITIONALS to avoid warnings from Automake (for the
+  cases where hwloc is not selected to be built).  This macro is
+  necessary because hwloc uses some AM_CONDITIONALs to build itself,
+  and AM_CONDITIONALs cannot be defined conditionally.  Note that it
+  is safe (but unnecessary) to call HWLOC_DO_AM_CONDITIONALS even if
+  HWLOC_SETUP_CORE is invoked unconditionally.  If you are not using
+  Automake to build hwloc, this macro is unnecessary (and will actually
+  cause errors because it invoked AM_* macros that will be undefined).
+
+<strong>NOTE:</strong> When using the HWLOC_SETUP_CORE m4 macro, it may
+be necessary to explicitly invoke AC_CANONICAL_TARGET (which requires
+config.sub and config.guess) and/or AC_USE_SYSTEM_EXTENSIONS macros
+early in the configure script (e.g., after AC_INIT but before
+AM_INIT_AUTOMAKE).  See the Autoconf documentation for further
+information.
+
+Also note that hwloc's top-level configure.ac script uses exactly the
+macros described above to build hwloc in a standalone mode (by
+default).  You may want to examine it for one example of how these
+macros are used.
+
+
+\section embedding_example Example Embedding hwloc
+
+Here's an example of integrating with a larger project named sandbox
+that already uses Autoconf, Automake, and Libtool to build itself:
+
+\verbatim
+# First, cd into the sandbox project source tree
+shell$ cd sandbox
+shell$ cp -r /somewhere/else/hwloc-<version> my-embedded-hwloc
+shell$ edit Makefile.am
+  1. Add "-Imy-embedded-hwloc/config" to ACLOCAL_AMFLAGS
+  2. Add "my-embedded-hwloc" to SUBDIRS
+  3. Add "$(HWLOC_EMBEDDED_LDADD)" and "$(HWLOC_EMBEDDED_LIBS)" to 
+     sandbox's executable's LDADD line.  The former is the name of the 
+     Libtool convenience library that hwloc will generate.  The latter 
+     is any dependent support libraries that may be needed by 
+     $(HWLOC_EMBEDDED_LDADD).
+  4. Add "$(HWLOC_EMBEDDED_CFLAGS)" to AM_CFLAGS
+  5. Add "$(HWLOC_EMBEDDED_CPPFLAGS)" to AM_CPPFLAGS
+shell$ edit configure.ac
+  1. Add "HWLOC_SET_SYMBOL_PREFIX(sandbox_hwloc_)" line
+  2. Add "HWLOC_SETUP_CORE([my-embedded-hwloc], [happy=yes], [happy=no])" line
+  3. Add error checking for happy=no case
+shell$ edit sandbox.c
+  1. Add #include <hwloc.h>
+  2. Add calls to sandbox_hwloc_init() and other hwloc API functions
+\endverbatim
+
+Now you can bootstrap, configure, build, and run the sandbox as normal
+-- all calls to "sandbox_hwloc_*" will use the embedded hwloc rather
+than any system-provided copy of hwloc.
+
+
+
+\page faq Frequently Asked Questions
+
+\section faq_xml I do not want hwloc to rediscover my enormous machine topology every time I rerun a process
+
+Although the topology discovery is not expensive on common machines,
+its overhead may become significant when multiple processes repeat
+the discovery on large machines (for instance when starting one process
+per core in a parallel application).
+The machine topology usually does not vary much, except if some cores
+are stopped/restarted or if the administrator restrictions are modified.
+Thus rediscovering the whole topology again and again may look useless.
+
+For this purpose, hwloc offers XML import/export features. It lets you
+save the discovered topology to a file (for instance with the lstopo program)
+and reload it later by setting the HWLOC_XMLFILE environment variable.
+Loading a XML topology is usually much faster than querying multiple
+files or calling multiple functions of the operating system.
+It is also possible to manipulate such XML files with the C programming
+interface, and the import/export may also be directed to memory buffer
+(that may for instance be transmitted between applications through a socket).
+See also \ref xml.
+
+
+\section faq_privileged Does hwloc require privileged access?
+
+hwloc discovers the topology by querying the operating system.
+Some minor features may require privileged access to the operation
+system.
+For instance PCI link speed discovery on Linux is reserved to root,
+and the entire PCI discovery on FreeBSD requires access to the
+/dev/pci special file.
+
+To workaround this limitation, it is recommended to export the
+topology as a XML file generated by the administrator (with the
+lstopo program) and make it available to all users
+(see \ref xml).
+It will offer all discovery information to any application without
+requiring any privileged access anymore.
+Only the necessary hardware characteristics will be exported, no
+sensitive information will be disclosed through this XML export.
+
+This XML-based model also has the advantage of speeding up the
+discovery because reading a XML topology is usually much faster
+than querying the operating system again.
+
+
+\section faq_onedim hwloc only has a one-dimensional view of the architecture, it ignores distances
+
+hwloc places all objects in a tree. Each level is a one-dimensional
+view of a set of similar objects. All children of the same object (siblings)
+are assumed to be equally interconnected (same distance between any of them),
+while the distance between children of different objects (cousins) is supposed
+to be larger.
+
+Modern machines exhibit complex hardware interconnects, so this tree
+may miss some information about the actual physical distances between objects.
+The hwloc topology may therefore be annotated with distance information that
+may be used to build a more realistic representation (multi-dimensional)
+of each level.
+For instance, the root object may contain a distance matrix that represents
+the latencies between any pairs of NUMA nodes if the BIOS and/or operating
+system reports them.
+
+
+\section faq_smt How may I ignore symmetric multithreading, hyper-threading, ... ?
+
+hwloc creates one PU (processing unit) object per hardware thread.
+If your machine supports symmetric multithreading, for instance Hyper-Threading,
+each Core object may contain multiple PU objects.
+\verbatim
+$ lstopo -
+...
+  Core L#1
+    PU L#2 (P#1)
+    PU L#3 (P#3)
+\endverbatim
+
+If you need to ignore symmetric multithreading, you should likely manipulate
+hwloc Core objects directly:
+\verbatim
+/* get the number of cores */
+unsigned nbcores = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_CORE);
+...
+/* get the third core below the first socket */
+hwloc_obj_t socket, core;
+socket = hwloc_get_obj_by_type(topology, HWLOC_OBJ_SOCKET, 0);
+core = hwloc_get_obj_inside_cpuset_by_type(topology, socket->cpuset,
+                                           HWLOC_OBJ_CORE, 2);
+\endverbatim
+
+Whenever you want to bind a process or thread to a core, make sure you
+singlify its cpuset first, so that the task is actually bound to a single
+thread within this core (to avoid useless migrations).
+\verbatim
+/* bind on the second core */
+hwloc_obj_t core = hwloc_get_obj_by_type(topology, HWLOC_OBJ_CORE, 1);
+hwloc_cpuset_t set = hwloc_bitmap_dup(core->cpuset);
+hwloc_bitmap_singlify(set);
+hwloc_set_cpubind(topology, set, 0);
+hwloc_bitmap_free(set);
+\endverbatim
+
+With hwloc-calc or hwloc-bind command-line tools, you may specify that
+you only want a single-thread within each core by asking for their first
+PU object:
+\verbatim
+$ hwloc-calc core:4-7
+0x0000ff00
+$ hwloc-calc core:4-7.pu:0
+0x00005500
+\endverbatim
+
+When binding a process on the command-line, you may either specify
+the exact thread that you want to use, or ask hwloc-bind to singlify
+the cpuset before binding
+\verbatim
+$ hwloc-bind core:3.pu:0 -- echo "hello from first thread on core #3"
+hello from first thread on core #3
+...
+$ hwloc-bind core:3 --single -- echo "hello from a single thread on core #3"
+hello from a single thread on core #3
+\endverbatim
+
+
+\section faq_asymmetric What happens if my topology is asymmetric?
+
+hwloc supports asymmetric topologies even if most platforms are usually
+symmetric. For example, there may be different types of processors
+in a single machine, each with different numbers of cores, symmetric
+multithreading, or levels of caches.
+
+To understand how hwloc manages such cases, one should first remember
+the meaning of levels and cousin objects. All objects of the same type
+are gathered as horizontal levels with a given depth. They are also
+connected through the cousin pointers of the hwloc_obj structure.
+Some types, such as Caches or Groups, are usually annotated with a
+depth or level attribute (for instance L2 cache). In this case, this
+attribute is also taken in account when gathering objects as
+horizontal levels.  To be clear: there will be one level for L1
+caches, another level for L2 caches, etc.
+
+If the topology is asymmetric (e.g., if a cache is missing in one of
+the processors), a given horizontal level will still exist if there
+exist any objects of that type.  However, some branches of the overall
+tree may not have an object located in that horizontal level.  Note
+that this specific hole within one horizontal level does not imply
+anything for other levels.  All objects of the same type are gathered
+in horizontal levels even if their parents or children have different
+depths and types.
+
+Moreover, it is important to understand that a same parent object may
+have children of different types (and therefore, different
+depths). <strong>These children are therefore siblings (because they
+have the same parent), but they are <em>not</em> cousins (because they
+do not belong to the same horizontal levels).</strong>
+
+
+\section faq_annotate How do I annotate the topology with private notes?
+
+Each hwloc object contains a <tt>userdata</tt> field that may be used by
+applications to store private pointers. This field is kept intact as long
+as the object is valid, which means as long as topology objects are not
+modified by reloading or restricting the topology.
+
+Each object may also contain some <em>info</em> attributes
+(key name and value) that are setup by hwloc and may be extended
+by the user with <tt>hwloc_obj_add_info()</tt>.
+Contrary to the <tt>userdata</tt> field which is unique, multiple info
+attributes may exist for each object, even with the same name.
+These attributes are also exported to XML together with the topology.
+However only character strings may be used as key names and values.
+
+It is also possible to insert Misc objects with custom names anywhere
+in the topology (<tt>hwloc_topology_insert_misc_object_by_cpuset()</tt>)
+or as a leaf of the topology (<tt>hwloc_topology_insert_misc_object_by_parent()</tt>).
+
+
+\section faq_upgrade How do I handle API upgrades?
+
+The hwloc interface is extended with every new major release.
+Any application using the hwloc API should be prepared to check at
+compile-time whether some features are available in the currently
+installed hwloc distribution.
+
+To check whether hwloc is at least 1.2, you should use:
+\verbatim
+#include <hwloc.h>
+#if HWLOC_API_VERSION >= 0x00010200
+...
+#endif
+\endverbatim
+
+One of the major changes in hwloc 1.1 was the addition of the bitmap
+API. It supersedes the now deprecated cpuset API which will be removed
+in a future hwloc release. It is strongly recommended to switch existing
+codes to the bitmap API. Keeping support for older hwloc versions is easy.
+For instance, if your code uses <tt>hwloc_cpuset_alloc</tt>, you should use
+<tt>hwloc_bitmap_alloc</tt> instead and add the following code to one of your
+common headers:
+\verbatim
+#include <hwloc.h>
+#if HWLOC_API_VERSION < 0x00010100
+#define hwloc_bitmap_alloc hwloc_cpuset_alloc
+#endif
+\endverbatim
+
+Similarly, the hwloc 1.0 interface may be detected by comparing
+<tt>HWLOC_API_VERSION</tt> with <tt>0x00010000</tt>.
+
+hwloc 0.9 did not define any <tt>HWLOC_API_VERSION</tt> but this very old
+release probably does not deserve support from your application anymore.
+
+*/

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/HACKING
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/HACKING	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/HACKING	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,3 @@
+To update PNG file, run
+  export LANG=C
+  lstopo -i XXXX.xml --no-legend --whole-system XXXX.png

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.pdf
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.pdf	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.pdf	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,204 @@
+%PDF-1.5
+%µí®û
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+xœ½XÍnÛ0¾û)ôiEJ²l`Ø¡À0`ÀÛrvH“¦@±Ööú#)ù'‰lÓ[S4l'”>’ŸH‰¿*0ü÷òhnwÖ<þ®¬±¦ÑgÍ˃9Êk¾~¤_ý¡ŸHžªï?Œ½±æP5Ÿékþ5km²Ú·¬FóÞmùGüò
+$Ûçêö¸±z`¶ÇꝵHÄ‘x’@R“D’†¤%Ù‘Ü“ìI$ï·OÕ‡meot[ÂÔÚÐ4HƒÚ;p‘ÐâÖ„Ó·‚óŽt[1Ri¢ ï<ɉ*’i¸–T]§Y´¾õ±há1Éÿ òg²Ü`%å@¡¬†˜-ßW—f'¤—ƒsìpþ
+.ƒw%ðÐ$°h`؝ŽWO©ÏK0È”%÷y~Pàa?rË!¹’{àxæ"
+×XÓh@¸z
+„ݝ2’½‚ ൠpÒ£-!)YooˆÌ¶eJœÎÙ„(.!¦„11‹4žtÏG+Ö‹® æb(ºÂçý¤[0*£îJáªø„7!€`R1€1ý¦“‚L¨â ø5$°»É%‘s¡—97—DIzÁ<ôiô“ÊWA7t›^·tGïëRh¨ùÓ½—3×”y×»é¼ì“ûÑgÄ\"ó;†ôLJTÁz]íp9s‡Å¹ÉÌÝ×
+?Ú ƒ[ÛÎ…âÎ…å)… à*˜G±_µ1p“¼vØ»º”ÓÆIb).t1àÑ|&²ãE.cÜ­ÄówÛí9m­ÙÈóî_ˆüýô®)sï\Œ$­Ü¹¬¦c
+ƒ%Ö°-`a¼sô¬Ášw¯†5Xô-6ùxŠ¥ˆ&÷‰/âcÊ…c†1¾O\šŸ¹¡œ‚ö’ÐvÜàÑZn@âÆ‚ß]:”ë¹!ç7øì‘ ¥ø$Og{5W&*Qc˜øO—*™ä‡Dr1lŸo‚»b¹`BoÂlªbbÀlªRá
+pØèù`ÙÅ»n)¼rŒ¬sC±B‚+/|’ë4[ŸiRÜ9|ý8«³*—vô“ù¥ãz«kîBhŒ.§;:O#o±û\¸÷“„ž°ÈÀrAÞeçΣýüº‡§ÏÜãà´Áu=ï£49¤Q°p?
+ñ5ºã{Ìÿv9½²Í!ðÿ½Ï1s«å‰•Ž:^¯ÓÁ8”­‚q•Ë®@Ð5;›\v“®ÝA˜^·ßÁª.»>Æ5éûuðZ„p%	›@0©HÀ˜^µã!êº^õ*ìó’_ª¿¯cÓÕ
+endstream
+endobj
+4 0 obj
+   985
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /Font <<
+      /f-0-0 5 0 R
+   >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 657 530 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+7 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Length1 10312
+>>
+stream
+xœÕz{|TÕÕöÞ{}ÎÜo™I2™É\’L.„KHH¸FD°6JDP‘€! j	D@4!”䆫ˆ)&H%€¨VÀ–¶¾¨€`˜ú¢Øì¼ëLÐöí÷ýùý¾vΜ=眽×ÚÏzÖ³ö@(!DGJßSÏM*`ñßý“ØƒØûòSsž÷‘§cûây€*ò¦>7³Ïœé„øðœìúì¼|Ó‚ãø=Ù‡÷h¦M™”w«æ—øýØ—5
+;uòoñ§áy´çžáãiÎßáyž|vÆS“«¨%$NƒçuÏMz¡@Ú ÏÄócxî+˜5¥` òü÷!|a$_TKù|ÎV!1Aƒt›È·©†3‰ôj8ßÔ›XÎ7oJ‹°ú­¿ÕŸ/‘ÖBpµ^ÕŠéÇïfÉ)„’Ó„È^~È;Á>`U4
+³R¦QÀ´:-µêtÚ¡:…Èë=×j€Q®“ÝÒ`›HFKkSk“5ªoÒkPCS:~J=fœbáß(Mgãߌ;P`¢tBp,(fYËtfW"t‰,Qñ)‰:Ÿ®’©{š-`EÊ<]	+UJu«X¤DõA]O»C’&YÛ‡‚±šñÚ)šéÚ9šyÚEt%Tэ`Ÿ@&DøµÔo·Òxj?M{Ð…´˜ö8!ŠEq¿Ðª[R¹·•H¤åst##Eí—¥R®x€	&9½ú(­‰¼%×›¬¾2ïaw}|uE”DA´Q«Ñ{AcžˆŸ9ß”žní¯ÚÜpåfëÍ&ËÉ–ÖþÖþ¶þiÁ_§Å¦yÒ¼i¾4Zܐ¤`lÐô}A0.;6Û“íÍöeû³ã²“
+’–Ä–{ʽå¾rÿ’¸UI¡¤æ$O×­]7uݐëÉõæúrýžo¯À_â)ñ–øJüÑè';ì‘éY¿ }­ñ™&—˜Ù'+ßÙ'1>NV2ÓŒôHvôÒ¾E3Ö××Õ
+9²t_cÛmÊ^Y—{(gÊÑÇþ»™eäM.¼x0偶E{ò'½»í÷ÇlÅË{öÜ“”ÔŠp'3Û/Ã5ô•“	ºH]*™ÊŒKuõV©>
+£ØŒd¤}xŒ¥õJºŠ¼+èqó†åûiA½Ùeq•¸V¹B.Ž“uôÄùuN¸¯C,±Zˆ?=®=¸9ûÍ“'ßÌÞüà/wNhŸà*ʏl“2÷¥¦^>{örjêž„:˜š¨ˆ'ê¼"åÉvAú %`¢r¹ÉZgX§C“ÕuaÇ5K¿Ù¤B´éfC“Õ† =ë@<"T¬a9ðC†5ì')¯nÁ‚ª}õõCßœýîI¶£í	V³¥æè޶rÙÞV3%ï[;ïâàóp\5öRƒ&ù¨ô9Â8ÕHd„ÆÒ:¨)G»ÒÚ„Ö[´Am¶6W[ Eë#2ԁñïÖáKʽ’í_ݱýA²~nÇ‘ÿÝŽ+]vÌu|è`ÿj‰ãÿb‰”»_5„©ë*ã¸vâ"Áâ Ú2ÍRîx•òz};ºÞVgXáv9˜Æ¡!£™Í<܍“¸ÙÔ`µõïXæ+ľåæ
+«Šý”!±±¡Øb›cù2„aCC\¼»ÒKÓKÛ]7ƒÌ 3ØÇ—vÂL
+~íBOEAF:QÂðP¤âÖ†³oM?5ù©ž7Å)šÒúUêØÎ¥êMìÉÇŽžêÓg·î´ÕÑz¯ø´aÝÁý5ª/kÅw¬H¶#é4Ë/“u&£BÀ&“Éò·Ñµ9ãꉮýX¿ñ£kÍáÏ$Øo<â6Òh^•™Ãn‹ŠOd™}l}YQYéâ%¡êªµëdÛ—bðµkbàÕ¯éÉÏ.ц&¯×no&n²Y$ÆÑn+—ˆ•si¨e«u­1d¯”Hˆ‹ŽQ;Êr¬¥ut­#gtmdÎã£kí9ã,@òö±caßöR—úfÓ6åß ·Ž£ÁôG¤±|¬2_šÏç¸ÊŠD$§#¹¸ûy2GžSèzÞ]JÊœ¥1¥®R÷n²ÛeEzøþÌ,Òw0ý))H»¬È„.cï¶>PHWfLúå+eϽ0ÿü¸ëÔ>üq§¸¹gÏž¹´rÀsëîŸ[=ôÞ3½Ó¯¿÷Ä΂Xñu˜CóÐö˜?z{Q0–ÁH ŒC	è•§°HK
+:â–5’!ì{=Úl›kPÍ=ΪµWÎcÌØ:“‡tM>­ÛMOº‘‘d<yšÌ%/%’¦’Dš
+YôAú+ïŒci>MçÃjD#1@†^þL£"S\¸pºíIh½g[3v‹Í=æŽÂöË|9®[,éôî¢UàªÒضZ÷;ªL•šFÜÖ>RF´Soñ¨yîJkCæUr;„ß?-€ãø­²Ô_º¥Ò[çI–t\b¶ÙâːØ&fÓåôÉÕT™Qк\Üß jmÏì¾@+wµy„®§ÏÑ_Óõ#Güib®øƒø£øXü!€ó5GKMèc
+±¹7ï$U:m•m­Ò½æµê5,ÂéåÄäŽäNwO-qÛ$¿Ê­˜ý3á<Õ¤ÎùÒž9.L{89w>U,x¨Ã.Åûé:lûæÍÛÅšº¶²r­Ð3éZKÉ‚ª¢ùvÛuvºíÓòå+–°|1xƬ™»Ž½±l›Ý×øòûA¿îÀø›Ž?oЬ¨ñ§P¢·I‚tónœEdDÚv¦ÄgÙ2û°bUÕ¡%‹˶&1èÒgbÀ×Wé‰k×è{áõB?ðôƒ–Ìz”)”Y½CQœ 4á2U˜[ÊRP•è:TIØr„Uÿ.X}£6Ô"^½ªEÒ²X?e$»Oyšå+%L‘©VvÐy½_~”Ž“§Ð§åyòú¢\E7È[ô–°Ê ˜'üa‰aaÕ
+¢¹m:ª‹Û^éó–TéóÛ^œçÄU
+ÎÓJ‚ÁH
+³ê	¯2­Ð’E6[׏ºÉ=65ü-*õ5
+p®*®ÒÞÁÉÒCÞˆŠˆ- ¦‹pžÌÄAQˆ«û¿·¿Q\_Š«â
+›ÙÍçÎ5ÃòÖ'Äß0cv£	j\ZTŽKy/x±R"q‰©œ„’tÄÊ0Nu
+•¬vj­ Ó¨_`ä*UjÜ¢ÒSd	ÅÑrÞr¾¡Cã]9ßdëÿRºsèz]ì3¨Nj¦ffVEG搲‚hªa2h¥Hêdcé8–m˜J§±è¶ fIs•4åt)+1¼ÌÖCµÕØ4ƒÆƒâÙqƒDÑUÖÿã¥m—^à¦6'ìoI¥ÅbQ˜“Ôœ6sšžD‘QÁ¹ÞFê
+u¶ÑZ›ù!°9†G‡SX§JA?ÄYDŠäb¥XS¬-Öë‹ÅÆbS±¹ØRl-²…œÍNëOTÆKRºáÊ…®Ý··j;}kš©MÜhþ‡ø–ZáÒµÓ§¯]ÿÔW›Äû¢I|ƒ	¬?F¼ö»3ÇÇP?X0kô:cê‰É^Ï5+LutDIDÃî³ÚôÃcÃ3MWÅD“šò-
+7ÒåzJ<!¨aœÑ)÷X8wFÒ®ù!Áöººo,hl'íÞh;õÊêÕ»w¯^ý
+bOþ³iwÞ$:Œjð=l’p4^»Öˆ
+ç¥rÍÊ0×DÁhZe!UÚE6‹NƒUw‡X‰[+Ù;è¥CößT‹y¯cˆc¢ãuÏì¯`Ž‘R1`è±rÆ•¢}ÿ6¥¢ý¶ø€÷jûpuyÙê]—ÿúém»q|Làr?Ьç%¹ÁÞ.=)W¤X-ŽÌÊ£"Ì«×ãvÅD!WEج“Ñ ¢”‡a£‹–}–Ö38=?hPë õoC:ú/-hÕS=ÓôF»c±Ù½œ¥üzêÈ LŽán™þp“¢Ä§940lMx:4•ö[¦ƒÅÆi¡©â¯S·N'hnŽ8JŸÎ‡%â ”‹It‹˜´AX/&Óµ­§n [Ôõ.Çõ®À\£b21²‘¡RŤÛì·Ãõ/˜¤ê’Ú2ÒÑHö3°-ß´y3þÛ¼ù6ÕŠ[·o‹[T˳ÅYqÛY’Ú‡f„D¡(åS:GçÓ•*bÕ#=†k‹r'è
+!‰…ø"…„´¯ìF‡SŒòNEDUEÔÔ òRX‡œëLÈÍ`–Ø„¾~+Ï :ü‚Žëé”è¨Ö{¤Â‘u#[.ì	óµjó6´9‰ü&8Èh`&=óx=-StÌëõÕé=^ÉA‰c«}mt•Uª"k•ÖɝÞëRHœËiê¡8íqÉ–¿5 E^AYNfè¢+è£nXNÞ)7Mª:ê< ÷˜S{ySz¥ü*~Rrxi8Áùã“2ÃÒ1Ú‹öDM” êå‘…g&î|sî®ù_üI|*®Mÿ¶¤¨iÖkGÊ7}ñúþé¿ð'úf•ÌyjŠ×™zñÐÅÏÒz}4|ÄÒßüz7ºÇ±½'¯$viùMÛ:¬*S4V.sÅ*ˬ]<TÃÀ²N+s*É…d„^
+©ó
+ÖŽ”u%ê')«‹UéËfÕ‰Ói"YKᩚ±,ŸMÕ²¹¼”-ã/iÖ°j¾N³ÙÃe¦G–O†$)™§Ê©JÐ0
+r
+Ë`‰´Œ¯”+”
+°NÙ¯ðCÊ	åå4Ã-©YŠ™0“¨¹‡fhÃåôázøºm?{¦¹íT½lo}š^n»Ù¶Å·}ŠööE€Çk1ÉL\c†W1ßÑ”ëô¸ØÈe›I­]5à¿ô9r³Cø¡ y½£C$aªHj튬†ƒÏ¥EbÉèÂßÿþ¶òr^#Þ«h-{p֏YnLº441ÍI h`Ud‘DÝ0€H2ºSï¤&mš’­”@‰$…ë/éôìO­ù©”lBœ"N“±êIº2­·ÌrCÚ5²;ä[_)¯plO‰tG°;݉>‹ì^­œ¢æñÈœ.¯
++x”ð7ú‘Ú†ê—7Â5R¸D¢Amžg’w’/Ï/‘	ÿSiæ¿+ÒaHåvñ‘¸þä©é9ï?wôTýÎý‡ªj¶¿<æè¬ÂÓ㿤†— àmXõéwÀñÞéÕ¿­Ú5· °(!ñ Ï÷Çöª:r9Ú¹<ÌAñ¤êÈ@´„’䐧GÈVéY‘´=-ڐÐÍíHp›µÈHHKf¿+ÍÒÚ ÍáùwÙ>S…ÊORb +ŠîÊȸ„Ì>Y?ÉIlùª;W­ÚµSì,­$íÿuIT.Z½]ܺuKÜÚ1²rqéš5¥‹+Ù‰
+åå6–•oë;PòæG½YrÀw²ââõë+NÒIÏ—–>-œG¡MåhS4I ã‚ñŠ×Iˈ3¤Û)…ȲHoÈR¹" ¸Ýþ‰‹s]ÐÅ´_Šï;
 &Ùà|/æ˜ë˜ûXì{ž¯²ÇvÄö•
+ÙcBßðâØ"Â{™}HF‡¾K¤]†¡>`Óè÷Ï™xö3q›Z¾ @­â
+qõMtðÒ-[–bóÖ%$R#µ}‚š¿þ’F†Iz‹xÜÃÖÞ¶õí··n;Ü¥s§‡yúÛ`òæòz} âý9}¤ÿGúЀJ«íŒJL‹’Ì“5}Yà÷jaSÙd’Ål)¯Ð¬e5טµ2‰œ
+G…¨DƒÊ%Ý”,)‹gÉ™JšáJÃyP"¿L†\iŸªÌå†å°œ¿„,SaØ ›åÍÊ!ørN(‚O”ëð•tÿ]¾?òÊÝUÆ™©RŽº§ÊëX
+•Ú\#~hËø€_h[Ææ¶l½Ì>lëÝû5¸öyè§Xòd0^ŠQ¬e–ؘbY–Yˆ,2®Pvx¢ÜTn¢³ÈXÂÑŸF«å'; 5ßaࢾRFÆ
+‹hè€F„JNj$‡ü,XÕýœm¡î㺷Ðq^|ûäñi{æµ>xí¡­9ü±Úl7þþñ½Ïר;íЦM‡ÃØ­ÀùW‡ãQÅnB„LŒe‘‘rȹÓ2,‹«t¯â´n§'Â
+~o¼H.W:r`ë•»´´7’Fz–…³R#o”Ñò6á窵#2è2¥«Nd;:Jµl| Q<ðÀ3ŸS.š¿mâͦ®6ÂÀ.Œ²yˆcñøöÑ	âÛ¯¿‹ŒÉt§‡Ü©«“Ð.'É
+Æ·šö몬t+Ù/UEUª[…N#I³[bTÄ6Ý©§1§4»¼.Ö¹EØUCß݉ò¤ük¥íD4S%¥×ò§ó[ñš˜OË蘲oøäŸ§ÄŸÅEqêɉçFޤ[(VtË}]{…0
+ë+AwÉz…XõPnªÓQt²†hFØTªïÛÝlj8FuëÁl,ÃÔuˆ»[kQ0Ê{÷M¯Ô×8¼$¢§Ú¬GÛH¹ûóŸâ¼+7Ñ5ˆO =ß"¯35L¥»…_Xa©©S‚1y6Ïå|—Û„§?@Ì·¤ª8iÆç—âÃ{î I^,í"‹§ ‘è;{êVQ_uç„çÎ	!Å‹0Î#Îv ÑwÔPo0kë£+Ìu®uNb³Ým51#ÔZ#½c{±£Ö8ù³Z£‹çJ4 T¦˜«“Ô!á*V¯¨­í¥o!íígŠÞP_Ïzu–ìá¼IâˆøßG&åíÆÙ¨ñk£Ç‰ÀÜí †,–A¢N­æîóg:vÐ$äÍçv,zXìÇhï›Ñ~Ná:&‘kºrL§¬sWV’2ºL²—9–E«{ԁº»ºòa—ƤhìqÓÕõ>ÿ3]ÙdQóÁ÷7l?ו]²’$©ìùœ[çÖ»
+=µÝuÝõÝ
+µuõ
+zñÑ–¬KÖw‹èeïåè™ìIö¦øRü	Ieº2}™¡ÌhS‘Á˜¬“õ` #˜ÀpB¸À…NR¯”!)SŠSJRV¥„RšS¢±úù¯VŽÿw›…¨„åî~lÙ²Ék‡4ì¼õçÇŽ?›rRéŠ){ƒ{_þìù¥!û““sr‚÷ûMÝÖ/Ût(>þhfæø‡FgÌ	U¥5û:ããD‰EÿƑǂ‰²Mm&r¬â0”Çú ÎuÄiÁÈ1k4r¶UcÎvG#tâÃõ`+V„áËAƒ®tè;ՍÁˆ´„ì„‚„U	!|¿“p)¡=A‹x
+‡‘ã§»Öÿ¶}2üXéëGëgÍ®ØU?kîÊ]õõCjçÍßËÌùþu3{ë&u3›ÕlÛøÎöð¦öÔÉ:l¸»?÷YÇT…±×oA£¥3Ü
+x3—;6åß­«“íÿlRrž”KôôÞà®n1IVõÀ%Ê(X£z+^©³juT=èuŠFÑZ5e¨N‘¨¤!ïpÖù‰idƒZXérÔdó¸ÿøÇÎA²ÊjBR?wìÿ6tþ˜v7‰ÿü§´ÿi_ÖI’.Frèu¿zë‘UÆéòusè|iŽò¼n¥Tª[/m‘Ö)«u«t»è«ÒëÒNe».¤së@â\«ÓÇ€ƒ;´1úHäm7½Ï8€ö‡¾¼’¥í¯O3Þ#øpí(}Ð8žŒ¥ãÙxx”•Ç+c5cµãõÙÆÆh±q#]«ì¥;”Zã‡ÆKÆvc/uë†Åc¡UK	)O<C÷\‡Åá‹ôM1ë"M¡)RnÛ¥¶wiÉF±H1“Và´7‰XÉ.öáú™G^¥„I–††ÞëPêðgJöÛû**HøÅð*õ¥rŠúêC$âã„oìiîÞÞŽ‘“,¤ó
+YÝ·ÆW0VÔû%d!ùUC´¨»ôÄ@ŒÄDÌ(¬Ä†•8H$ÖîјÕbˆ™4–xˆÇñcœÄcDd¤d’Bº‘Tҝf’:‚9‘¸‡l¢»ð,G›‰=!v€,!³±ç8m¤ËXìÛ…<‡W–“F؃ÓE2°—‹œ‘›4‡Ägô§vÚQH¤¥ƒÒÃRtM:KúJ…ÒY)W*¤°å»°õ‡̆ùÇKêè%RHÃWG¤a’‰\‚³°‡\ÅQ$|~#© ;HÎÅNgbVÄÆžSü,Ù€ïøýYZCÏáìÓÅäy$6’ÔÐhW#ù,†VŒy5ƒåãüOá³ÎâýH!:ôÕÁR±gcMÿ…üBøÝLŠqä²CÆÐSâqÕc»èqÚ$¯!!rž€™ðWºDŠ—vK#IE‡ —Tà³7¨÷Èù#5ü.RŸÎæJ¹tùJÊU&ã³O¨©¿®³‡Ñ¢|rÛ\Ù‚6
+¤K`ÎTý6–œUFI½ð~|‚²­&dd’éø©ˆì'H¨&ø¤°½r_þÞ¹Iúm® +Ùä,ÃuÏ—n ¯*ê/BoumKu÷YjYàþ¼ÚàCã|ï÷÷èþ/§>‹â«%ÙµÆy¾ºööìq’‹¯åîZhj¥@üçÿéËÏ{t=ÎWÛ6|XçS‡çþ1ãð£z†ÝØ?|Xø;uÐZÀ÷çÖúžšæ{Ñòbü€-Sôèˆ
+–3šwÍDó ï‰WÓ•Jî:Þú¤u¿q–ö<Ր®8¿Ês"–ã·>iyÈ8«³ÿî«"4_¾FNK×H‘”Ofr9Ìú“wÕ£ÔDf²åˆ/©åQ¤[žœA
+ùBrûvðVršÿ•àóˆEºŠ÷ÚÉLé9-$5xm9¶Ï±¯\Ú†ÇH˜×G‘MØ–c[ć„ÏÕk+x5)„Q8öä4Æ_3ÞwÇ®‘RÉ¥±cNÒ2P"íMs†Ñ1Ïâ1V SœAZÁ~ÝÙ–"™ü½€×)×Ñ5/cC½¦Å£ÎMˆ¯Ñ!Đƒí<úi!¦4l!BÌxï·â³­#	±a~Žø3A²ÁvŒH¼&
+û£ðú(|~4®G4öGÿHHÌ8B\8†î¿©ÿç$ìýƒü3
+Lý`½ºZ’ƒEâQªc%ÁöÛZìðÏ ü˜·ªá|/ঀÿÀw&øG54àÛïáß
+¸Q
+ßTCS|ÝðÕ ¸>®	ø2®^ïVüðʸüE/~¹¾èŸøLÀ¥tø/;|Z
+ðWüe!\|þ,à¼ü“…páü}üÂB8œûØÅÏ	øØð‘€üAÀÙj8Óèág4zàƒt8-àä+?醑Р฀÷¼+à˜€wð{G¼-à°ê˼^@Ý[oó:ošÀßzÞ*‘ý.ÀM¶Ã¡ ô» ðf5ð†€Z¯ØŸ¯™`ßÞ ß—{÷ØøÞ ì±Á«8éW[`·€Wì°Ó;lßfâÛÓa›	¶æA/	UÃ5›
+¼FÀflÚèä›ò`ãßè„
+X¯ƒ—¬«6òuªP…7UUÃÚ5&¾6Ö˜`uT®z›W
+XU1¯zV•H/xŨJ/`¥€Ë{ò–÷„ÑÌïeKõ|™–b)ƒåyP†ž*À+üVÀâR+_, Ô
+‹”(lÿÍÂ…ü7.„yP”ãàE˜/`ž€L0× st0[Àó-PسZ`f˜!àמõÃ3¦[‡òécàiÓÂT<É0E@ž€§L0i ä¶À“˜ àq	?NÇÇ·À8<é䏦ÃXàȏ…Œ¡>&¶ÃC£"øC²õð+þÒÂðK< `4~3ZÀ¨û-|TÜkä÷[`¤î0¢†WÃ0÷²üÞú6Ü3‚†ül‡_2ó_Ø`Ð@#l7Ã@#Ð_@¿¾vÞ¯úfYx_;deêy–2õÐÇFHï­çézë!­—ž§¡—zöÐòžè¡…îéÚ-ÀSó [Šw@Š
+’“<ùH
+ at b@ÏÍÐC‚€xqfð£~øòÀÛ4Á“±Fp£Ý\-3œxâQè©(‘xS¤ì"Øð›@
+Úƒ[‡‚e!˜óÀ$ÀhˆäF¼Ú	z:hhð2 ÅrVW.!€½ 0;Y8ëÔD ­£yKVÒÔÿ^äÿõþ¯Øÿ>lM£
+endstream
+endobj
+8 0 obj
+   7698
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+>>
+stream
+xœ]“Ëjƒ@†÷>Å,ÓEй¨
+¡¤›,z¡i@gŽ©ÐŒ2šEÞ¾ãü‡*$ðåÜæ3gòÃñùè‡Eäïa´'ZD?xh¯Á’èè<øL*á»0¥o{i§,Å§Û¼Ðåèû1ÛïEþƒónbóäÆŽ2!Dþ…ÁŸÅæëpÂO§ë4ýÐ…ü"Ьi„£>¶{i§×öB"OÅÛ£‹ña¹mcÙ_Æçm"¡KÉŽŽæ©µZ¦l_ħû>>MFÞý‹ƒ²®·ßmHé2¦…qM"•¨’ 
+Ò z• ¨¨• ÇDª í@Ü¥M¤¨ÅÉjq&¡OïÃtY$*1]²Œ$ûõ öÃ<	¿ç”ðSp—ðÓƒŸæžð+9~U‚_Íàg,~šëà§ñ^$ü4ü$û¡§‚Ÿ†Ÿ‚Ÿ®@ð3è©àWã)øôTðÓ-ˆÿ?΄ŸÂ9üjîÉ~Ø¿Š3áWÃAÁ¯Ä"òÆ­+¹ÞŸû¾ÛkqÕÓ%K;¾n÷àé~§qZ«ÒçÊè‰
+endstream
+endobj
+10 0 obj
+   409
+endobj
+11 0 obj
+<< /Type /FontDescriptor
+   /FontName /VERKJI+DejaVuSans
+   /FontFamily (DejaVu Sans)
+   /Flags 4
+   /FontBBox [ -1020 -415 1680 1166 ]
+   /ItalicAngle 0
+   /Ascent 928
+   /Descent -235
+   /CapHeight 1166
+   /StemV 80
+   /StemH 80
+   /FontFile2 7 0 R
+>>
+endobj
+12 0 obj
+<< /Type /Font
+   /Subtype /CIDFontType2
+   /BaseFont /VERKJI+DejaVuSans
+   /CIDSystemInfo
+   << /Registry (Adobe)
+      /Ordering (Identity)
+      /Supplement 0
+   >>
+   /FontDescriptor 11 0 R
+   /W [0 [ 600 862 612 549 633 277 633 615 317 390 636 636 774 686 390 748 731 684 611 634 603 837 636 636 634 579 392 557 636 636 636 655 636 636 698 411 294 336 634 317 520 974 277 591 500 ]]
+>>
+endobj
+5 0 obj
+<< /Type /Font
+   /Subtype /Type0
+   /BaseFont /VERKJI+DejaVuSans
+   /Encoding /Identity-H
+   /DescendantFonts [ 12 0 R]
+   /ToUnicode 9 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+13 0 obj
+<< /Creator (cairo 1.10.2 (http://cairographics.org))
+   /Producer (cairo 1.10.2 (http://cairographics.org))
+>>
+endobj
+14 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 15
+0000000000 65535 f 
+0000010570 00000 n 
+0000001099 00000 n 
+0000000015 00000 n 
+0000001077 00000 n 
+0000010411 00000 n 
+0000001208 00000 n 
+0000001408 00000 n 
+0000009201 00000 n 
+0000009224 00000 n 
+0000009711 00000 n 
+0000009734 00000 n 
+0000010004 00000 n 
+0000010635 00000 n 
+0000010763 00000 n 
+trailer
+<< /Size 15
+   /Root 14 0 R
+   /Info 13 0 R
+>>
+startxref
+10816
+%%EOF

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.png
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.png	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.png	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,177 @@
+‰PNG
+
+   
+IHDR  ‘     mê   bKGD ÿ ÿ ÿ ½§“    IDATxœìÝ{\Œéÿ?ðkÊ:“ŽëJ±:™RTRÃ*‡ì¢HR’Ød;8­†%‡VIR¶¢6%dÉaËXi£øT¤OµFä•B?§5¿?îÝùΧ³š»™»y=ÿð¸çº¯ûºß÷eîë=÷1–••‡Ã!    Åx<^‡Ãår%	   4‡ËåÊI:   häl   f@Î  `äl   f@Î  `äl   f@Î  `äl   f@Î  `äl   f 7g³X¬KZ$ÄQ}€¦Æ  ĨåœÍb±Ž?.ü¸{÷î6ä]¡6$ȳgÏêêêRÓ©©©FFFªªªööö™™™Â:\.WÕ§OŸBCCuttz÷îmhhxâÄ	ᆰX¬®]»r8œK—.Q…:::çΝkóæ   t˜VgÿôÓOT®ýðáC\\Í!ÕwäÈkkkjúðáÑ‘‘ÅÅÅÆÆÆóæÍ£
+sss:$¬±aÆÄÄÄ$$$g	‚ºººåË—{{{S%666ÑÑѵ)   mתœmdd”ššJ9vìØôéÓEg±X,yyykk묬,Bȝ;wÌÌ̺uë&<ê
+		8p ‰‰ÉùóçÉ?çÆY,V½òÒÒÒ‰'*((ØÛÛß¾}[twîÜ2d5šš:fÌ%%¥9sæôêÕ‹òöí[WW×cÇŽ	뇇‡¯_¿~Á‚ÊÊÊÉÉÉ
+·¨{÷îÔ„ººzaaak:  @²Z•³½¼¼ÁÞ½{W¬X!:K ¼{÷nÅŠ„WW×I“&={öLx¼¶¶6??ÕªU¢Ö+wss›9sfYYÙìÙ³7oÞ,Z³¼¼\UUU´¤¢¢ÂÁÁaÏž=„µk×.^¼xâĉ¹<˜<y2ùçd¸è™|‹Õ­[7WW×ððpªDMMíáÇ­é   	4‹"fÍšµbÅ
+á[Ô¬ääd33³ž={Bºwï.zôèñôéSÑeß½{'>}úDþ¹˜Ýh9uÐLéÚµ«h #FŒ(//~¼~ýú°aÃŽ=J}¬wq] Œ9òĉõâN|øð!99ÙÐА*|øðáÈ‘#›ï   ‰hí}ãkÖ¬9pàÀwß}'ZèçççååU^^óöí[Bˆ¾¾þþýûkkkE0iìvñz円†!!!Ôú»wïDkêéé•——SÓ‘‘‘ß~ûí¡C‡,X@•|úô‰Úᯁ¥K—nÛ¶íĉuuuÅÅÅõÖK­‘Š–R^^.¼Á
+  @šµ6gO˜0A Œ?^´Ð××wíÚµzzz•••TÉáÇûí7UUÕϽ·<..®¬¬ÌÔÔ´ÞÙlBÈâÅ‹/^¼HM/[¶ìÙ³g666Tµººº†M­^½ÚÑÑqݺuýû÷_°`ÁéÓ§…³¨sã!!!!!!TÉÅ‹]]]?+T   ‰`p¹\I‡Ñ@0oÞ<ÑçÍÄÈÁÁ!11±=O¯  t .—ÛEÒ1´¬ÞââE_Ë   â…w—  0r6   3 g  0r6   3 g  0r6   3 g  0CsÏgóx<×Q‘  t4‡Ãáp…$¢™ï$i1gŸ½xÜÄ|”øƒ ´œ¬"BH39 t°æ¿“¤ùœM11åác'Þ˜  ¤BpJóó1 BGké;‰ëÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   ÌÐÂóÙÍÈÉ*ÊÍ*c(  bgl>ŠŽ÷¢` „6kÏw²í9;7«¨ ó±…©i›[   Ufv6!„ŽœÚ¦ßɶçlBˆ…©éÚÕ^íi €>;ö’W¤œ¦Æ1 B´ó;‰ëÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  À²˜³54;fE`±çJš_ì¹R ÐÔ8 tV Þœ­¨¡Ÿœ,ú±ÞDÃò“gÏ
+ËC#‹ÖüÇSÔÐ<ŸžÞbûí[QCs°®Þ<7·ë¹7Eg­ò÷¿STôáãGk;{ªäyU•ÝBgu=}»…ÎÏ«ªD+_¼|ù«Ú¢mŠF˜öÛoV3¾Ñ2ãìᑝ›KùôéSdlì8k›Aºz–¶3RÓ΋.«¦=b†ã¿.gfR…#µµ/]æ‰e{€²0 6Ù„0 ҁöãì_RN–?~Üúú?ÿLýzúðñcâÉ“¢³"ãâ¾™:åpÜÑö´ßJ5÷ù¥¹9ßL™º10P´üÓ'œœ\έ[cF¦J6ïÜ¥¢¢|åì¯**Ê[ví­|,)i¢Åaƒ5÷ù¢scIÜ·}{NFº¡¾Áâ•«!‘±±GŽÅûxzÞμ¾;øÄ™TÑxÝ-t]0ý?R%“&L8št\ÜÛ
+ âÔéÀ†#›@:О³ƒ6s½7lüôéS+ëÖÕKûí7BHÒ©SÖ9Âòåå?‰
+}òôiÙÇͷÿŸ’Ò¯gΨ£;yÖ좒Bȝ¢"ó)S‡	Ú¿Ÿªs¯¬ì›Í¢oàìáq·¸¸a$,K^^Žüsú%<:šúU;~ê4ÛyŽ?ÿLýf̸zÕÓÍMsèЮnW3E[(*.<h`S[šp8’­¯§Ø¯ß·Ó§õêуuôØ÷žžsgÍTRTÔý꫘.Õ½[7jbÐÀÿ))mªq ~ l@:О³GjkOš0á@Tt+ë/_¼8$ì€@ >²dáBayôÑc¾ß­ê"/ïçõ]ôÑcÍ·¿û@ØDË	yWxœ	«üü	!{„3uê/¼{ÿžª³ÊϺõä‚Ì«3¦LÙ¹o_½054‡1>‘zfËúuT‰‡«ëý¼[7¯¹Ï·o~ïÖMêgã‹/´45	!ZšÕÕÕ¢<zúTYI©ùí}^Y¹Øseà?BÊ?¶²O;¤¨¡ù刑ž~þ»·n¥JT”•ËŸ<i¡7@¢:ý Ø€tèˆ{Ð<\ó®]ýMÔ§wïRþßÿߥ|~ß>}„³4†éÿå—¾Úššû÷§
+ß½{w4)i±çJE
+ÍÅž+&%½{÷®™ö¯d^[æâ¢¦ªºÌÙùnI	!ä÷¬¬%ÎÕTT–¹¸Può×ÿ¸Uƒmèî½æüoÿw‰ˆRsŸÿ¸ðNrÌÏf&&T‰¢†¦Ûðʵ,E
+Í+ײ†‰Œ%„())ýÉçBþäßWVVmdð€Õ/^4Ó37óó­íìW-]j3i"!D}àÀ?n䐯Î#ÕÜçWþYâ½~URU]­>°Éß°  %:÷ Ø€t舜Íb±ölÛúý?KÌÇŽ
+	;PÊç—òù!aƏ'Zßs‰[TÜQ÷E‹„%'Μ1=šú¬¹ÏÃfŸ8s¦™ö­,Æ9vìyUÕ¡ØØQÚÚ„Ksóè£G+««£þ¹d £³mãÆ’Üœšûüg%œª§æ>…›ë¯¿$\ùõŒó¼y5÷ùK	!-,¢¢î?xx :j¢……è"£FŽxÜô/Á˜_~™¿déÞísgͤJœw‡…¥¦ÿï›7Â]úÿ6“BÈÛöÕÇOž
+ïï  ©Õ¹Àf` ¤C=ë¥>hЂ¹s„C¶m}õúµ½ý뺺Ý?n­lfbRsŸ?ÎxŒ°äplÜ2‘ïÇ2gç¨ÿ½£^û¾+Wþyÿ¾ÅÔiÊË‚!Þ+<NŸK7ÙºKyªNÄž‡Y϶kê¦Ç†nܼebdTSûR±_?a!×ßïyeå„éÓŸWVøùŠÖ_0wnÆÕ«Ô´p-‰ÕëÖS÷œS%ÿ}óÆÃu±Ý73¶ìÚ5Âdì²Õ«ã#	›RÔÐüräWaQ‡7þý33ãêU§¹­	 $«€
+G6!€t`p¹ÜFçq¹Üçu·=|읜Ò÷£úÚÕ^4FÇpÀuåª#a¡t4¾Øsetè~‹EG㠝νû^u)ofS뭏& ÕÎïdC“y,‹¦ï+!„¾– Ú dñ=h   L„œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   ÌЮç³3³³wìW$  b–™m`1ˆ¾Æ1 Âçjçw²í9ÛØ|!ä)os  ´2°DTb‡Ú¦ßɶçlóQ&ôì  R H®g  0r6   3 g  0r6   3 g  0r6   3 g  0CÛŸÏÎÉ*ÊÍ*c( ;Œñl«8`l
+š¾lè|h³ö|'Ûž³s³Šne>655ms ›²³³	!ÈÙí—›U”uå6ÛD[ҁH¯¼œRBÏ—
+ ´M;Àv½oÜÔÔÔËË«=-€lz7>Š	ÛDÛÅÃVÒQH³³ô5Ú¦= ®g  0r6È–êÊ—îŽ;Ì´—¸;|Ù°BxpŠÁ '鉊wá–ƒõFK]5nûþ}£¸ƒ ©‚œ
+²eï¶D%e…ċ۔”ö&Ö›[˜?ùh†TEu"žÇÝívæZÎh
+÷ÐŽ
+ ¤r6È–¬+·—O¢ñåB÷©Y¼Û¢³Þ½û°ÉûÐö°RÕþ˜5:
+ýzÛÌÛ£g·Ž
+ ¤r6È–Úê×C5ûB†j¨©~-:kï¶_f9Zޝ#UQQªž¿ôY¶ßosGŸ´ ©‚œ
+²¥ŸrŸü
+BÈþSEå>¢³â_
+8F]ÌîàKÚÍDE¹óï{N3¸.+¦[NfwdT  m³A¶˜YêÅL+/{qÞÌJ_tVþ“¸‚§Gž%„PÿJCT'Ž]^åäfk7¾#C )Ô®ç³Ä®Å×KµóµV«78®[y`îä
+úF÷‡® „pj1CK0ªÍ>Q„wÇTÍì?÷ìÕ½Í+ FCÎé’›Ut7·šÃá4:—ÇãRԞ쨢¦y|]óu¦p	FÕÁGü  ͐³Aêp8.—Ûè,.—û¼îv£³Ú¬•IQ:£ ™"×³555% H‘Iž’¡ã` „fЛ³³³³—/_>fÌ[[Û.ˆ«ÙF¿Óššššššzzznnn7oޝåïï_TTôñãG{{{ÑÊØ7 Ó›dà9ÉÀÓÖtÍú•áwþÍ–§ücÉœÀéã¼Ýì¶ñ.ÜVntñ†å1ág[Ì£ÖiØ à“àøÏ¿-œÁýš½’*ÏÌÈ_:7p¶¥ÀšÈÛ·þüœÍ•.R; VUU9;;ëëë;;;WUU‰+0è ôž_½zõ’%K¶oß^YY¹gÏž)S¦Ðº:>Ÿÿÿþßÿûõ×_Oœ8!,rrr·nÝ=z´°&ÁïYfÊÉ*"Á)¿R[ýæ+H$*]¶F‹Õ2
+ÂÞ½}Ÿ‘vóàî”У>„3I™'ãy‹&›ZêÕT¿Š‹HãL1jjYÒ —>ü5ùZó+mªNÃSâyg’37ît1J%Ç"„d¤å/éÝ·gƹÜ-¾ÑIé-n£t’Úp×®]ÊÊÊ¿þúëÞ½{wíÚµk×.Z1¢÷8{Ȑ!ÿýïù|¾††Fxx8UXZZ:kÖ,]]ÝÙ³g—””BJJJìííGŽ)šD¯]»6vìØãǏ—••ÍŸ?ßÀÀÀÃ㸸˜ªÓÔQ2‹Å’““ÔÇèèhMMÍäääiÓ¦9::þüóÏÈӝXNVQŽôýIc©ˆŠÅ’“g	÷‹”xžÿVç©3Mû)öÖи)È­õ-½÷!hS܆틄%>_ã¶w†ù÷k"ù¥O­ÓÌAyêñ«îÞ³Gê¡6!dSÛà¡jòòr_tí2P]•*Œ‹H›eéçf·_ò¸õÑJ–Ô€W¯^uss:t¨››[ff&Ýý bDïqöO?ý¿yóæÚÚÚ-[¶P·Ý†……M˜0!22266ÖßßÿäÉ“~~~GŽéÛ·/µàÉ“'ÃÂÂŽ9¢««;oÞ¼)S¦„‡‡_¾|yß¾}|>_SS“:P®GSS³gÏžÆÆÆëÖý}®«««½½½§§çÑ£Gœœöï߯¨¨Hë&ÝLÌGyøØ5>/8…ÒäÜöhéZRQ½yó¶ÅZ“<»÷èªo8|ù÷³©’ŠÇÕÆ÷oÛ:#÷žž:ËŒ=v„°$hÓ1ËÉìÍ{–eÿ~'6ü,7diÃ:Ôáu£*žTæóC¶Ä9ØÙcº¾ápòOŽWVUØ{Ä›ªö×_ŸŽœüád</þð…»\Û|“ÚðÅ‹TòÖÐШ®®î˜Þ ± 7g÷ïßÍš5kÖ¬¹uë—Ë¥¾²×®]KKKSQQqvvŽŽŽ&„”””DFF
+¿¯„ÿC‡éêêB
+srr¶nÝJùâ‹/šY]Ãï±ð§(51fÌ.—ëìì,Æmr
+óeÿAÊe÷*FêiCk)ñ<@p è!d’gFAXiÑÃÛ·þÛ•LéòE—Fë4Ó`_…^ôÄþʽv9ÿ`pJØ1_*æÚšºËi¹?úEüÅŸ2ËѲŸRŸÙó9nöÛÚ¶DHí ¨¤¤Äçóõôôîß¿¯¬¬,ÆMºÑ{n|ÅŠÅÅÅ/_¾,((xúô)U8~üøcÇŽUUUÅÆÆjkkBFŽóêÕ+á‚‘‘‘¾¾¾Ô]:::7nÌÉÉáóùÅÅÅ„•´& >ŸïêꚐpæÌ™yóæñù|$l »ùœc/¤f¿¬­»ÿç“-¾Q­_6=?4£ ŒJÃÔ¿Ú_©¯ðµOáíÈ(»xs_£uš1ÖB‡ÂbBuz<dKÂó§/¨’Úš:ªÚéÄ«µ/^ŸNüÝHäð]ÊIí haaõðáè¨(±o8ЇÞãì™3gz{{?}ú”ÍfQ…+W®
+
+6mÚøñã©Â;v¬]»6""⯿þ¢~*ZYYÅÄÄ,Y²äÉ“'!!!ÑÑÑvvvååå„>Ÿ¿`Á[[Û7oÞ4z‚¨ž[·nùûûçääôë×OXXïçgkځÃãñšzšÇãéKæ°@:£j›oæZÈËË%ŤïÛ–8p°ÊB÷iMÕ^‡¦&MÀë¶»$Çex.zú¸º©:£í†
+.õš¹cc\èŽdÝÑ+|í	!úFýÝö}üðQÏpø¦ ¿OƒËɱ\fþ¨¢ª°^ä2¹”“ÚÐÏÏÏÛÛ{úôél6{Ïž=´l<ЃÐü›"šºœÒõ£º——ÑAg´oß¾÷]Ê›ú^µç-¡á´]9–ΨƒSÞ¼yëâa+ö–;˜ð³={vofS뭏:Ró`‹ßI¼
+¤‹Iû^ÜMéŒ
+ d4¾
+   BÎ  `äl   f@Î  `äl   f@Î  `äl   f ëùììììëׯÓÔ8H¿qãÆ™ššJ:
+™–—SšŸ["é(1ÚxÛD[ÒQРŒ£o ¤+g_¿~=//z'>ȏGAΖ¬üÜ’ÿܪ–¶ÿ…ììlBJ:}ÎÆ (Ëh i|‡Ãiêlйq¹ÜÚÚZIGÄÔÔT
+_®Yû¾TÒ!t€2‹Ö׳  ˜9  €³  ˜9  €³  ˜9  €³  ˜9  €³  ˜9  €“³ƒƒƒ¤Öîàà $µv ‰ÐÔÔ”tð7€@‘dÎf±XõJN:Åf³UUUííí¯^½*:ëìÙ³ºººÔtZZÚ”)S”””¦L™’––F5EÖÏÎΞ>}º¢¢âŒ3ª««	!©©©FFFTã™™™¢jkk‡‡‡›êÚµ+‡Ã¹téUAGGçܹstt€Ti>OWUU9;;ëëë;;;WUUuXT@hé:ÎNHH8~üøÝ»w­¬¬æÍ›':ëÈ‘#ÖÖÖÔ´‹‹‹““Óýû÷çÏŸïââBõ~®Y³fÞ¼y÷ïߟ;wîºuë!‡ŽŒŒ,..666m<##cÖ¬Y‡öðð JA]]Ýòå˽½½©›èèhÚ¶€víÚ¥¬¬ü믿*++ïÚµKÒát6 ¡EÒ•³GŒÑ¥K—nݺiii‰Îºsçΐ!C¨é‘#G
+Ë…¿=ëùøñ#ùç7#õS455u̘1JJJsæÌéÕ«U-&&ÆÏÏïÒ¥KVVV
+éÞ½;5¡®®^XXØÞ͐2eeeóçÏ700ððð(..¦²555…GÛQQQ¦¦¦3gμrå
+!äêÕ«nnnC‡uss£ŽÕ@Œ0 B‹hü[œmC®0`Àï¿ÿ.Z^^^®ªªJMÿüóÏãǏwvvþòË/³²²m'88xóæÍ>>>‹-=‰WQQáàà°gÏêãªU«:4lذ†1ôèу§!jjj>ËHÿ)S¦„‡‡_¾|yß¾}|>_SS“Ïç+¼zõêܹs<oïÞ½VVV/^¼ Ò¹††uÆÄ 4OºŽ³	!àùóçëÖ­stt-WWW¯¬¬¤¦ƒ‚‚jkkwîÜYï’¥¥ezzzeeåøñã544¨Â7n˜™™ùøøØÚÚR%ééé«W¯NHH¨ÇâââÜÝÝ©’çÏŸät………[·n544\³fMzzzÃ
++W®TRRš={v~~>!DII‰Êè÷ïßWVVîèpe @hžtålww÷‡R¿ò„_PŠžž^yy95ý×_	Ë›¹›ñÓ§O7oÞôóó£®ÓDFF~ûí·‡Z°`°Ž‰‰IzzºŸŸ_DD„è²Toß¾¥>–——7u
+€¹ttt6nܘ““Ãçó‹‹‹	!***<Vøâ‹/ˆÈÍJQQQ>ŒŠŠ²°°H̝@h‘„ύ‹Þè(&L˜0qâÄ÷ïߏ?>11Q´æâÅ‹/^¼hffF			Ù¶mÛwß}gll"Ú5!X,–œœœ†††‡‡‡§§'!dÙ²e„ªæëׯ©	]]Ý+W®X[[×ÖÖúûûSÈËˏ7ŽjœrñâEWWW;@BBB¢££íìì¨|Àçó,X`kkûæÍÑ3äB~~~ÞÞÞÓ§Og³ÙÂó«Ðf ásI2g7ü…èäääääÔhe[[ÛØØXjšÃáp8œæ›ú¬MMÍ{÷î5Ur÷îÝ€€€F`®ÁƒoÚ´iÓ¦MÂ//////jZ4mSÓªªªGíà ;+€ÐRwZSX,ÖñãÇ%µv	®   P¤ëz6   49  €³  ˜9  €³  ˜9  €³  ˜Æç³y<—Ë¥¯}Z<ÍfK:
+ ÙÙÙ’¡¾ìì쯌dâEå e­ ]9{ܸq„ÚÚZšÚiÆf³©/ HÐhã„”Ô¾/•t ÿã+#åÑÆ#$í0 Ê2Z@ºr¶©©©©©)M@‹Ø&ÚlmIG!£0 Mp=  €³  ˜9  €³  ˜9  €³  ˜9  €èz>;;;ûúõë45.Æ×Ô™è
+ I^N)!g%…ôÊË)5·Òïøõb—…Þ#ºröõë×óòò8MíKGiê?	½t06%餝¹•¾Dz	»¼(ô†Ñø¾q‡#;¯Ûår¹Í¿§½bgb>Êi[Za—…Þ\Ï  `äl   f@Î  `äl   f@Î  `äl   f@Î  `ŸÏ ZådåfI:
+igŒ§Ø¡AÎ`ªÜ¬¢¬+·Ù&Ú’Dzåå”B³¡Ó@Î`0¶‰¶‹‡­¤£fx;t*Œ¹ž-:f] cÖÕ6è
+ ™‚]^”,÷†$s6‹ÅªW’ššjdd¤ªªjooŸ™™):ëìÙ³ºººMUc‰ ê|úô)88X[[[^^ž*Î*,,ÔÖÖ.صkW‡séÒ%ª‚ŽŽÎ¹sçèÚì& 7dYuåKwÇfÚKÜwTW¾Å»pËÁz£¥®Ç·}ÿ¾Q,©Aì°Ë‹Bo´’tg>|822²¸¸ØØØxÞ¼y¢³Ž9bmmÝL5Á?¨?ýôSDDDBB‡D%eddÌš5ëðáÃÂëêê–/_îííM•ØØØDGGÓº¥­Þ{·%*)+$^ܦ¤¬°/0QtÖ‰xw·Û™kA:£5|ÜC%!t ìò¢Ð’®œšš:fÌ%%¥9sæôêÕKt֝;w†ÒL5EEEeee{{ûGB<¸k×.ccc9¹ÿÛÆ˜˜??¿K—.YYY5\{÷îÝ©	uuõÂÂB:6ð³ 7dGÖ•ÛÎ˧
+Ñør¡ûÔ,ÞmÑYûcÖèh(ôëm3clžÝ$!t ìò¢Ð’®œM©¨¨pppسghayy¹ªªjSÕAMMÍï¿ÿÞ«W/BHYYÙ\¡    IDATü¡¦¦fmm-<¯²jÕ*ŸaƉ¶Ãb±ºuëæêêJ!„¨©©=|ø¶íû<è
+YP[ýz¨fBÈPÍ5Õ¯V¨zþÒgÙ~¿ÍNt4ìò¢ÐõH]ξq㆙™™­íÿÜ
+«®®^YYÙ|5]]Ý-[¶Ü¸qƒ¢¬¬¬««[RRâäääããCUHOO_½zuBB‚hˁàÇqqqîîîTÉóçÏ…?â$½!#ú)÷yÀ¯ „<à?UTîSoîßsšÁuY1Ýr2[ÑAÇÁ./
+½ÑtåìÈÈÈo¿ýöСC,¨7KOO¯¼¼¼ùj÷ïßß¶m›¡¡!!dêÔ©äŸ
+„çCLLLÒÓÓýüü"""D¤ª½}û–úX^^.¼ÁA‚вÃÌR/ö`ZyÙ³¸ˆófVú¢³N»¼Ê%$ ÈÍÖn¼¤ÂƒŽ]^z£QÎÙõnð[¶lÙ³gÏlll¨’ºº:aÍÅ‹_¼x‘šnXš°¶¶îÝ»wll,!dûö퉉‰C‡ýå—_BBB„íèêê^¹re×®];wîÆÐ­[·aµ‹/ºººvLˆBoȬÕ«*kçNÞPUYëµ~!Ä`Àß§Á7ûDQw•p2àôæ¿o%)ˆvyQèÖä;U>ôÖÌcp¶¶¶Tï·rA55µz7èëhjjÞ»w¯™5Þ½{7   …èÅ
+½!ËTÔ"¯ktVÁÓ£tìò¢Ð­Ä˜÷ ±X¬ãǏw̺:lEm†ÞèôªAvyQ²ÜÒu=  ¡Iž’@*0æ8 Ú€Êv=zvm¬=ßmŠž¡&UžvòÇ.?)¯0He¡û4Î#ªrFAXÃÅ	!õÊcÂÏÆ„Ÿ«WXO£u6(ø$HŠM?“œùäQ•à“ £ ,3#?&ülÕ³—ÆZsœ&êiµyó:äl Úåd‘à:šÕek´X-£ ìÝÛ÷i7îN	=êC9“”y2žç°h²©¥^Mõ«¸ˆ4*g7º,ip˜[\øð×äkͯ´©:
+L‰çIÎܸÓuÄ(u–‹’‘–¼¤wßžçr·øF'¥¶¸ 2çÆèåác'ù¿ÉbÉɳ„·Ø¤Äóü·:OiÚO±·†ÖÀMAn­oéý»A›â6l_$,yôðù·½3Ì¿XÉ/}ÒhfNn§¿êî={¤î*aB6¹
+ª&//÷E×.Õÿ~uF\DÚ,K?7»mü’Ç­ “Áq6 í<|ìhi78åÍ›–ýšdàÙ½GW}ÃáË¿ŸM•T<®6¼ÛÖ¹÷ôÔYfì±#„%A›ŽYNfoÞ³,û÷;±ág¹!KÖiæ,zÅ“êÂ|~È–øá#;{L×7NþÉñʪ
+{üýÚç¿þútää'ãyñ‡/lÜ%EÏÞ t$äl€N®a¾ì?H¹ì^ÅHݶ¼Ý)%ž' ÿ\ÿ.-zxûÖŸa»’	!]¾èÒhfì«Ðk˜Ö€Ø_¹×.çN	;æKÅ\[Sw9-÷G¿èƒ¿øBf9ZöSê3{>ÇÍ~[Â萳dŽÝ|Î΍±óO6µÔ{Qõ*."­õ§ÇÓóÿþÛbÂd¬ý•ú„Éìɶ&ý”ú4U§c-t!ÔŸF¤N‡lIpZ:¥[®„Úš¿ß¤q:ñêÌyN'þn$rø khÌÙ<ËåÒ×¾Táñxlvsï‚Fo€ôøf®…¼¼\RLú¾m‰«,tŸÖTMáuhj¢Ñ¼n»Kr\†ç‚ §«›ª#LÞ
+\ê5sÇÆ¸Ðɺ£5VøÚBô†{»íûøá£žáðMAŸ—“c¹ÌüQEUa½Èeri†]¾^ô†XЕ³ÇG©­­¥©}iÃf³©Mnz$¥©ÃÜévæÓíÌ[¬ÜÌQ²pVÿÊ+ýç®ôŸÛL†Bý”úì8°B´ÄzÆXëc¶ÓÌoiƒ]^zCŒèÊÙ¦¦¦¦¦¦45Î8è
+ ™‚]^zCŒð¬   3 g  0r6   3 g  0r6   3 g  0r6   3Ðõ|vvvöõë×ij\:7®©gÑÐñòrJósK$E#F`›hK:
+za—…Þ#ºröõë×óòò8MíKGiê?	½/?·ä?·ª¥í!;;›’NŸ³±Ë‹Boˆïçp8²ó‚Y.—Ûü›ùÐÐñLMM½¼¼$E}µïK%BGÀ./
+½!.¸ž
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   ÌÀ˜œ-èhÙÁÁA ÐÑ2}ÐÐ455%ü
+»¼(Yî
+Iæl‹Õ°„Ò°òÙ³guuu©éS§N±ÙlUUU{{û«W¯BRSSŒŒ¨’ÌÌLÑÆµµµÃÃÃ…íwíÚ•Ãá\ºt‰ª ££sîÜ9z6ñ3 7@4Ÿ§5ÿÑañtbØåE¡7ZIºŽ³AS¿qŽ9bmmMM'$$?~üîÝ»VVVóæÍ#„>|822²¸¸ØØØ˜*¡dddÌš5ëðáÃÂUÔÕÕ-_¾ÜÛÛ›*±±±‰ŽŽ¦q«Ú
+½Ò†Ïçóù|IGÑia—…Þh”tåìfܹsgȐ!Ôtbbâˆ#ºtéÒ­[7---BHjjê˜1c”””æÌ™Ó«W/ªZLLŒŸŸß¥K—¬¬¬6ؽ{wjB]]½°°°C6BlÐ eeeóçÏ700ððð(..¦ E¤£¢¢LMMgΜyåʉF*ë°Ë‹’åÞ ñoqŠWyy¹ªªªð#u®cÀ€¿ÿþ»°°¢¢ÂÁÁaÏž=ÔÇU«V:thذa¢íPöèÑC8©©©=|øæðÅ½báïï?eÊ”ðððË—/ïÛ·ÏçkjjŠI¿zõêܹs<oïÞ½vÐ1°Ë‹’åÞ`Ìq¶ººzee¥ð£@ xþüùºuë©’7n˜™™ùøøØÚÚR%ééé«W¯NHHmG |øð!..ÎÝݝ*yþü¹ð'S 7@,
+·nÝjhh¸fÍšôôô†V®\©¤¤4{öìüüüŽ„°Ë‹’åÞ`LÎÖÓÓ+//§¦ÝÝÝ>|HýD¢þç"##¿ýöÛC‡-X°@¸ˆ‰‰IzzºŸŸ_DD„hSÔ‚oß¾¥>–——og`
+ôˆ…ŽŽÎÆsrrø|~qq1!DEEåÁƒÂ
+_|ñiìþ è`ØåEÉroHøÜ¸èX „©	Ñ/^|ñâE333BÈ„	&NœøþýûñãÇ'&&B–-[F±±±¡*¿~ýššÐÕÕ½r劵µumm­¿¿?Õ²¼¼ü¸qãBBB¨:/^tuu¥yC[½,$$$::ÚÎÎŽù|þ‚lmmß¼yÓè½fÂëÜÔîGk'ìò¢Ð­!ÉœÝðžÀfŒ³µµ¥¦œœœœœZÙ”¦¦æ½{÷šiÿîÝ»Ÿ8-ÐÐñ¼iÓ¦M›6	K¼¼¼¼¼¼¨iÑ”LM#I‹vyQèVbÌ=h,ëøñãt´LS³´Bo Èìò¢d¹7s=  @Æ!g  0r6   3 g  0r6   3 g  0r6   3Ðø|6Çãr¹ôµ/Ux<›Ín¾z:Xvv¶¤C¨/;;û+#eIGѰË׫€Þºrö¸qã!µµµ4µ/mØl6µÉBo@Çm<‚’Ú÷¥’ä|e¤<Úx„¤£ vyQè
+1¢+g›šššššÒÔ8ã 7 ã±M´Ù&Ú’ŽBFa—…Þ#\Ï  `äl   f@Î  `äl   f@Î  `äl   f@Î  `ºžÏÎÎξ~ý:MK§qãÆ5õ"zh’—SJÈYIG!½òrJÍ­ô;~½ØåE¡7Ĉ®œ}ýúu™ze^^!¤©ÿ$ôÐÁØ|”¤CvæVúé%ìò¢ÐbDãûÆÙl¶‹‹}í3zÄÎÄ|”	Ò¶´Â./
+½!.¸ž
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  À4>Ÿ
+ ´ÊÉ*ÊÍ*’tÒÎO±C'‚œ
+ÀT¹YEYWn³M´%ˆôÊË)%„ gC§œ
+À`lm[IG!Íð2vèTp=  €$œ³ÓÒÒ–,Y2}út777×ÎÖ&Mš4iÒ$[[Ûõë×ß¹sGtVPPн{÷>~ü¸råJª¤¦¦Æ××wÆŒ¾¾¾555í\µXH°7&ý£+•~Õ•/Ýw˜i/qwÜQ]ùRtïÂ-덖ºkÜöýûF1¢ºa …°5$™³Ïœ9“””4gΜøøø7þþûïío3###%%e„	-,ëîÝ»_}õU©¨¨¡¨¨ÙþU·“d{######£ýk”~{·%*)+$^ܦ¤¬°/0QtÖ‰xw·Û™kA:£5|ÜCÐ
+ (€­$ÉëÙ)))k×®9r$!¤_¿~›6m¢ÊËÊÊvîÜYVV¦¡¡áëë«¡¡1iÒ¤ùó秤¤œ;wîÑ£G!!!%%%cÆŒqqqÑÔÔlزœœœ@  ¦Oœ8F9þ¼p½999ƒ
+š3gÎÆ;bƒ›%ÙÞèˆ-”YWn‡Æ~?DãË…îS¿s	µ?f
+5a3cì©D1L
+h…PÀV’äqvEEŰaÖ;vÌÄÄ䨱cÆÆÆAAATaïÞ½SSS	!AAAãǏOHH°°°ˆ­·ì¤I“fÏž‘‘±|ùrªÄÞÞþôéÓFFFFFF§N¢þ‡^¾|9xð`BÈàÁƒkkkiÛÊÖ’loÈŽÚê×C5ûB†j¨©~ݰBÕó—>ËöûmvBT at +€¢0 ¶’$³û÷ï_VVFý°uóæÍ¨¨(EEÅY³f%%%Q…³gÏîÒ¥!¤´´ôöíÛÔo%ªDTÃÿ á%
+jbÖ¬Yß}÷ݬY³=z¤­­ýèÑ£~ýú‰{ã>›d{CÜ[#½ú)÷yÀ¯¥?ìÿ©¢rŸzsïüûž{誵s,'³Ð
+ (€­$Éœmgg·sçÎyóæ™šš¾xñ"..Ž:2f̘ÔÔÔo¿ýöÔ©SÂ_^ݺu£&´µµ'L˜0yòäV~Ï22280~üøž={¦¦¦~ÿý÷T¹±±qRRÒ¢E‹’““Å¿yŸI²½!;Ì,õb¦­ðµ‹‹8of¥/:ëıˡ;“÷{˜Yé!* @Q [I’9û›o¾‘——OJJÚ·oßÀ.\H•;99=zÔÍÍm̘1þþþõ–Z·n]rr²§§çÓ§OIc¿¤*,,\¶lYAAAŸ>ÿw³téÒÀÀÀ¥K—Ž5jýúõâÛ¬6’loÔûùɸóE­·zƒãº•æNÞ o4|{è
+BˆÁ §‚§G	!›}¢!îŽ;¨šÙîÙ«;5ÝâÇÚù²­¶EŒ†PÀV’ð;U¦OŸ>}úôz…C‡ݰaƒh‰höïßåÊ•Â{ô›ª&Š:sbddddd$,TRR
+nsät`oHówT¼TÔ"¯kt•#•›Ut7·šÃá4:—ÇãRÔžœÝ¶¨€é0 ŠÂ ØxȺV&E‡ÃårÅårŸ×ÝgLHÕ Ð¼
+  €pœ
+ЙM2ð$„ôèÙm´±ö|·)z†?ÀšvòÇ.?)¯0He¡û4Î#ªrFAXÃÅ	!Âòšêׁë.*(e0l}à"Eå>­)6ؚʂO‚¤Øô3É™OU	>	2
+ši@¦ gC§’“UD‚SèhÖÖF¿ù
+t¬·y9YEºl«e„½{û>#íæÁÝ)¡G}!g’2OÆóM6µÔ«©~‘FåìF—%"™›¹÷”¢RŸˆÄµ1ág#÷öÛâÔš’ÏZ<%žw&9sãN×£ÔYr¬F—jg×0΍È KNž%|TJ<Ï«óÔ™¦ý{kh
+ÜäÖú–r²Šæ:=hˆêœ…“¨{é[S"Ìú­©œzüª»÷쑺C¨„Ýh Ù„ãlèTLÌGyøØ‰¿Ý–Ž¡éZoó‚SÞ¼yÛb­IžÝ{tÕ7¾üûÙTIÅãêaÃû·m/kÿ;x¨!dðPµÚšºV–O­·¦rÅ“êÂ|~È–øá#;{L×7Þ°€lÂq6@'—QvîúžWêiQ%ý)—Ý«h[k
+ýz=zðœòèÁó~н[YòY‹÷Uè5Lk@ì¯ÜÉ3L§4ß €LAΐ9vó9;7Æ^HÍ~Y[wÿÏ'[|£Z¿¬±Ù¨¤Øô'åUÉqÆf_µ²ä³k¡Ca±!„:=ÞLƒ 2E2çÆóòòòóó%²êö=z4›-þ>£7Çã5õ|6ÇÓ1VîØpÚ囹òòrI1éû¶%¬²Ð}ZS5…ס©‰Œ‚°¥«g®ûyéÜÀQúÃÖo_DiM‰ðŽôV-î5sÇÆ¸Ðɺ£5VøÚ7Z‡Ñ°Ë‹Bo|Éäìüüü²²²¦Þ*%¨¿ÁNÇzCú›"¤¨©§è+·ã%h´ª÷ì–Ðt;óévæ-VnX¢¤Ò78ò»Ï-¶ÓšÊý”úì8°¢ù:Œ†]^zã³Hì´fÞ*%¸\nYYM£7¤œIû^'PvyQèÖÃõl   f@Î  `äl   f@Î  `äl   f@Î  `äl   fÀßèœòrJósK$Àhãlm	 Ðù gtNù¹%ÿ¹Umjj*‘µgggR‚œ
+ ^ÈÙ –©©©———¤Ö^û¾TR«è¬p=  €¤7g³X,‹Õ§OŸ3f\»vMXX¯Nk–¢¸¹¹åççøðÁÌÌŒ*yö왍Mß¾}mllž={FÛ¦ˆAôFjjª‘‘‘ªªª½½}ff&m› -ë€]žõÚ6Bl: 7N:Åf³©ðêÕ«´mJ{IoÎ&„‚gÏžÙÙÙùøø´©OŸ>ÉÉÉýñÇcÇŽ¥JÖ®]«¦¦vëÖ-55µuëÖ‰3tÐÝ‡ŽŒŒ,..666ž7ož8C€ÏG÷./8#¦ݽ‘püøñ»wïZYYIó (í׳Y,–¼¼üç~±ê-µwï^oooBÈÏ?ÿL•üôÓOàâÅ‹gΜÑÒÒòööž9s¦X§­½‘ššJ}œ3gΑ#GÄ4 ´­»¼X#í´öFbb"!¤¦¦¦[·nZZZâŒ[¬¤ú8›Åb©ªª&$$µg©Õ«W¿xñâ믿_ýuUUõÿWUU5bÄBȈ#*++éØ1¢»7({öìsô ð™:f—gŠè
+‹¥¤¤´yóæèèhño€˜HõqvÃ/Vß¾}‹‹‹GŽI)..VPPhÍRÂëÔ„ŠŠÊþýûW®\©¢¢RRRbddTRR¢ªª*þ
++º{ƒrãÆyóæmݺÕÖÖV
 ìñÀgé€]žA: 7Aeeå/¿üâè蘛›+öM©>ÎnÈÒÒ200°¸¸¸¸¸800ÐÊʪ5K	ooowëÖ­%K–êÈÚÚ:$$äÞ½{{öì±¶¶¦9vñooDFF~ûí·‡Z°`́@[ˆw—g:ñö†»»ûÇ©D.ͧ]–³ÃÃÃ_¾|iffffföêÕ«´rÁ¬¬,33³/^())	wìØQQQÁf³+**¶oßNOÈ4oo,[¶Œº‘žºÙ²®®Žž¨ Ä»ËogÊÝãõˆ·7&L˜0qâDCCÃk×®Q×¶¥“ôžoôŠËàÁƒO:õ¹K‘¿ßÊD¾þú믿þZXØ¿ÿß~û­}avè
+&^â謰ˋê€Þprrrrrj_˜aÇÙ   29 ¡©©)é  >äl   f@Î  `äl Ù•`cc3|øpêLxQQÑÔ©SÇŒ³ÿ~aMMM--­…ÞºuKr‘ !ÈÙ ²,44ô_ÿúם;wø|>!$<<|êÔ©.\xÿþ½°ŸÏ/..vrr
+“\¤ @r6€,Û¼yóùóç'L˜CÉÊÊZ¸p¡ŠŠŠ‹‹UáüùósæÌ100ðððÈÊÊ’h° €œ
+ Ã&Ožœ˜˜A177?zôhuuõÑ£G©
+;vìX´hѵkׂƒƒß½{'Ñ`@rïTáñx\.WRko7lØ0úGo@Ç£.ckjjzyyB<<<¼½½cbb/^LUXºté®]»¶nݺdÉIÚé`—¯×8z£•$“³GM)++“ÈÚÛfذaTØb‡Þ I¡.c5êüùóÔôªU«!,¾i[\°Ë‹Bo|Éäl6›Íf³%²j)„Þ )ØåE¡7>®g  0r6   3 g  0r6   3 g  0r6   3 g  0ÏgçååÑ׸´ÉËËãp8ÍWè¨X$¯ÅÞ€Ž‘-ÁUe¤,©µKìòõ*tT,’Gë HWÎ7nM-K'‡ÓÌ&£7 ã6AHIíûR‰¬ý+#åÑÆ#$²ji kß€¢h éÊÙ¦¦¦¦¦¦45Î8è
+èxlm¶‰¶¤£QØåE¡7Ä׳  ˜9  €³  ˜9  €³  ˜9  €³  ˜¡]ÏgKð-KÀ\ÙÙÙFƒ$E'‘—SJÈYIG!½òrJÍ­ôij ´A;À¶çlcóQ„÷¤¼Í-€l2²D}y Ð-2·Ò§©—0 BÛ´s l{Î61e‚!@r°J:$׳  ˜9  €³  ˜9  €³  ˜9  €³  ˜¡]ïA 	ÊÉ*ÊÍ*’tÒθRçd‘àñÆÐŒœ¬"[›æÞ܇œ
+ÀT¹YEYWn³M´%ˆôÊË)%„´-gs81GÐ[ýæ¿xÈÙ Æ6Ñvñ°•tÒ¬í/cçp8HÛ mp=  €³  ˜9  €³  ˜9  €³  ˜9  €ð|6@ËZ|ãX{^¶ ÐJÈÙ -ËÍ*º›[ÝÔ6x<!EÈÙ @7äl€Váp8\.·ÑY\.÷yÝíŽ
+ d®g€˜M2ð”t ޳:3*}öèÙm´±ö|·)z†šTyÚÉ?N»ü¤¼rÀ •…îÓ8SŒ¨Êa
+'„Ëkª_®ÿ¹¨ l”Á°õ‹•ûdñ
+bœ{^Qc`¬5gá$}ÃáÍÄÓpqÑO­%3#?&ülÕ³—ÆZsœ&êi}Ö* :1älèThúã‰-þ<‰üÑÆœ¬"]¶F‹Õ2
+ÂÞ½}Ÿ‘vóàî”У>„3I™'ãy‹&›ZêÕT¿Š‹H£rv£Ë’ÿ=nŽÜ{JQ©ODâÚ˜ð³‘ûNûmq:{"ë{îüƒ”Ï$enñ‰JJl&˜†‹‘¯4-7 xIï¾=3ÎånñNJü¬U tb87 X,9y–@  >¥Äóü·:OiÚO±·†ÖÀMAn­o)'«h®ó׃†¨ÎY8‰º—~Ûþå#t†ôQèeicØ£G7ªZ\DÚ,K?7»mü’ÇD$ë7\œòíxŸ™üÖDV>«%„l
+r<TM^^î‹®]ª«6µ
+ „ãlèTLÌGyøØ‰¿Ý–Ž¡éZoó‚SÞ¼yÛb­IžÝ{tÕ7¾üûÙTIÅãêaÃû·m/kÿ;x¨!dðPµÚš:aù‹ªW[|¢VøÙSÿúëÓ‘“?œŒçž°q—«ðHºáâÔ¬²{O¢/îØ»ûðw䟯¬ª°÷ˆwS« A8Îèä2
+ÂÎ]ß³óàJ}#-ª¤ÿ å²{mkM¡_¯GžB=xÞO±7UøŸ;e+‚\&›ZêQ%³-•û̞Ϲu£¤ÅÅ	!ÆXì9ã?wÊ„1§\Ù9ßÍæG¿è¦V ƒ³dŽÝ|Î΍±R³_ÖÖÝÿóÉߨÖ/kl6*)6ýIyUr\†±ÙW„³'®mXuðû€ù“mM„ÕN'^­}ñútâïFcG4¿8åéãêc‡Îk}¥N	Ù’ðüé‹B¨cñFW ƒpn Ux<^SÏgóx<cåŽ
+§]¾™k!//—“¾o[âÀÁ*ݧ5USxššÈ([ºzfຟ—Î
+¥?lýöE„Ý›ã	!¾îû©šg³C!rr,—™?ª¨*Pu„w¤7\œjy ºŠ™•þº@gBˆ¾Ñpo·}?|Ô3¾)ȵÑUôè‰«Ú ‹³Zfl>А¢¦^œ¢c¬l,­/A«wK¶Ðt;óévæ-VnX¢¤Ò78ò»Ö,%úS at X§5‹[Ïk=clk¶@Ö g´Ì¯ )€ëÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+  ÀÈÙ   Ì€œ
+„­t
+  ëIDAT  ÀÈÙ   Ì€ç³,/§”³’ŽBzå唚[5÷GT˜9€©¤öåkÒÃÜJ½	r6 Sáíl ²׳  ˜9  €³  ˜9  €³  ˜9  €³  ˜Ïg´,'«(7«HÒQH;c</@3äl€–åfe]¹Í6Ñ–t Ò+/§”‚œ
+ at +äl€Va›h»xØJ:
+i†×žÐ׳  ˜ÇÙ [ª+_®_^póOƒ1Zû=”U„³8QOJ(: €æà8dËÞm‰JÊ
+‰·))+ìLUðô(²5 H3äl-YWn;/Ÿ6DãË…îS³x·% Àg@ÎÙR[ýz¨fBÈPÍ5Õ¯% Àg@ÎÙÒO¹Ï~!äÿ©¢rI‡ ð³A¶˜YêÅL+/{qÞÌJ_Òá  |äl-«78VUÖΝ¼¡ª²Öký<"r»¸Á 'jZ8  Uð¬È5…Èã띅›Æ@Êá8dR5 0r6   3àÜ8€xL2ð$„ôèÙm´±ö|·)z†šTyÚÉ?N»ü¤¼rÀ •…îÓ8SŒ¨Êa¢‹ßÈ,L>z¹øÎƒ‘zCç8Mk¡[Sý:pýÏEe£†­\¤¨Ü§aÁ'ARlú™äÌ'ªŸ¢mffäÇ„Ÿ­zöÒÀXkŽÓD}#­†1gñ
+bœ{^Qc`¬5gá$}Ãá
+WJc—ÀgBΆN%'«ˆ§ÐѬ.[£ÅjaïÞ¾ÏH»ypwJèQBÈ™¤Ì“ñ<‡E“M-õjª_ÅE¤Q9»¡b=|ì‚Ý23òwlˆM¹²3rï)E¥>‰kcÂÏFî;í·Å©a”xÞ™ä̍;]GŒRgɱþ'˜´Ü€à%½ûöÌ8—»Å7:)=°áJÏžÈúž;À å3I™[|¢’Ò®´M ´À¹q ±b±ääY€ú”Ïóßê<u¦i?ÅÞZ7¹5µœú°/…ÓôBr²Šæ:=hˆêœ…“¨¿ÞݰNêñ«îÞ³Gê&lêpŸ²)ÈmðP5yy¹/ºv¨®*œû5{¥ï²ý…y|BȶýËGèé£ÐËÒÆ°Gn® ¤޳¡S11åác'þvƒSÞ¼yÛb­IžÝ{tÕ7¾üûÙTIÅãêaÃû·f
+þ[W9oߣ¨Ü'4·ò²ö¿ƒ‡ªBU«­©k´NÅ“êÂ|~È–øá#;{L×7.zzœÊßʪ
+{xS%aýõéÞíc‡/†zP…/ª^mñ‰ZágßèJ@z gˆM½KÔ„þƒ”ËîUŒÔÒâ²?úE-_cg>Q?3#‹oTx‚¿B¿^<×¥þèÁó~н­ÓW¡×0­±¿r¯]Î?œvÌ·^<µ5u—Órô‹>ø‹ÿï¿åùí^ñãwoßwíöUç?wʶøD»®úÆÔRÒp¥  =pn€Fvó9;7Æ^HÍ~Y[wÿÏ'[|£šªùé/pš:³nl6*)6ýIyUr\†±ÙWÖk¡Ca±!¤Þõì-	ÏŸ¾ fQGÌ!'íL<~iëÚmÎïß} „œ=qmêƒßÌŸlkB-Õp¥  =³hôÍ\‹9'%ŤÿkÊÛüXY6UÓÃ×þâ™ëÿšòÃo¿æ¬ðµ'„,]=óEÕ«¥s_T½Zâ5³ñ:^3/Ÿ¿åhóÃå´›T‰ðz¶¾Ñpo·}Ëæn¿“ÇßäJq\49rïiW»mµ/þ>é½{s|Mõk_÷ý“<'xþ¿7ï® ¤΍ˆGÃã”évæÓíÌ[¬Ì6Ñf›h‹–(©ô
+Žü®ù:ý”úì8°¢Ñ–­gŒµž1VtÖ7¾q˜@M;¸|Ýh=zv«·R 8Î  `äl   f@Î  `äl   f@Î  `äl   f@Î  `äl   fÀ;U Z%/§”³’ŽBzå唚[éK:
+€N9 eÆæ£$‚´3·ÒG/Ð
+9 e&æ£L @Òp=  €³  ˜9  €³  ˜9  €³  ˜9  €ð|6@Ër²Šr³Š$E'dŒß>r6@Ër³Š²®Üf›hK:N%/§”‚œ
+ÐzÈÙ ­Â6Ñvñ°•tÞßðyp=  €³A¶ð.Ür°Þh©ë±Æmß¿o‹Îª®|éî¸ÃL{‰»ãŽêÊ—’Š  )ÈÙ [NÄó¸»ÝÎ\Ò­áã*:kï¶D%e…ċ۔”ö&J*B €¦ gƒlÙ³FÇ@C¡_o›c{ôì&:+ëÊmçåÓ†h|¹Ð}jﶤ" h
+r6È¢ªç/}–í÷Ûì$ZX[ýz¨fBÈPÍ5Õ¯% @“³AæÜù÷=§\—Ó-'³EËû)÷yÀ¯ „<à?UTî#¡è  š„œ
+²åı˫\B‚ÜlíÆ×›ef©{0­¼ìY\Äy3+}‰„ Ðäl-›}¢¨ûÃ
+8pzóß·þ>C¾zƒcUeíÜɪ*k½ÖÏ“lœ  
+á* [
+žmj–ŠšBäñu ÀgÁq6Ⱥf²8 €TAÎ`ŒIž’ $	çÆăJ¨=zvm¬=ßmŠž¡&UžvòÇ.?)¯0He¡û4Î#ªrFAXÃÅ	!ÂrÑ]¯²PfF~LøÙªg/
+Œµæ8MÔ7ÒÎ|$ŦŸIÎ|ò¨JðIQÖTå˜ð³1áçšZ HälèTr²ŠHp
+Íê²5Z¬–QöîíûŒ´›w§„õ!„œIÊ<ÏsX4ÙÔR¯¦úU\D•³]–48’n1f¤å/éÝ·gƹÜ-¾ÑIéÂY)ñ¼3É™wºŽ¥Î’c5U¹¸ðá¯É×ZÜ4 87‡‡äÿ°#‹%'ÏÔ§”xžÿVç©3Mû)öÖи)Èí³ûv¼ÏÌ	~k"+ŸÕR%qi³,ýÜì¶ñKB6¹
+ª&//÷E×.ÕU‰HÖO=~ÕÝ{öHÝ!TÂn´òûw‚6ÅmؾHt¥“<¿f¯ô]¶¿0ßæn  :à8:;ZÚ
+Nyóæm‹µ&xvïÑUßpøòïgS%«‡
+ïß¶uRÙe÷ž&D_ܱ!v÷áï!ýõéÈÉNÆóâ_ظ˕ü“¤•Uöñ&"‡æOªóù![⇏ìì1]ßpxÃÊ‘{OOeÆ;¢ÞzÿúëÓ¼ÛÇ_õh[ð @äl ±ix*»ÿ å²{#u‡´¹ÍaÃ,öœáf·ú8ËѲŸRŸÙó9nöÛ„+­­©»œ–û£_ôÁ_ü…öUè5Lk@ì¯Ük—ó§„ómX9%ž' ÿ\bÿý·¼ã1¿Ý+~üîíû®Ý¾hsØ @œ ‘Ý|Î΍±R³_ÖÖÝÿóÉߨÏmáéãêc‡Îk}¥N}<xµöÅëÓ‰¿A	Ù’ðüé‹BjkêDk¡C¡fQ§ÇVNÏÍ(£~jPÿF„œ´_0ñø¥­k·9¿÷¡í[ 4Àq6 ¾™k!//—“¾o[âÀÁ*ݧ5USxššÈ(£&ª«˜Yé¯t¦æÊɱ\fþ¨¢ª°~û"Bˆ¾Ñpo·}?|Ô3¾)èïSåTö]ê5sÇÆ¸Ðɺ£5Vøþÿöî($ª=àø¿‹ÁrÙ''{…¤û I)˜‰	»] Š%Ø—¦%¡\0¬‡|
+ziV°Ö‡MiAèiƒ
+¢Q‰ãbôpCÉ ÇÕ‘‚%¶"؇a¥í:•Wï9çßý|†aÎ8ó›AæËœ¿çø‡uïüSüÓïÿvõŸýË?Nä·uo°5¶
+
+
+­»mhhè_ÿ~òK-B<F‡o¿~ýŸS>’ö _•¿ÞýöÛߤø	3:|{ço+} BÖ
+
+Ù7 qÐl ˆƒf@4 â Ù Í€8h6 ÄA³ ΃›5?·øøÑBŠìinhjÙµî¦,Ïl”fÃf=~´ð
 ô‡Rkkk*Ï^,CX¨ÔÅ,Ïl”fÃhmmíëëKëÙ_¾]üÄÖ,Ïlˆõl ˆƒf@4 â Ù Í€8h6 ÄA³ š
+ qÐl ˆƒf@4’P__¿v™5Yž
+øfC–––Ö½}ee%ŸÏ766æóù•••„§*«4[ýÿ$<P‰fCš
+…B.—›œœÌår…B!íqþÏÒÒR¥œ©ÐlHÂÚ·ÕëׯïÛ·ïðáÃOŸ>
+!ÌÌÌtww×ÖÖvwwÏÎÎfj6 k4õþýûû÷ï:thtt4„°ººZNf]]]©TÊÔl@Öh6$êäÉ“;vì8uêÔÇCÕÕÕåýÏÏŸ?Ïår™š
+È͆DMLL”J¥‰‰‰¶¶¶B{{ûØØØ‹/ÆÆÆÚÛÛ355Ui ¿.ß|óÍ¡C‡vîÜ922Bèïï¿páBWWWSSSù–ì̶¶Î]¾âïÑ uš
+I(¯|yîܹµÛkjj&&&R+„Py6‘†¬±o â Ù Í€8h6 ÄA³ š
+ qÐl ˆƒf@œS¶@±XLñ©wïýԉʳ<°!š
+›µ§¹!„…—oSyöÝ{s{š*mÍòlÀFi6lVSË®¦–]iO±¾,Ïl”õl ˆƒf@4 â Ù Í€8h6 ÄA³ ŽÏ†ÍšŸ[|üh!í)6kOsƒ#¹!ã46ëñ£…§?”Z[[Óäç+‹!,h6dœfÃhmmíëëK{ŠMIëü¦À—³ž
+ qÐl ˆƒf@4 â Ù Í€8h6 ÄA³ š
+ qÐl ˆƒfCúêëëÓˆ€fCÖ]»v­RÔWVVòù|ccc>Ÿ_YYIx0 aš
+™öäÉ“[·nUÚZ(r¹Üääd.—+
+I$O³!	õõõãããmmmSSS7nÜ8pàÀÑ£G§§§×î300pïÞ½ÂÝ»wBoÞ¼éïï©ô°333ÝÝݵµµÝÝݳ³³	¼ Eþ'$äÕ«W“““SSSgÏžíéé¹sçÎôôôÕ«W;::Êw<}út©TzðàÁøøx¡P(œ8qbÿþý•suuµ¼Û¼®®®T*%óB€´øž
+	éíí­®®>~üø»wïz{{s¹Ü±cÇæçç×îPUUÕÓÓ388xþüùªªªÂÍ›7/_¾\®òºKÚÕÕÕKKK!„çÏŸçr¹¤^
+͆„lß¾=„°mÛ¶®¯yýúõÈÈÈÍ›7‡‡‡ß¼yBxöìÙÒÒR¹Êåˏ´··½xñbll¬½½=W¤H³!+.]ºÔ×××ÑÑqæÌ™¡¡¡/ù‘þþþååå®®®ååå‹/þÂ)³ž
+Iøð[òO¯—/¯\¹R¾±³³³³³³Ò¨¦¦fbbb«‡2J³!-iW
+9ðµÒlˆ†Hïœõl ˆƒf@4 â Ù Í€8h6 ÄÁ±^°ŠÅbÚ#lJ±Xܽ×éÊ!ë46kOsC/ß.¦=ÈÏ·{onOsCÚS Ÿ¡Ù°YM-»šZv¥=ðõ³ž
+ qÐl ˆƒf@4 â Ù Í€8h6 ÄÁñÙðEæçC¸›ö_•ù¹Å¶ƒiO1Ñlø¼æ¶ïÒá+Ôv°Ñ¢Ùðy-mßµ¨6ë٠̀8h6 ÄA³ š
+ qÐl ˆƒf@>s|öÜÃÃðídFHÒÜÏ|ïDlÄäSÍîììLj€¤ù¾Ñ§qùL³ýB@FXÏ€8h6 ÄA³ š
+ qÐl ˆƒf@4 â°íàÁƒÂ€Œ›ššú/#0ZÕ»Rb    IEND®B`‚
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/devel09-pci.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" nodeset="0x00000003" complete_nodeset="0x00000003" allowed_nodeset="0x00000003">
+    <page_type size="4096" count="0"/>
+    <page_type size="2097152" count="0"/>
+    <info name="DMIProductName" value="PowerEdge R410"/>
+    <info name="DMIProductVersion" value=""/>
+    <info name="DMIBoardVendor" value="Dell Inc."/>
+    <info name="DMIBoardName" value="0N051F"/>
+    <info name="DMIBoardVersion" value="A01"/>
+    <info name="DMIBoardAssetTag" value=""/>
+    <info name="DMIChassisVendor" value="Dell Inc."/>
+    <info name="DMIChassisType" value="23"/>
+    <info name="DMIChassisVersion" value=""/>
+    <info name="DMIChassisAssetTag" value=""/>
+    <info name="DMIBIOSVendor" value="Dell Inc."/>
+    <info name="DMIBIOSVersion" value="1.0.5"/>
+    <info name="DMIBIOSDate" value="04/14/2009"/>
+    <info name="DMISysVendor" value="Dell Inc."/>
+    <info name="Backend" value="Linux"/>
+    <info name="OSName" value="Linux"/>
+    <info name="OSRelease" value="2.6.27.39-0.3-perfctr"/>
+    <info name="OSVersion" value="#1 SMP 2009-11-23 12:57:38 +0100"/>
+    <info name="HostName" value="devel09"/>
+    <info name="Architecture" value="x86_64"/>
+    <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="12884901888">
+      <page_type size="4096" count="3145728"/>
+      <page_type size="2097152" count="0"/>
+      <object type="Socket" os_level="-1" os_index="1" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" os_level="-1" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="8388608" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_level="-1" os_index="1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Bridge" os_level="-1" os_index="0" bridge_type="0-1" depth="0" bridge_pci="0000:[00-04]">
+        <object type="Bridge" os_level="-1" os_index="16" name="Intel Corporation X58 I/O Hub PCI Express Root Port 1" bridge_type="1-1" depth="0" bridge_pci="0000:[01-01]" pci_busid="0000:00:01.0" pci_type="0604 [8086:3408] [0000:0000] 13" pci_link_speed="0.400000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="X58 I/O Hub PCI Express Root Port 1"/>
+          <object type="PCIDev" os_level="-1" os_index="4096" name="Broadcom Corporation NetXtreme II BCM5716 Gigabit Ethernet" pci_busid="0000:01:00.0" pci_type="0200 [14e4:163b] [0028:008c] 20" pci_link_speed="0.200000">
+            <info name="PCIVendor" value="Broadcom Corporation"/>
+            <info name="PCIDevice" value="NetXtreme II BCM5716 Gigabit Ethernet"/>
+            <object type="OSDev" os_level="-1" name="eth0" osdev_type="2">
+              <info name="Address" value="00:24:e8:7f:92:68"/>
+            </object>
+          </object>
+          <object type="PCIDev" os_level="-1" os_index="4097" name="Broadcom Corporation NetXtreme II BCM5716 Gigabit Ethernet" pci_busid="0000:01:00.1" pci_type="0200 [14e4:163b] [0028:008c] 20" pci_link_speed="0.200000">
+            <info name="PCIVendor" value="Broadcom Corporation"/>
+            <info name="PCIDevice" value="NetXtreme II BCM5716 Gigabit Ethernet"/>
+            <object type="OSDev" os_level="-1" name="eth1" osdev_type="2">
+              <info name="Address" value="00:24:e8:7f:92:69"/>
+            </object>
+          </object>
+        </object>
+        <object type="Bridge" os_level="-1" os_index="112" name="Intel Corporation X58 I/O Hub PCI Express Root Port 7" bridge_type="1-1" depth="0" bridge_pci="0000:[03-03]" pci_busid="0000:00:07.0" pci_type="0604 [8086:340e] [0000:0000] 13" pci_link_speed="0.200000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="X58 I/O Hub PCI Express Root Port 7"/>
+          <object type="PCIDev" os_level="-1" os_index="12288" name="LSI Logic / Symbios Logic MegaRAID SAS 1078" pci_busid="0000:03:00.0" pci_type="0104 [1000:0060] [0028:000b] 04" pci_link_speed="0.200000">
+            <info name="PCIVendor" value="LSI Logic / Symbios Logic"/>
+            <info name="PCIDevice" value="MegaRAID SAS 1078"/>
+            <object type="OSDev" os_level="-1" name="sda" osdev_type="0"/>
+          </object>
+        </object>
+        <object type="Bridge" os_level="-1" os_index="480" name="Intel Corporation 82801 PCI Bridge" bridge_type="1-1" depth="0" bridge_pci="0000:[04-04]" pci_busid="0000:00:1e.0" pci_type="0604 [8086:244e] [0000:0000] 90" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="82801 PCI Bridge"/>
+          <object type="PCIDev" os_level="-1" os_index="16432" name="Matrox Graphics, Inc. MGA G200eW WPCM450" pci_busid="0000:04:03.0" pci_type="0300 [102b:0532] [0028:008c] 0a" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="Matrox Graphics, Inc."/>
+            <info name="PCIDevice" value="MGA G200eW WPCM450"/>
+          </object>
+        </object>
+        <object type="PCIDev" os_level="-1" os_index="498" name="Intel Corporation 82801JI (ICH10 Family) 4 port SATA IDE Controller" pci_busid="0000:00:1f.2" pci_type="0101 [8086:3a20] [0028:008c] 00" pci_link_speed="0.100000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="82801JI (ICH10 Family) 4 port SATA IDE Controller"/>
+        </object>
+        <object type="PCIDev" os_level="-1" os_index="331776" name="Mellanox Technologies MT25418 [ConnectX IB DDR, PCIe 2.0 2.5GT/s]" pci_busid="0000:51:00.0" pci_type="0c06 [15b3:634a] [00b3:004a] a0" pci_link_speed="2.000000">
+          <info name="PCIVendor" value="Mellanox Technologies"/>
+          <info name="PCIDevice" value="MT25418 [ConnectX IB DDR, PCIe 2.0 2.5GT/s]"/>
+          <object type="OSDev" os_level="-1" name="ib0" osdev_type="2"/>
+          <object type="OSDev" os_level="-1" name="ib1" osdev_type="2"/>
+          <object type="OSDev" os_level="-1" name="mlx4_0" osdev_type="2"/>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="1" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="12874317824">
+      <page_type size="4096" count="3143144"/>
+      <page_type size="2097152" count="0"/>
+      <object type="Socket" os_level="-1" os_index="0" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" os_level="-1" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="8388608" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_level="-1" os_index="0" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_level="-1" os_index="1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/diagram.fig
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/diagram.fig	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/diagram.fig	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,452 @@
+#FIG 3.2  Produced by xfig version 3.2.5b
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+6 3060 3060 4590 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 3060 3330 4500 3330
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 4500 4500 4500 3060 3060 3060 3060 4500 4500 4500
+4 0 0 50 -1 0 14 0.0000 4 165 645 3150 3285 Socket\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 3150 3510 .depth = 1\001
+4 0 0 50 -1 0 12 0.0000 4 180 1440 3150 3735 .logical_index =0\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 3150 3960 .os_index = 0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 3150 4185 .sibling_rank=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 3150 4410 .arity=2\001
+-6
+6 4500 3375 8505 3915
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 4500 3600 8415 3600
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 8415 3690 4500 3690
+4 0 0 50 -1 0 12 0.0000 4 180 1035 4545 3510 next_sibling\001
+4 0 0 50 -1 0 12 0.0000 4 180 1035 7470 3870 prev_sibling\001
+-6
+6 7290 2250 8640 2610
+4 2 0 50 -1 0 12 0.0000 4 165 810 8640 2565 last_child\001
+4 2 0 50 -1 0 12 0.0000 4 165 900 8190 2385 children[1]\001
+-6
+6 2205 4590 3285 4950
+4 0 0 50 -1 0 12 0.0000 4 165 900 2385 4725 children[0]\001
+4 0 0 50 -1 0 12 0.0000 4 165 840 2205 4905 first_child\001
+-6
+6 4185 4590 5265 4950
+4 0 0 50 -1 0 12 0.0000 4 165 900 4185 4725 children[1]\001
+4 0 0 50 -1 0 12 0.0000 4 165 810 4455 4905 last_child\001
+-6
+6 7605 4590 8685 4950
+4 0 0 50 -1 0 12 0.0000 4 165 900 7785 4725 children[0]\001
+4 0 0 50 -1 0 12 0.0000 4 165 840 7605 4905 first_child\001
+-6
+6 4275 2250 5625 2610
+4 0 0 50 -1 0 12 0.0000 4 165 840 4275 2565 first_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 900 4725 2385 children[0]\001
+-6
+6 4770 810 5445 1440
+4 0 4 50 -1 0 12 0.0000 4 135 720 4770 945 Machine\001
+4 0 4 50 -1 0 12 0.0000 4 135 405 4770 1170 level\001
+4 0 4 50 -1 0 12 0.0000 4 180 675 4770 1395 depth=0\001
+-6
+6 2115 3150 2790 3780
+4 0 4 50 -1 0 12 0.0000 4 135 555 2115 3285 Socket\001
+4 0 4 50 -1 0 12 0.0000 4 135 405 2115 3510 level\001
+4 0 4 50 -1 0 12 0.0000 4 180 675 2115 3735 depth=1\001
+-6
+6 3105 5625 4455 6795
+6 3105 5625 4455 6165
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 3105 5850 4365 5850
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 4365 5940 3105 5940
+4 0 0 50 -1 0 12 0.0000 4 180 1035 3150 5760 next_sibling\001
+4 0 0 50 -1 0 12 0.0000 4 180 1035 3420 6120 prev_sibling\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 3105 6480 4365 6480
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 4365 6570 3105 6570
+4 0 0 50 -1 0 12 0.0000 4 165 1005 3150 6390 next_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 180 1005 3375 6750 prev_cousin\001
+-6
+6 5805 6255 7110 6795
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 5805 6480 7065 6480
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 7065 6570 5805 6570
+4 0 0 50 -1 0 12 0.0000 4 165 1005 5850 6390 next_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 180 1005 6075 6750 prev_cousin\001
+-6
+6 765 5490 1440 6120
+4 0 4 50 -1 0 12 0.0000 4 135 510 765 5625 Cache\001
+4 0 4 50 -1 0 12 0.0000 4 135 405 765 5850 level\001
+4 0 4 50 -1 0 12 0.0000 4 180 675 765 6075 depth=2\001
+-6
+6 4230 6930 5130 7560
+4 0 0 50 -1 0 12 0.0000 4 165 840 4230 7290 first_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 810 4230 7515 last_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 900 4230 7065 children[0]\001
+-6
+6 6930 6930 7830 7560
+4 0 0 50 -1 0 12 0.0000 4 165 840 6930 7290 first_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 810 6930 7515 last_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 900 6930 7065 children[0]\001
+-6
+6 1530 6930 2430 7560
+4 0 0 50 -1 0 12 0.0000 4 165 840 1530 7290 first_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 810 1530 7515 last_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 900 1530 7065 children[0]\001
+-6
+6 9765 7740 11340 9180
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 9765 8010 11205 8010
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 11205 9180 11205 7740 9765 7740 9765 9180 11205 9180
+4 0 0 50 -1 0 14 0.0000 4 165 465 9855 7965 Core\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 9855 9090 .arity=1\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 9855 8190 .depth = 3\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 9855 8415 .logical_index = 3\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 9855 8640 .os_index = 1\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 9855 8865 .sibling_rank=0\001
+-6
+6 5805 8595 7110 9135
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 5805 8820 7065 8820
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 7065 8910 5805 8910
+4 0 0 50 -1 0 12 0.0000 4 165 1005 5850 8730 next_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 180 1005 6075 9090 prev_cousin\001
+-6
+6 765 7830 1440 8460
+4 0 4 50 -1 0 12 0.0000 4 135 390 765 7965 Core\001
+4 0 4 50 -1 0 12 0.0000 4 135 405 765 8190 level\001
+4 0 4 50 -1 0 12 0.0000 4 180 675 765 8415 depth=3\001
+-6
+6 4230 9270 5130 9900
+4 0 0 50 -1 0 12 0.0000 4 165 840 4230 9630 first_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 810 4230 9855 last_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 900 4230 9405 children[0]\001
+-6
+6 6930 9270 7830 9900
+4 0 0 50 -1 0 12 0.0000 4 165 840 6930 9630 first_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 810 6930 9855 last_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 900 6930 9405 children[0]\001
+-6
+6 1530 9270 2430 9900
+4 0 0 50 -1 0 12 0.0000 4 165 840 1530 9630 first_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 810 1530 9855 last_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 900 1530 9405 children[0]\001
+-6
+6 9630 9270 10530 9900
+4 0 0 50 -1 0 12 0.0000 4 165 840 9630 9630 first_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 810 9630 9855 last_child\001
+4 0 0 50 -1 0 12 0.0000 4 165 900 9630 9405 children[0]\001
+-6
+6 9765 10080 11340 11520
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 9765 10350 11205 10350
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 11205 11520 11205 10080 9765 10080 9765 11520 11205 11520
+4 0 0 50 -1 0 12 0.0000 4 165 1095 9855 10980 .os_index = 3\001
+4 0 0 50 -1 0 14 0.0000 4 165 315 9855 10305 PU\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 9855 11205 .sibling_rank=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 9855 11430 .arity=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 9855 10530 .depth = 4\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 9855 10755 .logical_index = 3\001
+-6
+6 3105 10935 4410 11475
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 3105 11160 4365 11160
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 4365 11250 3105 11250
+4 0 0 50 -1 0 12 0.0000 4 165 1005 3150 11070 next_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 180 1005 3375 11430 prev_cousin\001
+-6
+6 5805 10935 7110 11475
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 5805 11160 7065 11160
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 7065 11250 5805 11250
+4 0 0 50 -1 0 12 0.0000 4 165 1005 5850 11070 next_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 180 1005 6075 11430 prev_cousin\001
+-6
+6 8505 10935 9810 11475
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 8505 11160 9765 11160
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 9765 11250 8505 11250
+4 0 0 50 -1 0 12 0.0000 4 165 1005 8550 11070 next_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 180 1005 8775 11430 prev_cousin\001
+-6
+6 765 10170 1440 10800
+4 0 4 50 -1 0 12 0.0000 4 135 240 765 10305 PU\001
+4 0 4 50 -1 0 12 0.0000 4 135 405 765 10530 level\001
+4 0 4 50 -1 0 12 0.0000 4 180 675 765 10755 depth=4\001
+-6
+6 9540 4590 10620 4950
+4 0 0 50 -1 0 12 0.0000 4 165 900 9540 4725 children[1]\001
+4 0 0 50 -1 0 12 0.0000 4 165 810 9810 4905 last_child\001
+-6
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 5715 990 7155 990
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 7155 2160 7155 720 5715 720 5715 2160 7155 2160
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 9036 4488 7686 5388
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 9135 4500 7785 5400
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 8415 3330 9855 3330
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 9855 4500 9855 3060 8415 3060 8415 4500 9855 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 6435 2160 3735 3060
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 6210 2160 3510 3060
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 4500 4050 8415 4050
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 8415 4140 4500 4140
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 3831 4492 5181 5392
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 3636 4488 2286 5388
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 5085 5400 3735 4500
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 3735 4500 2385 5400
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 6660 2160 9360 3060
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 6435 2160 9135 3060
+2 2 0 1 4 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 10080 3015 2835 3015 2835 4545 10080 4545 10080 3015
+2 2 0 1 4 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 7380 675 5490 675 5490 2205 7380 2205 7380 675
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4365 5670 5805 5670
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 5805 6840 5805 5400 4365 5400 4365 6840 5805 6840
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7065 5670 8505 5670
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 1665 5670 3105 5670
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 3105 6840 3105 5400 1665 5400 1665 6840 3105 6840
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 8505 6840 8505 5400 7065 5400 7065 6840 8505 6840
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 2340 6840 2340 7740
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 2430 6840 2430 7740
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 5040 6840 5040 7740
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 5130 6840 5130 7740
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 7740 6840 7740 7740
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 7830 6840 7830 7740
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4365 8010 5805 8010
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 5805 9180 5805 7740 4365 7740 4365 9180 5805 9180
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7065 8010 8505 8010
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 1665 8010 3105 8010
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 3105 9180 3105 7740 1665 7740 1665 9180 3105 9180
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 8505 9180 8505 7740 7065 7740 7065 9180 8505 9180
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 2340 9180 2340 10080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 2430 9180 2430 10080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 5040 9180 5040 10080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 5130 9180 5130 10080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 7740 9180 7740 10080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 7830 9180 7830 10080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 10440 9180 10440 10080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 2
+	1 1 1.00 60.00 120.00
+	 10530 9180 10530 10080
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 4365 10350 5805 10350
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 5805 11520 5805 10080 4365 10080 4365 11520 5805 11520
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 7065 10350 8505 10350
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 8505 11520 8505 10080 7065 10080 7065 11520 8505 11520
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 2
+	 1665 10350 3105 10350
+2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5
+	 3105 11520 3105 10080 1665 10080 1665 11520 3105 11520
+2 2 0 1 4 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 11385 10035 1485 10035 1485 11565 11385 11565 11385 10035
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 3105 8820 4365 8820
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 4365 8910 3105 8910
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 8505 8820 9765 8820
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 9765 8910 8505 8910
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 8505 5850 9765 8190
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2
+	1 1 1.00 60.00 120.00
+	 9765 8325 8505 6030
+2 2 0 1 4 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 8685 5355 1485 5355 1485 6885 8685 6885 8685 5355
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4
+	1 1 1.00 60.00 120.00
+	 9231 4492 10530 5400 10530 6840 10530 7740
+2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 1 4
+	1 1 1.00 60.00 120.00
+	 9135 4500 10440 5400 10440 6840 10440 7740
+2 2 0 1 4 7 50 -1 -1 0.000 0 0 -1 0 0 5
+	 11385 7695 1485 7695 1485 9225 11385 9225 11385 7695
+4 2 0 50 -1 0 12 0.0000 4 165 510 8415 2970 parent\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 5805 1170 .depth = 0\001
+4 0 0 50 -1 0 14 0.0000 4 165 825 5805 945 Machine\001
+4 0 0 50 -1 0 12 0.0000 4 165 1155 5805 1620 .os_index = -1\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 5805 1845 .sibling_rank=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 5805 1395 .logical_index = 0\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 5805 2070 .arity=2\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 8145 5310 parent\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 8505 4410 .arity=2\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 8505 3735 .logical_index = 1\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 8505 3960 .os_index = 1\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 8505 3510 .depth = 1\001
+4 0 0 50 -1 0 14 0.0000 4 165 645 8505 3285 Socket\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 8505 4185 .sibling_rank=1\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 4455 2970 parent\001
+4 0 0 50 -1 0 12 0.0000 4 165 1005 4545 3960 next_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 180 1005 7470 4320 prev_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 2745 5310 parent\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 4275 5310 parent\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 7155 6750 .arity=1\001
+4 0 0 50 -1 0 14 0.0000 4 165 600 1755 5625 Cache\001
+4 0 0 50 -1 0 14 0.0000 4 165 600 4455 5625 Cache\001
+4 0 0 50 -1 0 14 0.0000 4 165 600 7155 5625 Cache\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 1755 6075 .logical_index = 0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 4455 6075 .logical_index = 1\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 1755 6300 .os_index = 0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 1755 6525 .sibling_rank=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 1755 6750 .arity=1\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 4455 6750 .arity=1\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 1755 5850 .depth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 4455 5850 .depth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 7155 5850 .depth = 2\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 7155 6075 .logical_index = 2\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 4455 6300 .os_index = 1\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 4455 6525 .sibling_rank=1\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 7155 6300 .os_index = 0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 7155 6525 .sibling_rank=0\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 2475 7650 parent\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 5175 7650 parent\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 7875 7650 parent\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 7155 9090 .arity=1\001
+4 0 0 50 -1 0 14 0.0000 4 165 465 1755 7965 Core\001
+4 0 0 50 -1 0 14 0.0000 4 165 465 4455 7965 Core\001
+4 0 0 50 -1 0 14 0.0000 4 165 465 7155 7965 Core\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 1755 8415 .logical_index = 0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 4455 8415 .logical_index = 1\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 1755 8640 .os_index = 0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 1755 8865 .sibling_rank=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 1755 9090 .arity=1\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 4455 9090 .arity=1\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 1755 8190 .depth = 3\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 4455 8190 .depth = 3\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 7155 8190 .depth = 3\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 7155 8415 .logical_index = 2\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 4455 8640 .os_index = 1\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 4455 8865 .sibling_rank=0\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 7155 8640 .os_index = 0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 7155 8865 .sibling_rank=0\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 2475 9990 parent\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 5175 9990 parent\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 7875 9990 parent\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 10575 9990 parent\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 1755 10980 .os_index = 0\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 4455 10980 .os_index = 2\001
+4 0 0 50 -1 0 12 0.0000 4 165 1095 7155 10980 .os_index = 1\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 1755 11205 .sibling_rank=0\001
+4 0 0 50 -1 0 14 0.0000 4 165 315 1755 10305 PU\001
+4 0 0 50 -1 0 14 0.0000 4 165 315 4455 10305 PU\001
+4 0 0 50 -1 0 14 0.0000 4 165 315 7155 10305 PU\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 4455 11205 .sibling_rank=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 1290 7155 11205 .sibling_rank=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 1755 11430 .arity=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 4455 11430 .arity=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 630 7155 11430 .arity=0\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 7155 10530 .depth = 4\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 7155 10755 .logical_index = 2\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 4455 10530 .depth = 4\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 4455 10755 .logical_index = 1\001
+4 0 0 50 -1 0 12 0.0000 4 180 810 1755 10530 .depth = 4\001
+4 0 0 50 -1 0 12 0.0000 4 180 1485 1755 10755 .logical_index = 0\001
+4 0 0 50 -1 0 12 0.0000 4 165 1005 3150 8730 next_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 180 1005 3375 9090 prev_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 165 1005 8550 8730 next_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 180 1005 8775 9090 prev_cousin\001
+4 0 0 50 -1 0 12 0.0000 4 180 1035 8820 8280 prev_sibling\001
+4 0 0 50 -1 0 12 0.0000 4 180 1035 8730 6120 next_sibling\001
+4 0 0 50 -1 0 12 0.0000 4 165 510 9945 7650 parent\001

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/dudley.png
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/dudley.png	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/dudley.png	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,90 @@
+‰PNG
+
+   
+IHDR    :   ´1H¬   bKGD ÿ ÿ ÿ ½§“    IDATxœíÝTTuþ?ðç)|ŒRü«®Jl …"b(&~Ø'Ë5ú˜}Ä_kþBtÝÓ'û±bg	ÖäƒZúA0+³ÜˆžÕÀü±XØI“#»z¾ˆ€³¦…Üïî22À wæÞ™÷óqާáÞ;ïû¾óäÕëÎÜ™A(…††‚ˆˆH4•••¸Ç`0 99Yí¹Ù\JJ
+ôjO‚ˆˆHMl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$4U¡N§ëÕr"""¥õªêt:š,{óÍ7o\’$):QWzýŒ0##CnT?ÿü3Þ{ï=Å'EDDd+½n„þþþøøã ûöíìY³:m£Óé Óéðë_ÿ‡ œ9sþþþ¸çž{LžA¾þúë2d†Žwß}W¾ûÍ­ÿæ›oð裏bàÀ˜0aŽ;ÖÛà ""ЇF¸nÝ:lݺ’$!==/¾øb§m$I;w°oß>¬[· ðßÿýßxá…ð¯ýËä¥O777ü¿ÿ÷ÿ°wï^lذ¡ÓXæÖ¿ðÂX±bnܸôôt,Y²¤·‡ADD ÐmÚ´I²ôïêt:H’„9sæ`ôèÑhhh at AA¼ Þzë-¼ù書rå
+ÚÚÚ ÓéÐÖÖ† ¹¹ƒ
+2ïΝ;Ðëõ&ãwü¯¹õ@kk«É8mmmJ=&DD$ˆ>ÿ=„„¼ýöÛX»vm§u›6mÂÿþïÿÂh4âã?–¤vî܉۷o›lßÞäºbn½ŸŸvïÞ-?»d$"¢¾êS#		$Ixì±Ç:­KJJÂüùó1jÔ(œ>}Z^ž——‡¼¼<üÇüG¿ßeúÿ÷xï½÷0lØ0ùz$Q_ôê¥Q"""GÒç—F‰ˆˆ!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$´{,Ù¨²²Öž‘ÃDhhh·Û°Þˆ”aI½6ÂòòrbÆŒýž‘¨Îœ9ƒ¦¦¦“õFÔ–Ö`a#€3f ))©_#YVV–ÅÛ²Þˆú§7õÆk„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""𦡧§§ÚS ëDe•FXQQ'Ÿ|ÞÞÞÇÇlÝ˜è®ˆ===áéé‰|aaa(..î´ÍƍñÍ7ß µµóæÍ“—ÿý÷˜?>&L˜€ùóçãûï¿·Êü‰úÊ‘ê­ý¾lÊdKVi„			X¶l¾úê+äå塬¬Ì»é•ÚÚZ|ûí·Ø¼y36mÚÔi½$IÐëõ8}ú4¦L™"/ONNF@@ Ξ=‹€€ $''ÛrÚD=r¤z«­­Emm­-§JdF8dÈÔ××£¦¦#FŒ@zzº¼î믿ƬY³àåå…Y³f¡¦¦ PSSƒÙ³gÃËË«ÓÙà±cÇ0}útâ»ï¾Ã³Ï>+Ÿýž:uJÞÞ’3I'''“Ÿóòòàéé‰÷ßO>ù$bbb°{÷nyœ¿ýíoˆ‹‹ƒ³³3âââð·¿ý­ß‘’©ÞˆÔ`•F˜››‹Ë—/ãµ×^CPP>øày]bb"¢££Q]]èèh$&&ÊËçΝ‹šš“3Â?ü¯¼ò
+víÚ…`Æ
+ˆÅ×_—_~7n”·ïîlÒÓÓ&LÀ«¯¾Š­[·ÊËãââpæÌ<ú裨­­Å£>ŠS§NÉã477cèС  777´´´(û`õ“#Õ‘,þ{„½ñÀàõ×_ œ?±±±˜;w. à»ï¾Ctt4\\\0þ|¼ñÆ €. &&4kãÆÈÉɁ€_Îdå‚ÖétÍ©»‚½ûö´iÓ°eË,Z´ƒFcc#†Žëׯãþûï·ôa ²	Gª7"5XåáúõëqéÒ%üôÓOøöÛoÑÖÖ&¯ûÍo~ƒƒâÇāàåå ðööÆþýûñÓO?™ŒµsçN$&&¢¨¨ ððÃ#--M>“½xñ" àž{îÁ?üÐë¹ÖÖÖ"..ùùù8|ø0¢££Q[[+åc=†¼¼<ܾ}yyyxì±Çúô˜Y‹#Õ‘¬ÒðdÉøøø ==Ýä
+&©©©xï½÷àëë‹ýû÷cÛ¶mòòࡇ29k
+
+Åž={ðꫯb×®]xë­·ðá‡ÂßßßäÅsÏ=ƒÁЧk
+§OŸ†¿¿?š››1dÈ“u¿ÿýïqâÄ	Lž<'NœÀæÍ›ûòY#Õ[Ç}ðÝ£d+ºM›6I=½2%%uuuHJJ²Ñ´ˆOVVôz}ï<f½õ_oêMÓ¨'""²66B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhŠ~×è™3gPUU¥äDvaêÔ©˜1c†M÷Éz#Q)]oŠ6ªª*=z¡¡¡JK¤i•••hii±y#d½‘ˆ¬QoŠÿõ	ƒÁÀ?^KBiÿJ45°ÞH4Ö¨7^#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘Ðì¶¶¶¶"::Zíiô(::­­­jOƒ¨_XoäÈTm„:Îìò‚‚Lœ8„ŸŸJJJ:mSXXˆGy¤Óò-[¶˜Œ{åÊÃÙÙÁÁÁ¸rå
+ àÈ‘#ðòò‚³³3ÂÂÂpõêU @[[¶lÙ‚1cÆ@¯×Ëcu³¦¦^^^xçwäu:z½ãƍÃÞ½{åm§M›†ÂÂÂÞ>4DŠc½™§Ég„Ÿ~ú)ŠŠŠÐÜ܌͛7#&&¦Ó6ùùù0&ËNž<‰œœ“e6l at HHš››‚ÄÄD ÀâÅ‹‘žžŽ––¼ôÒKòòääd ¨¨wî܁$I&ã•••!**
+¹¹¹X¹r¥¼\’$´¶¶"//«V­’—äçç÷ëñ ²&Ö‰Nñ¿>¡„wß} pûöm899a̘1¶9qâ¼½½åŸoݺ…¸¸8ìÛ·aaaòò’’|ýõ×pqqA||<&Mšà—3QàßgžŸ}ö `çΝرc‡¼]G{öìAff&Š‹‹áááÑåüGŽ)ßöööÆ—_~ié¡ÙëD§ÉFü»`ÜÜÜpäÈ‘Nëáêê*ÿ¼iÓ&,^¼?þx§íFŒ >|8®_¿ ÈÎÎÆ‹/¾ˆúúz,_¾\^~ùòe”””`þüùpwwÇ[o½…ßþö· €5kÖ ''ÇlQ¶ÏwÀ€8xð ¼ÜÕÕ×®]ëëÃ@d¬7™&_~yéãæÍ›ÈÊÊÂóÏ?ßiýСCa4åŸ322Ð郛›êëë 
+
+
+pss ̝;uuu¸yó&fΜ‰_ÿú×òö¸~ý:vìØeË–Éû(--E||¼Ù—^$IB[[Š‹‹±~ýzy¹ÑhİaÃúûpYëD¦ÉF/“^¯Ç7:m3}útœ?^þ¹­­
+’$É×Úÿôôtܺuééé—ï#IΝ;‡ÄÄD¬X± 	 f/Ú ´´IIIÈÎÎîrþís€.    w ‘
+±ÞHtª¿4z÷;Ù$I‚¯¯/üüüÐÐÐ ___ìß¿¿ÓýbbbPQQÑã/}ZZ¢££qÿý÷#   &û5jV¬X¤¤$ ÀöíÛñÜsÏaΜ97nvíÚe2ž***‰¦¦&lܸ±Óx™™™òöåå刍íÍCBd5¬7¢ÎTm„w¿C¬]\\ââ⺽ï‚°páÂÇ;v,Ž?nñ¾Gòòòn·÷ôôÄÅ‹{øåu_º!RëÈ<ÕŸöÕ€ä³M-³‡9õ„õFŽL“׉ˆˆl…ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$4Å?GXYY‰ÔÔT¥‡%Ò¬ŠŠŠnÿ:‚5±ÞH4Ö¨7E¡ŸŸZZZpéÒ%%‡%Ò4̘1Ãæûe½‘ˆ¬QoŠ6ÂÀÀ@*9$uõF¤^#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„¦èçÏœ9ƒªª*%‡¤.L:µÇ•2Û±$¥1_Ûa½i‹Òõ¦h#¬ªªÂÑ£G
 ªä°t—ÊÊJ´´´ôø‹À<lÃÒ<”Æ|mƒõ¦-Ö¨7Å¿kÔ`0 99Yéa©ƒ””ÔÕÕY´-ó°¾Þä¡4æk}¬7m±F½ñ!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„f·°µµÑÑÑjO£GÑÑÑhmmU{VÇ<óÕæ¡,U¡N§3»üÀðññÁÀáç燒’’NÛâ‘G1«ý_GW®\App0œŒ+W®X´-[¶˜ŒÕñvMM
+¼¼¼ðÎ;ï˜ì[¯×cܸqØ»w¯¼í´iÓPXXhéC¢*æáؘ¯¶0íÐä3    ---X½z5bcc;m“ŸŸƒÁ ÿ,I$Iê´Ý†
+‚ææf„„„ 11±Ç}œ<y999fçVVV†¨¨(äææbåÊ•&ûommE^^V­Z%/7ÈÏÏïõc %Ìñ1_ma¶§ÉFXXXˆI“&ÁÅÅ‘‘‘¸÷Þ{;msâÄ	x{{÷8VII	âããáââ‚øøxw»[·n!..ûöíë4Öž={””„ââânÿÔÊÈ‘#åÛÞÞÞøòË/{œ§–1ÇÆ|µ…yØžâ†IIßÿ=æÍ›‡ŒŒŒNëáêêÚ㍍1b `øðá¸~ýz·ûØ´i/^ŒÇ¼ÓXkÖ¬ANN<<<:­ké`À€8xð ¼ÜÕÕ×®]ëqžö€y86æ«-ÌÃv4ùŒøåŒ'((ñññxæ™g:­:t(ŒFcã¸¹¹¡¾¾ ÐÐÐ 77·n÷‘‘‘„„9ØŽ¯—––">>ÞìS}I’ÐÖÖ†ââb¬_¿^^n41lØ0Z»˜‡cc¾ÚÂ<lK“pçΝ˜={6²³³±páB³ÛLŸ>çÏŸïq¬ˆˆ¤§§ãÖ­[HOOGxxx·ûhkk3y½½ãëî(--ERR²³³»Ügû/ \¸p=ÎS˘‡cc¾ÚÂ<lOõ—Fï~—“$IX¾|9 à‰'ž—߸qÃ䥀˜˜TTTȲ¹w8I’„´´4DGGãþûïG@@ 
+
+
+ À¢}˜ããナŠ
+DFF¢©©	7n4Ùç¨Q£™™)o_^^nöb·V1ÇÆ|µ…yhƒªÐÜ»œº[ÞÑ‚LÎdººÏرcqüøñ>í£ã6o{zzââÅ‹uòäI“—
+´Œy86æ«-ÌC;TFØWÏn´Ìæ¨æáؘ¯¶0eiò!‘­°‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„¦øç+++‘ššªô°ÔAEE…Ù/¾5‡yX_oòPóµ>Ö›¶X£Þm„~~~hiiÁ¥K—”–îâáá3fô¸ó°
+KóPóµ
+Ö›¶X£Þm„TrHêæáؘ¯¶0ûÅk„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘Ðýá™3gPUU¥äÔ…©S§öø¡Ræa;–ä¡4æk;¬7mQºÞm„UUU8zô(BCC•–îRYY‰–––˜‡mXš‡Ò˜¯m°Þ´Åõ¦øw$''+=,u’’‚ºº:‹¶eÖ×›<”Æ|­õ¦-Ö¨7^#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘Ðì¶¶¶¶"::ÚæûŽŽFkk«Í÷«uÌñ1_maÊRµêtº.—·ÿëJaa!yä‘ïÓÖÖ†-[¶`̘1ÐëõòúŽÛÕÔÔÀËËï¼óŽÉXz½ãƍÃÞ½{åm§M›†ÂÂÂÞ¬`ŽùjóÐM>#”$	’$u»M~~>C÷INNFAAŠŠŠpçΝNÛ”••!**
+¹¹¹X¹r¥Éx­­­ÈËËêU«äåƒùùù}<2ûÄ<óÕæa{Šÿõ	[9qâ¼½½{ÜnçΝرc&MšÔiÝž={™™‰ââbxxxt9ÆÈ‘#åÛÞÞÞøòË/û4gGÆ<óÕæ¡,M>#´Dcc#\]]{ÜîòåË())Á AƒàááC‡ÉëÖ¬Yƒ
+6˜ý%Ðétprr¬Y³ðæ›oÊË]]]qíÚ5EŽÁ‘0ÇÆ|µ…y(ËnáСCa4{ÜÎÍÍ
+¸~ý:vìØeË–ÉëJKKoö©¾$IhkkCqq1Ö¯_//76l˜2á@˜‡cc¾ÚÂ<”e·púôé8þ|ÛEFF€Ù‹Ä(--ERR²³³»£¾¾^¾}áÂôuÚ‹y86æ«-ÌCYª_#¼û]N’$™,k¿}÷EÞ˜˜TTTÈ¡tuŸíÛ·ã¹çžÃœ9s0nÜ8ìÚµËdTTT 22MMMظq£É£FBff¦¼}yy9bccûuÌZÆ<óÕæ¡
+ª6®ÞÕÓ;¦ `Á‚X¸pa÷=z4ÊË˻݇§§'.^¼hÑþOž<iòR#aŽùjóÐÕŸöÕ€PPP`óýª±O{À<óÕæ¡,»½FHDD¤6B""!	ˆˆ„ÆFHDDBc#$""¡±‘Ðÿaee%RSS•–:¨¨¨èöÛâ;bÖ×›<”Æ|­õ¦-Ö¨7E¡ŸŸZZZpéÒ%%‡¥»xxx`ÆŒ=nÇ<lÃÒ<”Æ|mƒõ¦-Ö¨7Ea`` •’úy86æ«-ÌÃ~ñ!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$4E?GxæÌTUU)9$uaêÔ©=~¨”yØŽ%y(ùÚëM[”®7EaUU>ùäL™2EÉaé.çΝCKKK¿ÌÃ6,ÍCiÌ×6XoÚbzSü»F§L™‚eË–)=,uŸŸoñ¶ÌÃúz“‡Ò˜¯õ±Þ´ÅõÆk„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	MÕF(I<ˆE‹aæÌ™X¸p!>ûì3«ì+,,aaaÇ¢E‹pìØ±NÛ¤¥¥áâÅ‹hmmÅêÕ«åå
+
+
+X»v-fΜ‰µk×¢¡¡Á*sT›½äÑ~ß°°0«ÌÍQÙ
 K¾¬7å±Þº§j#<pà Š‹‹ñòË/ãÈ‘#ضmΞ=kµý•••áóÏ?Çï~÷;lß¾½ÓzI’ ÓépîÜ9Lœ8Q^ž••…É“'ã“O>ÁäÉ“‘••eµ9ªÉ^ò(++CYY™Õæå¨ì%_Ö›u°Þº¦ø_Ÿè>úo¼ñ<== £GFRR’¼þüùóضmêêê0~üxlܸ^^^Ü9spøða|þù稫«CZZΟ?_ýêWHJJ¤I“ºÜ¯^oÚÿ<ˆ;v €ÉÙ|€²²2œ:u
+yyy8p ž}öYÄÅÅ)ù0h†½äA}c/ù²Þ~¡•<D ê3ÂúúzŒ?¾ËõÛ¶mÃSO=…Çã©§žBjjª¼n„	rh)))˜={6>ýôS¬^½iiifÇÃÌ™3ñç?ÿ			òòyóæáСCð÷÷GYYüýýñÑGÉ¿---2d `ðàÁ¸qãF¿]‹ì%ê{É—õö­ä!UŸŽ1ÿøÇ?ðÀ˜]_WW‡Y³fÁÙÙO>ù$Þ~ûmy]xx¸|fóÝwß!55UþEÑétfÇë*ØŽ¯}·ßŽŠŠÂÚµk…ûî»MMMpssCss3î»ï¾Þ¬°—<¨oì%_ÖÛ/´’‡Tm„QQQضmàé鉫W¯bïÞ½òËãÆÃ矎™3gâ/ù‹ÉÙ““““|ûÁDTTœ{=²²2¼ýöÛxì±Ç0hÐ |üñÇx饗äõÓ¦MÃûᅬ^xï¿ÿ>üýýûqÔÚe/yPߨK¾¬7må!Uáüùóáää„×^{
+W¯^ÅÈ‘#±páBy}bb"ÒÒҐ‘‘ñãÇ›¼~ÞÑþ𤧧ãOú~úé' ]Ÿýt¥¦¦Ë—/ÇÙ³g;®X±¯½öž~úiL˜0ÿó?ÿÓË#µö’‡¹3X‘^Æé+{É—õö­ä!B½é6mÚ$%''w»QJJ
+êêêº¢]VVþùÏbÙ²eJΑŸ'''桽ÉC¯×ƒõf_XoÚbzãꉈHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐTùf™sçΡººZ]kÞÃ?Œ)S¦ØtŸÌ£kjä¡4æÛ5Ö›¶¨Uoª4Âêêj|õÕW
+
+Uc÷šUYY	£Ñhó_æažZy(ùšÇzÓ5ëMµï5=~õhRRR¬ú‡9»Ã<:S3¥1ßÎXoÚ¢f¼FHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘Ðì¢êt:èt:899ÁÛÛ‡2YgnûÞŽÓnÉ’%¨®®ÆÏ?ÿŒ   yù•+WgggãÊ•+
+™}ÒBí¶lÙÒåøÔ7ZÈ·ý¾ÌV{y8b&vÑ@’$ܾ}Û·oÇÒ¥K­6N[[ôz=¾øâLŸ>]^¾aÄ„„ ¹¹!!!HLLìóÚy ÀÉ“'‘““Óç}S×ÔÎW’$H’Ôçý:µóh¿¯£æb7°“““UÆIOO‡N§ÃîÝ»áëë‹ÐÐPdddÈg?%%%ˆ‡‹‹âããQ\\¬È<ìZyܺuqqqØ·oŸ"û'óÔÊ—ÌS3ÁƒÃÕÕO?ý4êêꙇVØM#Ôétpvvƺu됝­ø8ñññhllDxx8$IBxx8ä³ŸÆÆFŒ1 0|øp\¿~½dçÔÎcÓ¦MX¼x1üñ~u¦v¾dJí<$IBss3jkkñðÃ#66¶ßǤ%ªý=ÂÞêª@œa4áêê
+ 0pqqéõ8Ï|Úo>™™™X½z5ÜÜÜP__‘#G¢¡¡nnn}=‡ v$				ò6üŸ¨rÔΗLi%www¼úê«<xp¯AËìæaW‚ƒƒ±uëVFFlݺ!!!½G’$¬_¿ååå8}ú4–.]
+I’ä_‚ˆˆ¤§§ãÖ­[HOOGxx¸Ò‡âl•G[[›Éõ
+6AÛ°U¾d[çÑÔÔ„­[·ÂÏÏO©Cлo„¹¹¹8uêÜÝÝáîîŽÓ§O#77·Oc?~AAAhllÄСCMÖ¥¥¥¡¢¢÷ß?Ž=ŠíÛ·+1}‡c«<H¶Ê·ã»õŠJ°u£FÂ_|áp׿íâ¥ÑîÎö=<<PTTÔïq  ²² Þéߨ±cqüøq‹öã贐GoÆ¡ÞÑB¾Ìôߘ‡õÙý3B""¢þ`#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„¦Êêøá”––¢ººZÝkÖÅ‹1vìX›ï—y˜§VJc¾æ±Þ´EÍzS¥¶¶¶ÂÝݾ¾¾jì^³nÞ¼‰;wîØ|¿ÌÃ<µòPó5õ¦-jÖ›*pôèј<y2’““ÕØ½f¥¤¤àìÙ³6ß/ó0O­<”Æ|Íc½i‹šõÆk„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	Í.¡N§ƒN§ƒ““¼½½qèÐ!“uæ¶ïí8í–,Y‚êêjüüóÏ
+
+’—ðÁxðÁqÏ=÷à7¿ù
+>øàŽÌ>i!öûÞ=öàãチÂÏÏ%%%}=Lai!ß#GŽÀËËÎÎÎÃÕ«W82û¤…<ºª·‚‚Lœ8ÑîëÍ.! H’„Û·ocûöíXºt©ÕÆikkƒ^¯Ç_|éÓ§ËËãâ␙™‰ýë_ÈÈÈÀ’%Kú<G v’$A’¤NÛ8p hiiÁêÕ«Û繉Lí|/^Œôôt´´´à¥—^BbbbŸçàÔΣ«zûôÓOQTT„ææflÞ¼111}ž›šì¦¶srr²Ê8ë7žÂ    IDATéééÐétؽ{7|}}ŠŒŒùhüøñ þ}¶åáá¡È<ìZyt¥°°“&M‚‹‹"##qï½÷*2?Q©•o[[€×ÛgŸ}¦È<ìÖêíÝwßÅøñã¡×ëáää„1cÆ(2?[³›F¨ÓéàììŒuëÖ!;;[ñqâããÑØØˆððpH’„ððp444ÈgA999ˆ…³³3þë¿þYYYý>&{¦v=ùþûï1oÞ<dddôyn"S;ßììl¼øâ‹2dŠ‹‹qýúõ~“=S;žÆtqqÁ²eËú575©ò÷û¢«@œa4áêê
+ 0pqqéõ8Ï|Úo>™™™X½z5žþyäçç#,,%%%X´h¾ýöÛ¾ŽÝS;îœ8qÑÑÑxýõ×ñÌ3Ït»-™§v¾sçÎÅܹsür½ÐÜõ,‘¨GOsûñÇqøða<ÿüó¸páB·Ûk‘Ý<#ìJpp0¶nÝ
+£Ñ£Ñˆ­[·"$$¤×ãH’„õë×£¼¼§OŸÆÒ¥K!I’üKÐÐÐ àß¿$í?“)[åÑ•;wböìÙÈÎÎÆÂ…ûzÔ[æ+IΝ;‡ÄÄD¬X±BÉÃpj×[||<êëë z½7nÜèÓq¨Íîann.N:www¸»»ãôéÓÈÍÍíÓXǏGPP1tèP“uí/Õ4kÖ¬ANNŽÓw8¶Ê£ã;Ø:Þ^¾|9~øá<ñÄòr£ÑØ¿ƒ"™-óÕëõˆˆˆÀ‚””¤ÄôŽÚõæëë???2©©©Ø¿ÿH%vñÒhw¯S{xx ¨¨¨ßã @ee%  <<ááá&ëæÏŸùóç[´G§…<ºº¯¥×©kZÎWDZÎ#..qqqí_Ëìþ!Q°‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBSíõ•••HMMUk÷šTQQ777UöÍ<:S3¥1ßÎXoÚ¢fª4‡zF£ÕÕÕjì^³ÜÜÜ0eÊ›ï—y˜§VJc¾æ±Þ´EÍzS¥úùùÁÏÏO]“Ìñ1_maÚÃk„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘Ðÿá7ß|ƒüü|¥‡¥ª««áïïoѶÌÃúz“‡Ò˜¯õ±Þ´Åõ¦h#ôóóCKK‹’C’þþþ˜1cFÛ1Û°4¥1_Û`½i‹5êMÑFˆÀÀ@%‡¤~`Žùjó°_¼FHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ÍâÏþýïGVV–5çBäЪªªdѶ¬7¢þéM½YÔÑÔÔÔ¯I‰.00¡¡¡mÇz#êKë
+°°†þ̉ˆ,Äz#²-^#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„fÑç+++QQQaí¹9<K>äËz#R†¥ª·¨–——£°°3fÌè÷ĈDuæÌ455õX˜¬7¢þ³´Þ€^|×èŒ3””Ô¯‰‰¬7ßÊz#êŸÞÔ¯‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhšn„žžžjOH¬7•UaEEž|òIx{{#<<ü±5vc¢»"öôô„§§'|ðA„……¡¸¸
 ¸Ó67nÄ7ß|ƒÖÖVÌ›7O^~äÈ<ñÄðööÆSO=…cÇŽYeþD}åHõöÉ'Ÿ ""‚õF6e•F˜€e˖᫯¾B^^ÊÊʬ±›^©­­Å·ß~‹Í›7cÓ¦MÖK’½^Ó§OcÊ”)òò#GŽ 33_}õ-Z„µk×ÚrÚD=r¤zûë_ÿŠ={öàìÙ³xñÅYodVi„C†A}}=jjj0bĤ§§Ëë¾þúkÌš5^^^˜5kjjj  555˜={6¼¼¼:m;vÓ§OGaa!¾ûî;<ûì³òÙï©S§äíÛÏD»ãäädòs^^<==ñþûïãÉ'ŸDLLvïÞ-óç?ÿÞÞÞpvvFpp0
+ÔïLJHIŽToo¾ù&ÆŒ½^'''Œ9²ßQO¬Òsssqùòe¼öÚk
+
+Â| ¯KLLDtt4ª««ÄÄDyùܹsQSSƒÚÚZyû?ü¯¼ò
+víÚ…`Æ
+ˆÅ×_—_~7n”·¯­­5¹oGžžž˜0a^}õUlݺU^‡3gÎàÑGEmm-}ôQœ:uªÓ8õõõX¹r%^yåÅ'"%8Z½yzzbâĉøýï?þñŠ>VDæXü÷{ãÀ믿 8þ<bcc1wî\ Àwß}‡èèh¸¸¸`þüùxã7  .\@LLh2ÖÆ‘““ ¿œÉ&&&Ê­Óé,šSw{÷íiÓ¦aË–-X´h  ººkÖ¬ABB""",Ú‘­8Z½ÕÖÖâÖ­[(--EBBþú׿Z´O¢¾²Ê3Âõë×ãÒ¥Køé§Ÿðí·ß¢­­M^÷›ßüď?þˆÀËË àííýû÷ã§Ÿ~2kçΝHLLDQQ àá‡FZZš|&{ñâE À=÷܃~ø¡×s­­­E\\òóóqøðaDGG£¶¶V.Êýû÷céÒ¥øãÿˆ¨¨¨>=DÖäHõöú믣±±  ×ëñ¯ý«÷Q/Y¥†……aÉ’%ðññAzz:’““åu©©©xï½÷àëë‹ýû÷cÛ¶mòòࡇ29k
+
+Åž={ðꫯb×®]xë­·ðá‡ÂßßßäÅsÏ=ƒÁЧ·€Ÿ>}þþþhnnƐ!CLÖmÞ¼×®]Ã/¼ ïïæÍ›}yXˆ¬Â‘êmâĉxê©§0eÊdee!##£/	Q¯è6mÚ$u,sRRRPWW‡¤¤$M‹ÈñdeeA¯×ƒõFd}½©7M žˆˆÈÚØ‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡)ú]£gΜAUU•’CÙ…©S§bÆŒ6Ý'ëD¥t½)Ú«ªªpôèQ„††*9,‘¦UVV¢¥¥Å捐õF"²F½)þ×'C_iCäHÚ¿M
+¬75ê×‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$4»m„­­­ˆŽŽV{=ŠŽŽFkk«ÚÓ êÖ92U¡N§3»¼   'NÄÀáç燒’’NÛâ‘Gé´|Ë–-&ã^¹rÁÁÁpvvFpp0®\¹ 8rä¼¼¼àì쌰°0\½z ÐÖÖ†-[¶`̘1ÐëõòXǬ©©——ÞyçyN§ƒ^¯Ç¸qã°wï^yÛiÓ¦¡°°°·
 
+‘âXoDæiòá§Ÿ~Š¢¢"477cóæÍˆ‰‰é´M~~>ƒÉ²“'O"''ÇdÙ†
+‚ææf„„„ 11 °xñb¤§§£¥¥/½ô’¼<99(**;w I’ÉxeeeˆŠŠBnn.V®\)/—$	­­­ÈËËêU«äåƒùùùýz<ˆ¬‰õF¢Sü¯O(áÝwß ܾ}NNN3fL§mNœ8oooùç[·n!..ûöíCXX˜¼¼¤¤_ý5\\\I“&øåLø÷™çgŸ} عs'vìØ!o×Ñž={™™‰ââbxxxt9ÿ‘#GÊ·½½½ñå—_ZzèD6Çz#Ñi²ÿ.7779r¤ÓúÆÆF¸ººÊ?oÚ´	‹/Æã?Þi»#F  †Žëׯ ²³³ñâ‹/¢¾¾Ë—/——_¾|%%%˜?>ÜÝÝñÖ[oá·¿ý- `Íš5ÈÉÉ1[”íó0` <(/wuuŵk×úú0ÙëD¦É—F_^ú¸yó&²²²ðüóÏwZ?tèPFù猌$$$tºÆàææ†úúz @CCÜÜÜ  sçÎE]]nÞ¼‰™3gâ׿þµ¼}DD®_¿Ž;v`Ù²eò>JKKoö¥I’ÐÖÖ†ââb¬_¿^^n41lذþ>DVÅz#‘i²ÆÇÇËŤ×ëqãÆNÛLŸ>çÏŸ—nkkƒ$Iò5†öÿFDD ==·nÝBzz:ÂÃÃåûH’„sçÎ!11+V¬  DFF€Ù‹ö(--ERR²³³»œûÜàÂ…èÝ@dC¬7ê/ÞýN6I’àëë???444À××û÷ïït¿˜˜TTTôøKŸ––†èèhÜÿý@AAÉ~G…+V ))	 °}ûv<÷Üs˜3gƍ‡]»v™ŒçãナŠ
+DFF¢©©	7nì4^ff¦¼}yy9bcc{óY
+덨3UáÝïk‡¸¸¸nï»`Á,\¸°ÇqÇŽ‹ãǏ[¼ïÑ£G£¼¼¼Ûí===qñâÅÇ~yg]Ç—nˆÔÂz#2Oõg„}5`À ùlSËìaŽD=a½‘#Óä5B"""[a#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	MñÏVVV"55Uéa‰4«¢¢¢Û¿Ž`M¬75êMÑFèç燖–\ºtIÉa‰4ÍÃÃ3f̰ù~Yo$"kÔ›¢000JID]`½)ƒ×‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡)ú9Â3gΠªªJÉ!©S§NíñC¥ÌÃv,ÉCiÌ×vXoÚ¢t½)Ú«ªªpôèQ„††*9,Ý¥²²---=þ"0Û°4¥1_Û`½i‹5êMñï5HNNVzXê %%uuumË<¬¯7y(ùZëM[¬Qo¼FHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡Ùm#lmmEtt´ÚÓèQtt4Z[[Õž†Õ1ÇÆ|µ…y(KÕF¨ÓéÌ.?pà |||0pà@øùù¡¤¤¤Ó6………xä‘GLÆjÿ×Ñ•+WgggãÊ•+ícË–-&cu¼]SS///¼óÎ;&ûÖëõ7nöîÝ+o;mÚ4Zú¨Šy86æ«-ÌC;4ùŒðÀ(((@KKV¯^ØØØNÛäççÃ`0È?K’I’:m·aÄ„„ ¹¹!!!HLLìq'OžDNNŽÙ¹•••!**
+¹¹¹X¹r¥Éþ[[[‘——‡U«VÉË
+òóó{ýh	óplÌW[˜‡íi²bÒ¤IpqqAdd$î½÷ÞNÛœ8qÞÞÞ=ŽURR‚øøx¸¸¸ >>ÅÅÅÝîãÖ­[ˆ‹‹Ã¾}û:µgÏ$%%¡¸¸¸Û?µ2räHù¶··7¾üòËç©eÌñ1_ma¶§øŸaRÒ÷ߏyóæ!##£ÓºÆÆF¸ººö8Fcc#FŒ >|8®_¿Þí>6mÚ„Å‹ãñÇï4Öš5k““NëÚ_:0` <(/wuuŵk×zœ§=`Žùjó°M>#~9ã	
+
+B||<žyæ™Në‡
+£ÑØã8nnn¨¯¯ 444ÀÍÍ­Û}ddd !!A¶ãk㥥¥ˆ7ûT_’$´µµ¡¸¸ëׯ——F6Ì£Ö.æáؘ¯¶0ÛÒd#ܹs'fÏžììl,\¸Ðì6Ó§OÇùóç{+""ééé¸uëÒÓÓÞí>ÚÚÚL^oïøº{@@ JKK‘””„ììì.÷Ùþ‹ .\@@@@óÔ2æáؘ¯¶0ÛSý¥Ñ»ßå$I–/_ xâ‰'äå7nÜ0y) &&òƒlîN’$!--
+ÑÑѸÿþû€‚‚ °hæøøø ¢¢‘‘‘hjjÂÆMö9jÔ(dffÊÛ———›½Ø­UÌñ1_maÚ j#4÷.§î–w´`Á“3™®î3vìX?~¼Oûè¸MÇÛžžž¸xñ¢Ec<yÒä¥-cŽùjóÐÕŸöÕ€ä³-³‡9*y86æ«-ÌCYš¼FHDDd+l„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡)þ9ÂÊÊJ¤¦¦*=,uPQQaö‹oÍaÖ×›<”Æ|­õ¦-Ö¨7E¡ŸŸZZZpéÒ%%‡¥»xxx`ÆŒ=nÇ<lÃÒ<”Æ|mƒõ¦-Ö¨7Ea`` •’úy86æ«-ÌÃ~ñ!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$4E?GxæÌTUU)9$uaêÔ©=~¨”yØŽ%y(ùÚëM[”®7EaUUŽ=ŠÐÐP%‡¥»TVV¢¥¥¥Ç_æa–æ¡4æk¬7m±F½)þ]£ƒÉÉÉJK¤¤¤ ®®Î¢m™‡õõ&¥1_ëc½i‹5ê×‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$4»m„­­­ˆŽŽ¶ù~£££ÑÚÚjóýjóplÌW[˜‡²Tm„:®ËåíÿºRXXˆGy¤Çû´µµaË–-3fôz½¼¾ãv555ðòòÂ;ï¼c2–^¯Ç¸qã°wï^yÛiÓ¦¡°°°÷k˜‡cc¾ÚÂ<´C“Ï%I‚$IÝn“ŸŸƒÁÐã}’““QPP€¢¢"ܹs§Ó6eeeˆŠŠBnn.V®\i2^kk+òòò°jÕ*y¹Á`@~~~Ì>1ÇÆ|µ…yØžâ}ÂVNœ8ooï·Û¹s'vìØI“&uZ·gÏdff¢¸¸]Ž1
 räHù¶··7¾üòË>ÍÙ‘1ÇÆ|µ…y(K“Ï-ÑØØWW×·»|ù2JJJ0hÐ xxxàСCòº5kÖ`Æ
+f	t:œœœ0kÖ,¼ùæ›òrWWW\»vM‘cp$Ìñ1_maʲÛF8tèPÆ·sssCDD®_¿Ž;v`Ù²eòºÒÒRÄÇÇ›}ª/IÚÚÚP\\Œõë×ËˍF#†
+¦ÌA8æáؘ¯¶0eÙm#œ>}:Ο?ßãv‘‘‘ `ö"q@@ JKK‘””„ììì.Ǩ¯¯—o_¸p}¶ÃbŽùjóP–ê×ï~—“$I&ËÚoß}‘7&&r(]Ýgûöíxî¹ç0gÎŒ7»ví2ÇÇLjŒŒDSS6nÜh2ƨQ£™™)o_^^ŽØØØ~³–1ÇÆ|µ…yhƒª°«wFõôŽ) X°`.\Øã}Fòòòn÷áé鉋/Z´ÿ“'Oš¼TàH˜‡cc¾ÚÂ<´Cõg„}5`À Ø|¿jìÓ0ÇÆ|µ…y(Ën¯)ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$4Å?GXYY‰ÔÔT¥‡¥***ºý¶øŽ˜‡õõ&¥1_ëc½i‹5êMÑFèç燖–\ºtIÉaé.˜1cFÛ1Û°4¥1_Û`½i‹5êMÑFˆÀÀ@%‡¤~`Žùjó°_¼FHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	MÑÏž9sUUUJI]˜:uj*e¶cIJc¾¶ÃzÓ¥ëMÑFXUU…O>ùS¦LQrXºË¹sçÐÒÒÒã/ó°
+KóPóµ
+Ö›¶X£Þÿ®Ñ)S¦`Ù²eJKäçç[¼-ó°¾Þä¡4æk}¬7m±F½ñ!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBSµJ’„ƒbÑ¢E˜9s&.\ˆÏ>ûÌ*û
+CXXÂÃñhÑ";v¬Ó6iii¸xñ"Z[[±zõjyyCCÖ®]‹™3gbíÚµhhh°ÊÕf/y´ß7,,Ì*ssTö’/ëMy¬·î©Ú8€ââb¼üòË8rä¶mÛ†³gÏZmeeeøüóÏñ»ßýÛ·oï´^’$èt:œ;w'N”—geeaòäÉøä“O0yòddeeYmŽj²—<ÊÊÊPVVfµy9*{É—õf¬·®)þ×'z㣏>Âo¼OOO ÀèÑ£‘””$¯?þ<¶mÛ†ºº:Œ?7n„——ÂÂÂ0gÎ>|Ÿþ9êêꐖ–†óçÏãW¿ú’’’0iÒ¤.÷«×›öÿƒbÇŽ `rFöÁ ¬¬§NB^^ˆgŸ}qqqJ>ša/yPߨK¾¬·_h%¨úŒ°¾¾ãǏïrý¶mÛðÔSOáðáÃxê©§šš*¯›0a‚ZJJ
+fÏžO?ý«W¯FZZšÙñÂÂÂ0sæLüùÏFBB‚¼|Þ¼y8tèüýýQVV|ôÑGò/AKK† <x0nܸÑïc×"{ɃúÆ^òe½ýB+yˆ@Õg„#FŒÀ?þñ<ðÀf××ÕÕaÖ¬YpvvÆ“O>‰·ß~[^.ŸÙ|÷ÝwHMM•Qt:Ùñº
+¶ãkßí·£¢¢°víZDEEá¾ûîCSSÜÜÜÐÜÜŒû÷kì%ê{É—õö­ä!UaTT¶mÛ†„„xzzâêÕ«Ø»w¯üòÀ¸qãðùçŸcæÌ™øË_þbröäää$ß~ðÁƒÁ ggç^Ï£¬¬o¿ý6{ì14ü1^zé%yý´iÓðþûïã…^Àûï¿ÿ~µvÙKÔ7ö’/ëM[yˆ@ÕF8þ|899áµ×^ÃÕ«W1räH,\¸P^Ÿ˜˜ˆ´´4ddd`üøñ&¯Ÿwô‡?üéééøÓŸþ„Ÿ~ú	@×g?]©©©ÁòåËqöìÙNg +V¬Àk¯½†§Ÿ~&LÀÿüÏÿôòH탽äaîV¤—qúÊ^òe½ýB+yˆPoºM›6IÉÉÉÝn”’’‚ººº.ƒh—••…þóŸX¶l™’s¤»äççÃÉɉyhDoòÐëõ`½ÙÖ›¶X£Þøz""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$4U¾YæÜ¹s¨®®Vcך÷ðÃcÊ”)6Ý'óèšy(ùvõ¦-jÕ›*°ºº_}õBCCÕØ½fUVVÂh4Úüy˜§VJc¾æ±Þ´EÍzSí»F
+C_}#š””«þaÎî0ÎÔÌCiÌ·3Ö›¶¨™¯‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$4»h„::NNNðööÆ¡C‡LÖ™Û¾·ã´[²d	ª««ñóÏ?#((H^~àÀøøø`àÀðóóCII‰GfŸ´G[[¶lÙ‚1cÆ@¯×w¹ê=-ä[PP€‰'²Þ <ÚïÛþoøðá
+™vØE# I’pûömlß¾K—.µÚ8mmmÐëõøâ‹/0}útyùPPP€––¬^½±±±}žƒ#P;ääd ¨¨wî܁$I}žu¦v¾Ÿ~ú)ŠŠŠÐÜ܌͛7#&&¦Ïspjç!I’üïøñãøÝï~×ç9h‘Ý4ÂvNNNV'==:»w¯/BCC‘‘‘!Ÿ]bÒ¤IpqqAdd$î½÷^EæaïÔÊcçΝؾ};&MšÄgƒV¤V¾ï¾û.Ə½^'''Œ3F‘yØ;µòèèü#V­Z¥È<´Ân¡N§ƒ³³3Ö­[‡ììlÅljGcc#ÂÃÃ!IÂÃÃÑÐÐÐ陯÷ߏyóæ!##£Ïspjçqùòe”””`РAððð0û2õÚù¶ß×ÅÅË–-ëׁò €cÇŽaèС5jTŸç Eªý=ÂÞêê¥/gggF¸ºº ŒF#\\\z=NÇ3ŸöÛÇGff&V¯^
+ 8q⢣£ñúë¯ã™gžéÓq8
+µópssCDDRRRPRR‚ŋ㷿ým_‡î¢v¾í÷ýñÇqøða<ÿüó¸páBŸŽÅh! xå•W––ÖëùkÝ<#ìJpp0¶nÝ
+£Ñ£Ñˆ­[·"$$¤×ãH’„õë×£¼¼§OŸÆÒ¥K!I’üK°sçNÌž=ÙÙÙX¸p¡Ò‡á0l•Gdd$€-_µ
+[åúúz €^¯Ç7=Ga«< àèÑ£hmmÅÔ©S•<M°ûF˜››‹S§NÁÝÝîîî8}ú4rssû4ÖñãÇ„ÆÆF:ÔdÝòåËñÃ?à‰'žß9e4•8‡b«<¶oߎ´´Á\Ýy  DIDAT4¸ººbݺuصk—Ó§Ø*____øùùaȐ!HMMÅþýû•˜¾Ã±UÀ/Ïãããû;eM²‹—F»{G ‡‡ŠŠŠú= TVV ÂÃÃÞ«ûŠDyŒ=åååí‡zGùÆÅÅ!..΢ý8:-ä ýë_-ڏ=²ûg„DDDýÁFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	M•ÔÿðÃ(--Euuµ»×¬‹/bìØ±6ß/ó0O­<”Æ|Íc½i‹šõ¦J#lmm…»»;|}}ÕØ½fݼywîܱù~™‡yjå¡4ækëM[Ô¬7UáèÑ£1yòd$''«±{ÍJIIÁÙ³gm¾_æažZy(ùšÇzÓ5ë×‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$46B""š]4BNN'''x{{ãСC&ëÌmßÛqÚ-Y²ÕÕÕøùçŸÔé¾w}åÊÃÙÙÁÁÁ¸råJ_Ónh9v[¶léruOËùö”»#²—<ì9»h„  Inß¾íÛ·céÒ¥V§­­
+z½_|ñ¦OŸnr?I’:m¿aÄ„„ ¹¹!!!HLLìóÜì‰Vó €“'O"''§Ïs"íæÛ]îŽL«yt\gϹØM#lçääd•qÒÓÓ¡Óé°{÷nøúú"44=žå””” >>...ˆGqq±"ó³ZËãÖ­[ˆ‹‹Ã¾}û™—è´–¯è´˜ÇàÁƒáêꊧŸ~uuuŠÌÏÖì¦êt:8;;cݺuÈÎÎV|œøøx466"<<’$!<<
+
+
+=žå466bĈ €áÇãúõë}ž›=Ñj›6mÂâÅ‹ñøã÷yN¤Ý|E¥Õ<$IBss3jkkñðÃ#66¶ÏsS“*°/º
+ÄÙÙF£®®®  £Ñ—^Óņ̃ýöðáÑ™™‰Õ«Ww9ž››êëë1räH444ÀÍÍ­ÇcqZÍ###’$!!!A¾/ÿçÚ{ZÍWTZÏÃÝݯ¾ú*Üã¶Zd7Ï»Œ­[·Âh4Âh4bëÖ­		éõ8’$aýúõ(//ÇéÓ§±téRH’Ôã/ADDÒÓÓqëÖ-¤§§#<<¼¯‡âÔΣ­­Íäz› ²ÔΗLi%¦¦&lݺ~~~½Þ·Ø}#ÌÍÍÅ©S§àîîwwwœ>}¹¹¹}ëøñã
+
+Bcc#†j²®ã»¢:ÞNKKCEEî¿ÿ~=zÛ·oïßÙ9µó ëR;_ænJ+yŒ5
+_|ñ…Ý^›·‹—F»;«÷ðð@QQQ¿Ç€ÊÊJ @xxx§gv]ÝwìØ±8~ü¸EûwZΣ·ÛPgZÎWÄL™‡õÙý3B""¢þ`#$""¡±‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„¦Úê+++‘ššªÖî5©¢¢Bµï*e©™‡Ò˜og¬7mQ3UáC=£Ñˆêêj5v¯Ynnn˜2eŠÍ÷Ë<ÌS+¥1_óXoÚ¢f½©ÒýüüìöËYóplÌW[˜‡öð!	ˆˆ„ÆFHDDBc#$""¡±‘ÐØ‰ˆHhl„DD$4Å?GøÍ7ß ??_éa©ƒêêjøûû[´-ó°¾Þä¡4æk}¬7m±F½)ÚýüüÐÒÒ¢äd†¿¿?f̘ÑãvÌÃ6,ÍCiÌ×6XoÚbzS´"00PÉ!©˜‡cc¾ÚÂ<ì¯‘ÐØ‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDB³øs„ÿûß‘••e͹9´ªª*Y´-덨zSo5ÂÀÀ@455õkRD¢Dhh¨EÛ±ÞˆúÇÒz,l„ƒƒ¡?s""±Þˆl‹×‰ˆHhl„DD$46B""!	ˆˆ„ÆFHDDBc#$""¡éƒôŸÿùŸjσˆˆÈæÊËËñÿ£Ã\ÖX©T·    IEND®B`‚
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/dudley.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/dudley.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/dudley.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000ffff" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" allowed_cpuset="0x0000ffff">
+    <info name="Backend" value="Linux"/>
+    <object type="Socket" os_level="-1" os_index="0" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111">
+      <object type="Cache" os_level="-1" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111" cache_size="4194304" depth="3" cache_linesize="64">
+        <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="16384" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="0" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101">
+              <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+              <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
+              <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
+              <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_level="-1" os_index="1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222">
+      <object type="Cache" os_level="-1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222" cache_size="4194304" depth="3" cache_linesize="64">
+        <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="16384" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="0" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
+              <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+              <object type="PU" os_level="-1" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="16384" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020">
+              <object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020"/>
+              <object type="PU" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_level="-1" os_index="2" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444">
+      <object type="Cache" os_level="-1" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444" cache_size="4194304" depth="3" cache_linesize="64">
+        <object type="Cache" os_level="-1" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="16384" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="0" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404">
+              <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004"/>
+              <object type="PU" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="16384" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040">
+              <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
+              <object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_level="-1" os_index="3" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888">
+      <object type="Cache" os_level="-1" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888" cache_size="4194304" depth="3" cache_linesize="64">
+        <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="16384" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="0" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808">
+              <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+              <object type="PU" os_level="-1" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="16384" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080">
+              <object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080"/>
+              <object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/emmett.png
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/emmett.png	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/emmett.png	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,93 @@
+‰PNG
+
+   
+IHDR  ®  ®   Èõâš   bKGD ÿ ÿ ÿ ½§“    IDATxœíÝ}TTuÂðï
+ÚC†ºf)R`…	¢ør˜@0-[ÒhÍŽº%š¼ä®iê# x–…µ@5qÐ|ËŠ@Ϫ@*K‰m¨Ùò
+B at 2_ûüÑá>Œ€ÌÀ…¹?ø~ÎñÈÜ{çwï/×ïܹ3£ÆÝÝ]òôô‘Ú¢ŸN§CTT”©·…ˆˆ¨CÑÑÑКz#ˆˆˆŒÁâ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡˜´¸4QÓÑØØÿ.Óþþþhll4ɺ‰ˆz;£ŠK£Ñ 33SoÚæÍ›)š–$Iêò™™™˜0a‚|[£ÑÈZjjjÂÚµk1|øphµZy~SS¢¢¢0jÔ(˜››ãé§ŸÆ'Ÿ|Òj<­V‹#F --Mž7~üøV)Ãè3®„„¹Xîܹƒ]»v)¾QJHOO‡N§“oK’Ôf!FEE!##ÙÙÙ¸{÷®¼Ltt4>ûì3>|¿þú+<ˆ£GêÝW’$466"55K–,‘§ët:¤§§wÏŽõqF—‹‹: ؽ{7fΜÙj™æ³‘Ç{‡ ”””ÀÅÅýúõÓ;ëY¿~=¬¬¬`cc#ŸÑ4Ï×h4mÎÿþûï1iÒ$˜››côèÑ8~üx«m(..†ƒƒC‡û“’’‚¸¸8Œ3Fo»’““ññÇc̘1èß¿?°sçÎvÇ:t¨ü³ƒƒ¾ùæ›×MDD)
+€táÂiâĉRSS“äää$ýøã€VËÞ½{WÊÏÏ—F%I’$;VŠ—nÞ¼©7^bb¢tãÆ
+é‹/¾,O¿ß|WWWiÇŽÒÍ›7¥Ï?ÿ\=zt«õ÷ë×OjlllsZ233“BCC¥J#GŽ”8Ðêþ ä?-ÇiþÓ¿éСCò¼;wîHýúõ3à%""cDEEIF—$I’ŸŸŸôöÛoKóæÍÓ›.I’/=þøã’V«• HF’¤ß‹à×_m5ÞÝ»w[ßòï¶æ÷ë×O¯8š×ÑҐ!C¤ÚÚÚv÷¡™ôÙgŸI7oÞ”>ûì3¹üq©¼¼¼Ýû6ÿÜÔÔ$åççKO<ñ„<ïÚµkÒСC[­›ˆˆº&**JêÔ»
+W¬X?üË–-këü1pèÐ!ùš‘££#RRRpëÖ-½åµÚûoB[󝝝±cÇüú믐$	MMM­–™8q"ÊËË;Ü ú/OÀo¼?ÿùÏ8þ<îÞ½‹.Üwœªª*ùçóçÏÃÕÕµÃu‘ñ:U\S§N…$I˜<yr«yááá˜;w.†
+†3gÎÈÓSSS‘ššŠvù]ˆÿüç?±k×.<òÈ#m¾S PPP ßn¹\ËŸãââKKK¼óÎ;ؾ}; à¯ý+¦L™‚çž{ÀÿøGüóŸÿÔ[Gó»
+‘˜˜(OÏÏÏG```—ö‘ˆˆÚ¦‰ŒŒ”¢¢¢L½Š»sçæÏŸŒŒŒ_·¿¿?vïލ~ýúõøº‰ˆz³èèhôÚYû÷ïo’Ò`²õõüÊ'""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡ô9®ÂÂB½o¡ ""Rš»»;<==;\ΠâÊÏÏGff&ÜÜܺ¼aDDD÷*))Amm­rÅ nnnïÒ†µ%))Éàey‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡¨º¸ìììL½	DD¤2ÝR\˜1càííC‡uÇjôܯäììì`gg‡'Ÿ|^^^ÈÉÉiµLDD¾ÿþ{466bΜ9òô+W®`îܹ=z4æÎ‹+W®tËö‘aº¥¸V¬Xàà`|÷ÝwHMME^^^w¬Æ(øá‡°jÕ*DFF¶š/I´Z-Μ9'''yzTT\]]ñí·ßÂÕÕQQQ=¹ÙDDtn).+++TUU¡¬¬ƒF||¼<ïìÙ³˜9s&ìíí1sæL”•• ÊÊÊ0kÖ,ØÛÛ·:{:~ü8&NœˆÌÌL\¸p¯¼òŠ|6wúôiyùæ3«û133Ó»šš
+;;;ìÝ»3fÌ@@@ vìØ!ó¯ýAAA°°°@PPþõ¯uùñ!"¢Îë–âÚ¶m~úé'¬[·øôÓOåyaaað÷÷Gii)üýý&OŸ={6ÊÊÊPQQ!/¿ÿ~¬Y³Û·oǼyó°råJâìÙ³X½z5"""äå+**ôîÛ’F>ø 7n”§¡¤¤“&MBEE&Mš„Ó§OËãÔÕÕaРA  kkkÔ××+û`‘Qþÿ¸Œ1jÔ(¬_¿ P^^ŽÀÀ@Ìž= páÂøûûcÀ€˜;w.6lØ  8þ<`nn®7VDD¶nÝ
+GGG ¿Ÿ™………É…§ÑhÚ¦ûÚ½??k׮łðð㦦666¸vízè!C""êÝrƵ|ùr\ºt	·o߯?ü€¦¦&yÞO<}ûöá·ß~CVVìíí سgnß¾­7VJJ
+
+ xæ™g+Ÿ™]¼x Я_?üüóÏFokEE‚‚‚žžŽÃ‡ÃßßX°` `òäÉHMMÅ­[·ššŠÉ“'wê1!""etKqyyyá7Þ€££#âããõÞЃ]»vaìØ±Ø³g6mÚ$OÏÊÊÂÓO?­wäé鉝;wâƒ>ÀöíÛñ÷¿ÿû÷‹‹Þ5­W_}:®So¡?sæ\\\PWW+++½yï½÷Š‹‹ñì³Ï¢¸¸«V­êÌCBDD
+ÑDFFJ½S.::•••ï¡Í""¢¾$))	Z­¶ÃwnGGG«ûÈDDD÷bq‘PX\DD$	…ÅEDDBaq‘PX\DD$	EÑï*,))AQQ‘’C	aܸqpss»ï2<>¨¯2äø0†¢ÅUTT„cÇŽÁÓÓSÉa‰T­°°õõõ˜<>¨/2ôø0†â߯ÓéøŸ-RŸÒü•h†àñA}1LJ¡x‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡[\ð÷÷7õftÈßߍ¦Þêcx|PofÒâÒh4mNÏÊÊ‚££#ÌÍÍáììŒÜÜÜVËdffb„	­¦¯]»VoÜË—/cÊ”)°°°À”)Spùòe ÀçŸ{{{XXXÀËËW¯^ 455aíÚµ>|8´Z­<VË1ËÊÊ`oo>úHž§Ñh Õj1bĤ¥¥ÉËŽ?™™™Æ>4D<>ˆÚ¡Ê3®¬¬,ddd ¾¾!!!lµLzz:t:Þ´S§NaëÖ­zÓV®\‰©S§¢®®S§NEXX `áÂ…ˆG}}=Þ}÷]yzTT222»wïB’$½ñòòòàçç‡mÛ¶á­·Þ’§K’„ÆÆF¤¦¦bÉ’%òtN‡ôôô.=D-ñø ¾Nño‡WBËg`>>>ذaC«eŠ‹‹áàà ß¾yó&‚‚‚°{÷nxyyÉÓsssqöìY0 ¡¡¡3f€ßŸ9ÿÿLñË/¿ ¤¤¤`Ë–-òr-íܹ‰‰‰ÈÉɁ­­m»Û?tèPùg|óÍ7†ì6‘Ax|P_§Ê3®fW®\Áœ9sÐj^MM
+,--åÛ‘‘‘X¸p!ž{î¹VË
+< `ccƒk×® ’““ñöÛoÃÊÊ
+999òôŸ~ú	¹¹¹xà`kk‹ƒÊc-]º+W®ló Ôh4033ÃÌ™3±yófyº¥¥%~ùå—Î?DíàñA}•j‹«¸¸
+
+ÅK/½Ôjþ AƒÐÐÐ ßNHHÀŠ+Z½ænmmªª* @uu5¬­­ ³gÏFee%nܸ___<öØcòòÓ¦Mõk×°eËËë8zô(BCCÛ|iC’$455!''Ë—/—§744à‘GéêÃA¤‡Çõeª,®””Ìš5ÉÉɘ?~›ËLœ8åååòí¦¦&H’$¿æÞü÷´iӏ›7o">>ÞÞÞò}$I¹sç†Å‹øý¥ m^tvuuÅÑ£GŽäääv·¿ù 8þ<\]]Ú¢ûáñA}É¯qÝûÎ)I’°hÑ" ÀôéÓåéׯ_×{é#   þÒÇÆÆÂßß=ô\]]‘‘‘¡·ÞaÆañâÅ ÄÅÅáÕW_ÅË/¿Œ#F`ûöízã9::¢   >>>¨­­EDDD«ñååóóóÛ¼xNdD­™´¸î}GRGÓ[š7o^»Ï6[ÞÿñÇlj'^Ç£>Šüüüû.ogg‡‹/´½§NÒ{i„ÈP<>ˆÚfò3®Îêß¿¿üìPÍDØFê}x|Po¦Êk\DDDíaq‘PX\DD$	…ÅEDDBaq‘PX\DD$Å?ÇUXXˆ˜˜¥‡%R­‚‚‚û~zK<>¨¯1æø0”¢ÅåììŒúúz\ºtIÉa‰TÍÖÖnnn.Çãƒú"Cc(Z\îîîpwwWrH¢^ƒÇ‘2x‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(Š~Ž«¤¤EEEJIí7n\‡êc=‡y¨óPCò0†¢ÅUTT„cÇŽÁÓÓSÉaé………¨¯¯ïðyôæ¡.ÌC]ÍÊW¡N§CTT”ÒÃRÑÑѨ¬¬4hYæÑý˜‡º0u1&Cñ	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDB¶¸áïïßãëõ÷÷Gccc¯W혇º0uaÊ2iqi4šv§7ÿiOff&&L˜ ßÎÈÈÀSO=sss8;;#77 ••GGÇVÓ[Ž]VV{{{|ôÑGzë×jµ1bÒÒÒäeǏÌÌÌÎï´Š1uaêÂ<ÔC•g\’$A’¤û.“žžN'ß>rä²³³QWW‡U«V!   À│¯¯GHHõÆÉË˃ŸŸ¶mÛ†·ÞzKo‘ššŠ%K–ÈÓu:ÒÓÓØKq0uaêÂ<zžâßßSŠ‹‹áàà ßþä“O  ·nÝ‚™™† zÏ6|||°aÃùöΝ;‘˜˜ˆœœØÚÚ¶»®¡C‡Ê?;88à›o¾Qj7z
+æ¡.ÌC]˜‡²„-®ššXZZêMk>¶¶¶ÆçŸ®7ïÊ•+˜3gäiK—.ÅÖ­[Ûü%h«ÿþØ·oŸ<ÝÒÒ¿üò‹R»Ñk0uaêÂ<”¥Ê—
+
+1hÐ 444èM“$	7nÜ@RR^{í5yzqq1<<<Š—^zIž~ôèQ„††¶y*-Iššš““ƒåË—ËÓðÈ#tɍy¨óPæ¡,a‹kâĉ(//—o‡††¢ªª
+  Õjqýúu @JJ
+fÍš…äädÌŸ?_oWWW=záááHNNnw]ÍãÀùóçáêêªä®ô
+ÌC]˜‡º0e™ü¥Â{߉#I’Þ´æŸï½ø€‚‚9”±cÇÂÙÙÕÕÕ;v,öìÙ X´h `úôéò}›I ÀÑÑðññAmm-"""ôÖ;lØ0$&&ÊËççç·º`Ú›0uaêÂ<ÔÁ¤ÅÕÞ;q:z‡ Ì›7OïIPP‚‚‚:µ;;;\¼xÑ õŸ:uJïT¼7aêÂ<Ô…y¨‡Éϸ:«ÿþÈÈÈèñõšb"`êÂ<Ô…y(KØk\DDÔ7±¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""ŠâŸã*,,DLLŒÒÃR÷ývè–˜G÷cêÂ<ÔŘ<¥hq9;;£¾¾—.]RrXº‡­­-ÜÜÜ:\Žyôæ¡.ÌC]ÍÊ—»»;ÜÝÝ•’º€y¨óPæ!.^ã"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""Š¢Ÿã*))AQQ‘’CR;ƍ×á‡ú˜GÏaêÂ<ÔŐ<Œ¡hqá³Ï>ƒ“““’ÃÒ=Ν;‡úúú˜GÏ`êÂ<ÔÅÐ<Œ¡øw:99!88Xéa©…ôôtƒ—eݏy¨óPcò0¯q‘PX\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘PX\DD$	ŤÅ%IöíÛ‡À××óçÏÇ—_~Ù-ëòòò‚——¼½½±`Á?~¼Õ2±±±¸xñ""O¯®®Æ²eËàëë‹eË–¡ººº[¶ÑÔDÉ£ù¾^^^ݲmj!JX¸p!|}}ŒÓ§OwË6šš(y|ýõ×xýõ×{uŠÉ®1²²²——‡Õ«WcÔ¨Qøù矑––†çŸ¾[Ö———‡»w¨±±±˜<y²Þ|I’ ÑhpîÜ9<õÔSòô¤¤$<û쳈‹‹ÃΝ;‘””„¿þõ¯Ý²¦$Jyyy Ðë‹K”<òóóñþûïcøðáÈÉÉÁ†
+°ÿþnÙFS%ÂÂBlÚ´	VVV8yò$Ö¯_tË6šŠI‹ëÀذaììì  >ú(ÂÃÃåùåå娴i*++1räHDDDÀÞÞ^^^xùå—qøða|õÕW¨¬¬Dll,ÊËËñ‡?üááá3fL»ëÕjõO4÷íÛ‡-[¶ €Þ3¨O?ýyyy8}ú4RSSannŽW^yAAAJ>ª!J}…(y¬Y³Fž6a¤¥¥)²ÿj#Jï½÷ àΝ;Ðjµ°±±Qì1P“¾TXUU…‘#G¶;Ó¦Mxá…pøða¼ðˆ‰‰‘ç=Z-::³fÍ‘#G‚ØØØ6Çóòò‚¯¯/þñ`ÅŠòô9sæààÁƒpqqA^^\\\pàÀùÉúúzXYY ~øa\¿~½Ëû®F¢äÑWˆ–GMM
+Ö¬Yƒ¥K—ve·UK¤<¼¼¼0}útlÞ¼Yï¾½…IϸŒÿþ÷¿5jT›ó+++1sæLXXX`ÆŒøðÃåyÞÞÞò3‘. &&FþEÑh4mŽ×Þ?|-_rjþÙÏÏË–-ƒŸŸ|ðAÔÖÖÂÚÚuuuxðÁßYˆ’G_!RÿùϰnÝ:,\¸“&M2rOÅ Ryyy¸uëNž<‰¨¨(ìÚµËȽU7“—ŸŸ6mÚ„+
 VÀÎÎW¯^EZZš|ú=bÄ|õÕWðõõÅ_|¡÷lÇÌÌLþùÉ'Ÿ„ŸŸt:,,,ŒÞ޼¼<|øá‡˜<y2xà:tï¾û®<üøñØ»w/^ýuìÝ»...]Økõ%¾B”<Ž9‚?þ«V­Â„	º°Çê&J[¶lÁŸþô'87nÜèÂ^«“I‹kîܹ033úuëpõêU:óçϗ燅…!66			9r¤ÞëÉ-ýå/A||<þö·¿áöíÛ Ú¶Òž²²2,Z´ß~ûm«3ªÅ‹cݺuxñÅ1zôh¼ÿþûFî©DÉ£­gœ½ñeDQòؼy3 è­ÿÈ‘#8p QëP;Qò°³³Cpp0êêêðÄO`õêÕFî©úi"##¥¨¨¨û.ÊÊÊvƒh–””„ü‘ÿv7KOO‡™™óP	æ¡.ÌC]ŒÉC«Õ>␉ˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡˜ä›3Ν;‡ÒÒRS¬Zõžyæ899õè:™Gû˜‡º0u1E€‰Š«´´ß}÷<==M±zÕ*,,DCCCÿ"0¶1uaêbª< ~W¡N§ëð«=úšèèh|ûí·&Y7óhy¨óPSæÁk\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDB¢¸4
+4
+ÌÌÌààà€ƒêÍkkycÇiöÆo ´´wî܁‡‡‡<ýòå˘2e
+,,,0eÊ\¾|Y=“òh¶víÚvÇï+ԐGVVanngggäææ*°gbRCMMMX»v-†­VÛëŽ!Š $I­[·‡7ß|³ÛÆijj‚V«ÅÉ“'1qâDyúÊ•+1uêTÔÕÕaêÔ©ëô6ô¦Î N:…­[·vzݽ‰©óÈÊÊBFFêëë‚ÀÀÀNoCo`ê<¢¢¢‘‘ììlܽ{’$uzÔH˜âjfffÖ-ãÄÇÇC£Ñ`ÇŽ;v,<==‘ ?SÉÍÍEhh(€ÐÐPäää(²¢3U7oÞDPPvïÞ­Èú{Så‘™™‰1cÆ`À€ðññÁÿüÏÿ(²¢3U)))ˆ‹‹Ã˜1czÝÙ Pqi4XXXàwÞArr²âㄆ†¢¦¦ÞÞސ$	ÞÞÞ¨®®–Ÿ©ÔÔÔ`ðàÁ  \»v­k;$8S牅â¹çžëò¾ô¦Î£Ù•+W0gÎ$$$tzzSçñÓO?!77<ð lmmÛ|™Qd&ûÿ¸ŒÕÞ©®……`ii	 hhhÀ€Œ§å³’æŸmll˜˜ˆX[[£ªª
+C‡Euu5¬­­;»+½‚©óHHH€$IX±b…¼Lo{9Ä¦Î Š‹‹áïïõë×㥗^êÔ~ô¦ÎÃÚÚÓ¦MCtt4rss±páBüñìì0g\í™2e
+6n܈††444`ãÆ˜:uªÑãH’„åË—#??gΜÁ›o¾	I’äƒrÚ´iˆÇÍ›7ooo¥w¥Wè©<ššš I’|`÷åÒºŸžÊ#%%³fÍBrr2æÏŸ¯ônô=•‡€ÿ/µÞör¡ðŵmÛ6œ>}C†Á!CpæÌlÛ¶­Sc8q¨©©Á AƒôæÅÆÆ¢   =ôŽ;†¸¸8%6¿×é©<È0=•Ç¢E‹ðóÏ?cúôéò»á”Ø…^¥§òˆ‹‹Cll,,--ñÎ;ï`ûöíJl¾jñRáýžMÛÚÚ";;»Ëã @aa! ÀÛÛ»ÕÕã?Ž'N´žÞN
+y3No§†<úz-©!G}ùùù­GDŸqQßÂâ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""ŠÉ>€\XXˆ˜˜S­^•
+
+
+LöˆÌ£5æ¡.ÌC]L™‡IŠëé§ŸFCCJKKM±zÕ²¶¶†““S¯—y´y¨óPS嘨¸œáììlŠUS˜‡º0uaêÃk\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDBQüs\ßÿ=ÒÓÓ•–Z(--…‹‹‹AË2îÇ<Ô…y¨‹1yJÑârvvF}}½’CR\\\àææÖárÌ£g0uaêbhÆP´¸ÜÝÝáîî®äÔÌC]˜‡º0qñ	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘Pþ׿ÿýo$%%uç¶QUTTƒ–5¨¸ÜÝÝQ[[Û¥"""j»»;<==
+ZÖ âÒétÐét]Ù&"""Eð	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘PúWaa!
+
+
+º{[ˆˆ¨3ôCÈW~~>233áææÖå
+#""ºWII	jkk•+. pssCxxx—6Œˆˆ¨-Æ|.¯q‘PX\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘PX\DD$U—©7ˆˆT¦[Š«   3fÌ€ƒƒ¼½½qèСîXžû•œìììðä“OÂËË999­–‰ˆˆÀ÷ßÆÆFÌ™3§Õ}Y¢DDêÐ-ŵbÅ
+ã»ï¾Cjj*òòòºc5F©¨¨À?ü€U«V!22²Õ|I’ ÕjqæÌ899éݯ¢¢¢'7•ˆˆî£[ŠËÊÊ
+UUU(++ÃàÁƒ/Ï;{ö,fΜ	{{{Ìœ9eee €²²2Ìš5ööö­ÎnŽ?މ'"33.\À+¯¼"ŸÍ>}Z^ސ3#333½Û©©©°³³ÃÞ½{1cÆ`ÇŽ<Ã""R©n)®mÛ¶á§Ÿ~ºuëàááO?ýTž”––ÂßßaaaòôÙ³g£¬¬LïgÿþýX³f
+¶oß{‰)!  _IDATŽyóæaåÊ•ÄÙ³g±zõjDDDÈËßïìÈÎΣGÆ|€7ÊÓƒ‚‚PRR‚I“&¡¢¢“&MÂéÓ§y–ED¤Rÿ\Æ5jÖ¯_ (//G`` fÏž
+ ¸páüýý1`À ̝;6l  œ?077×+""[·n…££#€ßÏÌÂÂÂäÂÓh4mÓý
+íޟǏµk×bÁ‚†î2õn9ãZ¾|9.]º„Û·oã‡~@SS“<ï‰'žÀ¾}ûðÛo¿!++ööö  ìÙ³·oßÖ+%%aaaÈÎÎ <óÌ3ˆ•ÏÌ.^¼ èׯ~þùg£·µ¢¢AAAHOOÇáÇáïŠ
+–‘JuKqyyyá7Þ€££#âãã%Ï‹‰‰Á®]»0vìXìÙ³›6m’§geeáé§ŸÖ;òôôÄΝ;ñÁ`ûöíøûßÿŽýû÷ÃÅÅEïšÖ«¯¾
+NשkSǵ‹‹êêê`ee¥7¯å:øîB""ÓÓDFFJ-‹¥-ÑÑѨ¬¬Dxxxmõ%IIIÐjµ0¤Týd""¢{±¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„¢èw–”” ¨¨HÉ!‰„0nÜ8¸¹¹ÝwÔWr|CÑâ***±cÇàéé©ä°DªVXXˆúúúLÔz|Cño‡×ét~eQoÒü•h†àñA}1LJ¡x‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡[\ð÷÷7õftÈßߍ¦Þêcx|PofÒâÒh4mNÏÊÊ‚££#ÌÍÍáììŒÜÜÜVËdffb„	­¦¯]»VoÜË—/cÊ”)°°°À”)Spùòe ÀçŸ{{{XXXÀËËW¯^ 455aíÚµ>|8´Z­<VË1ËÊÊ`oo>úHž§Ñh Õj1bĤ¥¥ÉËŽ?™™™Æ>4D<>ˆÚ¡Ê3®¬¬,ddd ¾¾!!!lµLzz:t:Þ´S§NaëÖ­zÓV®\‰©S§¢®®S§NEXX `áÂ…ˆG}}=Þ}÷]yzTT222»wïB’$½ñòòòàçç‡mÛ¶á­·Þ’§K’„ÆÆF¤¦¦bÉ’%òtN‡ôôô.=D-ñø ¾Nño‡WBËg`>>>ذaC«eŠ‹‹áàà ß¾yó&‚‚‚°{÷nxyyÉÓsssqöìY0 ¡¡¡3f€ßŸ9ÿÿLñË/¿ ¤¤¤`Ë–-òr-íܹ‰‰‰ÈÉɁ­­m»Û?tèPùg|óÍ7†ì6‘Ax|P_§Ê3®fW®\Áœ9sÐj^MM
+,--åÛ‘‘‘X¸p!ž{î¹VË
+< `ccƒk×® ’““ñöÛoÃÊÊ
+999òôŸ~ú	¹¹¹xà`kk‹ƒÊc-]º+W®ló Ôh4033ÃÌ™3±yófyº¥¥%~ùå—Î?DíàñA}•j‹«¸¸
+
+ÅK/½Ôjþ AƒÐÐÐ ßNHHÀŠ+Z½ænmmªª* @uu5¬­­ ³gÏFee%nܸ___<öØcòòÓ¦Mõk×°eËËë8zô(BCCÛ|iC’$455!''Ë—/—§744à‘GéêÃA¤‡Çõeª,®””Ìš5ÉÉɘ?~›ËLœ8åååòí¦¦&H’$¿æÞü÷´iӏ›7o">>ÞÞÞò}$I¹sç†Å‹øý¥ m^tvuuÅÑ£GŽäääv·¿ù 8þ<\]]Ú¢ûáñA}É¯qÝûÎ)I’°hÑ" ÀôéÓåéׯ_×{é#   þÒÇÆÆÂßß=ô\]]‘‘‘¡·ÞaÆañâÅ ÄÅÅáÕW_ÅË/¿Œ#F`ûöízã9::¢   >>>¨­­EDDD«ñååóóóÛ¼xNdD­™´¸î}GRGÓ[š7o^»Ï6[ÞÿñÇlj'^Ç£>Šüüüû.ogg‡‹/´½§NÒ{i„ÈP<>ˆÚfò3®Îêß¿¿üìPÍDØFê}x|Po¦Êk\DDDíaq‘PX\DD$	…ÅEDDBaq‘PX\DD$Å?ÇUXXˆ˜˜¥‡%R­‚‚‚û~zK<>¨¯1æø0”¢ÅåììŒúúz\ºtIÉa‰TÍÖÖnnn.Çãƒú"Cc(Z\îîîpwwWrH¢^ƒÇ‘2x‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(Š~Ž«¤¤EEEJIí7n\‡êc=‡y¨óPCò0†¢ÅUTT„cÇŽÁÓÓSÉaé………¨¯¯ïðyôæ¡.ÌC]ÍÊW¡N§CTT”ÒÃRÑÑѨ¬¬4hYæÑý˜‡º0u1&Cñ	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDB¶¸áïïßãëõ÷÷Gccc¯W혇º0uaÊ2iqi4šv§7ÿiOff&&L˜ ßÎÈÈÀSO=sss8;;#77 ••GGÇVÓ[Ž]VV{{{|ôÑGzë×jµ1bÒÒÒäeǏÌÌÌÎï´Š1uaêÂ<ÔC•g\’$A’¤û.“žžN'ß>rä²³³QWW‡U«V!   À│¯¯GHHõÆÉË˃ŸŸ¶mÛ†·ÞzKo‘ššŠ%K–ÈÓu:ÒÓÓØKq0uaêÂ<zžâßßSŠ‹‹áàà ßþä“O  ·nÝ‚™™† zÏ6|||°aÃùöΝ;‘˜˜ˆœœØÚÚ¶»®¡C‡Ê?;88à›o¾Qj7z
+æ¡.ÌC]˜‡²„-®ššXZZêMk>¶¶¶ÆçŸ®7ïÊ•+˜3gäiK—.ÅÖ­[Ûü%h«ÿþØ·oŸ<ÝÒÒ¿üò‹R»Ñk0uaêÂ<”¥Ê—
+
+1hÐ 444èM“$	7nÜ@RR^{í5yzqq1<<<Š—^zIž~ôèQ„††¶y*-Iššš““ƒåË—ËÓðÈ#tɍy¨óPæ¡,a‹kâĉ(//—o‡††¢ªª
+  Õjqýúu @JJ
+fÍš…äädÌŸ?_oWWW=záááHNNnw]ÍãÀùóçáêêªä®ô
+ÌC]˜‡º0e™ü¥Â{߉#I’Þ´æŸï½ø€‚‚9”±cÇÂÙÙÕÕÕ;v,öìÙ X´h `úôéò}›I ÀÑÑðññAmm-"""ôÖ;lØ0$&&ÊËççç·º`Ú›0uaêÂ<ÔÁ¤ÅÕÞ;q:z‡ Ì›7OïIPP‚‚‚:µ;;;\¼xÑ õŸ:uJïT¼7aêÂ<Ô…y¨‡Éϸ:«ÿþÈÈÈèñõšb"`êÂ<Ô…y(KØk\DDÔ7±¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""ŠâŸã*,,DLLŒÒÃR÷ývè–˜G÷cêÂ<ÔŘ<¥hq9;;£¾¾—.]RrXº‡­­-ÜÜÜ:\Žyôæ¡.ÌC]ÍÊ—»»;ÜÝÝ•’º€y¨óPæ!.^ã"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""Š¢Ÿã*))AQQ‘’CR;ƍ×á‡ú˜GÏaêÂ<ÔŐ<Œ¡hqá³Ï>ƒ“““’ÃÒ=Ν;‡úúú˜GÏ`êÂ<ÔÅÐ<Œ¡øw:99!88Xéa©…ôôtƒ—eݏy¨óPcò0¯q‘PX\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘PX\DD$	ŤÅ%IöíÛ‡À××óçÏÇ—_~Ù-ëòòò‚——¼½½±`Á?~¼Õ2±±±¸xñ""O¯®®Æ²eËàëë‹eË–¡ººº[¶ÑÔDÉ£ù¾^^^ݲmj!JX¸p!|}}ŒÓ§OwË6šš(y|ýõ×xýõ×{uŠÉ®1²²²——‡Õ«WcÔ¨Qøù矑––†çŸ¾[Ö———‡»w¨±±±˜<y²Þ|I’ ÑhpîÜ9<õÔSòô¤¤$<û쳈‹‹ÃΝ;‘””„¿þõ¯Ý²¦$Jyyy Ðë‹K”<òóóñþûïcøðáÈÉÉÁ†
+°ÿþnÙFS%ÂÂBlÚ´	VVV8yò$Ö¯_tË6šŠI‹ëÀذaììì  >ú(ÂÃÃåùåå娴i*++1räHDDDÀÞÞ^^^xùå—qøða|õÕW¨¬¬Dll,ÊËËñ‡?üááá3fL»ëÕjõO4÷íÛ‡-[¶ €Þ3¨O?ýyyy8}ú4RSSannŽW^yAAAJ>ª!J}…(y¬Y³Fž6a¤¥¥)²ÿj#Jï½÷ àΝ;Ðjµ°±±Qì1P“¾TXUU…‘#G¶;Ó¦Mxá…pøða¼ðˆ‰‰‘ç=Z-::³fÍ‘#G‚ØØØ6Çóòò‚¯¯/þñ`ÅŠòô9sæààÁƒpqqA^^\\\pàÀùÉúúzXYY ~øa\¿~½Ëû®F¢äÑWˆ–GMM
+Ö¬Yƒ¥K—ve·UK¤<¼¼¼0}útlÞ¼Yï¾½…IϸŒÿþ÷¿5jT›ó+++1sæLXXX`ÆŒøðÃåyÞÞÞò3‘. &&FþEÑh4mŽ×Þ?|-_rjþÙÏÏË–-ƒŸŸ|ðAÔÖÖÂÚÚuuuxðÁßYˆ’G_!RÿùϰnÝ:,\¸“&M2rOÅ Ryyy¸uëNž<‰¨¨(ìÚµËȽU7“—ŸŸ6mÚ„+
 VÀÎÎW¯^EZZš|ú=bÄ|õÕWðõõÅ_|¡÷lÇÌÌLþùÉ'Ÿ„ŸŸt:,,,ŒÞ޼¼<|øá‡˜<y2xà:tï¾û®<üøñØ»w/^ýuìÝ»...]Økõ%¾B”<Ž9‚?þ«V­Â„	º°Çê&J[¶lÁŸþô'87nÜèÂ^«“I‹kîܹ033úuëpõêU:óçϗ燅…!66			9r¤ÞëÉ-ýå/A||<þö·¿áöíÛ Ú¶Òž²²2,Z´ß~ûm«3ªÅ‹cݺuxñÅ1zôh¼ÿþûFî©DÉ£­gœ½ñeDQòؼy3 è­ÿÈ‘#8p QëP;Qò°³³Cpp0êêêðÄO`õêÕFî©úi"##¥¨¨¨û.ÊÊÊvƒh–””„ü‘ÿv7KOO‡™™óP	æ¡.ÌC]ŒÉC«Õ>␉ˆH(,.""
+‹‹ˆˆ„Ââ"""¡°¸ˆˆH(,.""
+‹‹ˆˆ„Ââ"""¡˜ä›3Ν;‡ÒÒRS¬Zõžyæ899õè:™Gû˜‡º0u1E€‰Š«´´ß}÷<==M±zÕ*,,DCCCÿ"0¶1uaêbª< ~W¡N§ëð«=úšèèh|ûí·&Y7óhy¨óPSæÁk\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDB¢¸4
+4
+ÌÌÌààà€ƒêÍkkycÇiöÆo ´´wî܁‡‡G«û¶7v_¢¶<úz&jÈ###O=õÌÍÍáììŒÜÜ\öLLjÈãÞãÃÆÆF=S!Š $I­[·‡7ß|³ÛÆijj‚V«ÅÉ“'1qâD½ûI’Ôéõö6¦Î£ù¾Ìåw¦ÎãÈ‘#ÈÎÎF]]V­Z…€€€NoCo`ê<Z'NœÀŸÿüçNoƒ	S\ÍÌÌ̺eœøøxh4ìØ±cÇŽ…§§'úü³ùŽ˜2‡~–––xñÅQYY©ÈvˆÎTy|òÉ'9r$´Z-ÌÌÌ0|øpE¶Ctjø÷êÿ÷±dÉE¶C-„).F¼óÎ;HNNV|œÐÐPÔÔÔÀÛÛ’$ÁÛÛÕÕÕ|6ßSç!IêêêPQQgžy]Þ'‘™:æû0 ÁÁÁ]Ú†Þ@
+y ÀñãÇ1hÐ 6¬ÓÛ F&ûÿ¸ŒÕ^XXX ¡¡––– €††0ÀèqZ>SiþÙÆÆ‰‰‰		éìf÷ZjÉcȐ!øàƒððý½‰ò$	¿ýö>Œ×^{
+çÏŸïÔ¾ôjÈ Ö¬YƒØØX£·_í„9ãjÏ”)S°qãF444 ¡¡7nÄÔ©SG’$,_¾ùùù8sæÞ|óMH’ÄÒ2ROçQ[[‹7ÂÙÙY©]èUz*ÐÐPTUU ´Z-®_¿®è~ô=y|;v7nœ’» 
+Â×¶mÛpúôi2C†Á™3g°mÛ¶NuâÄ	xxx ¦¦ƒ
+Ò›×òÝk|'[ûz:aÆáäɓؽ{·›ßëôTcÇŽ…³³3¬¬¬ƒ={ö(±ù½NOåü~¶ÚÕMV%!^*¼ßu&[[[dggwy (,, x{{ÃÛÛÛ¨ûö%ÌC]ԐGPP‚‚‚ZOo§†< à믿6h="þŒ‹ˆˆú	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘PLöäÂÂBÄÄĘjõªTPP kkk“¬›y´Æ<Ô…y¨‹)ó0Iq=ýôÓhhh at ii©)V¯ZÖÖÖprrêñõ2¶1uaêbª< —³³3¿UE˜‡º0uaêÃk\DD$	…ÅEDDBaq‘PX\DD$	…ÅEDDBQüs\ßÿ=ÒÓÓ•–Z(--…‹‹‹AË2îÇ<Ô…y¨‹1yJÑârvvF}}½’CR\\\àææÖárÌ£g0uaêbhÆP´¸ÜÝÝáîî®äÔÌC]˜‡º0qñ	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘Pþ׿ÿýo$%%uç¶QUTTƒ–5¨¸ÜÝÝQ[[Û¥"""j»»;<==
+ZÖ âÒétÐét]Ù&"""Eð	…ÅEDDBaq‘PX\DD$	…ÅEDDBaq‘P4:NzþùçM½DDDÊÏÏÇÿóyiáÓ_Ó    IEND®B`‚
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/emmett.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/emmett.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/emmett.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0x000000ff" complete_cpuset="0x000000ff" online_cpuset="0x000000ff" allowed_cpuset="0x000000ff" local_memory="16864415744">
+    <page_type size="4096" count="4117289"/>
+    <page_type size="2097152" count="0"/>
+    <info name="DMIProductName" value="PowerEdge 2950"/>
+    <info name="DMIProductVersion" value=""/>
+    <info name="DMIBoardVendor" value="Dell Inc."/>
+    <info name="DMIBoardName" value="0NR282"/>
+    <info name="DMIBoardVersion" value="A00"/>
+    <info name="DMIBoardAssetTag" value=""/>
+    <info name="DMIChassisVendor" value="Dell Inc."/>
+    <info name="DMIChassisType" value="23"/>
+    <info name="DMIChassisVersion" value=""/>
+    <info name="DMIChassisAssetTag" value=""/>
+    <info name="DMIBIOSVendor" value="Dell Inc."/>
+    <info name="DMIBIOSVersion" value="2.3.1"/>
+    <info name="DMIBIOSDate" value="04/29/2008"/>
+    <info name="DMISysVendor" value="Dell Inc."/>
+    <info name="Backend" value="Linux"/>
+    <info name="OSName" value="Linux"/>
+    <info name="OSRelease" value="2.6.32-5-amd64"/>
+    <info name="OSVersion" value="#1 SMP Fri Sep 17 21:50:19 UTC 2010"/>
+    <info name="HostName" value="emmett"/>
+    <info name="Architecture" value="x86_64"/>
+    <object type="Socket" os_level="-1" os_index="0" cpuset="0x00000055" complete_cpuset="0x00000055" online_cpuset="0x00000055" allowed_cpuset="0x00000055">
+      <object type="Cache" os_level="-1" cpuset="0x00000011" complete_cpuset="0x00000011" online_cpuset="0x00000011" allowed_cpuset="0x00000011" cache_size="4194304" depth="2" cache_linesize="64">
+        <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1" cache_linesize="64">
+          <object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
+            <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" cache_size="32768" depth="1" cache_linesize="64">
+          <object type="Core" os_level="-1" os_index="1" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010">
+            <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
+          </object>
+        </object>
+      </object>
+      <object type="Cache" os_level="-1" cpuset="0x00000044" complete_cpuset="0x00000044" online_cpuset="0x00000044" allowed_cpuset="0x00000044" cache_size="4194304" depth="2" cache_linesize="64">
+        <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" cache_size="32768" depth="1" cache_linesize="64">
+          <object type="Core" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004">
+            <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004"/>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="32768" depth="1" cache_linesize="64">
+          <object type="Core" os_level="-1" os_index="3" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040">
+            <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_level="-1" os_index="1" cpuset="0x000000aa" complete_cpuset="0x000000aa" online_cpuset="0x000000aa" allowed_cpuset="0x000000aa">
+      <object type="Cache" os_level="-1" cpuset="0x00000022" complete_cpuset="0x00000022" online_cpuset="0x00000022" allowed_cpuset="0x00000022" cache_size="4194304" depth="2" cache_linesize="64">
+        <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1" cache_linesize="64">
+          <object type="Core" os_level="-1" os_index="0" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
+            <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" cache_size="32768" depth="1" cache_linesize="64">
+          <object type="Core" os_level="-1" os_index="1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020">
+            <object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020"/>
+          </object>
+        </object>
+      </object>
+      <object type="Cache" os_level="-1" cpuset="0x00000088" complete_cpuset="0x00000088" online_cpuset="0x00000088" allowed_cpuset="0x00000088" cache_size="4194304" depth="2" cache_linesize="64">
+        <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" cache_size="32768" depth="1" cache_linesize="64">
+          <object type="Core" os_level="-1" os_index="2" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008">
+            <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" cache_size="32768" depth="1" cache_linesize="64">
+          <object type="Core" os_level="-1" os_index="3" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080">
+            <object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080"/>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/hagrid.png
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/hagrid.png	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/hagrid.png	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,55 @@
+‰PNG
+
+   
+IHDR  Ê  "   !ç+ò   bKGD ÿ ÿ ÿ ½§“    IDATxœíÝixeÚöñ³ f” Š+K„ ‚°=„MÄ€ƒ@E¶À@@EIØÆ°¨ EaØd\@g‚Äd1,òÊ&̈2,B@А~?Ä´²u%TUòÿ‡ÝUÕußÝ×}"W¯®ˆˆwûöí    @y·eËUˆŒŒT\\œÕs    Àrñññò³z     Ø	2     4Ê     Ð(    `@£    €2     4Ê     Ð(    `@£    €2     –6Ê.—ËÔv3222UìóETT”222,    P<¦e—Ë¥åË—çØ6}útŸ4¶Fn·»ØçX¾|¹š7oî¹¾lÙ25hÐ@•*URhh¨Ö­['IZ±b…5j”k{ff¦âââT§NUªTI
+6Ô»ï¾ë9ŸËå’Ëå’ŸŸŸjÖ¬©E‹yö5kÖ,×ã    pÓ¯(Ïœ9ÓÓÈþòË/zï½÷|>)_X²d‰"##=×?ùä­Y³FçÏŸ×øñãÕ»woIYò²eË”––¦¡C‡ªOŸ>’¤øøx­^½Z«V­ÒÅ‹õÑG))))Çn·[JLLԐ!C<Û###µdÉ’’¿“     Ÿ3Ý(‡……éã?–$-^¼XݺuËuLö«­wÜq‡V­Z%IÚµk—ÂÂÂT¡B…¯@Oœ8QU«VUõêÕ=¯Øfïw¹\yîß¿¿Z·n­J•*©~ýúÚ´iS®9lÛ¶M!!!žëï¾û®jÕª%???ùûûëöÛo—”õÊsãÆU¹reuéÒE×]w$iîܹZ°`7n¬Š+*$$D.Ì÷q©Q£†çrHHˆ¾úê+/M    €Ý˜n”GŒ¡I“&Éív+!!AÏ<óL®cÜn·®^½ªÅ‹kĈ’¤'žxB?þ¸.^¼˜ã­ÕAAAúñǵhÑ"=:×¹òÚÿøãë©§žÒ…” äº]jjªsls¹\ª\¹²
+¤¹sçæØwâÄ	õìÙS3gΔ$ýðêW¯žçvÙ®=Ÿ¿¿¿ºuë¦éÓ§{¶êÌ™3ù?ˆ     Ûr7ÎçÝÁ.—Ün·~øaÝvÛm:}ú´–-[æÙ.I3fÌÐôéÓuüøqeffÊår)33S+VÔùóçU
 ¥J•ç»zõªüüürœßøß¼öW¬X1Ç—eeaT£F
+8p at 7ÜpCŽí?ýô“V­Z¥çž{N””õêsTT”&Nœ¨¾}ûJ’jÖ¬©¤¤$O³lßxÙívë‹/¾Ð€tèÐ!IÒ¹sçÔ A8q«Ç    `ñññEûÖëQ£Fé7ÞÐðáÃsí7nœ,X ôôt}üñǞƲQ£Fš7ož®\¹’ãøì&8?yí
+
+Õ;ï¼ãyuúÚ&Y’Z´h¡x®ÇÄÄèÔ©Sžs^¸pA’4oÞ<uïÞ]sçÎõ4É’4`À =ýôÓ:xð ®^½êi‚ó“}nI:xð ÂÃÃ<    `OEj”Ûµk'·Û­6mÚäÚ«^½zéÖ[oÕΝ;=Û•˜˜¨ßýîwÅþ–ì¿ýíozï½÷tã7æù–hIêÝ»·’““=×›4i¢ÐÐPU­ZU“'OÖÒ¥K%IO>ù¤Nž<©®]»zΕžž®¿üå/jÛ¶­:tè Ê•+ëøƒþö·¿å#û[¯ûôé£Y³fy¶oذÁó¥`     g1õÖk'ùå—_Ô·o_-[¶¬ÔÇŽŠŠÒâÅ‹U¡B…R    Ptñññ*³\ÅŠ-i’%Y6.     øŠôÖk     Ê*e     h”    0 Q    À€F     e     h”    0ðêw”·lÙ¢äää’ž “"""Ô¾}û!¿€=‘_À¹È/à\ÞäWò²QÞ°aƒ–¼¿@Í[5,öÄ øÆî‡tîܹBƒN~û!¿€s‘_À¹¼Í¯äe£,Iá­jÄø¨bM€ï,˜µJÊôîXòØùœ‹üÎe&¿|F     e     h”    0 Q    À€F     e     h”    0ðúw”½±{Ç!mÿr¿/O	”KMšÕUóV
+KuLòøùœ‹üÎåëüú´Qþjó~múǵmÙÒ—§Ê•¯víÒ…´K¥þ?jòùœ‹üÎUùõi£,Im#ZêÅØX_Ÿ(7Þœ£ï²æ™eòùœ‹üÎUùå3Ê     Ð(    `@£    €2     4Ê     Ð(    `@£    €2     4Ê     Ð(    `@£ìAu‚­ž‚GÆÕ«Š:Ìêix-zè0e\½jõ4PŽ‘ß
 ¢#¿°ù-:ò«‘ߢ#¿¥ÃÒF9¨N°þöþû¹¶åu9¿ý|òIŽý³çÍÏu»u6(¨N°þ™”djü’T'XAu‚uã]uÕ¼CG}ºvm®c†«½û÷ë—ŒuùcOÏöOœÐý½z©FH}Ýß«—~<q"×m?\ý‰B›Üã¹¾êŸk©êuëéÞö‘ZõÏ59æqíý]ûù5‹ì !õõÐcÿ§“§O8¶75ȧZð]jܺ–ø¡g_Ó{ëÃÕ9og ¿æò›_æŒJ*¿~ú©"î몛녨]·µaÓ&ÏyÈoùD~Íå7¿‘_”òk.¿_½Z-:u&¿0ÍòW”—þýýçøñ"ß~î;ïÈívK’~ÉÈв>Èu̼÷ÞS÷û»jþ{‹|>~Qœýîˆþ{à[M|n¼†—kf¦[~~~újçN5kÚÔ³ý/“âÔ*<\ÿÞ³[­ÂÃõ|\\®Û¾ÿñÇjá¹>46VS&LÐñoöiò‹/jØØ±ž9œýîH®Û3Fq/¼ ïÝ£¡ê…Iq…ŽíM
+Î~wD§Ôì©S4úù<ÛÛFDèý?.ô1ƒ=‘_ïó›_æŒJ*¿}ò©Þž=KÿÙ»Gƒ療Æ{nC~Ë/òë}~ÊP6ò‹ÒD~½Ïïgë?×Êwêß{vkԐg4€üÂK–7ÊS_š ‘ÏýE™™™Eº}ÓFõuë$I+>üP]:DæØì?ÿÑ÷ÇPâìÙúáÇuôßÿözü¯÷ìUۺ馺õÔönÚ½oŸ$iû×_«y‡ŽºíîFziòÏñÒ}=ÑÍõBÞ±“¶nßQàÜýýüs\31Ñó,]›ûЃQ½5÷w<Ï.%oܨÁÑÑ
+Ðàèhmø×Æ\çÜ™’¢ºuêx®ßyûí’$—Ë%IªyÇÎ)ûqÈ>>)9¹Ð±«Áµn®^Ýs¹n:Úµ{wÇþÈïo
+˯7J*¿o¿>[
+CB mÛªJ•*žÛßò‹üþ¦°ü”¡l䥉üþ¦°üÎùëtÝyûírùùÉßÏ_·Ö¨‘ëœäy±¼Q®_¯ž:¶k§7$éöO÷ﯿ¾þ†Ün·ÞL|[ÿô§û-Ö˜áÃTÁß_±#†+qÑb¯Ç2fŒúõŽÒ±Ý)ê×;JÏŒ#I1îY
+ŽŽÖáÛuë-¿…mðŸG«ÿc}ôŸ}{÷ÂóžgŸ®T'X5BêkÜË/éµI“~»}t´¾ûz—Ú·i­³ßQû6­uxçÏ3WgÏŸWõjÕ$I7é\ZZ®sŸ=wN×B˜7I†Pú£¿¾úJçk“&éÏÏ?¯ZMšêóuîüùBÇ.¬Ù÷ùÆ»êêÑ'úë•¿<çÙ~Ýu×)õìÙçû"¿Þç×%•ßl'OR¿Áƒ5y‹žmä·ü"¿æó›W†²‘_”&òk.¿Au‚uKýñì³J˜ôj®s“_äÅòFY’G÷׆M›ôÿ̱= R%]¼tÉsýâ¥K
+ÈqLZ5uKó⋪¬Ûn¹Å³ïÊ•+Z´b…úª :Áê?d¨­X¡+W®x5þC‡Ô/*JUªTQß^½ôíÁƒžíÿ×ëýîw¿ÓŸ}Ôsüî}ûôÌè1º¥~õê­Cß}—çý=ûݝ9|H;7lP÷û»z¶Õ	VÐ{•¼i³‚ê+yÓfÝÖLóÞ}W’Tõ†t:5U’tæìYU½þú\çªZ5ÇcöôÈQZ0s†N|ûÿ4/!AƒGý9Ï9eë~WíÙ´Q?îÿFÛµÓm·ÞZèØÕÀxŸSÖ‹ÞÓø‰=Û/^¼¨jAAÎ	öF~³–_o”T~%iGJŠºü±§GGëÎ=ÛÉoùF~³x“ßü2ä9ùE)#¿Y¼ÉïÙïŽèÇýß误¾¢§FŽÊunò‹¼Ø¢Qv¹\zíÕWôççŸÏ±="¼¹¦¿þº.^º¤‹—.iú믫uxx®Û8@Þ[¤§žx"Çö•«V)¬iSÏç	Î~wDÍBCµrÕ*¯Æ¯w×]Z²r¥~úé'-Z±BõëÕ“$…Ô­«%+WêòåËúÛû+=Çßs÷ÝzcÚTýðÍ>ÏÂ6ãìwGôÌ€h­^ºDÉ«W©_T”Î~wDƒúõ“$E¶i£7uåʽ™˜¨ömÚä:GXÓ¦9þ‚9óë³MÙo9ãųOn·[ß<¨çãâÔÿ±Ç¼;¿äåô™TÏåÃGêÞ&M
+½
+ì‹üf),¿Þ(©ü.\ºT}Ôk“^Õ£=zäº
+ù-¿Èo–Âò[X†$ò‹ÒG~³–ßg_žèy±ÇÏÏOé/æ:ùE^lÑ(KYŸø¿^äØ63>^){öªn³æªÛ¬¹vïݧ™“ãsݶUx¸Î~wD-›7˱}þ»ïéÉkþ‘úd¿~ZÇ—ä5þ¬)“5ïÝ÷Tóž&Z¸d©fOÉú<ÅŒø8½>‚Úéû~ð?oæ-ûàÕ¹7¬Ðo·Í϶;¦³çÎ+¨jÕû^ÿ¬6mݦ;ߣÍÛ¶iâsãsݾg÷îÚ´u«çúk“^ÕŸŸA·5¼[±&(á×·ªçwíåjÁwé}ÿ¤‡ì¦áO=éÕØùÕ [öy¡)/Mðl߸e‹yè!“ì†üf)(¿ùeΨ¤òóìx:sF=û=î9ÞøÌ9ù-ßÈo–‚ò[X†$òkß,å·Qƒj×íAÕjÒT3Þœ£³fæº=ùE^\ãÆsÇåñíÉFñññ:ôÃfUàqf­’ël^ŒõåaÂ/z*f¤gϲz*^‰:LoÍHPÿÂ.'Þœ£ïÚïUÞ~—YGä·ì ¿ÎG~Ë/òë|ä·ü"¿ÎWù­àË	Âz+TpLÈ%9j®@I#¿€s‘_À¹È/òb›·^    `4Ê     Ð(    `@£    €2     4Ê     Ð(    `àóßQÞ¾ëk%Ì™ãëÓ寯­[U»Éõ–ŒM~â!¿€s‘_À¹J"¿>m”›4««i—ôŸ‹û}yZ \©uÏõjÞªa©K~â#¿€s‘_À¹J"¿>m”Ã[7TxëÒÿ@ñ‘_À¹È/à\ä°'>£    €2     4Ê     Ð(    `@£    €2     4Ê     øôw”wï8¤í_òcé@q5iV×ç?š^òøùœ‹üÎåëüú´Qþjó~}ñjÙ²¥/O”+»víÒ…´K¥þ?jòùœ‹üÎUùõi£,I-[¶Tll¬¯O”sæÌÑ™Ÿ¬yf™üÅC~ç"¿€s•D~ùŒ2     4Ê     Ð(    `@£    €2     4Ê     Ð(    `@£    €2     4Ê     ”‰F988Øê) ("ò8ùœ‹ü³´QNNNÖ
 < uêÔIüq‰YÐ_
+ÁÁÁ
+VݺuÕ±cG­]»6×1cÇŽÕþýû•‘‘¡ž={z¶Ÿ8qB½zõRýúõÕ«W/8q¢DæØEYÊoömùGÊ‹²”ßO?ýT]»vUHHˆ|ðAmÚ´©DæØEYÊïêÕ«Õ¹sgò[²´Q5j”
+¤={ö(11Qëׯ·r:’¤#GŽèÛo¿Õøñã5nܸ\ûÝn·üüü´sçN5mÚÔ³=..NáááÚ½{·ÂÃÃWšÓJ]YÊï‘#GtäȑҜ*`©²”ßO?ýT³fÍÒž={Ô¯_?
+>¼4§
+”º²”ßÏ?ÿ\.ÔîÝ»õÌ3ϐ_ØŠ¥rÕªUuêÔ)íÛ·O7Ýt“<ûöîÝ«nݺ©^½zêÖ­›öíÛ'IÚ·oŸºwï®zõêåzvkÓ¦MjÑ¢…–/_®C‡é‘Gñ<Û¶cÇÏñÞ¼räïïŸãzbb¢‚ƒƒõþûïëPïÞ½õÎ;ïxγqãFEGG+  @ÑÑÑÚ¸qc±ÀÎÊR~ò¦,åwöìÙ
+		Q@@€Ú¶m«*Uªûñì¬,åwúôéºýöÛåçç'Õ¨Q£Øà+–6ÊóçÏ×÷߯—_~Y­ZµÒßÿþwϾ1cÆ(**J)))ŠŠŠÒ˜1c<ÛÿøÇ?jß¾}9^úàƒôâ‹/êí·ßÖ£>ªÑ£G«OŸ>Ú»w¯žþy;Ös|A¯«~ýúz饗4iÒ$ÏöèèhíÚµK­[·Ö‘#GÔºukíØ±ÃsžóçÏ«Zµj’¤   ¥¥¥ùöÁl¦,å(oÊb~O:¥ÁƒëÅ_ôÙãØQYËopp°4h gŸ}V¯¾úªO+ 8*X9x:u4qâDIҁÔ§Oýñ”$:tHQQQª\¹²zõê¥W^yE’tðàAõîÝ[•*UÊq®±cÇê­·ÞR£F$e=s6fÌÏ_.—Ë«9ôÀµ—›5k¦	&¨_¿~ºá†”ššªêÕ«ëìÙ³ºþúë½} G*KùÊ›²–ß””
+6L£FRçΝ½pª²–ß#GŽèòåËJJJÒ¨Q£ôùçŸ{5&PÒ,}EyäÈ‘:zô¨~þùg}ûí·ÊÌÌôì»ë®»´råJýôÓOZ±b…êÕ«'I
+		ÑÒ¥KõóÏ?ç8×¼yó4fÌ­Y³F’t÷ÝwkêÔ©žgÎ>,IªP¡‚Nž<iz®GŽQtt´–,Y¢U«V)**JGŽñ„¼M›6JLLÔ•+W”˜˜¨6mÚé1œ¢,å(oÊR~—.]ªêÕW_U=Šôx NR–ò;qâD¥¦¦J’üüütñâEóPB,m”;v쨨Q£FJHHÈñX“'OÖ{ï½§&MšhéÒ¥š2eŠgûŠ+Ô°aÃÏRµoß^.ÔK/½¤·ß~[3fÌÐ| °°°Ÿ©xì±ÇY¤Ï&îܹSaaa:þ¼ªV­šcß³Ï>«mÛ¶éž{îѶmÛ4~üø¢<$€c”¥üÇàÛ¯Q”¥üŽ?^gΜÑã?îïÒ¥KEyX G(KùmР|ðA5mÚTsæÌÑÌ™3‹ò %Â5nÜ8waßЯC?lÖˆñQ·`Ö*]I
+Rll¬/ç”+sæÌÑ™Ÿö{•·ßeÖ)ôÖÉ/PzÈ/à\äp®’ȯ¥¯(    `74Ê     Ð(    `@£    €2     4Ê     Ð(    `@£    €A+ݵk—¶nÝjÅÐåν÷Þ«–-[xõ(=ÞÔÃîX/¥‡üÚù…ä×^È/Ì ¿öbU~-i”·nݪ/¾øBíÛ··børcË–-JKK+taQÒám=ìŽõR:ȯ½_˜A~í…üÂòk/Væ×’FY’"##gÕðåB||¼Ž;æÕ±Ô£ä™©‡Ý±^Jùµò3ȯ½_˜A~íÅÊüòe     h”    0 Q    À€F     e     h”    0 Q    À€F     e     h”    0(órFF†¢¢¢¬žF¡¢¢¢”‘‘aõ4Jõ€¬{¡0ƒõb/Ôf°^ì…zXͲËåÊsûŠ+Ô¨Q#UªTI¡¡¡Z·n]®c–/_®æÍ›ç8Wö£ãǏ«mÛ¶
+PÛ¶muüøq¯Æ˜0aBŽs/ïÛ·OõêÕÓ›o¾™cl???Õ¬YS‹-òÛ¬Y3-_¾ÜÛ‡ÄRÔf°^ì…zÀÖ‹½P˜Áz±êá<Žh”ó³bÅ
+-[¶Liii:t¨úôé“ë˜%K–(22ÒsÝívËívç:nôèÑj×®ÎŸ?¯víÚi̘1…ޱ}ûv½õÖ[yÎmýúõêÑ£‡æÏŸ¯Áƒç?##C‰‰‰2dˆg{dd¤–,Ybú1°ê3X/öB=`ëÅ^¨Ì`½Øõ°/G7ÊË—/WãÆU¹reuéÒE×]w]®c¶mÛ¦BϵnÝ:ÅÄĨråÊŠ‰‰ÑÚµkãòåËŠŽŽÖâÅ‹skáÂ…ŠÕÚµkÕ¾}û|ǬQ£†çrHHˆ¾úê«BçigÔf°^ì…zÀÖ‹½P˜Áz±êa_¬ž€/œ8qB={öÔÌ™3síKMMU```¡çHMMÕM7Ý$Iª^½ºÎž=[àãÆSÿþýÕ¡C‡\ç6l˜Þzë-Õ®];×¾ì·2T¬XQ+W®ôlÔ™3g
+§P˜Áz±ê3X/öB=`ëÅ^¨‡ý8úe)ë–V­Z)&&F=ôP®ýÕªUSzzz¡ç	
+
+Ò©S§$I§OŸVPPPcÌœ9S£Fò,ã{ù“’’“ç[Ün·233µvíZ9Ò³===]7Þx£—÷Ú¾¨Ì`½Øõ€¬{¡0ƒõb/ÔÞÝ(Ï›7OÝ»w×ܹsÕ·oß<iÑ¢…8Pè¹:w„]¾|Y			êÔ©Scdffæø|€ñsáááJJJRll¬æÎ›ï˜ÙY’<¨ðððBçigÔf°^ì…zÀÖ‹½P˜Áz±êa_Žyëõµßêæv»õä“OJ’ºvíêÙ~áÂ…oMèÝ»·’““=EËëÝÜn·¦Nª¨¨(]ýõ
+ײeË$É«1òÒ¨Q#%''«K—.:wîœÆŽ›cÌ[o½U³fÍò¿aÆ<?¼oWÔf°^ì…zÀÖ‹½P˜Áz±êá,Žh”óúV·‚¶=úè£9ž9Éï6wÞy§6oÞ\¤1ŒÇ/ëðáÃ^kûöí9Þº`gÔf°^ì…zÀÖ‹½P˜Áz±êá<Žh”‹£bÅŠžgSìÌ	sôê3X/öB=`ëÅ^¨Ì`½Øõ°†£?£    €¯Ñ(    `@£    €2     4Ê     Ð(    `@£    €e¿£¼eËMž<ÙªáË…äädÕ®]Û«c©GÉ3S»c½”<òk/äf_{!¿0ƒüÚ‹•ùµ¤Q
+
+UZZšŽ=jÅðåFíÚµÕ²eËB£¥ÃÛzØë¥t_{!¿0ƒüÚù…ä×^¬Ì¯%rDD„"""¬y 0ƒõb/Ôf°^ì…zÀÖ‹½P²Ï(    `@£    €2     4Ê     Ð(    `@£    €2     –üŽò®]»´uëV+†.wî½÷ÞB¤›z”oêaw¬—ÒC~í…üÂòk/äf_{±*¿–4Ê[·nÕ_|¡öíÛ[1|¹±eË¥¥¥º°¨Géð¶vÇz)ä×^È/Ì ¿öB~aùµ+ókI£,I‘‘‘Š‹‹³jør!>>^ÇŽóêXêQòÌÔÃîX/%üÚù…ä×^È/Ì ¿öbe~ùŒ2     4Ê     Ð(    `@£    €2     4Ê     Ð(    `@£    €2     4Ê     ”ùF9##CQQQ¥>nTT”222J}\»£0ƒõb/Ôf°^ì…zÀÖ‹½Pk8¢Qv¹\ùnÏþ“ŸåË—«yóæžë™™™š0a‚n¿ývùùùåºí„	rl3^Þ·oŸêÕ«§7ß|3Çø~~~ªY³¦-Zä9¶Y³fZ¾|¹¹;êÔf°^ì…zÀÖ‹½P˜Áz±êá<Žh”óãv»åv»<fÉ’%ŠŒŒô\‹‹Ó²eË´fÍ]½z5Çí·oß®·Þz+Ïó¬_¿^=zôÐüùó5xðàsÈÈÈPbb¢†âÙ©%K–ñž9õ€¬{¡0ƒõb/Ôf°^ì…zØ—£eolÛ¶M!!!žëóæÍÓ´iÓÔ¸qã
 Ï®\¾|YÑÑÑZ¼xq®s,\¸P±±±Z»v­Ú·oŸïX5jÔð\		ÑW_}å£{QvP˜Áz±ê3X/öB=`ëÅ^¨‡5Ê|£œššªyp|Ø  \IDATÀÀ@Ïõï¿ÿ^ëÖ­S•*UT»vm}ôÑG’¤qãÆ©ÿþêСC®s6L£GVíÚµsís¹\ò÷÷W·nÝ4}útÏöÀÀ@9sÆ÷wÈá¨Ì`½Øõ€¬{¡0ƒõb/ÔÃe¾Q®V­šÒÓÓ=׃‚‚Ô¹sg={V¯¿þº
+$Iš9s¦FåyVÆøìLRR’bbbò|ëÛíVff¦Ö®]«‘#Gz¶§§§ëÆo,©»åXÔf°^ì…zÀÖ‹½P˜Áz±êa2ß(·hÑBð\ïÒ¥‹$åZ@™™™9>#`|¯xx¸’’’«¹sçæ;Ö©S§<—<¨ððpßÝ‘2‚zÀÖ‹½P˜Áz±ê3X/öB=¬QÁê	xëÚoss»Ýy~›Ûµ†ïÝ»·’““=Ež6mš{ì1=üðêY³¦Þ~ûm¯ÆoÔ¨‘’““Õ¥K;wNcÇŽÍ1î­·ÞªY³fyŽß°aƒúôécò^:õ€¬{¡0ƒõb/Ôf°^ì…z8‹#åü¾	®°oˆ“¤G}T}ûöõ\¿í¶Û´aïÇ3^Öáǽûöí9ÞºP–P˜Áz±ê3X/öB=`ëÅ^¨‡ó8¢Q.ŽŠ+jÙ²e¥>®c:õ€¬{¡0ƒõb/Ôf°^ì…zX£ÌF     3h”    0 Q    À€F     e     h”    0 Q    ÀÀ²ßQÞ²e‹&OžlÕðåBrr²j×®íձԣ䙩‡Ý±^Jùµò3ȯ½_˜A~íÅÊüZÒ(‡††*--MGµbør£víÚjÙ²e¡ÇQÒám=ìŽõR:ȯ½_˜A~í…üÂòk/Væ×’F9""BV<P˜Áz±ê3X/öB=`ëÅ^¨GÙÇg”    0 Q    À€F     e     h”    0 Q    À€F     K~Gy×®]Úºu«C—;÷Þ{o¡?ÒM=J7õ°;ÖKé!¿öB~aùµò3ȯ½X•_Kå­[·jõêÕjÚ´©×ß|óÒÒÒ
+]XÔ£tx[»c½”òk/äf_{!¿0ƒüÚ‹•ùµ¤Q–¤¦M›jРAV
+_.,Y²Äëc©GÉ3S»c½”<òk/äf_{!¿0ƒüÚ‹•ùå3Ê     Ð(    `@£    €2     4Ê     Ð(    `@£    €2     4Ê     Ð(    `@£    €#e·Û­•+Wª_¿~ºï¾ûÔ·o_ýóŸÿ,‘±:v쨎;ªS§NêׯŸ6mڔ똩S§êðáÃÊÈÈÐСC=ÛOŸ>­áÇë¾ûîÓðáÃuúô陣՜RìÛvìØ±Dæï8e½_ß#¿Îç”õB~}ü:ŸSÖùõ=òëŽh”W¬X¡µk×êùçŸ×§Ÿ~ª)S¦h÷îÝ%6ÞúõëõÙgŸéé§ŸÖ´iÓríw»Ýr¹\úæ›oÔ AÏö9sæèž{îÑêÕ«uÏ=÷hΜ9%6G+9¥ëׯ×úõëKl^ðŽSÖù-ä×Ùœ²^ÈoÉ ¿Îæ”õB~Kù-¾
+VOÀ~ø¡^yåK’n»í6ÅÆÆzö8p at S¦LѱcÇT«V-;VõêÕSÇŽõðÃkÕªUúì³ÏtìØ1M:UÐ-·Ü¢ØØX5nÜ8ßqýür>°råJ½þú뒔㠿ÿýïZ¿~½vìØ¡ÄÄDUªTI<òˆ¢££}ù0؆Sê{pÊz!¿YìR؃SÖùÍb—zÀœ²^Èo»Ô¿qÄ+ʧNR­ZµòÝ?eÊ=øàƒZµj•|ðAMž<Ù³¯~ýúžE¯îÝ»ë“O>ÑСC5uêÔ<Ï×±cGÝwß}š={¶FåÙÞ³gO}ôÑG
+Óúõë¦?üг¨ÒÒÒTµjUIÒ
+7Ü .û¾Û‘Sê{pÊz!¿YìR؃SÖùÍb—zÀœ²^Èo»Ô¿qÄ+Ê7Ýt“þýï«N:yî?v옺u릀€ =ðÀzã7<û:uêäy&åСCš<y²gá¹\®<Ï—ßB1¾W?ûr=4|øpõèÑC¿ÿýïuîÜ9éüùóúýïoþÎ:€Sê{pÊz!¿YìR؃SÖùÍb—zÀœ²^Èo»Ô¿qD£Ü£GM™2E£FRpp°þûßÿjÑ¢Ež·+Ô¬YSŸ}ö™î»ï>ýãÿÈñl¿¿¿çrݺuÕ£GEFF*  Àô<Ö¯_¯7ÞxCmÚ´Q•*UôñÇëÏþ³g³fÍôþûïëñÇ×û￯°°°bÜkûrJ=`NY/ä×^õ€=8e½_{Õöà”õB~íUüƍr¯^½äïﯗ_~YÿýïU£F
+õíÛ׳̘1š:uªfΜ©Zµjåx¿¿ÑsÏ=§„„½öÚkúùçŸ%åÿlK~öíÛ§'Ÿ|R»wïÎõŒ×SO=¥—_~Yÿû¿ÿ«úõëë…^0yOÁ)õÈë3ÞVRúœ²^Èo»ÔƒüÚƒSÖùÍb—z_{pÊz!¿YìRòûG4Ê.—K={öTÏž=óÜß A-X° ×ök‹zÇwäù­oÝæZÙ~ËõŒ×Í7߬ٳgxû²À)õ(¯¡¶§¬ò›Å.õ ¿öà”õB~³Ø¥äל²^Èo»ÔƒüþÆ_æ    @i¡Q    À€F     e     h”    0 Q    À€F     e     *X=‚|óÍ7JII±z¶t÷Ýw«iÓ¦¥:&õÈŸõ°;ÖKþȯ½ßÜX/ù#¿öB~sc½äüÚ‹ÝókëF9%%E{öìQûöí­žŠ­lÙ²Eéé饾°¨GÞ¬ª‡Ý±^òF~í…üæ-%%E{æÍ«%§-’Òûô±&¿Ô#«êaw)))š7ožÕÓ°¥>å—zäÍŠz˜aëFY’"##gõ4l%>>^»wï¶dlê‘›•õ°;ÖKnä×^Èoþ"%±ZrŠ—dÕj‰õ¸–•õ Pöñe     h”    0 Q    À€F     e     h”    0 Q    À€F     e     h”    0 Q 
    À L5Ê.—K.—Kþþþ
+		ÑG}”c_^Ç›=O¶(%%E¿üò‹ZµjåÙ~üøqµmÛVjÛ¶­Ž?îƒ{æLv¨Gömó;7ìÃëeÅŠjÔ¨‘*Uª¤ÐÐP­[·Î÷Ì™ìPeË–©AƒÔÃ\¿þñ—"é£köåu¼Ùód )EÒ/’Zå±Bç//ìP×5`_n·[n·[W¯^Ձô‡?ü!Ǿ¼Ž7{žl,PÓ¦MU±bE}ùå—ží~~~š0a‚Ž?®ÌÌÌ|Ç(ìPìÛfÿ9}ú´î™ó”©FYÊ*ì•+W4mÚ4
+8°ÄΓ™™)???}ùå—jÑ¢…gûèÑ£Õ®];?^íÚµÓ˜1cŠ<‡²ÀêzdÎ`õzY±b…–-[¦´´4
+:T}úô)òÊ«ëñÉ'ŸhÍš5:þ¼Æ¯Þ½{y(ynIW$M“TôÕRøy2•õ—/%µ¸fßvIocì²ÄõpþÀÞ\.—4zôhÍŸ?¿ÄÎãçç§ÌÌLµjÕJÛ¶mólöÙg¥®]»Êß߿ܿÀau=Œ/4µnÝZsæÌ)òœ¬‚Õ()þþþ%rž„„9R’ôÎ;ïx¶Ïœ9Sn·[ëÖ­ÓÞ½{U¹reÅÄĨqãÆ>™‡ÓYU8“Uëeùòåžm]ºtÑ+¯¼â“y8Uõx÷Ýw%IW®\‘¿¿¿n¿ývŸÌ%Ë7«%÷y$üõò;†í3•Õˆ]–-i±¤Ž>šCY`U=$éIW%EJz]R-Í%çêÕ«%rž˜˜½öÚk’¤'žx³}øðár¹\4h†¢½{÷údü²Âªz=÷Üs4hOæá4eîåìgNFŒ¡¹sçúü<111JMMU§Näv»Õ©S'>}ÚÓ”¥¦¦ê¦›n’$U¯^]gÏž-Þr8«ëg±Ëz9qâ„zöì©™3gyeêár¹T¹re
+4¨Xs@ÉsI
+4BRq*•ßyb$¥J꤬F¬“¤Óú­)'©¿¤Å»,±ºnIç%‘t·¤òýþûË~çÏŒ3ôÔSOùü<			ªV­š’’’är¹”””¤êÕ«{š²;î¸C;wÖ¥K—tôèÑ<ß&\žX]lmÚ´Qjjª~üñÇ"ÏÁÉÊÜ+Êù5HJOOW`` $)==]•+W6}ãʾ\½zuÍš5KC‡UPPN:¥5jèôéÓ
+
+
+*ê])¬®œÅëeÛ¶mŠŠŠÒĉõÐCé~”v¨‡ÛíÖO?ý¤U«VéOú“<X¤û‚’—ßÓ“’Ò%þz=]Rþ«%ÿó¸ò¸\]Ò,ICõÛ+™£Ç”ç§L­®G¶›%½¤¬W—a_ù½ÕùÊ•+
+Tzzº$)00P—/_6}ãÿ²/Ÿ>}ZÆ
+ÓìÙ³uöìY­[·NãÆSçΝõöÛoçùå…ÕõÈöÒK/•돑–¹W”óÓ¶m[Mš4IéééJOOפI“Ô®];Óçq»Ý9r¤6lØ ;wjàÀr»ÝžÔuîÜY			º|ù²Ô©S'_ß•2¡´ê²¡´Ö˼yóÔ½{w͝;W}ûöõõÝ(3J«111:uꔤ¬ÏQ]¸pÁ§÷¥£­¤IÊjÈÒ½l~µd5l#%m´SYŸ—uë·¦,S9?[ž›ä‚”V=²ûuŒÐ¢MÛ¸q£Æ¯ÀÀ@jüøñú׿þeú<.—K¯½öš"##¦ùóçËåryš²µk×Jú­i㝁y+­zHÒÿüÏÿ¨B…
+Úµk—/ï‚£”›FyþüùÚ±c‡n¾ùfÝ|óÍÚ¹sg‘?¿yófµjÕJ©©©ªV­ZŽ}S§NUrr²®¿þz}ñÅš6mš/¦_æ”V=ŒßxÍ·_;Wi­—'Ÿ|R'OžT×®]=ë%ûY[ü¦´êѤI…††ªjÕªš<y²–.]ê‹é£”Í—´CY¯,Þ¬¬¦ª¨_M³YY߬œ*©Z!Ç"o¥Uìo»¾UY_ôµ¸ˆcÀZT³fÍtòäI<yRaaaEþrÇÖ­[ëË/¿TµjÕ”šššcßèÑ£5fÌ¥§§kÆŒêß¿¿/¦_æ”V=¤¬W“Š;eG+So½.èÙ§ÚµkkÍš5Å>$mÙ²E’Ô©S§\¯ßyçÚ¼y³Wã”uv¨ÏH:ëÅ^ìPèèhEGG{5¬UP•kKònµþ*ð–_ÿÛé×?E=OYg‡z”÷8IA/"=zT]»v-öy$)""B’”””¤¤¤¤û~øáEFFz5NYg‡zHR‡|ãC¹yE     oÐ(    `@£    €2     4Ê     Ð(    `@£    €2     ¬ž@a¶l٢ɓ'[=
+[INNVPP%cSÜ¬¬‡Ý±^r#¿öB~ó·E«%§dIV­ê‘›•õ PöÙºQnذ¡ÒÓÓ•’’bõTl%((HM›6-õq©GÞ¬ª‡Ý±^òF~í…üæ­aÆJïÓG¬–œ‚$ëòK=r±ªv×°aCõéÓÇêiØ’Uù¥y³{~mÝ(‡††*44ÔêiàWÔf°^ì…zÀÖ‹½P˜Áz±êá\|F     e     h”    0 Q    À€F     e     h”    0°ìw”÷ï߯%K–X5|¹’’¢°°0¯Ž¥%ÏL=ìŽõRòȯ½_˜A~í…üÂòk/Væ×’F944TiiiV]®„……©eË–…G=J‡·õ°;ÖKé ¿öB~aùµò3ȯ½X™_K刈EDDX14ò@=`ëÅ^¨Ì`½Øõ€¬{¡eŸQ    À€F     e     h”    0 Q    À€F     e     |þ;Ê_ýµæÌ™ãëÓåÆÖ­[U·Éõ–ŒM~â!¿€s‘_À¹J"¿>m”›4««i—túÒ~_ž(Wîºçz5oÕ°ÔÇ%¿@ñ‘_À¹È/à
 \%‘_Ÿ6Êá­*¼uéÿ øÈ/à\äp.òØŸQ    À€F     e     h”    0 Q    À€F     e     ¼þåÝ;)qöª’œ ¶¹_íZÖñêXòØùœ‹üÎe&¿^5Ê:wQ¬yð¡¶-j«}ûö…G~û!¿€s‘_À¹¼Í¯$¹Æ王‹+á)    `ñññ|F     #e     h”    0 Q    À€F     e     h”    0pEFFºï¿ÿ~«ç    €å6lØ ÿ篥o›Þ    IEND®B`‚
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/hagrid.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/hagrid.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/hagrid.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000000f" complete_cpuset="0x000000ff" online_cpuset="0x0000003f" allowed_cpuset="0x000000cf" nodeset="0x000000ff" complete_nodeset="0x000000ff" allowed_nodeset="0x000000ff">
+    <info name="DMIBoardVendor" value="TYAN Computer Corp"/>
+    <info name="DMIBoardName" value="S4881 "/>
+    <info name="DMIBoardVersion" value="S4881"/>
+    <info name="DMIBoardAssetTag" value=""/>
+    <info name="Backend" value="Linux"/>
+    <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="8587984896">
+      <object type="Socket" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+              <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+              <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="8589934592">
+      <object type="Socket" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="0" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="2" cpuset="0x00000030" complete_cpuset="0x00000030" online_cpuset="0x00000030" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="8589934592">
+      <object type="Socket" os_level="-1" os_index="2" cpuset="0x00000030" complete_cpuset="0x00000030" online_cpuset="0x00000030" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <object type="Cache" os_level="-1" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="0" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+              <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+              <object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="3" cpuset="0x000000c0" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x000000c0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="8589934592">
+      <object type="Socket" os_level="-1" os_index="3" cpuset="0x000000c0" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x000000c0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="0" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+              <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="1048576" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+            <object type="Core" os_level="-1" os_index="1" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+              <object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.pdf
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.pdf	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.pdf	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,230 @@
+%PDF-1.4
+%µí®û
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+xœ­œAoÜ6…ïû+ôâhDQ¢€¢‡ E=´ð­èÁëè¡é¡¿jãÊk‘ú†K¸Jwã,9Ò¼÷8|³Òß'éôçÛ—îãSß}ùçÔwúóûÏñ/ÿo~‰Ç×ÓvýCß]NÒw¿Æ_‹ó}·Ä7Ò«oŸ»O×Ɓ>=ê?ÓYÿs®ïÿ:}|ùЈo»Ç—Ó}ßK<†x¸xŒñðñ˜â1Ç#Äc‰ÇS<ÎñxŽÇ%Ÿãñòãã×ÓO§þ!ÎKmé}C|1NܬQüÁÐwa‰áê‹5Ú‡Å̓÷ñ3a½¤ÿë(o>;ègã ñWñ³Å¿•aÙ;Q=O‘õ„e¸¾'-ãÿ'+ñäeÚœøóõýEOVú	c¯gØ=^ÒÅ»¹kèï_ÜžÌOdм
+ÓñÙøÝ³™×è5mÖ3e{ר^õ@tŒ,‡WSÿÕ0ìÎÿt…Cæª%¸ÈÍÊÄÒãXâ™æb9ïÇ"çõ½h&#tå3Š)~¤ƒ!Ùž2!]®a݆Ò?D
+ô‹âæöÅ»ø”IÊûþ8À~7À—?Êü·èÏ^,ÆßM‡×ÅëŸóÞ´ƒ\I§›ðt»i¸®ÊN'<íÂóþýu‹¼‹!ñbÏ|éÚðÔÏ}>˜%_Ù6*õhj•éJ­.\ùuT&Ö Të-,
+j½FÃä:EÃôú
+Iìz¢bÌ]ƒbÌ=·cî!c¹y"¥ÑsèTµ&DÌ]'D̆üjͳïÙn¸^²ï*²ÿœ¿6<ûΐýËÁ„(ûΐ}gÓíq2èö8×ëvž먰È\·7¢dÐí5Xf®Û[‰´ëvŠ
+ځWÚ
+u{–ÚÁ^kð0sÇ3w&DÌ]'DÌ•¼6yž}ϳ?í²ï
+Ù÷öìÖ4ϳïyöõ:ö[ž#Às¤ä<Ùô{
+ýž–zýΣs•é÷ÜsýÞ”ý^£aú¢ú½-rìú¢b^ƒbú}iÇà5BÆà5D›~ç¡4cð,&ŠŽuRÄàuRÎà<SfŽ‚ÀQ0¸v(˜
+(v¼V§ï¯Mà(6J‡ÀQl(x]±¸å¿,ÕŽÿ¨á¿L÷øýï¼}ßÖï_Fl÷/ûëȑ۟‡ƒ[;DÌ`û“[¯¿nâÖ|ÂHöWô[§ÿ¾ˆFä Ñ¯\º5¶Ó­’J³ùç]éÈjVa#Ç¢®ûŒ¥£°TꄎN¸›„]­Ê«²à´λ4ô‹„'^Ì™/ìȧ^L¹/€MpòÅ”}©pú©Hë^£N¥;¾Ác™Öð˜No7ÃF—
+uŠ)õ›yÇÏ8›BBœ]÷Ãíx«1BÞj6ÞlÞÓ€Øu‡Ü=O‰¸›¦dÜUÄä»a£À™PвKë8
+\
+J×£À™PPØs:ŒgCQÁÕó§
+®¶ne](cf^h\ioÌ£ßOKí€kí­1SçöÃb;˜¸ÛØï§%w¨ânÙñgÜUÿÝ àS"î¦)1wKÎ6F·¡ aýí9
+|
+
+]ŒoCA^¸<F·¡ÀصUן*¸»•5x~_˜e
+®N+¬Á7F¦Ññ‡
+žba5øÖT­óûwSH¼o¨à#ä®YQƒ—íwÆ]%çnaÿœ¦DܝÅÂÝ‚K0c
+ZvngŽ‚P…‚Â
+0
+GÁsq'0
+GÁóf§Áýþiªöû'Oýþi÷Fì÷ߺ×íýþI°ßï÷W‘£U,/	îúedjûýÎÉí6ö5k˜F‚o3ðùþùy?’:¿?Âüþ1ßB¿]¿v¬cXº“ežÿ¸ßJ-­^E~¤6üÈ%¤°ûÐs€ºÝdìNXð·qúÅ”ÿ–½já *”ú"bÂ@¡d1¡`Û©¦þ?mµyëT»PU¥A™lkxL·¥îÛF)~ËSn¹ï»F)&Ä]
+ÉÀ݆ýZr7içn~ÕOb3ÞÀÝü‚‘¦DÜÕ)
+ÜÍ+”Ã(p&´ìÞ:ŽW…‚‚Š8ŒgBA©ÜÄ(p&X;¸zÉ©‚«Í[§à]¸40,¾UñÛ6¥±@Kð@•ü]Û´® ñ€y|î›vs5FZŠ3Ë­Õ4 6æL‰x¬S2K¹›ë1
+¼	-»¹ž£ÀW¡ t}0
+¼	…=™Ç(ð6Õ\{TÍÕò­WóÂõO35W–«yåÝ·)~KWó;ï¿Mq!kX7î@§ í<.÷Õš5¨ùÁ”ˆÇ:%çqÁ÷ž1
+‚
+
+kó™£ Ô¡ _›Œ‚`CA~‡0
+‚
+›Î.ì資*ûé¡A¨/àöïÛè{Ö¸uKÚ÷†€ûÃþjBV´â½ éQÈ ö»,{ëYõý z1à£òÝöÛÕìî{d¦ÿÉ·Ýow&
+×2ÐÿcÝ—-{¡–=W“ò½pºÝLìêe¹AÀr/¦ä·lmϾT¥¿°ÄοP è¥)ìJ…"@(R.Œ÷#kw€J·êëÚ]î@ñÖù
+ê]ß%€òž	ÃõûþN#q
+‹+xÃ.oŠ‘‘øú8 «†—m{Fbµí1‰žA„H<Ìlpg‚@ËF¯ãpU(µQ0œ¥›P)œÖ.¯ný¨Ž«ý[¯ã¥jæEx°èxå]¹ãÌËð`Ññ;ïÍMÏÞa…x0‘¸aÇ7ÅKñPEâ£öPÞ“¸ð
+¡ I<.çuÊcxZ¶{=‡€¯‚@éJށè<…€·@ÀÚëÕî Õq5~ëu¼°J3W7–ëxå]»)¦ãsoÑñ;ïÜMÏàA$Na1,wÃî $ñõ1A—¿¼½>´‡ZõÌU¹ΈH<õUto”o¤ÍÁ–Þ™C TA p}†@°@ °%Áï:þÛé?²Ê©
+endstream
+endobj
+4 0 obj
+   2234
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /Font <<
+      /f-0-0 5 0 R
+   >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 910 1350 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+7 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Length1 8976
+>>
+stream
+xœÕx}\UUÖÿÞg}Î}çžË½Àå^îåD|A5½™š©¥9Z©hˆ/#Fj†¨	𢂅o××ÌÌŒ53Ô”œqRš§iSQlB¥Ëaó¬s§úÌü~þ>¿{Øœsö9ûìµÖ^뻾kJ1B$úù™“riþ÷â쇽˞ŸûRtÛù¨¼¯!„¶ääNÙpà;¼vÃç+¦þv~cÍx½—ˆÕÓ¦Lʾøê¶s„¸G`_ú4ì°–—áý«x7mæK/pÝÑïwãýºßÎz~ÒÌ/…¥Î7b椗sÅ,©Þãûâ”ܾòwx…ï³iD 9¼\Ìa;PZ™DLâ="Ý£:V ˆ¤{Í…ÆÄz¡ñBcr¨âSü>Å—#’–<pµ\ãå²å§ï_”	%§	‘¼¬Ž˜Èz‚"ëdA¡‚N= 7è©b0èdt@ÞÓ™^eÉ-ö7¸‰h¶¶4¶4*á=H÷~5)x•<|ÔXÙÊnÊVÝýÆnŽ‹©ÌµP:>0ä]ˆ^08»jˆâåh9Þmè)§¦„|y¾¡PX,/6¬ÂDj„Pê‚XÚtô=i?£§Ÿ¢›¡Ÿ«›¯_DWAÝ öñd|¨OO}J¬Bc©{šv¥iíz‚Ôò‚V×¢ƒŸš“˜·…ˆ¤ù2šQ ùmWÅ®b>®¸Ÿ	$8½Æp½…¼.U[”è"ï!wul•²2ÜDÂ!¬×½ ³ŽG…?»Ð˜’¢d¨:×Ôßi¹Óh=yËzKÉP2lɁß%G%{’½ÉÑɾä˜	¨€'à
+D|˜Ì¨LO¦73:Ó—“™›°4ªØSì-Ž.ö-YLhJðtíÔ1 Ë“åÍŠÎòåzr½¹Ñ¹¾BO¡·0ºÐ1žŽ§1’Öš’þí¥Ä¦YhlL|ZÏôT_ZÏøØINëOSS„£—ö.šõfuUÕ€#ËöÖ¶Þ£Â[볎žrô™ÿiRsò'ç}y qDë¢=9“>ÞöÑ1[ÁŠnÝö$$´ »“ÙmW¡må$.RD—‰–"ó2Cµ"V‡£‘"e›™µŽ´¶Ô§¨žWFáwnY¸•0†¸¬®B×jWÐÅPXG7”ï¾À½ª°D±_J4ŒÜ”ùÁÉ“dnùøÎñ­ü\EéémbÚÞ¤¤«gÏ^MJÚGûSµÑ>±D•ë!b¶d'¡¤gÀ	z*[”*Ózº1©®Û;®YʝFÕEïÔ4*6tÒÊ,ú#ºŠ¢Ù
 ȁ©Šf'1»jÁ‚²½ÕÕ?˜óñIaGësÂæ-›îh-–ì­›§dßV}çcœ|>ΫÆ^RÀ"ß'GFu"¢³¶ôkLÁÙê[Q{«> ÏÔgésõ¨}hª:‘#öã*ü‰Y÷‚’ý›z }CIú/õ8òïõ¨ïÐã@–ãOáך8þ/šˆYûTEu]Åœ×N\$7GT_¤[ÆoSVm¢‡#ªmU¦•n—CÐ9td¸`ìF!î4Ö(¶Œöe®·¢ï[ïÜRTßO•Œ:ÕŐt€0À1ÀźÈÝuÝõ]³È,:K˜å˜åҏŸ­º‚ÏC;¼ Zõ‚Ô"kî!‹-•¦³Î85ùùs/ð;üMl¹Bå*a粊j‹0ᙣ§zöÜ×¹íM
+4”>Â/Ö¬?°o³jËýü{!_²3y""½AÖ[Ì2›DB
+ëßÐ?µÐE5’éðý¡£Ç~D,$€ã,ÄÒv¬·Ò«÷8ìÑúÛŽµ÷“@{¿$8ì¶ðØx!­§­—_´xÉÒ`yÙºõ’í:ïßÐÀû^û–žüú­iÄqˆ2â3ˆ­2<àAQ²E2	êu^É
+ÄKÐ5-êzªËŠPÈ9.¦cr£6¹öÉ„@ˆ(ŒïåSXš?Uñ9|œãoÒ)gè°–{ļ¡UC›ëö-.Êqîa¬‰¸ÉND¶HD¸&…1q u«²Î´—Š$(«A w¸¤(kfcÇ´•Õ$ºÓø ËÙMDvM6ÇèáûÃF?;|¿}ô³(e”fº(ußt”§Å1lŒüŠø
+›ë*vÊ"b¤èbî—È\iNdžë%÷bRä\¹Øµsßn—‚èíGuÒÒI¯þôç˜%:ì’,º\ø¸eD]•:éñ·Š&žù•coPûàgüΞ={æÑÒ>3×?6¯|à#ŸõH¹qü¹¹QüÛv;lDÿÎC;t"ùnÄj(Ò{‹¢CƒsP¿Vr£×Æ–J+ÛÃÜ¡ìNw|´Õ
+v¯^JDs =î¨ÉMu—Æú;õÖë·4w×¼ª†è°C¢f‡D’Øa}¶g’wRt¶O$㩇:ì¢/&>!MsxÔ1‰¦µ_üBYPºŸã7&œš1úÓ™GOUïÜw°lóö7F}1ïô¸ëÔô:ø½5«/~ï÷Ò#¥¼äÕ²]óróòãâDGÿ¹rÁ;šÎymWÙ
+Ô9Šd¢	sÑ2p•él[•}Ž2K©n¥G n¥§˜á4Z=jþ®o©ie´/`"ËHö+¾4Ÿ"‰íaéKÃññ7éâ'ü `›Ã¯ù6>‡® ÖPyVnË
+~‹ßÄh´½°»Ž–îj-õ4}“Τ¿£oò—‰YüüÏüsþG?Ê	*÷1>tD!Ñä‘@¬“”ôe¶E´Ìð®W1ê„P§—‹;Œ9ÝÝôÄm}*¶`¨¨‹¢¹©*ó-„ó
+Î}í6}páǼ¢:‘¶ ±>º–Ú¾iÓv~„&­+-]Ǎ‚ØÐ\¸ l'oº×zC8Ýz±xÅÊ¥Bï?ëÅÙ¹»Ž½¿|›=ºöOÿŠv݁¸2KÃo DVqEÆø´‰¡:‚¸Òïοp%45Ìæ°rlº-­§°!¢¬<¸tÉÉÖÈû]úš÷ùö=ÑÐ@kë…v`©h=™ðÈH¿¨  ÛDÒ…”‹ITÜbºŒlËÐζ4Í1ÅdÜçZâMµ!ÇòUŽ•œ.ô–‡
+ÊÓ…¹P%ª—4RB“~CÇJSèti¾´”¾&•Ñ
+i‹Ñª±'ŠùϧQ'«P^ÛZg kºç/7'‰—ïyQÎJô«D”SA<Ó	Š‘°2ËJ=YdÓ¹
+½©›<lÓäS})E³F†$VÍlZ|؈í~|ô†–„n	5#jT 
+çGçB«¬Ý÷Éñ}µü¿Î¯ñKÈÝæ4?ß+ZžãCRЙÆiüͪò`”G@„=x˜(”ˆLTŒCÚ
+¢À #ðIj§^ƒN}0€\Fa‘Ù¬,‰Hh‰žkÚylý…F[ÆÏ ïÁ©Ìv[4x´I5xŸ2–Ì%¹d%a2Õ	èÅ0êÆÐ±B¦i*&¼Lç
+àEqžü²®˜.
+MooB¹ަGÚJSi,ø V8Âo	~žMÈø|YëÄeuÌÒê„}ÍI´€/ÒtVóõÌ×FN†B¥j©6UÙVFèm!O‚Í18BKÏ÷’¯ØÎ|’/Ⱥ}¡À˜o*0X
+B
+¬J¾-èlr*?c3	)j”·³2!oÝÞwÊÖîÝ»¶‰Úø­¦ïømªÀ¥†Ó§n|zꛍüSÞÈobrÎÀ¨·ÓÞd|¹‘³Oï€3²šXìÕL·ÒRE×C¸Ht£ŠÍ88J“4E%J*±ÖÜJ>˜å)ô= †rê}*+(V’Ú!&l«ªêóþ‚Ú¶¶Úï·žzk͚ݻ׬y
+þÙ¸;{DuxšÄµ
+
+µØT¹Háì("—dz¸Œ¤X£ôÌiŠÃCCŠ×ãvE†#^„Ú«ÅlR½ƒiîiˆ¢­-ŸµûÇ…~ýZú©ÿkRPþä€b¤FÁh2šíb¤i³{u(¿|FêMÌlZ‹
+ÕZšOkb8¿8šúM£qÓƒSio¾õ)ÚŸo˜œÊ¿šºu?A³Fó£tz,å•PÌ'Ñ-|R¯|“O¦›Õö&YA·¨z£½KïUŸˆEŸÚHÐTªú„;Än‡ëW>A~±Ø+6nÚ„›6Ý£z~÷Þ=~—êY&?Ë?Ãv4•ö¤©AžÇ‹x1Ç|LçÓWè*ÃT¶¡	ä÷~f“`1
+¯G§dƒàõzŒ¯è Ä±Õ¾.¢LËÈ:©²²“Ç`ôºdãrZºÊN{L'ëßjBê1¿j oÕ²î­oYO>(--*¹ÂIÄ<èMìžøD"ü¬¼ðþ›¬ÛvC‚§rã¡yŸMÜùÁ¼]¯\ù¿ÈfÜ.Ìo|ñÝ#ÅùWÎÐð¦ÿ•í8Ñ+½pîóS¼Î¤/~ùur÷sƒ‡,ûýïx#º{çd}|o߈¾nÀ
+2Q§0‰ÉŠ$1P:h Ž	 GÈz½Ä¨(¡[’!F5‹]¨QÚa¼>üg0ށ.œ[5t™(
+]˜ $²$Ý!G˜ªËæ±ÅÂröºn­PÎÖë¶6Ä2I0"Úu‚±K’’ä€id™–ÃRq9[%•Ȱ^Þo±ƒò	ùù.4Á]±IŒ?›¨ LSõZé|¨ZðÛºOx¡©õTµdo™N¯¶ÞiÝ+Ķ^D}{¡Ã}Ï6c‚‘maºxq÷ˆ®Ø`ÄÅÆØ¶Ú,jÒ¯ÿRÚSômc sAå{í5Fb~_êPëTŒrœ|ÍçK‡ç}ôQݶâb¶™/i
+.Y±ås!«„ö'yRœxψ?`ÊÈ"‘º¡%4§J¢ë±ÚÒ'Ë™r!Š¢VkáL§Ïi™ÈêTj,lüÆ-g˜ÉÊ@5ƒs„3‚Q25'P“¸%hœ~¡]rõÛ0ßv$ñ4.Òi
+‘ š5øë"ÐÙH:“¡d™Næ‘׈F“H<M‚t:’>azÂ<†æÐ9ôXJÍíY RÕÊË7_H\ <×՝nÀü-WálKên¤YŸ
+ca¼c¼E826+{´ˆ8ƒ†b,ó­¥a+ý²Ûíõ˜·ÙåG#aøw ÀuþÃ}«q<æ:æ>uÜSã•÷؎ؾ±a$ï¥Å-T«ÑÓz’ÔvþO;€ÃìòˆÃ?=Ò§ò·_ó{Ôz…UøûüÚˆ´ÿ²-[–aóVÅÅS3µyކ|{†i ²…?ëÖÚ¶õðá­Û©:• N厩:Å…JÄ\d"Á0)èÛi
+š–Ç”ºWúM1z·ÓêŸWS
+‘­¾'ZêÿÅÍöZRKÏ
+gá¬XËj%y‡§Ò#Œÿe¦kÇ
+TöMvÒÁoÄ÷%§úF v}+_¸LoºÂ[ù-šI]#6@ßÙ…ù¨ÿžßþÍx~ûÛëü0N¦;=ü–ÍÐêÀہNÿ#È{Lï—‘ò!B*D¬±TôˆX']/!õÔ=*aèž¦
+s-–ËX‰n°A× 8Ÿ Z¸À)3dCr¨xÑYNÓYº”&'›†€8˜¤ bÈdȧ±©ò<–kZ+Øëˆ$%¦
+Ø$m’ÂäpBþ|!߀oÄìÒ]ø‰ýSꢢÊlVÔm9•Vž6S±Õ‘üÇÖÔ3¬®u¹0¯uhËUáO­=ȃº%×ßIÒ‘æ­–}†2…n%ûIJðRu‹Éi&Évk¤j™Æõ
+¦†ä!.¯K¸¿µÔQ£ükS”%ä4,n#¼‰Z)Yܐ3ãæ«ü]þ
+-¢£Šn²Éu'ðSü¿ù—üÔ„‰ç‡¥[(²6ºåÑŽ=&†œK!èV’Q&ŠŠ-Uú#²AÒÝd½5íû=wk.|¦ºßL䶪DíÉè_[2á0ÌûX—oUW÷9´4´›ؔڣ­•bÖ¾œçÓb[ŹUZ]Jú"h™•”éÙ¬,²•
+qëE{{)Ô¾õªíŒ!¯c€c¢ã=ÓÔƒkK1	W®å«**VñÞôÓ{”ò¶{üëÞú§5ÅEkv]ýêâ•ÖݨïfŒÃlœ?ŠÌ	ÄŠ‘²RdŠÊö u¹Y’Eæ•Mánj 71X%¶o€ìM]
+[nYyÍ¿)‘=BzˆçW»,m£Ã£>×úCÕüГ¿Hßj­|œ­Á.c»4Ó8~ßžðÉ´g޽ðî™3ï>¹u4«ÛÃׄ„ð[ÿøŽÿ]Û#ùàÆãâÛýk7ÚU­$ò| ‚)Zd¨0 "%’Œ$¯¦½ÀúÙƒ­é‚âÊš2‘;€Þ6V D²6”M…ýd¿$k•ó©o7k½ržòV¬ðÆ4/bID«}W WhXKºcíë@¤K‚ž®A[©geÂöäS\g·#΢G‡4.ÄçJVMeÊÚnóýM	íN-´~lþxmÿ·½ô
+SKߘ8ì	ý‡V¬Þ¹sõê];ùÎÅ¥m¿ÄK­ÙÎïÞ½ËïîZºdñÚµ‹—”
+'*Š‹+6WŒ‰®,üàܹ
++£cN–|yãÆ—%'餗/~	!íY	´³PíÜ“ˆX×£ÑñÀž¦¸¶6üOÚÚ¬äþ­ýÚú¨ãÑÁ±WFß×#^‰	ó´…„`-¡`ñŠßv0么‘Ä…Fúçñ‘´eM#U±Ÿ|LötÞåà×gcOP¨$KÉìù„ÖÒåBWìÛ…Ç7‹I-ìA1‡‘Tì%äK&;t49€ßÈÀÊ&ëD"ŽˆO‰Ubƒx–ôóijb–˜GSaÃvaË€‚
+ã×Kªè%’GÁ7
+GÄA¢…\‚³°‡\ÃYDü~-)!;H>Êb§³H/<…=§ØYRÇ,|~–n¦çQºCt	©#o€(%›iêUK~$K`´P€Ž”*ä ü§ð[gq|ÉCÖQáBö¡ô8×díteuÚÑD
+pæÑd‡T%ÙåXœEµØ.ú	m”Ö’ 9ÏÁløŠ.cÅÝâPRÒnÈ"%øí
+uŒ”Cç£îꑯ~]˜'fÑ=ä1KžŒß>¡j„sžBrÈló$+êÔ—.…å(©ú4Šœ•‡‰Ýq<~A^ˆZ2ÒÈ¼Ê'ûH%é
+夿¤é+õb?âȍâeÔ¹„®~$gaI$9â-´5ºÆÁûÕZ—hë~ÁÿXöþÀ“c£?çëÚåW·ÑV9z?ÉÜož]ÕÖ–9Vt±qû™{?øuûEìåÿôðr×.Ã3ÇFïo<èþWg
+¾QcñR½Ãnì<¨k»‡„tÍøé™‰!ý~ ^æê‡ª›ª´óñ©¥|92Œgâ­î~Dhãä™<ŠÃ|¾Ü0âÁ“ŽŸ½/Gj §Å’/æÙÌF	äcõ,6’ÙÂ
+ô/ÙÏÂÉelåØ6J©$-$§±k!§ÙW¤’Í'VñŽ·“ÙÒ²ß+Æëbqzn,zø|/œdc[„­„
+Àûr’ÃpžóÚ3uÌnl8#Æ_¦ÓÅô(½.Ä+ñ8X#šÐKªÄzÖ›²fi„ô†,ÊCäãº>º—u:®Ÿ¦¿`˜f8`h4v1¾aü»i¨¦±Ÿ<Ž80AÝé	à5lb­
+˜º ÙÿôÃO)p·~´Àîpø?|oïʡɷ_{˜Ýæp«n–Cc3|ÛÿàðM¸18\Okõ£Øµr¨ÇëGÁÕ+ÝÙÕf¸Ò.søšÃ¥ø».–Ãß8|eƒ¿.„/Ãsø_ÿb!Ô]x”Õ-„ÂùÏ]ì<‡Ï]ðgç8ü‰Ã9œ-‡Ïj=ì3µ8“§9œ\ª°“n85>ápœÃÇŽqø/G9|Äá‡Ã)P]ägÕª><̪8|xp<ûð0|X(üƒŸhƒƒñ~8Àáƒr¨äð>‡ýÞã°/ÞµÀÞwülo6¼³ÇÆÞñüB¿Ý»9¼Åa‡6ØÁaû6ÛžÛ,°5‚øJ°¶pؼɄUl2ÁÆ
+N¶16TXÙ'TXáM¼Áa}¹™­çPn†2TVëÖZغN°W¼JWf¥V—Œg«ÃêB±äu?+%ñu?¬â°rE7¶’ÊnðªùÚð|™‘-·Ã2¤VØQœ
+Eh©"?,UàUK+l	‡Å
+,âPÈ¡€C í÷²ßsX¸dCþhË÷Ã+æsxÙóL0× s8¼ÔyÍðb3Ìn†\³8üŽÃo}ð‡Ê@6cLç0m!LÅ›S8dsxžÃd“ú@V3L0ÁxÏrx†Ã¸±6®Æà7aNö›Ãáiœùé0Ú£¨•Š€§ìðä°Pö$‡L#<ÁaäãV6’ÃãVÁa8>ÎaØcV6,‹2³Ç¬0ÔrRƒËa‡G„®ì‘fx8ôÈÆúÛá¡~!ì!ôëkfým!Ð×}8dpèÝËÎz7C¯t+ëe‡ô4#K·Bšzz Õ)=Œ,…C#$w7²d3t7B·®zÖÍ
+]õÐ%’:ûYR6tN´±Î~H´A§?ëô0$ø!Þodñ!à7B‡X1!àC=}6ˆÎo3xPO6D™Átsp5Cä@p⍓CD6„£¥Â9„á 0'88Ø9„r°á6
+êªëBɳ)Œ™9˜ðmS9¬ ç Ã×td;HÙ âC=ÀØ!ßÊ„®@­@8Ð*š½tMúÿáGþ_ðüEý/Äò–
+endstream
+endobj
+8 0 obj
+   6698
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+>>
+stream
+xœ]“Ëj„0†÷>E–íbÐ$êÌ€eº™E/Ôö49N…%:‹yûÆü‡)TPø<9—OŽééü|vÃ*Òw?™†VÑÎzZ¦«7$:º.‘JØÁ¬LñiÆvNҐÜÜ–•Ƴ매ªDú‚ËêoâáÉN=&BˆôÍ[òƒ»ˆ‡¯SƒWÍužh$·Š,©ka©å^ÚùµI¤1yw¶!>¬·]Hû;ñy›I¨È#™ÉÒ2·†|ë.”TY¸jQõáªrö_\—HëzóÝúx\†ãY–Û:’ŠTJiP:€
+ÐT‚´ C$•Ž ®ÒFÒܯ)qw‹9÷ ñÉ51‹ÌÃ,~f‘ðËÑO²_b¿?…î~~ÇàWv øí¹
+ürb?ޱO
+?]‚؏kÂ/G?¿=Üûa2?
+[?o¦à§q1x¶Ùöù¾æê}X½¸ôqç¶mÝÿ‹yš·¬xÿ&-Ñ–
+endstream
+endobj
+10 0 obj
+   377
+endobj
+11 0 obj
+<< /Type /FontDescriptor
+   /FontName /BitstreamVeraSans
+   /Flags 4
+   /FontBBox [ -183 -235 1287 928 ]
+   /ItalicAngle 0
+   /Ascent 928
+   /Descent -235
+   /CapHeight 928
+   /StemV 80
+   /StemH 80
+   /FontFile2 7 0 R
+>>
+endobj
+12 0 obj
+<< /Type /Font
+   /Subtype /CIDFontType2
+   /BaseFont /BitstreamVeraSans
+   /CIDSystemInfo
+   << /Registry (Adobe)
+      /Ordering (Identity)
+      /Supplement 0
+   >>
+   /FontDescriptor 11 0 R
+   /W [0 [ 600 862 612 549 633 277 633 615 317 390 636 636 636 774 686 390 748 731 684 611 634 837 636 634 579 392 557 636 636 636 655 698 411 603 636 636 636 ]]
+>>
+endobj
+5 0 obj
+<< /Type /Font
+   /Subtype /Type0
+   /BaseFont /BitstreamVeraSans
+   /Encoding /Identity-H
+   /DescendantFonts [ 12 0 R]
+   /ToUnicode 9 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+13 0 obj
+<< /Creator (cairo 1.8.10 (http://cairographics.org))
+   /Producer (cairo 1.8.10 (http://cairographics.org))
+>>
+endobj
+14 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 15
+0000000000 65535 f 
+0000010721 00000 n 
+0000002348 00000 n 
+0000000015 00000 n 
+0000002325 00000 n 
+0000010562 00000 n 
+0000002457 00000 n 
+0000002658 00000 n 
+0000009449 00000 n 
+0000009472 00000 n 
+0000009926 00000 n 
+0000009949 00000 n 
+0000010187 00000 n 
+0000010786 00000 n 
+0000010914 00000 n 
+trailer
+<< /Size 15
+   /Root 14 0 R
+   /Info 13 0 R
+>>
+startxref
+10967
+%%EOF

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.png
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.png	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.png	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,391 @@
+‰PNG
+
+   
+IHDR  Ž  F   Ñœåw   bKGD ÿ ÿ ÿ ½§“    IDATxœìÝ{\”uþÿÿç€
+™•˜éª›")Z’Š‡ÔŸ$š›ekº†¶f+ÚÊ]OÙ¶Z–à鳄4Í´4E;›}ÖÚUÑ<¬–õIÍÍÝܵ$$ÓD®ßûe–iàb€a®kf÷Û­[3×\×ûý¾æéæ5'=zô0úöí+     ~*77Wuâãã•’’bõZ     6”ššª«    °7G    €)G    €)G    €)G    €)G    €)G    €)G    €)G    €)G    €)KG‡ÃQ¥íUQ\\¬ÄÄďãM‰‰‰*..¶z    P%Uj‡6nÜè²mÉ’%^iôÊ2£ÆclܸQ]»vu^w8ÎÿÊÚ´i“:tè zõê)66V™™™.·Ï;×嘒’¥¤¤¨uëÖªW¯žn¼ñF½úê«nó„„„¨eË–Z»v­ó¶.]º¸Ý    `wU~Å1==ÝÙØ]ºtI¯½öš×å
+ëׯW||¼óºaå6¤›6mRFF†
+5qâD9ÒyÛÞ½{õÒK/¹ìŸššª÷ß_›7oÖ÷߯wß}WYYY.û†¡ââb­ZµJ<òˆs{||¼Ö¯_ï¥3    ߨrãØ¹sg½÷Þ{’¤uëÖiРAnû”¾êöóŸÿ\›7o–$8p@;wV:u\^Á›7ož6l¨Æ;_¹+½Ýáp”{û矮[o½UõêÕS»ví´cÇ·5ìÙ³GÑÑÑ•žÏƍÕ±cG…‡‡kÀ€ºòÊ+%I.\PRR’Ö­[ç²ÿòåËõòË/«cÇŽª[·®¢££µfÍš
+ÇoÚ´©órtt´>þøãJ×    vRåÆqòäÉš?¾ÃPZZš~øa·}ÃÐåË—µnÝ:Mž<Y’ô›ßüF<ð€¾ÿþ{—Wþ"""ôïÿ[k×®Õ´iÓÜÆ*ïöx@>ø Î;§´´4;Öí¸üü|5hÐÀãó:uꔆ
+¦ôôtIÒ¬Y³4fÌÝvÛm.ûýë_ÿRÛ¶m%UüöW‡Ã¡ÐÐP
+4HK–,qnoР¾ûî;×    và˜5k–‘’’âÙ·ÃÐ=÷Ü£æÍ›+//OÎí’ôì³ÏjÉ’%:yò¤JJJäp8TRR¢ºu몠 @õë×wïòåË
+		q¿ìÿË»½nݺ._2S:GYM›6Õ‘#GtÍ5×”{eíÙ³G‰‰‰š7ožF%I
+		qÛÏ0µlÙRYYYÎæñ§c–^6C}ô‘ÆŽ«cÇŽI’Ξ=«öíÛëÔ©SÝß    `µÔÔÔê}«êÔ©SõÂ/hÒ¤In·Íš5K/¿ü²ŠŠŠôÞ{ï9ª:hÅŠºxñ¢Ëþ¥MaEÊ»=66V«W¯v¾zùÓ¦Q’ºuë¦#GŽTz.+V¬ÐàÁƒµ|ùrgÓ(ýçKpÊ~.²ôÿcÇŽÕoû[=zT—/_v6…9}ú´óòÑ£GWéš    ÀNªÕ8öéÓG†a¨W¯^n·Í˜1CÇW³fÍ´ÿ~çöU«ViÕªUºâŠ+jü-¬¯¿þº^{í5]{íµå¾UT’FŒ¡œœçõ²û•½<aÂ}ûí·8p s{QQQ…sÿþ÷¿WïÞ½uÛm·)<<\¿üå/õú믻ìSú­ª#GŽÔÒ¥KÛ³³³]¾|    üA•ÞªêO.]º¤Q£F)##Ãê¥8%&&jݺuªS§ŽÕK    ¤¦¦*`;˜ºuëÚªi”d»õ    €'ªõVU    @ð q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜òèï8æææ*''§¶×    ð¡=z¨oß¾•îçQ㘝­õo¼¬®=o¬ñ     Ö;´ï˜Îž=ë½ÆQ’ân½Q“g'Öha     {xyéf©Ä³}ùŒ#    À#    À#    À#    À#    À#    À#    À”ÇÇчöÓÞ]Ÿ{sH    @Åti£®=oôÚx^m?Þù¹vüïõîÞݛà    <ôñ:WxÞ¾£$õîÑ]sfÌðö°     ¤½¸L_ÿàÝw‚òG    €)G    €)G    €)G    €)G    €)G    €)G    €)G    €)G    €)G    €)G/ˆheõœŠ/_VÒÄG-™;iâ£*¾|Ù’¹   ÔKLjÖQzý7ܶ•w¹¢ÛßÞ²ÅåöçV¬t;.3;[­£ô§¬¬*Í_"ZG)¢u”®½¡ºÞÖOlÛæ¶Ï£3gêÓÏ?×¥âb
+:̹ýß§NéÇ«it;ýbøpýûÔ)·cßy‹bcnv^ëý÷Õ-¡¿š´VŸAw*{ÇÓ±JJJôÇ^T§>ÿŸš´V·þ´á­·ÜÖß(êu¼µ—
 6¾óŽó¶N7wÔ;ï»æ   ÀÿYþŠã†·ÞÖ?Ož¬öñËW¯–a’¤KÅÅÊxûm·}V¼öšÿb V¾¶ÖëóWÇ™¿×7G¾Ð¼ÇgkÒÌYn·—”
+		ÑÇû÷«K§NÎí¿ŸŸ¢žqqúÇ'‡Ô3.NO¤¤¸ûÆ{ï©wÎëÞþ¡Þ|uþñÉ!M}äa}t’éXi/.ÓŸ¶giÃË+uòóÏôúŠ—”³c§ÛúóŽÕs‹jÚpnïÝ£‡ÞxzÝ9    lÇòÆqÑ“s5åñß«¤¤¤ZÇwêÐQÿ›™)IÚôÎ;p[¼Ëí'þùO}}ò_ZõÜsú׿ÿ­¯þñçÿÛ'Ÿª÷ƒt]›¶ê}Ç :|X’´÷oS×Ûú©ùMôä‚…Îý;¦Û‡ýJMÚF+®_‚vïÝgºöАP—ë/®Zå|´×/îН‰#´|õjç« 9ý«JJRXX˜JJRö_þê6æþƒÕ¦ukçõeÿ³D×·h!GHˆBCBÕ¬iSÓ±^yýu=·`nŒŽVÝ:uÔ¦uk½¸dq…çФqcçå6­[ëÀ¡C¦ç   ÀÿXÞ8¶kÛVýúôÑ/¯ªÖñ¿3Fÿóü2C/®zEãî¿ßåöUk×iú¤GU'4T3&OÒªµë<žÿ‘éÓ5zD¢N:¨Ñ#õð´é’¤É³ÓCIIúrß^5ûYSçþýnšÆÜ7Rÿ<ü©Rþð„9³Ü5G´ŽRÓèvšõÔ“úãüùÿ=>)IÿÛõíu«Îüý¸úöºU_îß§3?.I:SP ÆI’®ˆÐÙÂB·±Ïœ=«+ë×w›ïgíÚkòc)mþ3¦cúæEEF:+ýï§ã]{CÝû›1zú÷;·_yå•Ê?s¦Üs   à¿,o%顤1ÊÞ±Cÿwä¨Ëö°zõôýùóÎëߟ?¯°°0—}Z·j©Ÿ5mªésæ¨mT”šÿìgÎÛ.^¼¨µ›6iÌ#Ñ:Jc™¨µ›6éâÅ‹ÍäØ1NLTýúõ5jøp}qô¨sû¯‡ÿJW\q…î¿÷^çþ‡ÖÃÓ¦ëgíÚkø˜$ûûßË=ß3?®ï¾<¦ýÙÙü‹Îí­£Ô:öåìØ©ˆÖQÊÙ±S7t¾*IjxÍ5ÊËÏ—$}wæŒ^}µÛØ
+ºÜg¥óýûóÏô?Ï<­§L5«i“&úêŸÿtWÚ´þt¼üã_êíµ¯iö¼yÎíßÿ½ED”{Î    ü—-G‡Ã¡?>ó´~÷Ä.Û{ÄuÕ’çŸ×÷çÏëûóçµäùçuk\œÛñŒ«—_[«ó—íonެΝ:9 3?®.±±zsófæo{Ã
+Zÿæ›úᇴvÓ&µkÛV’ݦÖ¿ù¦.
 \¸ ×ßxÓ¹ÿÍ7ݤ/Ò¿>;ìl®ªâÌߏëá±IzÃz弿Y£uæïÇ5~ôhIR|¯^zqÕ*]¼xQ/®Z¥¾½z¹Ñ¹S'—†õ±§æ9А}ÿ½éX÷'Þ«©?®/¿úJ—/_Öñ'Lל÷]¾óò—_}¥[bbªtÎ    ìύ£$]ߢ…~=üW.ÛÒSSuð“OÕ¦KWµéÒU‡>=¬ô©nÇöŒ‹Ó™¿W÷®]\¶¯|õ5MøMW©	£Gëår¾$§¼ù—.\ ¯¾¦–7ÇhÍú
+zná>ÏøljŠž_ù²¢:wÑ×ÿú—sÿéÏ*ãí·Õú–Îå¾ÅÓ{öíW\çÎ:s¶@
+ºÜöÔìÇ´c÷]ßñfíܳGóŸívü°Áƒµc÷nçõíÛ«Ï ;Õ*¦“ž}q™^^šn:Ö´‰Õ£kœ¼O?k×^÷Ÿ •Ï>ë2Gé·ªŽ4YŸœëÜþ×Ü\ýê|Î    ìÍ1kÖ,#¥œoç,+55UÇþµS“g'šî÷òÒÍrœ‰Ðœ3¼¹FTÁ¥âb=˜<E«ž[êó¹“&>ª—žMSÐÐÊw   P+Ò^\¦¯øÜ£þ튒Öò¤¬ãÍÂzuëÔ±¤i”dÙ¼    j—mÞª
+    °'G    €)G    €)G    €)G    €)G    €)G    €)¯ÿǽþ¦´e˼=,    Àݽ[‘1W{uL¯6Ž1]Úè\áyýóûϽ9,    ÀC­n¾Z]{ÞèÕ1½Ú8ÆÝz£ânõî    Öâ3Ž     S4Ž     S4Ž     S4Ž     S4Ž     S4Ž     S4Ž     S^ý;އöÓÞ]Ÿ{sH (ÅtiSém¥Þ ï Þ ß¡Þ ßñ¤ÞªÂ«ãÇ;?×Gÿ{DÝ»w÷æ°@P9pà€Îž¯´Ð©7 æ¨7Àw¨7Àw<­·ªðjã(IÝ»w׌3¼=,4–-[¦ï~ðì™Vê
+¨ê
+ðê
+ðªÔ›§øŒ#    À#    À#    À#    À#    À#    À#    À#    À#    À#    ÀT at 4ŽQQQV/Ôà;Ôà;Ô`ÎÒÆ1''GwÜq‡¢££• ÷Þ{¯Öç4û¡¥¨¨(µiÓFýúõÓ¶mÛÜö™9s¦>ÿüskذaÎí§NÒðáÃÕ®];
+>\§Nª•õÕHõVz,¿äaWTo|ð¨èèhÝyçÚ±cG­¬¨®@ª·÷ß_ýû÷§Þ`K–6ŽS§NÕøñãõÉ'ŸhÕªUÚ¾}»•Ë‘$?~\_|ñ…fÏž­Y³f¹Ýn†BBB´ÿ~uêÔɹ=%%Eqqq:tèâââ”’’âËe•
+¤z;~ü¸Ž?îË¥UHõöÁhéÒ¥úä“O4zôhMš4É—Ë*Hõöá‡jÍš5:tè~øaê
+¶biãØ°aC>}Z‡Öu×]§´´4çmŸ~ú©
+¤¶mÛjРA:|ø°$éðáÃ<x°Ú¶mëölÏŽ;Ô­[7mܸQÇŽÓ¯~õ+ç³OûöísîïÉ+¡¡¡.×W­Z¥¨¨(½ñƺãŽ;4bÄ­^½Ú9Î_ÿúW%%%),,LIIIúë_ÿZãûð¦@ª7Àî©Þž{î9EGG+,,L½{÷Výúõk|ÿ ÞHõ¶dɵhÑB!!!
+
+
+UÓ¦Mk|ÿ Þbiã¸råJ}ýõ×zê©§Ô³gO½õÖ[ÎÛ¦OŸ®ÄÄD<xP‰‰‰š>}ºsûСCuøða—WÞ~ûmÍ™3G¯¼òŠî½÷^M›6M#GŽÔ§Ÿ~ª'žxB3gÎtîoöjETT”Úµk§'Ÿ|RóçÏwnOJJҁtë­·êøñãºõÖ[µoß>ç8jÔ¨‘$)""B………Þ½³€
+¤zì.ëíôéÓz衇4gίÝO€7Z½EEE©}ûözì±ÇôÌ3Ïxõ¾j¢Ž•“·nÝZóæÍ“$9rD#GŽÔСC%IÇŽSbb¢ÂÃÃ5|øp=ýôÓ’¤£GjĈªW¯žËX3gÎÔK/½¤:HúÏ3IÓ§Owþ€p8­ÉìÀO/wéÒEsçÎÕèÑ£uÍ5×(??_7Ö™3gtõÕW{z7 >HõØ] ÕÛÁƒõ裏jêÔ©êß¿¿Gó¾hõvüøq]¸pAYYYš:uª>üðCæj›¥¯8N™2E_}õ•~üñG}ñÅ*))qÞvÃ
+7èÍ7ßÔ?ü M›6©mÛ¶’¤èèhmذA?þø£ËX+V¬ÐôéÓµuëVIÒM7ݤE‹9ŸIúòË/%IuêÔÑ·ß~[åµ?~\IIIZ¿~½6oÞ¬ÄÄD?~ÜYä½zõÒªU«tñâE­ZµJ½zõªÖ}Ô–@ª7Àî©Þ6lØ qãÆé™gžÑ!Cªu µ)êmÞ¼yÊÏÏ—$…„„èû￯úÔKÇ~ýúiìØ±êСƒÒÒÒ\¾PfÁ‚zíµ×£
+6háÂ…Îí›6mҍ7Þèò¬Mß¾}µfÍ=ùä“zå•Wôì³Ïêí·ßVçΝ]Þƒ~ß}÷)>>¾ZŸ•Ú¿¿:w‚5lØÐå¶Ç{L{öìÑÍ7߬={öhöìÙÕ¹K€ZHõVv¾]vHõ6{öl}÷Ýwzàœó?¾:wP+©ÞÚ·o¯;ï¼S:uÒ²eË”žž^»¨ŽY³f•}hjjªŽýk§&ÏN4Ýï奛u1?B3fÌðæ ²lÙ2}÷ÃçÔàÔà;Ôà;U©·+JZWú!RSS­}Å    `4Ž     S4Ž     S4Ž     S4Ž     S4Ž     S4Ž     S4Ž     Su¬˜ôÀÚ½{·S–ºå–[Ô½{wŸÎI½!XQo€ïPo€ïXQo’EãîÝ»õÑG©oß¾VLX"77W………>/tê
+Áˆz|‡z|Ǫz“,j%)>>^)))VMø\jjªNœ8aÉÜÔ‚
+õøõøŽ•õÆg    ¦h    ¦h    ¦h    ¦h    ¦h    ¦h    ¦h    ¦h    ¦h    ¦hk¨¸¸X‰‰‰–ÍŸ˜˜¨ââbË
 æ|‰z|‡z|‡zƒ?ð‹ÆÑáp”»}Ó¦MêСƒêÕ«§ØØXeff–{¬ÃáPhh¨¢££õî»ïºí3vìX<xP—.]RÏž=ÛOž<©Þ½{+,,L½{÷ÖÉ“'ݎݸq£ºví꼞‘‘¡öíÛ»­©¢µ:mܸÑeÌ%K–¸œsé9„„„¨eË–Z»v­ó¶.]º¸Ô„UõVzlEóKԏUõæÉøÔUõVQí”E½ÁøEãX‘M›6)##C………š8q¢FŽYî~†aèâÅ‹Z¼x±Æçv{II‰BBB´k×.uëÖ͹}Ú´iêÓ§
+
+
+Ô§OMŸ>ÝíØõë×+>>Þy}Ë–-Úºu«
+
+
+4{öl1¢Òµ¦§§Ë0IÒ¥K—ôÚk¯•{ÅÅÅZµj•yäçöøøx­_¿¾’{
+¨¹Ú®7Ã0œuPê
+Á¢¶ëÍ“ñ©7‹Ú®·Šj§,ê
+þÀ¯Ǎ7ªcÇŽ
+×€tå•Wšîêr=--M‡C«W¯VLLŒúöí«ôôtç³3™™™JNNVxx¸’““µmÛ6·1÷ìÙ£èèhçõW_}U­ZµRHHˆBCCÕ¢E‹J×Ú¹sg½÷Þ{’¤uëÖiРA¦çÑ´iSçåèèh}üñǦûÞPÛõæ	ê
+Á¢¶ëÍ“ñ©7‹Ú®·Šj§,ê
+þÀ¯ÇR§NÒ°aÔžž^îí‡Caaaš<y²–/_îÜžœœ¬üü|%$$È0%$$(//ÏùlM~~¾®»î:IRãÆuæÌ·±óóóÕ A·ùÂÃÃ5~üx—ù*ZëäÉ“5þ|†¡´´4=üðÃåžChh¨
+¤%K–8·7hÐ@ß}÷]ewà5µUož Þlj»ÞÌÆ§Þlj³ÞÌjG¢Þàü¾qܳgzöì©äädÝ}÷Ýåîc†._¾¬cÇŽièСÎí‡C5RVV–‡²²²Ô¸qc=÷Üs’¤ˆˆ>}Z’”——§ˆˆ·±5j¤¢¢"·ùΟ?¯eË–éþûï¯t­7Üpƒš7o®‰'ª]»vúùÏ^î9”””hÛ¶mš2eŠs{QQ‘®½öZOî* Æj³Þ<A½!˜Ôv½U6>õ†`RÛõVQ픢Þàüºq\±b…¬åË—kÔ¨QU>Þ0M™2EÙÙÙÚ¿¿Æ'Ã04qâDIRÿþý•––¦.(--M			nctëÖMGŽq^ONNv6›!!!:wîœGk:uª^xáMš4©Òu—Ž/IGU\\\ÕN¨†Ú®7OPoµ]ožŒO½!XÔv½UT;eQoðu¬^€§~ú9(Ã04aÂIÒÀÛϝ;çöR¿™;w*55UùË_Ô¨Q#—Û-Z¤ÄÄD]}õÕŠ‹‹SFF†Ûñ#FŒPNN޳Øbbb«¼¼<ÅÄÄhÆ
+’TáZKõéÓÇô-{¥ç߬Y3-]ºÔ¹=;;»ÂqÕeE½ýô›ßJç-‹zC ²¢Þ<ŸzC ²¢Þ*ª²¨7ø¿h+* O>UÙ>¹¹¹’¤„„·W¯¿þzíܹÓôø{ï½×埤¤$%%%y¼O¶›ÃÞ½{]Þj Ô”UõæÉøÔ
+õF½Áw¬ª·Šj§,ê
+þÀ/G;«[·n¹¯DúŠ•s¾F½¾C½¾C½Áøõg    µÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ʲ¿ã˜
 ››«X5=às999ŠŒŒ´dnê
+Á†z|‡z|ÇÊz³¤qŒUaa¡¾úê++¦,©îÝ»û|^ê
+Áˆz|‡z|Ǫz“,j{ôè¡=zX15t¨7Àw¨7Àw¨7À·øŒ#    À#    À#    À#    À#    À#    À#    À”%ÇñÀÚ½{·S–ºå–[|þG[©7+ê
+ðê
+ð+êM²¨qܽ{·>úè#õíÛ׊éKäææª°°Ðç…N½!Qo€ïPo€ïXUo’E£$ÅÇÇ+%%ŪéŸKMMÕ‰',™›zC°¡Þ ß¡Þ ß±²ÞøŒ#    À#    À#    À#    À#    À#    À#    À#    À#    À#    Àc
++11ÑêeT*11QÅÅÅV/¨ê
+ðê
+ðê
+þÀ/G‡ÃQîöŒŒµoß^õêÕSll¬233Ë=Öáp(44TÑÑÑz÷ÝwÝö;v¬<¨K—.©gÏžÎí'OžTïÞ½¦Þ½{ëäÉ“nÇnܸQ]»vuÛ>wî\—uW4Ö| ¶mÛ*,,LýúõÓ7ß|#I*))ÑܹsÕ¢E…„„8Ç*;æáÇնm[½øâ‹.碖-[jíÚµÎ}»t颍7–{?eYUo¥ÇV4¿D½!ðXUo›6mR‡LǧÞh¬ª7OƧÞàü¢q¬È–-[´uëVhöìÙ1bD¹û†¡‹/jñâÅ7nœÛí%%%
+		Ñ®]»Ô­[7çöiÓ¦©OŸ>*((PŸ>}4}út·cׯ_¯øøx—m{÷îÕK/½ä²­¢±ÆŒ£´´4êw¿ûs{JJŠ222´uëV]¾|Y†a¸Œ·}ûv
+2D+W®ÔC=är®ÅÅÅZµj•yäçöøøx­_¿¾ÜûðDm×›anÿΊzC°¨ízÛ´i“222TXX¨‰'jäÈ‘nÇRoµ]ožŒO½ÁÔ±z5ñꫯJ’.^¼¨ÐÐPµhÑÂtÿÐÐP—ëiiiš2eŠ$iõêÕÎíééé2C™™™úôÓO®ääduìØÑmÌ={ö(::ÚyýÂ…JJJÒºuëÔ¯_?çöŠÆ*))‘ôßg~þô§?I’V¬X¡çŸ¾Ü9׬Y£¥K—jÛ¶mŠŒŒ¬ð|›6mê¼­?þ¸Â}ÊÔv½y‚zC°¨íz+ûŠÁ€ôôÓO»I½!XÔv½y2>õàׯ8Jÿ)ððp?^Ë—/¯pŸ°°0Mž<ÙeŸäädåçç+!!A†a(!!Ayyyαùùùºîºë$I7Ö™3gÜÆÎÏÏWƒ
+œ×gÍš¥1cÆè¶ÛnsÛ¯¼±–/_®‡~X
+6Ô¶mۜۿþúkeffª~ýúŠŒŒtyKÄ£>ªiÓ¦•[ä¥o£4h–,YâÜÞ A}÷Ýwß‘€j³Þ<A½!˜ø¢ÞN:¥aÆ)==Ýmlê
+Á¤¶ë­²ñ©7ø¿o
+ÂiÞ    IDATÃÐùóçµlÙ2Ýÿýîsùòe;vLC‡unw8jÔ¨‘²²²äp8”••¥Æë¹çž“$EDDèôéÓ’¤¼¼<EDD¸Ý¨Q#9¯§§§kêÔ©nï!¯h¬¡C‡êĉ:þ¼n¿ývýüç?wîß¿9sFÏ?ÿ¼Æïœ#++KÉÉÉå¾UÀ0•””hÛ¶mÎg¿$©¨¨H×^{mew'`ª6ëÍÔ‚Im×Ûž={Ô³gO%''ëî»ïv›zC0©íz«l|ê
+þÀ¯Çäädgñ„„„èܹsU:Þ0M™2EÙÙÙÚ¿¿Æ'Ã04qâDIRÿþý•––¦.(--M			nctëÖMGŽq^/))qù¬VéÿÍÆ2CŸ}ö™¦OŸ®|PÒÞ:$Éí†$ÅÅÅ)++K3f̨ðY1IÎûF’Ž=ª¸¸¸*Ý?@Yµ]ož Þ,j»ÞV¬X¡Áƒkùòå5jT¹cPoµ]ožŒO½ÁøÍgú
 MX†a(&&F±±±ÊËËSLLŒ6lØPåqwîÜ©ÔÔTýå/Q£F\n[´h‘uõÕW+..NnǏ1B999•QEc•žW³fÍôàƒjÆŒ’¤Å‹ë¾ûîÓ=÷Ü£–-[ê•W^q¯C‡ÊÉÉÑ€töìYÍœ9Óm¼¥K—:÷ÏÎÎ.÷Ë€òXQoeç,½üÓ·ÕQoDVÔÛ„	$Itn;wîœË[å¨7"+êÍ“ñ©7ø¿h+úTRR’’’’ªul©ÜÜ\IRBB‚Û+Š×_½vîÜizü½÷Þ[á³µeç®h¬ŠÖ×¼ysegg›î¥/¿ü²Ò±¤ÿ|3WÙ· ±ªÞ<ù¬#õ†@C½•¿?õ†Ú`U½y2>õà£Õ­[·ÜW"íÆÖT†z|‡z|‡zƒ?ðëÏ8    j#    À#    À#    À#    À#    À#    À”eÇ177W,°jzÀçrrriÉÜÔ‚
+õøõøŽ•õfIã«ÂÂB}õÕWVLX"22RÝ»w÷ù¼Ô‚õøõøŽUõ&YÔ8öèÑC=zô°bj èPo€ïPo€ïPo€oñG    €)G    €)G    €)G    €)G    €)G    €)G    €)KþŽã´{÷n+¦:·ÜrK¥$”<|Ç“<¼|}‡z³ê-°QoöB½6êÍ^¬¨7É¢Æq÷îÝú裏Էo_+¦¹¹¹*,,¬ôyø†§yxùúõf/Ô[`£Þì…zlÔ›½XUo’E£$ÅÇÇ+%%ŪéƒBjjªNœ8áѾäQûª’‡·‘oí£Þì…zlÔ›½Poz³+ëÏ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8ÖPqq±}>obb¢Š‹‹}>¯Ý‘G`#_{!ÀF¾öB|í…<Ê獣Ãá¨p{éfÇ:…††*::Zï¾û®Û>cÇŽÕÁƒuéÒ%õìÙÓ¹ýäÉ“êÝ»·ÂÂÂÔ»wo<yÒíØ7ªk×®Îë%%%š;w®Z´h¡·µÍ;×e[ÙˇVÛ¶mõâ‹/º¬=$$D-[¶ÔÚµkûvéÒE7n¬ð¼k“Uyx2~0æ
 ámVå»iÓ&uèÐAõêÕSll¬233ÝŽ
+Æ|­Ê###CíÛ·'ZfU¾¥~šIYÁ˜¯~¿‘Gí±*ßʲ’‚3_»Ô[ãÆÝŽ
+Æ<<ácEÐaíwñâE-^¼XãÆs»½¤¤D!!!Úµk—ºuëæÜ>mÚ4õéÓGêÓ§¦OŸîvìúõë>’’¢ŒŒmݺU—/_vYßÞ½{õÒK/•»ÆíÛ·kȐ!Z¹r¥zè!—µkÕªUzä‘GœÛãããµ~ýúJÏÝ—j;OÆ'ÚSÛùnÚ´I*,,Ôĉ5räH·cÉ÷¿j;-[¶hëÖ­*((ÐìÙ³5bÄ·cÉ£öÔv¾’y&ù–å‹<Jç¨hò¨=µ¯YV¥È÷¿|õxÒ0íܹS¿ýíoÝŽ%òùuãXU¡¡¡.×ÓÒÒäp8´zõjÅÄĨoß¾JOOw>K™™©ääd…‡‡+99YÛ¶mssÏž=ŠŽŽv^_±b…/^¬Ž;º<ÛpáÂ%%%iݺunc¬Y³F3fÌжmÛÔ·oß
+×ß´iSçåèèh}üñÇžŸ¼
+U5O‡}T5ߍ7ªcÇŽ
+×€tå•WºI¾ÕWÕ<^}õUµjÕJ!!!
+
+
+U‹-ÜÆ$û¨j¾f™”"ßê«Îï·k®¹F
+4Ð]wÝ¥'N¸IöQÕ|+ʪ,ò­¾š<ž|æ™g\·RäQ¾ h‡ÂÂÂ4yòd-_¾Ü¹=99YùùùJHHaJHHP^^žóY„üü|]wÝu’¤ÆëÌ™3ncççç«AƒÎë_ýµ233U¿~}EFF:_:Ÿ5k–ÆŒ£Ûn»ÍmŒG}TÓ¦MSddd¹k
+
+Õ Aƒ´dÉçö
+è»ï¾«Þb±êæá	ò°^Mó=uꔆ
+¦ôôt·±É·êj’‡ÃáPxx¸Æïrl)ò°^uó5ˤùV]uó0C:~ü¸nºé¦rßqAÖ«n¾eUùV]MoìØ±C5R³fÍÜÆ&òEãh†._¾¬cÇŽièСÎí‡C5RVV–‡²²²Ô¸qc=÷Üs’¤ˆˆ>}Z’”——§ˆˆ·±5j¤¢¢"çõˆˆõïß_gΜÑóÏ?¯ñãÇK’ÒÓÓ5uêTç³eŸ­ÈÊÊRrrr¹/M†¡’’mÛ¶MS¦Lqn/**Òµ×^[“»Å2ÕÍÃäa½šä»gÏõìÙSÉÉɺûî»ÝÆ&ߪ«I†aèüùóZ¶l™î¿ÿ~·±ÉÃzÕÍ×,“Rä[u5ýýÖ¤I=ùä“Ú»w¯ÛØäa½š<ž,/«²È·êjZosæÌq¹/Ê"òEãXÃ04eÊeggkÿþý7nœÃÐĉ%Iýû÷WZZš.\¸ ´´4%$$¸Ñ­[79rÄy}À€’äö¨¤¤Äå=ÛeŸõˆ‹‹SVV–f̘Qî³ú¥J›XI:zô¨âââª{ê¶TYž ûª,ß+VhðàÁZ¾|¹FUîäë=•呜œì¼BBBtîÜ9·1Èþ*Ë×,“Räë=žþ~;{ö¬æÏŸ¯ØØX·1Èþ*Ë·¢¬Ê"_ïñ¤Þ>úè#ë–[n)wò(_«੟™aå~{QUÞÖ(I;wîTjjªþò—¿¨Q£F.·-Z´H‰‰‰ºúê«§ŒŒ·ãGŒ¡œœgÈ‹/Ö}÷ݧ{î¹G-[¶Ô+¯¼âÑ::tè œœ
+0 at gÏžÕÌ™3]ΫY³fZºt©sÿìììrßÊâ+VäáÉøÁš‡·Y‘ï„	$Itn;wîœË[E‚5_+òˆ‰‰Qll¬òòò£
+6¸¬yx›ùz"Xóµò÷[xx¸zõêUî祂5o³"_O²
+Ö|­úù7gÎ%''Wx|°æQ¿h+úÇâé7.™ÉÍÍ•$%$$¸½¢xýõ×kçΝ¦Çß{ï½.¯Ž4oÞ\ÙÙÙ¯©ì娨(}ùå—­}ïÞ½¾¼^Û¬ÊÓñƒ1o#_wÁXoIIIJJJ2=>óð6«òõdœ`Ì—Ÿî¨7Ïö1Ëד¬‚1_+þ}øá‡¦Çcžð‹ÆÑÎêÖ­[î+‘µÍŠ9ýy6òµòläk/äØÈ×^È£|AýG    @åh    ¦h    ¦h    ¦h    ¦h    ¦h    ¦,û;޹¹¹Z°`UÓ…œœEFFz´/yÔ¾ªäámä[û¨7{¡Þõf/Ô[`£ÞìÅÊz³¤qŒUaa¡¾úê++¦‘‘‘êÞ½{¥û‘‡oxš‡·‘¯oPoöB½6êÍ^¨·ÀF½Ù‹Uõ&YÔ8öèÑC=zô°bj”ƒ<ùÚy6òµòläk/äøøŒ#    À#    À#    À#    À#    À#    À#    À”%ÇñÀÚ½{·S[n¹¥Ò?J¾ãIÞF¾¾C½Ùõب7{¡Þõf/VÔ›dQã¸{÷n½ÿþûêÔ©“ӍÏ>ûL………•þÃ"ßð4o#_ß Þì…zlÔ›½Poz³«êM²¨q”¤N:iüøñVMÖ¯_ïñ¾äQûª’‡·‘oí£Þì…zlÔ›½Poz³+ëÏ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LùEãh†Þ|óM=Z·ß~»F¥?ýéOµ2W¿~ýÔ¯_?%$$hôèÑÚ±c‡Û>‹-Ò—_~©ââbMœ8ѹ=//O“&MÒí·ß®I“&)//¯VÖh5É£ôØ~ýúÕÊÚ•¿ä›““£1cÆèöÛo×øñãµoß¾ZY£Õü%?üP<ð@Àçámþ’o©5kÖôÏTÉ£ìï·@ÎÃÛü%_Ã0´fÍ
+>\			›±¿äñÓz2dH­¬ÑÔ±zžØ´i“¶oß®'žxB­[·Ö·ß~«µk×ê¿øE­Ì·}ûv]¾|Y»wïÖ¢E‹Ô«W/—Û
+ÐÃáÐgŸ}¦öíÛ;·/[¶L7ß|³/^¬5kÖhÙ²e
 úýï_+k´’¿ä±}ûvI
+ظµÅ_òÍÎÎÖþðµhÑBÛ¶mÓÓO?­·ß~»VÖh%É#77W.TÆ
+µk×.Í›7Oï¼óN­¬1øK¾’ôÅ_èý÷߯•uÙ…?åQú;žó—|×­[§?üP.Tdd¤G­¬Ïjþ’GÙZûì³Ï”››[+ëó~Ñ8¾óÎ;zúé§%IjÞ¼¹f̘á¼ýÈ‘#Z¸p¡Nœ8¡V­ZiæÌ™jÛ¶­úõë§{î¹G›7oÖŸÿüg8qB‹-Ò‘#Gô³ŸýL3fÌPÇŽ+œ7$ÄõÙ7ß|SÏ?ÿ¼$¹<#òÖ[oiûöíÚ·oŸV­Z¥zõêéW¿ú•’’’¼y7؆¿äêñ—|çÌ™ãÜÖµkW­]»Ö+ço7þ’Çc=&Iºté’BBBÔ¸qc¯ÝÌ_òýñǵhÑ"=þøãš:uª7ï[ñ—<$é®»îRII‰bcc5yòd5mÚÔk÷C ò—|·l٢ɓ'«uëÖÞ<}Ûñ—<ÊZ»v­~÷»ßÕøÜý•_¼UõôéÓjÕªU…·/\¸PwÞy§6oÞ¬;ï¼S,pÞÖ®];ç?‚ÔÔT
+<X[¶lÑĉµhÑ¢rÇëׯŸn¿ýv=÷Üs.¿ ‡
+¦wß}W;wÖöíÛÕ¹sg½óÎ;ÎT………jذ¡$éšk®Ñ¹sçj|îvä/y zü-ßüü|Í™3G>úhMNÛ¶ü)~ýúiàÀZ²dI at 7Þä/ù®X±B¿øÅ/ëÓ¶-Écûöízÿý÷õú믫U«Vš7ož7N?àùK¾§OŸÖ¾}ûtÇwhäȑ徭2øK¥>ýôS]uÕUºöÚkkrÚ~Í/^q¼îºëôü£Âg^Nœ8¡Aƒ),,LwÜq‡^xáçm			ÎgŽ;¦8ÿáUôÒEGÙ·<–^2dˆ&Mš¤!C†èª«®ÒÙ³g¡‚‚]uÕUU?Y?à/y zü)ßÿû¿ÿÓSO=¥1cÆèÖ[o­â™úÊcûöíºxñ¢víÚ¥””½öÚkU<Ûàã/ù¾õÖ[2Ã9¿~ýòI:É£TÆ
+õ›ßüFƒ®ÂY/É÷ª«®R—.]4aÂíÛ·O.t{[e ð—<J­^½Z>ø`Î0ðøEã8dÈ-\¸PS§NUTT”¾ùæ­]»ÖùrvË–-õç?ÿY·ß~»þ÷ÿ×åÙ‹ÐÐPçå6mÚhȐ!ŠWXXX•×±}ûv½ðÂêÕ«—êׯ¯÷Þ{Ïååê.]ºè7
 ÞÐ< 7ÞxC;w®ÁYÛ—¿äêñ—|·lÙ¢—_~Y³gÏV×®]kpÆöæ/y<ÿüóúõ¯­+®¸B‡CçÏŸ¯ÁYÉ7++Ëy9P›FÉò(UTT¤7ê†n¨ÆÙÉ·K—.’*n€…¿ä!I‡ÒåË—Õ¶mÛjžm`ð‹Æqøðá
+
+
+ÕSO=¥o¾ùFM›6Õ¨Q£œ·OŸ>]‹-RzzºZµjåòþè²üq¥¥¥éü£~üñGIUÿpùáÇ5aÂ:tÈíÅ|PO=õ”îºë.µk×NøÃªx¦þÁ_ò(ï¤@}°ãMþ’ï’%K$Éeþ-[¶èŠ+®¨Òvç/yDEEiüøñ*((Ð
+7Ü 'žx¢Šgœü%ß`á/y”þN«W¯ž:vì¨Ç¼Jc+É÷¡‡ÒÓO?­?üájÒ¤‰fΜYÅ3õþ’‡ôŸW‡
+V¥1‘cÖ¬YFJJŠéN©©©:ö¯š<;Ñt¿——nÖÅüˆ
+ƒ-µlÙ2ýóŸÿÔøñ㫼`xnýúõ
+
+
+%›¨Jßýð9õæg¨7{¡Þõf/Ô[`£Þì¥6ê튒Öò¤ô‹/Ç    X‡Æ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ªŽÕ0óÙgŸéàÁƒV/Önºé&uêÔɧs’GŬÈÃÛÈ·bÔ›½Poz³ê-°Qoöb÷z³uãxðàA}òÉ'êÛ·¯ÕK±•ÜÜ\ùüy”Ϫ<¼|ËG½Ùõب7{¡Þõf/þPo¶n%)>>^)))V/ÃVRSSuèÐ!Kæ&wVæámäëŽz³ê-°QoöB½6êÍ^ü¡ÞøŒ#    À#    À#    À#    À#    À#    À#    À#    À#    À#    À#    ÀT at 5އC‡C¡¡¡ŠŽŽÖ»ï¾ër[yûWuœRcÇŽÕÁƒuéÒ%õìÙÓ¹ýäÉ“êÝ»·ÂÂÂÔ»wo<yÒgæŸìÇ¦M›Ô¡CÕ«WO±±±ÊÌÌô™A²G¾¥æÎ[áøÁÂy”””hîܹjÑ¢…BBB‚>o²C¾o½õ–Ú´i£:uêè†nÐ[o½å…3óOvÈ£ôØŸŽÍ㐚³s¾Áø¸ÆÎy”
+–Ç!Õ8J’aºxñ¢/^¬qãÆÕÚ8%%%
+		Ñ®]»Ô­[7çöiÓ¦©OŸ>*((PŸ>}4}úôj¯!XÇ¦M›”‘‘¡ÂÂBMœ8Q#GެöàÎê|%iïÞ½z饗ª=w ±:””eddhëÖ­º|ù²èöàÎê|“’’´téR}ÿý÷JOOר±c«½†@`u†a”[c<ñ»æ¬k욇\C®q,Z+㤥¥ÉáphõêÕŠ‰‰Qß¾}•žžî|–!33SÉÉÉ
+Wrr²¶mÛæ•uø;«òظq£:vì¨ððp
+0 at W^y¥WÖWVå{áÂ%%%iݺu^™?PX•ÇŠ+´xñbuìØ1(žyµŠUù¶jÕJҟ͏ŒŒôÊ:üUyT„Ç!Þe·|ƒýqÝò¶Ç!×8:………iòäÉZ¾|¹×ÇINNV~~¾d†”——ç|"??_×]w$©qãÆ:sæLÍNÈÏYG©S§NiذaJOO¯öàÎê|gÍš¥1cÆè¶Ûn«ñ¹«óøú믕™™©úõë+22²Ü·¡ú¬Î÷¥—^ÒÈ‘#¦_ÿú×Z¶lYÏÉŸYGExâvÍ·T°=®±kÁö8¤ŽÕð¶ŠSQQ‘4h I***Rxxx•Ç)ûÌCéåÆkéÒ¥š8q¢"""túôi5mÚTyyyŠˆˆ¨î©«ó¤={ö(11QóæÍÓÝwß]­ó@ù¬Î7==]†ahêÔ©Î}‚ùí‘Vç¡þýû+55U™™™3fŒ~ùË_V÷tðVç{ÿý÷kýúõêׯŸ2335zôh}ñÅÕ=¿guáqˆwØ5_)8ר5`{p¯8V¤wïÞš?¾ŠŠŠTTT¤ùóç«OŸ>UÇ0M™2EÙÙÙÚ¿¿Æ'Ã0œÿ¨ú÷ﯴ´4]¸pAiiiJHHðö©_å±bÅ
+
+<XË—/רQ£¼}¨€¯ò-))qùÜA ÿ°®	_å1`À Iÿý¥ËÛU}ÃWùæååIúo®¥×áÊWyT„Ç!µËê|y\ãÊê<‚íqHÐ4Ž+W®Ô¾}ûÔ¤I5iÒDû÷ï×Ê•+«5ÖΝ;Õ³gOåçç«Q£F.·-Z´H999ºúê«õÑGiñâÅÞX~ÀñU&Lзß~«:¿
+«¨¨È§ ¾ÊžñU‹/Ö¢E‹Ô AMž<Y¯¼òŠ7–Jø*ßåË—ëá‡Výúõõ裏Í—AT•¯ò(û
+e/ó8¤vY/k\YG°	¨·ªšuù‘‘‘ÚºukÇ‘¤ÜÜ\IRBB‚Û3y×_½vîÜéÑ<Îyú3?V²C¾U'ÐÙ!æÍ›+;;Û£yP5vÈwøðá>|¸Gó:;äQѱ<©9;猿ëìœGU÷ñwAóŠ#     zh    ¦h    ¦h    ¦h    ¦h    ¦h    ¦h    ¦êX½ 3ß~û­²²²tðàA«—b+_~ù¥®¿þzŸÏKå³*o#ßòQoöB½6êÍ^¨·ÀF½Ù‹?Ô›­Çââb5iÒD111V/ÅVΟ?¯Ë—/û|^ò(ŸUyxù–z³ê-°QoöB½6êÍ^ü¡ÞlÝ86oÞ\7ß|³RRR¬^Š­¤¦¦êСC>Ÿ—<ÊgUÞF¾å£Þì…zlÔ›½Poz³¨7>ã    0Eã    0Eã    0Eã    0Eã    0Eã    0Eã    0Eã    0Eã    0Eã    0Eã    0P£ÃáÃáPhh¨¢££õî»ïºÜVÞþU§ÔرcuðàA]ºtI={öt;¶¢±ƒ‰òÈÈÈPûöíU¯^=ÅÆÆ*33ÓgÉù–­·`¯9;æÑ¸qc/œ${äûÁ¨mÛ¶
+S¿~ýôÍ7ßxáÌü“ò¨èg?kÎÎùãã;çlCªq”$Ã0tñâE-^¼XãÆ«µqJJJ¢]»v©[·n.džQíyÕylÙ²E[·nUAAfÏž­#FT{
+pgu¾¥ÇRwÿaue³Ø¹s§~ûÛßV{
+pgu¾cÆŒQZZš
+õ»ßýNÓ§O¯öÕyTôsŸ‡Þa×|ƒõq]ó({[0Ô]À5Ž¥BCCkeœ´´49­^½Z111êÛ·¯ÒÓÓƒâY†š°*W_}U­ZµRHHˆBCCÕ¢E¯¬®¬¬·k®¹F
+4Ð]wÝ¥'NxeþÎ?ÿžyæ=òÈ#^Y\Y•oII‰¤ÿ>›ÿ§?ýÉ+ëðwv¨7Ô»åìkì–‡\C®qt8
+ÓäÉ“µ|ùr¯“œœ¬üü|%$$È0%$$(///(že¨;äáp8®ñãÇ×h
+pgu¾†a¨  @Ǐ×M7ݤ‘#GÖøœü™Õy”Ú±c‡5j¤fÍšU{
+pgu¾Ë—/×Ã?¬†
+jÛ¶m:sæLÏÉŸYj—ó
+ÆÇ5vÍ#؇ԱzÞVQÀaaa***Rƒ
+$IEEE
+¯ò8eŸy(½Ü¸qc-]ºT'N¬î²–ò0C?üðƒ6oÞ¬ûï¿_G­Ö¹Àò•¤&MšèÉ'ŸÔ5×\Sås$vÉcΜ9Z´hQ•×sVç;tèP
+:TÒ>ïXÞ烂‰Õy vÙ9ß`|\cç<¤àyp¯8V¤wïÞš?¾ŠŠŠTTT¤ùóç«OŸ>UÇ0M™2EÙÙÙÚ¿¿Æ'Ã0ø!^E¾Ê#99Y§OŸ–$…„„èܹs^=”Ï×õvöìYÍŸ?_±±±Þ:…€âË<>úè#ë–[nñæ)À„/ó5CŸ}ö™¦OŸ®|Л§0x¼جΗÇ5®¬Î£T°<	šÆqåʕڷoŸš4i¢&MšhÿþýZ¹reµÆÚ¹s§zöì©üü|5jÔÈ嶲ߪ,ß°T¾Ê#&&F±±±jذ¡,X 
+6xcù¨„¯ë­Y³fÚµk—Ö­Ä~ 9    IDAT[çå_å!ýçÕÆäääš.UàËz		Qÿþýuï½÷jÆŒÞX~À±úñCj—Õùò¸Æ•ÕyÛ㐀z«ªÙû###µuë֏#I¹¹¹’¤„„%$$TéØ`b‡<’’’”””äÑ<¨;äK½ý—ò¤?üУyP5vÈ—zû/;çAN5gç|ƒñqó¶zšW    ÕCã    0Eã    0Eã    0Eã    0Eã    0Eã    0Eã    0UÇêT&77W,°z¶’““£ˆˆKæ&wVæámäëŽz³ê-°QoöB½6êÍ^ü¡ÞlÝ8Þxã***ÒÁƒ­^Š­DDD¨S§N>Ÿ—<ÊgUÞF¾å£Þì…zlÔ›½Poz³¨7[7ޱ±±ŠµzøÈ#°‘¯½G`#_{!ÀF¾öBþ‹Ï8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LÑ8    LYöw?ÿüs­_¿ÞªéƒÂÁƒÕ¹sgö%ÚW•<¼|kõf/Ô[`£Þì…zlÔ›½XYo–4ޱ±±*,,´bê Ò¹sguïÞ½ÒýÈÃ7<ÍÃÛÈ×7¨7{¡Þõf/Ô[`£ÞìŪz“,j{ôè¡=zX15ÊA|í…<ùÚy6òµò||Æ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `Š
 Æ    `ÊëÇñoû›–-[æía ±{÷nµ‰¹Ú£}©7 f¨7Àw¨7ÀwªRožòjãÓ¥ÎžWÞùϽ9,Tn¸ùjuíyc¥ûQo@ÍQo€ïPo€ïxZoUáÕÆ1îÖw«w |Ôà;Ôà;Ô`O|Æ    `ŠÆ    `ŠÆ  üÿìÝ}\TuÞÿñ÷€	™[B¦©›"
+™â=¦þ ÑÚÜì*[CK»VÔlËM͵«ÔÚļ–PÔLMѲs7W4°ŸŠæÍj™›wå–»–†‚dšÀüþðÇ$
+朙y=æÜ|Ï÷Ì{>ÎùÌ
+  `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `Èå¿ã¸÷-™¿®6ç    ð]Ûªw÷–.mëR㣳gÏJÅW5/    €Eôê¦ØØX—¶u©qŒ‹‹S\\ÜÕÌ	    à¥øŽ#    À#    À#    À#    À#    À#    À#    ÀKÇ1//O¹¹¹µ=    €ÅÄÄ(66¶Êí\jsrr”ùÖëêÒã¶«ž    À|ûwÑÙ³gÝ×8JR×;nÓØ)	W51    €5¼>oTêÚ¶|Ç    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `Èå¿ãèŠý»h×öƒî    PMQ[«KÛÜ6ž[ÇO¶ÔÖ¿R¯îÝÝ9,    ÀEŸìÝ«s…ç­Û8JR¯˜îš:i’»‡    ¸ õµt}ó£{?	Êw    †h    †h    †h    †h    †h    †h    †h    †h    †h    †hÝ ¤e¸ÙSp(.)Q☧L9v☧T\Rbʱ   ÔSǐ–áúË[o9-«èçÊÖ¿³~}¹õó-vÚ/;'G!-Ãõá¦MÕ:~mi®–ằUku¹³þºq£Ó6O=û¬>;xP—Š‹ÕoàƒNûÍñÝÖ+:êvÇíµ| nñ}Õ("R½ûÿV9[·ŽUZZª?¿úš:ôþ?j©n}ûiÕÚµNs
+o¥öwôÔêwßu¬ëp{{½ûAù<    x?Óßq\µö}}âD÷ÏXºTv»]’t©¸XYï¼ã´Í¢7ßÔ€ßÜ­Åo®pûñkâÌ—Çôí¡/ôÒsSôô³“Ö—–Ú OöìQçÊíwæËc†c¿õþûêã¸ý÷ÍéíåËô¯O÷kü“OhÄSOŽ•úZº>ܼI«^_¬?×_-TîÖmNó?}ä°æÏ™­	Ï¿àXÞ+&Fo½ÿ¾kw    ¯azã8gú4{îTZZZ£ý;´k¯¿egK’Ö¼û®úÝWn
 ýñ¯¿Ö7'þ­%óçëßÿù¾ú׿\>þ?>ýL½î鯛ZG¨×=ýµÿÀIÒ®üC]î죦mÛiú¬ÙŽí9¢»üEDªkŸxíØµÛpån¿¶d‰ã]О¿¹G¿M¬Œ¥K«õ.èž}ûÔºeKÇíôÿ«[š5“- @jÒ¸±áþoüå/š?k–n‹ŒÔ5uê¨uË–zmnJ¥Û7jØÐñsë–-µwÿ~—ç
+   À;˜Þ8Þ¡>½{ëÕ×—ÔhÿLJ×ÿ.xUv»]¯-yC#‡
++·~ÉŠ•šøôSª¨IcŸÖ’+]>þ“'êÑÁ	:¾Ÿœ '&L”$üGý!1QGwïR“›nÄþðÌ
+xˆ¾>ð™’_x^O=ûl…si®Æ‘·jò‹Óõç3~Þ?1Q_þc¯b{Þ¡3_SlÏ;ttÏî*ße¼Ò™³gu]½zNÇ»ùÖ6ûÇ?*uÆË†ûŸüö[…‡…9ö«èã¬eµ}è÷Ãõ§ÿyαüºë®Sþ™3.Ï   €w0½q”¤?$WÎÖ­úç¡Ãå–Õ­«ΟwÜþáüy•Û¦e‹æº¹qcMœ:UáájzóÍŽu/^ÔŠ5k4üÉ1
+i®áOŽÑŠ5ktñâE—ŽèÈ=š zõêiè AúâðaÇòGýN×^{­†=ôcûýè‰	uó­m4hx¢Ž|ùe…ç{æËcúþèíÉÉÑ€ßÜíXÒ2\-£;*wë6…´WîÖmjÕ©³-_îÊÝxyŒ
+ÊÝgeÇûÏÁÏõ¿/ÿI£Ç7Ü¿q£Fúêë¯ûUÔ´žùò˜òÕ;+ÞÔ”—^r,ÿá‡âò\   xK4Ž6›M~ùOzæùçË-éÚEs,ÐçÏë‡óç5wÁÝѵ«ÓþOŽ¡×ß\¡Ñ¿ÿ}¹åo¯[§N:8 3_Sçèh½½nKǏhÕJ™o¿­üQ+֬ѭ’¤ÈÖ­•ùöÛºpá‚þòÖÛŽíooÛV¯¦ÌÑ¿??àh®ªãÌ—ÇôĈD}°*S¹¬Ó£		:óå1zôQ—ÇèÔ¡C¹†õ/¾¤Óùù’¤€€ ýðƒáþÃÒøçžÓѯ¾RII‰Ž?n¸ýéïó?ýê+uŒŠry®    ¼ƒ%GIº¥Y3=2èw喥͜©}Ÿ~¦Ö»¨uç.Úÿ٥͚é´o®]uæËcêÞ¥s¹å‹—¿©Ç~Ñt=öè£z½‚_’SÑñçÍž¥EËßTóÛ£´,s•æÏ¾ü}ÆWf&kÁâ×Þ©³¾ù÷¿Û/J{EYï¼£–;UùÛO+³s÷uíÔIgÎ(¤Aƒr뮳²ñ0@[wìpÜnצz÷ÿ­ZDuÐ+¯¥ëõyi†cM3F1]ºjÀ‡uó­môð¨Ç´ø•WœæÞJ#ž«ÙÓ§9–ÿß¼<ýî¾ûª}Î    ¬Í6yòd{rr²áF3gÎÔ‘oÓØ)	†Û½>olgB4uÒ$wÎÕp©¸X£“ÆiÉüy?v☧´ð•TÕ	¬zc    µ"õµt}óãA—ú·kK[Ê•~°Ž;'ó]S§Ž)M£$ÓŽ    vY棪     k¢q    ¢q    ¢q    ¢q    ¢q    ¢q    rûßqܵ÷JMOw÷°     üß;u½[ÇtkãÕ¹µÎž××?tç°     µ¸ýzuéq›[ÇtkãØõŽÛÔõ÷N    `.¾ã    0Dã    0Dã    0Dã    0Dã    0Dã    0Dã    0äÖ¿ã¸÷íÚ~НC~)ªsë*ÿh+õ¸õxõxŽ
 +õVnm?ÙvP[þvHÝ»wwç°€_Ù»w¯Îž¯²Ð©7àêQo€çPo€ç¸ZoÕáÖÆQ’ºwï®I“&¹{XÀo¤§§ëû]{¥•z®õxõxNuêÍU|Ç    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `È'Çððp³§ ø
+ê
+ðê
+ðê
+0fj㘛›«{î¹G‘‘‘Š×ûï¿_ëÇ4úO!<<\ááájݺµúô飍7:móì³ÏêàÁƒ*..Öƒ>è´þ•W^á?X’/Õ[Ù¾eÿ «ñ¥z+--Õ+¯¼¢=z¨U«VÔ,Ç—êí—Ïo;w®•ù5ajã8~üx5JŸ~ú©–,Y¢Í›7›9IÒ±cÇôÅ_hÊ”)š<y²Óz»Ý®€€ íÙ³G:t(·îÓO?Uff¦§¦
+T‹¯ÕÛ±cÇÿ «ñ¥z{íµ×ôÁhÙ²e:rä5Ëñ¥z»ò¹í­·ÞÒÃ?ìÉi†Lm4h S§NéÀºé¦›”ššêX÷ÙgŸ©ÿþŠˆˆPÿþýuàÀIҁ4`À EDD8½Ú³uëVuëÖM«W¯Ö‘#Gô»ßýÎñêÓîݻۻò.E```¹ÛK–,Qxx¸Þzë-ÝsÏ=<x°–.]êçâÅ‹š4i’þüç?_õýÔ_ª7IŠŠŠRûöí5bĝ8qâªîÀÝ|©ÞV­Z¥)S¦(22R6›íªïÀÝ|©Þ®´`Á
+6¬F÷	PLm/^¬o¾ùF/¾ø¢zô衵k×:ÖMœ8Q			Ú·oŸ4qâDÇòêÀå^õ|çw4uêT½ñÆz衇4aÂ
+2DŸ}ö™žþy=û쳎íÞ¥×­·ÞªéÓ§kÆŒŽå‰‰‰Ú»w¯î¸ã;vLwÜq‡vïÞígöìÙ4hzôèáöû	p_ª·cÇŽiÿþýÊÍÍUDD„ÆŽëöû¸¾To'OžÔÖ­[Õ¶m[õîݻÝfò¥z+³{÷n5hÐ@5rÛý\-ÛäÉ“íÉÉɆÍœ9SGþ½Mc§$n÷ú¼uº˜¢I“&U{"‡Ґ!C´{÷nIRDD„>ýôSëüùóêСƒ>¬ˆˆíß¿_×^{­cßððpÕ©SG.T\\œcÿ’’’ŸOÔfÓÑ£GnXäFë*2mÚ4=úè£jÕª•ìv{¹u|œ5‘žž®ï<H½U ¬Þ®táÂEEEéСC.Ÿ?P†z«ºÞ:w”õìÙS[·nÕĉµk×®jß õæúóÛСCõÇ?þQíÚµ«ÖùeªSo×–¶”+ý ©ï8Ž7N_}õ•~úé'}ñÅ*--u¬kÕª•Þ~ûmýøãZ³f"""$I‘‘‘Zµj•~úé§rc-Z´H'NÔ†
+$ImÛ¶Õœ9s¯$=zT’T§N}÷ÝwÕžë±cÇ”˜˜¨ÌÌL­[·N			:v옣ȏ=Zî•'šFX/Õ[™ÂÂB½úê«jÛ¶mµÔ&_ª·^½zI’ãcª|\VãKõ&I;wîTII	M#,ÇÔÆ±OŸ>1b„Úµk§ÔÔÔrî¬Y³ôæ›o***J«V­ÒìÙ³Ë׬Y£Ûn»­Ü«6±±±Z¶l™¦OŸ®7ÞxC¯¼òŠÞyçuêÔ©ÜgÐ~øaÅÅÅÕè·ÂíÙ³G
 :uRAA4hp•gx–/Õ[Ù1ºwï®={ö”û>`¾ToS¦LÑÂ…Õ®];MŸ>]sæÌ©É]Ô_ª7IJMMÕðáë=.PÛ,óQU —yâ£< .£Þ Ï¡Þ Ïñ¹ª    ¬Æ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `¨ŽÝ»w¯vìØaÆ¡SuìØQÝ»w÷è1©7ø+ê
+ðê
+ð3êM2©qܱc‡¶lÙ¢ØØX3˜"//O………/tê
+þˆz<‡z<Ǭz“Lj%)..NÉÉÉfð¸™3gêøñ㦛zƒ¿¡Þ Ï¡Þ Ï1³ÞøŽ#    À#    À#    À#    À#    À#    À#    À#    À#    À#    ÀãU*..VBB‚iÇOHHPqq±iÇ<‰z<‡z<‡zƒ7ðŠÆÑf³U¸|Íš5j×®êÖ­«èèheggW¸¯ÍfS`` "##õÞ{ï9m3bÄíÛ·O—.]R=œÖO›6­Ò9¬^½Z]ºtqÜÎÊÊR›6mœæTÙ\m6›V¯^]n̹sç–;^Ù9¨yóæZ±b…c]ç͝ö®†YõV¶oÙ¿ŠPoð5fÕ[ii©¦M›¦fÍš)   ÂyPoð5Vy~kذ¡Ó¾Ô¼W4Ž•Y³f²²²TXX¨1cÆhȐ!ng·ÛuñâE¥¤¤häÈ‘NëKKK íÛ·«[·nåÖíÚµK.¬t™™™Š‹‹sÜ^¿~½6lØ ‚‚M™2Eƒ®r®iii²Ûí’¤K—.éÍ7߬ðŠ‹‹µdÉ=ù䓎åqqqÊÌ̬t~€»x¢Þìv»ã_E¨7ø‹Ú®·äädeeeiÆ
+*))©°æ¨7ø‹Ú®·+ŸÛ¶mÛ¦ÇÜi_ê
+ÞÀ«ÇÕ«W«}ûö
+V¿~ýtÝu×nXîvjjªl6›–.]ª¨¨(ÅÆÆ*--ÍñêÌ…”˜˜¨•+WV:æÎ;鸽|ùrµhÑB
+T³fͪœk§NôþûïK’V®\©þýûžGãÆ?GFFê“O>1Üp‡Ú®7Iºá†T¿~}Ý{ï½:~ü¸Ó˜ÔüEm×Û¢E‹”’’¢öíÛWú.õá‰ç·2/¿ür¹†­õoàՍc™“'OêÁTZZZ…ëm6›‚‚‚4vìXedd8–'%%)??_ñññ²Û튏×éÓ§¯ÖLž<YÇםwÞYé±óóóU¿~}§ãkÔ¨QåŽWÙ\ÇŽ«3fÈn·+55UO<ñD…ç¨þýûkîܹŽåõë××÷ßopï îU[õf·ÛUPP cÇŽ©mÛ¶¾âK½ÁßÔV½}óÍ7ÊÎÎV½zõVáÇî¨7ø›Úª·2[·nUhh¨š4iâ46õoàõãΝ;Õ£G%%%é¾ûî«p»Ý®’’9rDt,·Ùl
+
+
+Õ¦M›d³Ù´iÓ&5lØPóçÏ—tù-ÿñãÇ;^1ªè•£ÐÐP9ïüùóJOO×°aêœk«V­Ô´iS3F·Þz«~ýë_Wx¥¥¥Ú¸q£ÆçX^TT¤o¼Ñ•»
+¸jµYoe5j¤éÓ§k×®]NcSoð'µYo!!!êÛ·¯Îœ9£hÔ¨QNcSoð'žx~›:uj¹Çø•¨7x¯n-Z¤(##CC‡­öþv»]ãÆSNNŽöìÙ£‘#GÊn·k̘1’.VýÊï[UônݺéСCŽÛIII:uê”$)  @çΝsi®ãǏ׫¯¾ª§Ÿ~ºÊy—/I‡V×®]«qÖ@ÍÔv½•9{ö¬f̘¡èèh§1¨7ø‹Ú®·~ýúI’á£Ôü…'žß¶lÙ¢ââbuìØ±Â1¨7xƒ:fOÀU¿|R³Ûízì±Ç$Iwß}·cù¹sçœÞê7²mÛ6Íœ9Sü±BCC«=¯Áƒ+77×QlQQQŠŽŽÖéÓ§¥U«VIR¥s-Ó»wïJ!ˆôóù7iÒDóæÍs,ÏÉÉ©ôKÜ@M™QoeÇVÏž=+ün1õ_dF½¥¤¤èá‡Ö< æÍ›ë7ÞpÚŸzƒ/2ëzrêÔ©JJJªtê
+ÞÀ+ÇÊ
+À¨0\Ý&//O’¯øøøjóÐC•{Å'11Q‰‰‰.ïïÊr£sصkW¥{ j¬zse|ê
+¾Æ¬zkÚ´©rrr÷§Þàk̼žü裏÷§Þà
+¼¢q´²k®¹FYYY¦ßÌcžF½žC½žC½Áxõw    µÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `È´¿ã˜——§Y³f™uxÀãrssfʱ©7øê
+ðê
+ð3ëÍ”Æ1::Z………úꫯÌ8<`а°0uïÞÝãÇ¥Þà¨7Às¨7Às̪7ɤÆ1&&F111fð;Ôà9Ôà9ÔàY|Ç    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `È”¿ã¸wï^íØ±ÃŒC¦êر£Çÿh+õE½žC½žcF½I&5Ž;vìЖ-[kÆáSäåå©°°Ðã…N½ÁQo€çPo€ç˜Uo’I£$ÅÅÅ)99Ù¬Ã7sæL?~Ü”cSoð7Ôà9Ôà9fÖßq    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q¼JÅÅÅJHH0{UJHHPqq±ÙÓ ®
+õxõxõoà£Íf«pyVV–Ú´i£ºuë*::ZÙÙÙîk³Ù¨ÈÈH½÷Þ{NÛŒ1BûöíÓ¥K—Ô£G§õÓ¦M«t«W¯V—.]ªÜçĉêÕ«—‚‚‚Ô«W/8qB’ô׿þU
+
+
+RŸ>}ôí·ßJ’JKK5mÚ45kÖLޱ®óÀŠˆˆÐk¯½Vî\Ô¼ys­X±Â±mçΝµzõê
+ϸ’YõV¶oÙ¿ŠPoð5fÕ[eù+Qoð5Vy~kذ¡Ó¾Ô¼W4Ž•Y¿~½6lØ ‚‚M™2Eƒ®p;»Ý®‹/*%%E#GŽtZ_ZZª€€ mß¾]ݺu+·n×®]Z¸pa¥sÈÌÌT\\\•ûL˜0A½{÷VAAz÷î­‰'J’†®ÔÔTê™gžq,ONNVVV–6lØ ’’ÙíörãmÞ¼Y÷ß¿/^¬?üáåε¸¸XK–,Ñ“O>éX§ÌÌÌJϨŠ'êÍn·;þU„zƒ¿¨íz«ê1/Qoðµ]oW>·mÛ¶M?þ¸Ó¾Ô¼A³'p5–/_.Iºxñ¢Õ¬Y3ÃíËÝNMMÕ¸qã$IK—.u,OKK“Ýn×…”˜˜¨•+WªOŸ>޹sçNEFF:nW¶Ovv¶>ûì3+))IíÛ·—tù?éçW~>üðCIÒ¢E‹´`ÁÇvWZ¶l™æÍ›§7*,,¬Òómܸ±ãçÈÈH}òÉ'•nT¥¶ëM’n¸á•””(..N,P‹-ʍA½Á_Ôv½=æËPoðžx~+óòË/kÑ¢ENcRoð^ýŽ£t¹@‚ƒƒ5jÔ(eddTºMPPÆŽ[n›¤¤$åçç+>>^v»]ñññ:}ú´£È'Ož¬áÇëÎ;ï¬ôøùùùª_¿¾ãveûäçç릛n’$5lØPgΜ‘$eddè‰'žPƒ
+´qãFÇòo¾ùFÙÙÙªW¯žÂÂÂÊ}$â©§žÒ„	*,ò²Qôïß_sçÎu,¯_¿¾¾ÿþûJÏpEmÖ›ÝnWAAŽ;¦¶mÛjȐ!NcSoð'µYoFù2ÔüImÖ[™­[·*44TMš4q›zƒ7ðúÆÑn·ëüùóJOO×°aÃ*ݦ¤¤DGŽÑÀËm6›BCCµiÓ&Ùl6mÚ´I
+6Ôüùó%]~¥hüøñ~¼Lhh¨ŠŠŠ·+Û'$$D§N’$>}Z!!!’¤êøñã:þ¼îºë.ýú׿vlß·o_9sF,ШQ£ÇØ´i“’’’*ü¨€ÝnWii©6nÜèxõK’ŠŠŠtã7Vuw†j³ÞÊ4jÔHÓ§O×®]»œÆ¦ÞàOj³ÞŒóe¨7øO<¿M:µÜc÷JÔ¼W7ŽIIIŽâ	йs窵¿Ýn׸q㔓“£={öhäÈ‘²Ûí3fŒ¤Ëoû_ù}«Š¾Ò­[7:tÈq»²}úöí«ÔÔT]¸pA©©©Š
 /7Ï?ÿ\'NÔèÑ£%Iýúõ“¤
+›Ö®]»jÓ¦Mš4iR¥¯ŠIrÜ7’tøðauíÚµ÷P^m×[™³gÏjÆŒŠŽŽvƒzƒ¿¨íz3zÌ—¡Þà/<ñü¶eË«cÇŽŽA½ÁxÍwù¤f·Û¥èèh>}ZQQQZ§rf    IDATµjUµÇݶm›fΜ©?þX¡¡¡ÕÞðàÁÊÍÍ­²ˆæÌ™£„„]ýõêÚµ«²²²$ý|^Mš4ÑèÑ£5iÒ$IRJJŠ~øa=ðÀjÞ¼¹Þxãrãµk×N¹¹¹êׯŸÎž=«gŸ}Öi¼yóæ9¶ÏÉÉ©ð£@Ę·²c«gÏžZ¹r¥ÓþÔ|‘õVÕc^¢Þà›Ìºžœ:uª’’’*ÝŸzƒ7ðŠÆ±²ß°˜˜˜¨ÄÄÄí[&//O’_îUWÇy衇4tèÐ*÷¹å–[´mÛ6—ÇmÚ´©rrr·×Ñ£G«Kºü›¹*ûxp%³ê­ª}%ê
+¾Ç¬z«ì1%ê
+¾ÆÌëɏ>úÈpê
+ÞÀ+G+»æšk¯öX™7̨
+õxõxõoàÕßq    Ô>G    €!G    €!G    €!G    €!G    €!G    €!ÓþŽc^^žfÍšeÖáËÍÍUXX˜)ǦÞào¨7Às¨7Às̬7SÇèèhꫯ¾2ãð€)ÂÂÂÔ½{w—zƒ?¢Þ Ï¡Þ Ï1«Þ$“ǘ˜ÅÄĘqhÀïPo€çPo€çPo€gñG    €!G    €!G    €!G    €!G    €!G    €!G    €!SþŽãÞ½{µcÇ3íw:vìXå	%Ïq%w#_ϡެ…zómÔ›µPo¾z³3êM2©qܱc‡¶lÙ¢ØØX3ï7òòòTXXXå‹<<ÃÕ<܍|=ƒz³êÍ·QoÖB½ù6êÍZ̪7ɤÆQ’ââ├œlÖáýÂÌ™3uüøq—¶%ÚW<܍|kõf-Ô›o£Þ¬…zómÔ›µ˜Yo|Ç    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆñ*+!!ÁãÇMHHPqq±ÇkuäáŸÈÝZÈ÷‘¯µ‡o#_kñ÷<¼¢q´Ùl•./ûg´¯ÍfS`` "##õÞ{ï9m3bÄíÛ·O—.]R=Ë×®]«Ö­[«N:jÕª•Ö®]ë´ïêÕ«Õ¥KÇíÒÒRM›6MÍš5S@@€ÓܦM›VnÙ•?8p@zíµ×ÊÍ=  @Í›7׊+ÛvîÜY«W¯®ô¼k“Yyüõ¯UDD„‚‚‚Ô§O}ûí·NûúcîfV¾•âÄ	õêÕKAAAêÕ«—Nœ8á4¦/çnµ<\9®/çánVËwÍš5j×®êÖ­«èèhegg;éËùZ-¬¬,µiÓÆoóp7«å[æ—™\É—óµZW.÷Ç<\áceìv»ìv»KÛ]¼xQ)))9r¤ÓúÒÒRhûöíêÖ­›cybb¢æÍ›§~øAiii1b„Ó¾™™™Š‹‹sÜNNNVVV–6lØ ’’’róÛµk—.\Xá7oÞ¬ûï¿_‹/Öþð‡rs/..Ö’%Kôä“O:–ÇÅÅ)33³Ês÷¤ÚÎcøðáJMMUaa¡žyæMœ8Ñi_ò¨=µoeãO˜0A½{÷VAAz÷îMîWÌÉŒ<\9®?æánfå»fÍee
 e©°°Pcƌѐ!Cœ¶ñÇ|ÍÊcýúõÚ°aƒ
+
+
+4eÊ
+<ØiÌÃÝÌÊW2ÎDòÏ|ÍÌ£l]eëý1+yuãX]ån§¦¦Êf³iéÒ¥ŠŠŠRll¬ÒÒÒ¯´hÑBÒϯ„……9¹sçNEFF:n/Z´H)))jß¾}¹W.\¸ ÄÄD­\¹ÒiŒeË–iÒ¤IÚ¸q£bcc+ãƍ?GFFê“O>qᬭ«ºy”––Jú9?üÐiLò°Žêæ[™ììl%%%)88XIIIÚ¸q£Ó6ä^5wåá
+òð<wå»zõjµoß^ÁÁÁêׯŸ®»î:§mÈ·jîÊcùòåjÑ¢…¨fÍš9mCžç®|2)C¾UsçóÛ
+7Ü úõëëÞ{ïÕñãǝÖû{~Ñ8Úl6iìØ±ÊÈÈp,OJJR~~¾âããe·Û¯Ó§O;^-X¸p¡†¢   =òÈ#JOOw;??_õë×wÜþæ›o”­zõê),,ÌñÖùäÉ“5|øpÝyçNc<õÔSš0aB…iÙÛðýû÷×ܹsËëׯ¯ï¿ÿ¾Æ÷‰™jšGFF†žxâ	5hÐ@7nÔ™3gœÆ&óÕ4ßÊäçç릛n’$5lؐܫÉÝy¸‚<<§¶ò=yò¤|ðA¥¥¥9­#ßÊÕF6›MÁÁÁ5jT¹1ː‡ç¸;_£Lʐoåܝ‡ÝnWAAŽ;¦¶mÛVø‰ÏÃ/G»Ý®’’9rDt,·Ùl
+
+
+Õ¦M›d³Ù´iÓ&5lØPóçÏ—$
+6L™™™ºpá‚V®\©G}ÔiìÐÐP9n‡„„¨oß¾:sæŒ,X Q£FI’ÒÒÒ4~üxÇ«W¾*±iÓ&%%%Uø´ÝnWii©6nܨqãÆ9–éÆo¼Ê{Æ5ÍcàÀ:~ü¸ÎŸ?¯»îºK¿þõ¯Æ&óÕ4ßÊ„„„èÔ©S’¤Ó§O+$$Äir¯œ»ópyxNmä»sçNõèÑCIIIºï¾ûœÖ“oåj#»Ý®óçÏ+==]Æ
+sZOžãî|2)C¾•«­ç·FiúôéÚµk—Ó:ÏÃ/ÇÊØív7N999Ú³gFŽ)»Ý®1cÆHº|‘*ývÙí+uëÖM‡rÜîׯ_¹}®ü˜å•Ÿ™¾òU®]»jÓ¦Mš4iR…¯&–)»x–¤Ã‡«k×®Õ?i«*²m>ÿüsMœ8Q£Gvƒ<¬Ë•|+Ò·o_¥¦¦êÂ…JMMU||¼Ó6ä^}5ÍÃäa¾šæ»hÑ"
+0@:th…ېoõÕ4¤¤$Ç} sçÎ9mCæ«i¾F™”!ßê»Úç·³gÏjÆŒŠŽŽvZçïyÔ1{®úå«0v»½ÂßRTݏYmÛ¶M3gÎÔǬÐÐÐrëÊ>ùõ×_«yóæ~ÁuðàÁÊÍÍu„™’’¢‡~X<ð€š7o®7ÞxÃ¥y´k×N¹¹¹êׯŸÎž=«gŸ}¶Üy5iÒDóæÍslŸ““Sá[èžbFWÞ£GÖ¤I“œö÷×<ÜÍÌ|9þœ9s” ë¯¿^]»vUVV–Ó¸¾ž»•òp帾ž‡»Y)ßÇ{L’t÷Ýw;ÖŸ;w®ÜG³|=_+å¥èèh>}ZQQQZµj•Ó¸¾ž‡»Y)_Wøz¾VÊ£ìçàà`õìÙ³Âï'úzUñŠÆÑè7Õtß2yyy’¤øøx§w2
+¤AƒîÿÐC•{U¶iÓ¦ÊÉÉqyNWþ®£Gº4÷]»v•{Û“ÌÊÕñý1w³Z¾·Ür‹¶mÛf8®/çnµ<¨C÷"_kåkµ<•˜˜h8®/çánVËוm|9_«åáïÿÿ¹Â+G+»æšk*|¤¶™qLo@þ‰Ü­…<|ùZyø6òµÏï¿ã    ¨#    À#    À#    À#    À#    À#    ÀiÇ1//O³fÍ2ëð~!77Waaa.mKµ
 ¯:y¸ùÖ>êÍZ¨7ßF½YõæÛ¨7k1³ÞLi£££UXX¨¯¾úÊŒÃû°°0uïÞ½ÊíÈÃ3\ÍÃÝÈ×3¨7k¡Þ|õf-Ô›o£Þ¬Å¬z“LjcbbcÆ¡Qòðmäk-äáÛÈ×ZÈ÷‘¯µ‡ïã;Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C¦üǽ{÷jÇŽfÚïtìØ±Ê?JžãJîF¾žC½YõæÛ¨7k¡Þ|õf-fÔ›dRã¸cÇ}ðÁêСƒ‡÷Ÿþ¹
+«|`‘‡g¸š‡»‘¯gPoÖB½ù6êÍZ¨7ßF½Y‹Yõ&™Ô8JR‡4jÔ(³ï233]Þ–<j_uòp7ò­}Ô›µPo¾z³êÍ·QoÖbf½ñG    €!G    €!G    €!G    €!G    €!G    €!G    €!G    €!G    €!G    €!G    €¡:fOÀv»]k×®Õ{ï½§“'OªQ£F:t¨~ó›ß¸ýX}úô‘$Ùl65kÖL£GVÏž=Ëm3gÎ
+8P-Z´PRR’æÏŸ/Iúøã•‘‘¡“'OªqãÆzüñÇÕ»wo·ÏÑlÞ’ÇŽ;4þ|}ûí·jß¾½žþy…„„¸}޾Æ[ò-ÛW’6oÞìøùôéÓzñÅõÏþSmÚ´Ñ/¼ †
+º}îžâíyT¶—y{¾¹¹¹Zºt©Nœ8¡-ZèñÇWçΝÝ>wOñö<>úè#-]ºTÿùÏ|"wóö|Ë,[¶LË–-óúÿS½=+—ÿr¯òŠÆqÍš5Ú¼y³žþyµlÙRß}÷V¬XQ+,érð%%%Ú±c‡æÌ™ãôÀ²Ûí²ÙlúüóÏÕ¦MÇòÙ³gëùçŸWÇŽµ{÷n͘1Ã'GoÉcÖ¬Yš4i’:wî¬Ý»w+==]üãke޾Ä[ò-ûú—ÿq§§§ëöÛoWJJŠ–-[¦ôôtýÏÿüO­Ìݼ=Ê–ã2oÏ7''G/¼ð‚š5k¦7êOú“ÞyçZ™»'x{yyyš={¶4h í۷륗^Ò»ï¾[+s÷FÞž¯$}ñÅúàƒje¾žæyøC³x%¯hß}÷]ýéORxx¸$©iÓ¦š4i’cý¡C‡4{öl?~\-Z´Ð³Ï>«ˆˆõéÓG<ð€Ö­[§¿ÿýï:~ü¸æÌ™£C‡éæ›oÖ¤I“Ô¾}ûJPþ“¼o¿ý¶,X IúðÃË×®]«Í›7«qãÆ’.¿š!I7ß|³{î ‹ñ–<ìv»¤Ÿóøä“OÜsø8oÉ·2»wïÖ’%KT·n]ýîw¿Sbbbî«ðö<`ÌÛó:uªãç.]ºhÅŠÕ»,ÆÛó({qôÒ¥K
+ðêO[ÔoÏ÷§Ÿ~Òœ9sôÜsÏiüøñ5º¬ÄÛó¤{ï½W¥¥¥ŠŽŽÖرc½€¯òŠï8ž:uJ-Z´¨týìÙ³õÛßþVëÖ­Óoû[Íš5˱îÖ[ou<fΜ©hýúõ3fŒæÌ™Sáx}úôÑ]wÝ¥ùóç—+Ì|Pï½÷ž:uê¤Í›7«S§Nz÷ÝwªgžyF/½ô’îºë.½üòË7nœ;Nßr¼%ñãÇ+55UÐîÝ»uîÜ9wœ¾Ïó–|+SXX¨
+H’n¸á¯ÏÝÛó€1_É7??_S§NÕSO=åÒöVåyôéÓGwß}·æÎëÍ…;y{¾‹-Òo~óEGGWç´-ËÛóؼy³>øàýå/Q‹-ôÒK/Uçô½’W¼ãxÓM7é_ÿú—Z¶lYáúãǏ«ÿþ
+
+
+Ò=÷Ü£W_}Õ±.>>ÞñÊ‘#G4kÖ,ǯ읨_ªìrå[Ôe?ßÿýzúé§uÿý÷+99¹ÜGU“““µ|ùò꟰ÅyK½{÷v|TxÇŽÚºuk5ÏÔ?yK¾•ùÕ¯~¥³gÏ*$$DúÕ¯~ep¶ÖçíyÀ˜/äûÏþS/¾ø¢†®;î¸Ãp[«ó…<6oÞ¬‹/jûöíJNNÖ›o¾i¸½?ñö|×®]+»Ýî˜WŸ>}¼úÅ;oÏ£Lƒ
+ôûßÿ^¨r[oçãý÷߯ٳgküøñ
+×·ß~«+V8ÞÎnÞ¼¹þþ÷¿ë®»îÒßþö·r¯^:~nݺµî¿ÿ~ÅÅÅ)((¨Úóؼy³^}õUõìÙSõêÕÓû￯gžyƱ¾  @ÒÏز۾Æ[ò.^ý_ÿú—ÒÓÓý¢ ÝÁ›ò­HçΝõÖ[oé¿ÿû¿õÖ[o©S§NÕ>¶•x{0æíù®_¿^¯¿þº¦L™¢.]ºTû¸Vãíy,X°@<òˆ®½öZÙl6?¾ÚÇöeÞžï¦M›?{{Ó(yeŠŠŠ´zõjµjÕªÚÇö6^Ñ84HzñÅõí·ßªqãÆ:t¨cýĉ5gÎ¥¥¥©E‹å>}¥çž{N©©©úóŸÿ¬Ÿ~úIRõ¿ÔzàÀ=öØcÚ¿¿Ó;eüî»ïÔ¸qcŸ½¨ò–<Ê^5ºñÆuï½÷jðàÁÕÛ_y[¾Wþ¼yóf=Z/¾ø¢î½÷^Ýzë­zá…ªuL«ñö<*[ŽË¼=ß¹sçJR¹y­_¿^×^{mµŽmÞžGxx¸F¥‚‚µjÕJÏ?ÿ|µŽéë¼=__ãíy”ý\·n]µoß^Ï=÷\µŽél“'O¶'''n4sæLù÷6’`¸ÝëóÖéb~H¥Á–IOO××_­Q£FU{Âp]ff¦ÉÃ"ª“Ç÷?¤Þ¼õf-Ô›o£Þ¬…zómÔ›µÔF½][ÚR®ôƒ^ñËq     æ¡q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ªcöŒ|þùçÚ·oŸÙÓ°¤¶mÛªC‡=&yTÎŒ<܍|+G½YõæÛ¨7k¡Þ|õf-V¯7K7ŽûöíÓ§Ÿ~ªØØX³§b)yyy***òø‹<*fVîF¾£Þ¬…zómÔ›µPo¾z³o¨7K7Ž’§ääd³§a)3gÎÔþýûM96y833w#_gÔ›µPo¾z³êÍ·QoÖâ
+õÆw    †h    †h    †h    †h    †h    †h    †h    †h    †h    †h    †|ªq´Ùl²Ùl
+Tdd¤Þ{ï½rë*Ú¾ºã”1b„öíÛ§K—.©GNûþrìÒÒRM›6MÍš5S@@@¥Çö%VÎcíÚµjݺµêÔ©£V­ZiíÚµ5=M¿e…|׬Y£víÚ©nÝºŠŽŽVvv¶$éĉêÕ«—‚‚‚Ô«W/8qâjO×ò¬œGeËá:+ç[fÚ´i~ñÜ&Y;¼Þp7+çë×/VÈ#++KmÚ´ñûë
+Ÿj%Én·ëâÅ‹JIIÑÈ‘#kmœÒÒRhûöíêÖ­[¹ýìv»ÓöÉÉÉÊÊÊÒ†
+TRRRá6¾Èªy$&&jÞ¼yúᇔ––¦#FÔxnþÌì|׬Y£¬¬,j̘12dˆ$i„	êÝ»·
+
+
+Ô»woMœ8±Æsó&VÍ£²å¨«æ+I»víÒÂ…k<'odÕ<üõzÃݬš¯¿^¿˜ÇúõëµaÃhÊ”)<x°$ÿ»Þð¹Æ±L```­Œ“šš*›Í¦¥K—***J±±±JKK«ò½E‹)%%EíÛ·÷ËWÿ¬–G‹-$ýüªTXX˜[æç¯ÌÊwõêÕjß¾½‚ƒƒÕ¯_?]wÝu’¤ììl%%%)88XIIIÚ¸q£[æç-¬–GeËQ3VË÷Â…JLLÔÊ•+Ý2/ocµ<üýzÃݬ–¯¿_¿˜•ÇòåËÕ¢E(00PÍš5“ä×>×8Úl6iìØ±ÊÈÈpû8IIIÊÏÏW||¼ìv»âããuúôé*_Ñûæ›o”­zõê),,¬Â·Ç}‘UóX¸p¡†¢   =òÈ#JOO¯ñÜü™Uò=yò¤|ðA¥¥¥I’òóóuÓM7I’6l¨3gÎÔxnÞĪyTµ®±j¾“'OÖðáÃuçwÖxNÞȪyøëõ†»Y5_½~±B6›MÁÁÁ5j”c_»Þ¨cöÜ­²†!((HEEEª_¿¾$©¨¨HÁÁÁÕçÊWïÊ~nذ¡æÍ›§1cÆT:^HHˆúöí«™3g*;;[Ç×ý×Uy>ÞΪy6L™™™êÓ§²³³õ裏ê‹/¾¨ò|Pžòݹs§ôÒK/é¾ûî“t¹ÞN:¥ÆëôéÓ
+		©þÉy!«æa´®³j¾iii²Ûí?~¼c_øx¤Uóð×ë
+w³j¾þzýb…<ìv»~üñG­[·NÆ
+ÓáÇýîzÃçÞq¬L¯^½4cÆ©¨¨H3fÌPïÞ½«=ŽÝn׸q㔓“£={öhäÈ‘²Ûí†MŠ$õë×OÒÏFÿøˆÙyœ>}ZÒÏ9”݆{x*ßE‹iÀ€ÊÈÈÐСCûõíÛW©©©ºpá‚RSSï¶sóFfçQÙr¸‡Ùù––––û>¹?4FÌ΃ëÚev¾\¿”ç©<’’’têÔ)IR@@€Î;'Éÿ®7ü¦q\¼x±vïÞ­F©Q£FÚ³g/^\£±¶mÛ¦=z(??_¡¡¡åÖ]ù<¯ü9%%EsæÌQýúõ5vìX½ñÆWwB^Îì<222ôÄO¨^½zzê©§üî—:Ô6OåûØcé»ï¾ÓÝwßíÈ·¨¨HsæÌQnn®®¿þzmÙ²E)))î8-¯ev•-‡{˜/Ê3;®7j—ÙùrýRž§òˆŠŠRtt´4h Y³fiÕªU’äw×>õQU£W9ôaÆ«G’òòò$IñññN¯,T¶oÓ¦M•““ãÒñ}…•ó4h
+äÒñQ1+ç[¿~}mÛ¶Í¥ãû
++çáïï@¹ƒ•ó­î6¾ÀÊyÔ¯_ßï®7ÜÍÊùúãõ‹òHLLTbb¢Ó>·Ür‹_]oøÍ;Ž    €š¡q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ªcöŒ|÷ÝwÚ´i“öíÛgöT,åèÑ£ºå–[<~\ò¨˜Yy¸ùVŒz³êÍ·QoÖB½ù6êÍZ¼¡Þ,Ý8«Q£FŠŠŠ2{*–rþüy•””xü¸äQ1³òp7ò­õf-Ô›o£Þ¬…zómÔ›µxC½YºqlÚ´©n¿ýv%''›=K™9s¦öïßïñã’GÅÌÊÃÝÈ·bÔ›µPo¾z³êÍ·QoÖâ
+õÆw    †h    †h    †h    †h    †h    †h    †h    †h    †h    †h    †|ªq´Ùl²Ùl
+Tdd¤Þ{ï½rë*Ú¾ºã”1b„öíÛ§K—.©GNûþrì+—Ûl65lذ¦§é5¬œÇ_ÿúWEDD(((H}úôÑ·ß~[ÓÓô[VÈwÍš5j×®êÖ­«èèhegg—³²cú"+ç‘••¥6mÚ8-‡ë¬œï/Ÿßü7åá×îfå|ýñúÅ
+yTö<æoÿ÷ùTã(Iv»]/^TJJŠFŽYkã”––*  @Û·oW·nÝÊíg·Û+¯ìß¶mÛôøã×xnÞĪy>\©©©*,,Ô3Ï<£‰'ÖxnþÌì|׬Y£¬¬,j̘12dˆc¼Šr÷uVÍcýúõÚ°aƒ
+
+
+4eÊ
+<¸ÆsógVÍ·lL«;«æá¯×îfÕ|ýõúÅì<*{ó·ÿ÷|®q,X+㤦¦Êf³iéÒ¥ŠŠŠRll¬ÒÒÒªõJÃË/¿¬'Ÿ|Ò-óóVË£´´TÒϯJ}øá‡n™Ÿ¿2+ßÕ«W«}ûö
+V¿~ýtÝu×¹eÞÎjy,_¾\-Z´P@@€Õ¬Y3·ÌÏ_Y-_Iºá†T¿~}Ý{ï½:~ü¸[æç-¬˜G¼Þp7«åëï×/fåÁóØe>×8Úl6iìØ±ÊÈÈpû8IIIÊÏÏW||¼ìv»âããuúôi—_mغu«BCCÕ¤I“ÏÍ›X5ŒŒ=ñÄjР6nܨ3gÎÔxnþÌ*ùž<yR>ø ÒÒÒj<_`å<l6›‚ƒƒ5jÔ¨«š›?³j¾v»]:vì˜Ú¶m[îH_fÕ<ÊøÛõ†»Y5_½~±B<IuÌž€»UÖ0©¨¨Hõë×—$)88¸Úã\ùNVÙÏ
+6Ô¼yó4f̘*ç7uêTÍ™3§Êí|…Uó8p (éò÷*úœ;ªf…|wîÜ©„„½ôÒKºï¾ûjt¾ÂÊyØívýøãZ·n†
+¦Ã‡Wïä`é|%©Q£Fš>}ºn¸á×OÊ‹Y=»Þp7«æë¯×/Vȃç1|DZ2½zõÒŒ3TTT¤¢¢"͘1C½{÷®ö8v»]ãÆSNNŽöìÙ£‘#GÊn·»Ô4nÙ²EÅÅÅêØ±cMNÁ§X!»Ý®Ï?ÿ\'NÔèÑ£kr¨„§ò]´h‘ ŒŒ
+:Ôݧá3ÌÎ#))I§N’$èܹsî91H2?ß2gÏžÕŒ3}Õçäͬ×µÇ
+ùrýò3OåÁóØe~Ó8.^¼X»wïV£FÔ¨Q#íÙ³G‹/®ÑXÛ¶mS=”ŸŸ¯ÐÐЪœZà    IDATrë®üÍJ¿ü-KS§NURRRÍO‡˜‡ÍfS@@€úöí«‡zH“&MººB9žÊ÷±ÇÓwß}§»ï¾Û‘oQQ‘aú#³óˆŠŠRtt´4h Y³fiÕªUî8-üfç[ös“&M´}ûv­\¹Ò§åµÌÎCâz£6™/×/åy*ÊžÇüízç>ªjô½¶°°0mذáªÇ‘¤¼¼<IR||¼âãã]Þ÷£>réø¾ÂÊyøÓoÀª-äk-VÎ#11Q‰‰‰.³r¾Ô[yfç!ùßõ†»Y9_ê­<OåQÙó˜¿åá7ï8    j†Æ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `¨ŽÙ¨J^^žfÍšeö4,%77W!!!¦›<œ™™‡»‘¯3êÍZ¨7ßF½YõæÛ¨7kñ†z³tãxÛm·©¨¨Hûöí3{*–¢:xü¸äQ1³òp7ò­õf-Ô›o£Þ¬…zómÔ›µxC½YºqŒŽŽVtt´ÙÓÀÿG¾|­…<|ùZyø6òµòð^|Ç    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `È´¿ãxðàAeffšux¿°oß>uêÔÉ¥mÉ£öU'w#ßÚG½YõæÛ¨7k¡Þ|õf-fÖ›)ctt´
+Í8´_éÔ©“ºwï^åväá®æánäëÔ›µPo¾z³êÍ·QoÖbV½I&5Ž111Љ‰1ãШ yø6òµòðmäk-äáÛÈ×ZÈÃ÷ñG    €!G    €!G    €!G    €!G    €!G    €!G    €!·ÿÇüãJOOw÷°€ßرc‡ZG]ïÒ¶Ôpu¨7Às¨7ÀsªSo®rkãÕ¹µÎž×éóÝ9,àWZÝ~½ºô¸­Êí¨7àêQo€çPo€ç¸ZoÕáÖÆ±ë·©ëî €ŠQo€çPo€çPo€5ñG    €!G    €!G    €!G    €!G    €!G    €!G    €!—ÿŽãþÝG´dþºÚœ    ÀCvm?¨ÞÝ[º´­KcLLŒÎž=+_Õ¼     Ñ«[˜bcc]ÚÖ¥Æ1..NqqqW3'    €—â;Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C.ýǼ¼<åææÖö\     £ØØØ*·s©qÌÉÉQæ[¯«KÛ®zb     óíß}DgÏžu_ã(I]ï¸Mc§$\ÕÄ     Öðú¼uR©kÛòG    €!G    €!G    €!G    €!G    €!G    €!G    €!—ÿŽ£+öï>¢]ÛºsH    @5Eun­.=nsÛxnm?ÙvP[ÿvH½ºwwç°     }²w¯Îž·nã(I½bºkê¤Iî    à‚Ô×Òõ͏îý$(ßq    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢qtƒ–áfOÁ¡¸¤D‰cž2娉cžRqI‰)Ç   P{LmCZ†ë/oý?öî>.ª:ïÿø{ÀÄÊJÌ´²QÐÒïµä'‰ÖfkW«kh¥×%j–Yâ
+êº[ڝàݵ„V ffºxSvc¶¹ A­ŠæÍj©›šeæn&a ™®Èüþðb‚†98Ì93óz>=bΜóý~ϼùà|ÎÌÀ›NÛ*ûÚÕýo¯__áþ‹;—“£ÐáúpãÆjÍ_B[„+´E¸®mÙJïì­²²œöybÊ}~à€Î—”¨ï€Ž
 íï|ðºßu·GD*¦ß½ÊÙ¼ÙéØwÞ_¯è¨Û·×¾ÿ¾ºÆõq:¦l¿>ßÒÒRýùåWÔ>æÿ©qD¤ºöé«•k×:­¿axKµ»ý­~çÇ}íok§wÞ¯˜    ßgú+Ž+×¾­cÇ×øøŒ¥Ke·Û%IçKJ´êí·öYôÆêÿ›»µøåŸ¿&N}uD'~¡çþ8MON™êti©]AAAút×.ujßÞ±ýÝõèµóuìóÏ4꿇iäO:ûæ{ï©g÷îŽÛÛô‘ÞZöº¾ùl¯&<>F#þï˜S_Ñ©¯Ž8ŸúJº>Ü´Q+_]¬ãöë/‹*wó§õç>¤sfkÒSO;¶÷ìÞ]o¾÷^õ    –fzã8ç™ÿÇ?©´´´FÇ·oÛNÍΖ$­yçõ½3¶ÂýGÓ·Çÿ¥%è_ÿþ·¾þæ·çÿÇgŸ«ç=ýt]«õ¼§ŸöîÛ'IÚñ¨ó½uã­mõَ̬ý>¬»þ^#"Õ¥wœ¶íØi¸öà à
+·_Y²Äñ*迹G÷ÆVÆÒ¥ŽW_{in‰ŒTHHˆîìÙSW\q…Ó˜»öìQ«-·ÓÿwžnnÚT¶  ë†&M×ôÚ_þ¢³fé–ÈH]V§ŽZµh¡WæÍu¹ãF_·jÑB»÷î5   €ï1½ql¡Þ11zùÕ%5:þÑáÃõ¿/½,»Ý®W–¼¦‘C‡V¸ÉòJzò	Õ	ÖäqOjÉònÏÿxR’†
+Ž×ѽ{4lp¼ÆLJ’$›ú=– /wîÐ
+×ÿÒˆ=6q’†?8DÇö}®ä§ŸÒS¦TºæÐájÙZSŸ}Fž9ó—ãôÕ?v«×·ëÔWGÔëŽÛõ宝N¯~ò¤†=ö˜f͘î4ö©Ô•¿j(C[„ëúÖm4îPêÌ*]S™ïNœPxX˜ã¸ÊÞÎZöVÛþg¸žÿÓÛ¯¼òJœ:e8>    ßczã(I%WÎæÍúçÁC¶‡Ô­«ŸÎœqÜþéÌ…„„TاEófº¾I%MŸ®ˆðpÝxýõŽûΝ;§åkÖhøãcÚ"\ëåkÖèܹsnÍðða
+‹×W\¡‡
+Ò‡9¶?4è÷ºüòË5ôûïÝ·Oc&%éúÖm4hx‚õU¥ç{ê«#úáËÃÚ•“£þ¿¹Û±=´E¸ZDwPîæ-
+m®ÜÍ[Ô²c'-Z¶Ì±ÏÎ={ÔwÀ@=– {úôq;´Aƒ
+YÙ|ÿ>°_ÿûÂó=~B¥k*Ó¤qc}}ì˜ã¸ÊÞÎzê«#*8ò¥Þ^þ†¦=÷œcûO?ý¤†¡¡†ã   ð=–hm6›þüÂóšøÔS¶wïÒYó^zI?9£ŸÎœÑ¼—^Òí]º8ÿøÈzõåý?ÿSaû[ëÖ©cûöŽèÔWGÔ):Zo­[çÖü-[*ó­·ôóÏ?kùš5j!IŠlÕJ™o½¥³gÏê/o¾åØÿ¶[oÕËsçè_û÷9š«ê8õՍ‘ ÷Wf*÷ýu¯S_ѨaÃ$I¯¯\©!#FêÏ3_Ð÷ß_éÛ·¯Ð°þáÙç”_P I
+
+
+RñO?®ahüšðÇ?ê˯¿Ö…täèQÃýó(p|ýå×_«CT”[ç
+   ÀwX¢q”¤››6ÕCƒ~_a[ZJŠö|ö¹Zuê¬V:kïçû”6+ÅéØ]ºèÔWGÔ­s§
+Û/{Cü_ÓUæ‘aÃôj%¿$§²ùçÏž¥EËÞP³Û¢ôzæJ-˜}ñóŒ/¦$ë¥Å¯*¼c'}û¯9ö_”ö¢V½ý¶ZtèXé[<ݱ}ç.uéØQ§~,ThƒîKüÃ4üá
+öߎñýêâÀþýµyÛ6Çí¶mÚ(¦ß½jÕ^/¾’®Wç§IR…õ•ÿzÒØ±êÞ¹‹úyP×·n£G=¢Å/¾XaŽ²ßª:âÉqšýÌÇö¿çåé÷÷ÝWís   `m¶©S§Ú“““
+wJIIÑámѸiñ†û½:l§B5}òdO®Õp¾¤D£ÇkÉ‚ù^Ÿ;aìZøbªêW½3   €Z‘úJº¾ýù€[ýÛå¥-äN?XÇ“„ù.«SÇ”¦Q’ió   ¨]–y«*    Àšh    †h    †h    †h    †h    †h    †<þwwìþ‡RÓÓ==,    À
+ß¶MaQW{tL6ŽQZétÑûé€'‡    ¸©ùmW«s[<:¦GÇ.·ß¢.·{v     sñG    €!G    €!G    €!G    €!G    €!G    €!G    €!þǽ;kÇÖžHQZUùG[©7À3¨7À{¨7À{Ü©·êðhãøé–úø¯Õ­[7O”Ý»wëtÑ™*z.õxõx»õVm%©[·nš<y²§‡Fzzº~øÙ½+­Ôpi¨7À{¨7À{ªSoîâ3Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C~Ñ8†‡‡›½ `Po€÷Po€÷Po€1SÇÜÜ\ÝsÏ=ŠŒŒT\\œÞ{ï½ZŸÓè‡Bxx¸ÂÃÃÕªU+õîÝ[YYYNûL™2EPII‰èؾaÃÅÆÆ*""B±±±Ú°aC­¬¨)ª·œœÝyçjݺµzè!åçç×Êúšò§z+;ö×ã÷Ýw4hZ·n­Aƒé»ï¾óÜÉ Õõæj;àM¦6Ž&LШQ£ôÙgŸiÉ’%Ú´i“™Ë‘$9rD_|ñ…¦M›¦©S§:Ýo·Û¤]»v©}ûöŽí“'OÖŒ3´oß>MŸ>]S¦Lñ沁*ùS½%%%éé§ŸÖgŸ}¦‘#G
 *99ٛ˪äOõväÈ9rÄiÿääduéÒE{÷îU—.]¨C˜&êÍÕvÀ›Lm4h “'Ojß¾}ºîºë”ššê¸ïóÏ?W¿~ý¡~ýúiß¾}’¤}ûö©ÿþŠˆˆpºê²yófuíÚU«W¯ÖáÇõûßÿÞqõiçΝŽýݹb\áö’%K®7ß|S÷Üs¬¥K—:ÆiÚ´©$Éf³I’nºé¦Kxd Ïó§z+--•ôK½åææ^Â#xž?Õ›+ÿûß• %$$èïÿ»ÛàIPo€˜Ú8.^¼Xß~û­ž}öYõèÑCk×®uÜ—””¤øøxíÙ³GñññJJJrl0`€öíÛWáÊËÛo¿­éÓ§ëµ×^Ó< I“&iȐ!úüóÏõÔSOiÊ”)Žý®Ú„‡‡«uëÖzæ™g4sæLÇö„„íÞ½[·ß~»Ž9¢Ûo¿];wîtŒ3sæL7N­[·Vbb¢žþy?^À¥ð·z{ê©§Ô¾}{ýýïWaa¡Ç/àRøS½¹RXX¨†
+J’BCCUTTT³¸DPo€Ô1sò-Zè¹çž“$<xPC†Ñ€$I‡V||¼êÕ«§Aƒ9±C‡iðàÁª[·n…±¦L™¢…ªmÛ¶’.^IJJJrü€({e¢*F? ~ýu§N4cÆ
+6L&LЋ/¾¨Ûo¿]›7oÖĉµqãFw
+ ÖùS½Ý}÷ݺûî»%]ü¼ceŸÌäOõæÊ5×\£‚‚5jÔH§NÒÕW_íÖ: O„z¬ÀÔWǏ¯¯¿þZÿùÏôÅ_8Þ~&I-[¶Ô[o½¥ŸþYkÖ¬QDD„$)22R+W®ÔþóŸ
+c-Z´HIIIŽ_Jsë­·jΜ9Ž+I_~ù¥$©N:úþû﫽Ö#GŽ(!!A™™™Z·nâããuäÈG‘Ÿ:uJÒ/?PÊnVáOõ&]ü|È¡C‡”œœ¬|°Ús µÉßê­2wÜq‡–,Y¢sçÎiÉ’%ºãŽ;ª=7à	Po€˜Ú8öîÝ[#FŒPÛ¶m•ššZáƒõ³fÍÒo¼¡¨¨(­\¹R³gÏvl_³fn¹å–
+Wmzõê¥×_]Ï<óŒ^{í5½øâ‹zûí·Õ±cÇ
+ïAðÁ[£÷’ïÚµK;vTaa¡4hPá¾^xAO?ý´n½õV͘1£ÂÛ +ð§zWË–-5tèPõë×O<òHM Öø[½Uö™®?üáÚ¾}»n»í6mß¾]Ó¦M«ö¼€'B½¹úð&ÛÔ©SíUý&´””þ׍›o¸ß«ó×é\A¨&OžìÉ5%==]?ü|€z¼€z¼‡z¼§:õvyi‹*3vJJй¯8    ¬Æ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `¨Ž“îÞ½[Û¶m3cjÀT:tP·nݼ:'õ†@E½ÞC½ÞcF½I&5ŽÛ¶mÓǬ^½z™1=`м¼<y½Ð©7"ê
+ðê
+ð³êM2©q”¤ØØX%''›5=àu))):zô¨)sSo4Ôà=Ôà=fÖŸq    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q¼D%%%Š7mþøøx•””˜6?àMÔ`>êðê
+V⍣Íf«tûš5kÔ¶m[Õ­[WÑÑÑÊÎήôX›Í¦àà`EFFêÝwßuÚgĈÚ³gÎŸ?¯=z8¶¯]»V­ZµR:uÔ²eK­]»ÖéØÕ«W«sçÎŽÛ«V­R›6mœÖäj­6›M«W¯®0æ¼yó*œsÙ9©Y³fZ¾|¹ã¾N:9\
+³êíƒ>PDD„BBBÔ»wo8qÂéXê
+þƬz+;ö×ó?~\={öTHHˆzöì©ãǏ;IÂWY­Þ\m/zƒ•øDãèÊš5k´jÕ*iìØ±2dH¥ûÙív;wNsçÎÕÈ‘#î/--UPP¶nݪ®]»:¶'$$hþüùúé§Ÿ”––¦#F8›™™©ØØXÇíõë×kÆ
+*,,Ô´iÓ4xðà*ך––&»Ý.I:þ¼ÞxãJÏ¡¤¤DK–,Ñã?îØ«ÌÌÌ*)àÒÕv½
+>\©©©***Òĉ•””ät,õ†@QÛõf·ÛuPÞ¤I“£ÂÂBÅÄÄP‡fÕ›«íåQo°ŸnW¯^­víÚ©^½zêÛ·¯®¼òJÃýƒƒƒ+ÜNMM•ÍfÓÒ¥K¥^½z)--Íq¦yóæ’~¹Bæ4æöíÛ鸽lÙ25oÞ\AAA
+VÓ¦M«\kÇŽõÞ{ïI’V¬X¡~ýúžG“&M_GFFêÓO?5Üð„Ú®·ÒÒRI¿ÔÛ‡~è4&õ†@QÛõæJvv¶U¯^=%&&*++ËiêþƬzsõ+ñ鯱Ìwß}§*--­Òûm6›BBB4nÜ8edd8¶'&&ª  @qqq²Û튋‹S~~¾ãªÌÂ…5dÈ…„„衇RzzºÓت_¿¾Ó|õêÕÓ¨Q£*Ìçj­ãƍÓÌ™3e·Û•ššª1cÆTzÁÁÁêׯŸæÍ›çØ^¿~}ýðÃn<J€gÔV½eddh̘1jР²²²têÔ)§±©7šÚª7W
+
+
+tÝu×I’5jD" x»ÞÜA½ÁJ|¾qܾ}»zôè¡ÄÄDÝwß}•îc·ÛuáÂ>|Xpl·Ùljذ¡6nÜ(›Í¦7ªQ£FZ°`$ièСÊÌÌÔÙ³gµbÅ
+
+6Ìiì†
+ª¸¸Øi¾3gÎ(==]C‡­r­-[¶Ô7Þ¨±cǪuëֺ馛*=‡ÒÒReeeiüøñŽíÅÅźöÚkÝ|´€KS›õ6`À =zTgΜÑ]wÝUiPo$µYo®„††êäÉ“’¤üü|…††:íC™Qoî Þ`%>Ý8.Z´Hýû÷WFF†~øájo·Û5~üxåääh×®]9r¤ìv»ÆŽ+éâ?šÒ/o+»]^×®]uðàAÇíÄÄDÇ?ºAAA:}ú´[k0a‚^~ùe=ùä“U®»l|I:t萺téâî)5VÛõV¶Ïþýû•””¤Ñ£G;A½!Px£Þ*Ó§O¥¦¦êìÙ³JMMU\\œÓ>Ô!üYõæê
+VRÇì¸ë×ï·Ûízä‘G$Iwß}·cûéÓ§^Ò7²eË¥¤¤è“O>QÆ
++ÜWöÖ¹cÇŽ©Y³fZ¸p¡ÓñƒVnn®£¨¢¢¢­üü|EEEiåÊ•’är­ebbbßÒPvþ7ÜpƒæÏŸïØž““ãòCÜ@M™Qoå¿ÇG­É“';O½Á™Yoå¿¶Ûíš3gŽâããuõÕW«K—.Zµj•Ó¸Ô!|™•êÍÕöò¨7X‰O4Ž®¾ÑÝyïxUûäååI’ââ✮¬4Hƒ
+2<þ¨pe'!!A			n¯ÃíFç°cÇŽ
+o) .•YõæÎøÔüÕêíæ›oÖ–-[Ç¥᫬Voü»_㍣•]vÙe•^‘õ3缍zÌGÞC½ÁJ|ú3Ž    €ÚGã    0Dã    0Dã    0Dã    0Dã    0Dã    0dÚßqÌËËÓ¬Y³ÌšðºÜÜ\………™27õ†@C½ÞC½Þcf½™Ò8FGG«¨¨H_ýµÓ¦S·nݼ>/õ†@D½ÞC½ÞcV½I&5ŽÝ»wW÷îÝ͘8Ôà=Ôà=Ôà]|Æ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `È”¿ã¸{÷nmÛ¶ÍŒ©SuèÐÁë´•zC ¢Þ ï¡Þ ï1£Þ$“ÇmÛ¶éã?V¯^½Ì˜0E^^žŠŠŠ¼^èÔõxõxYõ&™Ô8JRll¬’““Íš𺔔=zÔ”¹©7ê
+ðê
+ð3ëÏ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8^¢’’ÅÇÇ›½Œ*ÅÇÇ«¤¤Äìe —„zÌGÞC½ÁJ|¢q´Ùl•n_µj•Ú´i£ºuë*::ZÙÙÙ•k³Ù¬ÈÈH½ûî»NûŒ1B{öìÑùóçÕ£GÇöµkתU«VªS§ŽZ¶l©µk×:»zõjuîÜÙiûŒ3*¬ûøñãêÙ³§BBBÔ³gO?~\’ôÁ(""B!!!êÝ»·Nœ8!I*--ÕŒ3Ô´iS9Æ*?æ¾}û¡W^y¥Â¹©Y³fZ¾|¹cßN:iõêÕ•>Ž@yfÕ›«Z(zƒ¿1«ÞÊŽýõü®j§<ê¾Êjõæj{yÔ¬Ä'GWÖ¯_¯
+6¨°°PÓ¦MÓàÁƒ+ÝÏn·ëܹsš;w®FŽétii©‚‚‚´uëVuíÚÕ±=!!AóçÏ×O?ý¤´´41ÂéØÌÌLÅÆÆVضcÇ-\¸°Â¶I“&)&&F………Љ‰QRR’$iøðáJMMUQQ‘&NœèØžœœ¬U«ViÆ
+ºpá‚ìv{…ñ6mÚ¤ûï¿_‹/Öc=Vá\KJJ´dÉ=þøãŽí±±±ÊÌ̬ôñÜQÛõæªÊ£Þ(j»Þìv»Ó÷¹äºvÊ£áo̪7WÛË£Þ
 `%uÌ^À¥X¶l™$éܹs
+VÓ¦M
+÷®p;55UãǏ—$-]ºÔ±=--Mv»]Í›7—ôËÕ—°°0§1·oß®ÈÈHÇí³gÏ*!!A+V¬PïÞ½Û³³³õù矫^½zJLLT»ví$]ü!S~Ž?üP’´hÑ"½ôÒKŽýÊ{ýõ×5þ|eeeUº¦2Mš4q|©O?ýÔå¾@Uj»Þ\ÕByÔEm×›+®j§<êþƬzsõ+ñéW¥‹…P¯^=5J.÷			Ѹqã*쓘˜¨‚‚ÅÅÅÉn·+..NùùùŽ"_¸p¡†¢=ôÐCJOOw»  @õë×wÜž:uª†®;ï¼Ói¿ë®»N’Ô¨Q#:uJ’”‘‘¡1cƨAƒÊÊÊrlÿöÛo•­+®¸BaaaÞñÄOhÒ¤I•sÙÛ(úõë§yóæ9¶×¯__?üðƒác	T¥6ëÍU-”G½!Ôf½¹âªv~½ucF½¹ƒzƒ•ø|ãh·ÛuæÌ¥§§kèС.÷¹pá‚>¬8¶Ûl65lØP7n”ÍfÓÆÕ¨Q#-X°@’4tèPeffêìÙ³Z±b…†
+æ4vÆ
+U\\츝––¦	&8½W<44T'Ož”$åçç+44T’4`Àû_    IDAT =zTgΜÑ]wÝ¥›nºÉ±Ÿ>}têÔ)½ôÒK5j”cŽ7*11±Ò·”½r“••å¸ú%IÅÅźöÚkÝxD×j³Þ\ÕByÔImÖ›+®j§<êþÈŒzsõ+ñéÆ111ÑQ$AAA:}útµŽ·Ûí?~¼rrr´k×.9Rv»]cÇŽ•t±ð¤_вìvy]»vÕÁƒ·KKK+¼g½ìÿ}úôQjjªÎž=«ÔÔTÅÅÅUXÇþýû•””¤Ñ£GK’úöí[aîòVîÒ¥‹6nܨɓ'»¼*&ÉñØHÒ¡C‡Ô¥KwÀIm×[Ù>¿®…ò¨7
+oÔ[eŒj§ucV½¹ƒzƒ•øÌgý§ìv»¢¢¢­üü|EEEiåÊ•ÕwË–-JIIÑ'Ÿ|¢†
+V¸¯ìåýcÇŽ©Y³fND–¤Áƒ+77·Êb™3gŽâããuõÕW«K—.ZµjU…óºá†4zôhMž<Y’4wî\=øàƒúÝï~§fÍšéµ×^«0^Û¶m•››«¾}ûêÇÔ”)SœÆ›?¾cÿœœ
+2¤:
+˜õæªÊ£ÞàÌ¬·ò_Ûív—µSu_f¥zsµ½<ê
+V⍣«÷ˆ'$$(!!¡FÇ–ÉËË“$ÅÅÅ9]Y4h
+dxü< ‡~¸Ê¹o¾ùfmÙ²ÅíõÝxãÊÉÉ1Ü?<<\_~ùe•cIWù· ®˜Uoî|„zƒ¿±Z½¹ªò¨Cø*«ÕÿîÁ×øDãhe—]vY¥Wd­ÆÖT…zÌGÞC½ÁJ|ú3Ž    €ÚGã    0Dã    0Dã    0Dã    0Dã    0Dã    0dÚßqÌËËÓ¬Y³ÌšðºÜÜ\………™27õ†@C½ÞC½Þcf½™Ò8FGG«¨¨H_ýµÓ¦S·nݼ>/õ†@D½ÞC½ÞcV½I&5ŽÝ»wW÷îÝ͘8Ôà=Ôà=Ôà]|Æ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `È”¿ã¸{÷nmÛ¶ÍŒ©N‡ªü#¡äá=îäáiäë=Ô›µPoþz³êÍ¿QoÖbF½I&5ŽÛ¶mÓǬ^½z™1}ÀÈËËSQQQ•ßXäáîæáiäëÔ›µPoþz³êÍ¿QoÖbV½I&5Ž’«ääd³¦))):zô¨[û’Gí«NžF¾µz³êÍ¿QoÖB½ù7êÍZ̬7>ã    0Dã    0Dã    0Dã    0Dã    0Dã    0Dã    0Dã    0Dã    0Dã    0DãXKJJJïõyãããURRâõy­Ž<üùZyø7òµòðoäk-ž‡O4Ž6›Íåö²ÿŒŽµÙl
+Vdd¤Þ}÷]§}FŒ¡={öèüùóêÑ£G•ã—––jÆŒjÚ´©‚‚‚*õêÕêܹ³ÛÇ̘1£Â¶ò_ïÛ·Ozå•W*¬+((HÍš5ÓòåËûvêÔI«W¯vùxx‚Õò(¿Ýf³©Q£FNcúsžfµ|×®]«V­Z©N:jÙ²¥Ö®]ë4¦?çkµ<>øàEDD($$D½{÷Ö‰'œÆôç<<ͬ|׬Y£¶mÛªnÝºŠŽŽVvv¶$éøñãêÙ³§BBBÔ³gO?~ÜiLÎ×jy¸3¯?çáiVË×Õöòü9_«å±jÕ*µiÓ&`óp‡O4Ž®ØívÙív·ö;wîœæÎ«‘#G:Ý_ZZª   mݺU]»v­rüääd­ZµJ6lÐ…*Ý'33S±±±n³cÇ-\¸°ÒµoÚ´I÷ß¿/^¬Ç{¬ÂÚJJJ´dÉ=þøãŽí±±±ÊÌÌ4~@j‰Yy”m·ÛíÚ²e‹}ôQ§}1O3+ß„„ÍŸ?_?ýô“ÒÒÒ4bħ}1_³ò>|¸RSSUTT¤‰'*))ÉiŸ@ÌÃÓj;ß5kÖhÕªU***ÒØ±c5dÈIÒ¤I“£ÂÂBÅÄĐo¹5™‘‡;óbžfV¾®¶—ˆùš•ÇúõëµaÃjÚ´i<x°Ó˜˜Gy>Ý8VWppp…Û©©©²ÙlZºt©¢¢¢Ô«W/¥¥¥^ᐤE‹iîܹj×®Ë}·oß®ÈÈÈ*9{ö¬´bÅ
+§1^ýuMž<YYYYêÕ«—Ëõ4iÒÄñudd¤>ýôSÃõ[…§ò(ï…^¨PheÈÃû<•oóæÍ%ýr•.,,Ìiò­š§ò(--•ôK~ø¡Ó>äá}ÕÍwõêÕj×®êÕ«§¾}ûêÊ+¯”$egg+11QõêÕSbb¢²²²œæ"ߪy*w‡÷y*_wr'ߪy*eË–©yóæ
+
+
+Rpp°š6mê4W ç£ÍfSHHˆÆ§ŒŒÇöÄÄD(..Nv»]qqqÊÏϯò*Ç·ß~«ììl]qÅ
+«ôåñ‚‚Õ¯_¿Êc¦NªáÇëÎ;ïtã‰'žÐ¤I“*}¢\öò|¿~ý4oÞ<Çöúõëë‡~¨ò11“§ó(³yóf5lØP7ÜpƒÓ}äá=žÎwáÂ…2dˆBBBôÐC)==ÝiòuÍÓydddh̘1jР²²²têÔ)§}ÈÃ{.5ßï¾ûNTZZš¤‹Ù]wÝu’¤F‘o5y:w‡÷ÔV¾F¹“¯kµ‘‡ÍfS½zõ4jÔ¨
+c–	ô<¢q´Ûíºpá‚>¬8¶Ûl65lØP7n”ÍfÓÆÕ¨Q#-X°Àp¼ÐÐPõéÓG§NÒK/½¤Q£F9íÓ°aCWyLZZš&L˜à¸JQþjÅÆ•˜˜XéKÓv»]¥¥¥ÊÊÊÒøñãÛ‹‹‹uíµ×ºùȘÃÓy”™>}z…Ç¢<òðOç;tèPeffêìÙ³Z±b…†
+æ´ùºæé< £GêÌ™3ºë®»tÓM79íCÞs)ùnß¾]=zôPbb¢î»ï>I³:yò¤$)??_¡¡¡Ns’¯kžÎÃäá=µ‘oU¹“¯kµ‘‡Ýn×™3g”žž®¡C‡:ÍèyDãèŠÝn×øñã•““£]»viäÈ‘²Ûí;v¬áq}ûö•¤J¿ÊtíÚU¬ò˜ÒÒÒ
+ïå.5¤K—.Ú¸q£&Ož\éU2eÿÈKÒ¡C‡Ô¥KÃõ[UM󐤏?þX%%%êСC¥÷“‡ùjšo~~¾¤_2*»]ùVߥԛÝn×þýû•””¤Ñ£G;ÝOæ«*ßE‹©ÿþÊÈÈÐÃ?ì8®OŸ>JMMÕÙ³g•ššª¸¸8§±É·újš‡;ÈÃ|5ÍםÜÉ·újšGbb¢ã1
+
+ÒéÓ§Æô<꘽ wýº9³Ûí•þ–"wßÖXfË–-JIIÑ'Ÿ|¢†
+ºœ³üøsçÎÕƒ>¨ßýîwjÖ¬™^{í5§q¬ÜÜ\GÈîS™¶mÛ*77W}ûöՏ?þ¨)S¦TXÏ
+7Ü ùóç;öÏÉÉ©ôÃÕžf¥<¤‹¯6&&&º×ßóð4+å[öÖÈcÇŽ©Y³f•~ÐÜßóµRå‹Ñ£GkòäÉNãú{žfF¾<òˆ$éî»ïvl;}ú´æÌ™£øøx]}õÕêÒ¥‹V­Zå4®¿çk¥<®ºêª*çõ÷<<ÍJùºÚ^þ­þž¯•òˆŠŠRtt´òóó¥•+W:ëïyTÅ'GWß,îþÆ%#yyy’¤¸¸8§+«®Ž½ñÆ•““c8î<Pá*†;Ç”Ÿ¯ü×áááúòË/«\—tñ78¹z»¦§X-Iú裏Çõç<<Íjù4Hƒ
+2ןóµZîÌëÏyxšÕò­_¿¾¶lÙb8®?çkµ<¨7Ï"_kåkµ<”`8®?çáŸh}Ñe—]Vé•ÚÚfÆœ¾€<üùZyø7òµòðoäk-žG@Æ    P5G    €!G    €!G    €!G    €!G    €!G    €!ÓþŽc^^žfÍšeÖô!77WaaaníKµ¯:yxùÖ>êÍZ¨7ÿF½Yõæß¨7k1³ÞLi£££UTT¤¯¿þÚŒéFXX˜ºuëVå~äáîæáiäëÔ›µPoþz³êÍ¿QoÖbV½I&5ŽÝ»wW÷îÝ͘• ÿF¾ÖBþ|­…<üùZyø?>ã    0Dã    0Dã    0Dã    0Dã    0Dã    0Dã    0dÊßqܽ{·¶mÛfÆÔ§C‡Uþ‘Pòðwòð4òõêÍZ¨7ÿF½Yõæß¨7k1£Þ$“ÇmÛ¶éý÷ßWûöí͘>`ìß¿_EEEU~c‘‡w¸›‡§‘¯wPoÖB½ù7êÍZ¨7ÿF½Y‹Yõ&™Ô8JRûöí5jÔ(³¦™™™nïKµ¯:yxùÖ>êÍZ¨7ÿF½Yõæß¨7k1³ÞøŒ#    À#    À#    À#    À#    À#    À#    À#    À#    À#    À#    ÀP³à»Ý®µk×êÝwßÕwß}§Æ
 ëá‡Öo~óÏÕ»woI’ÍfSÓ¦M5zôhÝqÇö™3gŽ æÍ›+11Q,¨p¬$mÚ´©Âú—-[¦÷ß_²Ûíî÷5¾žGùí’tõÕWëwÞñøÚ}•¯çûÉ'Ÿ(##Cß}÷š4i¢G}T111_»·øzÛ¶mÓ‚tâÄ	µk×NO=õ”BCC=¾v_å+ùæææjéÒ¥:~ü¸š7o®G}T:uR~~¾ž}öYýóŸÿT›6môôÓO«Q£F_»·øz®êùz¾®¶û*_Ï㣏>ÒÒ¥KõïÿÛ/òp‡O4Žk֬ѦM›ôÔSO©E‹úþûïµ|ùòZùÆ’.þ°½pá‚¶mÛ¦9sæ8}cÙívÙl6íß¿_mÚ´©pœäܘ¬X±B}ô‘fÏž­°°0Ùl¶ZY··øzåÿ1Ý¿¿òòòjeݾÊ×ó={¶žzê)uèÐA;wîÔÌ™3}ºqôõ<fÍš¥É“'«S§NÚ¹s§ÒÓÓõ‡?ü¡VÖî‹|%ßœœ=ýôÓjÚ´©²²²ôüóÏëí·ßVzzºn»í6͝;W¯¿þºÒÓÓõ§?ý©VÖî
+¾ž‡«:ÄE¾ž¯«í¾Ê×óÈËËÓìÙ³Õ AmݺUÏ=÷œß¿áã;ï¼£çŸ^ááá’¤o¼Q“'OvÜðàAÍž=[GUóæÍ5eÊEDD¨wïÞúÝï~§uëÖéoû›Ž=ª9sæèàÁƒºþúë5yòdµk×Îå¼AAßÉûÖ[o饗^’$}øá‡Žík×®5¼²·~ýz7N-Z´¨Ñù[¯çQÞòåË5qâD·Ï=øz¾Mš4‘$ǚ믿¾š€µøzv»]Ò/y|úé§Õ|ü›¯ä;}útǶΝ;kùòå’¤;wjÉ’%ª[·®~ÿûß+!!áÒùz0æëùú[GÙEÐóçÏ+((ȧßmá.ŸøŒãÉ“'Õ¼ys—÷Ïž=[÷Þ{¯Ö­[§{ï½W³fÍrÜ׺ukÇ7AJJŠú÷ï¯õë×kìØ±š3gN¥ãõîÝ[wÝu—,X 	&8¶8Pï¾û®:vì¨M›6©cÇŽzçwªlRNž<©;wêž{îѐ!C´yóæêœ¾åøze>ÿüs]uÕUºöÚkÝÚ?Pøz¾'NÔsÏ=§»îºK/¼ð‚Ə_Ó·_Ïc„	JMMUÿþýµsçN>}º:§ï÷|-ß‚‚MŸ>]O<ñ„$©¨¨H
+4$]sÍ5>Ÿ¯¯çcþ’¯¿äî
 yôîÝ[wß}·æÍ›WaLå¯8^wÝuúæ›o\¾bwôèQõë×O!!!ºçž{ôòË/;î‹‹‹s\Y8|ø°fÍšåøÆsõ–QWO„Ê¿õ£ìëûï¿_O>ù¤î¿ÿ~—ë¿êª«Ô©S'=òÈ#Ú¹s§fÏžíôò¸/ñõ<Ê,]ºT£G®r¿@ãëù&''Wx«jrr²–-[fpÆÖæëyÄÄÄ8Þ*¼mÛ6Ÿ¿pæi¾”ï?ÿùO=ûì³>|¸n¿ývIÿ}ûñǪÂÂB]uÕUÕ9}Ëñõ<`Ìòõ§Üý!M›6éܹsÚºu«’““õÆo¸{ú>É'Çûï¿_³gÏÖ„	®'Nhùò厗³›5k¦¿ýíoºë®»ô׿þµÂÕ‹àà`Ç×­ZµÒý÷ß¯ØØX…„„T{›6mÒË/¿¬;î¸CW\q…Þ{ï=·ÞæXöAY_ÿlc_ÏC’öîÝ«.(""¢Úóú;_Ï·°°PÒ/õVvÛWùzÒÅ·«~óÍ7JOOWÿþý«=·?ó•|ׯ_¯W_}UÓ¦MSçΝÛ;uê¤7ß|Sÿýßÿ­7ß|S;v¬ÉÃ`¾žŒùz¾þ–»¯çñÒK/顇Òå—_.›Í¦3gÎÔäað)>Ñ84HÁÁÁzöÙguâÄ	5iÒD?ü°ãþ¤¤$Í™3GiiijÞ¼y…÷G—÷Ç?þQ©©©úóŸÿ¬ÿüç?’ªÿ[ÇöíÛ§GyD{÷îuº²ZÙ‹M›6é±ÇÓóÏ?¯§Ÿ~Z7Ö”)Sª5§ÕøzÒÅWX­¹…¯ç[öÖÈï¿ÿ^Mš4ñùϰúze__{íµúío«ÁƒWkNç+ùΛ7O’*Ì¿~ýz=ZÏ>û¬~ûÛߪuëÖzúé§«5§Õøz÷Þ{¯ãö¯ÿ݃ïçëjûå—_^­¹­Â×óרQ£TXX¨–-[ê©§žªÖœ¾È6uêT{rr²áN))):ü¯-7-Þp¿Wç¯Ó¹‚P—Á–IOO×±cÇ4jÔ¨j/îËÌÌTpp0yXDuòøáçÔ›¡Þ¬…zóoÔ›µPoþz³–Ú¨·ËK[ȝ~Ð'~9    À<4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     CuÌ^€‘ýû÷kÏž=f/Ã’n½õVµoßÞ«s’‡kfäáiäëõf-Ô›£Þ¬…zóoÔ›µX½Þ,Ý8îÙ³GŸ}ö™zõêeöR,%//OÅÅÅ^ÿÆ"Ê
 ™•‡§‘oå¨7k¡Þüõf-Ô›£Þ¬ÅêÍҍ£$ÅÆÆ*99ÙìeXJJJŠöîÝkÊÜäáÌÌ<<|QoÖB½ù7êÍZ¨7ÿF½Y‹/ÔŸq    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ¢q    ò«ÆÑf³Éf³)88X‘‘‘z÷Ýw+ÜWÙþէ̈#´gϝ?^=zôpl_µj•Ú´i£ºuë*::ZÙÙÙ’¤5kÖ¨mÛ¶NÛý™•ó(3cÆ—ó˜•ó---ÕŒ3Ô´iSDÆVÎcíÚµjÕª•êÔ©£–-[jíÚµ—zºÇ
+ù–ùõÏÍãǏ«gÏž
+		QÏž=uüøñšœ¢O±rø|ÃÓ¬œoUÛý‘•ó´ç~Õ8J’Ýn×¹sç4wî\9²ÖÆ)--UPP¶nݪ®]»:¶¯_¿^6lPaa¡¦M›¦ÁƒKºøƒ|ÕªU***ÒØ±c5dȐ¯Í—X5IÚ±c‡.\Xã5Áºù&''kÕªUÚ°aƒ.\¸ »Ý^ãµù«æ‘ ùóçë§Ÿ~RZZšFŒQãµ2³ó•*ÿ¹9iÒ$ÅÄĨ°°P111JJJªñÚ|‰UóÔçžfÕ|¶û3«æhÏ7ü®q,\+㤦¦Êf³iéÒ¥ŠŠŠR¯^½”––æ¸Â°lÙ25oÞ\AAA
+VÓ¦M%I«W¯V»víT¯^=õíÛWW^y¥GÖç+¬–ÇÙ³g• +Vxd]Îjù.Z´HsçÎU»víüþê_e¬–GóæÍ%ýr8,,Ì#ëTfåëêçfvv¶U¯^=%&&*++Ë#ëóVË#ПoxšÕò
+ôç/VË#Оoø]ãh³Ù¢qãÆ)##Ããã$&&ª  @qqq²Û튋‹S~~~…+6›MõêÕÓ¨Q£œÖðÝwßiàÀJKK«ñÚ|‰Uó˜:uª†®;ï¼³æ'Ëæûí·ß*;;[W\q…ÂÂÂ*};Š?²j.Ԑ!C¢‡zHééé5?É fv¾®~nèºë®“$5jÔH§NªñÚ|‰Uó(hÏ7<ͪùêó«æhÏ7꘽ OsõqHHˆŠ‹‹U¿~}IRqq±êÕ«WíqÊ_M(ûºQ£Fš?¾ÆŽë8öçŸÖºuë4tèP:tH’´}ûvÅÇÇë¹çžÓ}÷ÝWý“óAVÍ#--Mv»]&Lpëïo/¨
+VÍ744T}úôQJJв³³5|øpý×ýWÎÑ—X5¡C‡*33S½{÷Vvv¶†
+¦/¾ø¢FçÈÌÎ×ÕÏÍÐÐP<yRMš4Q~~¾BCCkt~¾ÆªyHù|ÃÓ¬šo >±jö|Ãï^qt¥gÏžš9s¦Š‹‹U\\¬™3g*&&¦ÚãØív?^999Úµk—FŽ)»ÝîxÒ”˜˜¨“'OJ’‚‚‚túôiI_Êîß¿¿222ôðÃ{îÄ|”Ùy”––Ên·;~€Â]o2;ß¾}ûJúå‡ ¼}ĈÙyäççKú%‡²ÛðoåëêçfŸ>}”ššª³gÏ*55Uqqqž;9dv<ߨ]fçËó—ŠÌÎ#ОoLã¸xñbíܹS7VãÆµk×.-^¼¸FcmÙ²E=zôPAA6lXᾨ¨(EGG«Aƒš5k–V®\)Izä‘Gôý÷ßëî»ïvüV§âââK>/_ev¨]fç;wî\Í™3Gõë×׸qãôÚk¯]ò9ù2³óÈÈÈИ1ctÅWè‰'ž¸_êPÛ¼•¯+sæÌQnn®®¾új}üñÇš;wnæöfçÁóÚev¾¨Èì<íù†_½UÕèªKXX˜6lØpÉãHR^^ž$)..ÎéÊjBB‚ª=¦?²rÕ•³r¾7Þx£rrrÜšß_X9AƒiРAn͏ÊY!_WãÜ|óÍÚ²e‹[óû+çÁ¿i—
 ÎÊùVg|aå<íùFÀ¼â    ¨G    €!G    €!G    €!G    €!G    €!G    €!G    €¡:f/ÀÈ÷߯7jÏž=f/ÅR¾üòKÝ|óÍ^Ÿ—<*gVžF¾•£Þ¬…zóoÔ›µPoþz³_¨7K7Ž%%%jܸ±¢¢¢Ì^Š¥œ9sF.\ðú¼äQ9³òð4ò­õf-Ô›£Þ¬…zóoÔ›µøB½Yºq¼ñÆuÛm·)99Ùì¥XJJJŠöîÝëõyÉ£rfåáiä[9êÍZ¨7ÿF½Yõæß¨7kñ…zã3Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C~Õ8Úl6Ùl6+22Rï¾ûn…û*Û¿ºã”1b„öìÙ£óçÏ«GŽí«V­R›6mT·n]EGG+;;Ûp»?³rec–ý‡êó¥|5jt©§kyVÎãƒ>PDD„BBBÔ»wo8qâRO7àX!ß23f̨0~ þ,µrø|ÃÓ¬œo >ñ¥<üýù†_5Ž’d·ÛuîÜ9͝;W#GެµqJKK¤­[·ªk×®Žíëׯ׆
+TXX¨iÓ¦iðàÁ†ÛýUó(³ì?ÔŒUó-Ÿí–-[ô裏Öxm¾Äªy>\©©©***Òĉ•””Tãµ2³ó•¤;vháÂ…NãâÏQ«æ¨Ï7<ͪù–hugÕ<íù†ß5Že‚ƒƒkeœÔÔTÙl6-]ºTQQQêÕ«—ÒÒÒW–-[¦æÍ›+((HÁÁÁjÚ´©áö@aµ<$éšk®QýúõõÛßþVGõÈú•ó-óÂ/èñÇ÷Èú|…Õò(--•ôËUà?üÐ#ëTfå{öìY%$$hÅŠ™ß_X-@¾áiVËW
+ìç/VÌ£L <ßð»ÆÑf³)$$DãÆSFF†ÇÇILLTAAâââd·Û§üüü
+W}l6›êÕ«§Q£FU8ÖÕvfÕ<ìv»
+uäÈÝzë­2dHÍO2€Y5ß2›7oVÆ
+uÃ
+7Ôxm¾Äªydddh̘1jР²²²têÔ©šŸd 3;ß©S§jøðáºóÎ;/ù\ü•óÄçžfÕ|õù‹Uó((Ï7꘽ Osõ²}HHˆŠ‹‹U¿~}IRqq±êÕ«Wíq~ý¾fIjÔ¨‘æÏŸ¯±cÇ:Žýù矵nò;l    IDATÝ:
+:T‡2ÜîϬœ‡$5nÜXÏ<󌮹æšê$Y?ßéÓ§kΜ9Õ;)fÕ< HºøyÇÊ>W‚ª™oZZšìv»&L˜àØ'Þ*÷kVÎ#Ÿoxš•ó•ïù‹Õó”ç~÷Š£+={öÔÌ™3U\\¬ââbÍœ9S111ÕÇn·küøñÊÉÉÑ®]»4räHÙívÇ“¦ÄÄD<yR’¤Ó§OnTfçQæÇÔÌ™3}é'+äûñÇ«¤¤D:tðÌIù0+äa·Ûµÿ~%%%iôèÑž91Hò^¾¥¥¥>WÈM£³óàùFí2;ß2<¹È
+yÒó€i/^¬;wªqãÆjܸ±víڥŋ×h¬-[¶¨G*((PÆ
++Ü¥èèh5hÐ@³fÍÒÊ•+
+·*³ó(ûíW7Üpƒ¶nÝÊgv<Ìì|¥‹Wÿ/é<ü…ÙyØl6©OŸ>zà4yòäK>'üÂ[ùºRþ·;ÒoztÅì<x¾Q»ÌΗç/™‡XÏ7üê­ªFW?ôaÆKG’òòò$IqqqŠ‹‹«p_BB‚œŽqµÝŸY9®”_:+ç+I}ô‘[óû+çA½]:+äëjœ@Ì×Êyâó
+O³r¾Ô[Efç!Öó€yÅ    P34Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     C4Ž     CuÌ^@Uòòò4kÖ,³—a)¹¹¹
+
+
+5enòpffžF¾Î¨7k¡Þüõf-Ô›£Þ¬ÅêÍҍã-·Ü¢ââbíÙ³Çì¥XJhh¨Ú·oïõyÉ£rfåáiä[9êÍZ¨7ÿF½Yõæß¨7kñ…z³tã­èèh³—ÿCþ|­…<üùZyø7òµòð]|Æ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `ˆÆ    `È´¿ãxàÀeffš5}@سg:vìèÖ¾äQûª“‡§‘oí£Þ¬…zóoÔ›µPoþz³3ëÍ”Æ1::ZEEEfLP:vì¨nݺU¹yx‡»yxùzõf-Ô›£Þ¬…zóoÔ›µ˜Uo’Ic÷îÝÕ½{w3¦F%Èÿ‘¯µ‡#_k!ÿF¾ÖBþÏ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    yüï8þãÿPzzº§‡ƶmÛÔ*êj·ö¥Þ€KC½ÞC½ÞSzs—GǨN­tºèŒòÏðä°@@iyÛÕêÜã–*÷£Þ€KG½ÞC½Þãn½U‡GÇ.·ß¢.·{v *G½ÞC½ÞC½ÖÄg    †h    †h    †h    †h    †h    †h    †Üþ;Ž{wÖ’ëjs-     /Ù±õ€bºµpk_·ÇîÝ»ëÇ”J.i]     ‹èÙ5L½zõrk_·ÇØØXÅÆÆ^Êš     >ŠÏ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    ¹õwóòò”››[Ûk    xQ÷îÝÕ«W¯*÷s«qÌÉÉQ曯ªs[.ya     óíÝyX?þø£çGIêrû-7-þ’    °†W篓JÝÛ—Ï8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    Ñ8    ¹ýwݱwçaíØzÀ“C    ª)ªS+uîq‹ÇÆóhãøé–Úü׃êÙ­›'‡    ¸éÓÝ»uºèŒuGIêÙ½›¦Ožìéa    nH}%]ßþìÙw‚òG    €!G    €!G    €!G    €!G    €!G    €!G    €!G  
   €!G    €!G    €!GmnöJ.\PÂØ'L™;aì*¹pÁ”¹   ÔSÇÐáúË›o:m«ìkW÷¿½~}…û,Zìt\vNŽB[„ëÍ«5mm®ÐẶe+u¾³·>ÈÊrÚç‰)Sôù:_R¢¾:¶¯}ÿ}uë£Æ‘Šéw¯r6ov:ö÷×+:ê¶*)[ǯϷ´´T~ùµùj©®}újåÚµNëoÞRín¿C«ßyÇq_ûÛÚé÷+æ   À÷™þŠãʵoëØñã5>>céRÙívIÒù’­zûm§}½ñ†úÿæn-~c¹Ç築S_щƒ_è¹?NÓ“S¦:Ý_ZjWPP>ݵKÚ·wlÿÛ¦ôÖ²×õÍg{5áñ1ñÄ“NǾùÞ{êÙ½{•ÇœúêˆN}uÄéøÔWÒõᦍZùêb?°_Y´P¹›·8­?ÿð!-˜3[“žzÚ±½g÷îzó½÷ªÿ€    °4ÓÇ9ÏÌÐø?þI¥¥¥5:¾}Ûvúkv¶$iÍ;ï¨ï±î?z옾=þ/-Y°@ÿú÷¿õõ7߸=ÿ?>û\=ïé§ëZE¨ç=ý´wß>IÒŽüCïì­om«gfÍvìððaÝ5ð÷j©.½ã´mÇNõW¸ýÊ’%ŽWAïøÍ=º7~°2–.u¼*˜þ¿ótsÓ¦²)8(X74iâ4æ®={ÔªEÇmwŽ)ﵿüEfÍÒ-‘‘º¬NµjÑB¯Ì›ërÿƍ9¾nÕ¢…vïÝk8>    ßczãØ:"B½cbôò«Kjtüÿoïî㢪óÿÿ?\!£3MÝ1ÉUñZKo’¨m¦­«kh©» æV–h^­}Z5KPñ»„ÙâÅš–~Ýj[³O®hXßMmµ´O¥lîÖþ*	É4‘óû£/ÌaaΙ™Çývës®Þï3O_0¯3gàwIIú?«ž“aúÓúç5y—õë7mÖìGQƒÐPÍ™þ¨ÖoÚìñøÏž­‰cuúØQM›¨‡fÍ–$MŸ÷{=˜œ¬S‡©åM?4b>6KI÷Ó¿ Ô?<¡GæÎ­vΑí¢Õ"æVÍ{r‘þ¸dÉû''ëŸÿxOo¿MgÿY ·ß¦SG»¼3Ù.Z7ÝÚQÓÿ{e,yºÊ±Ïž;§k5ª2žÙ>•}ñå—ŠŽŠrîWÝí¬·ÚÞûÛ$=õ_;—_{íµ*:{Öôø    üå£$=˜œ¤¼wÞÑÿ~ü‰Ëò°†
 
+õÍ…ÎÇß\¸ °°0—mÚµm£›Z´ÐìÔ!:Z­nºÉ¹îÒ¥KÚ´m›’ž¦ÈvÑJzxš6mÛ¦K—.y4þÇ'Ojbb¢5j¤ñcÆè£O>q.¿̯uÍ5×h½÷:·?vü¸š5[7ÝÚQc’’uòŸÿ¬ö|Ïþ³@_Ÿ:©#yyñ‹;Ë#ÛE«]\7í}gŸ"ÛEkï;ûÔ¾{­}á—}ÿ¿Oèÿ<ý”¦Î˜Y娑Mš¸<gžìSY‹æÍõé¿ÿíܯºÛYÏþ³@E§ôʦ5ñbçòo¾ùFM##M   ÀÿØ¢qt8úãÓOé±'žpYÞ·WO­XµJß\¸ o.\ЊU«t[¯^Uöxò$ýùÅMšúÛߺ,iûvuïÚÕÙ ýgzÄÅé¥íÛ=¿CûöÊ~é%}ûí·Ú´m›níÐA’sË-Ê~é%]¼xQÿý——œÛÿ¼S'=—¾\ÿ9qÜÙ\ÕÆÙè¡IÉzmK¶ö¾¶]uöŸš2q¢$é÷O.VaQ‘$)$$D¥ß|SåÝ»vuiX=Ù§²	‰÷jæãëÔ§ŸêÊ•+*8}Útû¯‹œ_ŸúôSu‹õìd   ø
+[4Ž’tsëÖº̯]–e¦¥éèûè–=uKž:öÁqe.M«²o¿^½töŸêÓ³‡Ëòu/¼¨þ_ÓU၉õçj~INuã¯\¶Tk_xQm~«Ù[ôì²ï?ÏøLZªV­û³¢»÷Ðgÿùsûµ™Ï(ç•WÔ®[÷joñôÄÁÃGÔ«{w=W¬È&M\ÖuîØQ†Ý­¶±]õÌŸ²ôç•™Uö=b„Þ9p Æ}*ϯò׳¦MSßž½4bÜ}ºéÖŽºoÊZ÷Ì3.cTüVÕINײEËÿo~¾~}Ï=µ>g    öæ˜7ož‘ššjºQZZšNþgŸ¦ÏO4ÝîÏ+·Ëq6RæÌñæQ—ËÊ45e†Ö?»Òçc'O{DkžÉPƒÐК7   P/2þ”¥Ï¾ýУþíšòvò¤làÍ	Âz?iÐÀ’¦Q’eã   ¨_¶¹U    `O4Ž     S4Ž     S4Ž     S4Ž     S4Ž     S4Ž     S^ÿ;އÞû‡2²²¼}X    €þïŠŠ½Þ«ÇôjãÛã/¹ ó¡7    ðPÛŸ_¯žý~æÕczµqìuÛÏÔë6ïN    `->ã    0Eã    0Eã    0Eã    0Eã
     0Eã    0Eã    0åÕ¿ãxìðIÚÿ¡7	¥Ø·ÔøG[©7À;¨7Àw¨7Àw<©·Úðjãøî¾õÖÿ|¬>}úxó°@Pyï½÷t¾äB…N½uG½¾C½¾ãi½Õ†WGIêÓ§æÌ™ãíÃA#++K_ëÙ•Vê
+¨ê
+ðê
+ðÚÔ›§øŒ#    À#    À#    À#    À#    À#    À#    À#    À#    À#    ÀT at 4ŽÑÑÑVOÔà;Ôà;Ô`ÎÒÆqïÞ½ºë®»£„„ýío«÷1;)DGG+::Z·Ür‹
+¤]»vUÙfîܹúðÃUVV¦Ñ£GWÙ÷ÇÇýõ×uçw*&&Fwß}·ÞyçïPÁPo¯½öšL½ÁrÁPožyæ^pÃRÁPo•—So°Š¥ãÌ™35eʽÿþûZ¿~½öìÙcåt$Iú裏4þ|Í›7¯ÊzÃ0¢#Gލk×®.ûTÙþõ×_×Ê•+õþûïkâĉzôÑGëuþ€;ÁPoo¾ù¦6nܨcǎ顇¢Þ`™`¨7Izÿý÷•]os<,õV±ÎÝz ¾YÚ86iÒDgΜÑñãÇuã7*##ùîƒ>аaÃÔ¡C
+6LǏ—$?~\#FŒP‡ª\qyçwÔ»womݺU'OžÔ¯ýkçէÇ;·÷äjMhh¨Ëãõë×+::ZùË_t×]wiìØ±Ú°aCÇyöÙg£°°0õïß_5òøù¼)êmÅŠjݺµBBBª-Zxüü ÞõvéÒ%Í™3Güã=~^€úõ&I±±±êÒ¥‹&Mš¤Ï?ÿÜ£çð&KÇuëÖé³Ï>Ó“O>©~ýúéå—_v®›={¶uôèQ%&&jöìÙÎå£FÒñãÇ]®¸¼òÊ+Z°`žþyÝ{z5k–ƍ§>ø@O<ñ„æÎëÜÞìjMtt´n½õV-Z´HK–,q.ONNÖ{ï½§Ûn»Mºí¶Ûtøða¯úœ9sF>ø ,XPëç	ð†`©·èèhuìØQ¿ÿýïõôÓO_ÕsÔU0ÔÛ²eË4fÌõë×犯'À‚¡Þ
+
+
+tìØ1íÝ»W:tÐôéÓ¯úù®V+o×®/^,Iúøã5nÜ85J’tòäI%&&*<<\cÆŒÑSO=%Iúä“O4vìX5lØÐåXsçÎÕš5kÔ¹sgIß_Iš={¶ó„ÃáðhNfß ~üu=´páBMœ8Ñô˜GÕ#<¢™3gjðàÁÍð¶`©·‚‚]¼xQ»wïÖÌ™3õæ›oz4À›‚¡Þ6lØ Ã0œóŽŽæ:X"ê­Â
+7Ü ””ÅÆÆz4À›,}ÇqÆŒúôÓOõÝwß飏>Ryy¹s]ûöíõÒK/éÛo¿Õ¶mÛÔ¡CIRLLŒ¶lÙ¢ï¾ûÎåXk×®ÕìÙ³µsçNIR§N´|ùr畤S§NI’4h ¯¾úªÖs-((Prr²²³³µ}ûv%&&ª   Æ"ß²e‹&Ož¬§Ÿ~Z#Gެõ¸€·C½-^¼XEEE’¤}óÍ7µð†`¨·S§N¹¼ãBÓ«C½U())ÑsÏ=§N:Õzl ®,m
+¤I“&©sçÎÊÈÈPjjªsÝÒ¥Kõâ‹/*66V[¶lѲe˜˷mÛ¦Ÿýìg.Wm¨7jÑ¢EzþùçõÌ3Ïè•W^Q÷îÝ]îA¿ï¾ûU¿‘êÈ‘#êÞ½»Š‹‹Õ¤I—u•Ǩüõüùóõõ×_ë7¿ùsù…j=6PWÁPo;vÔÝwß­®]»*++K™™™µð†`¨7À.‚¡Þ*¾îÓ§Ž9âò9NÀWóæÍ3*XuÒÒÒtò?û4}~¢év^¹]—Š"5gÎoÎ*YYYúúÛ©7À¨7Àw¨7ÀwjSo×”·“'ý ¥ï8    ìÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ªƒ¾÷Þ{:pà€C–êÖ­›úôéãÓ1©7+ê
+ðê
+ð+êM²¨q<pà€Þzë-
+8ЊáKäç竤¤Äç…N½!Qo€ïPo€ïXUo’E£$ÅÇÇ+55ÕªáŸKKKÓéÓ§-›zC°¡Þ ß¡Þ ß±²ÞøŒ#    À#    À#    À#    À#    À#    À#    À#    À#    À#    Àc=)++Sbb¢eã'&&ª¬¬Ì²ñ_¢Þ ß¡Þ ß¡Þ`'~Ñ8:Žj—oÛ¶M;wVÃ
 †
+§ÜÜÜj÷u8
+
+
+ULLŒ^}õÕ*ÛLš4IGÕåË—Õ¯_¿*ûþx|OÆÝºu«zöìé|œ““£Ž;VÙÇݱ‡¶nÝêrÌ+V¸Ì¥bn!!!jÓ¦6mÚä\×£G*ûž°[½¹«Ê¨7ø+»Õ[……º]G½Á_Ù­Þ*/§Þàü¢qtgÛ¶mÊÉÉQII‰¦M›¦qãÆU»aºté’ÒÓÓ5yòä*ëËËË¢ýû÷«wïÞ.û†qUãfgg+>>ÞùxÇŽÚ¹s§Š‹‹5þ|;¶Æceff:Ç¿|ù²^|ñÅjÏ­¬¬Lëׯ×Ã?ì\¯ìììjŸàjXUoîj§2ê
+Æªz“¤C‡iÍš5nçF½!ÐXYoëÜ­§Þ`'~Ý8nݺU]ºtQxx¸†¢k¯½ÖtûÐÐP—Çr8Ú°aƒbcc5pà@effº½êS›q<¨˜˜çã^xAmÛ¶UHHˆBCCÕºuëÕ½{wýío“$mÞ¼YÆ
+3W‹-œ_ÇÄÄèÝwß5ݨ
+«êÍ]íTF½!ÐXUo/^Trr²6oÞìvê
+Æªz“¤Æ+""BÇ×éÓ§«¬§Þ`'~Ý8Vøâ‹/4zôheffV»Þáp(,,LÓ§O×êÕ«ËSRRTTT¤„„†¡„„º½êS›q‹ŠŠQeáááš2eŠË<ÜkúôéZ²d‰ÃPFF†zè¡jÏ-44TÆ
+ÓŠ+œË#""ôõ×_{t@mXQofµ#Qo\¾®·yóæ)))IwÜq‡Ûm¨7*_×›a*..VAA:uêTí;ÔìÄïǃª_¿~JIIÑ=÷ÜSí6†aèÊ•+:yò¤Få\îp8Ô´iSíÞ½[‡C»wïV³fÍôì³ÏÖyܦM›ª´´´Ê<.\¸ ¬¬,M˜0¡Æcµoß^­ZµÒ´iÓtë­·ê§?ýiµçV^^®]»viÆŒÎ奥¥ºá†j< 6¬ª7wµSzC ²¢Þ2335sæLç;%Õ½cB½!YõóM’š7o®E‹éСCUÖQo°¿n×®]«#FhõêÕ?~|­÷7C3fÌP^^žŽ9¢É“'Ë0M›6­ÎãöîÝ[ü±óqJJŠÎœ9#I
+		Ñùóç=:ÖÌ™3õÜsÏéÑG­ñ|*Ž/IŸ|ò‰zõêUã>€§¬ª7wµSõ†@cU½•——»|ÞªºwL¨7«ê­Â¹sç´dÉÅÅÅUYG½ÁNX=Oýøª§azà$IwÞy§sùùó竼¥ofß¾}JKKÓÛo¿­¦M›º³âkOÇ;v¬öîÝë,¶ØØXÅÅÅ©°°P±±±Ú²e‹$¹=V…˜ÞêP1¯–-[jåÊ•Îåyyyn?Ü
+ÔÄNõæ®v*£ÞàÏìTož ÞàÏìTo_‡‡‡ëöÛo¯ö³ÅÔìÄ/G³ßDuµûVÈÏÏ—$%$$(!!ÁkãÞ{ï½.W|’““•œœìñ±<Yn6C‡¹Üj xÊnõæ®v*£Þà¯ìVožlC½Á_Ù­Þx=	㍣?úÉO~¢œœËÆ·rlÀר7Àw¨7Àw¨7؉_Æ    Pÿh    ¦h    ¦h    ¦h    ¦h    ¦h    ¦,û;ŽùùùZºt©UÃ>·wï^EEEY26õ†`C½¾C½¾ce½YÒ8ÆÅÅ©¤¤DŸ~ú©Ã–ˆŠŠRŸ>}|>.õ†`D½¾C½¾cU½I5Ž}ûöUß¾}­:Ôà;Ôà;Ôà[|Æ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `Ê’¿ãøÞ{ïéÀV
+Xª[·n>ÿ£­Ô‚õøõøŽõ&YÔ88p at o½õ–hÅð€%òóóURRâóB§ÞŒ¨7Àw¨7Àw¬ª7É¢ÆQ’âã㕚šjÕð€Ï¥¥¥éôéÓ–ŒM½!ØPo€ïPo€ïXYo|Æ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ±ž”••)11ÑêiÔ(11QeeeVO¨ê
+ðê
+ðê
+v⍣Ãá¨vyNNŽ:v쨆
+*..N¹¹¹Õîëp8ª˜˜½úê«U¶™4i’Ž=ªË—/«_¿~UöýñøÛ¶mSçΝMÇݺu«zöìYeùÂ…]Ž÷ù矫ÿþ
+SÿþýõùçŸK’^ýuuèÐAaaa4h¾üòKIRyy¹.\¨Ö­[+$$Äy¬ÊÇ<~ü¸:tè ?ýéO.ç¢6mÚhÓ¦MÎm{ôè¡­[·Vóì"XÙ­Þ<—zƒ¿²[½UøqíTF½Á_Ù­Þ*/§Þàü¢qtgÇŽÚ¹s§Š‹‹5þ|;¶ÚíÃÐ¥K—”žž®É“'WY_^^®íß¿_½{÷vÙÏ0Œ*ÛoÛ¶M999*))Ñ´iÓ4nܸ*Ûdgg+>>ÞeÙ¡C‡´fÍ—e³fÍÒ€T\\¬höìÙ’¤¤¤$edd¨¤¤D=ö˜syjjªrrr´sçN]¹r¥ÊüöìÙ£‘#GjݺuzðÁ]Î¥¬¬Lëׯ×Ã?ì\¯ìììjŸ7 2«êÍ“q©7«êMª¾v*£Þh¬¬·ŠuîÖSo°“VO .^xáIÒ¥K—ªÖ­[›nêò8##C3f̐$mذÁ¹<33ÓmKr¹¢2dÈ=õÔSU¶9xð bbbœ/^¼¨äädmÞ¼Yƒ
+r.ÏÍÍÕ| ððp¥¤¤¨K—.’¾ÿæ#ýpåç7ސ$­]»V«V­rnWÙÆµråJíÚµKQQQnçߢEç×111z÷ÝwÝnT°ªÞ<—zC ±ªÞÜÕNeԍUõ&I7Ö•+W¯U«V©mÛ¶.ë©7؉_¿ã(}_áááš2eŠV¯^ív›°°0MŸ>Ýe›””)!!A†a(!!A………5y…/¾øB£GVfff•uEEEŠˆˆp>ž7ož’’’tÇwTÙîÆo”$5kÖLgÏž•$­^½Z=ôš4i¢]»v9—öÙgÊÍÍU£Får«Ä#<¢Y³fU[ä·W6L+V¬p.ˆˆÐ×_íÑùVÕ[MãRoDVÔ›»Ú©ŒzC ²¢ÞÃPqq±
+
+
+Ô©S§jï`£Þ`'~ß8†¡.(++K&Lp»Í•+WtòäI5ʹÜáp¨iÓ¦Ú½{·‡vïÞ­fÍšéÙgŸ­q܃ª_¿~JIIÑ=÷ÜSe}Ó¦MUZZê|œ™™©™3gV¹‡<22RgΜ‘$*22R’4jÔ(>}Z.\ðJPD    IDATÐСCõÓŸþÔ¹ýàÁƒuöìY­ZµJS¦Lqޱ{÷n¥¤¤T{«€a*//×®]»œWÅ$©´´T7ÜpCçHÖÕ[MãRoDVÔ›»Ú©ŒzC ²êç›$5oÞ\‹-Ò¡C‡ª¬£Þ`'~Ý8¦¤¤8‹$$$DçÏŸ¯Õþ†ahÆŒÊËËÓ‘#G4yòd†¡iÓ¦™î·víZ1B«W¯Öøñã«Ý¦wïÞúøãËËË]îa¯øÿàÁƒ•‘‘¡‹/*##C			.ó;qâ„fÏž­©S§JúþÖXIÕþPïÕ«—vïÞ­9s渽Z&ÉùœIÒ'Ÿ|¢^½z™ž/ YWožŒK½!ÐXUoîj§2ê
+Æªz«pîÜ9-Y²DqqqUÖQo°¿ùŒã¯z†¡ØØXÅÅÅ©°°P±±±Ú²eK­»oß>¥¥¥éí·ßVÓ¦MÝŽYñµazà$IwÞy§sýùóç]n%;v¬öîÝ[c-_¾\‰‰‰ºþúëÕ«W/åä丌ײeKM:UsæÌ‘$¥§§ë¾ûîÓ¯~õ+µiÓFÏ?ÿ¼Ëñ:w{÷jȐ!:wîœæÎ[åx+W®tnŸ——Wí­nvª7OÆ¥ÞàÏìTož ÞàÏìTo_‡‡‡ëöÛo×æÍ›«—zƒøEãèî‡Yrr²’““¯jß
+ùùù’¤„„—«3fûzòÃõÞ{ïuûndåýo¾ùfíÛ·Ïã1Zµj¥¼¼<Óí£££uêÔ)æ{èÐ!—[
+ »Õ›'ãRoðWv«7O¶¡Þà¯ìVo¼ž„¿ñ‹ÆÑýä'?q^í±3˜#Pê
+ðê
+ðê
+vâןq    Ô?G    €)G    €)G    €)G    €)G    €)G    €)ËþŽc~~¾–.]jÕð€ÏíÝ»WQQQ–ŒM½!ØPo€ïPo€ïXYo–4Žqqq*))ѧŸ~jÅð€%¢¢¢Ô§OŸK½!Qo€ïPo€ïXUo’Ecß¾}Õ·o_+†‚õøõøõøŸq    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜²äï8¾÷Þ{:pà€CnÝºÕøGBÉÃw<ÉÃÛÈ×w¨7{¡Þõf/Ô[`£ÞìÅŠz“,j8 ·ÞzK´bø ‘ŸŸ¯’’’ÿa‘‡oxš‡·‘¯oPoöB½6êÍ^¨·ÀF½Ù‹Uõ&YÔ8JR||¼RSS­>(¤¥¥éôéÓmKõ¯6yxùÖ?êÍ^¨·ÀF½Ùõب7{±²ÞøŒ#    À#    À#    À#    À#    À#    À#    À#    À#    À#    Àc=)++Sbb¢ÏÇMLLTYY™Ïǵ;òläk/äØÈ×^È#°‘¯½{~Ñ8:·Ë+þ3Û×áp(44T111zõÕW«l3iÒ$=zT—/_V¿~ýœË·mۦΝ;«aÃ†Š‹‹Snn®Ë~.t;öÖ­[Õ³gOçãòòr-\¸P­[·VHHH•ý~|¬Ê_?~\:tПþô'—s
+		Q›6m´iÓ&ç¶=zôÐÖ­[Ý>Þ`·<*Œyx›Ýò­)+)°óµ[?®·fÍšU9f çámvË÷å—_Ö-·Ü¢
+¨}ûözùå—«3óµ[¯¿þº:tè °°0
+4H_~ùe•crÞfU¾999êØ±c•|?ÿüsõïß_aaaêß¿¿>ÿüó*Çä|í–‡'ãržð‹ÆÑÃ0d†GÛ]ºtIéééš<yr•õååå
+		ÑþýûÕ»woçòmÛ¶)''G%%%š6mšÆç\wèÐ!­Y³Æí˜ÙÙÙŠw>NMMUNNŽvîÜ©+W®¸ÌÛìX{öìÑÈ‘#µnÝ:=øàƒ.çTVV¦õë×ëá‡v.Wvv¶ùRO¬Ì£blwãcÞfU¾fYUÆ|­Ê£r­íÛ·O¿ûÝïª3óð6«òMNNÖÊ•+õÍ7ß(33S“&MªrÌ`Ìת<’’’”‘‘¡’’=öØcš={v•ccÞVßùîØ±C;wîTqq±æÏŸ¯±cÇJ’fÍš¥¨¸¸X ßJs²"OÆ
+Æ<*óëÆ±¶BCC]gddÈáphÆ
+ŠÕÀ•™™é¼°uëVuéÒEááá2dˆ®½öZIÒÅ‹•œœ¬Í›7»ëàÁƒŠ‰‰q>^»v­ÒÓÓÕ¥K—«
+fÇÚ¸q£æÌ™£]»viàÀnÇjÑ¢…ó똘½ûî»5<öà­<$©qãÆŠˆˆÐðáÃuúôé*c‘‡ïy+_wYUF¾5óf½Uxúé§]~°U ßóV¾mÛ¶•ôÃUñ¨¨¨*c‘oͼ•Gyy¹¤òxã7ªŒE¾WÛ|_xáµmÛV!!!
+
+
+UëÖ­%I¹¹¹JIIQxx¸RRR´k×®*c‘oͼ•‡'‚= h‡ÂÂÂ4}út­^½Ú¹<%%EEEEJHHaJHHPaaa•«
+_|ñ…F­ÌÌLIÒ¼yó”””¤;î¸Ãí˜EEEŠˆˆp>þì³Ï”››«F)**Êù–ºÙ±yäÍš5«ÚÜoÏ6L+V¬p.ˆˆÐ×_íÙcoça†Š‹‹UPP N:¹¼Y<|ÇÛùºËª2òuÏÛyTxçwÔ´iSµlٲʘäá;ÞÎwÍš57nœÂÂÂtÿý÷+++«Ê˜äëž·óX½zµzè!5iÒD»víÒÙ³g«ŒI¾S—|‡ÂÃÃ5eÊç¾EEEºñÆ%IÍš5#ßZòvžö<‚¢q4CW®\ÑÉ“'5jÔ(çr‡Ã¡¦M›j÷îÝr8Ú½{·š5k¦gŸ}Ö¹ÍÁƒÕ¯_?¥¤¤èž{î‘$effjæÌ™Î+Õ½Ò´iS•––:GFFjðàÁ:{ö¬V­Z¥)S¦Ôx¬Ý»w+%%¥Ú·¦
+ÃPyy¹víÚ¥3f8——––ê†n¸ªçÉW¼G…æÍ›kÑ¢E:tèP•1ÉÃw¼¯»¬*#_÷ê«Þ,Xàò\TF¾ãí|'L˜ ììl]¼xQ›7oÖĉ«ŒI¾îy;Q£FéôéÓºpႆªŸþô§UÆ$ß©K¾†aèÂ…ÊÊÊÒ„	$}ŸÕ™3g$I………ŠŒŒ¬2&ùºçí<<ìyEãèŽaš1c†òòòtäÈMž<Y†ahÚ´i’¾ûyĈZ½zµÆïܯ¼¼Üå>èêî‡îÝ»·>þøcçã!C†HR•@fÇêÕ«—vïÞ­9sæ˜^
+©ø¦#IŸ|ò‰zõêU»'Â&®6
+çΝӒ%KWeyXïjóu—Ueä[{u©··ÞzKeeeêÖ­[µÇ&ë]m¾………’~Ȩâqeä[{u©7Ã0tâÄ	Íž=[S§N­rlò°^Mù¦¤¤8Ÿ»?^’4xð`eddèâÅ‹ÊÈÈPBBB•c“oí]mžö<X=OýøÅ¢aÕþ–"O>L[Ù¾}û”––¦·ß~[M›6uY÷ÀH’î¼óNç²óçÏ»¼EíÎØ±cµwï^gÈéééºï¾ûô«_ýJmÚ´ÑóÏ?ïÑü:w{÷jȐ!:wîœæÎ+é‡ómÙ²¥V®\éÜ>//¯Ú[5½ÍNy\wÝu’¤ððpÝ~ûíÕÞOèyx›òõ$«@Ï×NyDDDhÁ‚JIIq{Ü@ÏÃÛì”oÅ­‘ÿþ÷¿Õ¦M›j±C çk§<*~¾µlÙRS§NÕœ9sª7Ðóð6+òU\\œ
+«-[¶H’–/_®ÄÄD]ýõêÕ«—rrrª7ÐóµSžŒèyÔÄ/GwÿX<ýKfòóó%I			U®ôÔåø÷Þ{¯ËUÃV­Z)//ÏãcUþ:::Z§Nòh^‡r{û˜·Ø-OÆ
+ä<¼ÍnùFDDÔ˜U çk·<$éÍ7ß4=n çámvËw̘13fŒéq9_»åÁÏ7ï²*ßääd%''WÙçæ›oÖ¾}ûLÈùÚ-ê­f~Ñ8ú£Ÿüä'Õ^9ªoVŒéÈ#°‘¯½G`#_{!ÀF¾öìyõg    5£q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜²ìï8æççkéÒ¥V
+öîÝ«¨¨(¶%úW›<¼|ëõf/Ô[`£Þì…zlÔ›½XYo–4Žqqq*))ѧŸ~jÅðA#**J}úô©q;òð
+Oóð6òõ
+êÍ^¨·ÀF½Ùõب7{±ªÞ$‹Ǿ}ûªoß¾VjG`#_{!ÀF¾öB|í…<Ÿq    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜²äï8¾÷Þ{:pà€CnÝºÕøGBÉÃw<ÉÃÛÈ×w¨7{¡Þõf/Ô[`£ÞìÅŠz“,j8 ×^{M]»vµbø qâÄ	•””Ôø‹<|ÃÓ<¼|}ƒz³ê-°QoöB½6êÍ^¬ª7É¢ÆQ’ºvíª)S¦X5|PÈÎÎöx[ò¨µÉÃÛÈ·þQoöB½6êÍ^¨·ÀF½Ù‹•õÆg    ¦h    ¦h    ¦h    ¦h    ¦h    ¦h    ¦h    ¦h    ¦h    ¦h    ¦ü¢q4C/½ô’&Nœ¨¡C‡jüøñzã7êe¬AƒiРAJHHÐĉõÎ;ïTÙfùòå:uê”ÊÊÊ4mÚ4çò½{÷*))IC‡Õ”)Støða—ý6nܨAƒÕ˼}Éßó¨8fÅpåïù†¡7j̘1JHHðûŒý=×ÛÈ‘#ëeîþÊßó}ûí·5~üx
+<X÷ß¿Þ~ûíz™»¯ø{Є	4tèPÍœ9SgÏž­—¹û+É÷Í7ßÔo~ó›*ùêÑGÕСCõ裏ª°°°^æî+þžG0¾–l`õ<±mÛ6í
 Ù³GO<ñ„Úµk§¯¾úJ›6mÒ/~ñ‹zoÏž=ºråŠ8 åË—ëöÛowYo†‡Nœ8¡Ž;:—çååéøƒZ·n­]»vé©§žÒ+¯¼"Iú裏ôÚk¯ÕË|}-òسgO½Ì5ø{¾›7oÖ›o¾©eË–)**J‡£^æí+þžGåZ;qâ„òóóëeÞþÊßó]¶l™žxâ	uëÖM‡Ö’%K4`À€z™»/ø{K—.Õœ9sÔ£G>|XYYYúýï_/s÷Gþ’o~~¾–-[¦&MšhÿþýZ¼x±þú׿*++K?ÿùÏ•žž®7*++Kÿõ_ÿU/s÷Ï£â獣Íüõ¯ÕSO=¥èèhIR«V­4gÎçú?þXË–-ÓéÓ§Õ¶m[͝;W:tРAƒô«_ýJÛ·o×ßÿþw>}ZË—/×Ǭ›nºIsæÌQ—.]ÜŽâú†ìK/½¤U«VI’Ë‘—_~Y{öìÑ‚œËzöì©M›6I’¾ûî;-_¾\?þ¸fΜY÷'Äbþž‡$
+>\åå劋‹ÓôéÓÕ¢E‹º=)Äßóݱc‡¦OŸ®víÚÕýɰÏ£²M›6é±Ç»º'"@ù{¾ß;+.ÐÜtÓMuy:,çïy†!é‡<Þ}÷ݺ<Ç_ò­hö/_¾¬5kÖL’tøða­_¿^
+6Ô¯ýk%''{牱ˆ¿çŒüâVÕ3gΨmÛ¶n×/[¶Lwß}·¶oß®»ï¾[K—.u®»õÖ[ÿÒÒÒ4bÄíØ±CÓ¦MÓòåË«=Þ Aƒ4tèP=ûì³.ÞèÑ£õꫯª{÷îÚ³gºwïîrÅ¡BQQ‘,X GyD’´víZýâ¿P\\ÜU?vâïyìÙ³G¯½öšþû¿ÿ[mÛ¶ÕâÅ‹¯ú¹Dþžï™3gtøðaÝu×]7n\µ·£øÏ£Â| ë®»N7ÜpC­Ÿƒ@æïù>öØcZ¼x±†ª§Ÿ~Z3f̸êçÂü=™3g*##C#FŒÐáÇuþüù«~.‘?å;hÐ ÝyçZ±b…sß’’5iÒD’Ô¸qc¿Ï×ßóF~ñŽã7Þ¨ýë_nßA8}ú´†
+¦°°0Ýu×]zî¹çœëœWNž<©¥K—:ÿá¹»…ÍÝmŒ•ߊ®øzäÈ‘zôÑGŸÛùßÿý_=ùä“JJJÒm·Ý&éû+†a8ç5hÐ ¿¾UÒßó¨Ð¤Iýö·¿Õˆ#<9í áïù^wÝuêÑ£‡x
 à>|XË–-«r;Š?ñ÷<*lذAS§Nõä”ƒŠ¿ç›ššêr«jjjª^xá…Ú<¶âïy0Ày«ðüþ™·ùS¾{öìÑ¥K—´ÿ~¥¦¦êÅ_Ôu×]§sçÎ)22RÅÅźîºëjùØ‹¿çŒü¢q9r¤–-[¦™3g*::Z_~ù¥6mÚä|;»M›6úûßÿ®¡C‡êþç\®^„††:¿¾å–[4räHÅÇÇ+,,¬Öóسgž{î9Ý~ûíjÔ¨‘þö·¿¹ÜvµcÇýùÏÖüùóÕ³gOçòÝ»w;¿ö÷¦Qòÿ<*”––jëÖ­jß¾}­Çdþžo=$¹ÿÁáoü=I:v옮\¹¢:ÔzÜ@çïùKú¡Þ*û+ÏCúþvÕýë_ÊÊÊâÂèøK¾«V­Òý÷߯k®¹F‡C.\ôýÏ·¿üå/úÍo~£¿üå/êÞ½ûÕ>¶àïy#¿hÇŒ£ÐÐP=ùä“úòË/Õ¢E?Þ¹~öìÙZ¾|¹233Õ¶m[—û£+{üñÇ•‘‘¡?þñúî»ï$Õþ—¤?~\<ð€Ž;VåJÏŠ+$Éeü;vèšk®©ÕvçïyÜ}÷Ý’¤†
+ªK—.züñÇk5f ó÷||ðA=õÔSúÃþ æÍ›kîܹµÓnü=k®¹F6lÐèÑ£k5V°ð÷|+nüꫯԢE¿ÿ«¿çQñóí†nÐðáÃ5vìØZèü%ßèèhM™2EÅÅÅjß¾½žxâ	IÒÔ©Sõä“OjøðáºõÖ[õ‡?ü¡Vcڍ¿çQÝ;•þþæPMóæÍ3RSSM7JKKÓÉÿìÓôù‰¦Ûýyåv]*Štl…¬¬,ýûßÿÖ”)Sj=ax.;;[¡¡¡äaµÉãëo?¤Þüõf/Ô[`£Þì…zlÔ›½ÔG½]SÞNžôƒ~ñËq     Ö¡q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜j`õÌœ8qBGµz¶Ô©S'uíÚÕ§c’‡{Väámäëõf/Ô[`£Þì…zlÔ›½Ø½ÞlÝ8=zTï¿ÿ¾hõTl%??_¥¥¥>ÿ‡EÕ³*o#ßêQoöB½6êÍ^¨·ÀF½Ù‹?Ô›­GIŠWjjªÕÓ°•´´4;vÌ’±É£*+óð6ò­Šz³ê-°QoöB½6êÍ^ü¡ÞøŒ#    À#    À#    À
 #    À#    À#    À#    À#    À#    À#    À#    ÀT at 5އC‡C¡¡¡Š‰‰Ñ«¯¾ê²®ºík{œ
+“&MÒÑ£GuùòeõëׯÊú…ºÿå—_Ö-·Ü¢
+¨}ûözùå—¯æýŠò¨Ø·â¿
+Ÿþ¹ú÷ﯰ°0õïß_Ÿþy]N5(Ù9ßmÛ¶©sçÎjذ¡âââ”››[—Sõvӏ¿/Âsvη¼¼\.TëÖ­Û9`|½ámvÈ×]]ãë;çl¯7ªq”$Ã0téÒ%¥§§kòäÉõvœòòr…„„hÿþýêÝ»·ËºC‡iÍš5.Ë’““µråJ}óÍ7ÊÌÌÔ¤I“®znþÄy†áü¯Â¬Y³4`À kÀ€š={öUÏ-˜Ù5ßmÛ¶)''G%%%š6mšÆwÕsó'vÍCªþû"jÇ®ù¦¦¦*''G;wîÔ•+Wªd¨ìšG°¾Þð6«óuWWÁúúÅ®yÛ덀k+„††ÖËq222äp8´aÃÅÆÆjàÀÊÌÌt^y¸xñ¢’““µyóf—ýÚ¶m+釫 QQQ^™Ÿ¿°*Ijܸ±"""4|øp>}Z’”››«””…‡‡+%%E»víòÊü‚•Ýòݺu«ºté¢ððp
+2D×^{­Wæç/ì–‡»ï‹¸:vËwíÚµJOOW—.]‚âÝÆ³[ÁþzÃÛ¬Ê×]]ûë»ål¯7®qt8
+ÓôéÓµzõj¯'%%EEEEJHHaJHHPaa¡óÊüyó”””¤;î¸Ãåxk֬Ѹqã¦ûï¿_YYYW=7bu†a¨¸¸XêÔ©“óJPQQ‘n¼ñFIR³fÍtöìÙ:œeð²k¾¾øâ=Z™™™W=7b×<Ü}_DíØ5ßÏ>ûL¹¹¹jÔ¨‘¢¢¢ª½ý+Ù5`}½ámVçë®®‚õõ‹]ó¨,¯7X=osw‹LXX˜JKK!I*--Uxxx­Sù*CÅ×Íš5ÓÊ•+5mÚ4effÊ0Íœ9Ó¹aš0a‚²³³5hÐ åææjâĉú裏®êý‰ÕyThÞ¼¹-Z¤ÆK’"##uæÌµhÑB………ŠŒŒ¬Ý‰A’}󕤃*11Q‹/Ö=÷ÜãùIù1»æáîû"jÇ®ùFFFjðàÁJKKSnn®’’’ôË_þ²v'ç‡ìšG°¾Þð6«óuWWÁúúÅ®yHÁõz#àÞqt§ÿþZ²d‰JKKUZZª%K–hÀ€µ>Žaš1c†òòòtäÈMž<Y†a8¿‰———»|Þ âÿ………’~øÇXñ8Xù*
+çΝӒ%K'I<x°222tñâEedd(!!Á+ç…ïYïÚµk5bÄ­^½ZãǏ÷Ê9ù3«óp÷}Þau¾C†‘ôÃÏ·`¼]µ2«óàõFýòU¾îêŠ×/®¬Î#Ø^oMã¸nÝ:>|XÍ›7WóæÍuäÈ­[·îªŽµoß>õë×OEEEjÚ´©Gû¬^½Z=ô5j¤Gy$èI„¯ò¨ø
+Z-[¶ÔþýûŸ±Z¾|¹öîݫ믿^o½õ–ÒÓÓë|NøÕù>ðÀúꫯtçw:·)--­óyù+«ó@ý²:ßôôt-_¾\š>}ºžþù:Ÿ“?³:^oÔ/_åë®®xýâÊê<‚íõF@ݪjv;**J;wî¬óq$)??_’”`z¥§òqÆŒ£1cÆx4~ °Cîö½ù曵oß>ÆGõìœo0¾£eç<j»
+ª²s¾­ZµR^^žGã
+;猯7¼Íùº««`|ýbç<‚ígZмã    ¸:4Ž     S4Ž     S4Ž     S4Ž     S4Ž     S4Ž     S4Ž     S
+¬ž€™¯¾úJ»wïÖÑ£G­žŠ­œ:uJ7ß|³ÏÇ%êY•‡·‘oõ¨7{¡Þõf/Ô[`£ÞìÅêÍ֍cYY™š7o®ØØX«§b+.\Е+W|>.yTϪ<¼|«G½Ùõب7{¡Þõf/þPo¶n[µj¥ŸÿüçJMMµz*¶’––¦cÇŽù|\ò¨žUyxùVz³ê-°QoöB½6êÍ^ü¡ÞøŒ#    À#    À#    À#    À#    À#    À#    À#    À#    À#    À#    ÀT at 5އC‡C¡¡¡Š‰‰Ñ«¯¾ê²®ºík{œ
+“&MÒÑ£GuùòeõëׯÊú…ºÿõ×_W‡¦AƒéË/¿¼šSô+vÈ£bߊÿª[Ž«cç|srrÔ±cG5lØPqqqÊÍÍ­Ë©ú;çán9<çOù6kÖ¬.§êìœG0¾Þð6;ä[^^®…ªuëÖ
+		qŽŒßKíœG°½Þ¨ÆQ’ÃÐ¥K—”žž®É“'×ÛqÊËË¢ýû÷«wïÞ.ë:¤5kÖ¸,KJJRFF†JJJôØciöìÙW=7b‡<Ãpþ÷ãe¨»æ»cÇíܹSÅÅÅš?¾ÆŽ{Õsó'vÍÃl9<g×|+/Û·oŸ~÷»ß]õÜü‰]óÖ×Þfu¾©©©ÊÉÉÑΝ;uåÊgÆÁú}Ô®yÛ덀k+„††ÖËq222äp8´aÃÅÆÆjàÀÊÌÌt^y¸xñ¢’““µyóf—ýÊËË%ýpä7ÞðÊüü…UyHRãÆ¡áÇëôéÓ^™\Ù-ß^xAmÛ¶UHHˆBCCÕºuk¯ÌÏ_Ø-³å¨=;æ[áé§ŸÖÃ?ì•ùù»ø E=  pIDATåì¯7¼Íª|×®]«ôôtuéÒ%¨Þ]¬‰Ýò¶××8:………iúôéZ½zµ×“’’¢¢¢"%$$È0%$$¨°°ÐyåaÞ¼yJJJÒwÜár¼Õ«W롇R“&M´k×.={öªçæO¬ÎÃ0«  @:uÒ¸qãê|Nøóu8
+×”)Sê47b×<¨Cï°k¾Þyç5mÚT-[¶¼ê¹ù»æ¬¯7¼Íê|?ûì3åææªQ£FŠŠŠªö¶Ê`bç<‚éõF«'àmîÞ¾Sii©"""$I¥¥¥
+¯õq~ü¹IjÖ¬™V®\©iÓ¦)33S†ahæÌ™ÎmÃШQ£4jÔ(Ißþ X¾XG…æÍ›kÑ¢Ejܸq­ÏîÙ9_Ã0ôí·ßjûöíš0a‚>ùäÏOÌOÙ9³åðŒÝó]°`–/_îÙÉ »æ¬¯7¼Íê|###5xð`¥¥¥)77WIIIúå/yµ§ã÷ìœG0½Þ¸wÝéß¿¿–,Y¢ÒÒR•––jÉ’%0`@­c†f̘¡¼¼<9rD“'O–aÎoâååå.÷Ÿÿøs 'NœÐìÙ³5uêTŸòUΝ;§%K–(..Î[§ Vç›’’¢3gÎH’BBBtþüùºŸ”³:š–£nìï[o½¥²²2uëÖ­Îçãï쐯7ꏯò2dˆ¤šnW­žÕyÛ덠i×­[§Ã‡«yóæjÞ¼¹Ž9¢uëÖ]Õ±öíÛ§~ýú©¨¨HM›6õh‡Ã¡
+<X÷Þ{¯æÌ™sUc
+_åQñ´Z¶l©ýû÷;?{Zù7’Ûo'ó«óU\\œš4i¢¥K—jË–-u>'fuî–Ã;¬ÎWúþÝÆ”””:G °:^oÔ/_回ž®åË—+""BÓ§O×óÏ?/‰×/?fuÁöz# nU5û-SQQQÚ¹sg#Iùùù’¤„„%$$xtœ`ý
+Xîø*wûcÞfç|“““•œœìÑøÂÎyPougç|%éÍ7ßôhü@aç<¨·º³C¾­ZµR^^^­ˆìœG°½Þšw    W‡Æ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ŠÆ    `ªÕ¨I~~¾–.]jõ4leïÞ½ŠŒŒ´dlò¨ÊÊ<¼|«¢Þì…zlÔ›½Poz³¨7[7Ž?ûÙÏTZZª£GZ=[‰ŒŒT×®]}>.yTϪ<¼|«G½Ùõب7{¡Þõf/þPo¶nãââgõ4ðÿG`#_{!ÀF¾öB|í…<üŸq    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜²ìï8~øá‡ÊÎζjø pôèQuïÞÝ£mÉ£þÕ&o#ßúG½Ùõب7{¡Þõf/VÖ›%c\\œJJJ¬:¨tïÞ]}úô©q;òð
+Oóð6òõ
+êÍ^¨·ÀF½Ùõب7{±ªÞ$‹Ǿ}ûªoß¾VjG`#_{!ÀF¾öB|í…<Ÿq    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜¢q    ˜òúßqüÇ?þ¡¬¬,oÐ-±×{´-õÔ
+õøõøNmêÍS^mc{Ü¢ó%TxáCo*í~½zöûYÛQo@ÝQo€ïPo€ïxZoµáÕÆ±×m?S¯Û¼;A Õ£Þ ß¡Þ ß¡Þ {â3Ž     S4Ž     S4Ž     S4Ž     S4Ž     S4Ž     S4Ž     SÿÇc‡Ojý³Ûës.     9´ÿC
+èÓΣm=jûöí«sçÎIeuš    À&ú÷ŽÒÀ=ÚÖ£Æ1>>^ñññu™    ÀOñG    €)G    €)G    €)G    €)G    €)G    €)
 G    €)G||¼ñ‹_üÂêy     l(//Oÿ?þ‚Éçö4dê    IEND®B`‚
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-full-with-smt.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0xffffffff,0xffffffff" complete_cpuset="0xffffffff,0xffffffff" online_cpuset="0xffffffff,0xffffffff" allowed_cpuset="0xffffffff,0xffffffff" nodeset="0x0000000f" complete_nodeset="0x0000000f" allowed_nodeset="0x0000000f">
+    <info name="Backend" value="Synthetic"/>
+    <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x0000ffff" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" allowed_cpuset="0x0000ffff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="31943819264">
+      <object type="Socket" os_level="-1" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" os_level="-1" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="1" cpuset="0x000000f0" complete_cpuset="0x000000f0" online_cpuset="0x000000f0" allowed_cpuset="0x000000f0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" os_level="-1" os_index="1" cpuset="0x000000f0" complete_cpuset="0x000000f0" online_cpuset="0x000000f0" allowed_cpuset="0x000000f0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="1" cpuset="0x000000f0" complete_cpuset="0x000000f0" online_cpuset="0x000000f0" allowed_cpuset="0x000000f0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="2" cpuset="0x00000030" complete_cpuset="0x00000030" online_cpuset="0x00000030" allowed_cpuset="0x00000030" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="2" cpuset="0x00000030" complete_cpuset="0x00000030" online_cpuset="0x00000030" allowed_cpuset="0x00000030" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="3" cpuset="0x000000c0" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x000000c0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="3" cpuset="0x000000c0" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x000000c0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="2" cpuset="0x00000f00" complete_cpuset="0x00000f00" online_cpuset="0x00000f00" allowed_cpuset="0x00000f00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" os_level="-1" os_index="2" cpuset="0x00000f00" complete_cpuset="0x00000f00" online_cpuset="0x00000f00" allowed_cpuset="0x00000f00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="2" cpuset="0x00000f00" complete_cpuset="0x00000f00" online_cpuset="0x00000f00" allowed_cpuset="0x00000f00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="4" cpuset="0x00000300" complete_cpuset="0x00000300" online_cpuset="0x00000300" allowed_cpuset="0x00000300" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="4" cpuset="0x00000300" complete_cpuset="0x00000300" online_cpuset="0x00000300" allowed_cpuset="0x00000300" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_level="-1" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="5" cpuset="0x00000c00" complete_cpuset="0x00000c00" online_cpuset="0x00000c00" allowed_cpuset="0x00000c00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="5" cpuset="0x00000c00" complete_cpuset="0x00000c00" online_cpuset="0x00000c00" allowed_cpuset="0x00000c00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_level="-1" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="3" cpuset="0x0000f000" complete_cpuset="0x0000f000" online_cpuset="0x0000f000" allowed_cpuset="0x0000f000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" os_level="-1" os_index="3" cpuset="0x0000f000" complete_cpuset="0x0000f000" online_cpuset="0x0000f000" allowed_cpuset="0x0000f000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="3" cpuset="0x0000f000" complete_cpuset="0x0000f000" online_cpuset="0x0000f000" allowed_cpuset="0x0000f000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="1" cpuset="0xffff0000" complete_cpuset="0xffff0000" online_cpuset="0xffff0000" allowed_cpuset="0xffff0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="33554432000">
+      <object type="Socket" os_level="-1" os_index="4" cpuset="0x000f0000" complete_cpuset="0x000f0000" online_cpuset="0x000f0000" allowed_cpuset="0x000f0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" os_level="-1" os_index="4" cpuset="0x000f0000" complete_cpuset="0x000f0000" online_cpuset="0x000f0000" allowed_cpuset="0x000f0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="4" cpuset="0x000f0000" complete_cpuset="0x000f0000" online_cpuset="0x000f0000" allowed_cpuset="0x000f0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="8" cpuset="0x00030000" complete_cpuset="0x00030000" online_cpuset="0x00030000" allowed_cpuset="0x00030000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="8" cpuset="0x00030000" complete_cpuset="0x00030000" online_cpuset="0x00030000" allowed_cpuset="0x00030000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_level="-1" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_level="-1" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="9" cpuset="0x000c0000" complete_cpuset="0x000c0000" online_cpuset="0x000c0000" allowed_cpuset="0x000c0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="9" cpuset="0x000c0000" complete_cpuset="0x000c0000" online_cpuset="0x000c0000" allowed_cpuset="0x000c0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_level="-1" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_level="-1" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="5" cpuset="0x00f00000" complete_cpuset="0x00f00000" online_cpuset="0x00f00000" allowed_cpuset="0x00f00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" os_level="-1" os_index="5" cpuset="0x00f00000" complete_cpuset="0x00f00000" online_cpuset="0x00f00000" allowed_cpuset="0x00f00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="5" cpuset="0x00f00000" complete_cpuset="0x00f00000" online_cpuset="0x00f00000" allowed_cpuset="0x00f00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="10" cpuset="0x00300000" complete_cpuset="0x00300000" online_cpuset="0x00300000" allowed_cpuset="0x00300000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="10" cpuset="0x00300000" complete_cpuset="0x00300000" online_cpuset="0x00300000" allowed_cpuset="0x00300000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_level="-1" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_level="-1" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="11" cpuset="0x00c00000" complete_cpuset="0x00c00000" online_cpuset="0x00c00000" allowed_cpuset="0x00c00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="11" cpuset="0x00c00000" complete_cpuset="0x00c00000" online_cpuset="0x00c00000" allowed_cpuset="0x00c00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_level="-1" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_level="-1" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="6" cpuset="0x0f000000" complete_cpuset="0x0f000000" online_cpuset="0x0f000000" allowed_cpuset="0x0f000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" os_level="-1" os_index="6" cpuset="0x0f000000" complete_cpuset="0x0f000000" online_cpuset="0x0f000000" allowed_cpuset="0x0f000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="6" cpuset="0x0f000000" complete_cpuset="0x0f000000" online_cpuset="0x0f000000" allowed_cpuset="0x0f000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="12" cpuset="0x03000000" complete_cpuset="0x03000000" online_cpuset="0x03000000" allowed_cpuset="0x03000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="12" cpuset="0x03000000" complete_cpuset="0x03000000" online_cpuset="0x03000000" allowed_cpuset="0x03000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_level="-1" os_index="24" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_level="-1" os_index="25" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="13" cpuset="0x0c000000" complete_cpuset="0x0c000000" online_cpuset="0x0c000000" allowed_cpuset="0x0c000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="13" cpuset="0x0c000000" complete_cpuset="0x0c000000" online_cpuset="0x0c000000" allowed_cpuset="0x0c000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_level="-1" os_index="26" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_level="-1" os_index="27" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="7" cpuset="0xf0000000" complete_cpuset="0xf0000000" online_cpuset="0xf0000000" allowed_cpuset="0xf0000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" os_level="-1" os_index="7" cpuset="0xf0000000" complete_cpuset="0xf0000000" online_cpuset="0xf0000000" allowed_cpuset="0xf0000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="7" cpuset="0xf0000000" complete_cpuset="0xf0000000" online_cpuset="0xf0000000" allowed_cpuset="0xf0000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="14" cpuset="0x30000000" complete_cpuset="0x30000000" online_cpuset="0x30000000" allowed_cpuset="0x30000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="14" cpuset="0x30000000" complete_cpuset="0x30000000" online_cpuset="0x30000000" allowed_cpuset="0x30000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_level="-1" os_index="28" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_level="-1" os_index="29" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="15" cpuset="0xc0000000" complete_cpuset="0xc0000000" online_cpuset="0xc0000000" allowed_cpuset="0xc0000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="15" cpuset="0xc0000000" complete_cpuset="0xc0000000" online_cpuset="0xc0000000" allowed_cpuset="0xc0000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_level="-1" os_index="30" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_level="-1" os_index="31" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="2" cpuset="0x0000ffff,0x0" complete_cpuset="0x0000ffff,0x0" online_cpuset="0x0000ffff,0x0" allowed_cpuset="0x0000ffff,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="33554432000">
+      <object type="Socket" os_level="-1" os_index="8" cpuset="0x0000000f,0x0" complete_cpuset="0x0000000f,0x0" online_cpuset="0x0000000f,0x0" allowed_cpuset="0x0000000f,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <object type="Cache" os_level="-1" os_index="8" cpuset="0x0000000f,0x0" complete_cpuset="0x0000000f,0x0" online_cpuset="0x0000000f,0x0" allowed_cpuset="0x0000000f,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="8" cpuset="0x0000000f,0x0" complete_cpuset="0x0000000f,0x0" online_cpuset="0x0000000f,0x0" allowed_cpuset="0x0000000f,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="16" cpuset="0x00000003,0x0" complete_cpuset="0x00000003,0x0" online_cpuset="0x00000003,0x0" allowed_cpuset="0x00000003,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="16" cpuset="0x00000003,0x0" complete_cpuset="0x00000003,0x0" online_cpuset="0x00000003,0x0" allowed_cpuset="0x00000003,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_level="-1" os_index="32" cpuset="0x00000001,0x0" complete_cpuset="0x00000001,0x0" online_cpuset="0x00000001,0x0" allowed_cpuset="0x00000001,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+                <object type="PU" os_level="-1" os_index="33" cpuset="0x00000002,0x0" complete_cpuset="0x00000002,0x0" online_cpuset="0x00000002,0x0" allowed_cpuset="0x00000002,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="17" cpuset="0x0000000c,0x0" complete_cpuset="0x0000000c,0x0" online_cpuset="0x0000000c,0x0" allowed_cpuset="0x0000000c,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="17" cpuset="0x0000000c,0x0" complete_cpuset="0x0000000c,0x0" online_cpuset="0x0000000c,0x0" allowed_cpuset="0x0000000c,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_level="-1" os_index="34" cpuset="0x00000004,0x0" complete_cpuset="0x00000004,0x0" online_cpuset="0x00000004,0x0" allowed_cpuset="0x00000004,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+                <object type="PU" os_level="-1" os_index="35" cpuset="0x00000008,0x0" complete_cpuset="0x00000008,0x0" online_cpuset="0x00000008,0x0" allowed_cpuset="0x00000008,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="9" cpuset="0x000000f0,0x0" complete_cpuset="0x000000f0,0x0" online_cpuset="0x000000f0,0x0" allowed_cpuset="0x000000f0,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <object type="Cache" os_level="-1" os_index="9" cpuset="0x000000f0,0x0" complete_cpuset="0x000000f0,0x0" online_cpuset="0x000000f0,0x0" allowed_cpuset="0x000000f0,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="9" cpuset="0x000000f0,0x0" complete_cpuset="0x000000f0,0x0" online_cpuset="0x000000f0,0x0" allowed_cpuset="0x000000f0,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="18" cpuset="0x00000030,0x0" complete_cpuset="0x00000030,0x0" online_cpuset="0x00000030,0x0" allowed_cpuset="0x00000030,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="18" cpuset="0x00000030,0x0" complete_cpuset="0x00000030,0x0" online_cpuset="0x00000030,0x0" allowed_cpuset="0x00000030,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_level="-1" os_index="36" cpuset="0x00000010,0x0" complete_cpuset="0x00000010,0x0" online_cpuset="0x00000010,0x0" allowed_cpuset="0x00000010,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+                <object type="PU" os_level="-1" os_index="37" cpuset="0x00000020,0x0" complete_cpuset="0x00000020,0x0" online_cpuset="0x00000020,0x0" allowed_cpuset="0x00000020,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="19" cpuset="0x000000c0,0x0" complete_cpuset="0x000000c0,0x0" online_cpuset="0x000000c0,0x0" allowed_cpuset="0x000000c0,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="19" cpuset="0x000000c0,0x0" complete_cpuset="0x000000c0,0x0" online_cpuset="0x000000c0,0x0" allowed_cpuset="0x000000c0,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_level="-1" os_index="38" cpuset="0x00000040,0x0" complete_cpuset="0x00000040,0x0" online_cpuset="0x00000040,0x0" allowed_cpuset="0x00000040,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+                <object type="PU" os_level="-1" os_index="39" cpuset="0x00000080,0x0" complete_cpuset="0x00000080,0x0" online_cpuset="0x00000080,0x0" allowed_cpuset="0x00000080,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="10" cpuset="0x00000f00,0x0" complete_cpuset="0x00000f00,0x0" online_cpuset="0x00000f00,0x0" allowed_cpuset="0x00000f00,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <object type="Cache" os_level="-1" os_index="10" cpuset="0x00000f00,0x0" complete_cpuset="0x00000f00,0x0" online_cpuset="0x00000f00,0x0" allowed_cpuset="0x00000f00,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="10" cpuset="0x00000f00,0x0" complete_cpuset="0x00000f00,0x0" online_cpuset="0x00000f00,0x0" allowed_cpuset="0x00000f00,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="20" cpuset="0x00000300,0x0" complete_cpuset="0x00000300,0x0" online_cpuset="0x00000300,0x0" allowed_cpuset="0x00000300,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="20" cpuset="0x00000300,0x0" complete_cpuset="0x00000300,0x0" online_cpuset="0x00000300,0x0" allowed_cpuset="0x00000300,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_level="-1" os_index="40" cpuset="0x00000100,0x0" complete_cpuset="0x00000100,0x0" online_cpuset="0x00000100,0x0" allowed_cpuset="0x00000100,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+                <object type="PU" os_level="-1" os_index="41" cpuset="0x00000200,0x0" complete_cpuset="0x00000200,0x0" online_cpuset="0x00000200,0x0" allowed_cpuset="0x00000200,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="21" cpuset="0x00000c00,0x0" complete_cpuset="0x00000c00,0x0" online_cpuset="0x00000c00,0x0" allowed_cpuset="0x00000c00,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="21" cpuset="0x00000c00,0x0" complete_cpuset="0x00000c00,0x0" online_cpuset="0x00000c00,0x0" allowed_cpuset="0x00000c00,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_level="-1" os_index="42" cpuset="0x00000400,0x0" complete_cpuset="0x00000400,0x0" online_cpuset="0x00000400,0x0" allowed_cpuset="0x00000400,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+                <object type="PU" os_level="-1" os_index="43" cpuset="0x00000800,0x0" complete_cpuset="0x00000800,0x0" online_cpuset="0x00000800,0x0" allowed_cpuset="0x00000800,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="11" cpuset="0x0000f000,0x0" complete_cpuset="0x0000f000,0x0" online_cpuset="0x0000f000,0x0" allowed_cpuset="0x0000f000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <object type="Cache" os_level="-1" os_index="11" cpuset="0x0000f000,0x0" complete_cpuset="0x0000f000,0x0" online_cpuset="0x0000f000,0x0" allowed_cpuset="0x0000f000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="11" cpuset="0x0000f000,0x0" complete_cpuset="0x0000f000,0x0" online_cpuset="0x0000f000,0x0" allowed_cpuset="0x0000f000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="22" cpuset="0x00003000,0x0" complete_cpuset="0x00003000,0x0" online_cpuset="0x00003000,0x0" allowed_cpuset="0x00003000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="22" cpuset="0x00003000,0x0" complete_cpuset="0x00003000,0x0" online_cpuset="0x00003000,0x0" allowed_cpuset="0x00003000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_level="-1" os_index="44" cpuset="0x00001000,0x0" complete_cpuset="0x00001000,0x0" online_cpuset="0x00001000,0x0" allowed_cpuset="0x00001000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+                <object type="PU" os_level="-1" os_index="45" cpuset="0x00002000,0x0" complete_cpuset="0x00002000,0x0" online_cpuset="0x00002000,0x0" allowed_cpuset="0x00002000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="23" cpuset="0x0000c000,0x0" complete_cpuset="0x0000c000,0x0" online_cpuset="0x0000c000,0x0" allowed_cpuset="0x0000c000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="23" cpuset="0x0000c000,0x0" complete_cpuset="0x0000c000,0x0" online_cpuset="0x0000c000,0x0" allowed_cpuset="0x0000c000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_level="-1" os_index="46" cpuset="0x00004000,0x0" complete_cpuset="0x00004000,0x0" online_cpuset="0x00004000,0x0" allowed_cpuset="0x00004000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+                <object type="PU" os_level="-1" os_index="47" cpuset="0x00008000,0x0" complete_cpuset="0x00008000,0x0" online_cpuset="0x00008000,0x0" allowed_cpuset="0x00008000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="3" cpuset="0xffff0000,0x0" complete_cpuset="0xffff0000,0x0" online_cpuset="0xffff0000,0x0" allowed_cpuset="0xffff0000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="33554432000">
+      <object type="Socket" os_level="-1" os_index="12" cpuset="0x000f0000,0x0" complete_cpuset="0x000f0000,0x0" online_cpuset="0x000f0000,0x0" allowed_cpuset="0x000f0000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <object type="Cache" os_level="-1" os_index="12" cpuset="0x000f0000,0x0" complete_cpuset="0x000f0000,0x0" online_cpuset="0x000f0000,0x0" allowed_cpuset="0x000f0000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="12" cpuset="0x000f0000,0x0" complete_cpuset="0x000f0000,0x0" online_cpuset="0x000f0000,0x0" allowed_cpuset="0x000f0000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="24" cpuset="0x00030000,0x0" complete_cpuset="0x00030000,0x0" online_cpuset="0x00030000,0x0" allowed_cpuset="0x00030000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="24" cpuset="0x00030000,0x0" complete_cpuset="0x00030000,0x0" online_cpuset="0x00030000,0x0" allowed_cpuset="0x00030000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_level="-1" os_index="48" cpuset="0x00010000,0x0" complete_cpuset="0x00010000,0x0" online_cpuset="0x00010000,0x0" allowed_cpuset="0x00010000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+                <object type="PU" os_level="-1" os_index="49" cpuset="0x00020000,0x0" complete_cpuset="0x00020000,0x0" online_cpuset="0x00020000,0x0" allowed_cpuset="0x00020000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="25" cpuset="0x000c0000,0x0" complete_cpuset="0x000c0000,0x0" online_cpuset="0x000c0000,0x0" allowed_cpuset="0x000c0000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="25" cpuset="0x000c0000,0x0" complete_cpuset="0x000c0000,0x0" online_cpuset="0x000c0000,0x0" allowed_cpuset="0x000c0000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_level="-1" os_index="50" cpuset="0x00040000,0x0" complete_cpuset="0x00040000,0x0" online_cpuset="0x00040000,0x0" allowed_cpuset="0x00040000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+                <object type="PU" os_level="-1" os_index="51" cpuset="0x00080000,0x0" complete_cpuset="0x00080000,0x0" online_cpuset="0x00080000,0x0" allowed_cpuset="0x00080000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="13" cpuset="0x00f00000,0x0" complete_cpuset="0x00f00000,0x0" online_cpuset="0x00f00000,0x0" allowed_cpuset="0x00f00000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <object type="Cache" os_level="-1" os_index="13" cpuset="0x00f00000,0x0" complete_cpuset="0x00f00000,0x0" online_cpuset="0x00f00000,0x0" allowed_cpuset="0x00f00000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="13" cpuset="0x00f00000,0x0" complete_cpuset="0x00f00000,0x0" online_cpuset="0x00f00000,0x0" allowed_cpuset="0x00f00000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="26" cpuset="0x00300000,0x0" complete_cpuset="0x00300000,0x0" online_cpuset="0x00300000,0x0" allowed_cpuset="0x00300000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="26" cpuset="0x00300000,0x0" complete_cpuset="0x00300000,0x0" online_cpuset="0x00300000,0x0" allowed_cpuset="0x00300000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_level="-1" os_index="52" cpuset="0x00100000,0x0" complete_cpuset="0x00100000,0x0" online_cpuset="0x00100000,0x0" allowed_cpuset="0x00100000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+                <object type="PU" os_level="-1" os_index="53" cpuset="0x00200000,0x0" complete_cpuset="0x00200000,0x0" online_cpuset="0x00200000,0x0" allowed_cpuset="0x00200000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="27" cpuset="0x00c00000,0x0" complete_cpuset="0x00c00000,0x0" online_cpuset="0x00c00000,0x0" allowed_cpuset="0x00c00000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="27" cpuset="0x00c00000,0x0" complete_cpuset="0x00c00000,0x0" online_cpuset="0x00c00000,0x0" allowed_cpuset="0x00c00000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_level="-1" os_index="54" cpuset="0x00400000,0x0" complete_cpuset="0x00400000,0x0" online_cpuset="0x00400000,0x0" allowed_cpuset="0x00400000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+                <object type="PU" os_level="-1" os_index="55" cpuset="0x00800000,0x0" complete_cpuset="0x00800000,0x0" online_cpuset="0x00800000,0x0" allowed_cpuset="0x00800000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="14" cpuset="0x0f000000,0x0" complete_cpuset="0x0f000000,0x0" online_cpuset="0x0f000000,0x0" allowed_cpuset="0x0f000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <object type="Cache" os_level="-1" os_index="14" cpuset="0x0f000000,0x0" complete_cpuset="0x0f000000,0x0" online_cpuset="0x0f000000,0x0" allowed_cpuset="0x0f000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="14" cpuset="0x0f000000,0x0" complete_cpuset="0x0f000000,0x0" online_cpuset="0x0f000000,0x0" allowed_cpuset="0x0f000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="28" cpuset="0x03000000,0x0" complete_cpuset="0x03000000,0x0" online_cpuset="0x03000000,0x0" allowed_cpuset="0x03000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="28" cpuset="0x03000000,0x0" complete_cpuset="0x03000000,0x0" online_cpuset="0x03000000,0x0" allowed_cpuset="0x03000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_level="-1" os_index="56" cpuset="0x01000000,0x0" complete_cpuset="0x01000000,0x0" online_cpuset="0x01000000,0x0" allowed_cpuset="0x01000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+                <object type="PU" os_level="-1" os_index="57" cpuset="0x02000000,0x0" complete_cpuset="0x02000000,0x0" online_cpuset="0x02000000,0x0" allowed_cpuset="0x02000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="29" cpuset="0x0c000000,0x0" complete_cpuset="0x0c000000,0x0" online_cpuset="0x0c000000,0x0" allowed_cpuset="0x0c000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="29" cpuset="0x0c000000,0x0" complete_cpuset="0x0c000000,0x0" online_cpuset="0x0c000000,0x0" allowed_cpuset="0x0c000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_level="-1" os_index="58" cpuset="0x04000000,0x0" complete_cpuset="0x04000000,0x0" online_cpuset="0x04000000,0x0" allowed_cpuset="0x04000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+                <object type="PU" os_level="-1" os_index="59" cpuset="0x08000000,0x0" complete_cpuset="0x08000000,0x0" online_cpuset="0x08000000,0x0" allowed_cpuset="0x08000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="15" cpuset="0xf0000000,0x0" complete_cpuset="0xf0000000,0x0" online_cpuset="0xf0000000,0x0" allowed_cpuset="0xf0000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <object type="Cache" os_level="-1" os_index="15" cpuset="0xf0000000,0x0" complete_cpuset="0xf0000000,0x0" online_cpuset="0xf0000000,0x0" allowed_cpuset="0xf0000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="33554432" depth="2" cache_linesize="64">
+          <object type="Cache" os_level="-1" os_index="15" cpuset="0xf0000000,0x0" complete_cpuset="0xf0000000,0x0" online_cpuset="0xf0000000,0x0" allowed_cpuset="0xf0000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="4194304" depth="3" cache_linesize="64">
+            <object type="Cache" os_level="-1" os_index="30" cpuset="0x30000000,0x0" complete_cpuset="0x30000000,0x0" online_cpuset="0x30000000,0x0" allowed_cpuset="0x30000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="30" cpuset="0x30000000,0x0" complete_cpuset="0x30000000,0x0" online_cpuset="0x30000000,0x0" allowed_cpuset="0x30000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_level="-1" os_index="60" cpuset="0x10000000,0x0" complete_cpuset="0x10000000,0x0" online_cpuset="0x10000000,0x0" allowed_cpuset="0x10000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+                <object type="PU" os_level="-1" os_index="61" cpuset="0x20000000,0x0" complete_cpuset="0x20000000,0x0" online_cpuset="0x20000000,0x0" allowed_cpuset="0x20000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" os_level="-1" os_index="31" cpuset="0xc0000000,0x0" complete_cpuset="0xc0000000,0x0" online_cpuset="0xc0000000,0x0" allowed_cpuset="0xc0000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64">
+              <object type="Core" os_level="-1" os_index="31" cpuset="0xc0000000,0x0" complete_cpuset="0xc0000000,0x0" online_cpuset="0xc0000000,0x0" allowed_cpuset="0xc0000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_level="-1" os_index="62" cpuset="0x40000000,0x0" complete_cpuset="0x40000000,0x0" online_cpuset="0x40000000,0x0" allowed_cpuset="0x40000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+                <object type="PU" os_level="-1" os_index="63" cpuset="0x80000000,0x0" complete_cpuset="0x80000000,0x0" online_cpuset="0x80000000,0x0" allowed_cpuset="0x80000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.pdf
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.pdf	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.pdf	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,197 @@
+%PDF-1.4
+%µí®û
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+xœ­™Íj1F÷óóv¤ù“¥‹@)ºhñ®t᱓@ ‹¦‹¾~ïUœÄÜË‘SœK<¶gŽþæøÃúÝÅ^wýÕ>ôwºÐëãûgyñ¯|‘ºï~üìÃ6ôÇ.†þ«¼=¡qýFŸ=Üô×§óä:×;ý”>bý›¤v¿º«ÛMØÈýî¶ûBˆRƒÔ(5IÍR‹T’ÊREj/µJ¤ŽR7R·w÷ݧ]¶yç¡HÃJ˜säÉ2qLÚˆ—^H‚6VÚ¹)OmÝ–1
+ó,§ä4ͱþ׋¼:uýXôT¹ÆÆï¦¼;¦·º©½Œñ±»q8K—ãôÒUÇ—³nNÇGíjÛ˜§ ýëwÇ:tçÃð<}¯š-3³ Fo6:ýÜ8V(L.iaoÒdT(.aÜjäHqÄq7<sO]¶q	ã2Æ7M7Íg/•9RÜ<`œ½TæŒqã쥲Ì·,w4q	;%a©¨Ü±$l–Ü`×.Û%s»ì]Ãl˜Â
+³w-£ŸÄÎÆž©³i»&,›°m*´4çñò<0ð<0¼+ÔI<Ëõøâ<0Ð<0ðq·ï£Bš	ˆöm¤¹ "SÒ¾ô"©Ù i[X×-œÉˆ‘«kaÍ™[Ž…5'0¤æ„¤óå)R³BÒ^>š ²4Í¥í`Í©™¡ig¾„Ý“¸|VW>	Û'sû¬®}2¶OæöY]ûlŸÂí³ºö©¹zûçàú§æ
+å:œˆç†áòÜynˆïË
+ëÿÌ
+‘æ†ÈÇÝ	蹡èdá#SÒ±°®P†ÔÜЀ´-\ó.Î
+
+HÛš 27!íÕ£¹!574 /ñH‘𐶅57 at d¡È˜]kn`HÍ
+édÀ„Ý“°|*Ò^>	Û'cûT¤½|2¶OÆö©siÛ§`ûlŸŠ´íSsõ:öO…:?, š ksnˆ—çÞ—ÿ35àÍ<æN†¸ºý€yN
+^(0Q`qí«yoAP ã^M|mójVàÛh¯M
+|#Ï¡m]Í	|+mçjJà›h/Í|;¯kꙄES\Ñ$jšŒMS\ÓdjšŒMãï¸jš‚Mãï·Ôdа‘ÎÅÊæq#Ÿηîp¸
+endstream
+endobj
+4 0 obj
+   899
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /Font <<
+      /f-0-0 5 0 R
+   >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 1150 430 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+7 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Length1 7684
+>>
+stream
+xœÕX{\UU¾_kÿöÚû¼9û<€‡ó ¤ø@*fz"5S3J3­(,D{8bdf耚 ƒ¨`¾ÏŒÌ!rÔq|fÄŒ“:÷6嘉bEFÕÂâþöFšê3÷Þ?ïçžÍ:g¯µ÷Úë÷û­ïïûûn%„H1â{röô|ª|³“G.޾ôäÏûºÏÆd`ÿSBhg^þÌÙ­û¿i$$ü¼^6óÙyG#…L<ßKˆ½~ÖŒé¹^Þ~†ˆY86xXGË‹±Â~ü¬ÙÏ¿¸v"bŸA^|vΓÓÇ¿?Ï#‡cÄìé/æ‹Ó¤aØ_ˆ}_þs3òo—¿ÁÓÈM„°YD y¼ZÌc;ÑZ™DMâM"ݤ:V$ˆd`ã¹¶AÄz®í\[²]ñ+¿âÏIgDw^áÕ²åß>'õ!”œ&Dò²óÄDþLEÖÉ‚Bú‚Þ §ŠÁ Ï4Èè€üVgdz”$·8Âà&¢ÙÚÙÖÙ¦Dd"‡7¶¥àYòøISe+ûJ¶ên5öմغ|¥ÙÁ) ‡éÂô‚Á)8d»!AH}r‚ÁgH“Ó
+O	…By¡XX"/1¬ÂEj;†8Úu·éÓèp˜¢›¦Ÿ¡{Zÿ‚n~1]	Ut#8²I¶Ý¯§~%N¡qT‰;MûÓE´ˆö—5ñ¢Fv¾SÿèHbÞN"’ŽKFv_û‹…¸ãr8˜èò#ôòz„Ô`Q|%ރz¥<ÂD" Ҭ׽ sŒN@‡?8×–’¢d¨>7¶Üè¼Ñf=yÝz]ÉP2lÉÁ_%Ç${’½É¾drìÈÄ`LÐô}A06+&Ë“åÍòeù³b³ó—Å”zJ½¥¾Rÿ²ØU‰¡ÄöDOïÔÞI½r<9Þ_Ž?ß“ïÍ÷åû‹=ÅÞb_±?2›fÓXÉéOM|¢Ä¥[h\lBzÚàTzZB\¬$§ ©)á‘‹{ÏYßP_?òðò½M]7©ðÚºœ“gyøïíBj^áíï3¡kqMÞôcÛÔVT6`@Mbb'Ìí¾­+Œ&%t¹h)1/74(bC)J¶™ÉXÇè(kgKŠŠ¼
+¿qÝúÝõä 1,Ú]½*:ÍÐXç ´ï–ÁCœª±D±J8´NÜœõöÉ“ogmžxï®ì.þÜEéÁíbúÞ¤¤ËÍÍ—“’jâãéj¡6:,ލv$DÌ•ÄNÒ‚.аP©Ô¢Ô›ÖÆd¢ºoc¸g)7ÚTˆ¶ÝhlSlÒº'â¡¢h1râIª¢ÅIÌ­_¸°joCCæÛóŽvv=*lÙºåÈήRÉѵeFî×*vŽáâp]5÷’‚éˆø9,0ªÉµsx[
+®ÖÒÙ†Þ[õA}–>GŸ¯Gïí©êBθcõøsn†$Çç?úñµ“Á?÷ãð¿÷£¥×ý9Î?9…_zâü_<sö©Ž꾊E¸®ƒD“ü`<qR}‰n9s¾NYƒ‰Šl°Õ›ÊÝÑNAçÔ‘ñ‚-l´¸ÑÖ¨Ø2z¶¹ÅŠØ·Þ¸®¨Øï32&?&s&¦=†$#éHa¤sd4ë'Ô
+Ô÷3Ì!sèaŽsN´>{®
+¿‡ö¢À§¢ 5…È<d±¨³ÎÔüÎÓ§žxòÌ3ü?Eût~Fåza×ò
+
+᱇œJKÛ×·J
+ÔNïâ×íß·Ee-ÿV(”lÄLî†I¯’u³LÀ&»Ábýñ©¥.º‘LÇ×Ú'Oý=± γK÷ѡʐ¡Óp<Lï>Ú3N‚=ã’àtØ"â„ô4Û¡°dÉÒe¡êªµë$ÛU>¢µ•ß~åKzòÓ‹´±
+ç!ˈ#·Èø 3B¢b‹eÒë¼’ˆ—‘ ;ÕýT·©™sZlïâFmq#=‹ïƒ0QÈâWXz Uñ;ýœŽãëéŒ÷é¸Î5bÁØú±çkˆ–Õ¸ö8ÖNÜd2[T4Dº&…11ÓºMYk9*EˆÕ Pƒ;Â
+RŒµ«ÆÑ£ÚÎjÝhû‘ËÙWÈìšmÎÉãkÃ'?2¾Ö1ù´2F]‰¹º`ʃâ6E~I|‰½]ê’E"ºÄ(1š¹Ÿ'/Hó¢
+¢Ÿw/!%®%QK¢—¸÷=Ñ
+²w ÝIL†Œ ?å,Ñéd‰Ð±Î	teêô{_+yüì‹/›z:F?ââ7jjjæÓÊa³×Ý3¿:ó®¥\;þè®üþeO6!¾0·‘Âà â´JôÞŸ=ä4‡ôk$wÈ·&®R*wîèî¶p¸Ü	>«^½ÔÁñ¸¡7.m-7ZÚ¬W¯kp×ÐNÕ@ôÆ¡‡>¤Ooô¹žéÞé¾\¿H²©‡:¢?6!1]<ú˜DÓ{N~æ,Œ¬ÜÁÏðkzzò{³œjصï@Õ–¯N:ò\ÁéiW©é7ð6®ºðm pbPJuÅËU»ççÆ'ì÷ùþ\·ð
+Íç‚îˬ}Ž!AaÑ´
+¢«t¶mÊ>g•¥RWîˆ[IS#]F«G­ß-=¹¬’ö9,dÉÅŸîW$±'-ý)b„3!¡·3X<Á¶yüjˆoçóh}l5•çäw–ñëü+ÌFÛ3{ÎÓÊÝ]E“¤ëélú+º~ì˜ÿx<‡ÿ‘ÿ™Èÿ@;AÕb懎(ÄGî
+ƹH•A_e[L«oz£N°»¼ŒXÜáÌå 'n›èW°SEÝ
+¦ªÍבÎÃb5:÷÷ÄôÇ“ ÖDÚÄùé:jÇæÍ;øaš´¶²r-7
+bkGñª]¼ýf×5át×…Ò²òeB1ç¹¹ù»¾µb»Ã×ôê{ŸîD^™£ñŠ7&«¼"c~ÚD»Ž ¯¿ñ/^±§†ÛœAŽlKOv"ETU‡–-]*ÙÚøð‹Ÿòa_^¡ï¶¶ÒãÚ~aX*ÆAO=2Ê/*(ûL](¹˜DeÁ-–QmzÔ–æ9–˜Œ[ZKüJm¨±¼FUc%†Êc…»å§„<¹X%ª—œ4JCï‘¢S¥ô)i´Œ¾"UÑ
+ÒV£USOëŸ_“NV¡º‘·w=ªé¦W¼Ô‘$^ºéE;ëW}ÐNù,\'(Fª,åz²Ø¦s†R7¹Ó¦Ù§b)E‹F†–$V•ÍlZ~؈íV~ðÚ+ì[í VDM
+¤ãú.„X]Ó¾Ç÷5ñ‹ü*¿Â/¢v›×~öl;”u>Ê?AQЗÆkúͪê`´G@†=¼“(”ˆLTŽCÙ
+¢À #ñIê ^ƒN½I@®¢°XjV–D´DÏÈÆ=:¶å\›-ã'Ô÷ãO˜í·pŸI
+ø°02•¼@òI9a2Õ	èÅpê¦Ð©B–i&%¼H_Âsâ|ùE])].›^ÖCµ¡GÙJSiø!N8̯^xEÈøpy×ãËÏ3K—öu$Ñ"¾XóY­×ó°^I´K
+6Ò`ª·•Gêma÷ƒÍ9:R+Ï·Н¸‘®BR(ÉEº"}‘¡ÈXh*2YŠÂЬEJ¡-äjw)?Q˜3‰)j–÷¨2¡`íÞ7ªÖìÝ»¦Úøõöoø×T‹­§O·^{ïÔç›ø{¼…Å9³ÞA‡þhã荬X}†]Q
+Äâh`ºrK=]"Ñ	w+6ãèÍÒU(µ©rÆÚx=ù@ާØò€šÊ©·¤¬ Xm(fh¯}H˜°½¾~Ø[›º»›¾ÕuêµÕ«÷ìY½ú58 <ö϶=¹Óé(ªÃcÔtîljmm¦څâ@Š`Gy¼$'8(ÚHJe1FÏ\f¡4ÂæT¼wtTò…ݦX-f“ЦÁ#Ê)ù¬ôàãÜðáÃÕïÆ´?9¨©Q0šŒf‡¥DÙ^Úï¿‘úí©€•Mkqv­¥ûµ&Fð“i`Ô,ÿTh&Ê·=@Gð³B3ùÇ3·ÍâïÒœÉü}*–ñ:(åÓéV>}¯[ÏŸ [Ô¶žNÜ@·ª~•b¼+ïULÄ!&B62Uª˜p‡yÀíŒþ&譐¢“ÂÏ6»lÓæÍø·yóMªç?ܼÉ z–Å›ùØš¤©4¦†x/á¥ë1]@_¢+UT._©q¹FÒ*+©Ò/¶Y
+:|ŏTˆ[/:zè»çuQS<øràô:G:wþÖÉ´]ÿ‘·±ŠIHHt
+_¹aÃJ>”¾w“RÞ}“¿ÏvýiuiÉêÝ—?¾ðY×\ßÑŝ˜Iy0†šÁŒ¹oÆL7Ê!¦æ:5ˆ[Ò‰&äêsÚ«ªjDË9äÑÞdOcjŸÖTŽ»Y+ì¿Ô†Á¾FÒ—Œ%ÓÈSd>y…Èá4‰$Ð$L'ÒûL÷™§Ð<:¾˨¹'»!UUü(Ëýé qòt~þüé®ÇX ó24w¦îá!šs¢G¯lÁ½ÌE?bȼ`œ%+%Ö˜¨ìYW˜…Yl.—wz"ÜÔ nb°JM³a樛«î.êÞøoä‰GóÂC<¿P¸MdzÔëÚ¸‘ª½§ƒüL°¨:帺Bý¦öë ñüÿú±
 ³>úÌ›ï¿ÿæýÛ&³ó5|uX¿þÅ7ü;Ÿ¯iPòM›Ä'*Яj
+£ñdj0Þ.s‰‰„Â¥;|—5dZ[é.˜bõn—Çî¿7:€XAÔ¶h°mélù—î
+:šHmš¡YlbMF¤Î#dÿœÅz^3èõ¥W»„;—oݺÕOØ8á½³a·×=s‰2Þþïâ×iž°n?¸}Û¡CÛ¶ÔÇ'ðoù×e󯿼ʿÐ@ÿÝåéÙ¯=ˆ;µIäÉ`$S@Á"”Ép¯€)‘d$ŽÆž¢ýE­ýWDÛ#ÜYۙȽ ³M¨Q,ƒe3¡–ÔJ²V¥4Žú÷ÀÑ®ÏÎRÞ…ªaJÇb–D4=U†1.ÓbG¢ž
+Db„¥§ÈVé)OÜ‘iŠïëvÆ»ÃôÈ
+H
+aþèdDúR¬·Wèj=µxÿ$ í
+=r*<\•S±ñ8bÿ	/e«víZµj÷.¾kIe÷ß.òÊÅ«wð~øÿ°slåÒ%kÖ,YZ)¼»¡´tÃÆ’Ò
+S|uÅoŸ9óvq/ödÅG×®}Tq’N~É’ç±õàf1úTŠ>Ej¸‰“½.ZB\!Ã.1DV„{CÖÊðò€ìvûíë6k°AzÙî*ÿ®5፮ãQG£ºÆ÷4zåÛaÛç6@ÜÑ@n³kÿ‹HO#©=X‰M ½Ža.MØ4Ñ2¬îÙOùMjýŒUø[üÊ„MtÄ-Dy+ÔLmS¥a_^¥áQnåx„u½xêñ
+Ô|ç¦ÚoQÿ"ðÀ‘ö˜înü&ÝÝVr뉌Ñ~=æÔùHª8*#ßêQý‰	yÏB°æ*(²ìøl'	ÇzI\$
+ßíÝÈ(„¦“z‚¹CŽ‘²‰îÆ^>q.Ž„„:²ŒÌÑ´	ß·úãØn4â,ÞYJš MGRq”˜@nÐÉd?>#«~j("N÷‹ˆõb«ØL†ˆb³˜#ÐTØÎ¦°ÝØ2à]Á†uÂKêéER@Âç
+‡ÅQ¢…\„f¨!WpŸßD*ÈNRˆ¶8èR$
+àÈ)ÖL6à1¯7Ó-ô,Zw.%çÉ« 
+cÉzýj"ß“¥0Y(„HòÐþSø¬fœ¿`ÐÎSáBŽ¡õ¸ÖÚwôgçµ£áÊ“ÉN©^rÈq¸Š±Ýôm“֐9Â\ø˜.ãÄ=âXRÑÈ!øì
+ê).@ßÕ£P}º0_Ì¡5äs1G~Ÿý®ê®¹_x =Ê#‡±Í—¬èÓít¬@KÕ«1¤Y'ÄùøyzMÈH'OãY!ÙGêH¨&ø$Í_iûgn/¡Ït¥ð=i†Qø:š'^ÇX#ÜR2ý|ÖZ!pOnmðþ©¾÷¦ùû÷ûE×g•}µ$«Ö¼ÀWßݝ5ßܧÕ2w-tµb îÒwñRÿ~㳦új»FºõÔÑ9£plÒT<U{8Œã£GõïAµ@HÿتU‡
+ÿŽxu¼6´×k¿ÇgVò<Æ0Až]Ý­,ÐæÉ³9"Ùp¯¯0LøñJïǃèË“ZÉi±•Šyd.³‘ƒB9¦þŠmd®P†Èð’ZA.a«Æ¶IJ%l9ã;Y'9Í>&ul±ŠWp¾ƒÌ•ö“-x_©x¯E\lj¿ÛleØTuKBt0]BÐ«B¬PŽÇ°ÀjÑ„H¨[ØPVÌ:¤	Ò«²(‘Kä/tStÇõ:ýsúOz|Ãü¾s:³[}»	â9læ;­Šƒ(} ÃÿÀ?Rà‡jøÞßq¸ÁáïøÖßTC{ ¾~åNö5‡ëÕðU5´uÀ—ð‡Ï‡ÁµLhåp5®´LbWª¡ol™—?È.wÀgá‡O9\L¿9àB5|Âácüu|tþ“Ã_ðö¿,‚óçîfçÁ¹»áì‡Ñì,‡£áÏÎpø‡?rh®†š<ìMx?Ns8¹La'Ýðn84r8Áá8‡cŽrø‡#~Ïá0‡C*ÐP`
+êß9Äê9¼s ›½sÞ)ü.Àd»á@Pü] ösx»ê8¼Å¡–Ão9ìË…7-°÷ Û›oÔØØ¨±Áëhôë°‡ÃkvsØeƒvl·°)°ÝÛr!„·„ªa+‡-›Ml‡Í&Ø´ÑÅ6åÂÆ
+V¶Ñ¬°Þ ¯rXWmfë8T›¡
+'UUÃÚ5¶ö6Xƒ»Ü•«±J«*²ÙªC°ªX¬øM€UdCEPüM Vr(/ÀÊ9”
+€WÐÍWî„ˍl…–¡Js¡#U€e
+¼Ìaé…-å°DÅŠ9qvÿzÑ"ök‹ÁÂ\(œìd…x‰Ã/Z`¾	^0À<Ïw at A<×s; ŸÃ¿âð¬žáð´’ÉžžOq˜µfb'Ã¹žäð‡éà §3A6‡G8<ÌaÚT›ÖS
+ðP¸‹=”S8<ˆ+?˜	“0‰ZÙ¤HxÀ÷³³û9dá>ïµ²‰îµÂãñÊxãî±²qv¸'ÆÌî±ÂX3ÜÍaL5Œ®†Qîú³»: óÜ9‚Frq‡pÀÃÃØ6~»™
+v‡ÁífÆ!ƒÃÐ!6´†¶²!œndƒ­n„4¤š!e‘¥pd„äF–l†FÐ_ÏX¡¿ú¥@Rß KÊ…¾}l¬o úØà¶Ä »íNH@BÀÈ `„xqbÃÀ~úmàËoxÐO.ĘÁtsˆî€¨LpaÇÅ!2"0RÂqR¸œìlxƒƒ‚¾*™`]a¹`á`6…33Þm
+#ƒôtx›Žƒì )D¼("œ€£À‘Ê­LèÔ
+„­§¹ËVÒ¤ÿòmÀÿø‰ù/qΑ¥
+endstream
+endobj
+8 0 obj
+   5732
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+>>
+stream
+xœ]’Mk„0†ïþŠ9n‹ÆÝ
+"”íÅC?¨íÐdÜ
+5†èü÷yÃPxÌLf3ñ¥ynô¸RüngÙòJè•åe¾YÉÔóuÔ‘HIr
+äßrêL»äv[Vž=ÌQUQüá6—ÕntxRsÏÅoV±õ•_—ŸÚ›1?<±^)‰êšμvS쓏rûãº]Ú_Äçf˜RÏ-ÉYñb:ɶÓWŽªÄ­šªÁ­:b­þí§%ÒúA~wÖ‡ž$¹ª=¥žN”2Pz t1è*@žÒT‚Â)§,ÔëA)H‚Bu…>Ï …Èg¢‘`½øèEÀ/G=üPðËAðKQ]À/ƒƒ€_~Yȃ_ê¿(øÁA?ü	¿¬ô×îg¿À}ÚîÓ!oÖºÁð#é'bŸ…Qó}jÍlö,ÿüºú½ý
+endstream
+endobj
+10 0 obj
+   349
+endobj
+11 0 obj
+<< /Type /FontDescriptor
+   /FontName /BitstreamVeraSans
+   /Flags 4
+   /FontBBox [ -183 -235 1287 928 ]
+   /ItalicAngle 0
+   /Ascent 928
+   /Descent -235
+   /CapHeight 928
+   /StemV 80
+   /StemH 80
+   /FontFile2 7 0 R
+>>
+endobj
+12 0 obj
+<< /Type /Font
+   /Subtype /CIDFontType2
+   /BaseFont /BitstreamVeraSans
+   /CIDSystemInfo
+   << /Registry (Adobe)
+      /Ordering (Identity)
+      /Supplement 0
+   >>
+   /FontDescriptor 11 0 R
+   /W [0 [ 600 862 612 549 633 277 633 615 317 390 636 636 636 774 686 390 748 731 684 611 634 837 636 603 636 636 636 636 636 636 ]]
+>>
+endobj
+5 0 obj
+<< /Type /Font
+   /Subtype /Type0
+   /BaseFont /BitstreamVeraSans
+   /Encoding /Identity-H
+   /DescendantFonts [ 12 0 R]
+   /ToUnicode 9 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+13 0 obj
+<< /Creator (cairo 1.8.10 (http://cairographics.org))
+   /Producer (cairo 1.8.10 (http://cairographics.org))
+>>
+endobj
+14 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 15
+0000000000 65535 f 
+0000008363 00000 n 
+0000001012 00000 n 
+0000000015 00000 n 
+0000000990 00000 n 
+0000008204 00000 n 
+0000001121 00000 n 
+0000001322 00000 n 
+0000007147 00000 n 
+0000007170 00000 n 
+0000007596 00000 n 
+0000007619 00000 n 
+0000007857 00000 n 
+0000008428 00000 n 
+0000008556 00000 n 
+trailer
+<< /Size 15
+   /Root 14 0 R
+   /Info 13 0 R
+>>
+startxref
+8609
+%%EOF

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.png
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.png	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.png	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,129 @@
+‰PNG
+
+   
+IHDR    ®   öÚ!   bKGD ÿ ÿ ÿ ½§“    IDATxœìÝ{\Uu¢ÿÿ÷R%ŽyÉS
+j’—Rƒƒ×SÓŒÍ÷d†NéÚM1ÈÔ̦£“`ê¢åÝïHj…6y¤ì7 ™ZZæI	s¼d“ðòÙ¿?vÙkÁZÛ^ÏÇ£Gìµ×ú¬Ïz‹ìýy»÷ÆÑ£Ggll¬       À;vìP@ïÞ½•’’bõ\       Ü RSSågõ$       Üx(      ˜Žâ      €é(      ˜Žâ      €é(      ˜Žâ      €é(      ˜Žâ      €é(      ˜ÎÒâÑápÔh{M”––*..Îð8fŠ‹‹Sii©ÕÓ       j]ŠG‡Ã¡uëÖ¹m›5k–)EᵜN§á1Ö­[§nݺ¹n;××ÊÌÌTÇŽU¿~}EEE);;[’”‘‘¡öíÛWØ^VV¦””…„„¨~ýúêСƒ–/_^á<~~~ºãŽ;´råJ×}]»v­      p#ªñ+ÓÓÓ]ÅàåË—µbÅ
+Ó'e†5kÖ¨wïÞ®ÛN§³ÒB333S:{ö¬5tèPIÒæÍ›µe˝9sF“&MҐ!C$I©©©Ú´i“²²²TRR¢wß}W~ø¡Û˜N§S¥¥¥Zºt©FíÚÞ»wo­Y³¦®      °—]ºtÑ{ï½'IZµj•|ðÁ
+û”¿êï?þã?”••%IúôÓOÕ¥K¸½êpêÔ©jܸ±š6mêzå`ùý‡£Òû8 ^½z©~ýúj×®rss+ÌaçÎŠˆˆ¸îõ¬[·N:uRPP †
+J’–/_®Ö­[ËÏÏOþþþjÕª•$iÁ‚Z²d‰:uê¤zõê)""BùË_ª¿y󿮝#""ôÉ'Ÿ\wN      €¯«qñ˜””¤iÓ¦Éét*--M£Fª°ÓéÔ•+W´jÕ*%%%I’žxâ	ýîw¿SII‰Û+ƒƒƒõí·ßjåÊ•7n\…±*»ÿw¿ûž~úi;wNiii1bD…ã
+Õ¨Q#¯ëäÉ“4hÒÓÓ]Û‡‚‚‚ôä“OjÁ‚’¤'N(<<Üueoßv8ò÷÷׃>¨Y³f¹¶7jÔH?üðƒÇs      |•câĉΔ”Ïvv8ät:õßÿýߺí¶ÛtêÔ)edd¸¶KÒìÙ³5kÖ,?~\eeer8*++S½zõtæÌ5hÐÀm¼+W®ÈÏÏÏmükÿ_ÙýõêÕsû%-åç¸VóæÍuðàAÝrË-•^õvîÜ©¸¸8M:U?þ¸Û}.\PVV–^~ùe:tHwÜq‡>üðCWùøÓ1Ë¿v:ú裏4bÄåççK’NŸ>­öíÛëäÉ“å
+      ø¢ÔÔTï~«õرcõæ›oê¹çž«pßĉµdÉë½÷Þsr;vÔ¢E‹téÒ%·ýËKŪTvTT”–-[æzõäOKGIºçž{tðàÁë^Ë¢E‹4pà@-X°À­tLNNÖ÷ßïšÃ¹sç$I#FŒÐ3Ï<£C‡éÊ•+®R±*åcHÒ¡C‡Ô½{÷ëÎ	      ðu^111r:ºï¾û*Ü7aÂ
+<X-[¶Ôž={\Û—.]ª¥K—ꦛn2ü[°W¯^­+Vè¿øE¥ou–¤!C†hÛ¶m®Û×îwí×O=õ”þõ¯éþûïwm/..Vdd¤¢¢¢Ô¸qcMŸ>]k×®•$ýþ÷¿Wtt´úô飠  ýæ7¿ÑêÕ«ÝÎ]þ[­‡ª9s渶çää¸~y
+      p#«Ñ[­}ÉåË—õøã+##Ã꩸ÄÅÅiÕªU
+°z*      @­IMMÕ
+Û€Õ«WÏV¥£$ÛÍ      ¨-^½Õ       ªCñ      Àt       LGñ      Àt       LGñ      Àt       LàÉN;vìжmÛj{.       l®GŠ½î~999ZóöuëÙÁðÄ       ø¦}»óuúôióŠGIêÞ«ƒ’&Åš       ßµdN–TæÙ¾|Æ#       ÓQ<      0Å#       ÓQ<      0Å#       ÓQ<      0Å#       Ó˜9ؾÝùÚµý€™C      ¨‘]ÃÔ­gÓÆ3µxü$ï€rÿzPÑ÷Þkæ°       jÑ'Ÿ~ªsgÏÛ·x”¤è÷jò„	f       –¤Í›¯cÌ}'3Ÿñ      Àt       LGñ      Àt       LGñ      Àt       LGñ      Àt       LGñ      Àt       LGñh‚àP«§àRzåŠÇXrî„Ä1*½rÅ’s     À^,-ƒCBµúí·+l«ìëªî߸y³Ûýs-®p\vNŽ‚CBõÁ‡Öèüµ!8$TÁ!¡úEÛ0uëÓWïoÝZaŸ1/¾¨/ÐåÒR
+xxkû·'OêÁƒÕ<¢<Xßž<YáØw6mVTä]®Û6mÒ=ýú«Yx„bü•rrs««¬¬L~sž:Çü§š…Gèžþ´vÆ
+óoÚVzݧuï¼ãº¯ó]ôÎ&÷?      ü<YþŠÇµ6êèñã^¿`Ù29NIÒåÒRelÜXaŸE+Vhà÷kñŠ•¦ŸßE‡ôÝÁ¯4õåIzîʼnî/+sÊÏÏOŸìÙ£®;»¶ÿ~ZŠzvï®~¾O=»w×+))Ž}û½÷Ý£‡ëöÿþíïZ¿ü/úççû4vô(ó\µc¥Í›¯þö¡Ö.Y¬ã¾ÔêEµ-7¯ÂüOåÒܯkÜ+ÿãÚÝ£‡Þ~ï=cá      à†`yñ8ãÕ)zþåß«¬¬Ì«ã;w줿fgK’2ßyGúôv»ÿÈÑ£:vü„–Ν«ß~«oþùOÏÿÙç_(ú—êÖ°pEÿòAíÛ¿_’´ë³ÏÔ­O_ÝvgG½:ýu×þóóõ_ƒQ³ðuïÛOïÚ]íÜýýüÝnÏ[ºÔõ*Ìûø¥~7D–-s½
+sÛ?þ¡g¨g”óÿý£Â˜{öîUXHˆëöü?ÍÒí­ZÉáç'?µlÞ¼Ú±ÞZ½Zs§OW‡ˆÕPXHˆæÍšYå54kÚÔõuXHˆ>Ý·¯Úk     ÀσåÅc»ðpõ‰Ñ›K–zuü3ññúÓoÊétjÞÒ·4rØ0·û—®\¥ñύQ€¿¿&$=§¥+Wy|þÑãÇkø8Ù·WÇÄiÔ¸ñ’¤¤‰/éÙ„}½{—Z¶hîÚÿÙÆ)þ·CutÿJùŸW4æÅ+spH¨šG´ÓÄ?¼ª?O›öãñ		:üÙ§Š½¯—Š(ö¾^úzÏn.$9£¦MšH’~¬ÓgÏV»èôi5lРÂùZ´k¯¤—^Rڴתëäwß)´M×qåÿýt¼_´
+Ó£OÄ돿Ùµ½aÆ*,*ªôš     ðóbyñ(IÏ&Ä+'7WÿwðÛöÀúõUrþ¼ëvÉùó
+tÛ'¤õjѼ¹ÆOž¬ðÐPÝÖ¢…ë¾K—.ief¦âG'*8$Tñ£µ23S—.]òèüóó5<.N
+4Ðãƒë«C‡\Ûüˆnºé&
+{ôQ×þûöïרqãÕ¢]{
+ŽOPþáÕ^oÑáýðu¾öäähà÷»¶‡„*$ênmËÍSpH¨¶åæ©m—®Z´|¹$©ñ-·èTa¡$釢"5¾ùæ
+c7nì–Yùù¾=ð¥þôÚõôóc««y³fúæèQ×qå¥çOÇ+,øZW®Ð¤©S]ÛKJJÔ$8¸Òk     ÀÏ‹-ŠG‡Ã¡?¿öG½ðÊ+nÛ{tï¦Yo¼¡’óçUrþ¼f½ñ†zuï^áøÑ#GhÉŠ•zú‰'ܶ¯ÏÊR—Ν]ZÑáuŠÒú¬,ÎÞ¶­Ö¬_¯.hef¦Ú…‡K’"´fýz]¼xQ«ß^ïÚÿ®;ïÔ›3gèÄ—û]å\M.Ш	Ú´v¶mÊÒð¸8.ГÇK’zßwŸæ-]ªK—.iÞÒ¥Š½ï¾
+ctéÜÙ­ð|éS]£ŸŸŸŠKJªkXÜ£ûòËúú›otåÊ9RíœOýPèúúëo¾ÑÝ‘‘5ºf      ܘlQ<JÒí­Zé±Á¸mKOMÕÞÏ¿PX×n
+ëÚMû¾Ø¯ô驎íÙ½»ŠèÞn]ݶ/^¾BOý»´+÷ÔðáZRÉ/™©ìüs^Ÿ®EËW莻"õ—5k5÷õ«Ÿç8;5Eo,^¢Ð.]uìÄ	×þ‹Òg+cãF…ÜÝ¥Ò·({bçî=êÞ¥‹ŠNŸQpãÆn÷ýaÒKÊýx§nït—òvîÔÔ—'U8~ÐÀÊýøc×íŽíÛ+æÁ_©udgÍž7_Kæ¤W;Ö¸ÄDõèÖ]‡þV-Úµ×oŸ|J‹gÏv;Gùoµñ\’^uŠkû?vìÐ#=Tãk     ÀÇ1qâDgJ%¿ùZ©©©Ê?‘§¤IqÕî·dN–EÁš<a‚™sD
+\.-ÕÓÉÏkéÜ9u~î„Ä1Z8;Mþþ×ß      ¶‘6o¾Ž]8àQÿwSYˆ<éÌœ ¬W/ À’ÒQ’eç     €ýØæ­Ö       n       LGñ      Àt       LGñ      Àt       LGñ      Àtf¸ëÓÏ”6¾Ùà      ¨%ÿøøcµ‰¼ÙÔ1M-#»†éÜÙó:ZrÀÌa      Ô¢Öwݬn=;˜:¦©Åc÷^Ô½—¹      à{øŒG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦0s°}»óµkû3‡¼aDv
+S·žªÝ‡üªF~ƐŸ1ägùC~ƐŸ1ägùC~ƐŸ1ägùC~ƐŸ1žäW¦ŸäÐÇ;¢ØØX3‡õy;vìй³ç¯ûG~•#?cÈÏò3†üŒ!?cÈÏò3†üŒ!?cÈÏò3†üŒ!?cÈÏOó«	S‹GIêÝ»·RRRÌÖ§¥¦¦*ÿDžGû’_EägùC~ƐŸ1ägùC~ƐŸ1ägùC~ƐŸ1ägùS“ü<Åg<      0Å#       ÓQ<      0Å#       ÓQ<      0Å#       ÓQ<      0Å#       ÓQ<      0Å#       ÓQ<      0¥Å£ÃáÃᐿ¿¿"""ôî»ïºÝWÙþ5§Üˆ#´wï^]¾|Y={ötm?~ü¸¢££¨èèh?~Ü„+«vȯüتƶ3;ä—™™©Ž
 ;ª~ýúŠŠŠRvv¶	WV7ì_FF†Ú·oO~^æWnÊ”)>÷wØù]ûóüjž_YY™¦L™¢V­ZÉÏÏϧ2´C~?ýþkÚ´©	WV7ìß†
+¦€€ µmÛV6l0áÊê†ò{ÿý÷®ÀÀ@õíÛWß}÷	WV7ì_U¾°.±s~¾ð˜lçü|a]bçü|a]bçüÊÙy]bçüì¾.±üN§S—.]ÒÌ™35räÈZ§¬¬L~~~Ú¾}»î¹ç×öqãÆ)&&FgΜQLLŒÆïõ¬`u~N§SN§ÓëóZÍêü233•‘‘¡³gÏ*11QC‡õzV°:¿Í›7kË–-:sæŒ&Mš¤!C†x=+XŸ$íÚµK.ôúÜV²C~å?}ñç Õù¥¤¤(##C[¶lÑ•+W|.C«ó»ö{///OÏ<óŒ×s°‚Õù%$$hΜ9*))QzzºFŒáõ¬`u~ñññJKKÓÙ³gõÂ/ðüÙ¤çϾ².±k~¾òxl×ü|e]b×ü|e]b×ü$ßX—Ø9?;¯K,/Ëùûû×Ê8iiir8Z¶l™"##«ôôtWœ­ääd)99Y[·n5euͪünVå·nÝ:uêÔIAAA0`€6lhÊ<êšUù-_¾\­[·–ŸŸŸüýýÕªU+SæQ׬ÊïâÅ‹JHHЪU«L9¿U¬üùwË-·¨Q£Fúõ¯­#GŽ˜2ºfU~‹-ÒÌ™3Õ©S'Ÿ~L±Ããïk¯½¦Ñ£G›2ºfU~­[·–ôã«Ú´icÊ<êšUù•••Iú1¿>øÀ”yÔ5;üý½–¯­Kì–Ÿ¯±[~¾¶.±[~¾¶.±[~¾¶.±[~’½×%–‡CJJJÒ‚L'99Y………êׯŸœN§úõë§S§N¹ZàÂÂBÝzë­’¤¦M›ª¨¨ÈØÕ1«óóuvÉïäÉ“4hÒÓÓ½žƒ쐟ÃáPPPž|òICs°‚ÕùMœ8QñññêÓ§ák±‚Õù9N9sFºóÎ;mûÊ€ªXß±cÇ”­
+¨M›6•¾ÍÄάί\nn®š4i¢–-[z=+XßÂ…5tèPê±ÇÓüùó
+_S]²:¿hÔ¨Qjܸ±¶nÝÊóg“ž?ûʺĮùù
+»çg÷u‰óó…u‰]óó•u‰]ó³ûº$Àê	T``` Š‹‹Õ¨Q#IRqq±‚‚‚j<εÍpù×M›6Õœ9s”˜˜¨àà`}ÿý÷jÞ¼¹N:¥àà`o/ÅVççëìßΝ;§©S§ê¡‡òê:¬b‡üœN§.\¸ ¬¬,
+6L‡òêZ¬`u~ééér:;v¬k_zRou~åš5k¦W_}U·ÜrK¯ÁJVç¬þýû+55UÙÙÙŠ×o~óo/§ÎY_¹É“'kÆŒ5ž¿Õ¬ÎoذaZ³fúöí«ììl
+>\_}õ•·—Sç¬Îïá‡ÖÃ?,éêç=úÚ?X_U|e]b×ü|…óó…u‰óó…u‰]óó•u‰]ó+g×u‰å¯x¬Jtt´¦M›¦ââbkÚ´iЉ‰©ñ8N§SÏ?ÿ¼rrr´gύ9RN§Óõ‡Ö¿¥¥¥éâÅ‹JKKS¿~ý̾KÔU~7ªºÊoÑ¢E8p ,X ÇÜì˰L]å—œœ¬ï¿ÿ^’äçç§sçΙzV©«üÊÊÊÜ>ÄŽîި럧OŸÖ´iÓeÖ%Xª®ò0`€¤ŸTÝ(o¡«Ëᅬ>úH¥¥¥ºûî»Í¼KÕU~§N’ôã÷]ùm_W—ßN§S_~ù¥Æ¯§Ÿ~ÚÌ˰ŒÕÏŸ}}]bu~¾Îêü|}]bu~¾¾.±:?__—X_9»®Kl[<.^¼X»wïV³fÍÔ¬Y3íÙ³G‹/öj¬¼¼<õìÙS………jÒ¤‰Û}3fÌжmÛtóÍ7룏>ÒÌ™3͘¾åê*¿kk’]ƒ’7ê*¿§žzJÿú׿tÿý÷»ò+..6ã,UWùEFF***J7ÖôéÓµvíZ3¦o¹ºÊïFU×?ÿZ¶l©íÛ·ûÌgÒ\O]å7sæL͘1C5RRR’Þzë-3¦o¹ºüû;yòd%''²­ÔU~åonРÆŒcû³÷T]þüóóóSÿþýõ裏j„	fLßrV?öõu‰ÕùùúºÄêü|}]bu~¾¾.±:?_gu~v_—XúVëêZì6mÚhË–-†Ç‘¤;vH’úõëWá_o¿ývåååyt»±C~¾ö/×"?cì_BB‚<:ÝØ!¿šŒc7vÈÏ×2»–ò»í¶Û”““ãÑyìÆùIÒßÿþwÎc7vÈoðàÁ<x°Gç±;äÇÏ¿ÚÉÏÖ%vÎϾ/ÉÏ;ççë;çWÓ}¬`çüìšY9Û¾
 â      €ï¢x      `:ŠG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦£x      `º ³ܱc‡¦OŸnö°>mÛ¶mj^Ï£}ɯ"ò3†üŒ!?cÈÏò3†üŒ!?cÈÏò3†üŒ!?cÈÏò3†üŒ©I~ž2µxŒì¦sgÏëà±\3‡õy·…ÕS·ž®»ùUŽüŒ!?cÈÏò3†üŒ!?cÈÏò3†üŒ!?cÈÏò3†üŒ!?c<ͯ&'Nt¦¤¤T»SjjªòOä)iRœ©'      à;–ÌÉÒMe!ò¤Oä3      ˜Žâ      €é(      ˜Žâ      €é(      ˜Žâ      €é(      ˜.ÀÓ÷íÎ×Ò¹Yµ9       6¶kûÅÜâѾ=zôÐéÓ§¥RCó      àâïi£ØØXöõ¨xìÝ»·z÷îmdN       ~FøŒG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦ðd§;vhÛ¶mµ=       6×£GÅÆÆ^w?ŠÇœœ­y{‰ºõì`xb       |Ó¾Ýù:}ú´yÅ£$uïÕAI“âM      €ïZ2'K*ól_>ã      €é(      ˜Žâ      €é(      ˜Žâ      €é(      ˜Žâ      €éÌlßî|íÚ~ÀÌ!      ԁȮaêÖ³ƒiã™Z<~’w@¹=¨è{ï5sX       µè“O?Õ¹³çí[<JRt{5y³‡      PKÒæÍ×±澓™Ïx      `:ŠG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦£x4ApH¨ÕSp)½rE	‰c,9wBâ•^¹bɹ     `/–Á!¡ZýöÛ¶UöuU÷oܼÙíþ¹‹W8.;'GÁ!¡úàÃktþÚªàPý¢m˜ºõé«÷·n­°Ï˜_Ôèri©<<¨Â
 ±ÕÍñM›y—ëö†M›tO¿þj¡˜¥œÜÜjÇ*++ÓŸßœ§Î1ÿ©fầÿ ­Ý°¡Âš„¶U§^÷iÝ;ï¸îë|W'½³ÉýÏ      ?O–¿âq톍:zü¸×Ç/X¶LN§S’t¹´T7VØgÑŠøÀýZ¼b¥éç÷FÑá}wð+M}y’ž{qb…ûËÊœòóóÓ'{ö¨kçÎnÇ.¨vì·ß{OÑ=z¸nÿïßþ®õËÿ¢~¾OcGÒˆ1ÏU;VÚ¼ùúàojí’Å:~àK­^´PÛró*ÌÿTþ!͝ñºÆ½ò?®íÑ=zèí÷Þó,      ÜÐ,/g¼:EÏ¿ü{•••yu|玝ô×ìlIRæ;ïh@ŸÞn÷9zTÇŽŸÐÒ¹suâÛoõÍ?ÿéñù?ûüEÿòAÝ®è_>¨}û÷K’v}ö™ºõé«Ûîì¨W§¿îÚÿ`~¾þkÐ#j¡î}ûéã]»«»¿Ÿ¿ÛíyK—º^…y߿ԯâ†hÁ²e5zæž½{âº=ÿO³t{«VrøùÉßÏ_-›7¯öø·V¯ÖÜéÓÕ!"Bõ¢y³fV¹³¦M]_‡…„èÓ}û<ž+      n\–íÂÃÕ7&Fo.YêÕñÏÄÇëOo¼)§Ó©yKßÒÈaÃÜî_ºr•Æ?7Fþþšôœ–®\åñùG¯áCâtdß^
+§QãÆK’’&¾¤gôõî]jÙâÇ"ïÙÆ)þ·CutÿJùŸW4æÅ+spH¨šG´ÓÄ?¼ª?O›öãñ		:üÙ§Š½¯—Š(ö¾^úzÏîë¾ÊñZE§O«aƒÎ×¢]{%½ô’Ò¦½Víñ'¿ûN¡mÚ¸Ž«ìíØåoô‰xýñ÷/»¶7lØP…EEÏ      7.Ë‹GIz6!^9¹¹ú¿ƒ‡Ü¶Ö¯¯’óç]·KΟW`` Û>!­ïP‹æÍ5~òd…‡†ê¶-\÷]ºtI+33?:QÁ!¡Š¨•™™ºté’Gç?˜Ÿ¯áqqjР<X_:äÚþØàGtÓM7iØ£ºöß·¿F¯íÚkp|‚ò®ôz‹臯óµ''G¸ßµ=8$T!Qwk[nž‚CBµ-7Om»tÕ¢åË=‰ñꍻeV~¾o|©?½öG=ýüØjoÞ¬™¾9zÔu\e¥gÑá­=M¢    IDAT|­+WhÒÔ©®í%%%jìñ\     pã²Eñèp8ôç×þ¨^yÅm{
 îÝ4ë7Trþ¼JΟ׬7ÞP¯îÝ+?zä-Y±RO?ñ„ÛöõYYêÒ¹³«@+:\ ®QQZŸ•åÑùÃÛ¶Õšõëuá­ÌÌT»ðpIRDX˜Ö¬_¯‹/jõÛë]ûßuçzsæør¿«œ«‰¢Ã5"A›Ö®Ñ¶MY§¢ÃzrøpÇèÒ¹³[áùÒ¦êTa¡$ÉÏÏOÅ%%Õ?,îQ}ùe}ýÍ7ºråŠ
+Ž©vÿS?º¾þú›otwd¤Çs     ÀËÅ£$ÝÞª•üˆÛ¶ôÔTíýü…uí¦°®Ý´ï‹ýJŸžZáØžÝ»«èpîíÖÕmûâå+ôÔOJ»§†×’J~ÉLeçŸóút-Z¾BwÜ©¿¬Y«¹¯_ý<ÇÙ©)zcñ…véªc'N¸ö_”>[7*äî.×ýíÓUÙ¹{ºw颢Ógܸ±Û}׎YÕøƒTîÇ»nwlß^1þJ­#;kö¼ùZ2'½Ú±Æ%&ªG·î8ô·jÑ®½~ûäSZ<{v…y4	m«Ï%éõW§¸¶ÿcÇ=òÐC5¾f      Üx'Nt¦¤¤T»SjjªòOä)iR\µû-™“%GQ°&O˜`æQ—KKõtòóZ:wNŸ;!qŒÎNS€¿ÿõw     €m¤Í›¯cxÔÿÝT"OúÄ 3'ëÕ°¤t”dÙy     `?¶y«5      €Å#       ÓQ<      0Å#       ÓQ<      0Å#       ÓQ<      0]€Ùîúô3¥ÍŸoö°       jÉ?>þXm"o6uLS‹ÇÈ®a:wö¼Ž–0sX       µ¨õ]7«[ϦŽijñؽWuïeî      ø>ã      €é(      ˜Žâ      €é(      ˜Žâ      €é(      ˜Žâ      €éÌlßî|íÚ~ÀÌ!o‘]ÃÔ­g‡j÷!¿ª‘Ÿ1ägùC~ƐŸ1ägùC~ƐŸ1ägùC~ƐŸ1ägŒ'ùÕ„©Åã'yôñߎ(66ÖÌa}ÞŽ;tîìùëþÁ‘_åÈÏò3†üŒ!?cÈÏò3†üŒ!?cÈÏò3†üŒ!?cÈÏò3ÆÓüjÂÔâQ’z÷î­””³‡õi©©©Ê?‘çѾäWùC~ƐŸ1ägùC~ƐŸ1ägùC~ƐŸ1ägùC~ÆÔ$?Oñ       LGñ      Àt       LGñ      Àt       LGñ      Àt       LGñ      Àt       LGñ      Àt       Lgiñèp8äp8äï﯈ˆ½ûî»n÷U¶MÇ)7bÄíÝ»W—/_VÏž=+ûÓ±Ë
 ÊÊ4eʵjÕJ~~~UžÛJvÎïÚí‡CM›6õö2kóÛ°aƒÂ ¶mÛjÆ
+Þ^f­±s~ï¿ÿ¾ÂÃè¾}ûê»ï¾óö2kòËÌÌTÇŽU¿~}EEE);;[’tüøqEGG+00PÑÑÑ:~ü¸ÑË5ó«êûÒNìœ_UÛíÄÎùedd¨}ûöä÷o5ͯܔ)SlûwØÎùýôùŸÙ9?ÖîŒ~ÿ±þ¨Y~¬?ÜÕ4?ÖîªÊ¯ªç)¬?ÜÕ4?»?öZþŠG§Ó©K—.iæÌ™9rd­SVV&???mß¾]÷ÜsÛqN§³Âþ)))ÊÈÈЖ-[tåÊ•J÷±»æW¾Ýét*//OÏ<óŒ×s«MvÍ/!!AsæÌQII‰ÒÓÓ5bįçV›ìš_||¼ÒÒÒtöìY½ðÂ?~¼×s«MVç—™™©ŒŒ={V‰‰‰:t¨$iܸqЉ‰Ñ™3gC~5̯ªïK»±k~Um·»æ·yófmÙ²EgΜѤI“4dȯçV›ìšŸ$íÚµK.ôzNuÁÎù]ûЮìšëwÞ>þ²þ¸ª¦ù±þpWÓüX¸«*¿ªž§°þpWÓüìþ¸kyñXÎßß¿VÆIKK“ÃáвeË©ØØX¥§§_·	^´h‘fΜ©N:Ù¶5¾–Ýò»Ök¯½¦Ñ£G›2¿Úb·üZ·n-éÇ%iÓ¦)ó«-v˯¬¬Lҏù}ðÁ¦Ì¯¶X•ߺuëÔ©S'iÀ€jذ¡$);;[ÉÉÉ
+
+
+Rrr²¶nÝjÊüj‹Ýòó5vËÏ×rµ[~Ë—/WëÖ­åçç'µjÕÊ”ùÕ»åwñâE%$$hÕªU¦Ì«¶Ù-?Iºå–[Ô¨Q#ýú׿֑#GL™_m±[~¬?®2ãñ—õGÍócýq•·ù±þ¸êzùUõ<…õÇUÞægw–‡CJJJÒ‚L'99Y………êׯŸœN§úõë§S§N]·
+>v옲³³Õ AµiÓ¦Ò—¿Ú]ó+—››«&Mš¨eË–^Ï­6Ù5¿…jèС
+Ôc=¦ùóç{=·Úd×ü,X Q£F©qãÆÚºu«ŠŠŠ¼ž[m²K~'OžÔ Aƒ”žž.I*,,Ô­·Þ*IjÚ´)ùÕ0?_a÷üìž«ós8
+
+
+Ò“O>ihnµÉ®ùMœ8QñññêÓ§×sªvÍÏétêÌ™3*((НwÞiÛW,Û5?ÖW}ü`ýá]~¬?®ò6?ÖWy’_eÏSX\åm~v`õª*U\\¬FI’Š‹‹Tãq®ý×Âò¯›6mª9sæ(11±Êñ‚ƒƒÕ¿¥¦¦*;;[ñññúÍo~sÝë©kvͯÜäÉ“5cÆŒëîg»æ7lØ0­Y³F}ûöUvv¶†®¯¾úêº×S×ìšßÃ?¬‡~XÒÕÏ[±ëw;ä·sçNÅÅÅiêÔ©z衇$]ýù÷ý÷ß«yóæ:uꔂƒƒk~quÀ®ùù
+;çç¹Ú9?§Ó©.(++KÆ
+Ó¡C‡jvquÀ®ù¥§§ËétjìØ±®cíøÖ%»æW®Y³fzõÕWuË-·x~QuÈ®ù±þ¸Êè÷ëïòcýq•·ù±þ¸Ê“ü*{žÂúã*oó³;Ë_ñX•èèhM›6MÅÅÅ*..Ö´iÓSãqœN§žþyåäähÏž=9r¤œNçuK³HúñÛÞîp-«ó“¤>úH¥¥¥ºû¹KYß©S§$ýø}W~ÛWX_ù±_~ù¥Æ¯§Ÿ~ڛ˰L]å·hÑ"
+8P,Ðã?î:®ÿþJKKÓÅ‹•––¦~ýú™vmuÁêü|Õùùz®Vç—œœ¬ï¿ÿ^’äçç§sçΙsauÄêüÊÊÊÜ>'ÉŽ¥cu¬Î¯ÜéÓ§5mÚ4EEE¾¦ºdu~¬?®2òýÇúÃûüX\eäûõÇõó«êy
+돫¼ÍÏîl[<.^¼X»wïV³fÍÔ¬Y3íÙ³G‹/öj¬¼¼<õìÙS………jÒ¤‰Û}×þæŸk¿ž9s¦f̘¡F)))Io½õ–±ªcVç']ýׯäädï/ÂBVçWþRý
+h̘1¶ÿûŸ²:?‡Ã!???õïß_>ú¨&L˜`ì‚êX]å÷ÔSOé_ÿú—î¿ÿ~W~ÅÅÅš1c†¶mÛ¦›o¾Y}ô‘fΜiÆeÕ«ó«îç¢/°:¿ª¶û
+«ó‹ŒŒTTT”7n¬éÓ§kíÚµf\V±:?_gu~å_·lÙRÛ·o÷™ÏÊ,gu~¬?~äíß_ÖWy“ëyûóõÇUÕåWÕóÖ?ò&?»¯?,}«uuÿŠÜ¦MmÙ²Åð8’´cÇIR¿~ý*4çU{Ûm·)''Ç£ó[ÅÎùIÒßÿþwÎo;ç7xð`
+<Ø£ó[ÅÎùùÂ+Tìœ_£F”——çÑù­bçüøþûùy?Žä]~			JHHðèüV±s~5ÝÇ
+vÎÏ®™]ËÎù5jÔˆõÇ¿±þð~‰õ‡‘q$~þGª>¿ªž§Ü~ûí¬?þÍ›üìþýgÛW<      ð]       LGñ      Àt       LGñ      Àt       LGñ      Àt       L`ö€;vìÐôéÓÍÖ§mÛ¶M­Âëy´/ùUD~ƐŸ1ägùC~ƐŸ1ägùC~ƐŸ1ägùC~ƐŸ15ÉÏS¦‘]Ãtîìy<–kæ°>ï¶°zêÖ³Ãu÷#¿Ê‘Ÿ1ägùC~ƐŸ1ägùC~ƐŸ1ägùC~ƐŸ1ägŒ§ùÕ„câĉΔ””jwJMMUþ‰<%MŠ3õä       |Ç’9Yº©,Džô‰|Æ#       ÓQ<      0Å#       ÓQ<      0Å#       ÓQ<      0Å#       Óxºã¾ÝùZ:7«6ç      ÀÆvm? ˜{C<Ú×£â±G:}ú´Tjh^       |Xô=mëѾ½{÷VïÞ½Ì	      ÀÏŸñ      Àt       LGñ      Àt       LGñ      Àt       LGñ      Àtžì´cÇmÛ¶­¶ç      Àæzôè¡ØØØëîçQñ˜““£5o/Q·žO      €oÚ·;_§OŸ6¯x”¤î½:(iRœ¡‰      ð]KædIežíËg<      0Å#       ÓQ<      0Å#       ÓQ<      0Å#       ÓQ<      0]€™ƒí۝¯]Û˜9$      €:Ù5LÝzv0m<S‹ÇOò(÷¯}ï½f       }òé§:wö¼}‹GIŠîq¯&O˜`ö°       jIÚ¼ù:vÁÜw2ó       LGñ      Àt       LGñ      Àt       LGñ      Àt       LGñ      Àt       LGñ      Àt&	µz
+.¥W®(!qŒ%çNH£Ò+W,97      ìÅÒâ18$T«ß~»Â¶Ê¾®êþ›7»Ý?wÑâ
+Çeçä(8$T|øaÎ_‚CBª_´
+S·>}õþÖ­öóâ‹úâÀ].-Õ€‡¹¶¿óþûêñ_÷«Yx„bü•rrs+ûÎ¦ÍŠŠ¼Ëu{æMº§_ÿ
+Ç”Ïã§×[VV¦?¿9OcþSÍÂ#tOÿZ»aC…ù7	m«N½îÓºwÞqÝ×ù®Nzg“ûŸ      ~ž,ÅãÚ
+uôøq¯_°l™œN§$éri©26n¬°Ï¢+4ðûµxÅJÓÏÃúîàWšúò$=÷âÄ
+÷—•9åçç§OöìQ×Ν]ÛßÝü¾Þš;GG¿ø\Oþn¸FŽy®Â±o¿÷ž¢{ôpÝþß¿ý]ë—ÿEÿü|ŸÆŽ¥ÿ>¦èpŠT8>mÞ|}ð·µvÉb?ð¥V/Z¨m¹yæ*ÿæÎx]ã^ù×öè=ôö{ïÕ<      Üp,/g¼:EÏ¿ü{•••yu|玝ô×ìlIRæ;ïh@ŸÞn÷9zTÇŽŸÐÒ¹suâÛoõÍ?ÿéñù?ûüEÿòAÝ®è_>¨}û÷K’v}ö™ºõé«Ûîì¨W§¿îÚÿ`~¾þkÐ#j¡î}ûéã]»«»¿Ÿ¿ÛíyK—º^…y߿ԯâ†hÁ²e®W%¾õÆ\uˆˆP`` úDG«AƒÆÜ³w¯ÂBB\·çÿi–noÕJ??ùûù«eóæÕÎé­Õ«5wútuˆˆP½€ ……„hÞ¬™Uî߬iS××a!!útß¾jÇ     ÀσåÅc»ðpõ‰Ñ›K–zuü3ññúÓoÊétjÞÒ·4rØ0·û—®\¥ñύQ€¿¿&$=§¥+Wy|þÑãÇkø8Ù·WÇÄiÔ¸ñ’¤¤‰/éÙ„}½{—Z¶ø±È{ö…qŠÿíPÝÿ…RþçyñÅJçªæí4ñ¯êÏÓ¦ýx|B‚ö©bï륢Ãн¯—¾Þ³»Â+ÿõý÷þ쳚>er…±‹NŸVß’Á!¡jÑ®½’^zIiÓ^«tNåN~÷BÛ´qWÙÛ±Ëß*þèñúãï_vmoذ¡
+‹Šª      ?–’ôlB¼rrsõ¹m¬__%çÏ»n—œ?¯ÀÀ@·}BZߡ͛küäÉ
+
+Õm-Z¸î»té’Vff*~t¢‚CB?:Q+33uéÒ%Î0?_ÃãâÔ A=>x°¾:tȵý±Áè¦›nÒ°Guí¿oÿ~7^-Úµ×àøå>\éõ.Ð_çkONŽ>p¿k{pH¨B¢îÖ¶Ü<‡„j[nžÚvéªEË—»öÙ½w¯<<HÏ&$è—ýûW;¸qc·ÌÊÏ÷í/õ§×þ¨§Ÿ[éœÊ5oÖLß=ê:®²·c.PaÁ×Ú¸r…&MêÚ^RR¢&ÁÁÕŽ     €Ÿ[‡C~ízá•Wܶ÷èÞM³ÞxC%çÏ«äüyÍzã
+õêÞ½Âñ£GŽÐ’+õôO¸m_Ÿ•¥.;»
+´¢Ãê¥õYY?¼m[­Y¿^.\ÐÊÌLµ—$E„…iÍúõºxñ¢V¿½Þµÿ]wÞ©7gÎЉ/÷»Ê¹š(:\ Q#´iímÛ”¥áqq*:\ '‡—$ýeíZ
+1Ržöšýÿ¯Ò1ºtîìVx¾ô‡©:UX(IòóóSqIIµs÷¨Æ¾ü²¾þæ]¹rEGŽT»ÿ©
+]_ýÍ7º;2Ò£k     ÀÍÅ£$ÝÞª•üˆÛ¶ôÔTíýü…uí¦°®Ý´ï‹ýJŸžZáØžÝ»«èpîíÖÕmûâå+ôÔ¿K»rO
+®%•ü’™ÊÎ?çõéZ´|…î¸+RY³Vs_¿úy޳SSôÆâ%
+íÒUÇNœpí¿(}¶26nTÈÝ]*}‹²'vîÞ£î]º¨èô7nìv_òK“ôý?hÐðß¹Æÿé«
+¨Ü?vÝîØ¾½bü•ZGvÖìyóµdNº$¹ÍïÚ¯Ç%&ªG·î8ô·jÑ®½~ûäSZ<{¶Û9Ê«õˆç’ôú«S\Ûÿ±c‡yè¡_3      n<މ':SRRªÝ)55Uù'ò”4)®Úý–ÌÉ’£(X“'L0sލË¥¥z:ùy-;§Îϝ8Fg§)Àßÿú;     À6ÒæÍ×±<êÿn*‘'}b€™„õêXR:J²ì¼      °Û¼Õ      Àƒâ      €é(      ˜Žâ      €é(      ˜Žâ      €é(      ˜.Àìw}ú™ÒæÏ7{X       µä¬6‘7›:¦©Åcd×0;{^GK˜9,      €ZÔú®›Õ­gSÇ4µxìÞ«ƒº÷2w‚       |Ÿñ      Àt       LGñ      Àt       LGñ      Àt       LGñ      Àtf¶ow¾vm?`æ7ŒÈ®aêÖ³Cµû_ÕÈÏò3†üŒ!?cÈÏò3†üŒ!?cÈÏò3†üŒ!?cÈÏò3Æ“üjÂÔâñ“¼úøoGkæ°>oÇŽ:wöüuÿàȯrägùC~ƐŸ1ägùC~ƐŸ1ägùC~ƐŸ1ägùãi~5ajñ(I½{÷VJJŠÙÃú´ÔÔTåŸÈóh_ò«ˆüŒ!?cÈÏò3†üŒ!?cÈÏò3†üŒ!?cÈÏò3†üŒ!?cj’Ÿ§øŒG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦£x      `:ŠG       ¦³´xt8r8ò÷÷WDD„Þ}÷]·û*Û¿¦ã”1b„öîݫ˗/«gÏž®íjß¾½êׯ¯¨¨(eggK’233Õ±cÇ
+ÛíÄÎùUµÝNìœ_¹)S¦Ty^«Ù9¿ò1Ëÿ³#;çWVV¦)S¦¨U«Vòóó³e†vÎï§ßM›65z¹¦³s~6lPXX˜Ô¶m[mذÁèåšÎÎù½ÿþû
+W`` úöí«ï¾ûÎèåšÎù•ûéãìñãÇ­ÀÀ@EGGëøñãÞ\b­²s~vì•ìëw5͏õ‡»šæw½ív`çüX¸«i~¬?Üýþ³ÛúÃòW<:N]ºtI3gÎÔÈ‘#kmœ²²2ùùùiûöíºçž{\Û7oÞ¬-[¶èÌ™3š4i’†"éêFF†Îž=«ÄÄD
+:Ôë¹Õ&»æWÕv»±k~’´k×.-\¸Ðë9Õ;ççt:]ÿÙ•]óKIIQFF†¶lÙ¢+W®Ø6C»æwí÷^^^žžyæ¯çV›ìš_BB‚æÌ™£’’¥§§kĈ^Ï­6Ù5¿øøx¥¥¥éìÙ³zá…4~üx¯çV›¬ÎOªüqvܸqЉ‰Ñ™3gC~5ÌÏåìšëw5͏õ‡»šæWÝv;±s~¬?~TÓüX¸óöñ×®ëË‹Çrþþþµ2NZZš‡–-[¦ÈÈHÅÆÆ*==ÝÕ/_¾\­[·–ŸŸŸüýýÕªU+IÒºuëÔ©S'iÀ€jذ¡)ó«-v˯ªíve·ü.^¼¨„„­ZµÊ”yÕ6»å'I·Ür‹5j¤_ÿú×:räˆ)ó«-vËoÑ¢Eš9s¦:uêdËmü)»åw­×^{M£G6e~µÅnùµnÝZҏÿJܦMSæW[ì–_YY™¤óûàƒL™_m±*¿ªg³³³•œœ¬   %''këÖ­¦Ì¯¶Ø-?_c·üX\åm~¬?®ò6?_û{m·ü$Ö’÷ù±þ¸ÊŒÇ_;®?,/‡•””¤˜>Nrr²
+Õ¯_?9Nõë×O§NrkЇ‚‚‚ôä“OV˜ÃÉ“'5hÐ ¥§§{=·ÚdçüªËÕ.ìšßĉ¯>}úxquÀ®ù9N9sFºóÎ;mûŠ»æwìØ1egg«AƒjÓ¦M¥/ÿ·»æW.77WMš4QË–-½ž[m²k~.ÔСC¨Ç{LóçÏ÷þ"k‘]ó[°`F¥ÆkëÖ­***òþ"k‘ÕùUõ8[XX¨[o½U’Ô´iSò«a~¾Âîù±þð>?ÖÞçç+¯íš돫¼ÍõÇUF?ìºþ°zU½„600PÅÅÅjÔ¨‘$©¸¸XAAA5ç§ï{—®>‘œ3gŽ]Ç^¸pAYYY6l˜:$IÚ¹s§âââ4uêT=ôÐC5¿¸:`çüªÚn'vÍ/==]N§ScÇŽukÇ—›Û5¿rÍš5Ó«¯þÿíÝTTuþÇñ?
+3:~
+S+Z–!¦–|!Áom»Ö9Z[z4mKKÍlw­mãGÐ.¡•&ZÛ/5ËÚ¬6¿±xV¤R*·ô[™Ö¦n%¨øë¤Ì÷vGgæ~†{§žs:
+w>÷s?Ÿ—Ã\>oî\P·nÝ›Xqj~.—K*((Pyy¹²²²tÝu×5ÇPrj~,PQQQ`“ê@NÍoÒ¤IZ±b…ÆŒ£òòrMž<YŸ~úiPs%§æ7~üx?^Róýúƒ»Ýùµužu¹\Ú»w¯zõê¥ÚÚZ¹\® æjNÍ/\89?ÖÖòcý|~áò}íÔü<XþeýaýõçÔõ‡íW<¶%99YyyyjllTcc£òòò”’’p?n·[³fÍREE…jjj4uêT¹Ýnïí¹¹¹Ú»w¯$)22RÔ|©ï¸qã´dÉÝrË-æ&ÖAìί­íáÂîüššš|îâÄ“~{ìÎÏ£¡¡AyyyJJJ²>©dw~cÇŽ•Ôr²‡;œÈîü$iýúõ:v옆
+ffRÈîüjkk%µ¼î<_‡»óóì»uëVÍ™3GÓ§O73±ÒQùµužÍÈÈPII‰Ž9¢’’¥§§››\°;¿pgw~¬?š›ëfÁæîß×vççÁú#¸üX4³òúsòúñ…Dz²2mÞ¼Y±±±ŠUMMÊÊʂꫪªJ£GV]]zôèáó\bb¢’’’Ô½{wjåÊ•’¤iÓ¦é»ï¾ÓUW]åýË@–çÕQìί­íáÂîüÝùy¾g{÷îÉ=  bIDAT­7†Í½j<ìί¸¸XEEEêÒ¥‹rrrôÔSOYžSG²;?©ù·¹¹¹–æa»óó|T¸sçΚ9s¦ãor2»ó‹ˆˆPdd¤2224aÂ͝;×òœ:RGå×–¢¢"UVVªk×®Z¿~½Š‹‹ƒ:¶]ìÎÏsþ=ùq¸°;?Ö-‚É/Ü®¶;¿pgw~¬?Z“ëÁ~ÿ:yýaëG­Ûû-J\\œÖ­[g¹Iª®®–$¥§§·úÍuvv¶²³³îÓ	œœ_[۝ÄÉùÒ¿]œœŸS3;‘“óëÓ§***ü:¾]œœŸ$½óÎ;~ß.NÎ/33S™™™~ß.NΏ÷¿íå×V?ýúõSUU•_Ç·‹“óãõׂü‚ïG
+.?Ö-‚É/þíâäüœšÙ‰œœëÁ~ÿ:yýáØ+      „/
+       Œ£ð      À8
+       Œ£ð      À8
+       Œ£ð      À8
+       Œ‹6Ýauuµ
+MwÖ*++Õwà~µ%¿ÖÈÏò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³&üüe´ð˜8<AöÒg»6˜ì6ìõI8C#F>m;ò;5ò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬ñ7¿@DÌ›7ϝŸŸßn£‚‚mßS¥œù      @øX¶p­ÎjŠ—?õDîñ      À8
+       Œ£ð      À8
+       Œ£ð      À8
+       Œ£ð      À¸hnÙ¼]Ë­
+åX       8ئÛ”rY¼_mý*<Ž5J
+
+
+Ò1Kã      Æ’/Sjjª_mý*<¦¥¥)--Íʘ       üˆpG       ÆQx      `…G       ÆQx      `…G       ÆQx      `…G       ÆEûÓ¨ººZ•••¡       ‡5j”RSSOÛίÂcEE…V¼´L#F¶<0       áiËæíjhh0Wx”¤‘—VÎü‰–       |-[¸Vjò¯-÷x      `…G       ÆQx      `…G       ÆQx      `…G       ÆQx      `\´ÉζlÞ®M·™ì      @Hž £ëÏháñýªmÚð—Ï”|Ùe&»      Bïðì?äÜ£$%ºLæÎ5Ý-      €)yb±v6ûIfîñ      À8
+       Œ£ð      À8
+       Œ£ð      À8
+       Œ£ð      À8
+       Œ£ð      À8
+       Œ£ðh€+~€ÝCð:vü¸²gÌ´åØÙ3fêØñã¶      ÎbkáÑ?@/¼ôR«m§zÜÖó¯¼ñ†Ïó‹––µÚ¯¼¢B®øzë¯
+èø¡àŠ Wü ý×y	qå½ùöÛ­Ú̼ç}¼m›¾?vLcÇ_ïݾæõ×uiz†bRÊ5?Sņ
+­ö}õõ7””xñi÷ñŒãäù655鏏?¡¡)ÿ­ØƒtiÆX­\³¦Õø{8OC.¿B/¾úª÷¹¡Ñ«¯ûþ{      àÇÉö+W®yE_ïÞôþKž~Zn·[’ôý±cZõÊ+­Ú,}öY»ú*•=ûœñã£~ç}ûÙ§zð¾ùºóžy­žojr+22Rï×ÔhøÐ¡Þíÿû·wôò3Ò?ÿ±EwÝq»¦Ì¼³Õ¾/½öš’G:í>õ;w¨~çŽVû—<±Xoýí¯Z¹¬L»·mÕKŸT冪Vã¯Ýþ¹=¬Ù¿ù­w{ò¨Qzéµ×      ?8¶‹¸_³îûµššš‚ÚèECô—òrIÒêW_ÕØ+Ó|žÿê믵k÷-_´H{þõ/}ùÏú}üÿñ±’zÎI¨äŸ^£-Ÿ|"IÚôá‡qåõ¹ð"=Pø°·ýg۷뮿A±iä˜t½»is»cŠŒòùú‰å˽Wa^qõOõ³‰7jÉÓO{¯J\ü‡GÔ¯o_EDF**2J½{õjÕgÍG)!>Þûµ?ûœè©^ТÂB
+4HgDG+!>^O<RÜfûØž=½âãõÁ–-íö     €Ûç¨1))z|Ùò ö¿-+Kxìq¹Ýn=±ü)M4ÉçùåÏ=¯9wÎTtT”ææÜ©åÏ=ï÷ñï˜3G“oœ¨¯¶|¤É7NÔí³çH’ræÝ«_egë‹Í›ÔûÜ–Bޯ¬_ܤ¯?ùXù¿ýfÞsÏ)Ç슠^ƒÎ×¼ß= ?æåµìŸ­~ Ô+.WýÎJ½âr}Q³ÙçÊDWü {þʹ÷^•ä=Ôªïú†Ý¹s«ãµ·Ï‰¾ùö[
+ˆ‹óîwªc{>*>á—Yúý¯ïón?ûì³UW_ßnÿ      øq°½ð(I¿ÊÎRņ
+ú¿Ï>÷Ùsæ™:xè÷냇)&&ƧM|ÿŸèÜ^½4gÁ
+0@}Î=×ûÜÑ£GõÜêÕʺc†\ñ”uÇ=·zµŽ=ê×ñ?Û¾]“'NTçΝuKf¦>ýüsïö›3oÐYg¥I&xÛoùä
 Ý>{ŽÎ=ÿefekûΝ§œoýÎú÷ÛUSQ¡qW_åÝø¤aªÜP%Wü Un¨Òy—×ÒgžñÙ÷_Û¶êý^ÓgÝÕªoW÷î>™ù³Ï‰zÅÆê˯¿öîwªc×ïÜ¡º_è•çžÕüôn?xð z¸\íö     €G#""ôLJ~¯»óŸí£FŽÐ#=¦ƒ‡éà¡Czä±ÇtùÈ‘­ö¿cê-{ö9Mÿå/}¶¿¼v­.:Ô[@«ß¹CÓ’ôòÚµ~àyçiÅË/ëðáÃznõj?p $iPB‚V¼ü²Ž9¢^zÙÛþâ/ÔãÅEÚ³õoq.õ;wèö)Ùz}å
+U¾¾V“'NTýκuòdIÒ½¿{Pµuu’¤ÈÈH5<تK†õ)xú³Ï‰&Mœ »î»O_|ù¥Ž?®_}ÕnûÚ×yñå—–˜èßd     ðƒæˆÂ£$õëÛW7gÞà³­´ @ýãc%¡„á#´åãOTZXÐjßÑ#Gª~ç]6b¸Ïö²gžÕ´ÿí<¦Mž¬e§ø#3§:þ‡µô™gõ“‹õ§+µèáæû9>Z¯ÇÊ–iÀ%õkÏoû¥¥jÕ+¯(~Ø%§üˆ²?ÞÛ\£‘—\¢ú†}ruïîóÜE\ ”k~¦þ‰Cõ苵lai«ý¯7NÞ}÷´ûœ8¾Ïž1C£FŒÔ¸›~¡sÏ¿@¿¸ušÊ}Ôçž¿j=åÎ=üÀýÞí¯®Ö
+×^ðœ     ðÃ1oÞ<w~~~»
+
+
+´}O•ræOl·Ý²…kQïÒ‚¹sMŽøþØ1Mϝ¥å‹vø±³gÌÔ“–(:*êô     à%O,Ö®ÃÛüªÿÕ/ê‰Ñ&ûmKÑQ’mÇ     €ó8æ£Ö       ~8(<      0ŽÂ#       ã(<      0ŽÂ#       ã(<      0ŽÂ#       ã¢Mw¸éƒU²x±én      „Èßß}Wq‰]öi´ð˜8<AöÒ×·™ì      @õ¿¸«FŒl´O£…Ç‘—ÖÈËÍ      @øá       Œ£ð      À8
+       Œ£ð      À8
+       Œ£ð      À8
+       Œ‹6ÙÙ–ÍÛµiã6“]þ`$OЈуÛmC~m#?kÈÏò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬!?kÈÏò„ÑÂãûUÛôîß¾RjjªÉnÃ^uuµì?tÚ8ò;5ò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬ñ7¿@-<JRZZšòóóMwÖ
+
+
+´}O•_mɯ5ò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬	$?qG       ÆQx      `…G       ÆQx      `…G       ÆQx      `…G       ÆQx      `…G       ÆQx      `…G       ÆÙZxŒˆˆPDD„¢¢¢4hÐ ýùÏöyîTííÇcÊ”)ú裏ôý÷ßkôèÑ­ž¿ÿþû}ú_³f­óÎ;OkÖ¬	fŠ!åäüÞ|óM
+8P1113fŒ¾ýöÛ`¦RNÈϳ¯ç?Ý»w+99Y111JNNÖîÝ»­L5$œœß©¶9“ó[½zµ.ºè"yæ™JJJRyy¹•©†„“ó[µj•.¸àòû@óó8ù¼â$NÎït¹:“ókjjÒý÷߯¾}û*22Ò‘:9¿“·÷ìÙÓÊTCÂÉù±þðh~¬?|µ•_[ïs¬?|šŸÓϽ’³ócýá+Ðüœ¾þ°ýŠG·Û­£Gª¸¸XS§N
+Y?MMMŠŒŒÔƍu饗ú<·iÓ&=ùä“>Û²³³µpáB<xP¥¥¥š2eJÐc%§æ—••¥’’íß¿_wß}·æÌ™ôØBÉ	ù¹Ýnï³gÏVJJŠöíÛ§””ò0¿“¿v*§æ·zõj­ZµJû÷ï׌3tÓM7=¶Prj~o¼ñ†Ö­[§}ûöiþüùºñƃ[(95?éÔç§qr~mmw§æ—ŸŸ¯U«Viݺu:~ü¸c3tj~'n«ªªÒm·ÝôØBÉ©ù±þðh~¬?|µ•_[ïs¬?|šŸÓÏ»N͏õ‡¯@ósúúÃö£GTTTHú)))QDD„ž~úi%&&*55U¥¥¥ÞÊð‘#G”­çŸÞg¿þýûKj©RÇÅÅ_¨8-¿¦¦&I-ù½õÖ[FÆ*vå'IݺuS—.]ôóŸÿ\_}õ•$©¼¼\¹¹¹êÔ©“rssõöÛo_¨8-¿pã´ü^|ñE
+2D:uÒØ±cuöÙg_¨8-¿gžyFýû÷Wdd¤¢¢¢Ô·o_#ã§å×ÖyÅ©œ–_{۝Èiù-]ºTÅÅÅ2dˆ£¯ZñpZ~'z衇tÇw_¨8-?Ö͂͏õG³Óå×ÖûëfÁænœ–ëfÁæçôõ‡í…LjˆÅÄÄ(''GK–,1ÞOnn®êêꔞž.·Û­ôôtÕ
 ÖÖz+ÃóæÍSVV–®¼òJŸþž|òIÝtÓMЉ‰ÑÍ7߬ŋ=¶Prj~K–,Ñí·ß®îÝ»ëí·ßV}}}Ðc%»ós»ÝÚ·oŸvìØ¡/¼Ðû›ºº:sÎ9’¤ž={’_€ù…§ç÷Í7ßèúë¯WiiiÐc%'ç¡N:éÖ[oµ4¶Prj~mWœÆ©ù…Ëû¢SóÛµk—ÊËËÕ¹sgÅÅŝòãONàÔü<6lØ =z¨wïÞA-”œšëfÁæÇú£Ùéòkë}ŽõG³`óNϏõGðù9yým÷ Úº9&&FêÒ¥‹$©±±Q:u
+¸Ÿ«ÀžÇ={öÔÂ…5cÆ•––Êívë®»îò¶q»Ýš4i’V¬X¡1cƨ¼¼\“'OÖ§Ÿ~ÔCÉ©ù?^ãǏ—Ô|¿§¾!۝ŸGll¬xàuëÖM’är¹´wï^õêÕKµµµr¹\M¬ƒ85¿páäüÞ{ï=Mœ8Q>ø ®½öZÿ'ՁœœŸÛíÖáǵvíZMš4IŸþ¹ÿë Nͯ­óŠÓ85¿Ómw
+§æçr¹”‘‘¡‚‚•——+++K×]w]`“ë NÍÏcÁ‚***òo26pj~¬?š›ëf§Ë¯­÷9ÖÍ‚Í/\89?ÖÖòsòúÃö+Û’œœ¬¼¼<566ª±±QyyyJII	¸·Û­Y³f©¢¢B555š:uªÜn·÷¤ÕÔÔäs?Ïÿkkk%µüc{¾vççy¼uëVÍ™3GÓ§O73±ÒQùy444(//OIII’¤ŒŒ•””èÈ‘#*))Qzzº‘yu»ówvç·téR7NK–,Ñ-·ÜbdNÉîürssµwï^IRdd¤8`}RÈîüÚ;¯„»ó;Ýv§³;¿±cÇJjùù/Ü>Fgw~’´~ýz;vLÆ
+³<ŸŽfw~¬?šYyý±þ8}~m½Ï±þhl~áÎîüX46?§¯?[x,++ÓæÍ›«ØØXÕÔÔ¨¬¬,¨¾ªªª4zôhÕÕÕ©G~íã¹T¿sçΚ9s¦ãor2»ó‹ˆˆPdd¤2224aÂ͝;7¨cÛ¥£òóüE«Þ½{kãÆÞ{𩲲R]»vÕúõëU\\lyNÉîü<ÛO~.ìÎoÚ´iúî»ïtÕUWyÛ466ZžWG±;¿ÄÄD%%%©{÷î*,,ÔÊ•+-Ï©#ٝ_¸³;¿pÏÕîüŠ‹‹UTT¤.]º(''GO=õ”å9u$»ó“š¯vÌÍ͵4»ØëÁ¾ÿ±þhÖ^~m½Ï±þhL~¬?Z“ëÁäçôõ‡­µnï*†¸¸8­[·Îr?’T]]-IJOOo÷77'ö“™™©ÌÌL¿Žo'çW¨8!¿¶öíׯŸªªªü:¾]œœ¯¿ä|?Rpùegg+;;Û¯ãÛÅÉùÚÆNÎÏ©™ÈÉùõéÓG~ß.NÎO’Þy翎o'çÇú£ïÁ÷#µŸ_[ïs¬?Z“¯¿ä|?Rpù9}ýáØ+      „/
+       Œ£ð      À8
+       Œ£ð      À8
+       Œ£ð      À8
+       Œ‹6Ýauuµ
+MwÖ*++Õwà~µ%¿ÖÈÏò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³&üüe´ð˜8<AöÒg»6˜ì6ìõI8C#F>m;ò;5ò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬!?kÈÏò³†ü¬ñ7¿@DÌ›7ϝŸŸßn£‚‚mßS¥œù      @øX¶p­ÎjŠ—?õDîñ      À8
+       Œ£ð      À8
+       Œ£ð      À8
+       Œ£ð      À¸hnÙ¼]Ë­
+åX       8ئÛ”rY¼_mý*<Ž5J
+
+
+Ò1Kã      Æ’/Sjjª_mý*<¦¥¥)--Íʘ       üˆpG       ÆQx      `…G       ÆQx      `…G       ÆQx      `…G       ÆE¤¥¥¹¯¾új»Ç      ࢢ¢Bÿ',¦Q£¥    IEND®B`‚
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-with-smt.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0xffffffff,0xffffffff" complete_cpuset="0xffffffff,0xffffffff" online_cpuset="0xffffffff,0xffffffff" allowed_cpuset="0xffffffff,0xffffffff" nodeset="0x0000000f" complete_nodeset="0x0000000f" allowed_nodeset="0x0000000f">
+    <page_type size="65536" count="0"/>
+    <page_type size="16777216" count="0"/>
+    <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x0000ffff" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" allowed_cpuset="0x0000ffff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="31943819264">
+      <page_type size="65536" count="487424"/>
+      <page_type size="16777216" count="0"/>
+      <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="1" cpuset="0xffff0000" complete_cpuset="0xffff0000" online_cpuset="0xffff0000" allowed_cpuset="0xffff0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="33554432000">
+      <page_type size="65536" count="512000"/>
+      <page_type size="16777216" count="0"/>
+      <object type="PU" os_level="-1" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="24" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="25" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="26" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="27" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="28" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="29" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="30" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="31" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="2" cpuset="0x0000ffff,0x0" complete_cpuset="0x0000ffff,0x0" online_cpuset="0x0000ffff,0x0" allowed_cpuset="0x0000ffff,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="33554432000">
+      <page_type size="65536" count="512000"/>
+      <page_type size="16777216" count="0"/>
+      <object type="PU" os_level="-1" os_index="32" cpuset="0x00000001,0x0" complete_cpuset="0x00000001,0x0" online_cpuset="0x00000001,0x0" allowed_cpuset="0x00000001,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="33" cpuset="0x00000002,0x0" complete_cpuset="0x00000002,0x0" online_cpuset="0x00000002,0x0" allowed_cpuset="0x00000002,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="34" cpuset="0x00000004,0x0" complete_cpuset="0x00000004,0x0" online_cpuset="0x00000004,0x0" allowed_cpuset="0x00000004,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="35" cpuset="0x00000008,0x0" complete_cpuset="0x00000008,0x0" online_cpuset="0x00000008,0x0" allowed_cpuset="0x00000008,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="36" cpuset="0x00000010,0x0" complete_cpuset="0x00000010,0x0" online_cpuset="0x00000010,0x0" allowed_cpuset="0x00000010,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="37" cpuset="0x00000020,0x0" complete_cpuset="0x00000020,0x0" online_cpuset="0x00000020,0x0" allowed_cpuset="0x00000020,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="38" cpuset="0x00000040,0x0" complete_cpuset="0x00000040,0x0" online_cpuset="0x00000040,0x0" allowed_cpuset="0x00000040,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="39" cpuset="0x00000080,0x0" complete_cpuset="0x00000080,0x0" online_cpuset="0x00000080,0x0" allowed_cpuset="0x00000080,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="40" cpuset="0x00000100,0x0" complete_cpuset="0x00000100,0x0" online_cpuset="0x00000100,0x0" allowed_cpuset="0x00000100,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="41" cpuset="0x00000200,0x0" complete_cpuset="0x00000200,0x0" online_cpuset="0x00000200,0x0" allowed_cpuset="0x00000200,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="42" cpuset="0x00000400,0x0" complete_cpuset="0x00000400,0x0" online_cpuset="0x00000400,0x0" allowed_cpuset="0x00000400,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="43" cpuset="0x00000800,0x0" complete_cpuset="0x00000800,0x0" online_cpuset="0x00000800,0x0" allowed_cpuset="0x00000800,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="44" cpuset="0x00001000,0x0" complete_cpuset="0x00001000,0x0" online_cpuset="0x00001000,0x0" allowed_cpuset="0x00001000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="45" cpuset="0x00002000,0x0" complete_cpuset="0x00002000,0x0" online_cpuset="0x00002000,0x0" allowed_cpuset="0x00002000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="46" cpuset="0x00004000,0x0" complete_cpuset="0x00004000,0x0" online_cpuset="0x00004000,0x0" allowed_cpuset="0x00004000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="47" cpuset="0x00008000,0x0" complete_cpuset="0x00008000,0x0" online_cpuset="0x00008000,0x0" allowed_cpuset="0x00008000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="3" cpuset="0xffff0000,0x0" complete_cpuset="0xffff0000,0x0" online_cpuset="0xffff0000,0x0" allowed_cpuset="0xffff0000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="33285996544">
+      <page_type size="65536" count="507904"/>
+      <page_type size="16777216" count="0"/>
+      <object type="PU" os_level="-1" os_index="48" cpuset="0x00010000,0x0" complete_cpuset="0x00010000,0x0" online_cpuset="0x00010000,0x0" allowed_cpuset="0x00010000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="49" cpuset="0x00020000,0x0" complete_cpuset="0x00020000,0x0" online_cpuset="0x00020000,0x0" allowed_cpuset="0x00020000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="50" cpuset="0x00040000,0x0" complete_cpuset="0x00040000,0x0" online_cpuset="0x00040000,0x0" allowed_cpuset="0x00040000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="51" cpuset="0x00080000,0x0" complete_cpuset="0x00080000,0x0" online_cpuset="0x00080000,0x0" allowed_cpuset="0x00080000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="52" cpuset="0x00100000,0x0" complete_cpuset="0x00100000,0x0" online_cpuset="0x00100000,0x0" allowed_cpuset="0x00100000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="53" cpuset="0x00200000,0x0" complete_cpuset="0x00200000,0x0" online_cpuset="0x00200000,0x0" allowed_cpuset="0x00200000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="54" cpuset="0x00400000,0x0" complete_cpuset="0x00400000,0x0" online_cpuset="0x00400000,0x0" allowed_cpuset="0x00400000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="55" cpuset="0x00800000,0x0" complete_cpuset="0x00800000,0x0" online_cpuset="0x00800000,0x0" allowed_cpuset="0x00800000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="56" cpuset="0x01000000,0x0" complete_cpuset="0x01000000,0x0" online_cpuset="0x01000000,0x0" allowed_cpuset="0x01000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="57" cpuset="0x02000000,0x0" complete_cpuset="0x02000000,0x0" online_cpuset="0x02000000,0x0" allowed_cpuset="0x02000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="58" cpuset="0x04000000,0x0" complete_cpuset="0x04000000,0x0" online_cpuset="0x04000000,0x0" allowed_cpuset="0x04000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="59" cpuset="0x08000000,0x0" complete_cpuset="0x08000000,0x0" online_cpuset="0x08000000,0x0" allowed_cpuset="0x08000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="60" cpuset="0x10000000,0x0" complete_cpuset="0x10000000,0x0" online_cpuset="0x10000000,0x0" allowed_cpuset="0x10000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="61" cpuset="0x20000000,0x0" complete_cpuset="0x20000000,0x0" online_cpuset="0x20000000,0x0" allowed_cpuset="0x20000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="62" cpuset="0x40000000,0x0" complete_cpuset="0x40000000,0x0" online_cpuset="0x40000000,0x0" allowed_cpuset="0x40000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="63" cpuset="0x80000000,0x0" complete_cpuset="0x80000000,0x0" online_cpuset="0x80000000,0x0" allowed_cpuset="0x80000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.pdf
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.pdf	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.pdf	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,190 @@
+%PDF-1.4
+%µí®û
+3 0 obj
+<< /Length 4 0 R
+   /Filter /FlateDecode
+>>
+stream
+xœ­—MkÛ@†ïúûìÌì‡wBR(ôТ[éÁ’â@ ‡$‡þýΨ®ã@fy×ò`Iöê™ÙÇÞ§ÏîfOîáe §Ç/ró\|•x~þr´%·Lî›|¹TÉmôäùÞÝ›ÉcîFý’¼¾¢Äø{¸9lh#7Üxn‰ˆ%¼DˆIb'‘%ŠD•ØKL³Ä"q/qø4>ŸÇ¶Å‡ä«äU)•âåd‡¬I¼!	äš%×ú?Õm
+Ù§$-Jމ×w}Æ›–ž\)IËv‘òiÈï©52ÿ+–ýñZ
+æøZ(Ká¼;+z>^/Z(Ó–K$­ÎËÚqçp»7YKÆ;(éðnÒù˜ô)9VQ˜<¤ÑÞ¤I¯ ¸ã&»'ŠóÆÍ&.<r]±qÆWM\Œ(.&gO•Ä(.y7u›'\l›Ç_ežU±gæY¯/6GÍã±·WKEaj¶4Íâ2ŠÓžn¨U‚!Õ>8²áW­àrÒv¬ZD–.¤=sÔDRMÔ1–¶kÕFRmԁ¬ÝFò‰a#ñuFš>ÒHŒ‰ñ^·WPEj¥¢½€ÔL 2w!í¤óCª™:¶ÕLàH2ŒœšþU3ÈÒƒløWÍ„!ÕLH{ú¨™0¤š©9w›‰/6,¦ë¼4¤—à-<•ퟟ
+âÖM̳ÿë«“ðm´Ž	ߨÁÀÆßBG{€ÍaF¥hW]„o×°­oÓ·j"|ÆO¶ý>ü1]Ñ×
+endstream
+endobj
+4 0 obj
+   598
+endobj
+2 0 obj
+<<
+   /ExtGState <<
+      /a0 << /CA 1 /ca 1 >>
+   >>
+   /Font <<
+      /f-0-0 5 0 R
+   >>
+>>
+endobj
+6 0 obj
+<< /Type /Page
+   /Parent 1 0 R
+   /MediaBox [ 0 0 590 430 ]
+   /Contents 3 0 R
+   /Group <<
+      /Type /Group
+      /S /Transparency
+      /CS /DeviceRGB
+   >>
+   /Resources 2 0 R
+>>
+endobj
+7 0 obj
+<< /Length 8 0 R
+   /Filter /FlateDecode
+   /Length1 7684
+>>
+stream
+xœÕX{\UU¾_kÿöÚû¼9û<€‡ó ¤ø@*fz"5S3J3­(,D{8bdf耚 ƒ¨`¾ÏŒÌ!rÔq|fÄŒ“:÷6嘉bEFÕÂâþöFšê3÷Þ?ïçžÍ:g¯µ÷Úë÷û­ïïûûn%„H1â{röô|ª|³“G.޾ôäÏûºÏÆd`ÿSBhg^þÌÙ­û¿i$$ü¼^6óÙyG#…L<ßKˆ½~ÖŒé¹^Þ~†ˆY86xXGË‹±Â~ü¬ÙÏ¿¸v"bŸA^|vΓÓÇ¿?Ï#‡cÄìé/æ‹Ó¤aØ_ˆ}_þs3òo—¿ÁÓÈM„°YD y¼ZÌc;ÑZ™DMâM"ݤ:V$ˆd`ã¹¶AÄz®í\[²]ñ+¿âÏIgDw^áÕ²åß>'õ!”œ&Dò²óÄDþLEÖÉ‚Bú‚Þ §ŠÁ Ï4Èè€üVgdz”$·8Âà&¢ÙÚÙÖÙ¦Dd"‡7¶¥àYòøISe+ûJ¶ên5öմغ|¥ÙÁ) ‡éÂô‚Á)8d»!AH}r‚ÁgH“Ó
+O	…By¡XX"/1¬ÂEj;†8Úu·éÓèp˜¢›¦Ÿ¡{Zÿ‚n~1]	Ut#8²I¶Ý¯§~%N¡qT‰;MûÓE´ˆö—5ñ¢Fv¾SÿèHbÞN"’ŽKFv_û‹…¸ãr8˜èò#ôòz„Ô`Q|%ރz¥<ÂD" Ҭ׽ sŒN@‡?8×–’¢d¨>7¶Üè¼Ñf=yÝz]ÉP2lÉÁ_%Ç${’½É¾drìÈÄ`LÐô}A06+&Ë“åÍòeù³b³ó—Å”zJ½¥¾Rÿ²ØU‰¡ÄöDOïÔÞI½r<9Þ_Ž?ß“ïÍ÷åû‹=ÅÞb_±?2›fÓXÉéOM|¢Ä¥[h\lBzÚàTzZB\¬$§ ©)á‘‹{ÏYßP_?òðò½M]7©ðÚºœ“gyøïíBj^áíï3¡kqMÞôcÛÔVT6`@Mbb'Ìí¾­+Œ&%t¹h)1/74(bC)J¶™ÉXÇè(kgKŠŠ¼
+¿qÝúÝõä 1,Ú]½*:ÍÐXç ´ï–ÁCœª±D±J8´NÜœõöÉ“ogmžxï®ì.þÜEéÁíbúÞ¤¤ËÍÍ—“’jâãéj¡6:,ލv$DÌ•ÄNÒ‚.аP©Ô¢Ô›ÖÆd¢ºoc¸g)7ÚTˆ¶ÝhlSlÒº'â¡¢h1râIª¢ÅIÌ­_¸°joCCæÛóŽvv=*lÙºåÈήRÉѵeFî×*vŽáâp]5÷’‚éˆø9,0ªÉµsx[
+®ÖÒÙ†Þ[õA}–>GŸ¯Gïí©êBθcõøsn†$Çç?úñµ“Á?÷ãð¿÷£¥×ý9Î?9…_zâü_<sö©Ž꾊E¸®ƒD“ü`<qR}‰n9s¾NYƒ‰Šl°Õ›ÊÝÑNAçÔ‘ñ‚-l´¸ÑÖ¨Ø2z¶¹ÅŠØ·Þ¸®¨Øï32&?&s&¦=†$#éHa¤sd4ë'Ô
+Ô÷3Ì!sèaŽsN´>{®
+¿‡ö¢À§¢ 5…È<d±¨³ÎÔüÎÓ§žxòÌ3ü?Eût~Fåza×ò
+
+᱇œJKÛ×·J
+ÔNïâ×íß·Ee-ÿV(”lÄLî†I¯’u³LÀ&»Ábýñ©¥.º‘LÇ×Ú'Oý=± γK÷ѡʐ¡Óp<Lï>Ú3N‚=ã’àtØ"â„ô4Û¡°dÉÒe¡êªµë$ÛU>¢µ•ß~åKzòÓ‹´±
+ç!ˈ#·Èø 3B¢b‹eÒë¼’ˆ—‘ ;ÕýT·©™sZlïâFmq#=‹ïƒ0QÈâWXz Uñ;ýœŽãëéŒ÷é¸Î5bÁØú±çkˆ–Õ¸ö8ÖNÜd2[T4Dº&…11ÓºMYk9*EˆÕ Pƒ;Â
+RŒµ«ÆÑ£ÚÎjÝhû‘ËÙWÈìšmÎÉãkÃ'?2¾Ö1ù´2F]‰¹º`ʃâ6E~I|‰½]ê’E"ºÄ(1š¹Ÿ'/Hó¢
+¢Ÿw/!%®%QK¢—¸÷=Ñ
+²w ÝIL†Œ ?å,Ñéd‰Ð±Î	teêô{_+yüì‹/›z:F?ââ7jjjæÓÊa³×Ý3¿:ó®¥\;þè®üþeO6!¾0·‘Âà â´JôÞŸ=ä4‡ôk$wÈ·&®R*wîèî¶p¸Ü	>«^½ÔÁñ¸¡7.m-7ZÚ¬W¯kp×ÐNÕ@ôÆ¡‡>¤Ooô¹žéÞé¾\¿H²©‡:¢?6!1]<ú˜DÓ{N~æ,Œ¬ÜÁÏðkzzò{³œjصï@Õ–¯N:ò\ÁéiW©é7ð6®ºðm pbPJuÅËU»ççÆ'ì÷ùþ\·ð
+Íç‚îˬ}Ž!AaÑ´
+¢«t¶mÊ>g•¥RWîˆ[IS#]F«G­ß-=¹¬’ö9,dÉÅŸîW$±'-ý)b„3!¡·3X<Á¶yüjˆoçóh}l5•çäw–ñëü+ÌFÛ3{ÎÓÊÝ]E“¤ëélú+º~ì˜ÿx<‡ÿ‘ÿ™Èÿ@;AÕb懎(ÄGî
+ƹH•A_e[L«oz£N°»¼ŒXÜáÌå 'n›èW°SEÝ
+¦ªÍבÎÃb5:÷÷ÄôÇ“ ÖDÚÄùé:jÇæÍ;øaš´¶²r-7
+bkGñª]¼ýf×5át×…Ò²òeB1ç¹¹ù»¾µb»Ã×ôê{ŸîD^™£ñŠ7&«¼"c~ÚD»Ž ¯¿ñ/^±§†ÛœAŽlKOv"ETU‡–-]*ÙÚøð‹Ÿòa_^¡ï¶¶ÒãÚ~aX*ÆAO=2Ê/*(ûL](¹˜DeÁ-–QmzÔ–æ9–˜Œ[ZKüJm¨±¼FUc%†Êc…»å§„<¹X%ª—œ4JCï‘¢S¥ô)i´Œ¾"UÑ
+ÒV£USOëŸ_“NV¡º‘·w=ªé¦W¼Ô‘$^ºéE;ëW}ÐNù,\'(Fª,åz²Ø¦s†R7¹Ó¦Ù§b)E‹F†–$V•ÍlZ~؈íV~ðÚ+ì[í VDM
+¤ãú.„X]Ó¾Ç÷5ñ‹ü*¿Â/¢v›×~öl;”u>Ê?AQЗÆkúͪê`´G@†=¼“(”ˆLTŽCÙ
+¢À #ñIê ^ƒN½I@®¢°XjV–D´DÏÈÆ=:¶å\›-ã'Ô÷ãO˜í·pŸI
+ø°02•¼@òI9a2Õ	èÅpê¦Ð©B–i&%¼H_Âsâ|ùE])].›^ÖCµ¡GÙJSiø!N8̯^xEÈøpy×ãËÏ3K—öu$Ñ"¾XóY­×ó°^I´K
+6Ò`ª·•Gêma÷ƒÍ9:R+Ï·Н¸‘®BR(ÉEº"}‘¡ÈXh*2YŠÂЬEJ¡-äjw)?Q˜3‰)j–÷¨2¡`íÞ7ªÖìÝ»¦Úøõöoø×T‹­§O·^{ïÔç›ø{¼…Å9³ÞA‡þhã荬X}†]Q
+Äâh`ºrK=]"Ñ	w+6ãèÍÒU(µ©rÆÚx=ù@ާØò€šÊ©·¤¬ Xm(fh¯}H˜°½¾~Ø[›º»›¾ÕuêµÕ«÷ìY½ú58 <ö϶=¹Óé(ªÃcÔtîljmm¦څâ@Š`Gy¼$'8(ÚHJe1FÏ\f¡4ÂæT¼wtTò…ݦX-f“ЦÁ#Ê)ù¬ôàãÜðáÃÕïÆ´?9¨©Q0šŒf‡¥DÙ^Úï¿‘úí©€•Mkqv­¥ûµ&Fð“i`Ô,ÿTh&Ê·=@Gð³B3ùÇ3·ÍâïÒœÉü}*–ñ:(åÓéV>}¯[ÏŸ [Ô¶žNÜ@·ª~•b¼+ïULÄ!&B62Uª˜p‡yÀíŒþ&譐¢“ÂÏ6»lÓæÍø·yóMªç?ܼÉ z–Å›ùØš¤©4¦†x/á¥ë1]@_¢+UT._©q¹FÒ*+©Ò/¶Y
+:|ŏTˆ[/:zè»çuQS<øràô:G:wþÖÉ´]ÿ‘·±ŠIHHt
+_¹aÃJ>”¾w“RÞ}“¿ÏvýiuiÉêÝ—?¾ðY×\ßÑŝ˜Iy0†šÁŒ¹oÆL7Ê!¦æ:5ˆ[Ò‰&äêsÚ«ªjDË9äÑÞdOcjŸÖTŽ»Y+ì¿Ô†Á¾FÒ—Œ%ÓÈSd>y…Èá4‰$Ð$L'ÒûL÷™§Ð<:¾˨¹'»!UUü(Ëýé qòt~þüé®ÇX ó24w¦îá!šs¢G¯lÁ½ÌE?bȼ`œ%+%Ö˜¨ìYW˜…Yl.—wz"ÜÔ nb°JM³a樛«î.êÞøoä‰GóÂC<¿P¸MdzÔëÚ¸‘ª½§ƒüL°¨:帺Bý¦öë ñüÿú±
 ³>úÌ›ï¿ÿæýÛ&³ó5|uX¿þÅ7ü;Ÿ¯iPòM›Ä'*Яj
+£ñdj0Þ.s‰‰„Â¥;|—5dZ[é.˜bõn—Çî¿7:€XAÔ¶h°mélù—î
+:šHmš¡YlbMF¤Î#dÿœÅz^3èõ¥W»„;—oݺÕOØ8á½³a·×=s‰2Þþïâ×iž°n?¸}Û¡CÛ¶ÔÇ'ðoù×e󯿼ʿÐ@ÿÝåéÙ¯=ˆ;µIäÉ`$S@Á"”Ép¯€)‘d$ŽÆž¢ýE­ýWDÛ#ÜYۙȽ ³M¨Q,ƒe3¡–ÔJ²V¥4Žú÷ÀÑ®ÏÎRÞ…ªaJÇb–D4=U†1.ÓbG¢ž
+Db„¥§ÈVé)OÜ‘iŠïëvÆ»ÃôÈ
+H
+aþèdDúR¬·Wèj=µxÿ$ í
+=r*<\•S±ñ8bÿ	/e«víZµj÷.¾kIe÷ß.òÊÅ«wð~øÿ°slåÒ%kÖ,YZ)¼»¡´tÃÆ’Ò
+S|uÅoŸ9óvq/ödÅG×®}Tq’N~É’ç±õàf1úTŠ>Ej¸‰“½.ZB\!Ã.1DV„{CÖÊðò€ìvûíë6k°AzÙî*ÿ®5፮ãQG£ºÆ÷4zåÛaÛç6@ÜÑ@n³kÿ‹HO#©=X‰M ½Ža.MØ4Ñ2¬îÙOùMjýŒUø[üÊ„MtÄ-Dy+ÔLmS¥a_^¥áQnåx„u½xêñ
+Ô|ç¦ÚoQÿ"ðÀ‘ö˜înü&ÝÝVr뉌Ñ~=æÔùHª8*#ßêQý‰	yÏB°æ*(²ìøl'	ÇzI\$
+ßíÝÈ(„¦“z‚¹CŽ‘²‰îÆ^>q.Ž„„:²ŒÌÑ´	ß·úãØn4â,ÞYJš MGRq”˜@nÐÉd?>#«~j("N÷‹ˆõb«ØL†ˆb³˜#ÐTØÎ¦°ÝØ2à]Á†uÂKêéER@Âç
+‡ÅQ¢…\„f¨!WpŸßD*ÈNRˆ¶8èR$
+àÈ)ÖL6à1¯7Ó-ô,Zw.%çÉ« 
+cÉzýj"ß“¥0Y(„HòÐþSø¬fœ¿`ÐÎSáBŽ¡õ¸ÖÚwôgçµ£áÊ“ÉN©^rÈq¸Š±Ýôm“֐9Â\ø˜.ãÄ=âXRÑÈ!øì
+ê).@ßÕ£P}º0_Ì¡5äs1G~Ÿý®ê®¹_x =Ê#‡±Í—¬èÓít¬@KÕ«1¤Y'ÄùøyzMÈH'OãY!ÙGêH¨&ø$Í_iûgn/¡Ït¥ð=i†Qø:š'^ÇX#ÜR2ý|ÖZ!pOnmðþ©¾÷¦ùû÷ûE×g•}µ$«Ö¼ÀWßݝ5ßܧÕ2w-tµb îÒwñRÿ~㳦új»FºõÔÑ9£plÒT<U{8Œã£GõïAµ@HÿتU‡
+ÿŽxu¼6´×k¿ÇgVò<Æ0Až]Ý­,ÐæÉ³9"Ùp¯¯0LøñJïǃèË“ZÉi±•Šyd.³‘ƒB9¦þŠmd®P†Èð’ZA.a«Æ¶IJ%l9ã;Y'9Í>&ul±ŠWp¾ƒÌ•ö“-x_©x¯E\lj¿ÛleØTuKBt0]BÐ«B¬PŽÇ°ÀjÑ„H¨[ØPVÌ:¤	Ò«²(‘Kä/tStÇõ:ýsúOz|Ãü¾s:³[}»	â9læ;­Šƒ(} ÃÿÀ?Rà‡jøÞßq¸ÁáïøÖßTC{ ¾~åNö5‡ëÕðU5´uÀ—ð‡Ï‡ÁµLhåp5®´LbWª¡ol™—?È.wÀgá‡O9\L¿9àB5|Âácüu|tþ“Ã_ðö¿,‚óçîfçÁ¹»áì‡Ñì,‡£áÏÎpø‡?rh®†š<ìMx?Ns8¹La'Ýðn84r8Áá8‡cŽrø‡#~Ïá0‡C*ÐP`
+êß9Äê9¼s ›½sÞ)ü.Àd»á@Pü] ösx»ê8¼Å¡–Ão9ìË…7-°÷ Û›oÔØØ¨±Áëhôë°‡ÃkvsØeƒvl·°)°ÝÛr!„·„ªa+‡-›Ml‡Í&Ø´ÑÅ6åÂÆ
+V¶Ñ¬°Þ ¯rXWmfë8T›¡
+'UUÃÚ5¶ö6Xƒ»Ü•«±J«*²ÙªC°ªX¬øM€UdCEPüM Vr(/ÀÊ9”
+€WÐÍWî„ˍl…–¡Js¡#U€e
+¼Ìaé…-å°DÅŠ9qvÿzÑ"ök‹ÁÂ\(œìd…x‰Ã/Z`¾	^0À<Ïw at A<×s; ŸÃ¿âð¬žáð´’ÉžžOq˜µfb'Ã¹žäð‡éà §3A6‡G8<ÌaÚT›ÖS
+ðP¸‹=”S8<ˆ+?˜	“0‰ZÙ¤HxÀ÷³³û9dá>ïµ²‰îµÂãñÊxãî±²qv¸'ÆÌî±ÂX3ÜÍaL5Œ®†Qîú³»: óÜ9‚Frq‡pÀÃÃØ6~»™
+v‡ÁífÆ!ƒÃÐ!6´†¶²!œndƒ­n„4¤š!e‘¥pd„äF–l†FÐ_ÏX¡¿ú¥@Rß KÊ…¾}l¬o úØà¶Ä »íNH@BÀÈ `„xqbÃÀ~úmàËoxÐO.ĘÁtsˆî€¨LpaÇÅ!2"0RÂqR¸œìlxƒƒ‚¾*™`]a¹`á`6…33Þm
+#ƒôtx›Žƒì )D¼("œ€£À‘Ê­LèÔ
+„­§¹ËVÒ¤ÿòmÀÿø‰ù/qΑ¥
+endstream
+endobj
+8 0 obj
+   5732
+endobj
+9 0 obj
+<< /Length 10 0 R
+   /Filter /FlateDecode
+>>
+stream
+xœ]’Mk„0†ïþŠ9n‹ÆÝ
+"”íÅC?¨íÐdÜ
+5†èü÷yÃPxÌLf3ñ¥ynô¸RüngÙòJè•åe¾YÉÔóuÔ‘HIr
+äßrêL»äv[Vž=ÌQUQüá6—ÕntxRsÏÅoV±õ•_—ŸÚ›1?<±^)‰êšμvS쓏rûãº]Ú_Äçf˜RÏ-ÉYñb:ɶÓWŽªÄ­šªÁ­:b­þí§%ÒúA~wÖ‡ž$¹ª=¥žN”2Pz t1è*@žÒT‚Â)§,ÔëA)H‚Bu…>Ï …Èg¢‘`½øèEÀ/G=üPðËAðKQ]À/ƒƒ€_~Yȃ_ê¿(øÁA?ü	¿¬ô×îg¿À}ÚîÓ!oÖºÁð#é'bŸ…Qó}jÍlö,ÿüºú½ý
+endstream
+endobj
+10 0 obj
+   349
+endobj
+11 0 obj
+<< /Type /FontDescriptor
+   /FontName /BitstreamVeraSans
+   /Flags 4
+   /FontBBox [ -183 -235 1287 928 ]
+   /ItalicAngle 0
+   /Ascent 928
+   /Descent -235
+   /CapHeight 928
+   /StemV 80
+   /StemH 80
+   /FontFile2 7 0 R
+>>
+endobj
+12 0 obj
+<< /Type /Font
+   /Subtype /CIDFontType2
+   /BaseFont /BitstreamVeraSans
+   /CIDSystemInfo
+   << /Registry (Adobe)
+      /Ordering (Identity)
+      /Supplement 0
+   >>
+   /FontDescriptor 11 0 R
+   /W [0 [ 600 862 612 549 633 277 633 615 317 390 636 636 636 774 686 390 748 731 684 611 634 837 636 603 636 636 636 636 636 636 ]]
+>>
+endobj
+5 0 obj
+<< /Type /Font
+   /Subtype /Type0
+   /BaseFont /BitstreamVeraSans
+   /Encoding /Identity-H
+   /DescendantFonts [ 12 0 R]
+   /ToUnicode 9 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+   /Kids [ 6 0 R ]
+   /Count 1
+>>
+endobj
+13 0 obj
+<< /Creator (cairo 1.8.10 (http://cairographics.org))
+   /Producer (cairo 1.8.10 (http://cairographics.org))
+>>
+endobj
+14 0 obj
+<< /Type /Catalog
+   /Pages 1 0 R
+>>
+endobj
+xref
+0 15
+0000000000 65535 f 
+0000008061 00000 n 
+0000000711 00000 n 
+0000000015 00000 n 
+0000000689 00000 n 
+0000007902 00000 n 
+0000000820 00000 n 
+0000001020 00000 n 
+0000006845 00000 n 
+0000006868 00000 n 
+0000007294 00000 n 
+0000007317 00000 n 
+0000007555 00000 n 
+0000008126 00000 n 
+0000008254 00000 n 
+trailer
+<< /Size 15
+   /Root 14 0 R
+   /Info 13 0 R
+>>
+startxref
+8307
+%%EOF

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.png
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.png	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.png	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,74 @@
+‰PNG
+
+   
+IHDR  ž  ®   9ä£   bKGD ÿ ÿ ÿ ½§“    IDATxœìÝ{X•u¢þÿ{
+©W#©“ßQÓÐT
+6*º;mëûÝfh¥`6:Z¦Ódc	&‚æ%óŒx*mfÜQû†¦”–¹SËC–ÀÃ¥°~¸Y¹âà‚µxÖƒ¾_×ÕÕZÏáó|ž[ñ¹×Khh¨5""B   @CÉÍÍ•Wÿþý•˜˜èî¹   à–””$wO   7Š'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   CP<  `Š'   áÖâi±Xê´¼.®\¹¢¨¨(§Çq¥¨¨(]¹rÅÝÓ   p‹:O‹Å¢µk×Ú-›={¶KŠâµ¬V«Óc¬]»V½{÷¶Ý·X,¶ÿ®•••¥®]»ªiÓ¦êÑ£‡²³³%I™™™êܹs•åJLL”¿¿¿š6mª.]ºhÙ²eUŽãáá¡»îºK+V¬°­ëÕ«W•ü   nu~Æ355ÕV/_¾¬åË—»|R®°zõjõïßßvßjµV[h³²²”™™©³gÏ*..N#FŒ$}ôÑGÚºu«Îœ9£)S¦høðá’®þ‚û-[¶hóæÍ*++Ó| O>ùÄnL«Õª+W®(##C/¼ð‚myÿþýµzõê8[   ó«sñìÙ³§>üðCIÒÊ•+õðÃWÙ¦òY¿ÿóþ6oÞ,IúòË/Õ³gOyyyÙ=ë8}útµlÙR­Zµ²=sX¹Þb±T»þÀêׯŸš6mªN:iûöíUæ°k×.]÷|Ö®]«nݺÉÇÇGƒVóæÍ%IË–-Sûöíåáá!OOOµk×N’´páB-Y²DݺuS“&M¤÷ß¿ÆñÛ´ic»¤/¾øâºs  ¸Õ¹xÆÇÇkÆŒ²Z­JIIÑØ±c«lcµZU^^®•+W*>>^’ôÌ3Ïèü£ÊÊÊìžyôõõՏ?þ¨+VhâĉUƪnýÿøG=÷Üs:wîœRRR¿ââbµhÑÂáó:yò¤†ªÔÔTÛ2‹Å"=ûì³Z¸p¡$éĉêØ±£m}u/ß[,yzzêá‡ÖìÙ³mË[´h¡_~ùÅá9  ÜH,“'O¶&&&:¶±Å"«Õªÿ÷ÿþŸî¸ã)33Ó¶\’æÌ™£Ù³gëøñ㪨¨ÅbQEE…š4i¢3gΨY³fvã•——ËÃÃÃnükÿ_Ýú&MšØ}H§ò×jÓ¦<¨ßýîw՞õvíÚ¥¨¨(MŸ>]O?ý´Ýº.hóæÍš:uª:¤»îºKŸ
 |ò‰­|þvÌÊÛV«UŸ}ö™bcc•ŸŸ/I:}ú´:w'O:”7  À"))©~ŸjŸ0a‚Þ}÷]½øâ‹UÖMž<YK–,Qii©>üðC[!ëÚµ«ÒÓÓuéÒ%»í+KeMª[ߣG-]ºÔöìéoK§$õéÓG¼î¹¤§§kȐ!Z¸p¡]éLHHЩS§ls8wîœ$)66VúÓŸtèÐ!•——ÛJeM*ǐ¤C‡)$$äºs  ¸Õ«x†‡‡Ëjµêþûﯲ^Ò°aÃô‡?üAyyy¶åÊÈÈÐ-·Üâô§àW­Z¥åË—ë÷¿ÿ}µ/uKÒðáõmÛ6Ûýk·»öö˜1côóÏ?끰-/--Upp°zôè¡–-[jæÌ™Z³f$é/ù‹ÂÂÂ4`À ùøøè±ÇÓªU«ìŽ]ù©ö#F(--Ͷ<''Çöá%  €›M^joL._¾¬§Ÿ~Z™™™îžŠMTT”V®\)///wO  ÀPIIIºaP“&MLU:%™n>   FâWf  ÀO   ‚â	   CP<  `Š'   Añ  €!(ž   0„Cßã™››k÷[€   €J¡¡¡Šˆˆ¸îvÏœœ­^·D½ûvqzb   ¸qìÛ“¯Ó§O»®xJRH¿.ŠŸåÔÄ   pcY’¶Yªpl[Þã	   CP<  `Š'   Añ  €!(ž   0Å   † x  À§#öíÉ×îϸrH   ¸Ip¯@—þ!—Ï/vÐöTØ}÷¹rX   ì‹/¿Ô¹³çÍ[<%),ô>½öÒK®   J™¿@Ç.¸ö•lÞã	   CP<  `Š'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   CP<  `Чøú¸{
+6WÊË7Î-ÇŽ‰§+åån96  0?·O_ÿ ­Z·®Ê²ên×´~ãGÙ­Ÿ›¾¸Ê~Ù99òõÐ??ù¤NÇo¾þòõÐï;ª÷€úûÇWÙfÜË/ë›tùÊ
+þÏ¡¶å?ž<©‡
+S› NzpØ0ýxòd•}7mùH=‚ï±Ýß°e‹úDRëŽA
+øålß^ëXzçÝùêþojÝ1H}
+Öš
+ªÌÿ¶€êÖï~­Ý´É¶®û=Ý´i‹ýŸ  @%·?ã¹fÃF=~¼Þû/\ºTV«U’tùÊenÜXe›ôåË5äÁ´xù
+—¿>J
+ôÓÁï4}ê½øòä*ë+*¬òððÐyyêÕ½»mù_f$ªoHˆ~øzŸú†„èÕÄÄ*û®ûðC……†Úîÿ×§ÿ­õËÞ×_ïÓ„Æ*vÜ‹µŽ•2þùé'Z³d±ŽøV«ÒiÛöUæ_”Hsg½¥‰¯þÕ¶<,4Të>üйp  À
+ËíÅsÖëÓ4~ê_TQQQ¯ý»wí¦dgK’²6mÒàýíÖô¨Ž?¡Œ¹suâÇuä‡>þW_£°‡ÖíöÐÃÚ·¿$i÷W_©÷€ºãî®z}æ[¶íæçë߇>®Öƒ20R;wï©uîžžv÷çgdØž…½ÿÁ‡ôHÔp-\ºÔö,ì¶ýKÏÇÄÈÛÛ[ÏÇÄ(çÿûW•1óöîU ¿¿íþ‚·gëÎvídñ𐧇§þЦM­c½·j•æÎœ©.AAjâå¥@ÍŸ\ã9´nÕÊv;Ðß__îÛWë9 €›—Û‹g§Ž50<\ï.ɨ×þŠŽÖÛóÞ•ÕjÕüŒ÷4zäH»õ+VjÒ‹ãäåé©—â_TÆŠ•ÿ…I“4jx”¾ß·W£†GiìÄI’¤øÉ¯èù˜Þ³[hÛÆ¶ýóž¨è'Gèèþo”ø×W5îå—«³¯€ÚuÒ俽®wfÌøuÿ˜~õ¥"îï§’ÂEÜßO‡óö¨¤°@’TræŒZÝv›$é÷¾¾:}öl•±KNŸVófͪ¯m§ÎŠå¥Ìx³Ö±Nþô“üülûUþ÷Ûñ~ß!PO<­7þ2Õ¶¼yóæ*.)©öœ  Ü^<%éù˜hålß®ÿ9xÈn¹wÓ¦*;Þv¿ìüyy{{Ûmãßþ.µmÓF“^{MtGÛ¶¶u—.]ÒŠ¬,E¿'_ÿ E¿§YYºté’CÇ?˜Ÿ¯QQQjÖ¬™ž6Lß:d[þÔ°ÇuË-·häOض߷¿ÆNœ¤¶:kXtŒò«=ß’Âýr8_y99òà¶å¾þòïq¯¶mß!_ÿ mÛ¾CzöRú²e’¤–¿ûŠŠ‹%I¿””¨å­·VÛ·eK»Ì*÷ãoõö›oè¹ñj«MëÖ:rô¨m¿ÊÒûÛñŠkãŠåš2}ºmyYY™nóõ­öœ  LQ<-‹Þyó
+ýùÕWí–‡†ôÖìyóTvþ¼ÊΟ×ìyóÔ/$¤Êþ/ŒŽÕ’å+ôÜ3ÏØ-_¿y³zvïn+P%…êÕ£‡ÖoÞìÐñ;vè Õë×ëÂ…Z‘•¥N;J’‚µzýz]¼xQ«Ö­·mÏÝw
 ëÝäY:ñí~[9«‹’Ñ–5«µmËfŠŠRIaž5J’Ôÿþû5?#C—.]ÒüŒEÜ•1zvïnWx_ùÛt[ÁôððPiYY­cŒzB¦NÕá#GT^^®‚￯uÎE¿Ûn>rD÷×éœ ÀÍÃÅS’îl×NO
+{ÜnYjR’ö~ý{õV`¯ÞÚ÷Í~¥ÎLª²oߐ•è¾Þ½ì–/^¶\cþ·´U3j”–Tó!£êŽŸöÖL¥/[®»î	Öû«×hî[WßÏ9')Qó/Q@Ï^:vâ„mûôÔ9ÊܸQþ÷ö¬ö%jGìÚ“§ž=UrúŒ|[¶´[÷·)¯hûÎ]º³Û=Ú±k—¦OReÿ¡C†hûΝ¶û];wVøÃ¨}pwÍ™¿@KÒRkkb\œB{‡hȈ'Õ¶Sg=ùì-ž3Çj}1^o½>Ͷü_¹¹züÑGë|Î  àæ`™<y²5±šOG_+))Iù'v(~JT­Û-IÛ,K‰¯^{é%WÎupùÊ=—0^sÓ?vLÜ8-š“"/OÏëo  L-eþ»pÀ¡þwK…¿é“^®œ ܯ‰——[J§$·  4¦y©   76Š'   Añ  €!(ž   0Å   † x  ÀO   Âåßã¹û˯”²`«‡  €þµs§ü‚oué˜.-žÁ½uîìy-;àÊa  `°ö÷ܪÞ}»¸tL—ϐ~]Òϵ  À÷x  ÀO   ‚â	   CP<  `Š'   Añ  €!(ž   0„K¿Çsßž|íþœ/¯Np¯Àë~	+ùÕŒüœC~Î!?琟sÈÏ9äçGò«—Ï/vÐÎO¿WDD„+‡môrssuîìùëþÁ‘_õÈÏ9äçòsù9‡üœC~Îq4¿ºpùïjïß¿¿]=l£–””¤ü;Ú–üª"?琟sÈÏ9äçòsù9§.ù9Š÷x  ÀO   ‚â	   CP<  `Š'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   C¸µxZ,Y,yzz*((H|ðÝºê¶¯ë8•bccµwï^]¾|Y}ûöµ-?~ü¸ÂÂÂäíí­°°0?~Ügf3ä—••¥®]»ªiÓ¦êÑ£‡²³³]pfÆ0C~•¦M›Vãøfe†ü***4mÚ4µk×N*C3ä·aÃ
 ÊËËK:tІ
+\pfÆ0C~•ûþvìÆp]1s~áºbæü*™õºâög<­V«.]º¤ääd=ºÁÆ©¨¨‡‡‡>ÿüsõéÓǶ|âĉ
+×™3g®I“&Õ{îàîü²²²”™™©³gÏ*..N#FŒ¨÷ÜÁÝùIÒîÝ»µhÑ¢z۝ܝ_bb¢233µuëV•——ËjµÖ{îàîübbb”––¦²²2¥¦¦*66¶ÞspwçgµZ«ý;×X®+fͯ±\WÌšŸdîëŠÛ‹g%OOÏ'%%E‹EK—.Upp°"""”ššj{­„„ùøø(!!Aü±Kæa4wå·víZuëÖM>>><x°š7oî’yÍ]ù]¼xQ111Z¹r¥KŽï.îÊ/==]ÉÉÉêÖ­›)Ù;Ê]ùµoß^Ò¯ÏÆøùù¹dFsW~5il׳åר®+fËÏì×·O‹Å"oooÅÇÇkáÂ….'!!AÅÅÅŠŒŒ”ÕjUdd¤ŠŠŠlŠ‹‹uûí·K’Zµj¥’’çNÈ`îίÒÉ“'5tèP¥¦¦Ö{îàîü&Ož¬èèh
+0ÀésqwçwìØ1egg«Y³fòóó«öe*3sw~‹-Òˆ#äíí­§žzJ,púœŒäîüjÒX®+fͯ’Ù¯+fÍÏì×/wO ¦ ½½½UZZª-ZH’JKKåããSçq®}dPy»U«VJKKS\\œ|}}uêÔ)µiÓFEEEòõõ­ï©¸…»ó“¤]»v)**JÓ§O×£>Z¯ópwç—šš*«Õª	&ضiL/»;?___
+4HIIIÊÎÎVtt´{ì±úžŽáܝßÈ‘#µzõj
+8PÙÙÙ5j”¾ûî»úžŽáܝ_MËuŬùIãºbÖüÌ~]qû3ž5	ÓŒ3TZZªÒÒR͘1CáááuÇjµjüøñÊÉÉQ^^žF-«ÕjûC4hRRRtñâE¥¤¤(22ÒÕ§âFå—žž®!C†háÂ…zúé§]}ncT~vïÓ1Ó?Î0*¿ÁƒKúõåÆürûµŒÊ¯¨¨HÒ¯¹UÞoìŒÊ¯&ýºâîüûuÅÝù™ýºbÚâ¹xñbíÙ³G­[·VëÖ­•——§Å‹×k¬;v¨oß¾*..Öm·Ýf·nÖ¬YÚ¶m›n½õV}öÙgJNNvÅôÝΨüÆŒ£ŸþY<ð€íÓu¥¥¥®8·2*¿•Qù%''kÖ¬YjÑ¢…âããõÞ{ï¹búngT~.ÔØ±cÕ¬Y37δF¨+£ò»öÅ×Þnì×wçר¯+îÎÏìÜúR{m-ÜÏÏO[·nuzIÊÍÍ•$EFFVyäyçwjÇŽ
 Çl̐ŸÙIÕ…ò«Ë8fc†üî¸ãåää8t³1C~Æ
+Ó°aÃ:ŽÙ˜!¿šöm×3ç×þ-4s~uÝÆh¦}Æ   7Š'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   C¸üässs5sæLWÛ¨mÛ¶Mí:6qh[ò«ŠüœC~Î!?琟sÈÏ9ä眺äç(—Ïà^:wö¼ÛîÊa½;›¨wß.×ÝŽüªG~Î!?琟sÈÏ9äçòsŽ£ùÕ…K‹gH¿.
+éçÚ	ÞLÈÏ9äçòsù9‡üœC~Î!?ãðO   ‚â	   CP<  `Š'   Añ  €!(ž   0Å   †pø{<÷íÉWÆÜÍ
+9   42»?? ðûüÚÖ¡âªÓ§OKWœš   n0a}üáжÏþýû«ÿþÎÌ	   79Þã	   CP<  `Š'   Añ  €!(ž   0Å   † x  À}gnn®¶mÛÖÐs  @#êЗÈ;T<srr´zÝõîÛÅé‰  àÆ±oO¾NŸ>íºâ)I!ýº(~J”S  ÀeIÚf©Â±my'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   C8ü=žŽØ·'_»??àÊ!  à&Á½]ú„\Z<¿Øq@ÛÿqPa÷ÝçÊa  `°/¾üRçΞ7oñ”¤°ÐûôÚK/¹zX   (eþ»àÚW²y'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   CP<  `Š'   Añ  €!(ž.àëàî)Ø\)/WLÜ8·;&nœ®”—»åØ  ÀüÜZ<}ý´jݺ*˪»]Óú}d·~núâ*ûeçäÈ×?@ÿüä“:¿!øúÈ×?@¿ï¨Þêï\e›q/¿¬oÐå+W4ø?‡VÙ·¶9nÚò‘zßc»¿aËõ‰¤Öƒþð#ÊÙ¾½Ö±***ôλóÕ=üßÔºcú¬56T™ÃmÔ­ßýZ»i“m]÷{ºiÓû?  €JnÆs͆:züx½÷_¸t©¬V«$éò•+Êܸ±Ê6éË—kȃhñò.?~}”觃ßiúÔ)zñåÉUÖWTXåáá¡/òòÔ«{w»ýJ
+j{݇*,4Ôvÿ¿>ýo­_ö¾~øzŸ&¼0V±ã^¬u¬”ùôÏO?Ñš%‹uüÀ·Z•¾HÛ¶ï¨2ÿ¢üCš;ë-M|õ¯¶åa¡¡Z÷ᇎ…   n:n/ž³^Ÿ¦ñSÿ¢ŠŠŠzíß½k7ý#;[’”µi“èo·þû£Guìø	e̝«?þ¨#?üàðñ¿úú…=ô°n쨰‡Ö¾ýû%I»¿úJ½ÔwwÕë3ß²m0?_ÿ>ôqµî¤‘Ú¹{O­s÷ôð´»??#Ãö,ìý>¤G¢†káÒ¥uz6oï^úûÛî/x{¶îl×NyzxêmÚÔºÿ{«ViîÌ™ê¤&^^
+ô÷×üÙÉ5nߺU+Ûí@}¹oŸÃs  7·ÏN;j`x¸Þ]’Q¯ýÿ­·ç½+«ÕªùïiôÈ‘vë3V¬Ô¤ÇÉËÓS/Å¿¨Œ+>þ“&iÔð(}¿o¯F
+Ò؉“$Iñ“_Ñó11:¼g·þÐö×"÷üŸ'*úÉ:ºÿ%þõU{ùåjçìë 6A4ùo¯ë3~Ý?&F…_}©ˆûû©¤°@÷÷Óá¼=×}–óZ%§O«y³fUŽ×¶SgÅ¿òŠRf¼Yëþ'úI~~¶ýª{9¾ò­O<­7þ2Õ¶¼yóæ*.)qx®  àæâöâ)IÏÇD+gûvýÏÁCv˽›6UÙùó¶ûeçÏËÛÛÛnÿöw©m›6šôÚkê ;Ú¶µ­»té’Vde)ú…8ùú(ú…8­ÈÊÒ¥K—:þÁü|ŠŠR³fÍôô°aúîÐ!Ûò§†=®[n¹E#Ÿx¶ý¾ýû5vâ$µíÔYâc”_XXíù–è—ÃùÊËÉѐ°-÷õ{µmûùúhÛöêг—Ò—-s$Æ«c´li—Yåñ~<ð­Þ~ó
+=7~B­û·iÝZG޵íW]é-),PqÁam\±\S¦O·-/++Óm¾¾Ï  Ü\LQ<-‹Þyó
+ýùÕWí–‡†ôÖìyóTvþ¼ÊΟ×ìyóÔ/$¤Êþ/ŒŽÕ’å+ôÜ3ÏØ-_¿y³zvïn+P%…êÕ£‡ÖoÞìÐñ;vè Õë×ëÂ…Z‘•¥N;J’‚µzýz]¼xQ«Ö­·mÏÝwëÝäY:ñí~[9«‹’Ñ–5«µmËfŠŠRIaž5Êá1zvïnWx_ùÛtK’<<<TZVVëþ#£žÐ„©SuøÈ•——«àûïkݾè—bÛíÃGŽèÞà`‡ç
+  n.¦(ž’tg»vzjØãvËR“’´÷ëoØ«·{õÖ¾oö+ufR•}û†„¨¤°@÷õîe·|ñ²åó›Ò6fÔ(-©æCFÕ?í­™J_¶\wݬ÷W¯ÑÜ·®¾ŸsNR¢æ-^¢€ž½tìÄ	Ûöé©s”¹q£üïíyÝOŸ×dמ<…ôì©’ÓgäÛ²¥ÝºkǬiü¡C†hûΝ¶û];wVøÃ¨}pwÍ™¿@KÒRkkb\œB{‡hȈ'Õ¶Sg=ùì-ž3§Ê<nè ØãõÖëÓlËÿ•›«Ç}´Îç  n–É“'[kÝ())Iù'v(~JT­Û-IÛ,K‰¯^{é%WÎupùÊ=—0^sÓ?vLÜ8-š“"/OÏëo  L-eþ»pÀ¡þwK…¿é“^®œ ܯ‰——[J§$·  4¦y©   76Š'   Añ  €!(ž   0Å   † x  ÀO   Âåßã¹û˯”²`«‡  €þµs§ü‚oué˜.-žÁ½uîìy-;àÊa  `°ö÷ܪÞ}»¸tL—ϐ~]Òϵ  À÷x  ÀO   ‚â	   CP<  `Š'   Añ  €!(ž   0„K¿Çsßž|íþœ/¯Np¯Àë~	+ùÕŒüœC~Î!?琟sÈÏ9äçGò«—Ï/vÐÎO¿WDD„+‡môrssuîìùëþÁ‘_õÈÏ9äçòsù9‡üœC~Îq4¿ºpùïjïß¿¿]=l£–””¤ü;Ú–üª"?琟sÈÏ9äçòsù9§.ù9Š÷x  ÀO   ‚â	   CP<  `Š'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   C¸µxZ,Y,yzz*((H|ðÝºê¶¯ë8•bccµwï^]¾|Y}ûö­²ïoÇ®¨¨Ð´iÓÔ®];yxxÔxlw2s~6lP`` ¼¼¼Ô¡Cmذ¡¾§Ù`̐_VV–ºvíª¦M›ªGÊÎΖ$?~\aaaòööVXX˜Ž?îì麜™ó«i¹™˜9¿JÓ¦M3å¿}’¹óãúa¯®ùqý°WS~™™™êܹs£»~¸ýO«ÕªK—.)99Y£Gn°q***äáá¡Ï?ÿ\}úô±ÛÏjµVÙ>11Q™™™Úºu«ÊËË«ÝÆÌš_LLŒÒÒÒTVV¦ÔÔTÅÆÆÖ{n
+ÉÝùe
 ee)33SgÏžU\\œFŒ!Iš8q¢ÂÃÃuæÌ…‡‡kÒ¤Iõž[C2k~5-7³æ'I»wïÖ¢E‹ê='#˜5?®öêš×{5å÷ÑGiëÖ­:s挦L™¢áÇK2ÿõÃíų’§§gƒŒ“’’"‹Å¢¥K—*88XJMM½î#Ðôôt%''«[·n¦|´ú[f˯}ûö’~}”çççç’ù5wå·víZuëÖM>>><x°š7o.IÊÎÎVBô6Ê    IDATB‚|||” ?þØ%ók(f˯¦åfe¶ü.^¼¨˜˜­\¹Ò%ójhfˏëÇUõ͏ëÇU×ËoÙ²ejß¾½<<<äéé©víÚI2ÿõÃíÅÓb±ÈÛÛ[ñññZ¸p¡ËÇIHHPqq±"##eµZ©¢¢¢ë>=v옲³³Õ¬Y3ùùùUûô·˜5¿E‹iĈòööÖSO=¥Ô{n
+É,ù<yRC‡Ujjª$©¸¸X·ß~»$©U«V*))©÷Ü’Yó»Þr³0k~“'OVtt´Pï9Á¬ùqý¸ª¾ùqý¸Ê‘ü,‹|||ôì³ÏÚö5ûõÃËݨ©Àx{{«´´T-Z´$•––ÊÇǧÎã\ûh³òv«V­”––¦¸¸¸ÇóõõÕ Aƒ”””¤ììlEGGë±Ç»îùͬù9R«W¯ÖÀ•­Q£Fé»ï¾»îùÍùíÚµKQQQš>}º}ôQIWÿþ:uJmÚ´QQQ‘|}}ë~r0k~µ-7³æ—šš*«Õª	&Øö5ãËÅf͏ëÇUõ͏ëÇUŽägµZuáÂmÞ¼Y#GŽÔ¡C‡Lýpû3ž5	ÓŒ3TZZªÒÒR͘1CáááuÇjµjüøñÊÉÉQ^^žF-«ÕZki’¤ÁƒKúõ»1¼\r-wçWTT$é×Ü*ï7Få—žž®!C†háÂ…zúé§mû
+4H)))ºxñ¢RRRé²s3‚»ó«iycáîü***ìÞ¿mÆÒYwçÇõãªúæÇõãªë嗐 S§NI’<<<tîÜ9Iæ¿~˜¶x.^¼X{öìQëÖ­ÕºukåååiñâÅõkÇŽêÛ·¯Š‹‹uÛm·Ù­»öÙ×ÞNNNÖ¬Y³Ô¢EÅÇÇë½÷Þsî„æîü.\¨±cǪY³f7nœé?¤ð[Få7fÌýüóÏzàlù•––jÖ¬YÚ¶m›n½õV}öÙgJNNvÅiÆÝùÕ´¼±pw~»óãúñ«ú
 äÇõãWµå¬=z¨eË–š9s¦Ö¬Y#I¦¿~¸õ¥öÚEûùùiëÖ­N#I¹¹¹’¤ÈÈÈ*Í¿¦}ï¸ãåää8t|w1s~Æ
+Ó°aÃ:¾»˜9¿-ZhÇŽß]Ìœ_cx†ÎÌùÕuw0s~-Z´àúñ¿¸~Ô©öübbbSeŸ;ï¼ÓÔ×Ó>ã	  €Å   † x  ÀO   ‚â	   CP<  `Š'   Añ  €!\þò¹¹¹š9s¦«‡mÔ¶mÛ¦v›8´-ùUE~Î!?琟sÈÏ9äçòsN]òs”K‹gp¯@;{^mw對ށMÔ»o—ënG~Õ#?琟sÈÏ9äçòsù9ÇÑüêÂ¥Å3¤_…ôsío&äçòsù9‡üœC~Î!?琟qx'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   C8ü=žûöä+cîæ†œ   ™ÝŸPø}þmëPñ
+
+ÕéÓ§¥+NÍ   7˜°>~Šˆˆph[‡ŠgÿþýÕ¿gæ  €›ïñ  €!(ž   0Å   † x  ÀO   ‚â	   CP<  `‡¾Ç377WÛ¶mkè¹    
+
+
+uèKä*ž999Z½n‰z÷íâôÄ   pãØ·'_§OŸv]ñ”¤~]?%Ê©‰  àÆ²$m³TáØ¶¼Ç   † x  ÀO   ‚â	   CP<  `Š'   Añ  €!þOGìÛ“¯ÝŸpå   p“à^.ýB.-ž_ì8 íÿ8¨°ûîså°   0Ø_~©sgÏ›·xJRXè}zí¥—\=,   ”2Ž]pí+Ù¼Ç   † x  ÀO   ‚â	   CP<  `Š'   Añ  €!(ž   0Å   † x  ÀOðõp÷l®”—+&nœ[Ž7NWÊËÝrl  `~n-ž¾þZµn]•eÕÝ®iýƏ>²[?7}q•ý²sräë ~òIŽß|ýäë ßwTïõ÷?®²Í¸—_Ö7èò•+üŸCmË7ýýï
+ý÷ÔºcÂ~D9Û·WÙwÓ–Ô#øÛý
+[¶¨Oä *ûTÎã·ç[QQ¡wޝ¯îáÿ¦ÖƒÔgÐ`­Ù°¡Êüoè nýî×ÚM›lëºßÓM›¶Øÿy   Trû3žk6lÔÑãÇë½ÿÂ¥KeµZ%I—¯\QæÆU¶I_¾\C|@‹—¯pùñ룤°@?üNÓ§NÑ‹/O®²¾¢Â*}‘—§^ݻۖðÑßõÞÜ4ýæk=ûÇQ=îÅ*û®ûðC……†Úîÿ×§ÿ­õËÞ×_ïÓ„Æ*ö÷)),PIaA•ýSæ/Ð??ýDk–,ÖñßjUú"mÛ¾£Êü‹òi4ñÕ¿Ú–‡…†j݇Ö=  pSp{ñœõú4ŸúUTTÔkÿî]»éÙÙ’¤¬M›4x@»õß=ªcÇO(cî\øñGùᇏÿÕ×ß(졇u{`G…=ô°öíß/IÚýÕWê=` î¸»«^Ÿù–mûƒùùú÷¡«uÇ …ŒÔÎÝ{j»§‡§Ýýù¶gaïð!=5\—.µ=+ùÞ¼¹ê$ooo
+S³fͪŒ™·w¯ýým÷¼=[w¶k'‹‡‡<=<õ‡6mjÓ{«ViîÌ™ê¤&^^
+ô÷×üÙÉ5nߺU+Ûí@}¹o_­ã €›—Û‹g§Ž50<\ï.ɨ×þŠŽÖÛóÞ•ÕjÕüŒ÷4zäH»õ+VjÒ‹ãäåé©—â_TÆŠ•ÿ…I“4jx”¾ß·W£†GiìÄI’¤øÉ¯èù˜Þ³[hûk‘{þÏýäÝÿÿúªÆ½ürµsöõP› Nšü·×õÎŒ¿î£Â¯¾TÄýýTRX ˆûûépÞž*ÏLþ|ê”F=ÿ¼fN{­ÊØ%§O«ùo
+©¯€Úvê¬øW^QÊŒ7«S¥“?ý¤ ??Û~Õ½_ùV'ž‰Ö™j[Þ¼ys—”Ô:>  ¸y¹½xJÒó1ÑÊÙ¾]ÿsðÝrï¦MUvþ¼í~Ùùóòöö¶ÛÆ¿ý]jÛ¦&½öš:莶mmë.]º¤YYŠ~!N¾þŠ~!N+²²téÒ%‡Ž0?_£¢¢Ô¬Y3==l˜¾;tȶü©aë–[nÑÈ'ž°m¿oÿ~8Im;uÖ°èåV{¾%…úåp¾òrr4äÁlË}ýäßã^mÛ¾C¾þÚ¶}‡:ôì¥ôeËlÛìÙ»Wƒÿs¨ž‰ÑCƒUÛ·eK»Ì*÷ãoõö›oè¹ñªS¥6­[ëÈÑ£¶ýª{9¾¤°@ҵqÅrM™>ݶ¼¬¬L·ùúÖ:>  ¸y™¢xZ,½óæúó«¯Ú-
+é­Ùóæ©ìüy•?¯Ùóæ©_HH•ý_«%ËWè¹gž±[¾~ófõìÞÝV J
+Ô«G­ß¼Ù¡ãwìÐA«×¯×…´"+K:v”$jõúõºxñ¢V­[oÛþž»ïֻɳtâÛý¶rV%…£-kVkÛ–Í¥’Â=;j”$éý5k4"v´Þ™ñ¦žø¿ÿ·Ú1zvïnWx_ùÛtK’<<<TZVVëFF=¡	S§êð‘#*//WÁ÷ß׺}Ñ/ŶۇѽÁÁ+  ¸ù˜¢xJҝíÚé©aÛ-KMJÒÞ¯¿Q`¯Þ
+ìÕ[û¾Ù¯Ô™IUöí¢’ÂÝ×»—ÝòÅË–kÌÿ–¶JcFÒ’j>dTÝñÓÞš©ôeËu×=ÁzõÍ}ëêû9ç$%jÞâ%
+èÙKÇNœ°mŸž:G™7ÊÿÞžÕ¾Díˆ]{òÒ³§JNŸ‘oË–vë^™¢S¿ü¢¡£þhÿ·Ïn2DÛwî´ÝïÚ¹³Â~D탻kÎüZ’–*Ivó»ööĸ8…öѐOªm§ÎzòÙ1Z<gŽÝ1*?Õûb¼Þz}šmù¿rsõø£Öùœ ÀÍÁ2yòdkbbb­%%%)ÿÄÅO‰ªu»%i›e)ñÕk/½äÊ9¢._¹¢çÆ+cnšáÇŽ‰§EsRäåéyý €©¥Ì_ c8Ôÿn©ð—#}ÒË•„û5ñòrKé”ä¶ã €ÆÁ4/µ  àÆFñ  €!(ž   0Å   † x  ÀO   ‚â	   C¸ü{<wù•R,põ°   0пvî”_ð­.Ó¥Å3¸W Î=¯£e\9,   Öþž[Õ»o—ŽéÒâÒ¯‹Bú¹v‚   ¸1ðO   ‚â	   CP<  `Š'   Añ  €!(ž   0Å   †pé÷xîÛ“¯ÝŸóåñÕ	îxÝ/a%¿š‘ŸsÈÏ9äçòsù9‡üœãH~uáÒâùÅŽÚùé÷Šˆˆp對^nn®Î=Ý?8ò«ù9‡üœC~Î!?琟sÈÏ9ŽæW.ÿ]íýû÷Wbb¢«‡mÔ’’’”b‡CÛ’_Uäçòsù9‡üœC~Î!?çÔ%?GñO   ‚â	   CP<  `Š'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   CP<  `·O‹Å"‹Å"OOOéƒ>°[WÝöu§Rll¬öîݫ˗/«oß¾¶å™™™êܹ³š6mª=z(;;[’”••¥®]»VYn&fίҴiÓj<®»™9¿ŠŠ
+M›6MíÚµ“‡‡‡)34s~6lP`` ¼¼¼Ô¡CmذÁÙÓu93äWé·?§ÇWXX˜¼½½¦ãǏ×ç”™óãúa¯®ù]o¹˜9?³_?ÜþŒ§ÕjÕ¥K—”œœ¬Ñ£G7Ø8òððÐ矮>}úØ–ôÑGÚºu«Îœ9£)S¦høðá’®þÑ™™©³gÏ*..N#FŒ¨÷Ü’Yó“¤Ý»wkÑ¢Eõž“Ìš_bb¢233µuëV•——ËjµÖ{n
+ɬùÅÄÄ(--MeeeJMMUlll½ç֐ܝŸTýÏéĉ®3gÎ(<<\“&Mª÷Ü’Yóãúa¯®ùÕ¶ÜLÌšŸÙ¯n/ž•<==dœ””Y,-]ºTÁÁÁŠˆˆPjjªíÀ²eËÔ¾}{yxxÈÓÓSíÚµ“$­]»Vݺu“¬æÍ›»d~
+Ålù]¼xQ111Z¹r¥KæÕÐÌ–_zzº’““Õ­[7Ó=Z­ŽÙòkß¾½¤_ŸeðóósÉüŠ»ò«éç4;;[			òññQBB‚>þøc—̯¡˜-?®WÕ7?®WÕ7?³_?Ü^<-‹¼½½¯…º|œ„„+22RV«U‘‘‘***²{`±Xäãã£gŸ}¶ÊNž<©¡C‡*55µÞskHfÍoòäÉŠŽŽÖ€êr0k~ÇŽSvv¶š5k&??¿j_~1³æ·hÑ"1BÞÞÞzê©§´`Á‚úŸdrw~5ýœëöÛo—$µjÕJ%%%õž[C2k~•¸~Ô/?®WÕ7?³_?¼Ü=šžöööVii©Z´h!I*--•OÇ¹¶íWÞnÕª•ÒÒÒgÛ÷Â…Ú¼y³FŽ©C‡I’víÚ¥¨¨(MŸ>]>úhÝOÎ fÍ/55UV«U&L°ík¶§û%óæçëë«Aƒ)))IÙÙÙŠŽŽÖc=V¯slHfÍoäÈ‘Z½zµ¨ììl5Jß}÷]½Î±!¹;¿š~N}}}uêÔ)µiÓFEEEòõõ­×ù54³æ'qýêŸ׏«œùù5óõÃíÏxÖ$,,L3fÌPii©JKK5cÆ…‡‡×y«ÕªñãÇ+''Gyyy=z´¬V«í¢• S§NI’<<<tîÜ9IWŸª2dˆ.\¨§Ÿ~Úu'fwçWQQ!«Õjû2ã?µqw~ƒ–ôë?6f|¹¤6îί¨¨HÒ¯¹UÞo,ŒÊ¯¦ŸÓAƒ)%%E/^TJJŠ"##]wrpw~
 \?®ªo~\?®ªo~f¿~˜¶x.^¼X{öìQëÖ­ÕºukåååiñâÅõkÇŽêÛ·¯Š‹‹uÛm·Ù­V=Ô²eKÍœ9SkÖ¬‘$3F?ÿü³xàÛ§ÎJKK>/£¸;¿ÆÎÝù%''kÖ¬YjÑ¢…âããõÞ{ï9}NFrw~.ÔØ±cÕ¬Y37ÎôRø-£ò«É¬Y³´mÛ6Ýzë­úì³Ï”œœ\¯c»‹»óãúñ«úäר¹;?³_?ÜúR{mbüüü´uëV§Ç‘¤ÜÜ\IRddd•Gî111Љ‰©ó˜f`æüê2¾»˜9¿;î¸C999ß]̜߰aÃ4lØ0‡Žï.fȯ¦qî¼óNíØ±Ã¡ã»‹™ó3ë¿y×2s~uß]ÌœŸÙ¯¦}Æ   7Š'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   C¸üässs5sæLWÛ¨mÛ¶Mí:6qh[ò«ŠüœC~Î!?琟sÈÏ9ä眺äç(—Ïà^:wö¼ÛîÊa½;›¨wß.×ÝŽüªG~Î!?琟sÈÏ9äçòsŽ£ùÕ…K‹gH¿.
+éçÚ	ÞLÈÏ9äçòsù9‡üœC~Î!?ãðO   ‚â	   CP<  `Š'   Añ  €!(ž   0Å   †pø{<÷íÉWÆÜÍ
+9   42»?? ðûüÚÖ¡âªÓ§OKWœš   n0a}üáжÏþýû«ÿþÎÌ	   79Þã	   CP<  `Š'   Añ  €!(ž   0Å   † x  À}gnn®¶mÛÖÐs  @#êЗÈ;T<srr´zÝõîÛÅé‰  àÆ±oO¾NŸ>íºâ)I!ýº(~J”S  ÀeIÚf©Â±my'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   C8ü=žŽØ·'_»??àÊ!  à&Á½]ú„\Z<¿Øq@ÛÿqPa÷ÝçÊa  `°/¾üRçΞ7oñ”¤°ÐûôÚK/¹zX   (eþ»àÚW²y'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   CP<  `Š'   Añ  €!(ž.àëàî)Ø\)/WLÜ8·;&nœ®”—»åØ  ÀüÜZ<}ý´jݺ*˪»]Óú}d·~núâ*ûeçäÈ×?@ÿüä“:¿!øúÈ×?@¿ï¨Þêï\e›q/¿¬oÐå+W4ø?‡Ú–oزE}"©uÇ …?üˆr¶o¯²ï¦-©Gð=×ݧr¿=ߊŠ
+½óî|uÿ7µî¤>ƒk͆
+Uæ[@uëw¿ÖnÚd[×ýžnÚ´ÅþÏ   ’ÛŸñ\³a£Ž?^ïý.]*«Õ*Iº|åŠ27n¬²MúòåòàZ¼|…ˏ_%…úéàwš>uŠ^|yr•õVyxx苼<õêÞݶü¿>ýo­_ö¾~øzŸ&¼0V±ã^¬²ïº?TXhèu÷)),PIaA•ýSæ/Ð??ýDk–,ÖñßjUú"mÛ¾£Êü‹òi4ñÕ¿Ú–‡…†j݇Ö=  pSp{ñœõú4ŸúUTTÔkÿî]»éÙÙ’¤¬M›4x@»õß=ªcÇO(cî\øñGùᇏÿÕ×ß(졇u{`G…=ô°öíß/IÚýÕWê=` î¸»«^Ÿù–mûƒùùú÷¡«uÇ …ŒÔÎÝ{j»§‡§Ýýù¶gaïð!=5\—.µ=+¹àíÙº³];Y<<äéá©?´iSe̼½{èïo»ïÈ>×zoÕ*͝9S]‚‚ÔÄËKþþš?;¹Æí[·je»èï¯/÷í«u|  pór{ñìÔ±£†‡ëÝ%õÚÿOÑÑz{Þ»²Z­šŸñžFi·>cÅJMzqœ¼<=õRü‹ÊX±Òáã¿0i’F
+Ò÷ûöjÔð(8I’?ù=£Ã{vëm-rÏÿy¢¢Ÿ¡£û¿Qâ__Õ¸—_®vξþjÔI“ÿöºÞ™1ã×ýcbTøÕ—Џ¿ŸJ
+q?ÎÛc÷̤¯€Úvê¬øW^QÊŒ7«Œ]rú´š7kVåxµís­“?ý¤ ??Û~Õ½_ùV'ž‰Ö™j[Þ¼ys—”Ô:>  ¸y¹½xJÒó1ÑÊÙ¾]ÿsðÝrï¦MUvþ¼í~Ùùóòöö¶ÛÆ¿ý]jÛ¦&½öš:莶mmë.]º¤YYŠ~!N¾þŠ~!N+²²téÒ%‡Ž0?_£¢¢Ô¬Y3==l˜¾;tȶü©aë–[nÑÈ'ž°m¿oÿ~8Im;uÖ°èåV{¾%…úåp¾òrr4äÁlË}ýäßã^mÛ¾C¾þÚ¶}‡:ôì¥ôeËìöýñÀ·zûÍ7ôÜø	UÆömÙÒ.3Gö¹V›Ö­uäèQÛ~Õ½_RX â‚ÃÚ¸b¹¦LŸn[^VV¦Û|}k  ܼLQ<-‹Þyó
+ýùÕWí–‡†ôÖìyóTvþ¼ÊΟ×ìyóÔ/$¤Êþ/ŒŽÕ’å+ôÜ3ÏØ-_¿y³zvïn+P%…êÕ£‡ÖoÞìÐñ;vè Õë×ëÂ…Z‘•¥N;J’‚µzýz]¼xQ«Ö­·mÏÝwëÝäY:ñí~[9«‹’Ñ–5«µmËfŠŠRIaž5J’ôÊߦ«¨¸X’äáá¡Ò²²*côìÞÝ®ð:²ÏµFF=¡	S§êð‘#*//WÁ÷ß׺}Ñ/ŶۇѽÁÁŽ,  ¸é˜¢xJҝíÚé©aÛ-KMJÒÞ¯¿Q`¯Þ
+ìÕ[û¾Ù¯Ô™IUöí¢’ÂÝ×»—ÝòÅË–kÌÿ–¶JcFÒ’j>dTÝñÓÞš©ôeËu×=ÁzõÍ}ëêû9ç$%jÞâ%
+èÙKÇNœ°mŸž:G™7ÊÿÞžÕ¾Díˆ]{òÒ³§JNŸ‘oË–vëºvî¬ð‡Qûàîš3–¤¥VÙè!Ú¾sçu÷¹v~×Þž§ÐÞ!2âIµíÔYO>;F‹ç̱;Få§Úc_Œ×[¯O³-ÿWn®ôÑ:Ÿ3  ¸9X&OžlMLL¬u£¤¤$åŸØ¡ø)Qµn·$m³,%¾zí¥—\9GÔÁå+Wô\ÂxeÌM3üØ1qã´hNм<=¯¿1  0µ”ùtì‡úß-þr¤Oz¹r‚p¿&^^n)’Üv\  Ð8˜æ¥v   ÜØ(ž   0Å   † x  ÀO   ‚â	   CP<  `—çî/¿RÊ‚®   ú×Νò¾Õ¥cº´x÷
+Ô¹³çu´ì€+‡  €ÁÚßs«z÷íâÒ1]Z<CúuQH?×N   7Þã	   CP<  `Š'   Añ  €!(ž   0Å   † x  À.ýÏ}{òµûs¾<¾:Á½¯û%¬äW3òsù9‡üœC~Î!?琟sɯ.\Z<¿Øq@;?ý^®¶ÑËÍÍÕ¹³ç¯ûG~Õ#?琟sÈÏ9äçòsù9ÇÑüêÂå¿«½ÿþJLLtõ°ZRR’òOìph[ò«ŠüœC~Î!?琟sÈÏ9ä眺äç(Þã	   CP<  `Š'   Añ  €!(ž   0Å   † x  ÀO   ‚â	   CP<  `Š'   áÖâi±Xd±Xäéé©   }ðÁvëªÛ¾®ãTŠÕÞ½{uùòeõíÛ·ÊúiӦٍ¿aÃÊËËK:tІ
+êsŠ
+ÊùUî[ù_¥ãǏ+,,LÞÞÞ
+Óñãǝ9Õaæü²²²ÔµkW5mÚT=zôPvv¶3§Ú Ìœ_¥ßþ\›‰™ó«¨¨Ð´iÓÔ®];yxx˜2C3çÇõÃ^MùÕô÷Œë‡½ºægöë‡ÛŸñ´Z­ºté’’““5zôè§¢¢BúüóÏÕ§O»u»wïÖ¢E‹ì–ÅÄÄ(--MeeeJMMUlll½ç֐̐ŸÕjµýWiâĉ
+×™3g®I“&Õ{n
+ɬùeee)33SgÏžU\\œFŒQï¹5$³æ'Uÿsm6fÍ/11Q™™™Úºu«ÊËË«dkf͏뇽šò«éï×{uÍÏì×·ÏJžžž
+2NJJŠ,‹–.]ªàà`EDD(55ÕöÈàâŋЉ‰ÑÊ•+íökß¾½¤_¥øùù¹d~
+Å]ùIÒï~÷;µhÑBÿñÿ¡ï¿ÿ^’”­„„ùøø(!!Aü±Kæ×PÌ–ßÚµkÕ­[7ùøøhðàÁjÞ¼¹Kæ×PÌ–_M?×fe¶üÒ'ns  IDATÓÓ•œœ¬nݺ™òÙÎß2[~\?®º^~5ý=ãúqU}ó3ûõÃíÅÓb±ÈÛÛ[ñññZ¸p¡ËÇIHHPqq±"##eµZ©¢¢"Û#ƒÉ“'+::Z°oÑ¢E1b„¼½½õÔSOiÁ‚õž[Crw~V«UgΜQAAî¾ûnÛ#«ââbÝ~ûí’¤V­Z©¤¤Ä‰³l8fͯÒÉ“'5tèP¥¦¦Ö{n
+ɬùÕôsm6fÍïØ±cÊÎÎV³fÍäççWíËf`Öü¸~\u½üjú{ÆõãªúæWɬ×/wO ¦—p¼½½UZZª-ZH’JKKåããSçq®}Py»U«VJKKS\\œRSSeµZ5aÂÛ6V«U#GŽÔêÕ«5pà@eggkÔ¨Qúî»ïêuŽ
+ÉÝùUjݺµ^ýuýîw¿“$ùúúêÔ©SjÓ¦ŠŠŠäëë[·3ˆYó“¤]»v)**JÓ§O×£>êøIȬùÕôsm6fÍÏ××Wƒ
+RRR’²³³­Ç{¬n'g ³æÇõãªëåWÓß3®WÕ7?ÉÜ×·?ãY“°°0͘1C¥¥¥*--ÕŒ3^çq¬V«Æ¯œœåååiôèѲZ­¶4***ìÞŸSùÿ¢¢"I¿þaWÞo,ŒÊ¯ÒéÓ§5cÆÿßλDrÅq ÿ¥¸FÄÂbAƒ`àR\„ä=\XEËí¬-ñ¿Èn±EšÅ%þ©ìv…¬[D‹42•…Hr‹@RwIôFßæÍ¬÷ùÔoß¼ù2îû:;»_ÇÒÒRDD¬­­E§Ó‰ëëëèt:Ñh4Ær^¹”ßááalmmE·Ûííí±œSNeçwÛßõ¤(;¿õõõˆ¸yÿ›„ÛßVv~öWÞ•ßm×™ý㕇æWõý£²Å³×ëÅÙÙYÔjµ¨Õjq~~½^ïAs
+‡ÃXYY‰Ëˢ-ôšn·»»»1
 55{{{•ÿ’Â?åÊïõ7òæææâôôôÍ3u­V+ƒAÌÌÌÄÉÉI´ÛíäsÊ©ìüvvvâââ"666ÞŒyùòeòyåRv~“®ìüÚív´Z­˜žžŽýýý8::J>§œÊÎÏþqã®ün»Îì7’_Õ÷R?j¿ë.Äââb'Ï1""¢ÑhÜùŸÓÛó4›Íh6›…Ž_–*äwÛkb8:~Yªœß$Ü¡«r~÷S†*ç7??ý~¿ÐñËRåüì7îÊï¶ëÌþqã!ùUõ=ïµÊÞñ àqQ< ÈBñ  Å €,O  ²P< ÈBñ  Å €,Æþò£Ñ(Æ=íDñáÇO
+•ß¿É/üÒÈ/üÒÈ/üÒÜ'¿¢ÆZ<?ùôiüþÛñó¯ßsÚ‰7ÿôI|¶òìãä÷ßä—F~iä—F~iä—F~iŠæwc-žÏ_<‹ç/Æ»À÷‰üÒÈ/üÒÈ/üÒÈ/üòñŒ'  Y(ž  d¡x …â	 @Š'  Y(ž  d¡x Eáßñüñì—øö›ïþϵ  0a~8ý)¾úâ£BcÏåå帺ºŠø3i]  <2_~¾«««…Æ*žõz=êõzÊš  xÏyÆ €,O  ²P< ÈBñ  Å €,O  ²P< Èâƒz½þ׿æfÙë  àë÷ûñ7¬ƒz\u*    IEND®B`‚
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/images/ppc64-without-smt.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0x55555555,0x55555555" complete_cpuset="0xffffffff,0xffffffff" online_cpuset="0x55555555,0x55555555" allowed_cpuset="0xffffffff,0xffffffff" nodeset="0x0000000f" complete_nodeset="0x0000000f" allowed_nodeset="0x0000000f">
+    <page_type size="65536" count="0"/>
+    <page_type size="16777216" count="0"/>
+    <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x00005555" complete_cpuset="0x00005555" online_cpuset="0x00005555" allowed_cpuset="0x00005555" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="31943819264">
+      <page_type size="65536" count="487424"/>
+      <page_type size="16777216" count="0"/>
+      <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+      <object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="1" cpuset="0x55550000" complete_cpuset="0x55550000" online_cpuset="0x55550000" allowed_cpuset="0x55550000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="33554432000">
+      <page_type size="65536" count="512000"/>
+      <page_type size="16777216" count="0"/>
+      <object type="PU" os_level="-1" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="24" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="26" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="28" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+      <object type="PU" os_level="-1" os_index="30" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="2" cpuset="0x00005555,0x0" complete_cpuset="0x00005555,0x0" online_cpuset="0x00005555,0x0" allowed_cpuset="0x00005555,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="33554432000">
+      <page_type size="65536" count="512000"/>
+      <page_type size="16777216" count="0"/>
+      <object type="PU" os_level="-1" os_index="32" cpuset="0x00000001,0x0" complete_cpuset="0x00000001,0x0" online_cpuset="0x00000001,0x0" allowed_cpuset="0x00000001,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="34" cpuset="0x00000004,0x0" complete_cpuset="0x00000004,0x0" online_cpuset="0x00000004,0x0" allowed_cpuset="0x00000004,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="36" cpuset="0x00000010,0x0" complete_cpuset="0x00000010,0x0" online_cpuset="0x00000010,0x0" allowed_cpuset="0x00000010,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="38" cpuset="0x00000040,0x0" complete_cpuset="0x00000040,0x0" online_cpuset="0x00000040,0x0" allowed_cpuset="0x00000040,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="40" cpuset="0x00000100,0x0" complete_cpuset="0x00000100,0x0" online_cpuset="0x00000100,0x0" allowed_cpuset="0x00000100,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="42" cpuset="0x00000400,0x0" complete_cpuset="0x00000400,0x0" online_cpuset="0x00000400,0x0" allowed_cpuset="0x00000400,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="44" cpuset="0x00001000,0x0" complete_cpuset="0x00001000,0x0" online_cpuset="0x00001000,0x0" allowed_cpuset="0x00001000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+      <object type="PU" os_level="-1" os_index="46" cpuset="0x00004000,0x0" complete_cpuset="0x00004000,0x0" online_cpuset="0x00004000,0x0" allowed_cpuset="0x00004000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="3" cpuset="0x55550000,0x0" complete_cpuset="0x55550000,0x0" online_cpuset="0x55550000,0x0" allowed_cpuset="0x55550000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="33285996544">
+      <page_type size="65536" count="507904"/>
+      <page_type size="16777216" count="0"/>
+      <object type="PU" os_level="-1" os_index="48" cpuset="0x00010000,0x0" complete_cpuset="0x00010000,0x0" online_cpuset="0x00010000,0x0" allowed_cpuset="0x00010000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="50" cpuset="0x00040000,0x0" complete_cpuset="0x00040000,0x0" online_cpuset="0x00040000,0x0" allowed_cpuset="0x00040000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="52" cpuset="0x00100000,0x0" complete_cpuset="0x00100000,0x0" online_cpuset="0x00100000,0x0" allowed_cpuset="0x00100000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="54" cpuset="0x00400000,0x0" complete_cpuset="0x00400000,0x0" online_cpuset="0x00400000,0x0" allowed_cpuset="0x00400000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="56" cpuset="0x01000000,0x0" complete_cpuset="0x01000000,0x0" online_cpuset="0x01000000,0x0" allowed_cpuset="0x01000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="58" cpuset="0x04000000,0x0" complete_cpuset="0x04000000,0x0" online_cpuset="0x04000000,0x0" allowed_cpuset="0x04000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="60" cpuset="0x10000000,0x0" complete_cpuset="0x10000000,0x0" online_cpuset="0x10000000,0x0" allowed_cpuset="0x10000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+      <object type="PU" os_level="-1" os_index="62" cpuset="0x40000000,0x0" complete_cpuset="0x40000000,0x0" online_cpuset="0x40000000,0x0" allowed_cpuset="0x40000000,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-css.inc
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-css.inc	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-css.inc	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,2 @@
+<link href="tabs.css" rel="stylesheet" type="text/css">
+<link href="doxygen.css" rel="stylesheet" type="text/css">

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-footer.inc
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-footer.inc	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-footer.inc	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,2 @@
+<?php
+include_once("$topdir/includes/footer.inc");

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-header.inc
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-header.inc	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org-header.inc	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,14 @@
+<?php
+$topdir = "../../../..";
+# Note that we must use the PHP "$$" indirection to assign to the
+# "title" variable, because if we list "$ title" (without the space)
+# in this file, Doxygen will replace it with a string title.
+$ver = basename(getcwd());
+$thwarting_doxygen_preprocessor = "title";
+$$thwarting_doxygen_preprocessor = "Portable Hardware Locality (hwloc) Documentation: $ver";
+$header_include_file = "$topdir/projects/hwloc/doc/$ver/www.open-mpi.org-css.inc";
+
+include_once("$topdir/projects/hwloc/nav.inc");
+include_once("$topdir/includes/header.inc");
+include_once("$topdir/includes/code.inc");
+?>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org.cfg
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org.cfg	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/doc/www.open-mpi.org.cfg	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,20 @@
+# Copyright © 2010-2011 inria.  All rights reserved.
+# Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+
+###############################################################
+# Customized for output onto the www.open-mpi.org web site.
+###############################################################
+
+ at INCLUDE = doxygen.cfg
+
+#PROJECT_NUMBER     = @VERSION@
+OUTPUT_DIRECTORY    = www.open-mpi.org
+#EXAMPLE_PATH       = @top_srcdir@/doc
+#IMAGE_PATH         = @top_srcdir@/doc/images images
+HTML_FILE_EXTENSION = .php
+HTML_HEADER         = www.open-mpi.org-header.inc
+HTML_FOOTER         = www.open-mpi.org-footer.inc
+GENERATE_MAN        = NO
+GENERATE_LATEX      = NO
+#INCLUDE_PATH       = @top_srcdir@/doc

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/Makefile.am	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,7 @@
-# Copyright © 2009-2010 INRIA.  All rights reserved.
+# Copyright © 2009-2010 inria.  All rights reserved.
 # Copyright © 2009-2010 Université Bordeaux 1
 # Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+# Copyright © 2011      Oracle and/or its affiliates.  All rights reserved.
 # See COPYING in top-level directory.
 
 # Only install the headers if we're in standalone mode (meaning:
@@ -33,6 +34,11 @@
         hwloc/linux-libnuma.h
 endif HWLOC_HAVE_LINUX
 
+if HWLOC_HAVE_SOLARIS
+include_hwloc_HEADERS += \
+       private/solaris-chiptype.h
+endif HWLOC_HAVE_SOLARIS
+
 if HWLOC_HAVE_SCHED_SETAFFINITY
 include_hwloc_HEADERS += hwloc/glibc-sched.h
 endif HWLOC_HAVE_SCHED_SETAFFINITY

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/autogen/config.h.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/autogen/config.h.in	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/autogen/config.h.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,7 @@
 /* -*- c -*-
  * Copyright © 2009 CNRS
- * Copyright © 2009-2010 INRIA.  All rights reserved.
- * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  */
@@ -21,7 +21,11 @@
 # endif
 #endif
 
-#undef __hwloc_inline
+#if defined(_MSC_VER) || defined(__HP_cc)
+#  define __hwloc_inline __inline
+#else
+#  define __hwloc_inline __inline__
+#endif
 
 /*
  * Note: this is public.  We can not assume anything from the compiler used
@@ -31,53 +35,68 @@
  */
 
 /* Maybe before gcc 2.95 too */
-#if defined(HWLOC_HAVE_ATTRIBUTE_UNUSED) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
-# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) || HWLOC_HAVE_ATTRIBUTE_UNUSED
-#  define __hwloc_attribute_unused __attribute__((__unused__))
-# else
-#  define __hwloc_attribute_unused
-# endif
+#ifdef HWLOC_HAVE_ATTRIBUTE_UNUSED
+#define __HWLOC_HAVE_ATTRIBUTE_UNUSED HWLOC_HAVE_ATTRIBUTE_UNUSED 
+#elif defined(__GNUC__)
+# define __HWLOC_HAVE_ATTRIBUTE_UNUSED (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
 #else
+# define __HWLOC_HAVE_ATTRIBUTE_UNUSED 0
+#endif
+#if __HWLOC_HAVE_ATTRIBUTE_UNUSED
+# define __hwloc_attribute_unused __attribute__((__unused__))
+#else
 # define __hwloc_attribute_unused
 #endif
 
-#if defined(HWLOC_HAVE_ATTRIBUTE_MALLOC) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
-# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) || HWLOC_HAVE_ATTRIBUTE_MALLOC
-#  define __hwloc_attribute_malloc __attribute__((__malloc__))
-# else
-#  define __hwloc_attribute_malloc
-# endif
+#ifdef HWLOC_HAVE_ATTRIBUTE_MALLOC
+#define __HWLOC_HAVE_ATTRIBUTE_MALLOC HWLOC_HAVE_ATTRIBUTE_MALLOC 
+#elif defined(__GNUC__)
+# define __HWLOC_HAVE_ATTRIBUTE_MALLOC (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
 #else
+# define __HWLOC_HAVE_ATTRIBUTE_MALLOC 0
+#endif
+#if __HWLOC_HAVE_ATTRIBUTE_MALLOC
+# define __hwloc_attribute_malloc __attribute__((__malloc__))
+#else
 # define __hwloc_attribute_malloc
 #endif
 
-#if defined(HWLOC_HAVE_ATTRIBUTE_CONST) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
-# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)) || HWLOC_HAVE_ATTRIBUTE_CONST
-#  define __hwloc_attribute_const __attribute__((__const__))
-# else
-#  define __hwloc_attribute_const
-# endif
+#ifdef HWLOC_HAVE_ATTRIBUTE_CONST
+#define __HWLOC_HAVE_ATTRIBUTE_CONST HWLOC_HAVE_ATTRIBUTE_CONST 
+#elif defined(__GNUC__)
+# define __HWLOC_HAVE_ATTRIBUTE_CONST (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95))
 #else
+# define __HWLOC_HAVE_ATTRIBUTE_CONST 0
+#endif
+#if __HWLOC_HAVE_ATTRIBUTE_CONST
+# define __hwloc_attribute_const __attribute__((__const__))
+#else
 # define __hwloc_attribute_const
 #endif
 
-#if defined(HWLOC_HAVE_ATTRIBUTE_PURE) || (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
-# if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) || HWLOC_HAVE_ATTRIBUTE_PURE
-#  define __hwloc_attribute_pure __attribute__((__pure__))
-# else
-#  define __hwloc_attribute_pure
-# endif
+#ifdef HWLOC_HAVE_ATTRIBUTE_PURE
+#define __HWLOC_HAVE_ATTRIBUTE_PURE HWLOC_HAVE_ATTRIBUTE_PURE 
+#elif defined(__GNUC__)
+# define __HWLOC_HAVE_ATTRIBUTE_PURE (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96))
 #else
+# define __HWLOC_HAVE_ATTRIBUTE_PURE 0
+#endif
+#if __HWLOC_HAVE_ATTRIBUTE_PURE
+# define __hwloc_attribute_pure __attribute__((__pure__))
+#else
 # define __hwloc_attribute_pure
 #endif
 
-#if defined(HWLOC_HAVE_ATTRIBUTE_DEPRECATED) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
-# if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)) || HWLOC_HAVE_ATTRIBUTE_DEPRECATED
-#  define __hwloc_attribute_deprecated __attribute__((__deprecated__))
-# else
-#  define __hwloc_attribute_deprecated
-# endif
+#ifdef HWLOC_HAVE_ATTRIBUTE_DEPRECATED
+#define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED HWLOC_HAVE_ATTRIBUTE_DEPRECATED 
+#elif defined(__GNUC__)
+# define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3))
 #else
+# define __HWLOC_HAVE_ATTRIBUTE_DEPRECATED 0
+#endif
+#if __HWLOC_HAVE_ATTRIBUTE_DEPRECATED
+# define __hwloc_attribute_deprecated __attribute__((__deprecated__))
+#else
 # define __hwloc_attribute_deprecated
 #endif
 

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/bitmap.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/bitmap.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/bitmap.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cpuset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cpuset.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cpuset.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2010 INRIA.  All rights reserved.
+ * Copyright © 2009-2010 inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cuda.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cuda.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cuda.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
- * Copyright © 2010 INRIA.  All rights reserved.
- * Copyright © 2010 Université Bordeaux 1
+ * Copyright © 2010 inria.  All rights reserved.
+ * Copyright © 2010-2011 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  */
@@ -19,6 +19,7 @@
 #include <hwloc.h>
 #include <hwloc/autogen/config.h>
 #include <hwloc/linux.h>
+#include <hwloc/helper.h>
 
 #include <cuda.h>
 
@@ -32,6 +33,37 @@
  * @{
  */
 
+/** \brief Return the domain, bus and device IDs of device \p cudevice.
+ */
+static __hwloc_inline int
+hwloc_cuda_get_device_pci_ids(hwloc_topology_t topology __hwloc_attribute_unused,
+			       CUdevice cudevice, int *domain, int *bus, int *dev)
+{
+  CUresult cres;
+
+#if CUDA_VERSION >= 4000
+  cres = cuDeviceGetAttribute(domain, CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID, cudevice);
+  if (cres != CUDA_SUCCESS) {
+    errno = ENOSYS;
+    return -1;
+  }
+#else
+  *domain = 0;
+#endif
+  cres = cuDeviceGetAttribute(bus, CU_DEVICE_ATTRIBUTE_PCI_BUS_ID, cudevice);
+  if (cres != CUDA_SUCCESS) {
+    errno = ENOSYS;
+    return -1;
+  }
+  cres = cuDeviceGetAttribute(dev, CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID, cudevice);
+  if (cres != CUDA_SUCCESS) {
+    errno = ENOSYS;
+    return -1;
+  }
+
+  return 0;
+}
+
 /** \brief Get the CPU set of logical processors that are physically
  * close to device \p cudevice.
  *
@@ -47,30 +79,12 @@
 #ifdef HWLOC_LINUX_SYS
   /* If we're on Linux, use the sysfs mechanism to get the local cpus */
 #define HWLOC_CUDA_DEVICE_SYSFS_PATH_MAX 128
-  CUresult cres;
-  int domainid = 0;
-  int deviceid;
-  int busid;
   char path[HWLOC_CUDA_DEVICE_SYSFS_PATH_MAX];
   FILE *sysfile = NULL;
+  int domainid, busid, deviceid;
 
-#if CUDA_VERSION >= 4000
-  cres = cuDeviceGetAttribute(&domainid, CU_DEVICE_ATTRIBUTE_PCI_DOMAIN_ID, cudevice);
-  if (cres != CUDA_SUCCESS) {
-    errno = ENOSYS;
+  if (hwloc_cuda_get_device_pci_ids(topology, cudevice, &domainid, &busid, &deviceid))
     return -1;
-  } 
-#endif
-  cres = cuDeviceGetAttribute(&busid, CU_DEVICE_ATTRIBUTE_PCI_BUS_ID, cudevice);
-  if (cres != CUDA_SUCCESS) {
-    errno = ENOSYS;
-    return -1;
-  }
-  cres = cuDeviceGetAttribute(&deviceid, CU_DEVICE_ATTRIBUTE_PCI_DEVICE_ID, cudevice);
-  if (cres != CUDA_SUCCESS) {
-    errno = ENOSYS;
-    return -1;
-  }
 
   sprintf(path, "/sys/bus/pci/devices/%04x:%02x:%02x.0/local_cpus", domainid, busid, deviceid);
   sysfile = fopen(path, "r");
@@ -78,6 +92,8 @@
     return -1;
 
   hwloc_linux_parse_cpumap_file(sysfile, set);
+  if (hwloc_bitmap_iszero(set))
+    hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology));
 
   fclose(sysfile);
 #else
@@ -87,6 +103,23 @@
   return 0;
 }
 
+/** \brief Get the hwloc object for the PCI device corresponding
+ * to device \p cudevice.
+ *
+ * For the given CUDA Runtime API device \p cudevice, return the hwloc PCI
+ * object containing the device. Returns NULL if there is none.
+ */
+static __hwloc_inline hwloc_obj_t
+hwloc_cuda_get_device_pcidev(hwloc_topology_t topology, CUdevice cudevice)
+{
+  int domain, bus, dev;
+
+  if (hwloc_cuda_get_device_pci_ids(topology, cudevice, &domain, &bus, &dev))
+    return NULL;
+
+  return hwloc_get_pcidev_by_busid(topology, domain, bus, dev, 0);
+}
+
 /** @} */
 
 

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cudart.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cudart.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/cudart.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
- * Copyright © 2010 INRIA.  All rights reserved.
- * Copyright © 2010 Université Bordeaux 1
+ * Copyright © 2010 inria.  All rights reserved.
+ * Copyright © 2010-2011 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  */
@@ -19,6 +19,7 @@
 #include <hwloc.h>
 #include <hwloc/autogen/config.h>
 #include <hwloc/linux.h>
+#include <hwloc/helper.h>
 
 #include <cuda_runtime_api.h>
 
@@ -32,10 +33,37 @@
  * @{
  */
 
+/** \brief Return the domain, bus and device IDs of device \p device.
+ */
+static __hwloc_inline int
+hwloc_cudart_get_device_pci_ids(hwloc_topology_t topology __hwloc_attribute_unused,
+			       int device, int *domain, int *bus, int *dev)
+{
+  cudaError_t cerr;
+  struct cudaDeviceProp prop;
+
+  cerr = cudaGetDeviceProperties(&prop, device);
+  if (cerr) {
+    errno = ENOSYS;
+    return -1;
+  }
+
+#if CUDART_VERSION >= 4000
+  *domain = prop.pciDomainID;
+#else
+  *domain = 0;
+#endif
+
+  *bus = prop.pciBusID;
+  *dev = prop.pciDeviceID;
+
+  return 0;
+}
+
 /** \brief Get the CPU set of logical processors that are physically
- * close to device \p cudevice.
+ * close to device \p device.
  *
- * For the given CUDA Runtime API device \p cudevice, read the corresponding
+ * For the given CUDA Runtime API device \p device, read the corresponding
  * kernel-provided cpumap file and return the corresponding CPU set.
  * This function is currently only implemented in a meaningful way for
  * Linux; other systems will simply get a full cpuset.
@@ -47,28 +75,20 @@
 #ifdef HWLOC_LINUX_SYS
   /* If we're on Linux, use the sysfs mechanism to get the local cpus */
 #define HWLOC_CUDART_DEVICE_SYSFS_PATH_MAX 128
-  cudaError_t cerr;
-  struct cudaDeviceProp prop;
   char path[HWLOC_CUDART_DEVICE_SYSFS_PATH_MAX];
   FILE *sysfile = NULL;
-  int pciDomainID = 0;
-
-  cerr = cudaGetDeviceProperties(&prop, device);
-  if (cerr) {
-    errno = ENOSYS;
+  int domain, bus, dev;
+  if (hwloc_cudart_get_device_pci_ids(topology, device, &domain, &bus, &dev))
     return -1;
-  }
 
-#if CUDART_VERSION >= 4000
-  pciDomainID = prop.pciDomainID;
-#endif
-
-  sprintf(path, "/sys/bus/pci/devices/%04x:%02x:%02x.0/local_cpus", pciDomainID, prop.pciBusID, prop.pciDeviceID);
+  sprintf(path, "/sys/bus/pci/devices/%04x:%02x:%02x.0/local_cpus", domain, bus, dev);
   sysfile = fopen(path, "r");
   if (!sysfile)
     return -1;
 
   hwloc_linux_parse_cpumap_file(sysfile, set);
+  if (hwloc_bitmap_iszero(set))
+    hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology));
 
   fclose(sysfile);
 #else
@@ -78,6 +98,23 @@
   return 0;
 }
 
+/** \brief Get the hwloc object for the PCI device corresponding
+ * to device \p device.
+ *
+ * For the given CUDA Runtime API device \p device, return the hwloc PCI
+ * object containing the device. Returns NULL if there is none.
+ */
+static __hwloc_inline hwloc_obj_t
+hwloc_cudart_get_device_pcidev(hwloc_topology_t topology, int device)
+{
+  int domain, bus, dev;
+
+  if (hwloc_cudart_get_device_pci_ids(topology, device, &domain, &bus, &dev))
+    return NULL;
+
+  return hwloc_get_pcidev_by_busid(topology, domain, bus, dev, 0);
+}
+
 /** @} */
 
 

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/glibc-sched.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/glibc-sched.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/glibc-sched.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2010 INRIA.  All rights reserved.
+ * Copyright © 2009-2010 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -21,7 +21,7 @@
 #include <hwloc/helper.h>
 #include <assert.h>
 
-#if !defined _GNU_SOURCE || !defined _SCHED_H || !defined CPU_SETSIZE
+#if !defined _GNU_SOURCE || !defined _SCHED_H || (!defined CPU_SETSIZE && !defined sched_priority)
 #error Please make sure to include sched.h before including glibc-sched.h, and define _GNU_SOURCE before any inclusion of sched.h
 #endif
 
@@ -78,8 +78,9 @@
 hwloc_cpuset_from_glibc_sched_affinity(hwloc_topology_t topology __hwloc_attribute_unused, hwloc_cpuset_t hwlocset,
                                        const cpu_set_t *schedset, size_t schedsetsize)
 {
+  int cpu;
 #ifdef CPU_ZERO_S
-  int cpu, count;
+  int count;
 #endif
   hwloc_bitmap_zero(hwlocset);
 #ifdef CPU_ZERO_S
@@ -96,7 +97,6 @@
   /* sched.h does not support dynamic cpu_set_t (introduced in glibc 2.7),
    * assume we have a very old interface without CPU_COUNT (added in 2.6)
    */
-  int cpu;
   assert(schedsetsize == sizeof(cpu_set_t));
   for(cpu=0; cpu<CPU_SETSIZE; cpu++)
     if (CPU_ISSET(cpu, schedset))

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/helper.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,7 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
- * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  */
@@ -40,8 +40,13 @@
  * If no object of this type is present on the underlying architecture, the
  * function returns the depth of the first "present" object typically found
  * inside \p type.
+ *
+ * If some objects of the given type exist in different levels, for instance
+ * L1 and L2 caches, the function returns HWLOC_TYPE_DEPTH_MULTIPLE.
  */
-static __hwloc_inline int __hwloc_attribute_pure
+static __hwloc_inline int
+hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
+static __hwloc_inline int
 hwloc_get_type_or_below_depth (hwloc_topology_t topology, hwloc_obj_type_t type)
 {
   int depth = hwloc_get_type_depth(topology, type);
@@ -63,8 +68,13 @@
  * If no object of this type is present on the underlying architecture, the
  * function returns the depth of the first "present" object typically
  * containing \p type.
+ *
+ * If some objects of the given type exist in different levels, for instance
+ * L1 and L2 caches, the function returns HWLOC_TYPE_DEPTH_MULTIPLE.
  */
-static __hwloc_inline int __hwloc_attribute_pure
+static __hwloc_inline int
+hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
+static __hwloc_inline int
 hwloc_get_type_or_above_depth (hwloc_topology_t topology, hwloc_obj_type_t type)
 {
   int depth = hwloc_get_type_depth(topology, type);
@@ -100,14 +110,18 @@
  * for complex topologies.  This function replaces the old deprecated
  * hwloc_get_system_obj().
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
+hwloc_get_root_obj (hwloc_topology_t topology) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
 hwloc_get_root_obj (hwloc_topology_t topology)
 {
   return hwloc_get_obj_by_depth (topology, 0, 0);
 }
 
 /** \brief Returns the ancestor object of \p obj at depth \p depth. */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
+hwloc_get_ancestor_obj_by_depth (hwloc_topology_t topology __hwloc_attribute_unused, unsigned depth, hwloc_obj_t obj) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
 hwloc_get_ancestor_obj_by_depth (hwloc_topology_t topology __hwloc_attribute_unused, unsigned depth, hwloc_obj_t obj)
 {
   hwloc_obj_t ancestor = obj;
@@ -119,7 +133,9 @@
 }
 
 /** \brief Returns the ancestor object of \p obj with type \p type. */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
+hwloc_get_ancestor_obj_by_type (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_type_t type, hwloc_obj_t obj) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
 hwloc_get_ancestor_obj_by_type (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_type_t type, hwloc_obj_t obj)
 {
   hwloc_obj_t ancestor = obj->parent;
@@ -166,7 +182,9 @@
  * processors.
  * However, using CPU sets to hide this complexity should often be preferred.
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
+hwloc_get_pu_obj_by_os_index(hwloc_topology_t topology, unsigned os_index) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
 hwloc_get_pu_obj_by_os_index(hwloc_topology_t topology, unsigned os_index)
 {
   hwloc_obj_t obj = NULL;
@@ -191,7 +209,9 @@
 }
 
 /** \brief Returns the common parent object to objects lvl1 and lvl2 */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
+hwloc_get_common_ancestor_obj (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj1, hwloc_obj_t obj2) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
 hwloc_get_common_ancestor_obj (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj1, hwloc_obj_t obj2)
 {
   /* the loop isn't so easy since intermediate ancestors may have
@@ -216,7 +236,9 @@
  *
  * \note This function assumes that both \p obj and \p subtree_root have a \p cpuset.
  */
-static __hwloc_inline int __hwloc_attribute_pure
+static __hwloc_inline int
+hwloc_obj_is_in_subtree (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj, hwloc_obj_t subtree_root) __hwloc_attribute_pure;
+static __hwloc_inline int
 hwloc_obj_is_in_subtree (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj, hwloc_obj_t subtree_root)
 {
   return hwloc_bitmap_isincluded(obj->cpuset, subtree_root->cpuset);
@@ -237,13 +259,15 @@
  * This is convenient for iterating over all largest objects within a CPU set
  * by doing a loop getting the first largest object and clearing its CPU set
  * from the remaining CPU set.
+ *
+ * \note This function cannot work if the root object does not have a CPU set,
+ * e.g. if the topology is made of different machines.
  */
 static __hwloc_inline hwloc_obj_t
 hwloc_get_first_largest_obj_inside_cpuset(hwloc_topology_t topology, hwloc_const_cpuset_t set)
 {
   hwloc_obj_t obj = hwloc_get_root_obj(topology);
-  /* FIXME: what if !root->cpuset? */
-  if (!hwloc_bitmap_intersects(obj->cpuset, set))
+  if (!obj->cpuset || !hwloc_bitmap_intersects(obj->cpuset, set))
     return NULL;
   while (!hwloc_bitmap_isincluded(obj->cpuset, set)) {
     /* while the object intersects without being included, look at its children */
@@ -265,6 +289,9 @@
 /** \brief Get the set of largest objects covering exactly a given cpuset \p set
  *
  * \return the number of objects returned in \p objs.
+ *
+ * \note This function cannot work if the root object does not have a CPU set,
+ * e.g. if the topology is made of different machines.
  */
 HWLOC_DECLSPEC int hwloc_get_largest_objs_inside_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set,
 						 hwloc_obj_t * __hwloc_restrict objs, int max);
@@ -274,13 +301,17 @@
  * If \p prev is \c NULL, return the first object at depth \p depth
  * included in \p set.  The next invokation should pass the previous
  * return value in \p prev so as to obtain the next object in \p set.
+ *
+ * \note This function cannot work if objects at the given depth do
+ * not have CPU sets or if the topology is made of different machines.
  */
 static __hwloc_inline hwloc_obj_t
 hwloc_get_next_obj_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set,
 					   unsigned depth, hwloc_obj_t prev)
 {
   hwloc_obj_t next = hwloc_get_next_obj_by_depth(topology, depth, prev);
-  /* no need to check next->cpuset because objects in levels always have a cpuset */
+  if (!next || !next->cpuset)
+    return NULL;
   while (next && !hwloc_bitmap_isincluded(next->cpuset, set))
     next = next->next_cousin;
   return next;
@@ -291,6 +322,9 @@
  * If there are multiple or no depth for given type, return \c NULL
  * and let the caller fallback to
  * hwloc_get_next_obj_inside_cpuset_by_depth().
+ *
+ * \note This function cannot work if objects of the given type do
+ * not have CPU sets or if the topology is made of different machines.
  */
 static __hwloc_inline hwloc_obj_t
 hwloc_get_next_obj_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set,
@@ -303,15 +337,22 @@
 }
 
 /** \brief Return the (logically) \p idx -th object at depth \p depth included in CPU set \p set.
+ *
+ * \note This function cannot work if objects at the given depth do
+ * not have CPU sets or if the topology is made of different machines.
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
 hwloc_get_obj_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set,
+				      unsigned depth, unsigned idx) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
+hwloc_get_obj_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set,
 				      unsigned depth, unsigned idx)
 {
+  hwloc_obj_t obj = hwloc_get_obj_by_depth (topology, depth, 0);
   unsigned count = 0;
-  hwloc_obj_t obj = hwloc_get_obj_by_depth (topology, depth, 0);
+  if (!obj || !obj->cpuset)
+    return NULL;
   while (obj) {
-    /* no need to check obj->cpuset because objects in levels always have a cpuset */
     if (hwloc_bitmap_isincluded(obj->cpuset, set)) {
       if (count == idx)
 	return obj;
@@ -327,9 +368,15 @@
  * If there are multiple or no depth for given type, return \c NULL
  * and let the caller fallback to
  * hwloc_get_obj_inside_cpuset_by_depth().
+ *
+ * \note This function cannot work if objects of the given type do
+ * not have CPU sets or if the topology is made of different machines.
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
 hwloc_get_obj_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set,
+				     hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
+hwloc_get_obj_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set,
 				     hwloc_obj_type_t type, unsigned idx)
 {
   int depth = hwloc_get_type_depth(topology, type);
@@ -338,15 +385,23 @@
   return hwloc_get_obj_inside_cpuset_by_depth(topology, set, depth, idx);
 }
 
-/** \brief Return the number of objects at depth \p depth included in CPU set \p set. */
-static __hwloc_inline unsigned __hwloc_attribute_pure
+/** \brief Return the number of objects at depth \p depth included in CPU set \p set.
+ *
+ * \note This function cannot work if objects at the given depth do
+ * not have CPU sets or if the topology is made of different machines.
+ */
+static __hwloc_inline unsigned
 hwloc_get_nbobjs_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set,
+					 unsigned depth) __hwloc_attribute_pure;
+static __hwloc_inline unsigned
+hwloc_get_nbobjs_inside_cpuset_by_depth (hwloc_topology_t topology, hwloc_const_cpuset_t set,
 					 unsigned depth)
 {
   hwloc_obj_t obj = hwloc_get_obj_by_depth (topology, depth, 0);
-  int count = 0;
+  unsigned count = 0;
+  if (!obj || !obj->cpuset)
+    return 0;
   while (obj) {
-    /* no need to check obj->cpuset because objects in levels always have a cpuset */
     if (hwloc_bitmap_isincluded(obj->cpuset, set))
       count++;
     obj = obj->next_cousin;
@@ -359,9 +414,15 @@
  * If no object for that type exists inside CPU set \p set, 0 is
  * returned.  If there are several levels with objects of that type
  * inside CPU set \p set, -1 is returned.
+ *
+ * \note This function cannot work if objects of the given type do
+ * not have CPU sets or if the topology is made of different machines.
  */
-static __hwloc_inline int __hwloc_attribute_pure
+static __hwloc_inline int
 hwloc_get_nbobjs_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set,
+					hwloc_obj_type_t type) __hwloc_attribute_pure;
+static __hwloc_inline int
+hwloc_get_nbobjs_inside_cpuset_by_type (hwloc_topology_t topology, hwloc_const_cpuset_t set,
 					hwloc_obj_type_t type)
 {
   int depth = hwloc_get_type_depth(topology, type);
@@ -372,6 +433,31 @@
   return hwloc_get_nbobjs_inside_cpuset_by_depth(topology, set, depth);
 }
 
+/** \brief Return the logical index among the objects included in CPU set \p set.
+ *
+ * Consult all objects in the same level as \p obj and inside CPU set \p set
+ * in the logical order, and return the index of \p obj within them.
+ * If \p set covers the entire topology, this is the logical index of \p obj.
+ * Otherwise, this is similar to a logical index within the part of the topology
+ * defined by CPU set \p set.
+ */
+static __hwloc_inline int
+hwloc_get_obj_index_inside_cpuset (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t set,
+				   hwloc_obj_t obj) __hwloc_attribute_pure;
+static __hwloc_inline int
+hwloc_get_obj_index_inside_cpuset (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t set,
+				   hwloc_obj_t obj)
+{
+  int index = 0;
+  if (!hwloc_bitmap_isincluded(obj->cpuset, set))
+    return -1;
+  /* count how many objects are inside the cpuset on the way from us to the beginning of the level */
+  while ((obj = obj->prev_cousin) != NULL)
+    if (hwloc_bitmap_isincluded(obj->cpuset, set))
+      index++;
+  return index;
+}
+
 /** @} */
 
 
@@ -383,16 +469,19 @@
 /** \brief Get the child covering at least CPU set \p set.
  *
  * \return \c NULL if no child matches or if \p set is empty.
+ *
+ * \note This function cannot work if parent does not have a CPU set.
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
 hwloc_get_child_covering_cpuset (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t set,
+				hwloc_obj_t parent) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
+hwloc_get_child_covering_cpuset (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_const_cpuset_t set,
 				hwloc_obj_t parent)
 {
   hwloc_obj_t child;
-
-  if (hwloc_bitmap_iszero(set))
+  if (!parent->cpuset || hwloc_bitmap_iszero(set))
     return NULL;
-
   child = parent->first_child;
   while (child) {
     if (child->cpuset && hwloc_bitmap_isincluded(set, child->cpuset))
@@ -405,19 +494,18 @@
 /** \brief Get the lowest object covering at least CPU set \p set
  *
  * \return \c NULL if no object matches or if \p set is empty.
+ *
+ * \note This function cannot work if the root object does not have a CPU set,
+ * e.g. if the topology is made of different machines.
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
+hwloc_get_obj_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
 hwloc_get_obj_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set)
 {
   struct hwloc_obj *current = hwloc_get_root_obj(topology);
-
-  if (hwloc_bitmap_iszero(set))
+  if (hwloc_bitmap_iszero(set) || !current->cpuset || !hwloc_bitmap_isincluded(set, current->cpuset))
     return NULL;
-
-  /* FIXME: what if !root->cpuset? */
-  if (!hwloc_bitmap_isincluded(set, current->cpuset))
-    return NULL;
-
   while (1) {
     hwloc_obj_t child = hwloc_get_child_covering_cpuset(topology, set, current);
     if (!child)
@@ -441,13 +529,17 @@
  * depth covering at least part of CPU set \p set.  The next
  * invokation should pass the previous return value in \p prev so as
  * to obtain the next object covering at least another part of \p set.
+ *
+ * \note This function cannot work if objects at the given depth do
+ * not have CPU sets or if the topology is made of different machines.
  */
 static __hwloc_inline hwloc_obj_t
 hwloc_get_next_obj_covering_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_cpuset_t set,
 					    unsigned depth, hwloc_obj_t prev)
 {
   hwloc_obj_t next = hwloc_get_next_obj_by_depth(topology, depth, prev);
-  /* no need to check next->cpuset because objects in levels always have a cpuset */
+  if (!next || !next->cpuset)
+    return NULL;
   while (next && !hwloc_bitmap_intersects(set, next->cpuset))
     next = next->next_cousin;
   return next;
@@ -464,6 +556,9 @@
  * If there are no or multiple depths for type \p type, \c NULL is returned.
  * The caller may fallback to hwloc_get_next_obj_covering_cpuset_by_depth()
  * for each depth.
+ *
+ * \note This function cannot work if objects of the given type do
+ * not have CPU sets or if the topology is made of different machines.
  */
 static __hwloc_inline hwloc_obj_t
 hwloc_get_next_obj_covering_cpuset_by_type(hwloc_topology_t topology, hwloc_const_cpuset_t set,
@@ -485,9 +580,14 @@
 
 /** \brief Get the first cache covering a cpuset \p set
  *
- * \return \c NULL if no cache matches
+ * \return \c NULL if no cache matches.
+ *
+ * \note This function cannot work if the root object does not have a CPU set,
+ * e.g. if the topology is made of different machines.
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
+hwloc_get_cache_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
 hwloc_get_cache_covering_cpuset (hwloc_topology_t topology, hwloc_const_cpuset_t set)
 {
   hwloc_obj_t current = hwloc_get_obj_covering_cpuset(topology, set);
@@ -503,7 +603,9 @@
  *
  * \return \c NULL if no cache matches or if an invalid object is given.
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
+hwloc_get_shared_cache_covering_obj (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
 hwloc_get_shared_cache_covering_obj (hwloc_topology_t topology __hwloc_attribute_unused, hwloc_obj_t obj)
 {
   hwloc_obj_t current = obj->parent;
@@ -539,6 +641,8 @@
  * \return the number of objects returned in \p objs.
  *
  * \return 0 if \p src is an I/O object.
+ *
+ * \note This function requires the \p src object to have a CPU set.
  */
 /* TODO: rather provide an iterator? Provide a way to know how much should be allocated? By returning the total number of objects instead? */
 HWLOC_DECLSPEC unsigned hwloc_get_closest_objs (hwloc_topology_t topology, hwloc_obj_t src, hwloc_obj_t * __hwloc_restrict objs, unsigned max);
@@ -552,18 +656,22 @@
  *
  * For instance, if type1 is SOCKET, idx1 is 2, type2 is CORE and idx2
  * is 3, return the fourth core object below the third socket.
+ *
+ * \note This function requires these objects to have a CPU set.
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
 hwloc_get_obj_below_by_type (hwloc_topology_t topology,
 			     hwloc_obj_type_t type1, unsigned idx1,
+			     hwloc_obj_type_t type2, unsigned idx2) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
+hwloc_get_obj_below_by_type (hwloc_topology_t topology,
+			     hwloc_obj_type_t type1, unsigned idx1,
 			     hwloc_obj_type_t type2, unsigned idx2)
 {
   hwloc_obj_t obj;
-
   obj = hwloc_get_obj_by_type (topology, type1, idx1);
-  if (!obj)
+  if (!obj || !obj->cpuset)
     return NULL;
-
   return hwloc_get_obj_inside_cpuset_by_type(topology, obj->cpuset, type2, idx2);
 }
 
@@ -581,20 +689,22 @@
  * For instance, if nr is 3, typev contains NODE, SOCKET and CORE,
  * and idxv contains 0, 1 and 2, return the third core object below
  * the second socket below the first NUMA node.
+ *
+ * \note This function requires all these objects and the root object
+ * to have a CPU set.
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
+hwloc_get_obj_below_array_by_type (hwloc_topology_t topology, int nr, hwloc_obj_type_t *typev, unsigned *idxv) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
 hwloc_get_obj_below_array_by_type (hwloc_topology_t topology, int nr, hwloc_obj_type_t *typev, unsigned *idxv)
 {
   hwloc_obj_t obj = hwloc_get_root_obj(topology);
   int i;
-
-  /* FIXME: what if !root->cpuset? */
   for(i=0; i<nr; i++) {
+    if (!obj || !obj->cpuset)
+      return NULL;
     obj = hwloc_get_obj_inside_cpuset_by_type(topology, obj->cpuset, typev[i], idxv[i]);
-    if (!obj)
-      return NULL;
   }
-
   return obj;
 }
 
@@ -618,6 +728,8 @@
  *
  * The caller may typically want to also call hwloc_bitmap_singlify()
  * before binding a thread so that it does not move at all.
+ *
+ * \note This function requires the \p root object to have a CPU set.
  */
 static __hwloc_inline void
 hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *root, unsigned n_roots, hwloc_cpuset_t *cpuset, unsigned n, unsigned until);
@@ -625,15 +737,12 @@
 hwloc_distribute(hwloc_topology_t topology, hwloc_obj_t root, hwloc_cpuset_t *cpuset, unsigned n, unsigned until)
 {
   unsigned i;
-
-  /* FIXME: what if !root->cpuset? */
   if (!root->arity || n == 1 || root->depth >= until) {
     /* Got to the bottom, we can't split any more, put everything there.  */
     for (i=0; i<n; i++)
       cpuset[i] = hwloc_bitmap_dup(root->cpuset);
     return;
   }
-
   hwloc_distributev(topology, root->children, root->arity, cpuset, n, until);
 }
 
@@ -641,6 +750,8 @@
  *
  * This is the same as hwloc_distribute, but takes an array of roots instead of
  * just one root.
+ *
+ * \note This function requires the \p roots objects to have a CPU set.
  */
 static __hwloc_inline void
 hwloc_distributev(hwloc_topology_t topology, hwloc_obj_t *roots, unsigned n_roots, hwloc_cpuset_t *cpuset, unsigned n, unsigned until)
@@ -719,7 +830,9 @@
  * \note The returned cpuset is not newly allocated and should thus not be
  * changed or freed; hwloc_cpuset_dup must be used to obtain a local copy.
  */
-static __hwloc_inline hwloc_const_cpuset_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_const_cpuset_t
+hwloc_topology_get_complete_cpuset(hwloc_topology_t topology) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_const_cpuset_t
 hwloc_topology_get_complete_cpuset(hwloc_topology_t topology)
 {
   return hwloc_get_root_obj(topology)->complete_cpuset;
@@ -735,7 +848,9 @@
  * \note The returned cpuset is not newly allocated and should thus not be
  * changed or freed; hwloc_cpuset_dup must be used to obtain a local copy.
  */
-static __hwloc_inline hwloc_const_cpuset_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_const_cpuset_t
+hwloc_topology_get_topology_cpuset(hwloc_topology_t topology) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_const_cpuset_t
 hwloc_topology_get_topology_cpuset(hwloc_topology_t topology)
 {
   return hwloc_get_root_obj(topology)->cpuset;
@@ -750,7 +865,9 @@
  * \note The returned cpuset is not newly allocated and should thus not be
  * changed or freed; hwloc_cpuset_dup must be used to obtain a local copy.
  */
-static __hwloc_inline hwloc_const_cpuset_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_const_cpuset_t
+hwloc_topology_get_online_cpuset(hwloc_topology_t topology) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_const_cpuset_t
 hwloc_topology_get_online_cpuset(hwloc_topology_t topology)
 {
   return hwloc_get_root_obj(topology)->online_cpuset;
@@ -765,7 +882,9 @@
  * \note The returned cpuset is not newly allocated and should thus not be
  * changed or freed, hwloc_cpuset_dup must be used to obtain a local copy.
  */
-static __hwloc_inline hwloc_const_cpuset_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_const_cpuset_t
+hwloc_topology_get_allowed_cpuset(hwloc_topology_t topology) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_const_cpuset_t
 hwloc_topology_get_allowed_cpuset(hwloc_topology_t topology)
 {
   return hwloc_get_root_obj(topology)->allowed_cpuset;
@@ -787,7 +906,9 @@
  * \note The returned nodeset is not newly allocated and should thus not be
  * changed or freed; hwloc_nodeset_dup must be used to obtain a local copy.
  */
-static __hwloc_inline hwloc_const_nodeset_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_const_nodeset_t
+hwloc_topology_get_complete_nodeset(hwloc_topology_t topology) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_const_nodeset_t
 hwloc_topology_get_complete_nodeset(hwloc_topology_t topology)
 {
   return hwloc_get_root_obj(topology)->complete_nodeset;
@@ -803,7 +924,9 @@
  * \note The returned nodeset is not newly allocated and should thus not be
  * changed or freed; hwloc_nodeset_dup must be used to obtain a local copy.
  */
-static __hwloc_inline hwloc_const_nodeset_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_const_nodeset_t
+hwloc_topology_get_topology_nodeset(hwloc_topology_t topology) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_const_nodeset_t
 hwloc_topology_get_topology_nodeset(hwloc_topology_t topology)
 {
   return hwloc_get_root_obj(topology)->nodeset;
@@ -818,7 +941,9 @@
  * \note The returned nodeset is not newly allocated and should thus not be
  * changed or freed, hwloc_nodeset_dup must be used to obtain a local copy.
  */
-static __hwloc_inline hwloc_const_nodeset_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_const_nodeset_t
+hwloc_topology_get_allowed_nodeset(hwloc_topology_t topology) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_const_nodeset_t
 hwloc_topology_get_allowed_nodeset(hwloc_topology_t topology)
 {
   return hwloc_get_root_obj(topology)->allowed_nodeset;
@@ -1018,7 +1143,7 @@
 /** \brief Get distances for the given depth and covering some objects
  *
  * Return a distance matrix that describes depth \p depth and covers at
- * least object \p obj and all its ancestors.
+ * least object \p obj and all its children.
  *
  * When looking for the distance between some objects, a common ancestor should
  * be passed in \p obj.
@@ -1102,7 +1227,7 @@
  * object. This regular object may then be used for binding because
  * its locality is the same as \p ioobj.
  */
-static __inline hwloc_obj_t
+static __hwloc_inline hwloc_obj_t
 hwloc_get_non_io_ancestor_obj(hwloc_topology_t topology __hwloc_attribute_unused,
 			      hwloc_obj_t ioobj)
 {
@@ -1117,7 +1242,7 @@
  *
  * \return the first PCI device if \p prev is \c NULL.
  */
-static __inline hwloc_obj_t
+static __hwloc_inline hwloc_obj_t
 hwloc_get_next_pcidev(hwloc_topology_t topology, hwloc_obj_t prev)
 {
   return hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_PCI_DEVICE, prev);
@@ -1126,7 +1251,7 @@
 /** \brief Find the PCI device object matching the PCI bus id
  * given domain, bus device and function PCI bus id.
  */
-static __inline hwloc_obj_t
+static __hwloc_inline hwloc_obj_t
 hwloc_get_pcidev_by_busid(hwloc_topology_t topology,
 			  unsigned domain, unsigned bus, unsigned dev, unsigned func)
 {
@@ -1144,7 +1269,7 @@
 /** \brief Find the PCI device object matching the PCI bus id
  * given as a string xxxx:yy:zz.t or yy:zz.t.
  */
-static __inline hwloc_obj_t
+static __hwloc_inline hwloc_obj_t
 hwloc_get_pcidev_by_busidstring(hwloc_topology_t topology, const char *busid)
 {
   unsigned domain = 0; /* default */
@@ -1163,7 +1288,7 @@
  *
  * \return the first OS device if \p prev is \c NULL.
  */
-static __inline hwloc_obj_t
+static __hwloc_inline hwloc_obj_t
 hwloc_get_next_osdev(hwloc_topology_t topology, hwloc_obj_t prev)
 {
   return hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_OS_DEVICE, prev);
@@ -1173,7 +1298,7 @@
  *
  * \return the first bridge if \p prev is \c NULL.
  */
-static __inline hwloc_obj_t
+static __hwloc_inline hwloc_obj_t
 hwloc_get_next_bridge(hwloc_topology_t topology, hwloc_obj_t prev)
 {
   return hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_BRIDGE, prev);
@@ -1181,7 +1306,7 @@
 
 /* \brief Checks whether a given bridge covers a given PCI bus.
  */
-static __inline int
+static __hwloc_inline int
 hwloc_bridge_covers_pcibus(hwloc_obj_t bridge,
 			   unsigned domain, unsigned bus)
 {
@@ -1197,7 +1322,7 @@
  * This is useful for finding the locality of a bus because
  * it is the hostbridge parent cpuset.
  */
-static __inline hwloc_obj_t
+static __hwloc_inline hwloc_obj_t
 hwloc_get_hostbridge_by_pcibus(hwloc_topology_t topology,
 			       unsigned domain, unsigned bus)
 {

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux-libnuma.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux-libnuma.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux-libnuma.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,7 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2010 INRIA.  All rights reserved.
- * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010, 2012 Université Bordeaux 1
  * See COPYING in top-level directory.
  */
 
@@ -10,6 +10,15 @@
  *
  * Applications that use both Linux libnuma and hwloc may want to
  * include this file so as to ease conversion between their respective types.
+ *
+ * This helper also offers a consistent behavior on non-NUMA machines
+ * or non-NUMA-aware kernels by assuming that the machines have a single
+ * NUMA node.
+ *
+ * \note The behavior of libnuma is undefined if the kernel is not NUMA-aware.
+ * (when CONFIG_NUMA is not set in the kernel configuration).
+ * This helper and libnuma may thus not be strictly compatible in this case,
+ * which may be detected by checking whether numa_available() returns -1.
  */
 
 #ifndef HWLOC_LINUX_LIBNUMA_H
@@ -133,15 +142,12 @@
   int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
 
   if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
-    hwloc_obj_t node;
-    unsigned i;
+    hwloc_obj_t node = NULL;
     hwloc_bitmap_zero(cpuset);
-    for(i=0; i<maxnode; i++)
-      if (mask[i/sizeof(*mask)/8] & (1UL << (i% (sizeof(*mask)*8)))) {
-	node = hwloc_get_obj_by_depth(topology, depth, i);
-	if (node)
-	  hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
-      }
+    while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
+      if (node->os_index < maxnode
+	  && (mask[node->os_index/sizeof(*mask)/8] & (1UL << (node->os_index % (sizeof(*mask)*8)))))
+	hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
   } else {
     /* if no numa, libnuma assumes we have a single node */
     if (mask[0] & 1)
@@ -169,15 +175,12 @@
   int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
 
   if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
-    hwloc_obj_t node;
-    unsigned i;
+    hwloc_obj_t node = NULL;
     hwloc_bitmap_zero(nodeset);
-    for(i=0; i<maxnode; i++)
-      if (mask[i/sizeof(*mask)/8] & (1UL << (i% (sizeof(*mask)*8)))) {
-	node = hwloc_get_obj_by_depth(topology, depth, i);
-	if (node)
-	  hwloc_bitmap_set(nodeset, node->os_index);
-      }
+    while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
+      if (node->os_index < maxnode
+	  && (mask[node->os_index/sizeof(*mask)/8] & (1UL << (node->os_index % (sizeof(*mask)*8)))))
+	hwloc_bitmap_set(nodeset, node->os_index);
   } else {
     /* if no numa, libnuma assumes we have a single node */
     if (mask[0] & 1)
@@ -207,7 +210,9 @@
  *
  * \return newly allocated struct bitmask.
  */
-static __hwloc_inline struct bitmask * __hwloc_attribute_malloc
+static __hwloc_inline struct bitmask *
+hwloc_cpuset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset) __hwloc_attribute_malloc;
+static __hwloc_inline struct bitmask *
 hwloc_cpuset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset)
 {
   int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
@@ -218,7 +223,8 @@
   if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
     hwloc_obj_t node = NULL;
     while ((node = hwloc_get_next_obj_covering_cpuset_by_type(topology, cpuset, HWLOC_OBJ_NODE, node)) != NULL)
-      numa_bitmask_setbit(bitmask, node->os_index);
+      if (node->memory.local_memory)
+	numa_bitmask_setbit(bitmask, node->os_index);
   } else {
     /* if no numa, libnuma assumes we have a single node */
     if (!hwloc_bitmap_iszero(cpuset))
@@ -237,7 +243,9 @@
  *
  * \return newly allocated struct bitmask.
  */
-static __hwloc_inline struct bitmask * __hwloc_attribute_malloc
+static __hwloc_inline struct bitmask *
+hwloc_nodeset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset) __hwloc_attribute_malloc;
+static __hwloc_inline struct bitmask *
 hwloc_nodeset_to_linux_libnuma_bitmask(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset)
 {
   int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
@@ -248,7 +256,7 @@
   if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
     hwloc_obj_t node = NULL;
     while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, node)) != NULL)
-      if (hwloc_bitmap_isset(nodeset, node->os_index))
+      if (hwloc_bitmap_isset(nodeset, node->os_index) && node->memory.local_memory)
 	numa_bitmask_setbit(bitmask, node->os_index);
   } else {
     /* if no numa, libnuma assumes we have a single node */
@@ -271,15 +279,11 @@
   int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
 
   if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
-    hwloc_obj_t node;
-    int i;
+    hwloc_obj_t node = NULL;
     hwloc_bitmap_zero(cpuset);
-    for(i=0; i<NUMA_NUM_NODES; i++)
-      if (numa_bitmask_isbitset(bitmask, i)) {
-	node = hwloc_get_obj_by_depth(topology, depth, i);
-	if (node)
-	  hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
-      }
+    while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
+      if (numa_bitmask_isbitset(bitmask, node->os_index))
+	hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
   } else {
     /* if no numa, libnuma assumes we have a single node */
     if (numa_bitmask_isbitset(bitmask, 0))
@@ -303,15 +307,11 @@
   int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
 
   if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
-    hwloc_obj_t node;
-    int i;
+    hwloc_obj_t node = NULL;
     hwloc_bitmap_zero(nodeset);
-    for(i=0; i<NUMA_NUM_NODES; i++)
-      if (numa_bitmask_isbitset(bitmask, i)) {
-	node = hwloc_get_obj_by_depth(topology, depth, i);
-	if (node)
-	  hwloc_bitmap_set(nodeset, node->os_index);
-      }
+    while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
+      if (numa_bitmask_isbitset(bitmask, node->os_index))
+	hwloc_bitmap_set(nodeset, node->os_index);
   } else {
     /* if no numa, libnuma assumes we have a single node */
     if (numa_bitmask_isbitset(bitmask, 0))
@@ -329,6 +329,12 @@
 
 #ifdef NUMA_VERSION1_COMPATIBILITY
 /** \defgroup hwlocality_linux_libnuma_nodemask Helpers for manipulating Linux libnuma nodemask_t
+ *
+ * \note The Linux libnuma nodemask_t interface is deprecated and
+ * its implementation is at least incorrect with respect to sparse
+ * NUMA node ids. It is strongly advised to use struct bitmask
+ * instead of nodemask_t, or even to use hwloc directly.
+ *
  * @{
  */
 
@@ -398,15 +404,11 @@
   int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
 
   if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
-    hwloc_obj_t node;
-    int i;
+    hwloc_obj_t node = NULL;
     hwloc_bitmap_zero(cpuset);
-    for(i=0; i<NUMA_NUM_NODES; i++)
-      if (nodemask_isset(nodemask, i)) {
-	node = hwloc_get_obj_by_depth(topology, depth, i);
-	if (node)
-	  hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
-      }
+    while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
+      if (nodemask_isset(nodemask, node->os_index))
+	hwloc_bitmap_or(cpuset, cpuset, node->cpuset);
   } else {
     /* if no numa, libnuma assumes we have a single node */
     if (nodemask_isset(nodemask, 0))
@@ -430,15 +432,11 @@
   int depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
 
   if (depth != HWLOC_TYPE_DEPTH_UNKNOWN) {
-    hwloc_obj_t node;
-    int i;
+    hwloc_obj_t node = NULL;
     hwloc_bitmap_zero(nodeset);
-    for(i=0; i<NUMA_NUM_NODES; i++)
-      if (nodemask_isset(nodemask, i)) {
-	node = hwloc_get_obj_by_depth(topology, depth, i);
-	if (node)
-	  hwloc_bitmap_set(nodeset, node->os_index);
-      }
+    while ((node = hwloc_get_next_obj_by_depth(topology, depth, node)) != NULL)
+      if (nodemask_isset(nodemask, node->os_index))
+	hwloc_bitmap_set(nodeset, node->os_index);
   } else {
     /* if no numa, libnuma assumes we have a single node */
     if (nodemask_isset(nodemask, 0))

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/linux.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2010 INRIA.  All rights reserved.
+ * Copyright © 2009-2010 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * See COPYING in top-level directory.
  */

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/myriexpress.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/myriexpress.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/myriexpress.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2010 INRIA.  All rights reserved.
+ * Copyright © 2010 inria.  All rights reserved.
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  */

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/openfabrics-verbs.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/openfabrics-verbs.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/openfabrics-verbs.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2010 INRIA.  All rights reserved.
+ * Copyright © 2009-2010 inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -61,6 +61,8 @@
     return -1;
 
   hwloc_linux_parse_cpumap_file(sysfile, set);
+  if (hwloc_bitmap_iszero(set))
+    hwloc_bitmap_copy(set, hwloc_topology_get_complete_cpuset(topology));
 
   fclose(sysfile);
 #else

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc/rename.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
- * Copyright © 2010-2011 INRIA.  All rights reserved.
+ * Copyright © 2010-2011 inria.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
@@ -118,6 +118,7 @@
 #define hwloc_topology_set_synthetic HWLOC_NAME(topology_set_synthetic)
 #define hwloc_topology_set_xml HWLOC_NAME(topology_set_xml)
 #define hwloc_topology_set_xmlbuffer HWLOC_NAME(topology_set_xmlbuffer)
+#define hwloc_topology_set_custom HWLOC_NAME(topology_set_custom)
 #define hwloc_topology_set_distance_matrix HWLOC_NAME(topology_set_distance_matrix)
 
 #define hwloc_topology_discovery_support HWLOC_NAME(topology_discovery_support)
@@ -132,6 +133,9 @@
 #define hwloc_topology_insert_misc_object_by_cpuset HWLOC_NAME(topology_insert_misc_object_by_cpuset)
 #define hwloc_topology_insert_misc_object_by_parent HWLOC_NAME(topology_insert_misc_object_by_parent)
 
+#define hwloc_custom_insert_topology HWLOC_NAME(custom_insert_topology)
+#define hwloc_custom_insert_group_object_by_parent HWLOC_NAME(custom_insert_group_object_by_parent)
+
 #define hwloc_restrict_flags_e HWLOC_NAME(restrict_flags_e)
 #define HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES HWLOC_NAME_CAPS(RESTRICT_FLAG_ADAPT_DISTANCES)
 #define HWLOC_RESTRICT_FLAG_ADAPT_MISC HWLOC_NAME_CAPS(RESTRICT_FLAG_ADAPT_MISC)
@@ -229,7 +233,6 @@
 
 /* hwloc/bitmap.h */
 
-#define hwloc_bitmap HWLOC_NAME(bitmap)
 #define hwloc_bitmap_s HWLOC_NAME(bitmap_s)
 #define hwloc_bitmap_t HWLOC_NAME(bitmap_t)
 #define hwloc_const_bitmap_t HWLOC_NAME(const_bitmap_t)
@@ -283,11 +286,6 @@
 
 /* hwloc/cpuset.h -- deprecated but still available */
 
-#define hwloc_cpuset HWLOC_NAME(cpuset)
-#define hwloc_cpuset_s HWLOC_NAME(cpuset_s)
-#define hwloc_cpuset_t HWLOC_NAME(cpuset_t)
-#define hwloc_const_cpuset_t HWLOC_NAME(const_cpuset_t)
-
 #define hwloc_cpuset_alloc HWLOC_NAME(cpuset_alloc)
 #define hwloc_cpuset_free HWLOC_NAME(cpuset_free)
 #define hwloc_cpuset_dup HWLOC_NAME(cpuset_dup)
@@ -419,11 +417,15 @@
 
 /* cuda.h */
 
+#define hwloc_cuda_get_device_pci_ids HWLOC_NAME(cuda_get_device_pci_ids)
 #define hwloc_cuda_get_device_cpuset HWLOC_NAME(cuda_get_device_cpuset)
+#define hwloc_cuda_get_device_pcidev HWLOC_NAME(cuda_get_device_pcidev)
 
 /* cudart.h */
 
+#define hwloc_cudart_get_device_pci_ids HWLOC_NAME(cudart_get_device_pci_ids)
 #define hwloc_cudart_get_device_cpuset HWLOC_NAME(cudart_get_device_cpuset)
+#define hwloc_cudart_get_device_pcidev HWLOC_NAME(cudart_get_device_pcidev)
 
 /* private/debug.h */
 
@@ -458,29 +460,31 @@
 
 #define HWLOC_BACKEND_NONE HWLOC_NAME_CAPS(BACKEND_NONE)
 #define HWLOC_BACKEND_SYNTHETIC HWLOC_NAME_CAPS(BACKEND_SYNTHETIC)
-#define HWLOC_BACKEND_SYSFS HWLOC_NAME_CAPS(BACKEND_SYSFS)
+#define HWLOC_BACKEND_LINUXFS HWLOC_NAME_CAPS(BACKEND_LINUXFS)
 #define HWLOC_BACKEND_XML HWLOC_NAME_CAPS(BACKEND_XML)
 #define HWLOC_BACKEND_MAX HWLOC_NAME_CAPS(BACKEND_MAX)
 
 #define hwloc_backend_params_u HWLOC_NAME(backend_params_u)
-#define hwloc_backend_params_sysfs_s HWLOC_NAME(backend_params_sysfs_s)
+#define hwloc_backend_params_linuxfs_s HWLOC_NAME(backend_params_linuxfs_s)
 #define hwloc_backend_params_osf HWLOC_NAME(backend_params_osf)
 #define hwloc_backend_params_xml_s HWLOC_NAME(backend_params_xml_s)
 #define hwloc_backend_params_synthetic_s HWLOC_NAME(backend_params_synthetic_s)
 
+#define hwloc_xml_imported_distances_s HWLOC_NAME(xml_imported_distances_s)
+
 #define hwloc_setup_pu_level HWLOC_NAME(setup_pu_level)
-#define hwloc_setup_misc_level_from_distances HWLOC_NAME(setup_misc_level_from_distances)
 #define hwloc_get_sysctlbyname HWLOC_NAME(get_sysctlbyname)
 #define hwloc_get_sysctl HWLOC_NAME(get_sysctl)
 #define hwloc_fallback_nbprocessors HWLOC_NAME(fallback_nbprocessors)
+#define hwloc_connect_children HWLOC_NAME(connect_children)
+#define hwloc_connect_levels HWLOC_NAME(connect_levels)
 
-#define hwloc_look_linux HWLOC_NAME(look_linux)
-#define hwloc_set_linux_hooks HWLOC_NAME(set_linux_hooks)
-#define hwloc_backend_sysfs_init HWLOC_NAME(backend_sysfs_init)
-#define hwloc_backend_sysfs_exit HWLOC_NAME(backend_sysfs_exit)
+#define hwloc_look_linuxfs HWLOC_NAME(look_linuxfs)
+#define hwloc_set_linuxfs_hooks HWLOC_NAME(set_linuxfs_hooks)
+#define hwloc_backend_linuxfs_init HWLOC_NAME(backend_linuxfs_init)
+#define hwloc_backend_linuxfs_exit HWLOC_NAME(backend_linuxfs_exit)
 
 #define hwloc_backend_xml_init HWLOC_NAME(backend_xml_init)
-#define hwloc_xml_check_distances HWLOC_NAME(xml_check_distances)
 #define hwloc_look_xml HWLOC_NAME(look_xml)
 #define hwloc_backend_xml_exit HWLOC_NAME(backend_xml_exit)
 
@@ -520,7 +524,6 @@
 #define hwloc__insert_object_by_cpuset HWLOC_NAME(_insert_object_by_cpuset)
 #define hwloc_insert_object_by_parent HWLOC_NAME(insert_object_by_parent)
 #define hwloc_add_uname_info HWLOC_NAME(add_uname_info)
-#define hwloc_free_object HWLOC_NAME(free_object)
 #define hwloc_bitmap_printf_value HWLOC_NAME(bitmap_printf_value)
 #define hwloc_alloc_setup_object HWLOC_NAME(alloc_setup_object)
 #define hwloc_free_unlinked_object HWLOC_NAME(free_unlinked_object)
@@ -532,15 +535,17 @@
 #define hwloc_free_mmap HWLOC_NAME(free_mmap)
 #define hwloc_alloc_or_fail HWLOC_NAME(alloc_or_fail)
 
-#define hwloc_topology_distances_init HWLOC_NAME(topology_distances_init)
-#define hwloc_topology_distances_clear HWLOC_NAME(topology_distances_clear)
-#define hwloc_topology_distances_destroy HWLOC_NAME(topology_distances_destroy)
-#define hwloc_topology__set_distance_matrix HWLOC_NAME(topology__set_distance_matrix)
-#define hwloc_store_distances_from_env HWLOC_NAME(store_distances_from_env)
-#define hwloc_convert_distances_indexes_into_objects HWLOC_NAME(convert_distances_indexes_into_objects)
-#define hwloc_finalize_logical_distances HWLOC_NAME(finalize_logical_distances)
-#define hwloc_restrict_distances HWLOC_NAME(restrict_distances)
-#define hwloc_free_logical_distances HWLOC_NAME(free_logical_distances)
+#define hwloc_distances_init HWLOC_NAME(distances_init)
+#define hwloc_distances_clear HWLOC_NAME(distances_clear)
+#define hwloc_distances_destroy HWLOC_NAME(distances_destroy)
+#define hwloc_distances_set HWLOC_NAME(distances_set)
+#define hwloc_distances_set_from_env HWLOC_NAME(distances_set_from_env)
+#define hwloc_distances_restrict_os HWLOC_NAME(distances_restrict_os)
+#define hwloc_distances_restrict HWLOC_NAME(distances_restrict)
+#define hwloc_distances_finalize_os HWLOC_NAME(distances_finalize_os)
+#define hwloc_distances_finalize_logical HWLOC_NAME(distances_finalize_logical)
+#define hwloc_clear_object_distances HWLOC_NAME(clear_object_distances)
+#define hwloc_clear_object_distances_one HWLOC_NAME(clear_object_distances_one)
 #define hwloc_group_by_distances HWLOC_NAME(group_by_distances)
 
 #endif /* HWLOC_SYM_TRANSFORM */

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/hwloc.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,7 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
- * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  */
@@ -75,7 +75,7 @@
  */
 
 /** \brief Indicate at build time which hwloc API version is being used. */
-#define HWLOC_API_VERSION 0x00010300
+#define HWLOC_API_VERSION 0x00010400
 
 /** \brief Indicate at runtime which hwloc API version was used at build time. */
 HWLOC_DECLSPEC unsigned hwloc_get_api_version(void);
@@ -338,7 +338,11 @@
 					 * may be \c NULL if no attribute value was found */
 
   /* global position */
-  unsigned depth;			/**< \brief Vertical index in the hierarchy */
+  unsigned depth;			/**< \brief Vertical index in the hierarchy.
+					 * If the topology is symmetric, this is equal to the
+					 * parent depth plus one, and also equal to the number
+					 * of parent/child links from the root object to here.
+					 */
   unsigned logical_index;		/**< \brief Horizontal index in the whole list of similar objects,
 					 * could be a "cousin_rank" since it's the rank within the "cousin" list below */
   signed os_level;			/**< \brief OS-provided physical level, -1 if unknown or meaningless */
@@ -455,6 +459,10 @@
 
   struct hwloc_obj_info_s *infos;	/**< \brief Array of stringified info type=name. */
   unsigned infos_count;			/**< \brief Size of infos array. */
+
+  int symmetric_subtree;		/**< \brief Set if the subtree of objects below this object is symmetric,
+					  * which means all children and their children have identical subtrees.
+					  */
 };
 /**
  * \brief Convenience typedef; a pointer to a struct hwloc_obj.
@@ -717,6 +725,22 @@
  */
 HWLOC_DECLSPEC int hwloc_topology_set_flags (hwloc_topology_t topology, unsigned long flags);
 
+/** \brief Change which pid the topology is viewed from
+ *
+ * On some systems, processes may have different views of the machine, for
+ * instance the set of allowed CPUs. By default, hwloc exposes the view from
+ * the current process. Calling hwloc_topology_set_pid() permits to make it
+ * expose the topology of the machine from the point of view of another
+ * process.
+ *
+ * \note \p hwloc_pid_t is \p pid_t on Unix platforms,
+ * and \p HANDLE on native Windows platforms.
+ *
+ * \note -1 is returned and errno is set to ENOSYS on platforms that do not
+ * support this feature.
+ */
+HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid);
+
 /** \brief Change the file-system root path when building the topology from sysfs/procfs.
  *
  * On Linux system, use sysfs and procfs files as if they were mounted on the given
@@ -730,28 +754,19 @@
  * still need to invoke hwloc_topology_load() to actually load the
  * topology information.
  *
+ * \return -1 with errno set to ENOSYS on non-Linux and on Linux systems that
+ * do not support it.
+ * \return -1 with the appropriate errno if \p fsroot_path cannot be used.
+ *
  * \note For convenience, this backend provides empty binding hooks which just
  * return success.  To have hwloc still actually call OS-specific hooks, the
  * HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM has to be set to assert that the loaded
  * file is really the underlying system.
+ *
+ * \note The existing topology is cleared even on failure.
  */
 HWLOC_DECLSPEC int hwloc_topology_set_fsroot(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict fsroot_path);
 
-/** \brief Change which pid the topology is viewed from
- *
- * On some systems, processes may have different views of the machine, for
- * instance the set of allowed CPUs. By default, hwloc exposes the view from
- * the current process. Calling hwloc_topology_set_pid() permits to make it
- * expose the topology of the machine from the point of view of another
- * process.
- *
- * \note hwloc_pid_t is pid_t on unix platforms, and HANDLE on native Windows
- * platforms
- * \note -1 is returned and errno is set to ENOSYS on platforms that do not
- * support this feature.
- */
-HWLOC_DECLSPEC int hwloc_topology_set_pid(hwloc_topology_t __hwloc_restrict topology, hwloc_pid_t pid);
-
 /** \brief Enable synthetic topology.
  *
  * Gather topology information from the given \p description,
@@ -773,6 +788,8 @@
  *
  * \note For convenience, this backend provides empty binding hooks which just
  * return success.
+ *
+ * \note The existing topology is cleared even on failure.
  */
 HWLOC_DECLSPEC int hwloc_topology_set_synthetic(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict description);
 
@@ -780,17 +797,22 @@
  *
  * Gather topology information from the XML file given at \p xmlpath.
  * Setting the environment variable HWLOC_XMLFILE may also result in this behavior.
- * This file may have been generated earlier with lstopo file.xml.
+ * This file may have been generated earlier with hwloc_topology_export_xml()
+ * or lstopo file.xml.
  *
  * Note that this function does not actually load topology
  * information; it just tells hwloc where to load it from.  You'll
  * still need to invoke hwloc_topology_load() to actually load the
  * topology information.
  *
+ * \return -1 with errno set to EINVAL on failure to read the XML file.
+ *
  * \note For convenience, this backend provides empty binding hooks which just
  * return success.  To have hwloc still actually call OS-specific hooks, the
  * HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM has to be set to assert that the loaded
  * file is really the underlying system.
+ *
+ * \note The existing topology is cleared even on failure.
  */
 HWLOC_DECLSPEC int hwloc_topology_set_xml(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict xmlpath);
 
@@ -806,9 +828,28 @@
  * still need to invoke hwloc_topology_load() to actually load the
  * topology information.
  *
+ * \return -1 with errno set to EINVAL on failure to read the XML buffer.
+ *
+ * \note For convenience, this backend provides empty binding hooks which just
+ * return success.  To have hwloc still actually call OS-specific hooks, the
+ * HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM has to be set to assert that the loaded
+ * file is really the underlying system.
+ *
+ * \note The existing topology is cleared even on failure.
  */
 HWLOC_DECLSPEC int hwloc_topology_set_xmlbuffer(hwloc_topology_t __hwloc_restrict topology, const char * __hwloc_restrict buffer, int size);
 
+/** \brief Prepare the topology for custom assembly.
+ *
+ * The topology then contains a single root object.
+ * It may then be built by inserting other topologies with
+ * hwloc_custom_insert_topology() or single objects with
+ * hwloc_custom_insert_group_object_by_parent().
+ * hwloc_topology_load() must be called to finalize the new
+ * topology as usual.
+ */
+HWLOC_DECLSPEC int hwloc_topology_set_custom(hwloc_topology_t topology);
+
 /** \brief Provide a distance matrix.
  *
  * Provide the matrix of distances between a set of objects of the given type.
@@ -823,6 +864,8 @@
  * it will be replaced by the given one.
  * If \p nbobjs is \c 0, \p os_index is \c NULL and \p distances is \c NULL,
  * the existing distance matrix for the given type is removed.
+ *
+ * \note Distance matrices are ignored in multi-node topologies.
  */
 HWLOC_DECLSPEC int hwloc_topology_set_distance_matrix(hwloc_topology_t __hwloc_restrict topology,
 						      hwloc_obj_type_t type, unsigned nbobjs,
@@ -1063,7 +1106,9 @@
  * If no object for that type exists, 0 is returned.
  * If there are several levels with objects of that type, -1 is returned.
  */
-static __hwloc_inline int __hwloc_attribute_pure
+static __hwloc_inline int
+hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type) __hwloc_attribute_pure;
+static __hwloc_inline int
 hwloc_get_nbobjs_by_type (hwloc_topology_t topology, hwloc_obj_type_t type)
 {
 	int depth = hwloc_get_type_depth(topology, type);
@@ -1105,7 +1150,9 @@
  * If there are several levels with objects of that type, \c NULL is returned
  * and ther caller may fallback to hwloc_get_obj_by_depth().
  */
-static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+static __hwloc_inline hwloc_obj_t
+hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx) __hwloc_attribute_pure;
+static __hwloc_inline hwloc_obj_t
 hwloc_get_obj_by_type (hwloc_topology_t topology, hwloc_obj_type_t type, unsigned idx)
 {
   int depth = hwloc_get_type_depth(topology, type);
@@ -1199,7 +1246,9 @@
  *
  * \return \c NULL if no such key exists.
  */
-static __hwloc_inline char * __hwloc_attribute_pure
+static __hwloc_inline const char *
+hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name) __hwloc_attribute_pure;
+static __hwloc_inline const char *
 hwloc_obj_get_info_by_name(hwloc_obj_t obj, const char *name)
 {
   unsigned i;
@@ -1331,7 +1380,7 @@
                                    */
 } hwloc_cpubind_flags_t;
 
-/** \brief Bind current process or thread on cpus given in bitmap \p set.
+/** \brief Bind current process or thread on cpus given in physical bitmap \p set.
  *
  * \return -1 with errno set to ENOSYS if the action is not supported
  * \return -1 with errno set to EXDEV if the binding cannot be enforced
@@ -1340,24 +1389,24 @@
 
 /** \brief Get current process or thread binding.
  *
- * Writes into \p set the cpuset which the process or thread (according to \e
+ * Writes into \p set the physical cpuset which the process or thread (according to \e
  * flags) was last bound to.
  */
 HWLOC_DECLSPEC int hwloc_get_cpubind(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
 
-/** \brief Bind a process \p pid on cpus given in bitmap \p set.
+/** \brief Bind a process \p pid on cpus given in physical bitmap \p set.
  *
- * \note hwloc_pid_t is pid_t on unix platforms, and HANDLE on native Windows
- * platforms
+ * \note \p hwloc_pid_t is \p pid_t on Unix platforms,
+ * and \p HANDLE on native Windows platforms.
  *
  * \note HWLOC_CPUBIND_THREAD can not be used in \p flags.
  */
 HWLOC_DECLSPEC int hwloc_set_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t set, int flags);
 
-/** \brief Get the current binding of process \p pid.
+/** \brief Get the current physical binding of process \p pid.
  *
- * \note hwloc_pid_t is pid_t on unix platforms, and HANDLE on native Windows
- * platforms
+ * \note \p hwloc_pid_t is \p pid_t on Unix platforms,
+ * and \p HANDLE on native Windows platforms.
  *
  * \note HWLOC_CPUBIND_THREAD can not be used in \p flags.
  *
@@ -1368,10 +1417,10 @@
 HWLOC_DECLSPEC int hwloc_get_proc_cpubind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t set, int flags);
 
 #ifdef hwloc_thread_t
-/** \brief Bind a thread \p thread on cpus given in bitmap \p set.
+/** \brief Bind a thread \p thread on cpus given in physical bitmap \p set.
  *
- * \note hwloc_thread_t is pthread_t on unix platforms, and HANDLE on native
- * Windows platforms
+ * \note \p hwloc_thread_t is \p pthread_t on Unix platforms,
+ * and \p HANDLE on native Windows platforms.
  *
  * \note HWLOC_CPUBIND_PROCESS can not be used in \p flags.
  */
@@ -1379,17 +1428,17 @@
 #endif
 
 #ifdef hwloc_thread_t
-/** \brief Get the current binding of thread \p tid.
+/** \brief Get the current physical binding of thread \p tid.
  *
- * \note hwloc_thread_t is pthread_t on unix platforms, and HANDLE on native
- * Windows platforms
+ * \note \p hwloc_thread_t is \p pthread_t on Unix platforms,
+ * and \p HANDLE on native Windows platforms.
  *
  * \note HWLOC_CPUBIND_PROCESS can not be used in \p flags.
  */
-HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t tid, hwloc_cpuset_t set, int flags);
+HWLOC_DECLSPEC int hwloc_get_thread_cpubind(hwloc_topology_t topology, hwloc_thread_t thread, hwloc_cpuset_t set, int flags);
 #endif
 
-/** \brief Get the last CPU where the current process or thread ran.
+/** \brief Get the last physical CPU where the current process or thread ran.
  *
  * The operating system may move some tasks from one processor
  * to another at any time according to their binding,
@@ -1398,13 +1447,16 @@
  */
 HWLOC_DECLSPEC int hwloc_get_last_cpu_location(hwloc_topology_t topology, hwloc_cpuset_t set, int flags);
 
-/** \brief Get the last CPU where a process ran.
+/** \brief Get the last physical CPU where a process ran.
  *
  * The operating system may move some tasks from one processor
  * to another at any time according to their binding,
  * so this function may return something that is already
  * outdated.
  *
+ * \note \p hwloc_pid_t is \p pid_t on Unix platforms,
+ * and \p HANDLE on native Windows platforms.
+ *
  * \note HWLOC_CPUBIND_THREAD can not be used in \p flags.
  *
  * \note As a special case on Linux, if a tid (thread ID) is supplied
@@ -1612,7 +1664,7 @@
 } hwloc_membind_flags_t;
 
 /** \brief Set the default memory binding policy of the current
- * process or thread to prefer the NUMA node(s) specified by \p nodeset
+ * process or thread to prefer the NUMA node(s) specified by physical \p nodeset
  *
  * If neither HWLOC_MEMBIND_PROCESS nor HWLOC_MEMBIND_THREAD is
  * specified, the current process is assumed to be single-threaded.
@@ -1626,7 +1678,7 @@
 HWLOC_DECLSPEC int hwloc_set_membind_nodeset(hwloc_topology_t topology, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
 
 /** \brief Set the default memory binding policy of the current
- * process or thread to prefer the NUMA node(s) near the specified \p
+ * process or thread to prefer the NUMA node(s) near the specified physical \p
  * cpuset
  *
  * If neither HWLOC_MEMBIND_PROCESS nor HWLOC_MEMBIND_THREAD is
@@ -1640,7 +1692,7 @@
  */
 HWLOC_DECLSPEC int hwloc_set_membind(hwloc_topology_t topology, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags);
 
-/** \brief Query the default memory binding policy and locality of the
+/** \brief Query the default memory binding policy and physical locality of the
  * current process or thread.
  *
  * This function has two output parameters: \p nodeset and \p policy.
@@ -1682,7 +1734,7 @@
  */
 HWLOC_DECLSPEC int hwloc_get_membind_nodeset(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
 
-/** \brief Query the default memory binding policy and locality of the
+/** \brief Query the default memory binding policy and physical locality of the
  * current process or thread (the locality is returned in \p cpuset as
  * CPUs near the locality's actual NUMA node(s)).
  *
@@ -1730,22 +1782,28 @@
 HWLOC_DECLSPEC int hwloc_get_membind(hwloc_topology_t topology, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags);
 
 /** \brief Set the default memory binding policy of the specified
- * process to prefer the NUMA node(s) specified by \p nodeset
+ * process to prefer the NUMA node(s) specified by physical \p nodeset
  *
  * \return -1 with errno set to ENOSYS if the action is not supported
  * \return -1 with errno set to EXDEV if the binding cannot be enforced
+ *
+ * \note \p hwloc_pid_t is \p pid_t on Unix platforms,
+ * and \p HANDLE on native Windows platforms.
  */
 HWLOC_DECLSPEC int hwloc_set_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
 
 /** \brief Set the default memory binding policy of the specified
- * process to prefer the NUMA node(s) near the specified \p cpuset
+ * process to prefer the NUMA node(s) near the specified physical \p cpuset
  *
  * \return -1 with errno set to ENOSYS if the action is not supported
  * \return -1 with errno set to EXDEV if the binding cannot be enforced
+ *
+ * \note \p hwloc_pid_t is \p pid_t on Unix platforms,
+ * and \p HANDLE on native Windows platforms.
  */
 HWLOC_DECLSPEC int hwloc_set_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags);
 
-/** \brief Query the default memory binding policy and locality of the
+/** \brief Query the default memory binding policy and physical locality of the
  * specified process.
  *
  * This function has two output parameters: \p nodeset and \p policy.
@@ -1777,10 +1835,13 @@
  *
  * If any other flags are specified, -1 is returned and errno is set
  * to EINVAL.
+ *
+ * \note \p hwloc_pid_t is \p pid_t on Unix platforms,
+ * and \p HANDLE on native Windows platforms.
  */
 HWLOC_DECLSPEC int hwloc_get_proc_membind_nodeset(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
 
-/** \brief Query the default memory binding policy and locality of the
+/** \brief Query the default memory binding policy and physical locality of the
  * specified process (the locality is returned in \p cpuset as CPUs
  * near the locality's actual NUMA node(s)).
  *
@@ -1815,11 +1876,14 @@
  *
  * If any other flags are specified, -1 is returned and errno is set
  * to EINVAL.
+ *
+ * \note \p hwloc_pid_t is \p pid_t on Unix platforms,
+ * and \p HANDLE on native Windows platforms.
  */
 HWLOC_DECLSPEC int hwloc_get_proc_membind(hwloc_topology_t topology, hwloc_pid_t pid, hwloc_cpuset_t cpuset, hwloc_membind_policy_t * policy, int flags);
 
 /** \brief Bind the already-allocated memory identified by (addr, len)
- * to the NUMA node(s) in \p nodeset.
+ * to the NUMA node(s) in physical \p nodeset.
  *
  * \return -1 with errno set to ENOSYS if the action is not supported
  * \return -1 with errno set to EXDEV if the binding cannot be enforced
@@ -1827,14 +1891,14 @@
 HWLOC_DECLSPEC int hwloc_set_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags);
 
 /** \brief Bind the already-allocated memory identified by (addr, len)
- * to the NUMA node(s) near \p cpuset.
+ * to the NUMA node(s) near physical \p cpuset.
  *
  * \return -1 with errno set to ENOSYS if the action is not supported
  * \return -1 with errno set to EXDEV if the binding cannot be enforced
  */
 HWLOC_DECLSPEC int hwloc_set_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_const_cpuset_t cpuset, hwloc_membind_policy_t policy, int flags);
 
-/** \brief Query the NUMA node(s) and binding policy of the memory
+/** \brief Query the physical NUMA node(s) and binding policy of the memory
  * identified by (\p addr, \p len ).
  *
  * This function has two output parameters: \p nodeset and \p policy.
@@ -1858,7 +1922,7 @@
  */
 HWLOC_DECLSPEC int hwloc_get_area_membind_nodeset(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t * policy, int flags);
 
-/** \brief Query the CPUs near the NUMA node(s) and binding policy of
+/** \brief Query the CPUs near the physical NUMA node(s) and binding policy of
  * the memory identified by (\p addr, \p len ).
  *
  * This function has two output parameters: \p cpuset and \p policy.
@@ -1893,7 +1957,7 @@
  */
 HWLOC_DECLSPEC void *hwloc_alloc(hwloc_topology_t topology, size_t len);
 
-/** \brief Allocate some memory on the given nodeset \p nodeset
+/** \brief Allocate some memory on the given physical nodeset \p nodeset
  *
  * \return -1 with errno set to ENOSYS if the action is not supported
  * and HWLOC_MEMBIND_STRICT is given
@@ -1904,7 +1968,7 @@
  */
 HWLOC_DECLSPEC void *hwloc_alloc_membind_nodeset(hwloc_topology_t topology, size_t len, hwloc_const_nodeset_t nodeset, hwloc_membind_policy_t policy, int flags) __hwloc_attribute_malloc;
 
-/** \brief Allocate some memory on memory nodes near the given cpuset \p cpuset
+/** \brief Allocate some memory on memory nodes near the given physical cpuset \p cpuset
  *
  * \return -1 with errno set to ENOSYS if the action is not supported
  * and HWLOC_MEMBIND_STRICT is given
@@ -1924,6 +1988,56 @@
 
 
 
+/** \defgroup hwlocality_custom Building Custom Topologies
+ *
+ * A custom topology may be initialized by calling hwloc_topology_set_custom()
+ * after hwloc_topology_init(). It may then be modified by inserting objects
+ * or entire topologies. Once done assembling, hwloc_topology_load() should
+ * be invoked as usual to finalize the topology.
+ * @{
+ */
+
+/** \brief Insert an existing topology inside a custom topology
+ *
+ * Duplicate the existing topology \p oldtopology inside a new
+ * custom topology \p newtopology as a leaf of object \p newparent.
+ *
+ * If \p oldroot is not \c NULL, duplicate \p oldroot and all its
+ * children instead of the entire \p oldtopology. Passing the root
+ * object of \p oldtopology in \p oldroot is equivalent to passing
+ * \c NULL.
+ *
+ * The custom topology \p newtopology must have been prepared with
+ * hwloc_topology_set_custom() and not loaded with hwloc_topology_load()
+ * yet.
+ *
+ * \p newparent may be either the root of \p newtopology or an object
+ * that was added through hwloc_custom_insert_group_object_by_parent().
+ */
+HWLOC_DECLSPEC int hwloc_custom_insert_topology(hwloc_topology_t newtopology, hwloc_obj_t newparent, hwloc_topology_t oldtopology, hwloc_obj_t oldroot);
+
+/** \brief Insert a new group object inside a custom topology
+ *
+ * An object with type ::HWLOC_OBJ_GROUP is inserted as a new child
+ * of object \p parent.
+ *
+ * \p groupdepth is the depth attribute to be given to the new object.
+ * It may for instance be 0 for top-level groups, 1 for their children,
+ * and so on.
+ *
+ * The custom topology \p newtopology must have been prepared with
+ * hwloc_topology_set_custom() and not loaded with hwloc_topology_load()
+ * yet.
+ *
+ * \p parent may be either the root of \p topology or an object that
+ * was added earlier through hwloc_custom_insert_group_object_by_parent().
+ */
+HWLOC_DECLSPEC hwloc_obj_t hwloc_custom_insert_group_object_by_parent(hwloc_topology_t topology, hwloc_obj_t parent, int groupdepth);
+
+/** @} */
+
+
+
 #ifdef __cplusplus
 } /* extern "C" */
 #endif

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/cpuid.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2010-2011 Université Bordeaux 1
+ * Copyright © 2010-2012 Université Bordeaux 1
  * Copyright © 2010 Cisco Systems, Inc.  All rights reserved.
  *
  * See COPYING in top-level directory.
@@ -51,22 +51,24 @@
 
 static __hwloc_inline void hwloc_cpuid(unsigned *eax, unsigned *ebx, unsigned *ecx, unsigned *edx)
 {
+#ifdef HWLOC_X86_64_ARCH
+  unsigned long sav_ebx;
+#endif
   asm(
-#ifdef HWLOC_X86_32_ARCH 
+#ifdef HWLOC_X86_32_ARCH
   "push %%ebx\n\t"
+#else
+  "mov %%rbx,%2\n\t"
 #endif
   "cpuid\n\t"
-#ifdef HWLOC_X86_32_ARCH 
+#ifdef HWLOC_X86_32_ARCH
   "mov %%ebx,%1\n\t"
   "pop %%ebx\n\t"
-#endif
-  : "+a" (*eax),
-#ifdef HWLOC_X86_32_ARCH 
-    "=r" (*ebx),
 #else
-    "=b" (*ebx),
+  "mov %%ebx,%1\n\t"
+  "mov %2,%%rbx\n\t"
 #endif
-    "+c" (*ecx), "=d" (*edx));
+  : "+a" (*eax), "=r" (*ebx), "=r"(sav_ebx), "+c" (*ecx), "=d" (*edx));
 }
 
 #endif /* HWLOC_PRIVATE_CPUID_H */

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/debug.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/debug.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/debug.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2010 INRIA.  All rights reserved.
+ * Copyright © 2009-2010 inria.  All rights reserved.
  * Copyright © 2009, 2011 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/misc.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/misc.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/misc.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,7 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2010 INRIA.  All rights reserved.
- * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  */
@@ -46,8 +46,15 @@
  * ffsl helpers.
  */
 
-#ifdef __GNUC__
+#if defined(HWLOC_HAVE_BROKEN_FFS)
 
+/* System has a broken ffs().
+ * We must check the before __GNUC__ or HWLOC_HAVE_FFSL
+ */
+#    define HWLOC_NO_FFS
+
+#elif defined(__GNUC__)
+
 #  if (__GNUC__ >= 4) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))
      /* Starting from 3.4, gcc has a long variant.  */
 #    define hwloc_ffsl(x) __builtin_ffsl(x)
@@ -75,7 +82,16 @@
 
 #else /* no ffs implementation */
 
-static __hwloc_inline int __hwloc_attribute_const
+#    define HWLOC_NO_FFS
+
+#endif
+
+#ifdef HWLOC_NO_FFS
+
+/* no ffs or it is known to be broken */
+static __hwloc_inline int
+hwloc_ffsl(unsigned long x) __hwloc_attribute_const;
+static __hwloc_inline int
 hwloc_ffsl(unsigned long x)
 {
 	int i;
@@ -114,14 +130,14 @@
 	return i;
 }
 
-#endif
+#elif defined(HWLOC_NEED_FFSL)
 
-#ifdef HWLOC_NEED_FFSL
-
 /* We only have an int ffs(int) implementation, build a long one.  */
 
 /* First make it 32 bits if it was only 16.  */
-static __hwloc_inline int __hwloc_attribute_const
+static __hwloc_inline int
+hwloc_ffs32(unsigned long x) __hwloc_attribute_const;
+static __hwloc_inline int
 hwloc_ffs32(unsigned long x)
 {
 #if HWLOC_BITS_PER_INT == 16
@@ -142,7 +158,9 @@
 }
 
 /* Then make it 64 bit if longs are.  */
-static __hwloc_inline int __hwloc_attribute_const
+static __hwloc_inline int
+hwloc_ffsl(unsigned long x) __hwloc_attribute_const;
+static __hwloc_inline int
 hwloc_ffsl(unsigned long x)
 {
 #if HWLOC_BITS_PER_LONG == 64
@@ -211,7 +229,9 @@
 
 #else /* no fls implementation */
 
-static __hwloc_inline int __hwloc_attribute_const
+static __hwloc_inline int
+hwloc_flsl(unsigned long x) __hwloc_attribute_const;
+static __hwloc_inline int
 hwloc_flsl(unsigned long x)
 {
 	int i = 0;
@@ -257,7 +277,9 @@
 /* We only have an int fls(int) implementation, build a long one.  */
 
 /* First make it 32 bits if it was only 16.  */
-static __hwloc_inline int __hwloc_attribute_const
+static __hwloc_inline int
+hwloc_fls32(unsigned long x) __hwloc_attribute_const;
+static __hwloc_inline int
 hwloc_fls32(unsigned long x)
 {
 #if HWLOC_BITS_PER_INT == 16
@@ -278,7 +300,9 @@
 }
 
 /* Then make it 64 bit if longs are.  */
-static __hwloc_inline int __hwloc_attribute_const
+static __hwloc_inline int
+hwloc_flsl(unsigned long x) __hwloc_attribute_const;
+static __hwloc_inline int
 hwloc_flsl(unsigned long x)
 {
 #if HWLOC_BITS_PER_LONG == 64
@@ -299,7 +323,9 @@
 }
 #endif
 
-static __hwloc_inline int __hwloc_attribute_const
+static __hwloc_inline int
+hwloc_weight_long(unsigned long w) __hwloc_attribute_const;
+static __hwloc_inline int
 hwloc_weight_long(unsigned long w)
 {
 #if HWLOC_BITS_PER_LONG == 32

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/private.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/private.h	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/private.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,7 @@
 /*
  * Copyright © 2009      CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
- * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  *
  * See COPYING in top-level directory.
@@ -20,7 +20,9 @@
 #ifdef HAVE_STDINT_H
 #include <stdint.h>
 #endif
-
+#ifdef HAVE_SYS_UTSNAME_H
+#include <sys/utsname.h>
+#endif
 #include <string.h>
 
 #ifdef HWLOC_HAVE_ATTRIBUTE_FORMAT
@@ -45,9 +47,10 @@
   HWLOC_BACKEND_NONE,
   HWLOC_BACKEND_SYNTHETIC,
 #ifdef HWLOC_LINUX_SYS
-  HWLOC_BACKEND_SYSFS,
+  HWLOC_BACKEND_LINUXFS,
 #endif
   HWLOC_BACKEND_XML,
+  HWLOC_BACKEND_CUSTOM,
   /* This value is only here so that we can end the enum list without
      a comma (thereby preventing compiler warnings) */
   HWLOC_BACKEND_MAX
@@ -108,6 +111,7 @@
   struct hwloc_topology_support support;
 
   struct hwloc_os_distances_s {
+    hwloc_obj_type_t type;
     int nbobjs;
     unsigned *indexes; /* array of OS indexes before we can convert them into objs. always available.
 			*/
@@ -120,16 +124,19 @@
 		       * will be copied into the main logical-index-ordered distance at the end of the discovery.
 		       */
     int forced; /* set if the user forced a matrix to ignore the OS one */
-  } os_distances[HWLOC_OBJ_TYPE_MAX];
 
+    struct hwloc_os_distances_s *prev, *next;
+  } *first_osdist, *last_osdist;
+
   hwloc_backend_t backend_type;
   union hwloc_backend_params_u {
 #ifdef HWLOC_LINUX_SYS
-    struct hwloc_backend_params_sysfs_s {
-      /* sysfs backend parameters */
+    struct hwloc_backend_params_linuxfs_s {
+      /* FS root parameters */
       char *root_path; /* The path of the file system root, used when browsing, e.g., Linux' sysfs and procfs. */
       int root_fd; /* The file descriptor for the file system root, used when browsing, e.g., Linux' sysfs and procfs. */
-    } sysfs;
+      struct utsname utsname; /* cached result of uname, used multiple times */
+    } linuxfs;
 #endif /* HWLOC_LINUX_SYS */
 #if defined(HWLOC_OSF_SYS) || defined(HWLOC_COMPILE_PORTS)
     struct hwloc_backend_params_osf {
@@ -142,9 +149,15 @@
       void *doc;
 #endif /* HWLOC_HAVE_LIBXML2 */
       char *buffer; /* only used when not using libxml2 */
+      struct hwloc_xml_imported_distances_s {
+	hwloc_obj_t root;
+	struct hwloc_distances_s distances;
+	struct hwloc_xml_imported_distances_s *prev, *next;
+      } *first_distances, *last_distances;
     } xml;
     struct hwloc_backend_params_synthetic_s {
       /* synthetic backend parameters */
+      char *string;
 #define HWLOC_SYNTHETIC_MAX_DEPTH 128
       unsigned arity[HWLOC_SYNTHETIC_MAX_DEPTH];
       hwloc_obj_type_t type[HWLOC_SYNTHETIC_MAX_DEPTH];
@@ -159,16 +172,18 @@
 extern int hwloc_get_sysctlbyname(const char *name, int64_t *n);
 extern int hwloc_get_sysctl(int name[], unsigned namelen, int *n);
 extern unsigned hwloc_fallback_nbprocessors(struct hwloc_topology *topology);
+extern void hwloc_connect_children(hwloc_obj_t obj);
+extern int hwloc_connect_levels(hwloc_topology_t topology);
 
+
 #if defined(HWLOC_LINUX_SYS)
-extern void hwloc_look_linux(struct hwloc_topology *topology);
-extern void hwloc_set_linux_hooks(struct hwloc_topology *topology);
-extern int hwloc_backend_sysfs_init(struct hwloc_topology *topology, const char *fsroot_path);
-extern void hwloc_backend_sysfs_exit(struct hwloc_topology *topology);
+extern void hwloc_look_linuxfs(struct hwloc_topology *topology);
+extern void hwloc_set_linuxfs_hooks(struct hwloc_topology *topology);
+extern int hwloc_backend_linuxfs_init(struct hwloc_topology *topology, const char *fsroot_path);
+extern void hwloc_backend_linuxfs_exit(struct hwloc_topology *topology);
 #endif /* HWLOC_LINUX_SYS */
 
 extern int hwloc_backend_xml_init(struct hwloc_topology *topology, const char *xmlpath, const char *xmlbuffer, int buflen);
-extern void hwloc_xml_check_distances(struct hwloc_topology *topology);
 extern int hwloc_look_xml(struct hwloc_topology *topology);
 extern void hwloc_backend_xml_exit(struct hwloc_topology *topology);
 
@@ -260,6 +275,7 @@
 /* Insert uname-specific names/values in the object infos array */
 extern void hwloc_add_uname_info(struct hwloc_topology *topology);
 
+#ifdef HWLOC_INSIDE_LIBHWLOC
 /** \brief Return a locally-allocated stringified bitmap for printf-like calls. */
 static __hwloc_inline char *
 hwloc_bitmap_printf_value(hwloc_const_bitmap_t bitmap)
@@ -317,6 +333,7 @@
     }
   hwloc_debug("%s", "\n");
 }
+#endif
 
 /* This can be used for the alloc field to get allocated data that can be freed by free() */
 void *hwloc_alloc_heap(hwloc_topology_t topology, size_t len);
@@ -340,15 +357,17 @@
   return hwloc_alloc(topology, len);
 }
 
-extern void hwloc_topology_distances_init(struct hwloc_topology *topology);
-extern void hwloc_topology_distances_clear(struct hwloc_topology *topology);
-extern void hwloc_topology_distances_destroy(struct hwloc_topology *topology);
-extern void hwloc_topology__set_distance_matrix(struct hwloc_topology *topology, hwloc_obj_type_t type, unsigned nbobjs, unsigned *indexes, hwloc_obj_t *objs, float *distances, int force);
-extern void hwloc_store_distances_from_env(struct hwloc_topology *topology);
-extern void hwloc_convert_distances_indexes_into_objects(struct hwloc_topology *topology);
-extern void hwloc_finalize_logical_distances(struct hwloc_topology *topology);
-extern void hwloc_restrict_distances(struct hwloc_topology *topology, unsigned long flags);
-extern void hwloc_free_logical_distances(struct hwloc_distances_s *dist);
+extern void hwloc_distances_init(struct hwloc_topology *topology);
+extern void hwloc_distances_clear(struct hwloc_topology *topology);
+extern void hwloc_distances_destroy(struct hwloc_topology *topology);
+extern void hwloc_distances_set(struct hwloc_topology *topology, hwloc_obj_type_t type, unsigned nbobjs, unsigned *indexes, hwloc_obj_t *objs, float *distances, int force);
+extern void hwloc_distances_set_from_env(struct hwloc_topology *topology);
+extern void hwloc_distances_restrict_os(struct hwloc_topology *topology);
+extern void hwloc_distances_restrict(struct hwloc_topology *topology, unsigned long flags);
+extern void hwloc_distances_finalize_os(struct hwloc_topology *topology);
+extern void hwloc_distances_finalize_logical(struct hwloc_topology *topology);
+extern void hwloc_clear_object_distances(struct hwloc_obj *obj);
+extern void hwloc_clear_object_distances_one(struct hwloc_distances_s *distances);
 extern void hwloc_group_by_distances(struct hwloc_topology *topology);
 
 #endif /* HWLOC_PRIVATE_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/solaris-chiptype.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/solaris-chiptype.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/include/private/solaris-chiptype.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates.  All rights reserved. 
+ *
+ * $COPYRIGHT$
+ * 
+ * Additional copyrights may follow
+ * 
+ * $HEADER$
+ */
+
+/* SPARC Chip Modes. */
+#define MODE_UNKNOWN            0
+#define MODE_SPITFIRE           1
+#define MODE_BLACKBIRD          2
+#define MODE_CHEETAH            3
+#define MODE_SPARC64_VI         4
+#define MODE_T1                 5
+#define MODE_T2                 6
+#define MODE_SPARC64_VII        7
+#define MODE_ROCK               8
+
+/* SPARC Chip Implementations. */
+#define IMPL_SPARC64_VI         0x6
+#define IMPL_SPARC64_VII        0x7
+#define IMPL_SPITFIRE           0x10
+#define IMPL_BLACKBIRD          0x11
+#define IMPL_SABRE              0x12
+#define IMPL_HUMMINGBIRD        0x13
+#define IMPL_CHEETAH            0x14
+#define IMPL_CHEETAHPLUS        0x15
+#define IMPL_JALAPENO           0x16
+#define IMPL_JAGUAR             0x18
+#define IMPL_PANTHER            0x19
+#define IMPL_NIAGARA            0x23
+#define IMPL_NIAGARA_2          0x24
+#define IMPL_ROCK               0x25
+
+/* Default Mfg, Cache, Speed settings */
+#define TI_MANUFACTURER         0x17
+#define TWO_MEG_CACHE           2097152
+#define SPITFIRE_SPEED          142943750
+
+char* hwloc_solaris_get_chip_type(void);
+char* hwloc_solaris_get_chip_model(void);
+
+

Deleted: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/m4/decl.m4
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/m4/decl.m4	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/m4/decl.m4	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,31 +0,0 @@
-dnl -*- Autoconf -*-
-dnl Copyright © 2009 CNRS
-dnl Copyright © 2009 INRIA.  All rights reserved.
-dnl Copyright © 2009 Université Bordeaux 1
-dnl See COPYING in top-level directory.
-
-dnl HWLOC_CHECK_DECL
-dnl
-dnl Check declaration of given function by trying to call it with an insane
-dnl number of arguments (10). Success means the compiler couldn't really check.
-AC_DEFUN([HWLOC_CHECK_DECL], [
-  AC_MSG_CHECKING([whether function $1 is declared])
-  AC_REQUIRE([AC_PROG_CC])
-  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$4])],[$1(1,2,3,4,5,6,7,8,9,10);])],
-    ac_res=no
-    $3,
-    ac_res=yes
-    $2
-  )
-  AC_MSG_RESULT([$ac_res])
-])
-
-dnl HWLOC_CHECK_DECLS
-dnl
-dnl Same as HWLOCK_CHECK_DECL, but defines HAVE_DECL_foo to 1 or 0 depending on
-dnl the result.
-AC_DEFUN([HWLOC_CHECK_DECLS], [
-  HWLOC_CHECK_DECL([$1], [ac_have_decl=1], [ac_have_decl=0], [$4])
-  AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_DECL_$1]), [$ac_have_decl],
-    [Define to 1 if you have the declaration of `$1', and to 0 if you don't])
-])

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,10 +1,11 @@
-# Copyright © 2009-2010 INRIA.  All rights reserved.
-# Copyright © 2009-2010 Université Bordeaux 1
+# Copyright © 2009-2010 inria.  All rights reserved.
+# Copyright © 2009-2010, 2012 Université Bordeaux 1
 # Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+# Copyright © 2011      Oracle and/or its affiliates.  All rights reserved.
 # See COPYING in top-level directory.
 
 AM_CFLAGS = $(HWLOC_CFLAGS)
-AM_CPPFLAGS = $(HWLOC_CPPFLAGS)
+AM_CPPFLAGS = $(HWLOC_CPPFLAGS) -DHWLOC_INSIDE_LIBHWLOC
 AM_LDFLAGS = $(HWLOC_LDFLAGS)
 
 EXTRA_DIST = dolib.c
@@ -39,6 +40,8 @@
 
 if HWLOC_HAVE_SOLARIS
 sources += topology-solaris.c
+sources += topology-solaris-chiptype.c
+ldflags += -lpicl
 endif HWLOC_HAVE_SOLARIS
 
 if HWLOC_HAVE_LINUX
@@ -83,32 +86,31 @@
 
 if HWLOC_HAVE_MS_LIB
 .libs/libhwloc.lib: libhwloc.la dolib
-	./dolib "$(HWLOC_MS_LIB)" X86 .libs/libhwloc.def libhwloc-$(HWLOC_SOVERSION) .libs/libhwloc.lib
+	[ ! -r .libs/libhwloc.def ] || ./dolib "$(HWLOC_MS_LIB)" $(HWLOC_MS_LIB_ARCH) .libs/libhwloc.def $(libhwloc_so_version) .libs/libhwloc.lib
 all-local: .libs/libhwloc.lib
 endif HWLOC_HAVE_MS_LIB
 
 install-exec-hook:
-	$(INSTALL) .libs/libhwloc.def $(DESTDIR)$(libdir)
+	[ ! -r .libs/libhwloc.def ] || $(INSTALL) .libs/libhwloc.def $(DESTDIR)$(libdir)
 if HWLOC_HAVE_MS_LIB
-	$(INSTALL) .libs/libhwloc.lib $(DESTDIR)$(libdir)
-	$(INSTALL) .libs/libhwloc.exp $(DESTDIR)$(libdir)
+	[ ! -r .libs/libhwloc.def ] || $(INSTALL) .libs/libhwloc.lib $(DESTDIR)$(libdir)
+	[ ! -r .libs/libhwloc.def ] || $(INSTALL) .libs/libhwloc.exp $(DESTDIR)$(libdir)
 endif HWLOC_HAVE_MS_LIB
 endif HWLOC_HAVE_WINDOWS
 
-if HWLOC_HAVE_CPUID
 sources += topology-x86.c
-endif HWLOC_HAVE_CPUID
 
 # Installable library
 
 libhwloc_la_SOURCES = $(sources)
-libhwloc_la_LDFLAGS = $(ldflags) -version-number $(libhwloc_so_version) $(HWLOC_LIBXML2_LIBS) $(HWLOC_LINUX_LIBNUMA_LIBS) $(HWLOC_PCI_LIBS)
+libhwloc_la_LDFLAGS = $(ldflags) -version-info $(libhwloc_so_version) $(HWLOC_LIBS)
 
 # Embedded library (note the lack of a .so version number -- that
-# intentionally only appears in the installable library)
+# intentionally only appears in the installable library).  Also note
+# the lack of _LDFLAGS -- all libs are added by the upper layer (via
+# HWLOC_EMBEDDED_LIBS).
 
 libhwloc_embedded_la_SOURCES = $(sources)
-libhwloc_embedded_la_LDFLAGS = $(ldflags) $(HWLOC_LIBXML2_LIBS) $(HWLOC_LINUX_LIBNUMA_LIBS)
 
 # XML data (only install if we're building in standalone mode)
 

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/bind.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/bind.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/bind.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/cpuset.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/cpuset.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/distances.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
- * Copyright © 2010-2011 INRIA.  All rights reserved.
- * Copyright © 2011 Université Bordeaux 1
+ * Copyright © 2010-2011 inria.  All rights reserved.
+ * Copyright © 2011-2012 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  */
@@ -13,76 +13,113 @@
 #include <float.h>
 #include <math.h>
 
+/**************************
+ * Main Init/Clear/Destroy
+ */
+
 /* called during topology init */
-void hwloc_topology_distances_init(struct hwloc_topology *topology)
+void hwloc_distances_init(struct hwloc_topology *topology)
 {
-  unsigned i;
-  for (i = HWLOC_OBJ_SYSTEM; i < HWLOC_OBJ_TYPE_MAX; i++) {
-    /* no distances yet */
-    topology->os_distances[i].nbobjs = 0;
-    topology->os_distances[i].objs = NULL;
-    topology->os_distances[i].indexes = NULL;
-    topology->os_distances[i].distances = NULL;
-    topology->os_distances[i].forced = 0;
-  }
+  topology->first_osdist = topology->last_osdist = NULL;
 }
 
 /* called when reloading a topology.
  * keep initial parameters (from set_distances and environment),
  * but drop what was generated during previous load().
  */
-void hwloc_topology_distances_clear(struct hwloc_topology *topology)
+void hwloc_distances_clear(struct hwloc_topology *topology)
 {
-  unsigned i;
-  for (i = HWLOC_OBJ_SYSTEM; i < HWLOC_OBJ_TYPE_MAX; i++) {
+  struct hwloc_os_distances_s * osdist;
+  for(osdist = topology->first_osdist; osdist; osdist = osdist->next) {
     /* remove final distance matrices, but keep physically-ordered ones */
-    free(topology->os_distances[i].objs);
-    topology->os_distances[i].objs = NULL;
+    free(osdist->objs);
+    osdist->objs = NULL;
   }
 }
 
 /* called during topology destroy */
-void hwloc_topology_distances_destroy(struct hwloc_topology *topology)
+void hwloc_distances_destroy(struct hwloc_topology * topology)
 {
-  unsigned i;
-  for (i = HWLOC_OBJ_SYSTEM; i < HWLOC_OBJ_TYPE_MAX; i++) {
+  struct hwloc_os_distances_s *osdist, *next = topology->first_osdist;
+  while ((osdist = next) != NULL) {
+    next = osdist->next;
     /* remove final distance matrics AND physically-ordered ones */
-    free(topology->os_distances[i].indexes);
-    topology->os_distances[i].indexes = NULL;
-    free(topology->os_distances[i].objs);
-    topology->os_distances[i].objs = NULL;
-    free(topology->os_distances[i].distances);
-    topology->os_distances[i].distances = NULL;
+    free(osdist->indexes);
+    free(osdist->objs);
+    free(osdist->distances);
+    free(osdist);
   }
+  topology->first_osdist = topology->last_osdist = NULL;
 }
 
+/******************************************************
+ * Inserting distances in the topology
+ * from a backend, from the environment or by the user
+ */
+
 /* insert a distance matrix in the topology.
  * the caller gives us those pointers, we take care of freeing them later and so on.
  */
-void hwloc_topology__set_distance_matrix(hwloc_topology_t __hwloc_restrict topology, hwloc_obj_type_t type,
-					 unsigned nbobjs, unsigned *indexes, hwloc_obj_t *objs, float *distances,
-					 int force)
+void hwloc_distances_set(hwloc_topology_t __hwloc_restrict topology, hwloc_obj_type_t type,
+			 unsigned nbobjs, unsigned *indexes, hwloc_obj_t *objs, float *distances,
+			 int force)
 {
-  if (topology->os_distances[type].forced && !force) {
-    free(indexes);
-    free(objs);
-    free(distances);
-    return;
+  struct hwloc_os_distances_s *osdist, *next = topology->first_osdist;
+  /* look for existing distances for the same type */
+  while ((osdist = next) != NULL) {
+    next = osdist->next;
+    if (osdist->type == type) {
+      if (osdist->forced && !force) {
+	/* there is a forced distance element, ignore the new non-forced one */
+	free(indexes);
+	free(objs);
+	free(distances);
+	return;
+      } else if (force) {
+	/* we're forcing a new distance, remove the old ones */
+	free(osdist->indexes);
+	free(osdist->objs);
+	free(osdist->distances);
+	/* remove current object */
+	if (osdist->prev)
+	  osdist->prev->next = next;
+	else
+	  topology->first_osdist = next;
+	if (next)
+	  next->prev = osdist->prev;
+	else
+	  topology->last_osdist = osdist->prev;
+	/* free current object */
+	free(osdist);
+      }
+    }
   }
 
-  free(topology->os_distances[type].indexes);
-  free(topology->os_distances[type].objs);
-  free(topology->os_distances[type].distances);
-  topology->os_distances[type].nbobjs = nbobjs;
-  topology->os_distances[type].indexes = indexes;
-  topology->os_distances[type].objs = objs;
-  topology->os_distances[type].distances = distances;
-  topology->os_distances[type].forced = force;
+  if (!nbobjs)
+    /* we're just clearing, return now */
+    return;
+
+  /* create the new element */
+  osdist = malloc(sizeof(struct hwloc_os_distances_s));
+  osdist->nbobjs = nbobjs;
+  osdist->indexes = indexes;
+  osdist->objs = objs;
+  osdist->distances = distances;
+  osdist->forced = force;
+  osdist->type = type;
+  /* insert it */
+  osdist->next = NULL;
+  osdist->prev = topology->last_osdist;
+  if (topology->last_osdist)
+    topology->last_osdist->next = osdist;
+  else
+    topology->first_osdist = osdist;
+  topology->last_osdist = osdist;
 }
 
 /* make sure a user-given distance matrix is sane */
-static int hwloc_topology__check_distance_matrix(hwloc_topology_t __hwloc_restrict topology __hwloc_attribute_unused, hwloc_obj_type_t type __hwloc_attribute_unused,
-						 unsigned nbobjs, unsigned *indexes, hwloc_obj_t *objs __hwloc_attribute_unused, float *distances __hwloc_attribute_unused)
+static int hwloc_distances__check_matrix(hwloc_topology_t __hwloc_restrict topology __hwloc_attribute_unused, hwloc_obj_type_t type __hwloc_attribute_unused,
+					 unsigned nbobjs, unsigned *indexes, hwloc_obj_t *objs __hwloc_attribute_unused, float *distances __hwloc_attribute_unused)
 {
   unsigned i,j;
   /* make sure we don't have the same index twice */
@@ -95,24 +132,9 @@
   return 0;
 }
 
-static hwloc_obj_t hwloc_find_obj_by_type_and_os_index(hwloc_obj_t root, hwloc_obj_type_t type, unsigned os_index)
+static void hwloc_distances__set_from_string(struct hwloc_topology *topology,
+					     hwloc_obj_type_t type, char *string)
 {
-  hwloc_obj_t child;
-  if (root->type == type && root->os_index == os_index)
-    return root;
-  child = root->first_child;
-  while (child) {
-    hwloc_obj_t found = hwloc_find_obj_by_type_and_os_index(child, type, os_index);
-    if (found)
-      return found;
-    child = child->next_sibling;
-  }
-  return NULL;
-}
-
-static void hwloc_get_type_distances_from_string(struct hwloc_topology *topology,
-						 hwloc_obj_type_t type, char *string)
-{
   /* the string format is: "index[0],...,index[N-1]:distance[0],...,distance[N*N-1]"
    * or "index[0],...,index[N-1]:X*Y" or "index[0],...,index[N-1]:X*Y*Z"
    */
@@ -122,40 +144,58 @@
   unsigned nbobjs = 0, i, j, x, y, z;
 
   if (!strcmp(string, "none")) {
-    hwloc_topology__set_distance_matrix(topology, type, 0, NULL, NULL, NULL, 1 /* force */);
+    hwloc_distances_set(topology, type, 0, NULL, NULL, NULL, 1 /* force */);
     return;
   }
 
-  /* count indexes */
-  while (1) {
-    size_t size = strspn(tmp, "0123456789");
-    if (tmp[size] != ',') {
-      /* last element */
-      tmp += size;
+  if (sscanf(string, "%u-%u:", &i, &j) == 2) {
+    /* range i-j */
+    nbobjs = j-i+1;
+    indexes = calloc(nbobjs, sizeof(unsigned));
+    distances = calloc(nbobjs*nbobjs, sizeof(float));
+    /* make sure the user didn't give a veeeeery large range */
+    if (!indexes || !distances) {
+      free(indexes);
+      free(distances);
+      return;
+    }
+    for(j=0; j<nbobjs; j++)
+      indexes[j] = j+i;
+    tmp = strchr(string, ':') + 1;
+
+  } else {
+    /* explicit list of indexes, count them */
+    while (1) {
+      size_t size = strspn(tmp, "0123456789");
+      if (tmp[size] != ',') {
+	/* last element */
+	tmp += size;
+	nbobjs++;
+	break;
+      }
+      /* another index */
+      tmp += size+1;
       nbobjs++;
-      break;
     }
-    /* another index */
-    tmp += size+1;
-    nbobjs++;
-  }
 
-  if (*tmp != ':') {
-    fprintf(stderr, "Ignoring %s distances from environment variable, missing colon\n",
-	    hwloc_obj_type_string(type));
-    return;
+    if (*tmp != ':') {
+      fprintf(stderr, "Ignoring %s distances from environment variable, missing colon\n",
+	      hwloc_obj_type_string(type));
+      return;
+    }
+
+    indexes = calloc(nbobjs, sizeof(unsigned));
+    distances = calloc(nbobjs*nbobjs, sizeof(float));
+    tmp = string;
+    
+    /* parse indexes */
+    for(i=0; i<nbobjs; i++) {
+      indexes[i] = strtoul(tmp, &next, 0);
+      tmp = next+1;
+    }
   }
 
-  indexes = calloc(nbobjs, sizeof(unsigned));
-  distances = calloc(nbobjs*nbobjs, sizeof(float));
-  tmp = string;
 
-  /* parse indexes */
-  for(i=0; i<nbobjs; i++) {
-    indexes[i] = strtoul(tmp, &next, 0);
-    tmp = next+1;
-  }
-
   /* parse distances */
   z=1; /* default if sscanf finds only 2 values below */
   if (sscanf(tmp, "%u*%u*%u", &x, &y, &z) >= 2) {
@@ -195,20 +235,20 @@
     }
   }
 
-  if (hwloc_topology__check_distance_matrix(topology, type, nbobjs, indexes, NULL, distances) < 0) {
+  if (hwloc_distances__check_matrix(topology, type, nbobjs, indexes, NULL, distances) < 0) {
     fprintf(stderr, "Ignoring invalid %s distances from environment variable\n", hwloc_obj_type_string(type));
     free(indexes);
     free(distances);
     return;
   }
 
-  hwloc_topology__set_distance_matrix(topology, type, nbobjs, indexes, NULL, distances, 1 /* force */);
+  hwloc_distances_set(topology, type, nbobjs, indexes, NULL, distances, 1 /* force */);
 }
 
 /* take distances in the environment, store them as is in the topology.
  * we'll convert them into object later once the tree is filled
  */
-void hwloc_store_distances_from_env(struct hwloc_topology *topology)
+void hwloc_distances_set_from_env(struct hwloc_topology *topology)
 {
   hwloc_obj_type_t type;
   for(type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) {
@@ -216,11 +256,13 @@
     snprintf(envname, sizeof(envname), "HWLOC_%s_DISTANCES", hwloc_obj_type_string(type));
     env = getenv(envname);
     if (env)
-      hwloc_get_type_distances_from_string(topology, type, env);
+      hwloc_distances__set_from_string(topology, type, env);
   }
 }
 
-/* take the given distance, store them as is in the topology.
+/* The actual set() function exported to the user
+ *
+ * take the given distance, store them as is in the topology.
  * we'll convert them into object later once the tree is filled.
  */
 int hwloc_topology_set_distance_matrix(hwloc_topology_t __hwloc_restrict topology, hwloc_obj_type_t type,
@@ -230,14 +272,14 @@
   float *_distances;
 
   if (!nbobjs && !indexes && !distances) {
-    hwloc_topology__set_distance_matrix(topology, type, 0, NULL, NULL, NULL, 1 /* force */);
+    hwloc_distances_set(topology, type, 0, NULL, NULL, NULL, 1 /* force */);
     return 0;
   }
 
   if (!nbobjs || !indexes || !distances)
     return -1;
 
-  if (hwloc_topology__check_distance_matrix(topology, type, nbobjs, indexes, NULL, distances) < 0)
+  if (hwloc_distances__check_matrix(topology, type, nbobjs, indexes, NULL, distances) < 0)
     return -1;
 
   /* copy the input arrays and give them to the topology */
@@ -245,127 +287,262 @@
   memcpy(_indexes, indexes, nbobjs*sizeof(unsigned));
   _distances = malloc(nbobjs*nbobjs*sizeof(float));
   memcpy(_distances, distances, nbobjs*nbobjs*sizeof(float));
-  hwloc_topology__set_distance_matrix(topology, type, nbobjs, _indexes, NULL, _distances, 1 /* force */);
+  hwloc_distances_set(topology, type, nbobjs, _indexes, NULL, _distances, 1 /* force */);
 
   return 0;
 }
 
+/************************
+ * Restricting distances
+ */
+
+/* called when some objects have been removed because empty/ignored/cgroup/restrict,
+ * we must rebuild the list of objects from indexes (in hwloc_distances_finalize_os())
+ */
+void hwloc_distances_restrict_os(struct hwloc_topology *topology)
+{
+  struct hwloc_os_distances_s * osdist;
+  for(osdist = topology->first_osdist; osdist; osdist = osdist->next) {
+    /* remove the objs array, we'll rebuild it from the indexes
+     * depending on remaining objects */
+    free(osdist->objs);
+    osdist->objs = NULL;
+  }
+}
+
+
 /* cleanup everything we created from distances so that we may rebuild them
  * at the end of restrict()
  */
-void hwloc_restrict_distances(struct hwloc_topology *topology, unsigned long flags)
+void hwloc_distances_restrict(struct hwloc_topology *topology, unsigned long flags)
 {
-  hwloc_obj_type_t type;
-  for(type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) {
-    /* remove the objs array, we'll rebuild it from the indexes
-     * depending on remaining objects */
-    free(topology->os_distances[type].objs);
-    topology->os_distances[type].objs = NULL;
+  if (flags & HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES) {
+    /* some objects may have been removed, clear objects arrays so that finalize_os rebuilds them properly */
+    hwloc_distances_restrict_os(topology);
+  } else {
     /* if not adapting distances, drop everything */
-    if (!(flags & HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES)) {
-      free(topology->os_distances[type].indexes);
-      topology->os_distances[type].indexes = NULL;
-      free(topology->os_distances[type].distances);
-      topology->os_distances[type].distances = NULL;
-      topology->os_distances[type].nbobjs = 0;
-    }
+    hwloc_distances_destroy(topology);
   }
 }
 
+/**************************************************************
+ * Convert user/env given array of indexes into actual objects
+ */
+
+static hwloc_obj_t hwloc_find_obj_by_type_and_os_index(hwloc_obj_t root, hwloc_obj_type_t type, unsigned os_index)
+{
+  hwloc_obj_t child;
+  if (root->type == type && root->os_index == os_index)
+    return root;
+  child = root->first_child;
+  while (child) {
+    hwloc_obj_t found = hwloc_find_obj_by_type_and_os_index(child, type, os_index);
+    if (found)
+      return found;
+    child = child->next_sibling;
+  }
+  return NULL;
+}
+
 /* convert distance indexes that were previously stored in the topology
  * into actual objects if not done already.
- * it's already done when distances come from backends.
+ * it's already done when distances come from backends (this function should not be called then).
  * it's not done when distances come from the user.
+ *
+ * returns -1 if the matrix was invalid
  */
-void hwloc_convert_distances_indexes_into_objects(struct hwloc_topology *topology)
+static int
+hwloc_distances__finalize_os(struct hwloc_topology *topology, struct hwloc_os_distances_s *osdist)
 {
-  hwloc_obj_type_t type;
-  for(type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) {
-    unsigned nbobjs = topology->os_distances[type].nbobjs;
-    unsigned *indexes = topology->os_distances[type].indexes;
-    float *distances = topology->os_distances[type].distances;
-    unsigned i, j;
-    if (!topology->os_distances[type].objs) {
-      hwloc_obj_t *objs = calloc(nbobjs, sizeof(hwloc_obj_t));
-      /* traverse the topology and look for the relevant objects */
-      for(i=0; i<nbobjs; i++) {
-	hwloc_obj_t obj = hwloc_find_obj_by_type_and_os_index(topology->levels[0][0], type, indexes[i]);
-	if (!obj) {
+  unsigned nbobjs = osdist->nbobjs;
+  unsigned *indexes = osdist->indexes;
+  float *distances = osdist->distances;
+  unsigned i, j;
+  hwloc_obj_type_t type = osdist->type;
+  hwloc_obj_t *objs = calloc(nbobjs, sizeof(hwloc_obj_t));
 
-	  /* shift the matrix */
+  assert(!osdist->objs);
+
+  /* traverse the topology and look for the relevant objects */
+  for(i=0; i<nbobjs; i++) {
+    hwloc_obj_t obj = hwloc_find_obj_by_type_and_os_index(topology->levels[0][0], type, indexes[i]);
+    if (!obj) {
+
+      /* shift the matrix */
 #define OLDPOS(i,j) (distances+(i)*nbobjs+(j))
 #define NEWPOS(i,j) (distances+(i)*(nbobjs-1)+(j))
-	  if (i>0) {
-	    /** no need to move beginning of 0th line */
-	    for(j=0; j<i-1; j++)
-	      /** move end of jth line + beginning of (j+1)th line */
-	      memmove(NEWPOS(j,i), OLDPOS(j,i+1), (nbobjs-1)*sizeof(*distances));
-	    /** move end of (i-1)th line */
-	    memmove(NEWPOS(i-1,i), OLDPOS(i-1,i+1), (nbobjs-i-1)*sizeof(*distances));
-	  }
-	  if (i<nbobjs-1) {
-	    /** move beginning of (i+1)th line */
-	    memmove(NEWPOS(i,0), OLDPOS(i+1,0), i*sizeof(*distances));
-	    /** move end of jth line + beginning of (j+1)th line */
-	    for(j=i; j<nbobjs-2; j++)
-	      memmove(NEWPOS(j,i), OLDPOS(j+1,i+1), (nbobjs-1)*sizeof(*distances));
-	    /** move end of (nbobjs-2)th line */
-	    memmove(NEWPOS(nbobjs-2,i), OLDPOS(nbobjs-1,i+1), (nbobjs-i-1)*sizeof(*distances));
-	  }
+      if (i>0) {
+	/** no need to move beginning of 0th line */
+	for(j=0; j<i-1; j++)
+	  /** move end of jth line + beginning of (j+1)th line */
+	  memmove(NEWPOS(j,i), OLDPOS(j,i+1), (nbobjs-1)*sizeof(*distances));
+	/** move end of (i-1)th line */
+	memmove(NEWPOS(i-1,i), OLDPOS(i-1,i+1), (nbobjs-i-1)*sizeof(*distances));
+      }
+      if (i<nbobjs-1) {
+	/** move beginning of (i+1)th line */
+	memmove(NEWPOS(i,0), OLDPOS(i+1,0), i*sizeof(*distances));
+	/** move end of jth line + beginning of (j+1)th line */
+	for(j=i; j<nbobjs-2; j++)
+	  memmove(NEWPOS(j,i), OLDPOS(j+1,i+1), (nbobjs-1)*sizeof(*distances));
+	/** move end of (nbobjs-2)th line */
+	memmove(NEWPOS(nbobjs-2,i), OLDPOS(nbobjs-1,i+1), (nbobjs-i-1)*sizeof(*distances));
+      }
 
-	  /* shift the indexes array */
-	  memmove(indexes+i, indexes+i+1, (nbobjs-i-1)*sizeof(*indexes));
+      /* shift the indexes array */
+      memmove(indexes+i, indexes+i+1, (nbobjs-i-1)*sizeof(*indexes));
 
-	  /* update counters */
-	  nbobjs--;
-	  i--;
-	  continue;
-	}
-	objs[i] = obj;
-      }
+      /* update counters */
+      nbobjs--;
+      i--;
+      continue;
+    }
+    objs[i] = obj;
+  }
 
-      topology->os_distances[type].nbobjs = nbobjs;
-      if (!nbobjs) {
-	/* the whole matrix was invalid */
-	free(objs);
-	free(topology->os_distances[type].indexes);
-	topology->os_distances[type].indexes = NULL;
-	free(topology->os_distances[type].distances);
-	topology->os_distances[type].distances = NULL;
-      } else {
-	/* setup the objs array */
-	topology->os_distances[type].objs = objs;
-      }
+  osdist->nbobjs = nbobjs;
+  if (!nbobjs) {
+    /* the whole matrix was invalid, let the caller remove this distances */
+    free(objs);
+    return -1;
+  }
+
+  /* setup the objs array */
+  osdist->objs = objs;
+  return 0;
+}
+
+
+void hwloc_distances_finalize_os(struct hwloc_topology *topology)
+{
+  int dropall = !topology->levels[0][0]->cpuset; /* we don't support distances on multinode systems */
+
+  struct hwloc_os_distances_s *osdist, *next = topology->first_osdist;
+  while ((osdist = next) != NULL) {
+    int err;
+    next = osdist->next;
+
+    if (dropall)
+      goto drop;
+
+    /* remove final distance matrics AND physically-ordered ones */
+
+    if (osdist->objs)
+      /* nothing to do, switch to the next element */
+      continue;
+
+    err = hwloc_distances__finalize_os(topology, osdist);
+    if (!err)
+      /* convert ok, switch to the next element */
+      continue;
+
+   drop:
+    /* remove this element */
+    free(osdist->indexes);
+    free(osdist->distances);
+    /* remove current object */
+    if (osdist->prev)
+      osdist->prev->next = next;
+    else
+      topology->first_osdist = next;
+    if (next)
+      next->prev = osdist->prev;
+    else
+      topology->last_osdist = osdist->prev;
+    /* free current object */
+    free(osdist);
+  }
+}
+
+/***********************************************************
+ * Convert internal distances given by the backend/env/user
+ * into exported logical distances attached to objects
+ */
+
+static hwloc_obj_t
+hwloc_get_obj_covering_cpuset_nodeset(struct hwloc_topology *topology,
+				      hwloc_const_cpuset_t cpuset,
+				      hwloc_const_nodeset_t nodeset)
+{
+  hwloc_obj_t parent = hwloc_get_root_obj(topology), child;
+
+  assert(cpuset);
+  assert(nodeset);
+  assert(hwloc_bitmap_isincluded(cpuset, parent->cpuset));
+  assert(!nodeset || hwloc_bitmap_isincluded(nodeset, parent->nodeset));
+
+ trychildren:
+  child = parent->first_child;
+  while (child) {
+    /* look for a child with a cpuset containing ours.
+     * if it has a nodeset, it must also contain ours.
+     */
+    if (child->cpuset && hwloc_bitmap_isincluded(cpuset, child->cpuset)
+	&& (!child->nodeset || hwloc_bitmap_isincluded(nodeset, child->nodeset))) {
+      parent = child;
+      goto trychildren;
     }
+    child = child->next_sibling;
   }
+  return parent;
 }
 
 static void
-hwloc_setup_distances_from_os_matrix(struct hwloc_topology *topology,
-				     unsigned nbobjs,
-				     hwloc_obj_t *objs, float *osmatrix)
+hwloc_distances__finalize_logical(struct hwloc_topology *topology,
+				  unsigned nbobjs,
+				  hwloc_obj_t *objs, float *osmatrix)
 {
   unsigned i, j, li, lj, minl;
   float min = FLT_MAX, max = FLT_MIN;
   hwloc_obj_t root;
   float *matrix;
-  hwloc_cpuset_t set;
+  hwloc_cpuset_t cpuset;
+  hwloc_nodeset_t nodeset;
   unsigned relative_depth;
   int idx;
 
   /* find the root */
-  set = hwloc_bitmap_alloc();
-  for(i=0; i<nbobjs; i++)
-    hwloc_bitmap_or(set, set, objs[i]->cpuset);
-  root = hwloc_get_obj_covering_cpuset(topology, set);
-  assert(root);
-  if (!hwloc_bitmap_isequal(set, root->cpuset)) {
-    /* partial distance matrix not including all the children of a single object */
-    /* TODO insert an intermediate object (group?) covering only these children ? */
-    hwloc_bitmap_free(set);
+  cpuset = hwloc_bitmap_alloc();
+  nodeset = hwloc_bitmap_alloc();
+  for(i=0; i<nbobjs; i++) {
+    hwloc_bitmap_or(cpuset, cpuset, objs[i]->cpuset);
+    if (objs[i]->nodeset)
+      hwloc_bitmap_or(nodeset, nodeset, objs[i]->nodeset);
+  }
+  /* find the object covering cpuset AND nodeset (can't use hwloc_get_obj_covering_cpuset()) */
+  root = hwloc_get_obj_covering_cpuset_nodeset(topology, cpuset, nodeset);
+  if (!root) {
+    /* should not happen, ignore the distance matrix and report an error. */
+    if (!hwloc_hide_errors()) {
+      char *a, *b;
+      hwloc_bitmap_asprintf(&a, cpuset);
+      hwloc_bitmap_asprintf(&b, nodeset);
+      fprintf(stderr, "****************************************************************************\n");
+      fprintf(stderr, "* Hwloc has encountered an error when adding a distance matrix to the topology.\n");
+      fprintf(stderr, "*\n");
+      fprintf(stderr, "* hwloc_distances__finalize_logical() could not find any object covering\n");
+      fprintf(stderr, "* cpuset %s and nodeset %s\n", a, b);
+      fprintf(stderr, "*\n");
+      fprintf(stderr, "* Please report this error message to the hwloc user's mailing list,\n");
+      fprintf(stderr, "* along with the output from the hwloc-gather-topology.sh script.\n");
+      fprintf(stderr, "****************************************************************************\n");
+      free(a);
+      free(b);
+    }
+    hwloc_bitmap_free(cpuset);
+    hwloc_bitmap_free(nodeset);
     return;
   }
-  hwloc_bitmap_free(set);
+  /* ideally, root has the exact cpuset and nodeset.
+   * but ignoring or other things that remove objects may cause the object array to reduce */
+  assert(hwloc_bitmap_isincluded(cpuset, root->cpuset));
+  assert(hwloc_bitmap_isincluded(nodeset, root->nodeset));
+  hwloc_bitmap_free(cpuset);
+  hwloc_bitmap_free(nodeset);
+  if (root->depth >= objs[0]->depth) {
+    /* strange topology led us to find invalid relative depth, ignore */
+    return;
+  }
   relative_depth = objs[0]->depth - root->depth; /* this assume that we have distances between objects of the same level */
 
   /* get the logical index offset, it's the min of all logical indexes */
@@ -417,39 +594,58 @@
  * that can be exposed in the API
  */
 void
-hwloc_finalize_logical_distances(struct hwloc_topology *topology)
+hwloc_distances_finalize_logical(struct hwloc_topology *topology)
 {
   unsigned nbobjs;
-  hwloc_obj_type_t type;
   int depth;
+  struct hwloc_os_distances_s * osdist;
+  for(osdist = topology->first_osdist; osdist; osdist = osdist->next) {
 
-  for (type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) {
-    nbobjs = topology->os_distances[type].nbobjs;
+    nbobjs = osdist->nbobjs;
     if (!nbobjs)
       continue;
 
-    depth = hwloc_get_type_depth(topology, type);
+    depth = hwloc_get_type_depth(topology, osdist->type);
     if (depth == HWLOC_TYPE_DEPTH_UNKNOWN || depth == HWLOC_TYPE_DEPTH_MULTIPLE)
       continue;
 
-    if (topology->os_distances[type].objs) {
-      assert(topology->os_distances[type].distances);
-
-      hwloc_setup_distances_from_os_matrix(topology, nbobjs,
-					   topology->os_distances[type].objs,
-					   topology->os_distances[type].distances);
+    if (osdist->objs) {
+      assert(osdist->distances);
+      hwloc_distances__finalize_logical(topology, nbobjs,
+					osdist->objs,
+					osdist->distances);
     }
   }
 }
 
-/* destroy a object distances structure */
+/***************************************************
+ * Destroying logical distances attached to objects
+ */
+
+/* destroy an object distances structure */
 void
-hwloc_free_logical_distances(struct hwloc_distances_s * dist)
+hwloc_clear_object_distances_one(struct hwloc_distances_s * distances)
 {
-  free(dist->latency);
-  free(dist);
+  free(distances->latency);
+  free(distances);
+
 }
 
+void
+hwloc_clear_object_distances(hwloc_obj_t obj)
+{
+  unsigned i;
+  for (i=0; i<obj->distances_count; i++)
+    hwloc_clear_object_distances_one(obj->distances[i]);
+  free(obj->distances);
+  obj->distances = NULL;
+  obj->distances_count = 0;
+}
+
+/******************************************
+ * Grouping objects according to distances
+ */
+
 static void hwloc_report_user_distance_error(const char *msg, int line)
 {
     static int reported = 0;
@@ -480,11 +676,11 @@
  * Return how many groups were created, or 0 if some incomplete distance graphs were found.
  */
 static unsigned
-hwloc_setup_group_from_min_distance(unsigned nbobjs,
-				    float *_distances,
-				    float accuracy,
-				    unsigned *groupids,
-				    int verbose)
+hwloc__find_groups_by_min_distance(unsigned nbobjs,
+				   float *_distances,
+				   float accuracy,
+				   unsigned *groupids,
+				   int verbose)
 {
   float min_distance = FLT_MAX;
   unsigned groupid = 1;
@@ -593,14 +789,14 @@
  * Look at object physical distances to group them.
  */
 static void
-hwloc_setup_groups_from_distances(struct hwloc_topology *topology,
-				  unsigned nbobjs,
-				  struct hwloc_obj **objs,
-				  float *_distances,
-				  unsigned nbaccuracies, float *accuracies,
-				  int fromuser,
-				  int needcheck,
-				  int verbose)
+hwloc__groups_by_distances(struct hwloc_topology *topology,
+			   unsigned nbobjs,
+			   struct hwloc_obj **objs,
+			   float *_distances,
+			   unsigned nbaccuracies, float *accuracies,
+			   int fromuser,
+			   int needcheck,
+			   int verbose)
 {
   unsigned *groupids = NULL;
   unsigned nbgroups = 0;
@@ -621,7 +817,7 @@
 	      nbobjs, hwloc_obj_type_string(objs[0]->type), accuracies[i]);
     if (needcheck && hwloc__check_grouping_matrix(nbobjs, _distances, accuracies[i], verbose) < 0)
       continue;
-    nbgroups = hwloc_setup_group_from_min_distance(nbobjs, _distances, accuracies[i], groupids, verbose);
+    nbgroups = hwloc__find_groups_by_min_distance(nbobjs, _distances, accuracies[i], groupids, verbose);
     if (nbgroups)
       break;
   }
@@ -651,10 +847,17 @@
           group_obj->cpuset = hwloc_bitmap_alloc();
           group_obj->attr->group.depth = topology->next_group_depth;
           for (j=0; j<nbobjs; j++)
-              if (groupids[j] == i+1) {
-                  hwloc_bitmap_or(group_obj->cpuset, group_obj->cpuset, objs[j]->cpuset);
-                  groupsizes[i]++;
-              }
+	    if (groupids[j] == i+1) {
+	      /* assemble the group cpuset */
+	      hwloc_bitmap_or(group_obj->cpuset, group_obj->cpuset, objs[j]->cpuset);
+	      /* if one obj has a nodeset, assemble a group nodeset */
+	      if (objs[j]->nodeset) {
+		if (!group_obj->nodeset)
+		  group_obj->nodeset = hwloc_bitmap_alloc();
+		hwloc_bitmap_or(group_obj->nodeset, group_obj->nodeset, objs[j]->nodeset);
+	      }
+              groupsizes[i]++;
+            }
           hwloc_debug_1arg_bitmap("adding Group object with %u objects and cpuset %s\n",
                                   groupsizes[i], group_obj->cpuset);
           hwloc__insert_object_by_cpuset(topology, group_obj,
@@ -673,8 +876,11 @@
 	    if (groupids[j])
                 GROUP_DISTANCE(groupids[i]-1, groupids[j]-1) += DISTANCE(i, j);
       for(i=0; i<nbgroups; i++)
-          for(j=0; j<nbgroups; j++)
-              GROUP_DISTANCE(i, j) /= groupsizes[i]*groupsizes[j];
+          for(j=0; j<nbgroups; j++) {
+              unsigned groupsize = groupsizes[i]*groupsizes[j];
+              float groupsizef = (float) groupsize;
+              GROUP_DISTANCE(i, j) /= groupsizef;
+          }
 #ifdef HWLOC_DEBUG
       hwloc_debug("%s", "generated new distance matrix between groups:\n");
       hwloc_debug("%s", "  index");
@@ -690,7 +896,7 @@
 #endif
 
       topology->next_group_depth++;
-      hwloc_setup_groups_from_distances(topology, nbgroups, groupobjs, (float*) groupdistances, nbaccuracies, accuracies, fromuser, 0 /* no need to check generated matrix */, verbose);
+      hwloc__groups_by_distances(topology, nbgroups, groupobjs, (float*) groupdistances, nbaccuracies, accuracies, fromuser, 0 /* no need to check generated matrix */, verbose);
 
   inner_free:
       /* Safely free everything */
@@ -715,13 +921,15 @@
 hwloc_group_by_distances(struct hwloc_topology *topology)
 {
   unsigned nbobjs;
-  hwloc_obj_type_t type;
+  struct hwloc_os_distances_s * osdist;
   char *env;
   float accuracies[5] = { 0.0, 0.01, 0.02, 0.05, 0.1 };
   unsigned nbaccuracies = 5;
+  hwloc_obj_t group_obj;
   int verbose = 0;
+  unsigned i;
 #ifdef HWLOC_DEBUG
-  unsigned i,j;
+  unsigned j;
 #endif
 
   env = getenv("HWLOC_GROUPING");
@@ -749,38 +957,60 @@
     verbose = atoi(env);
 #endif
 
-  for (type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++) {
-    nbobjs = topology->os_distances[type].nbobjs;
+  for(osdist = topology->first_osdist; osdist; osdist = osdist->next) {
+
+    nbobjs = osdist->nbobjs;
     if (!nbobjs)
       continue;
 
-    if (topology->os_distances[type].objs) {
+    if (osdist->objs) {
       /* if we have objs, we must have distances as well,
        * thanks to hwloc_convert_distances_indexes_into_objects()
        */
-      assert(topology->os_distances[type].distances);
+      assert(osdist->distances);
 
 #ifdef HWLOC_DEBUG
       hwloc_debug("%s", "trying to group objects using distance matrix:\n");
       hwloc_debug("%s", "  index");
       for(j=0; j<nbobjs; j++)
-	hwloc_debug(" % 5d", (int) topology->os_distances[type].objs[j]->os_index);
+	hwloc_debug(" % 5d", (int) osdist->objs[j]->os_index);
       hwloc_debug("%s", "\n");
       for(i=0; i<nbobjs; i++) {
-	hwloc_debug("  % 5d", (int) topology->os_distances[type].objs[i]->os_index);
+	hwloc_debug("  % 5d", (int) osdist->objs[i]->os_index);
 	for(j=0; j<nbobjs; j++)
-	  hwloc_debug(" %2.3f", topology->os_distances[type].distances[i*nbobjs + j]);
+	  hwloc_debug(" %2.3f", osdist->distances[i*nbobjs + j]);
 	hwloc_debug("%s", "\n");
       }
 #endif
 
-      hwloc_setup_groups_from_distances(topology, nbobjs,
-					topology->os_distances[type].objs,
-					topology->os_distances[type].distances,
-					nbaccuracies, accuracies,
-					topology->os_distances[type].indexes != NULL,
-					1 /* check the first matrice */,
-					verbose);
+      hwloc__groups_by_distances(topology, nbobjs,
+				 osdist->objs,
+				 osdist->distances,
+				 nbaccuracies, accuracies,
+				 osdist->indexes != NULL,
+				 1 /* check the first matrice */,
+				 verbose);
+
+      /* add a final group object covering everybody so that the distance matrix can be stored somewhere.
+       * this group will be merged into a regular object if the matrix isn't strangely incomplete
+       */
+      group_obj = hwloc_alloc_setup_object(HWLOC_OBJ_GROUP, -1);
+      group_obj->attr->group.depth = topology->next_group_depth++;
+      group_obj->cpuset = hwloc_bitmap_alloc();
+      for(i=0; i<nbobjs; i++) {
+	/* assemble the group cpuset */
+	hwloc_bitmap_or(group_obj->cpuset, group_obj->cpuset, osdist->objs[i]->cpuset);
+	/* if one obj has a nodeset, assemble a group nodeset */
+	if (osdist->objs[i]->nodeset) {
+	  if (!group_obj->nodeset)
+	    group_obj->nodeset = hwloc_bitmap_alloc();
+	  hwloc_bitmap_or(group_obj->nodeset, group_obj->nodeset, osdist->objs[i]->nodeset);
+	}
+      }
+      hwloc_debug_1arg_bitmap("adding Group object (as root of distance matrix with %u objects) with cpuset %s\n",
+			      nbobjs, group_obj->cpuset);
+      hwloc__insert_object_by_cpuset(topology, group_obj,
+				     osdist->indexes != NULL ? hwloc_report_user_distance_error : hwloc_report_os_error);
     }
   }
 }

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/dolib.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/dolib.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/dolib.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,7 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009 INRIA.  All rights reserved.
- * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009, 2012 Université Bordeaux 1
  * See COPYING in top-level directory.
  */
 
@@ -12,8 +12,10 @@
 #include <stdlib.h>
 
 int main(int argc, char *argv[]) {
-  char *prog, *arch, *def, *name, *lib;
+  char *prog, *arch, *def, *version, *lib;
   char s[1024];
+  char name[16];
+  int current, age, revision;
 
   if (argc != 6) {
     fprintf(stderr,"bad number of arguments");
@@ -23,9 +25,15 @@
   prog = argv[1];
   arch = argv[2];
   def = argv[3];
-  name = argv[4];
+  version = argv[4];
   lib = argv[5];
 
+  if (sscanf(version, "%d:%d:%d", &current, &age, &revision) != 3)
+    exit(EXIT_FAILURE);
+
+  snprintf(name, sizeof(name), "libhwloc-%d", current - age);
+  printf("using soname %s\n", name);
+
   snprintf(s, sizeof(s), "\"%s\" /machine:%s /def:%s /name:%s /out:%s",
       prog, arch, def, name, lib);
   if (system(s)) {

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/misc.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/misc.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/misc.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-aix.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-aix.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-aix.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-darwin.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-darwin.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-darwin.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-freebsd.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-hpux.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-hpux.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-hpux.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-libpci.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-libpci.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-libpci.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * See COPYING in top-level directory.
  */
@@ -113,8 +113,8 @@
 	  fillinfo(topology, obj, path);
 	}
       }
+      closedir(dir);
     }
-    closedir(dir);
   }
 }
 
@@ -513,11 +513,9 @@
   /* restrict to the existing topology cpuset to avoid errors later */
   hwloc_bitmap_and(cpuset, cpuset, topology->levels[0][0]->cpuset);
 
-  /* why not inserting a group and let the core remove it if useless?
-   * 1) we need to make sure that the group is above all objects
-   * with same cpuset (to avoid attaching to caches or so)
-   * 2) the merge-keep-structure code is already done when coming here
-   */
+  /* if the remaining cpuset is empty, take the root */
+  if (hwloc_bitmap_iszero(cpuset))
+    hwloc_bitmap_copy(cpuset, hwloc_topology_get_topology_cpuset(topology));
 
   /* attach the hostbridge now that it contains the right objects */
   parent = hwloc_get_obj_covering_cpuset(topology, cpuset);
@@ -560,6 +558,11 @@
   longjmp(err_buf, 1);
 }
 
+static void
+hwloc_pci_warning(char *msg __hwloc_attribute_unused, ...)
+{
+}
+
 void
 hwloc_look_libpci(struct hwloc_topology *topology)
 {
@@ -576,6 +579,7 @@
 
   pciaccess = pci_alloc();
   pciaccess->error = hwloc_pci_error;
+  pciaccess->warning = hwloc_pci_warning;
 
   if (setjmp(err_buf)) {
     pci_cleanup(pciaccess);

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-linux.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,7 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
- * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * Copyright © 2010 IBM
  * See COPYING in top-level directory.
@@ -14,6 +14,7 @@
 #include <private/private.h>
 #include <private/misc.h>
 #include <private/debug.h>
+#include <sys/utsname.h>
 
 #include <limits.h>
 #include <stdio.h>
@@ -33,7 +34,7 @@
 #include <numaif.h>
 #endif
 
-#if !defined(HWLOC_HAVE_CPU_SET) && !(defined(HWLOC_HAVE_CPU_SET_S) && !defined(HWLOC_HAVE_OLD_SCHED_SETAFFINITY)) && defined(HWLOC_HAVE__SYSCALL3)
+#if !(defined HWLOC_HAVE_SCHED_SETAFFINITY) && (defined HWLOC_HAVE__SYSCALL3)
 /* libc doesn't have support for sched_setaffinity, build system call
  * ourselves: */
 #    include <linux/unistd.h>
@@ -463,52 +464,13 @@
   return 0;
 }
 
-/* Callbacks for binding each process sub-tid */
-typedef int (*hwloc_linux_foreach_proc_tid_cb_t)(hwloc_topology_t topology, pid_t tid, void *data, int idx, int flags);
+/* Per-tid callbacks */
+typedef int (*hwloc_linux_foreach_proc_tid_cb_t)(hwloc_topology_t topology, pid_t tid, void *data, int idx);
 
 static int
-hwloc_linux_foreach_proc_tid_set_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx __hwloc_attribute_unused, int flags __hwloc_attribute_unused)
-{
-  hwloc_bitmap_t cpuset = data;
-  return hwloc_linux_set_tid_cpubind(topology, tid, cpuset);
-}
-
-static int
-hwloc_linux_foreach_proc_tid_get_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx, int flags)
-{
-  hwloc_bitmap_t *cpusets = data;
-  hwloc_bitmap_t cpuset = cpusets[0];
-  hwloc_bitmap_t tidset = cpusets[1];
-
-  if (hwloc_linux_get_tid_cpubind(topology, tid, tidset))
-    return -1;
-
-  /* reset the cpuset on first iteration */
-  if (!idx)
-    hwloc_bitmap_zero(cpuset);
-
-  if (flags & HWLOC_CPUBIND_STRICT) {
-    /* if STRICT, we want all threads to have the same binding */
-    if (!idx) {
-      /* this is the first thread, copy its binding */
-      hwloc_bitmap_copy(cpuset, tidset);
-    } else if (!hwloc_bitmap_isequal(cpuset, tidset)) {
-      /* this is not the first thread, and it's binding is different */
-      errno = EXDEV;
-      return -1;
-    }
-  } else {
-    /* if not STRICT, just OR all thread bindings */
-    hwloc_bitmap_or(cpuset, cpuset, tidset);
-  }
-  return 0;
-}
-
-/* Call the callback for each process tid. */
-static int
 hwloc_linux_foreach_proc_tid(hwloc_topology_t topology,
 			     pid_t pid, hwloc_linux_foreach_proc_tid_cb_t cb,
-			     void *data, int flags)
+			     void *data)
 {
   char taskdir_path[128];
   DIR *taskdir;
@@ -536,7 +498,7 @@
  retry:
   /* apply the callback to all threads */
   for(i=0; i<nr; i++) {
-    err = cb(topology, tids[i], data, i, flags);
+    err = cb(topology, tids[i], data, i);
     if (err < 0)
       goto out_with_tids;
   }
@@ -562,26 +524,74 @@
   return err;
 }
 
+/* Per-tid proc_set_cpubind callback and caller.
+ * Callback data is a hwloc_bitmap_t. */
 static int
-hwloc_linux_set_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags)
+hwloc_linux_foreach_proc_tid_set_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx __hwloc_attribute_unused)
 {
+  return hwloc_linux_set_tid_cpubind(topology, tid, (hwloc_bitmap_t) data);
+}
+
+static int
+hwloc_linux_set_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_const_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
+{
   return hwloc_linux_foreach_proc_tid(topology, pid,
 				      hwloc_linux_foreach_proc_tid_set_cpubind_cb,
-				      (void*) hwloc_set, flags);
+				      (void*) hwloc_set);
 }
 
+/* Per-tid proc_get_cpubind callback data, callback function and caller */
+struct hwloc_linux_foreach_proc_tid_get_cpubind_cb_data_s {
+  hwloc_bitmap_t cpuset;
+  hwloc_bitmap_t tidset;
+  int flags;
+};
+
 static int
+hwloc_linux_foreach_proc_tid_get_cpubind_cb(hwloc_topology_t topology, pid_t tid, void *_data, int idx)
+{
+  struct hwloc_linux_foreach_proc_tid_get_cpubind_cb_data_s *data = _data;
+  hwloc_bitmap_t cpuset = data->cpuset;
+  hwloc_bitmap_t tidset = data->tidset;
+  int flags = data->flags;
+
+  if (hwloc_linux_get_tid_cpubind(topology, tid, tidset))
+    return -1;
+
+  /* reset the cpuset on first iteration */
+  if (!idx)
+    hwloc_bitmap_zero(cpuset);
+
+  if (flags & HWLOC_CPUBIND_STRICT) {
+    /* if STRICT, we want all threads to have the same binding */
+    if (!idx) {
+      /* this is the first thread, copy its binding */
+      hwloc_bitmap_copy(cpuset, tidset);
+    } else if (!hwloc_bitmap_isequal(cpuset, tidset)) {
+      /* this is not the first thread, and it's binding is different */
+      errno = EXDEV;
+      return -1;
+    }
+  } else {
+    /* if not STRICT, just OR all thread bindings */
+    hwloc_bitmap_or(cpuset, cpuset, tidset);
+  }
+  return 0;
+}
+
+static int
 hwloc_linux_get_pid_cpubind(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags)
 {
+  struct hwloc_linux_foreach_proc_tid_get_cpubind_cb_data_s data;
   hwloc_bitmap_t tidset = hwloc_bitmap_alloc();
-  hwloc_bitmap_t cpusets[2];
   int ret;
 
-  cpusets[0] = hwloc_set;
-  cpusets[1] = tidset;
+  data.cpuset = hwloc_set;
+  data.tidset = tidset;
+  data.flags = flags;
   ret = hwloc_linux_foreach_proc_tid(topology, pid,
-					 hwloc_linux_foreach_proc_tid_get_cpubind_cb,
-					 (void*) cpusets, flags);
+				     hwloc_linux_foreach_proc_tid_get_cpubind_cb,
+				     (void*) &data);
   hwloc_bitmap_free(tidset);
   return ret;
 }
@@ -790,7 +800,7 @@
      }
 
      hwloc_bitmap_zero(hwloc_set);
-     for(cpu=0; cpu<(unsigned) last; cpu++)
+     for(cpu=0; cpu<=(unsigned) last; cpu++)
        if (CPU_ISSET_S(cpu, setsize, plinux_set))
 	 hwloc_bitmap_set(hwloc_set, cpu);
 
@@ -907,12 +917,18 @@
   return 0;
 }
 
+/* Per-tid proc_get_last_cpu_location callback data, callback function and caller */
+struct hwloc_linux_foreach_proc_tid_get_last_cpu_location_cb_data_s {
+  hwloc_bitmap_t cpuset;
+  hwloc_bitmap_t tidset;
+};
+
 static int
-hwloc_linux_foreach_proc_tid_get_last_cpu_location_cb(hwloc_topology_t topology, pid_t tid, void *data, int idx, int flags __hwloc_attribute_unused)
+hwloc_linux_foreach_proc_tid_get_last_cpu_location_cb(hwloc_topology_t topology, pid_t tid, void *_data, int idx)
 {
-  hwloc_bitmap_t *cpusets = data;
-  hwloc_bitmap_t cpuset = cpusets[0];
-  hwloc_bitmap_t tidset = cpusets[1];
+  struct hwloc_linux_foreach_proc_tid_get_last_cpu_location_cb_data_s *data = _data;
+  hwloc_bitmap_t cpuset = data->cpuset;
+  hwloc_bitmap_t tidset = data->tidset;
 
   if (hwloc_linux_get_tid_last_cpu_location(topology, tid, tidset))
     return -1;
@@ -926,17 +942,17 @@
 }
 
 static int
-hwloc_linux_get_pid_last_cpu_location(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags)
+hwloc_linux_get_pid_last_cpu_location(hwloc_topology_t topology, pid_t pid, hwloc_bitmap_t hwloc_set, int flags __hwloc_attribute_unused)
 {
+  struct hwloc_linux_foreach_proc_tid_get_last_cpu_location_cb_data_s data;
   hwloc_bitmap_t tidset = hwloc_bitmap_alloc();
-  hwloc_bitmap_t cpusets[2];
   int ret;
 
-  cpusets[0] = hwloc_set;
-  cpusets[1] = tidset;
+  data.cpuset = hwloc_set;
+  data.tidset = tidset;
   ret = hwloc_linux_foreach_proc_tid(topology, pid,
 				     hwloc_linux_foreach_proc_tid_get_last_cpu_location_cb,
-				     (void*) cpusets, flags);
+				     &data);
   hwloc_bitmap_free(tidset);
   return ret;
 }
@@ -1207,6 +1223,26 @@
 }
 
 static int
+hwloc_linux_membind_policy_to_hwloc(int linuxpolicy, hwloc_membind_policy_t *policy)
+{
+  switch (linuxpolicy) {
+  case MPOL_DEFAULT:
+    *policy = HWLOC_MEMBIND_FIRSTTOUCH;
+    return 0;
+  case MPOL_PREFERRED:
+  case MPOL_BIND:
+    *policy = HWLOC_MEMBIND_BIND;
+    return 0;
+  case MPOL_INTERLEAVE:
+    *policy = HWLOC_MEMBIND_INTERLEAVE;
+    return 0;
+  default:
+    errno = EINVAL;
+    return -1;
+  }
+}
+
+static int
 hwloc_linux_get_thisthread_membind(hwloc_topology_t topology, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused)
 {
   unsigned max_os_index;
@@ -1232,21 +1268,9 @@
     hwloc_linux_membind_mask_to_nodeset(topology, nodeset, max_os_index, linuxmask);
   }
 
-  switch (linuxpolicy) {
-  case MPOL_DEFAULT:
-    *policy = HWLOC_MEMBIND_FIRSTTOUCH;
-    break;
-  case MPOL_PREFERRED:
-  case MPOL_BIND:
-    *policy = HWLOC_MEMBIND_BIND;
-    break;
-  case MPOL_INTERLEAVE:
-    *policy = HWLOC_MEMBIND_INTERLEAVE;
-    break;
-  default:
-    errno = EINVAL;
+  err = hwloc_linux_membind_policy_to_hwloc(linuxpolicy, policy);
+  if (err < 0)
     goto out_with_mask;
-  }
 
   free(linuxmask);
   return 0;
@@ -1257,19 +1281,95 @@
   return -1;
 }
 
+static int
+hwloc_linux_get_area_membind(hwloc_topology_t topology, const void *addr, size_t len, hwloc_nodeset_t nodeset, hwloc_membind_policy_t *policy, int flags __hwloc_attribute_unused)
+{
+  unsigned max_os_index;
+  unsigned long *linuxmask, *globallinuxmask;
+  int linuxpolicy, globallinuxpolicy;
+  int mixed = 0;
+  int full = 0;
+  int first = 1;
+  int pagesize = getpagesize();
+  char *tmpaddr;
+  int err;
+  unsigned i;
+
+  max_os_index = hwloc_linux_find_kernel_max_numnodes(topology);
+
+  linuxmask = malloc(max_os_index/HWLOC_BITS_PER_LONG * sizeof(long));
+  if (!linuxmask) {
+    errno = ENOMEM;
+    goto out;
+  }
+  globallinuxmask = calloc(max_os_index/HWLOC_BITS_PER_LONG, sizeof(long));
+  if (!globallinuxmask) {
+    errno = ENOMEM;
+    goto out_with_masks;
+  }
+
+  for(tmpaddr = (char *)((unsigned long)addr & ~(pagesize-1));
+      tmpaddr < (char *)addr + len;
+      tmpaddr += pagesize) {
+    err = get_mempolicy(&linuxpolicy, linuxmask, max_os_index, tmpaddr, MPOL_F_ADDR);
+    if (err < 0)
+      goto out_with_masks;
+
+    /* use the first found policy. if we find a different one later, set mixed to 1 */
+    if (first)
+      globallinuxpolicy = linuxpolicy;
+    else if (globallinuxpolicy != linuxpolicy)
+      mixed = 1;
+
+    /* agregate masks, and set full to 1 if we ever find DEFAULT */
+    if (full || linuxpolicy == MPOL_DEFAULT) {
+      full = 1;
+    } else {
+      for(i=0; i<max_os_index/HWLOC_BITS_PER_LONG; i++)
+        globallinuxmask[i] |= linuxmask[i];
+    }
+
+    first = 0;
+  }
+
+  if (mixed) {
+    *policy = HWLOC_MEMBIND_MIXED;
+  } else {
+    err = hwloc_linux_membind_policy_to_hwloc(linuxpolicy, policy);
+    if (err < 0)
+      goto out_with_masks;
+  }
+
+  if (full) {
+    hwloc_bitmap_copy(nodeset, hwloc_topology_get_topology_nodeset(topology));
+  } else {
+    hwloc_linux_membind_mask_to_nodeset(topology, nodeset, max_os_index, globallinuxmask);
+  }
+
+  free(globallinuxmask);
+  free(linuxmask);
+  return 0;
+
+ out_with_masks:
+  free(globallinuxmask);
+  free(linuxmask);
+ out:
+  return -1;
+}
+
 #endif /* HWLOC_HAVE_SET_MEMPOLICY */
 
 int
-hwloc_backend_sysfs_init(struct hwloc_topology *topology, const char *fsroot_path __hwloc_attribute_unused)
+hwloc_backend_linuxfs_init(struct hwloc_topology *topology, const char *fsroot_path __hwloc_attribute_unused)
 {
-#ifdef HAVE_OPENAT
-  int root;
+  int root = -1;
 
   assert(topology->backend_type == HWLOC_BACKEND_NONE);
 
   if (!fsroot_path)
     fsroot_path = "/";
 
+#ifdef HAVE_OPENAT
   root = open(fsroot_path, O_RDONLY | O_DIRECTORY);
   if (root < 0)
     return -1;
@@ -1277,28 +1377,44 @@
   if (strcmp(fsroot_path, "/"))
     topology->is_thissystem = 0;
 
-  topology->backend_params.sysfs.root_path = strdup(fsroot_path);
-  topology->backend_params.sysfs.root_fd = root;
+  topology->backend_params.linuxfs.root_path = strdup(fsroot_path);
 #else
-  topology->backend_params.sysfs.root_path = NULL;
-  topology->backend_params.sysfs.root_fd = -1;
+  if (strcmp(fsroot_path, "/")) {
+    errno = ENOSYS;
+    return -1;
+  }
+
+  topology->backend_params.linuxfs.root_path = NULL;
 #endif
-  topology->backend_type = HWLOC_BACKEND_SYSFS;
+  topology->backend_params.linuxfs.root_fd = root;
+  topology->backend_type = HWLOC_BACKEND_LINUXFS;
   return 0;
 }
 
 void
-hwloc_backend_sysfs_exit(struct hwloc_topology *topology)
+hwloc_backend_linuxfs_exit(struct hwloc_topology *topology)
 {
-  assert(topology->backend_type == HWLOC_BACKEND_SYSFS);
+  assert(topology->backend_type == HWLOC_BACKEND_LINUXFS);
 #ifdef HAVE_OPENAT
-  close(topology->backend_params.sysfs.root_fd);
-  free(topology->backend_params.sysfs.root_path);
-  topology->backend_params.sysfs.root_path = NULL;
+  close(topology->backend_params.linuxfs.root_fd);
+  free(topology->backend_params.linuxfs.root_path);
+  topology->backend_params.linuxfs.root_path = NULL;
 #endif
   topology->backend_type = HWLOC_BACKEND_NONE;
 }
 
+/* cpuinfo array */
+struct hwloc_linux_cpuinfo_proc {
+  /* set during hwloc_linux_parse_cpuinfo */
+  unsigned long Pproc;
+  /* set during hwloc_linux_parse_cpuinfo or -1 if unknown*/
+  long Pcore, Psock;
+  /* set later, or -1 if unknown */
+  long Lcore, Lsock;
+  /* set during hwloc_linux_parse_cpuinfo or NULL if unknown */
+  char *cpumodel;
+};
+
 static int
 hwloc_parse_sysfs_unsigned(const char *mappath, unsigned *value, int fsroot_fd)
 {
@@ -1399,7 +1515,7 @@
 hwloc_strdup_mntpath(const char *escapedpath, size_t length)
 {
   char *path = malloc(length+1);
-  const char *src = escapedpath, *tmp = src;
+  const char *src = escapedpath, *tmp;
   char *dst = path;
 
   while ((tmp = strchr(src, '\\')) != NULL) {
@@ -1642,7 +1758,7 @@
   hwloc_bitmap_t tmpset;
 
   cpuset_mask = hwloc_read_linux_cpuset_mask(cgroup_mntpnt, cpuset_mntpnt, cpuset_name,
-					     attr_name, topology->backend_params.sysfs.root_fd);
+					     attr_name, topology->backend_params.linuxfs.root_fd);
   if (!cpuset_mask)
     return;
 
@@ -1697,7 +1813,7 @@
   char string[64];
   FILE *fd;
 
-  fd = hwloc_fopen(path, "r", topology->backend_params.sysfs.root_fd);
+  fd = hwloc_fopen(path, "r", topology->backend_params.linuxfs.root_fd);
   if (!fd)
     return;
 
@@ -1738,14 +1854,14 @@
   char line[64];
   char path[SYSFS_NUMA_NODE_PATH_LEN];
 
-  dir = hwloc_opendir(dirpath, topology->backend_params.sysfs.root_fd);
+  dir = hwloc_opendir(dirpath, topology->backend_params.linuxfs.root_fd);
   if (dir) {
     while ((dirent = readdir(dir)) != NULL) {
       if (strncmp(dirent->d_name, "hugepages-", 10))
         continue;
       memory->page_types[index_].size = strtoul(dirent->d_name+10, NULL, 0) * 1024ULL;
       sprintf(path, "%s/%s/nr_hugepages", dirpath, dirent->d_name);
-      hpfd = hwloc_fopen(path, "r", topology->backend_params.sysfs.root_fd);
+      hpfd = hwloc_fopen(path, "r", topology->backend_params.linuxfs.root_fd);
       if (hpfd) {
         if (fgets(line, sizeof(line), hpfd)) {
           fclose(hpfd);
@@ -1803,24 +1919,30 @@
   uint64_t meminfo_hugepages_count, meminfo_hugepages_size = 0;
   struct stat st;
   int has_sysfs_hugepages = 0;
+  char *pagesize_env = getenv("HWLOC_DEBUG_PAGESIZE");
   int types = 2;
   int err;
 
-  err = hwloc_stat("/sys/kernel/mm/hugepages", &st, topology->backend_params.sysfs.root_fd);
+  err = hwloc_stat("/sys/kernel/mm/hugepages", &st, topology->backend_params.linuxfs.root_fd);
   if (!err) {
     types = 1 + st.st_nlink-2;
     has_sysfs_hugepages = 1;
   }
 
+  if (topology->is_thissystem || pagesize_env) {
+    /* we cannot report any page_type info unless we have the page size.
+     * we'll take it either from the system if local, or from the debug env variable
+     */
+    memory->page_types_len = types;
+    memory->page_types = calloc(types, sizeof(*memory->page_types));
+  }
+
   if (topology->is_thissystem) {
-    memory->page_types_len = types;
-    memory->page_types = malloc(types*sizeof(*memory->page_types));
-    memset(memory->page_types, 0, types*sizeof(*memory->page_types));
-    /* Try to get the hugepage size from sysconf in case we fail to get it from /proc/meminfo later */
+    /* Get the page and hugepage sizes from sysconf */
 #ifdef HAVE__SC_LARGE_PAGESIZE
     memory->page_types[1].size = sysconf(_SC_LARGE_PAGESIZE);
 #endif
-    memory->page_types[0].size = getpagesize();
+    memory->page_types[0].size = getpagesize(); /* might be overwritten later by /proc/meminfo or sysfs */
   }
 
   hwloc_parse_meminfo_info(topology, "/proc/meminfo", 0 /* no prefix */,
@@ -1843,6 +1965,18 @@
         memory->page_types_len = 1;
       }
     }
+
+    if (pagesize_env) {
+      /* We cannot get the pagesize if not thissystem, use the env-given one to experience the code during make check */
+      memory->page_types[0].size = strtoull(pagesize_env, NULL, 10);
+      /* If failed, use 4kB */
+      if (!memory->page_types[0].size)
+	memory->page_types[0].size = 4096;
+    }
+    assert(memory->page_types[0].size); /* from sysconf if local or from the env */
+    /* memory->page_types[1].size from sysconf if local, or from /proc/meminfo, or from sysfs,
+     * may be 0 if no hugepage support in the kernel */
+
     memory->page_types[0].count = remaining_local_memory / memory->page_types[0].size;
   }
 }
@@ -1862,7 +1996,7 @@
   int err;
 
   sprintf(path, "%s/node%d/hugepages", syspath, node);
-  err = hwloc_stat(path, &st, topology->backend_params.sysfs.root_fd);
+  err = hwloc_stat(path, &st, topology->backend_params.linuxfs.root_fd);
   if (!err) {
     types = 1 + st.st_nlink-2;
     has_sysfs_hugepages = 1;
@@ -1937,7 +2071,7 @@
   fclose(fd);
 }
 
-static void
+static int
 look_sysfsnode(struct hwloc_topology *topology, const char *path, unsigned *found)
 {
   unsigned osnode;
@@ -1945,14 +2079,15 @@
   DIR *dir;
   struct dirent *dirent;
   hwloc_obj_t node;
-  hwloc_bitmap_t nodeset = hwloc_bitmap_alloc();
+  hwloc_bitmap_t nodeset;
 
   *found = 0;
 
   /* Get the list of nodes first */
-  dir = hwloc_opendir(path, topology->backend_params.sysfs.root_fd);
+  dir = hwloc_opendir(path, topology->backend_params.linuxfs.root_fd);
   if (dir)
     {
+      nodeset = hwloc_bitmap_alloc();
       while ((dirent = readdir(dir)) != NULL)
 	{
 	  if (strncmp(dirent->d_name, "node", 4))
@@ -1963,11 +2098,13 @@
 	}
       closedir(dir);
     }
+  else
+    return -1;
 
   if (nbnodes <= 1)
     {
       hwloc_bitmap_free(nodeset);
-      return;
+      return 0;
     }
 
   /* For convenience, put these declarations inside a block. */
@@ -2010,7 +2147,7 @@
 	  osnode = indexes[index_];
 
           sprintf(nodepath, "%s/node%u/cpumap", path, osnode);
-          cpuset = hwloc_parse_cpumap(nodepath, topology->backend_params.sysfs.root_fd);
+          cpuset = hwloc_parse_cpumap(nodepath, topology->backend_params.linuxfs.root_fd);
           if (!cpuset)
               continue;
 
@@ -2029,14 +2166,15 @@
 	  /* Linux nodeX/distance file contains distance from X to other localities (from ACPI SLIT table or so),
 	   * store them in slots X*N...X*N+N-1 */
           sprintf(nodepath, "%s/node%u/distance", path, osnode);
-          hwloc_parse_node_distance(nodepath, nbnodes, distances+index_*nbnodes, topology->backend_params.sysfs.root_fd);
+          hwloc_parse_node_distance(nodepath, nbnodes, distances+index_*nbnodes, topology->backend_params.linuxfs.root_fd);
       }
 
-      hwloc_topology__set_distance_matrix(topology, HWLOC_OBJ_NODE, nbnodes, indexes, nodes, distances, 0 /* OS cannot force */);
+      hwloc_distances_set(topology, HWLOC_OBJ_NODE, nbnodes, indexes, nodes, distances, 0 /* OS cannot force */);
   }
 
  out:
   *found = nbnodes;
+  return 0;
 }
 
 /* Reads the entire file and returns bytes read if bytes_read != NULL
@@ -2184,11 +2322,11 @@
   struct hwloc_obj *c = NULL;
 
   hwloc_read_unit32be(cpu, "d-cache-line-size", &d_cache_line_size,
-      topology->backend_params.sysfs.root_fd);
+      topology->backend_params.linuxfs.root_fd);
   hwloc_read_unit32be(cpu, "d-cache-size", &d_cache_size,
-      topology->backend_params.sysfs.root_fd);
+      topology->backend_params.linuxfs.root_fd);
   hwloc_read_unit32be(cpu, "d-cache-sets", &d_cache_sets,
-      topology->backend_params.sysfs.root_fd);
+      topology->backend_params.linuxfs.root_fd);
 
   if ( (0 == d_cache_line_size) && (0 == d_cache_size) )
     return;
@@ -2219,7 +2357,7 @@
   device_tree_cpus_t cpus;
   const char ofroot[] = "/proc/device-tree/cpus";
   unsigned int i;
-  int root_fd = topology->backend_params.sysfs.root_fd;
+  int root_fd = topology->backend_params.linuxfs.root_fd;
   DIR *dt = hwloc_opendir(ofroot, root_fd);
   struct dirent *dirent;
 
@@ -2363,8 +2501,9 @@
 }
 
 /* Look at Linux' /sys/devices/system/cpu/cpu%d/topology/ */
-static void
-look_sysfscpu(struct hwloc_topology *topology, const char *path)
+static int
+look_sysfscpu(struct hwloc_topology *topology, const char *path,
+	      struct hwloc_linux_cpuinfo_proc * cpuinfo_Lprocs, unsigned cpuinfo_numprocs)
 {
   hwloc_bitmap_t cpuset; /* Set of cpus for which we have topology information */
 #define CPU_TOPOLOGY_STR_LEN 128
@@ -2374,12 +2513,14 @@
   FILE *fd;
   unsigned caches_added;
 
-  cpuset = hwloc_bitmap_alloc();
-
   /* fill the cpuset of interesting cpus */
-  dir = hwloc_opendir(path, topology->backend_params.sysfs.root_fd);
-  if (dir) {
+  dir = hwloc_opendir(path, topology->backend_params.linuxfs.root_fd);
+  if (!dir)
+    return -1;
+  else {
     struct dirent *dirent;
+    cpuset = hwloc_bitmap_alloc();
+
     while ((dirent = readdir(dir)) != NULL) {
       unsigned long cpu;
       char online[2];
@@ -2393,7 +2534,7 @@
 
       /* check whether this processor is online */
       sprintf(str, "%s/cpu%lu/online", path, cpu);
-      fd = hwloc_fopen(str, "r", topology->backend_params.sysfs.root_fd);
+      fd = hwloc_fopen(str, "r", topology->backend_params.linuxfs.root_fd);
       if (fd) {
 	if (fgets(online, sizeof(online), fd)) {
 	  fclose(fd);
@@ -2410,7 +2551,7 @@
 
       /* check whether the kernel exports topology information for this cpu */
       sprintf(str, "%s/cpu%lu/topology", path, cpu);
-      if (hwloc_access(str, X_OK, topology->backend_params.sysfs.root_fd) < 0 && errno == ENOENT) {
+      if (hwloc_access(str, X_OK, topology->backend_params.linuxfs.root_fd) < 0 && errno == ENOENT) {
 	hwloc_debug("os proc %lu has no accessible %s/cpu%lu/topology\n",
 		   cpu, path, cpu);
 	continue;
@@ -2436,10 +2577,10 @@
       /* look at the socket */
       mysocketid = 0; /* shut-up the compiler */
       sprintf(str, "%s/cpu%d/topology/physical_package_id", path, i);
-      hwloc_parse_sysfs_unsigned(str, &mysocketid, topology->backend_params.sysfs.root_fd);
+      hwloc_parse_sysfs_unsigned(str, &mysocketid, topology->backend_params.linuxfs.root_fd);
 
       sprintf(str, "%s/cpu%d/topology/core_siblings", path, i);
-      socketset = hwloc_parse_cpumap(str, topology->backend_params.sysfs.root_fd);
+      socketset = hwloc_parse_cpumap(str, topology->backend_params.linuxfs.root_fd);
       if (socketset && hwloc_bitmap_first(socketset) == i) {
         /* first cpu in this socket, add the socket */
         sock = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, mysocketid);
@@ -2447,6 +2588,17 @@
         hwloc_debug_1arg_bitmap("os socket %u has cpuset %s\n",
                      mysocketid, socketset);
         hwloc_insert_object_by_cpuset(topology, sock);
+	/* add cpuinfo */
+	if (cpuinfo_Lprocs) {
+	  for(j=0; j<(int) cpuinfo_numprocs; j++)
+	    if ((int) cpuinfo_Lprocs[j].Pproc == i
+		&& cpuinfo_Lprocs[j].cpumodel) {
+	      /* FIXME add to name as well? */
+	      hwloc_obj_add_info(sock, "CPUModel", cpuinfo_Lprocs[j].cpumodel);
+	    }
+	}
+	if (topology->backend_params.linuxfs.utsname.machine[0] != '\0')
+	  hwloc_obj_add_info(sock, "CPUType", topology->backend_params.linuxfs.utsname.machine);
         socketset = NULL; /* don't free it */
       }
       hwloc_bitmap_free(socketset);
@@ -2454,10 +2606,10 @@
       /* look at the core */
       mycoreid = 0; /* shut-up the compiler */
       sprintf(str, "%s/cpu%d/topology/core_id", path, i);
-      hwloc_parse_sysfs_unsigned(str, &mycoreid, topology->backend_params.sysfs.root_fd);
+      hwloc_parse_sysfs_unsigned(str, &mycoreid, topology->backend_params.linuxfs.root_fd);
 
       sprintf(str, "%s/cpu%d/topology/thread_siblings", path, i);
-      coreset = hwloc_parse_cpumap(str, topology->backend_params.sysfs.root_fd);
+      coreset = hwloc_parse_cpumap(str, topology->backend_params.linuxfs.root_fd);
       savedcoreset = coreset; /* store it for later work-arounds */
 
       if (coreset && hwloc_bitmap_weight(coreset) > 1) {
@@ -2468,7 +2620,7 @@
 	siblingid = hwloc_bitmap_first(set);
 	siblingcoreid = mycoreid;
 	sprintf(str, "%s/cpu%d/topology/core_id", path, siblingid);
-	hwloc_parse_sysfs_unsigned(str, &siblingcoreid, topology->backend_params.sysfs.root_fd);
+	hwloc_parse_sysfs_unsigned(str, &siblingcoreid, topology->backend_params.linuxfs.root_fd);
 	threadwithcoreid = (siblingcoreid != mycoreid);
 	hwloc_bitmap_free(set);
       }
@@ -2493,10 +2645,10 @@
       /* look at the books */
       mybookid = 0; /* shut-up the compiler */
       sprintf(str, "%s/cpu%d/topology/book_id", path, i);
-      if (hwloc_parse_sysfs_unsigned(str, &mybookid, topology->backend_params.sysfs.root_fd) == 0) {
+      if (hwloc_parse_sysfs_unsigned(str, &mybookid, topology->backend_params.linuxfs.root_fd) == 0) {
 
         sprintf(str, "%s/cpu%d/topology/book_siblings", path, i);
-        bookset = hwloc_parse_cpumap(str, topology->backend_params.sysfs.root_fd);
+        bookset = hwloc_parse_cpumap(str, topology->backend_params.linuxfs.root_fd);
         if (bookset && hwloc_bitmap_first(bookset) == i) {
           book = hwloc_alloc_setup_object(HWLOC_OBJ_GROUP, mybookid);
           book->cpuset = bookset;
@@ -2532,7 +2684,7 @@
 
 	/* get the cache level depth */
 	sprintf(mappath, "%s/cpu%d/cache/index%d/level", path, i, j);
-	fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd);
+	fd = hwloc_fopen(mappath, "r", topology->backend_params.linuxfs.root_fd);
 	if (fd) {
 	  if (fgets(str2,sizeof(str2), fd))
 	    depth = strtoul(str2, NULL, 10)-1;
@@ -2544,7 +2696,7 @@
 
 	/* ignore Instruction caches */
 	sprintf(mappath, "%s/cpu%d/cache/index%d/type", path, i, j);
-	fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd);
+	fd = hwloc_fopen(mappath, "r", topology->backend_params.linuxfs.root_fd);
 	if (fd) {
 	  if (fgets(str2, sizeof(str2), fd)) {
 	    fclose(fd);
@@ -2559,7 +2711,7 @@
 
 	/* get the cache size */
 	sprintf(mappath, "%s/cpu%d/cache/index%d/size", path, i, j);
-	fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd);
+	fd = hwloc_fopen(mappath, "r", topology->backend_params.linuxfs.root_fd);
 	if (fd) {
 	  if (fgets(str2,sizeof(str2), fd))
 	    kB = atol(str2); /* in kB */
@@ -2568,7 +2720,7 @@
 
 	/* get the line size */
 	sprintf(mappath, "%s/cpu%d/cache/index%d/coherency_line_size", path, i, j);
-	fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd);
+	fd = hwloc_fopen(mappath, "r", topology->backend_params.linuxfs.root_fd);
 	if (fd) {
 	  if (fgets(str2,sizeof(str2), fd))
 	    linesize = atol(str2); /* in bytes */
@@ -2580,14 +2732,14 @@
 	 * some archs (ia64, ppc) put 0 there when fully-associative, while others (x86) put something like -1 there.
 	 */
 	sprintf(mappath, "%s/cpu%d/cache/index%d/number_of_sets", path, i, j);
-	fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd);
+	fd = hwloc_fopen(mappath, "r", topology->backend_params.linuxfs.root_fd);
 	if (fd) {
 	  if (fgets(str2,sizeof(str2), fd))
 	    sets = atol(str2);
 	  fclose(fd);
 	}
 	sprintf(mappath, "%s/cpu%d/cache/index%d/physical_line_partition", path, i, j);
-	fd = hwloc_fopen(mappath, "r", topology->backend_params.sysfs.root_fd);
+	fd = hwloc_fopen(mappath, "r", topology->backend_params.linuxfs.root_fd);
 	if (fd) {
 	  if (fgets(str2,sizeof(str2), fd))
 	    lines_per_tag = atol(str2);
@@ -2595,7 +2747,7 @@
 	}
 
 	sprintf(mappath, "%s/cpu%d/cache/index%d/shared_cpu_map", path, i, j);
-	cacheset = hwloc_parse_cpumap(mappath, topology->backend_params.sysfs.root_fd);
+	cacheset = hwloc_parse_cpumap(mappath, topology->backend_params.linuxfs.root_fd);
         if (cacheset) {
           if (hwloc_bitmap_weight(cacheset) < 1) {
             /* mask is wrong (useful for many itaniums) */
@@ -2637,173 +2789,332 @@
     look_powerpc_device_tree(topology);
 
   hwloc_bitmap_free(cpuset);
+
+  return 0;
 }
 
 
-/* Look at Linux' /proc/cpuinfo */
-#      define PROCESSOR	"processor"
-#      define PHYSID "physical id"
-#      define COREID "core id"
-#define HWLOC_NBMAXCPUS 1024 /* FIXME: drop */
+/*
+ * architecture properly detected:
+ * arm: "Processor\t:"				=> OK
+ * avr32: "chip type\t:"			=> OK
+ * blackfin: "model name\t:"			=> OK
+ * h8300: "CPU:"				=> OK
+ * ia64: "model name :"				=> OK
+ * m68k: "CPU:"					=> OK
+ * mips: "cpu model\t\t:"			=> OK
+ * openrisc: "CPU:"				=> OK
+ * ppc: "cpu\t\t:"				=> OK
+ * sparc: "cpu\t\t:"				=> OK
+ * tile: "model name\t:"			=> OK
+ * unicore32: "Processor\t:"			=> OK
+ * x86: "model name\t:"				=> OK
+ *
+ * cannot work:
+ * alpha: "cpu\t\t\t:" + "cpu model\t\t:"	=> no processor index lines anyway
+ *
+ * partially supported:
+ * cris: "cpu\t\t:" + "cpu model\t:"		=> only "cpu"
+ * frv: "CPU-Core:" + "CPU:"			=> only "CPU"
+ * mn10300: "cpu core   :" + "model name :"	=> only "model name"
+ * parisc: "cpu family\t:" + "cpu\t\t:"		=> only "cpu"
+ *
+ * not supported because of conflicts with other arch minor lines:
+ * m32r: "cpu family\t:"			=> KO (adding "cpu family" would break "blackfin")
+ * microblaze: "CPU-Family:"			=> KO
+ * sh: "cpu family\t:" + "cpu type\t:"		=> KO
+ * xtensa: "model\t\t:"				=> KO
+ */
 static int
-look_cpuinfo(struct hwloc_topology *topology, const char *path,
-	     hwloc_bitmap_t online_cpuset)
+hwloc_linux_parse_cpuinfo_model(const char *prefix, const char *value,
+				char **model)
 {
+  if (!strcmp("model name", prefix)
+      || !strcmp("Processor", prefix)
+      || !strcmp("chip type", prefix)
+      || !strcmp("cpu model", prefix)
+      || !strcasecmp("cpu", prefix)) {
+    if (!*model)
+	*model = strdup(value);
+  }
+  return 0;
+}
+
+static int
+hwloc_linux_parse_cpuinfo(struct hwloc_topology *topology, const char *path,
+			  struct hwloc_linux_cpuinfo_proc ** Lprocs_p)
+{
   FILE *fd;
   char *str = NULL;
   char *endptr;
   unsigned len;
-  unsigned proc_physids[HWLOC_NBMAXCPUS];
-  unsigned osphysids[HWLOC_NBMAXCPUS];
-  unsigned proc_coreids[HWLOC_NBMAXCPUS];
-  unsigned oscoreids[HWLOC_NBMAXCPUS];
-  unsigned proc_osphysids[HWLOC_NBMAXCPUS];
-  unsigned core_osphysids[HWLOC_NBMAXCPUS];
-  unsigned procid_max=0;
-  unsigned numprocs=0;
-  unsigned numsockets=0;
-  unsigned numcores=0;
-  unsigned long physid;
-  unsigned long coreid;
-  unsigned missingsocket;
-  unsigned missingcore;
-  unsigned long processor = (unsigned long) -1;
-  unsigned i;
-  hwloc_bitmap_t cpuset;
-  hwloc_obj_t obj;
+  unsigned allocated_Lprocs = 0;
+  struct hwloc_linux_cpuinfo_proc * Lprocs = NULL;
+  unsigned numprocs = 0;
+  char *global_cpumodel = NULL;
 
-  for (i = 0; i < HWLOC_NBMAXCPUS; i++) {
-    proc_physids[i] = -1;
-    osphysids[i] = -1;
-    proc_coreids[i] = -1;
-    oscoreids[i] = -1;
-    proc_osphysids[i] = -1;
-    core_osphysids[i] = -1;
-  }
-
-  if (!(fd=hwloc_fopen(path,"r", topology->backend_params.sysfs.root_fd)))
+  if (!(fd=hwloc_fopen(path,"r", topology->backend_params.linuxfs.root_fd)))
     {
-      hwloc_debug("%s", "could not open /proc/cpuinfo\n");
+      hwloc_debug("could not open %s\n", path);
       return -1;
     }
 
-  cpuset = hwloc_bitmap_alloc();
-  /* Just record information and count number of sockets and cores */
-
-  len = strlen(PHYSID) + 1 + 9 + 1 + 1;
+#      define PROCESSOR	"processor"
+#      define PACKAGEID "physical id" /* the longest one */
+#      define COREID "core id"
+  len = 128; /* vendor/model can be very long */
   str = malloc(len);
-  hwloc_debug("%s", "\n\n * Topology extraction from /proc/cpuinfo *\n\n");
-  while (fgets(str,len,fd)!=NULL)
-    {
-#      define getprocnb_begin(field, var)		     \
-      if ( !strncmp(field,str,strlen(field)))	     \
-	{						     \
-	char *c = strchr(str, ':')+1;		     \
-	var = strtoul(c,&endptr,0);			     \
-	if (endptr==c)							\
-	  {								\
-            hwloc_debug("%s", "no number in "field" field of /proc/cpuinfo\n"); \
-            hwloc_bitmap_free(cpuset);					\
-            free(str);							\
-            return -1;							\
-	  }								\
-	else if (var==ULONG_MAX)						\
-	  {								\
-            hwloc_debug("%s", "too big "field" number in /proc/cpuinfo\n"); \
-            hwloc_bitmap_free(cpuset);					\
-            free(str);							\
-            return -1;							\
-	  }								\
-	hwloc_debug(field " %lu\n", var)
-#      define getprocnb_end()			\
-      }
-      getprocnb_begin(PROCESSOR,processor);
-      hwloc_bitmap_set(cpuset, processor);
+  hwloc_debug("\n\n * Topology extraction from %s *\n\n", path);
+  while (fgets(str,len,fd)!=NULL) {
+    unsigned long Psock, Pcore, Pproc;
+    char *end, *dot, *prefix, *value;
+    int noend = 0;
 
-      obj = hwloc_alloc_setup_object(HWLOC_OBJ_PU, processor);
-      obj->cpuset = hwloc_bitmap_alloc();
-      hwloc_bitmap_only(obj->cpuset, processor);
+    /* remove the ending \n */
+    end = strchr(str, '\n');
+    if (end)
+      *end = 0;
+    else
+      noend = 1;
+    /* skip lines with no dot */
+    dot = strchr(str, ':');
+    if (!dot)
+      continue;
+    /* skip lines not starting with a letter */
+    if (*str > 'z' || *str < 'a')
+      continue;
 
-      hwloc_debug_2args_bitmap("cpu %u (os %lu) has cpuset %s\n",
-		 numprocs, processor, obj->cpuset);
-      numprocs++;
-      hwloc_insert_object_by_cpuset(topology, obj);
+    /* mark the end of the prefix */
+    prefix = str;
+    end = dot;
+    while (end[-1] == ' ' || end[-1] == '	') end--; /* need a strrspn() */
+    *end = 0;
+    /* find beginning of value, its end is already marked */
+    value = dot+1 + strspn(dot+1, " 	");
 
-      getprocnb_end() else
-      getprocnb_begin(PHYSID,physid);
-      proc_osphysids[processor]=physid;
-      for (i=0; i<numsockets; i++)
-	if (physid == osphysids[i])
-	  break;
-      proc_physids[processor]=i;
-      hwloc_debug("%lu on socket %u (%lx)\n", processor, i, physid);
-      if (i==numsockets)
-	osphysids[(numsockets)++] = physid;
-      getprocnb_end() else
-      getprocnb_begin(COREID,coreid);
-      for (i=0; i<numcores; i++)
-	if (coreid == oscoreids[i] && proc_osphysids[processor] == core_osphysids[i])
-	  break;
-      proc_coreids[processor]=i;
-      if (i==numcores)
-	{
-	  core_osphysids[numcores] = proc_osphysids[processor];
-	  oscoreids[numcores] = coreid;
-	  (numcores)++;
-	}
-      getprocnb_end()
-	if (str[strlen(str)-1]!='\n')
-	  {
-            /* ignore end of line */
-	    if (fscanf(fd,"%*[^\n]") == EOF)
-	      break;
-	    getc(fd);
-	  }
+    /* defines for parsing numbers */
+#   define getprocnb_begin(field, var)					\
+    if (!strcmp(field,prefix)) {					\
+      var = strtoul(value,&endptr,0);					\
+      if (endptr==value) {						\
+	hwloc_debug("no number in "field" field of %s\n", path);	\
+	free(str);							\
+	return -1;							\
+      } else if (var==ULONG_MAX) {					\
+	hwloc_debug("too big "field" number in %s\n", path); 		\
+	free(str);							\
+	return -1;							\
+      }									\
+      hwloc_debug(field " %lu\n", var)
+#   define getprocnb_end()						\
     }
+    /* actually parse numbers */
+    getprocnb_begin(PROCESSOR, Pproc);
+    numprocs++;
+    if (numprocs > allocated_Lprocs) {
+      if (!allocated_Lprocs)
+	allocated_Lprocs = 8;
+      else
+        allocated_Lprocs *= 2;
+      Lprocs = realloc(Lprocs, allocated_Lprocs * sizeof(*Lprocs));
+    }
+    Lprocs[numprocs-1].Pproc = Pproc;
+    Lprocs[numprocs-1].Pcore = -1;
+    Lprocs[numprocs-1].Psock = -1;
+    Lprocs[numprocs-1].Lcore = -1;
+    Lprocs[numprocs-1].Lsock = -1;
+    Lprocs[numprocs-1].cpumodel = global_cpumodel ? strdup(global_cpumodel) : NULL;
+    getprocnb_end() else
+    getprocnb_begin(PACKAGEID, Psock);
+    Lprocs[numprocs-1].Psock = Psock;
+    getprocnb_end() else
+    getprocnb_begin(COREID, Pcore);
+    Lprocs[numprocs-1].Pcore = Pcore;
+    getprocnb_end() else {
+      /* we can't assume that we already got a processor index line:
+       * alpha/frv/h8300/m68k/microblaze/sparc have no processor lines at all, only a global entry.
+       * tile has a global section with model name before the list of processor lines.
+       */
+      hwloc_linux_parse_cpuinfo_model(prefix, value, numprocs ? &Lprocs[numprocs-1].cpumodel : &global_cpumodel);
+    }
+
+    if (noend) {
+      /* ignore end of line */
+      if (fscanf(fd,"%*[^\n]") == EOF)
+	break;
+      getc(fd);
+    }
+  }
   fclose(fd);
   free(str);
+  free(global_cpumodel);
 
-  if (processor == (unsigned long) -1) {
-    hwloc_bitmap_free(cpuset);
+  *Lprocs_p = Lprocs;
+  return numprocs;
+}
+
+static void
+hwloc_linux_free_cpuinfo(struct hwloc_linux_cpuinfo_proc * Lprocs, unsigned numprocs)
+{
+  unsigned i;
+  for(i=0; i<numprocs; i++)
+    free(Lprocs[i].cpumodel);
+  free(Lprocs);
+}
+
+static int
+look_cpuinfo(struct hwloc_topology *topology, const char *path,
+	     hwloc_bitmap_t online_cpuset)
+{
+  struct hwloc_linux_cpuinfo_proc * Lprocs = NULL;
+  /* P for physical/OS index, L for logical (e.g. in we order we get them, not in the final hwloc logical order) */
+  unsigned *Lcore_to_Pcore;
+  unsigned *Lcore_to_Psock; /* needed because Lcore is equivalent to Pcore+Psock, not to Pcore alone */
+  unsigned *Lsock_to_Psock;
+  int _numprocs;
+  unsigned numprocs;
+  unsigned numsockets=0;
+  unsigned numcores=0;
+  unsigned long Lproc;
+  unsigned missingsocket;
+  unsigned missingcore;
+  unsigned i,j;
+  hwloc_bitmap_t cpuset;
+
+  /* parse the entire cpuinfo first, fill the Lprocs array and numprocs */
+  _numprocs = hwloc_linux_parse_cpuinfo(topology, path, &Lprocs);
+  if (_numprocs <= 0)
     return -1;
+  numprocs = _numprocs;
+
+  /* initialize misc arrays, there can be at most numprocs entries */
+  Lcore_to_Pcore = malloc(numprocs * sizeof(*Lcore_to_Pcore));
+  Lcore_to_Psock = malloc(numprocs * sizeof(*Lcore_to_Psock));
+  Lsock_to_Psock = malloc(numprocs * sizeof(*Lsock_to_Psock));
+  for (i = 0; i < numprocs; i++) {
+    Lcore_to_Pcore[i] = -1;
+    Lcore_to_Psock[i] = -1;
+    Lsock_to_Psock[i] = -1;
   }
 
+  cpuset = hwloc_bitmap_alloc();
+
+  /* create PU objects */
+  for(Lproc=0; Lproc<numprocs; Lproc++) {
+    unsigned long Pproc = Lprocs[Lproc].Pproc;
+    hwloc_obj_t obj = hwloc_alloc_setup_object(HWLOC_OBJ_PU, Pproc);
+    hwloc_bitmap_set(cpuset, Pproc);
+    obj->cpuset = hwloc_bitmap_alloc();
+    hwloc_bitmap_only(obj->cpuset, Pproc);
+    hwloc_debug_2args_bitmap("cpu %lu (os %lu) has cpuset %s\n",
+			     Lproc, Pproc, obj->cpuset);
+    hwloc_insert_object_by_cpuset(topology, obj);
+  }
+
   topology->support.discovery->pu = 1;
-  /* setup the final number of procs */
-  procid_max = processor + 1;
   hwloc_bitmap_copy(online_cpuset, cpuset);
   hwloc_bitmap_free(cpuset);
 
-  hwloc_debug("%u online processors found, with id max %u\n", numprocs, procid_max);
+  hwloc_debug("%u online processors found\n", numprocs);
   hwloc_debug_bitmap("online processor cpuset: %s\n", online_cpuset);
 
   hwloc_debug("%s", "\n * Topology summary *\n");
-  hwloc_debug("%u processors (%u max id)\n", numprocs, procid_max);
+  hwloc_debug("%u processors)\n", numprocs);
 
+  /* fill Lprocs[].Lsock and Lsock_to_Psock */
+  for(Lproc=0; Lproc<numprocs; Lproc++) {
+    long Psock = Lprocs[Lproc].Psock;
+    if (Psock != -1) {
+      unsigned long Pproc = Lprocs[Lproc].Pproc;
+      for (i=0; i<numsockets; i++)
+	if ((unsigned) Psock == Lsock_to_Psock[i])
+	  break;
+      Lprocs[Lproc].Lsock = i;
+      hwloc_debug("%lu on socket %u (%lx)\n", Pproc, i, Psock);
+      if (i==numsockets) {
+	Lsock_to_Psock[numsockets] = Psock;
+	numsockets++;
+      }
+    }
+  }
   /* Some buggy Linuxes don't provide numbers for processor 0, which makes us
    * provide bogus information. We should rather drop it. */
   missingsocket=0;
+  for(j=0; j<numprocs; j++)
+    if (Lprocs[i].Psock == -1) {
+      missingsocket=1;
+      break;
+    }
+  /* create Socket objects */
+  hwloc_debug("%u sockets%s\n", numsockets, missingsocket ? ", but some missing socket" : "");
+  if (!missingsocket && numsockets>0) {
+    for (i = 0; i < numsockets; i++) {
+      struct hwloc_obj *obj = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, Lsock_to_Psock[i]);
+      char *cpumodel = NULL;
+      obj->cpuset = hwloc_bitmap_alloc();
+      for(j=0; j<numprocs; j++)
+	if ((unsigned) Lprocs[j].Lsock == i) {
+	  hwloc_bitmap_set(obj->cpuset, Lprocs[j].Pproc);
+	  if (Lprocs[j].cpumodel && !cpumodel) /* use the first one, they should all be equal anyway */
+	    cpumodel = Lprocs[j].cpumodel;
+	}
+      if (cpumodel) {
+	/* FIXME add to name as well? */
+        hwloc_obj_add_info(obj, "CPUModel", cpumodel);
+      }
+      if (topology->backend_params.linuxfs.utsname.machine[0] != '\0')
+	hwloc_obj_add_info(obj, "CPUType", topology->backend_params.linuxfs.utsname.machine);
+      hwloc_debug_1arg_bitmap("Socket %d has cpuset %s\n", i, obj->cpuset);
+      hwloc_insert_object_by_cpuset(topology, obj);
+    }
+    hwloc_debug("%s", "\n");
+  }
+
+  /* fill Lprocs[].Lcore, Lcore_to_Psock and Lcore_to_Pcore */
+  for(Lproc=0; Lproc<numprocs; Lproc++) {
+    long Pcore = Lprocs[Lproc].Pcore;
+    if (Pcore != -1) {
+      for (i=0; i<numcores; i++)
+	if ((unsigned) Pcore == Lcore_to_Pcore[i] && (unsigned) Lprocs[Lproc].Psock == Lcore_to_Psock[i])
+	  break;
+      Lprocs[Lproc].Lcore = i;
+      if (i==numcores) {
+	Lcore_to_Psock[numcores] = Lprocs[Lproc].Psock;
+	Lcore_to_Pcore[numcores] = Pcore;
+	numcores++;
+      }
+    }
+  }
+  /* Some buggy Linuxes don't provide numbers for processor 0, which makes us
+   * provide bogus information. We should rather drop it. */
   missingcore=0;
-  hwloc_bitmap_foreach_begin(processor, online_cpuset)
-    if (proc_physids[processor] == (unsigned) -1)
-      missingsocket=1;
-    if (proc_coreids[processor] == (unsigned) -1)
+  for(j=0; j<numprocs; j++)
+    if (Lprocs[i].Pcore == -1) {
       missingcore=1;
-    if (missingcore && missingsocket)
-      /* No usable information, no need to continue */
       break;
-  hwloc_bitmap_foreach_end();
+    }
+  /* create Core objects */
+  hwloc_debug("%u cores%s\n", numcores, missingcore ? ", but some missing core" : "");
+  if (!missingcore && numcores>0) {
+    for (i = 0; i < numcores; i++) {
+      struct hwloc_obj *obj = hwloc_alloc_setup_object(HWLOC_OBJ_CORE, Lcore_to_Pcore[i]);
+      obj->cpuset = hwloc_bitmap_alloc();
+      for(j=0; j<numprocs; j++)
+	if ((unsigned) Lprocs[j].Lcore == i)
+	  hwloc_bitmap_set(obj->cpuset, Lprocs[j].Pproc);
+      hwloc_debug_1arg_bitmap("Core %d has cpuset %s\n", i, obj->cpuset);
+      hwloc_insert_object_by_cpuset(topology, obj);
+    }
+    hwloc_debug("%s", "\n");
+  }
 
-  hwloc_debug("%u sockets%s\n", numsockets, missingsocket ? ", but some missing socket" : "");
-  if (!missingsocket && numsockets>0)
-    hwloc_setup_level(procid_max, numsockets, osphysids, proc_physids, topology, HWLOC_OBJ_SOCKET);
+  free(Lcore_to_Pcore);
+  free(Lcore_to_Psock);
+  free(Lsock_to_Psock);
 
+  hwloc_linux_free_cpuinfo(Lprocs, numprocs);
+
   look_powerpc_device_tree(topology);
-
-  hwloc_debug("%u cores%s\n", numcores, missingcore ? ", but some missing core" : "");
-  if (!missingcore && numcores>0)
-    hwloc_setup_level(procid_max, numcores, oscoreids, proc_coreids, topology, HWLOC_OBJ_CORE);
-
   return 0;
 }
 
@@ -2818,7 +3129,7 @@
   snprintf(sysfs_path, sizeof(sysfs_path), "/sys/class/dmi/id/%s", sysfs_name);
 
   dmi_line[0] = '\0';
-  fd = hwloc_fopen(sysfs_path, "r", topology->backend_params.sysfs.root_fd);
+  fd = hwloc_fopen(sysfs_path, "r", topology->backend_params.linuxfs.root_fd);
   if (fd) {
     tmp = fgets(dmi_line, sizeof(dmi_line), fd);
     fclose (fd);
@@ -2856,17 +3167,21 @@
 }
 
 void
-hwloc_look_linux(struct hwloc_topology *topology)
+hwloc_look_linuxfs(struct hwloc_topology *topology)
 {
   DIR *nodes_dir;
   unsigned nbnodes;
   char *cpuset_mntpnt, *cgroup_mntpnt, *cpuset_name = NULL;
   int err;
 
+  memset(&topology->backend_params.linuxfs.utsname, 0, sizeof(topology->backend_params.linuxfs.utsname));
+  if (topology->is_thissystem)
+    uname(&topology->backend_params.linuxfs.utsname);
+
   /* Gather the list of admin-disabled cpus and mems */
-  hwloc_find_linux_cpuset_mntpnt(&cgroup_mntpnt, &cpuset_mntpnt, topology->backend_params.sysfs.root_fd);
+  hwloc_find_linux_cpuset_mntpnt(&cgroup_mntpnt, &cpuset_mntpnt, topology->backend_params.linuxfs.root_fd);
   if (cgroup_mntpnt || cpuset_mntpnt) {
-    cpuset_name = hwloc_read_linux_cpuset_name(topology->backend_params.sysfs.root_fd, topology->pid);
+    cpuset_name = hwloc_read_linux_cpuset_name(topology->backend_params.linuxfs.root_fd, topology->pid);
     if (cpuset_name) {
       hwloc_admin_disable_set_from_cpuset(topology, cgroup_mntpnt, cpuset_mntpnt, cpuset_name, "cpus", topology->levels[0][0]->allowed_cpuset);
       hwloc_admin_disable_set_from_cpuset(topology, cgroup_mntpnt, cpuset_mntpnt, cpuset_name, "mems", topology->levels[0][0]->allowed_nodeset);
@@ -2875,7 +3190,7 @@
     free(cpuset_mntpnt);
   }
 
-  nodes_dir = hwloc_opendir("/proc/nodes", topology->backend_params.sysfs.root_fd);
+  nodes_dir = hwloc_opendir("/proc/nodes", topology->backend_params.linuxfs.root_fd);
   if (nodes_dir) {
     /* Kerrighed */
     struct dirent *dirent;
@@ -2920,7 +3235,8 @@
     hwloc_get_procfs_meminfo_info(topology, &topology->levels[0][0]->memory);
 
     /* Gather NUMA information. Must be after hwloc_get_procfs_meminfo_info so that the hugepage size is known */
-    look_sysfsnode(topology, "/sys/devices/system/node", &nbnodes);
+    if (look_sysfsnode(topology, "/sys/bus/node/devices", &nbnodes) < 0)
+      look_sysfsnode(topology, "/sys/devices/system/node", &nbnodes);
 
     /* if we found some numa nodes, the machine object has no local memory */
     if (nbnodes) {
@@ -2933,8 +3249,10 @@
 
     /* Gather the list of cpus now */
     if (getenv("HWLOC_LINUX_USE_CPUINFO")
-	|| (hwloc_access("/sys/devices/system/cpu/cpu0/topology/core_siblings", R_OK, topology->backend_params.sysfs.root_fd) < 0
-	    && hwloc_access("/sys/devices/system/cpu/cpu0/topology/thread_siblings", R_OK, topology->backend_params.sysfs.root_fd) < 0)) {
+	|| (hwloc_access("/sys/devices/system/cpu/cpu0/topology/core_siblings", R_OK, topology->backend_params.linuxfs.root_fd) < 0
+	    && hwloc_access("/sys/devices/system/cpu/cpu0/topology/thread_siblings", R_OK, topology->backend_params.linuxfs.root_fd) < 0
+	    && hwloc_access("/sys/bus/cpu/devices/cpu0/topology/thread_siblings", R_OK, topology->backend_params.linuxfs.root_fd) < 0
+	    && hwloc_access("/sys/bus/cpu/devices/cpu0/topology/core_siblings", R_OK, topology->backend_params.linuxfs.root_fd) < 0)) {
 	/* revert to reading cpuinfo only if /sys/.../topology unavailable (before 2.6.16)
 	 * or not containing anything interesting */
       err = look_cpuinfo(topology, "/proc/cpuinfo", topology->levels[0][0]->online_cpuset);
@@ -2947,7 +3265,14 @@
           hwloc_setup_pu_level(topology, 1);
       }
     } else {
-      look_sysfscpu(topology, "/sys/devices/system/cpu");
+      struct hwloc_linux_cpuinfo_proc * Lprocs = NULL;
+      int numprocs = hwloc_linux_parse_cpuinfo(topology, "/proc/cpuinfo", &Lprocs);
+      if (numprocs <= 0)
+	Lprocs = NULL;
+      if (look_sysfscpu(topology, "/sys/bus/cpu/devices", Lprocs, numprocs) < 0)
+        look_sysfscpu(topology, "/sys/devices/system/cpu", Lprocs, numprocs);
+      if (Lprocs)
+	hwloc_linux_free_cpuinfo(Lprocs, numprocs);
     }
 
     /* Gather DMI info */
@@ -2962,11 +3287,12 @@
 
   /* gather uname info if fsroot wasn't changed */
   if (topology->is_thissystem)
+     /* FIXME: reuse topology->backend_params.linuxfs.utsname */
      hwloc_add_uname_info(topology);
 }
 
 void
-hwloc_set_linux_hooks(struct hwloc_topology *topology)
+hwloc_set_linuxfs_hooks(struct hwloc_topology *topology)
 {
   topology->set_thisthread_cpubind = hwloc_linux_set_thisthread_cpubind;
   topology->get_thisthread_cpubind = hwloc_linux_get_thisthread_cpubind;
@@ -2986,6 +3312,7 @@
 #ifdef HWLOC_HAVE_SET_MEMPOLICY
   topology->set_thisthread_membind = hwloc_linux_set_thisthread_membind;
   topology->get_thisthread_membind = hwloc_linux_get_thisthread_membind;
+  topology->get_area_membind = hwloc_linux_get_area_membind;
 #endif /* HWLOC_HAVE_SET_MEMPOLICY */
 #ifdef HWLOC_HAVE_MBIND
   topology->set_area_membind = hwloc_linux_set_area_membind;

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-osf.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-osf.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-osf.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -313,7 +313,7 @@
       }
     }
 
-    hwloc_topology__set_distance_matrix(topology, HWLOC_OBJ_NODE, nbnodes, indexes, nodes, distances, 0 /* OS cannot force */);
+    hwloc_distances_set(topology, HWLOC_OBJ_NODE, nbnodes, indexes, nodes, distances, 0 /* OS cannot force */);
   }
   radsetdestroy(&radset2);
   radsetdestroy(&radset);

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris-chiptype.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris-chiptype.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris-chiptype.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,331 @@
+/*
+ * Copyright (c) 2009-2010 Oracle and/or its affiliates.  All rights reserved. 
+ *
+ * $COPYRIGHT$
+ * 
+ * Additional copyrights may follow
+ * 
+ * $HEADER$
+ */
+
+#include <private/autogen/config.h>
+#include <private/solaris-chiptype.h>
+#include <stdlib.h>
+#include <strings.h>
+
+#ifdef HAVE_PICL_H
+#include <sys/systeminfo.h>
+#include <picl.h>
+
+/*****************************************************************************
+   Order of this list is important for the assign_value and
+   assign_string_value routines
+*****************************************************************************/
+
+static const char* items[] = {
+  "clock-frequency",
+  "cpu-mhz",
+  "ecache-size",
+  "l2-cache-size",
+  "sectored-l2-cache-size",
+  "implementation#",
+  "manufacturer#",
+  "compatible",
+  "ProcessorType",
+  "vendor-id",
+  "brand-string"
+};
+
+#define NUM_ITEMS (sizeof(items) / sizeof(items[0]))
+
+/*****************************************************************************
+SPARC strings for chip modes and implementation
+*****************************************************************************/
+static const char* sparc_modes[] = {
+    "UNKNOWN",
+    "SPITFIRE",
+    "BLACKBIRD",
+    "CHEETAH",
+    "SPARC64_VI",
+    "T1",
+    "T2",
+    "SPARC64_VII",
+    "ROCK"
+};
+
+/*****************************************************************************
+Default values are for Unknown so we can build up from there.
+*****************************************************************************/
+
+static long dss_chip_mode         = MODE_UNKNOWN;
+static long dss_chip_impl         = IMPL_SPITFIRE;
+static long dss_chip_cache        = TWO_MEG_CACHE;
+static long dss_chip_manufacturer = TI_MANUFACTURER;
+static long long dss_chip_speed   = SPITFIRE_SPEED;
+static char dss_chip_type[PICL_PROPNAMELEN_MAX];
+static char dss_chip_model[PICL_PROPNAMELEN_MAX];
+static int  called_cpu_probe      = 0;
+
+/*****************************************************************************
+Assigns values based on the value of index.  For this reason, the order of
+the items array is important.
+*****************************************************************************/
+static void assign_value(int index, long long val) {
+  if (index == 0) {  /* clock-frequency */
+    dss_chip_speed = val;
+  }
+  if (index == 1) {  /* cpu-mhz */
+    dss_chip_speed = val * 1000000; /* Scale since value was in MHz */
+  }
+  else if ((index >= 2) && (index <= 4)) {
+    /* ecache-size, l2-cache-size, sectored-l2-cache-size */
+    dss_chip_cache = val;
+  }
+  else if (index == 5) {
+    /* implementation#  T1, T2, and Rock do not have this, see RFE 6615268 */
+    dss_chip_impl = val;
+    if (dss_chip_impl == IMPL_SPITFIRE) {
+      dss_chip_mode = 1;
+    }
+    else if ((dss_chip_impl >= IMPL_BLACKBIRD) &&
+             (dss_chip_impl <= IMPL_HUMMINGBIRD)) {
+      dss_chip_mode = 2;
+    }
+    else if ((dss_chip_impl >= IMPL_CHEETAH) &&
+             (dss_chip_impl <= IMPL_PANTHER)) {
+      dss_chip_mode = 3;
+    }
+    else if (dss_chip_impl == IMPL_SPARC64_VI) {
+      dss_chip_mode = 4;
+    }
+    else if (dss_chip_impl == IMPL_NIAGARA) {
+      dss_chip_mode = 5;
+    }
+    else if (dss_chip_impl == IMPL_NIAGARA_2) {
+      dss_chip_mode = 6;
+    }
+    else if (dss_chip_impl == IMPL_SPARC64_VII) {
+      dss_chip_mode = 7;
+    }
+    else if (dss_chip_impl == IMPL_ROCK) {
+      dss_chip_mode = 8;
+    }
+  }
+  else if (index == 6) { /* manufacturer# */
+    dss_chip_manufacturer = val;
+  }
+}
+
+/*****************************************************************************
+Assigns values based on the value of index.  For this reason, the order of
+the items array is important.
+*****************************************************************************/
+static void assign_string_value(int index, char* string_val) {
+  if (index == 7) { /* compatible */
+    if (strncasecmp(string_val, "FJSV,SPARC64-VI",
+                    PICL_PROPNAMELEN_MAX) == 0) {
+      dss_chip_mode = 4;
+    }
+    else if (strncasecmp(string_val, "SUNW,UltraSPARC-T1",
+                         PICL_PROPNAMELEN_MAX) == 0) {
+      dss_chip_mode = 5;
+    }
+    else if (strncasecmp(string_val, "SUNW,UltraSPARC-T2",
+                         PICL_PROPNAMELEN_MAX) == 0) {
+      dss_chip_mode = 6;
+    }
+    else if (strncasecmp(string_val, "FJSV,SPARC64-VII",
+                         PICL_PROPNAMELEN_MAX) == 0) {
+      dss_chip_mode = 7;
+    }
+    else if (strncasecmp(string_val, "SUNW,Rock",
+                         PICL_PROPNAMELEN_MAX) == 0) {
+      dss_chip_mode = 8;
+    }
+  } else if (index == 8) {  /* ProcessorType */
+      strncpy(&dss_chip_type[0], string_val, PICL_PROPNAMELEN_MAX);
+  } else if (index == 10) { /* brand-string */
+      strncpy(&dss_chip_model[0], string_val, PICL_PROPNAMELEN_MAX);
+  }
+
+}
+
+/*****************************************************************************
+Gets called by probe_cpu.  Cycles through the table values until we find
+what we are looking for.
+*****************************************************************************/
+static void search_table(int index, picl_prophdl_t table_hdl) {
+
+  picl_prophdl_t  col_hdl;
+  picl_prophdl_t  row_hdl;
+  picl_propinfo_t p_info;
+  int             val;
+  char            string_val[PICL_PROPNAMELEN_MAX];
+
+  for (val = picl_get_next_by_col(table_hdl, &row_hdl); val != PICL_ENDOFLIST;
+       val = picl_get_next_by_col(row_hdl, &row_hdl)) {
+    if (val == PICL_SUCCESS) {
+      for (col_hdl = row_hdl; val != PICL_ENDOFLIST;
+           val = picl_get_next_by_row(col_hdl, &col_hdl)) {
+        if (val == PICL_SUCCESS) {
+          val = picl_get_propinfo(col_hdl, &p_info);
+          if (val == PICL_SUCCESS) {
+            if (p_info.type == PICL_PTYPE_CHARSTRING) {
+              val = picl_get_propval(col_hdl, &string_val, sizeof(string_val));
+              if (val == PICL_SUCCESS) {
+                assign_string_value(index, string_val);
+              }
+            }
+          }
+        }
+      }
+    }
+  }
+}
+
+/*****************************************************************************
+Gets called by picl_walk_tree_by_class.  Then it cycles through the properties
+until we find what we are looking for.  Once we are done, we return
+PICL_WALK_TERMINATE to stop picl_walk_tree_by_class from traversing the tree.
+
+Note that PICL_PTYPE_UNSIGNED_INT and PICL_PTYPE_INT can either be 4-bytes
+or 8-bytes.
+*****************************************************************************/
+static int probe_cpu(picl_nodehdl_t node_hdl, void* dummy_arg) {
+
+  picl_prophdl_t  p_hdl;
+  picl_prophdl_t  table_hdl;
+  picl_propinfo_t p_info;
+  long long       long_long_val;
+  unsigned int    uint_val;
+  int             index;
+  int             int_val;
+  int             val;
+  char            string_val[PICL_PROPNAMELEN_MAX];
+
+  val = picl_get_first_prop(node_hdl, &p_hdl);
+  while (val == PICL_SUCCESS) {
+    called_cpu_probe = 1;
+    val = picl_get_propinfo(p_hdl, &p_info);
+    if (val == PICL_SUCCESS) {
+      for (index = 0; index < NUM_ITEMS; index++) {
+        if (strcasecmp(p_info.name, items[index]) == 0) {
+          if (p_info.type == PICL_PTYPE_UNSIGNED_INT) {
+            if (p_info.size == sizeof(uint_val)) {
+              val = picl_get_propval(p_hdl, &uint_val, sizeof(uint_val));
+              if (val == PICL_SUCCESS) {
+                long_long_val = uint_val;
+                assign_value(index, long_long_val);
+              }
+            }
+            else if (p_info.size == sizeof(long_long_val)) {
+              val = picl_get_propval(p_hdl, &long_long_val,
+                                     sizeof(long_long_val));
+              if (val == PICL_SUCCESS) {
+                assign_value(index, long_long_val);
+              }
+            }
+          }
+          else if (p_info.type == PICL_PTYPE_INT) {
+            if (p_info.size == sizeof(int_val)) {
+              val = picl_get_propval(p_hdl, &int_val, sizeof(int_val));
+              if (val == PICL_SUCCESS) {
+                long_long_val = int_val;
+                assign_value(index, long_long_val);
+              }
+            }
+            else if (p_info.size == sizeof(long_long_val)) {
+              val = picl_get_propval(p_hdl, &long_long_val,
+                                     sizeof(long_long_val));
+              if (val == PICL_SUCCESS) {
+                assign_value(index, long_long_val);
+              }
+            }
+          }
+          else if (p_info.type == PICL_PTYPE_CHARSTRING) {
+            val = picl_get_propval(p_hdl, &string_val, sizeof(string_val));
+            if (val == PICL_SUCCESS) {
+              assign_string_value(index, string_val);
+            }
+          }
+          else if (p_info.type == PICL_PTYPE_TABLE) {
+            val = picl_get_propval(p_hdl, &table_hdl, p_info.size);
+            if (val == PICL_SUCCESS) {
+              search_table(index, table_hdl);
+            }
+          }
+          break;
+        } else if (index == NUM_ITEMS-1) {
+	  if (p_info.type == PICL_PTYPE_CHARSTRING) {
+            val = picl_get_propval(p_hdl, &string_val, sizeof(string_val));
+            if (val == PICL_SUCCESS) {
+            }	  
+	  }
+	} 
+      }
+    }
+
+    val = picl_get_next_prop(p_hdl, &p_hdl);
+  }
+  return PICL_WALK_TERMINATE;
+}
+
+
+/*****************************************************************************
+Initializes, gets the root, then walks the picl tree looking for information
+
+Currently, the "core" class is only needed for OPL systems
+*****************************************************************************/
+char* hwloc_solaris_get_chip_type(void) {
+  picl_nodehdl_t root;
+  int            val;
+  static char chip_type[PICL_PROPNAMELEN_MAX];
+
+  val = picl_initialize();
+  if (val != PICL_SUCCESS) { /* Can't initialize session with PICL daemon */
+      return(NULL);
+  }
+  val = picl_get_root(&root);
+  if (val != PICL_SUCCESS) {  /* Failed to get root node of the PICL tree */
+      return(NULL);
+  }
+  val = picl_walk_tree_by_class(root, "cpu", (void *)NULL, probe_cpu);
+  val = picl_walk_tree_by_class(root, "core", (void *)NULL, probe_cpu);
+  picl_shutdown();
+
+  if (called_cpu_probe) {
+      strncpy(chip_type, dss_chip_type, PICL_PROPNAMELEN_MAX);
+  } else {
+      /* no picl information on machine available */
+      sysinfo(SI_HW_PROVIDER, chip_type, PICL_PROPNAMELEN_MAX);
+  }
+  return(chip_type);
+}
+
+/*****************************************************************************
+Initializes, gets the root, then walks the picl tree looking for information
+
+Currently, the "core" class is only needed for OPL systems
+*****************************************************************************/
+char *hwloc_solaris_get_chip_model(void) {
+    
+    if (called_cpu_probe) {
+	if (dss_chip_mode != MODE_UNKNOWN) { /* SPARC chip */
+	    strncpy(dss_chip_model, sparc_modes[dss_chip_mode], 
+		    PICL_PROPNAMELEN_MAX);
+	}
+    } else {
+	/* no picl information on machine available */
+	sysinfo(SI_PLATFORM, dss_chip_model, PICL_PROPNAMELEN_MAX);
+    }
+    return(dss_chip_model);
+}
+
+#else
+char* hwloc_solaris_get_chip_type(void) {
+  return NULL;
+}
+char *hwloc_solaris_get_chip_model(void) {
+  return NULL;
+}
+#endif

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-solaris.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,8 +1,9 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * Copyright © 2011      Oracle and/or its affiliates.  All rights reserved.
  * See COPYING in top-level directory.
  */
 
@@ -10,6 +11,7 @@
 #include <hwloc.h>
 #include <private/private.h>
 #include <private/debug.h>
+#include <private/solaris-chiptype.h>
 
 #include <stdio.h>
 #include <errno.h>
@@ -426,7 +428,7 @@
 	for (j = 0; j < curlgrp; j++)
           distances[i*curlgrp+j] = (float) lgrp_latency_cookie(cookie, glob_lgrps[i]->os_index, glob_lgrps[j]->os_index, LGRP_LAT_CPU_TO_MEM);
       }
-      hwloc_topology__set_distance_matrix(topology, HWLOC_OBJ_NODE, curlgrp, indexes, glob_lgrps, distances, 0 /* OS cannot force */);
+      hwloc_distances_set(topology, HWLOC_OBJ_NODE, curlgrp, indexes, glob_lgrps, distances, 0 /* OS cannot force */);
     }
 #endif /* HAVE_LGRP_LATENCY_COOKIE */
   }
@@ -440,6 +442,10 @@
 static int
 hwloc_look_kstat(struct hwloc_topology *topology)
 {
+  /* FIXME this assumes that all sockets are identical */
+  char *CPUType = hwloc_solaris_get_chip_type();
+  char *CPUModel = hwloc_solaris_get_chip_model();
+
   kstat_ctl_t *kc = kstat_open();
   kstat_t *ksp;
   kstat_named_t *stat;
@@ -608,8 +614,22 @@
        * however. */
     }
 
-  if (look_chips)
-    hwloc_setup_level(procid_max, numsockets, osphysids, proc_physids, topology, HWLOC_OBJ_SOCKET);
+  if (look_chips) {
+    struct hwloc_obj *obj;
+    unsigned j;
+    hwloc_debug("%d Sockets\n", numsockets);
+    for (j = 0; j < numsockets; j++) {
+      obj = hwloc_alloc_setup_object(HWLOC_OBJ_SOCKET, osphysids[j]);
+      if (CPUType)
+	hwloc_obj_add_info(obj, "CPUType", CPUType);
+      if (CPUModel)
+	hwloc_obj_add_info(obj, "CPUModel", CPUModel);
+      hwloc_object_cpuset_from_array(obj, j, proc_physids, procid_max);
+      hwloc_debug_1arg_bitmap("Socket %d has cpuset %s\n", j, obj->cpuset);
+      hwloc_insert_object_by_cpuset(topology, obj);
+    }
+    hwloc_debug("%s", "\n");
+  }
 
   if (look_cores)
     hwloc_setup_level(procid_max, numcores, oscoreids, proc_coreids, topology, HWLOC_OBJ_CORE);

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-synthetic.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-synthetic.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-synthetic.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -28,7 +28,12 @@
   int cache_depth = 0, group_depth = 0;
   int nb_machine_levels = 0, nb_node_levels = 0;
   int nb_pu_levels = 0;
+  int verbose = 0;
+  char *env = getenv("HWLOC_SYNTHETIC_VERBOSE");
 
+  if (env)
+    verbose = atoi(env);
+
   assert(topology->backend_type == HWLOC_BACKEND_NONE);
 
   for (pos = description, count = 1; *pos; pos = next_pos) {
@@ -58,12 +63,13 @@
 	type = HWLOC_OBJ_MISC;
       else if (!hwloc_namecoloncmp(pos, "group", 2))
 	type = HWLOC_OBJ_GROUP;
-      else
-        fprintf(stderr, "Unknown object type `%s'\n", pos);
+      else if (verbose)
+        fprintf(stderr, "Synthetic string with unknown object type `%s'\n", pos);
 
       next_pos = strchr(pos, ':');
       if (!next_pos) {
-	fprintf(stderr,"synthetic string doesn't have a `:' after object type at '%s'\n", pos);
+	if (verbose)
+	  fprintf(stderr,"Synthetic string doesn't have a `:' after object type at '%s'\n", pos);
 	errno = EINVAL;
 	return -1;
       }
@@ -71,18 +77,21 @@
     }
     item = strtoul(pos, (char **)&next_pos, 0);
     if (next_pos == pos) {
-      fprintf(stderr,"synthetic string doesn't have a number of objects at '%s'\n", pos);
+      if (verbose)
+	fprintf(stderr,"Synthetic string doesn't have a number of objects at '%s'\n", pos);
       errno = EINVAL;
       return -1;
     }
 
     if (count + 1 >= HWLOC_SYNTHETIC_MAX_DEPTH) {
-      fprintf(stderr,"Too many synthetic levels, max %d\n", HWLOC_SYNTHETIC_MAX_DEPTH);
+      if (verbose)
+	fprintf(stderr,"Too many synthetic levels, max %d\n", HWLOC_SYNTHETIC_MAX_DEPTH);
       errno = EINVAL;
       return -1;
     }
     if (item > UINT_MAX) {
-      fprintf(stderr,"Too big arity, max %u\n", UINT_MAX);
+      if (verbose)
+	fprintf(stderr,"Too big arity, max %u\n", UINT_MAX);
       errno = EINVAL;
       return -1;
     }
@@ -93,7 +102,8 @@
   }
 
   if (count <= 0) {
-    fprintf(stderr,"synthetic string doesn't contain any object\n");
+    if (verbose)
+      fprintf(stderr, "Synthetic string doesn't contain any object\n");
     errno = EINVAL;
     return -1;
   }
@@ -125,9 +135,10 @@
     switch (type) {
       case HWLOC_OBJ_PU:
 	if (nb_pu_levels) {
-	    fprintf(stderr,"synthetic string can not have several PU levels\n");
-	    errno = EINVAL;
-	    return -1;
+	  if (verbose)
+	    fprintf(stderr, "Synthetic string can not have several PU levels\n");
+	  errno = EINVAL;
+	  return -1;
 	}
 	nb_pu_levels++;
 	break;
@@ -149,23 +160,27 @@
   }
 
   if (!nb_pu_levels) {
-    fprintf(stderr,"synthetic string missing ending number of PUs\n");
+    if (verbose)
+      fprintf(stderr, "Synthetic string missing ending number of PUs\n");
     errno = EINVAL;
     return -1;
   }
 
   if (nb_pu_levels > 1) {
-    fprintf(stderr,"synthetic string can not have several PU levels\n");
+    if (verbose)
+      fprintf(stderr, "Synthetic string can not have several PU levels\n");
     errno = EINVAL;
     return -1;
   }
   if (nb_node_levels > 1) {
-    fprintf(stderr,"synthetic string can not have several NUMA node levels\n");
+    if (verbose)
+      fprintf(stderr, "Synthetic string can not have several NUMA node levels\n");
     errno = EINVAL;
     return -1;
   }
   if (nb_machine_levels > 1) {
-    fprintf(stderr,"synthetic string can not have several machine levels\n");
+    if (verbose)
+      fprintf(stderr, "Synthetic string can not have several machine levels\n");
     errno = EINVAL;
     return -1;
   }
@@ -191,6 +206,7 @@
   }
 
   topology->backend_type = HWLOC_BACKEND_SYNTHETIC;
+  topology->backend_params.synthetic.string = strdup(description);
   topology->backend_params.synthetic.arity[count-1] = 0;
   topology->is_thissystem = 0;
 
@@ -201,6 +217,7 @@
 hwloc_backend_synthetic_exit(struct hwloc_topology *topology)
 {
   assert(topology->backend_type == HWLOC_BACKEND_SYNTHETIC);
+  free(topology->backend_params.synthetic.string);
   topology->backend_type = HWLOC_BACKEND_NONE;
 }
 
@@ -343,5 +360,6 @@
   hwloc_bitmap_free(cpuset);
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "Synthetic");
+  hwloc_obj_add_info(topology->levels[0][0], "SyntheticDescription", topology->backend_params.synthetic.string);
 }
 

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-windows.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-windows.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-windows.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -579,8 +579,8 @@
       }
 
       for (procInfo = procInfoTotal;
-	   (void*) procInfo < (void*) ((unsigned long) procInfoTotal + length);
-	   procInfo = (void*) ((unsigned long) procInfo + procInfo->Size)) {
+	   (void*) procInfo < (void*) ((uintptr_t) procInfoTotal + length);
+	   procInfo = (void*) ((uintptr_t) procInfo + procInfo->Size)) {
         unsigned num, i;
         GROUP_AFFINITY *GroupMask;
 

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-x86.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
- * Copyright © 2010-2011 INRIA.  All rights reserved.
- * Copyright © 2010-2011 Université Bordeaux 1
+ * Copyright © 2010-2011 inria.  All rights reserved.
+ * Copyright © 2010-2012 Université Bordeaux 1
  * Copyright © 2010-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  *
@@ -18,9 +18,11 @@
 #include <hwloc.h>
 #include <private/private.h>
 #include <private/debug.h>
-#include <private/cpuid.h>
 #include <private/misc.h>
 
+#if defined(HWLOC_HAVE_CPUID)
+#include <private/cpuid.h>
+
 struct cacheinfo {
   unsigned type;
   unsigned level;
@@ -162,7 +164,6 @@
 
   /* AMD doesn't actually provide 0x04 information */
   if (cpuid_type != amd && highest_cpuid >= 0x04) {
-    cachenum = 0;
     for (cachenum = 0; ; cachenum++) {
       unsigned type;
       eax = 0x04;
@@ -212,7 +213,7 @@
       else
         cache->ways = ways = ((ebx >> 22) & 0x3ff) + 1;
       cache->sets = sets = ecx + 1;
-      cache->size = linesize * linepart * ways * sets;
+      cache->size = linesize * linepart * ways * sets; /* FIXME: what if ways == -1 ? */
 
       hwloc_debug("cache %u type %u L%u t%u c%u linesize %u linepart %u ways %u sets %u, size %uKB\n", cachenum, cache->type, cache->level, cache->nbthreads_sharing, infos->max_nbcores, linesize, linepart, ways, sets, cache->size >> 10);
       infos->max_nbthreads = infos->max_log_proc / infos->max_nbcores;
@@ -458,8 +459,9 @@
 #define AMD_EBX ('A' | ('u'<<8) | ('t'<<16) | ('h'<<24))
 #define AMD_EDX ('e' | ('n'<<8) | ('t'<<16) | ('i'<<24))
 #define AMD_ECX ('c' | ('A'<<8) | ('M'<<16) | ('D'<<24))
+#endif
 
-void hwloc_look_x86(struct hwloc_topology *topology, unsigned nbprocs)
+void hwloc_look_x86(struct hwloc_topology *topology, unsigned nbprocs __hwloc_attribute_unused)
 {
     /* This function must always be here, but it's ok if it's empty. */
 #if defined(HWLOC_HAVE_CPUID)
@@ -536,8 +538,10 @@
 
   hwloc_obj_add_info(topology->levels[0][0], "Backend", "x86");
 
+#if defined(HWLOC_HAVE_CPUID)
  free:
   if (NULL != infos) {
       free(infos);
   }
+#endif
 }

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology-xml.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2011 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
@@ -116,7 +116,7 @@
     fclose(file);
 
     topology->backend_params.xml.buffer = buffer;
-    buflen = offset+1;
+    /* buflen = offset+1; */
   }
 
   topology->is_thissystem = 0;
@@ -491,10 +491,10 @@
 	if (hwloc__xml_verbose())
 	  fprintf(stderr, "ignoring unexpected xml attr type %u\n", attr->type);
       }
-    return -1;
 #else
     assert(0);
 #endif
+    return -1;
   } else {
     int namelen;
     size_t len, escaped;
@@ -577,14 +577,14 @@
 	if (child->content && child->content[0] != '\0' && child->content[0] != '\n')
 	  if (hwloc__xml_verbose())
 	    fprintf(stderr, "ignoring object text content %s\n", (const char*) child->content);
-      } else {
+      } else if (child->type != XML_COMMENT_NODE) {
 	if (hwloc__xml_verbose())
 	  fprintf(stderr, "ignoring unexpected xml node type %u\n", child->type);
       }
-    return 0;
 #else
     assert(0);
 #endif
+    return 0;
   } else {
     char *buffer = state->tagbuffer;
     char *end;
@@ -643,10 +643,10 @@
   if (state->use_libxml) {
 #ifdef HWLOC_HAVE_LIBXML2
     /* nothing */
-    return 0;
 #else
     assert(0);
 #endif
+    return 0;
   } else {
     char *buffer = state->tagbuffer;
     char *end;
@@ -768,17 +768,16 @@
   }
 
   if (nbobjs && reldepth && latbase) {
-    int idx = obj->distances_count;
     unsigned i;
     float *matrix, latmax = 0;
+    struct hwloc_xml_imported_distances_s *distances;
 
-    obj->distances = realloc(obj->distances, (idx+1)*sizeof(*obj->distances));
-    obj->distances_count = idx+1;
-    obj->distances[idx] = malloc(sizeof(**obj->distances));
-    obj->distances[idx]->relative_depth = reldepth;
-    obj->distances[idx]->nbobjs = nbobjs;
-    obj->distances[idx]->latency = matrix = malloc(nbobjs*nbobjs*sizeof(float));
-    obj->distances[idx]->latency_base = latbase;
+    distances = malloc(sizeof(*distances));
+    distances->root = obj;
+    distances->distances.relative_depth = reldepth;
+    distances->distances.nbobjs = nbobjs;
+    distances->distances.latency = matrix = malloc(nbobjs*nbobjs*sizeof(float));
+    distances->distances.latency_base = latbase;
 
     for(i=0; i<nbobjs*nbobjs; i++) {
       struct hwloc__xml_import_state_s childstate;
@@ -788,17 +787,15 @@
       ret = hwloc__xml_import_find_child(state, &childstate, &tag);
       if (ret <= 0 || strcmp(tag, "latency")) {
 	/* a latency child is needed */
-	free(obj->distances[idx]->latency);
-	free(obj->distances[idx]);
-	obj->distances_count--;
+	free(distances->distances.latency);
+	free(distances);
 	return -1;
       }
 
       ret = hwloc__xml_import_next_attr(&childstate, &attrname, &attrvalue);
       if (ret < 0 || strcmp(attrname, "value")) {
-	free(obj->distances[idx]->latency);
-	free(obj->distances[idx]);
-	obj->distances_count--;
+	free(distances->distances.latency);
+	free(distances);
 	return -1;
       }
 
@@ -814,7 +811,14 @@
       hwloc__xml_import_close_child(&childstate);
     }
 
-    obj->distances[idx]->latency_max = latmax;
+    distances->distances.latency_max = latmax;
+
+    if (topology->backend_params.xml.last_distances)
+      topology->backend_params.xml.last_distances->next = distances;
+    else
+      topology->backend_params.xml.first_distances = distances;
+    distances->prev = topology->backend_params.xml.last_distances;
+    distances->next = NULL;
   }
 
   return hwloc__xml_import_close_tag(state);
@@ -879,6 +883,49 @@
  ********* main XML import *********
  ***********************************/
 
+static void
+hwloc_xml__handle_distances(struct hwloc_topology *topology)
+{
+  struct hwloc_xml_imported_distances_s *xmldist, *next = topology->backend_params.xml.first_distances;
+
+  if (!next)
+    return;
+
+  /* connect things now because we need levels to check/build, they'll be reconnected properly later anyway */
+  hwloc_connect_children(topology->levels[0][0]);
+  hwloc_connect_levels(topology);
+
+  while ((xmldist = next) != NULL) {
+    hwloc_obj_t root = xmldist->root;
+    unsigned depth = root->depth + xmldist->distances.relative_depth;
+    unsigned nbobjs = hwloc_get_nbobjs_inside_cpuset_by_depth(topology, root->cpuset, depth);
+    if (nbobjs != xmldist->distances.nbobjs) {
+      /* distances invalid, drop */
+      if (hwloc__xml_verbose())
+	fprintf(stderr, "ignoring invalid distance matrix with %u objs instead of %u\n",
+		xmldist->distances.nbobjs, nbobjs);
+      free(xmldist->distances.latency);
+    } else {
+      /* distances valid, add it to the internal OS distances list for grouping */
+      unsigned *indexes = malloc(nbobjs * sizeof(unsigned));
+      hwloc_obj_t child, *objs = malloc(nbobjs * sizeof(hwloc_obj_t));
+      unsigned j;
+      for(j=0, child = hwloc_get_next_obj_inside_cpuset_by_depth(topology, root->cpuset, depth, NULL);
+	  j<nbobjs;
+	  j++, child = hwloc_get_next_obj_inside_cpuset_by_depth(topology, root->cpuset, depth, child)) {
+	indexes[j] = child->os_index;
+	objs[j] = child;
+      }
+      for(j=0; j<nbobjs*nbobjs; j++)
+	xmldist->distances.latency[j] *= xmldist->distances.latency_base;
+      hwloc_distances_set(topology, objs[0]->type, nbobjs, indexes, objs, xmldist->distances.latency, 0 /* XML cannot force */);
+    }
+
+    next = xmldist->next;
+    free(xmldist);
+  }
+}
+
 /* this canNOT be the first XML call */
 int
 hwloc_look_xml(struct hwloc_topology *topology)
@@ -893,6 +940,8 @@
   state.use_libxml = 0;
   state.parent = NULL;
 
+  topology->backend_params.xml.first_distances = topology->backend_params.xml.last_distances = NULL;
+
 #ifdef HWLOC_HAVE_LIBXML2
   env = getenv("HWLOC_NO_LIBXML_IMPORT");
   if (!env || !atoi(env)) {
@@ -963,6 +1012,9 @@
   /* keep the "Backend" information intact */
   /* we could add "BackendSource=XML" to notify that XML was used between the actual backend and here */
 
+  /* if we added some distances, we must check them, and make them groupable */
+  hwloc_xml__handle_distances(topology);
+  topology->backend_params.xml.first_distances = topology->backend_params.xml.last_distances = NULL;
   topology->support.discovery->pu = 1;
 
   return 0;
@@ -975,41 +1027,6 @@
   return -1;
 }
 
-static void
-hwloc_xml__check_distances(struct hwloc_topology *topology, hwloc_obj_t obj)
-{
-  hwloc_obj_t child;
-  unsigned i=0;
-  while (i<obj->distances_count) {
-    unsigned depth = obj->depth + obj->distances[i]->relative_depth;
-    unsigned nbobjs = hwloc_get_nbobjs_inside_cpuset_by_depth(topology, obj->cpuset, depth);
-    if (nbobjs != obj->distances[i]->nbobjs) {
-      if (hwloc__xml_verbose())
-	fprintf(stderr, "ignoring invalid distance matrix with %u objs instead of %u\n",
-		obj->distances[i]->nbobjs, nbobjs);
-      hwloc_free_logical_distances(obj->distances[i]);
-      memmove(&obj->distances[i], &obj->distances[i+1], (obj->distances_count-i-1)*sizeof(*obj->distances));
-      obj->distances_count--;
-    } else
-      i++;
-  }
-
-  child = obj->first_child;
-  while (child != NULL) {
-    hwloc_xml__check_distances(topology, child);
-    child = child->next_sibling;
-  }
-}
-
-/* this canNOT be the first XML call */
-void
-hwloc_xml_check_distances(struct hwloc_topology *topology)
-{
-  /* now that the topology tree has been properly setup,
-   * check that our distance matrice sizes make sense */
-  hwloc_xml__check_distances(topology, topology->levels[0][0]);
-}
-
 /************************************************
  ********* XML export (common routines) *********
  ************************************************/
@@ -1088,7 +1105,7 @@
     case '<':  strcpy(dst, "&lt;");   replen=4; break;
     case '>':  strcpy(dst, "&gt;");   replen=4; break;
     case '&':  strcpy(dst, "&amp;");  replen=5; break;
-    default: break;
+    default: replen=0; break;
     }
     dst+=replen; src++;
 
@@ -1163,8 +1180,10 @@
 
   hwloc__xml_export_new_child(output, "object");
   hwloc__xml_export_new_prop(output, "type", hwloc_obj_type_string(obj->type));
-  sprintf(tmp, "%d", obj->os_level);
-  hwloc__xml_export_new_prop(output, "os_level", tmp);
+  if (obj->os_level != -1) {
+    sprintf(tmp, "%d", obj->os_level);
+    hwloc__xml_export_new_prop(output, "os_level", tmp);
+  }
   if (obj->os_index != (unsigned) -1) {
     sprintf(tmp, "%u", obj->os_index);
     hwloc__xml_export_new_prop(output, "os_index", tmp);
@@ -1329,7 +1348,6 @@
   struct hwloc__xml_export_output_s output;
   xmlDocPtr doc = NULL;       /* document pointer */
   xmlNodePtr root_node = NULL; /* root pointer */
-  xmlDtdPtr dtd = NULL;       /* DTD pointer */
 
   LIBXML_TEST_VERSION;
   hwloc_libxml2_disable_stderrwarnings();
@@ -1340,7 +1358,7 @@
   xmlDocSetRootElement(doc, root_node);
 
   /* Creates a DTD declaration. Isn't mandatory. */
-  dtd = xmlCreateIntSubset(doc, BAD_CAST "topology", NULL, BAD_CAST "hwloc.dtd");
+  (void) xmlCreateIntSubset(doc, BAD_CAST "topology", NULL, BAD_CAST "hwloc.dtd");
 
   output.use_libxml = 1;
   output.current_node = root_node;

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/topology.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,7 +1,7 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
- * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2012 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.
  */
@@ -82,7 +82,10 @@
 
 static void
 hwloc_topology_clear (struct hwloc_topology *topology);
+static void
+hwloc_topology_setup_defaults(struct hwloc_topology *topology);
 
+
 #if defined(HAVE_SYSCTLBYNAME)
 int hwloc_get_sysctlbyname(const char *name, int64_t *ret)
 {
@@ -200,6 +203,8 @@
   hwloc_debug("%*s", 2*indent, "");
   hwloc_obj_snprintf(line, sizeof(line), topology, obj, "#", 1);
   hwloc_debug("%s", line);
+  if (obj->name)
+    hwloc_debug(" name %s", obj->name);
   if (obj->cpuset) {
     hwloc_bitmap_asprintf(&cpuset, obj->cpuset);
     hwloc_debug(" cpuset %s", cpuset);
@@ -263,17 +268,6 @@
   obj->infos_count++;
 }
 
-static void
-hwloc_clear_object_distances(hwloc_obj_t obj)
-{
-  unsigned i;
-  for (i=0; i<obj->distances_count; i++)
-    hwloc_free_logical_distances(obj->distances[i]);
-  free(obj->distances);
-  obj->distances = NULL;
-  obj->distances_count = 0;
-}
-
 /* Free an object and all its content.  */
 void
 hwloc_free_unlinked_object(hwloc_obj_t obj)
@@ -303,6 +297,57 @@
   free(obj);
 }
 
+static void
+hwloc__duplicate_objects(struct hwloc_topology *newtopology,
+			 struct hwloc_obj *newparent,
+			 struct hwloc_obj *src)
+{
+  hwloc_obj_t newobj;
+  hwloc_obj_t child;
+  size_t len;
+  unsigned i;
+
+  newobj = hwloc_alloc_setup_object(src->type, src->os_index);
+  if (src->name)
+    newobj->name = strdup(src->name);
+  newobj->userdata = src->userdata;
+
+  memcpy(&newobj->memory, &src->memory, sizeof(struct hwloc_obj_memory_s));
+  if (src->memory.page_types_len) {
+    len = src->memory.page_types_len * sizeof(struct hwloc_obj_memory_page_type_s);
+    newobj->memory.page_types = malloc(len);
+    memcpy(newobj->memory.page_types, src->memory.page_types, len);
+  }
+
+  memcpy(newobj->attr, src->attr, sizeof(*newobj->attr));
+
+  newobj->cpuset = hwloc_bitmap_dup(src->cpuset);
+  newobj->nodeset = hwloc_bitmap_dup(src->nodeset);
+
+  if (src->distances_count) {
+    newobj->distances_count = src->distances_count;
+    newobj->distances = malloc(src->distances_count * sizeof(struct hwloc_distances_s *));
+    for(i=0; i<src->distances_count; i++) {
+      newobj->distances[i] = malloc(sizeof(struct hwloc_distances_s));
+      /* ugly copy first */
+      memcpy(newobj->distances[i], src->distances[i], sizeof(struct hwloc_distances_s));
+      /* now duplicate matrices for real */
+      len = src->distances[i]->nbobjs * src->distances[i]->nbobjs * sizeof(float);
+      newobj->distances[i]->latency = malloc(len);
+      memcpy(newobj->distances[i]->latency, src->distances[i]->latency, len);
+    }
+  }
+
+  for(i=0; i<src->infos_count; i++)
+    hwloc_obj_add_info(newobj, src->infos[i].name, src->infos[i].value);
+
+  child = NULL;
+  while ((child = hwloc_get_next_child(newtopology, src, child)) != NULL)
+    hwloc__duplicate_objects(newtopology, newobj, child);
+
+  hwloc_insert_object_by_parent(newtopology, newparent, newobj);
+}
+
 /*
  * How to compare objects based on types.
  *
@@ -381,19 +426,22 @@
 }
 #endif
 
+static int hwloc_obj_type_is_io (hwloc_obj_type_t type)
+{
+  return type == HWLOC_OBJ_BRIDGE || type == HWLOC_OBJ_PCI_DEVICE || type == HWLOC_OBJ_OS_DEVICE;
+}
+
 int hwloc_compare_types (hwloc_obj_type_t type1, hwloc_obj_type_t type2)
 {
   unsigned order1 = hwloc_get_type_order(type1);
   unsigned order2 = hwloc_get_type_order(type2);
 
   /* bridge and devices are only comparable with each others and with machine and system */
-  if ((type1 == HWLOC_OBJ_BRIDGE || type1 == HWLOC_OBJ_PCI_DEVICE || type1 == HWLOC_OBJ_OS_DEVICE)
-      && type2 != HWLOC_OBJ_BRIDGE && type2 != HWLOC_OBJ_PCI_DEVICE && type2 != HWLOC_OBJ_OS_DEVICE
-      && type2 != HWLOC_OBJ_SYSTEM && type2 != HWLOC_OBJ_MACHINE)
+  if (hwloc_obj_type_is_io(type1)
+      && !hwloc_obj_type_is_io(type2) && type2 != HWLOC_OBJ_SYSTEM && type2 != HWLOC_OBJ_MACHINE)
     return HWLOC_TYPE_UNORDERED;
-  if ((type2 == HWLOC_OBJ_BRIDGE || type2 == HWLOC_OBJ_PCI_DEVICE || type2 == HWLOC_OBJ_OS_DEVICE)
-      && type1 != HWLOC_OBJ_BRIDGE && type1 != HWLOC_OBJ_PCI_DEVICE && type1 != HWLOC_OBJ_OS_DEVICE
-      && type1 != HWLOC_OBJ_SYSTEM && type1 != HWLOC_OBJ_MACHINE)
+  if (hwloc_obj_type_is_io(type2)
+      && !hwloc_obj_type_is_io(type1) && type1 != HWLOC_OBJ_SYSTEM && type1 != HWLOC_OBJ_MACHINE)
     return HWLOC_TYPE_UNORDERED;
 
   return order1 - order2;
@@ -449,13 +497,24 @@
 static int
 hwloc_obj_cmp(hwloc_obj_t obj1, hwloc_obj_t obj2)
 {
-  if (!obj1->cpuset || hwloc_bitmap_iszero(obj1->cpuset)
-      || !obj2->cpuset || hwloc_bitmap_iszero(obj2->cpuset))
+  hwloc_bitmap_t set1, set2;
+
+  /* compare cpusets if possible, or fallback to nodeset, or return */
+  if (obj1->cpuset && !hwloc_bitmap_iszero(obj1->cpuset)
+      && obj2->cpuset && !hwloc_bitmap_iszero(obj2->cpuset)) {
+    set1 = obj1->cpuset;
+    set2 = obj2->cpuset;
+  } else if (obj1->nodeset && !hwloc_bitmap_iszero(obj1->nodeset)
+	     && obj2->nodeset && !hwloc_bitmap_iszero(obj2->nodeset)) {
+    set1 = obj1->nodeset;
+    set2 = obj2->nodeset;
+  } else {
     return HWLOC_OBJ_DIFFERENT;
+  }
 
-  if (hwloc_bitmap_isequal(obj1->cpuset, obj2->cpuset)) {
+  if (hwloc_bitmap_isequal(set1, set2)) {
 
-    /* Same cpuset, subsort by type to have a consistent ordering.  */
+    /* Same sets, subsort by type to have a consistent ordering.  */
 
     switch (hwloc_type_cmp(obj1, obj2)) {
       case HWLOC_TYPE_DEEPER:
@@ -475,7 +534,7 @@
             return HWLOC_OBJ_EQUAL;
         }
 
-	/* Same level cpuset and type!  Let's hope it's coherent.  */
+	/* Same sets and types!  Let's hope it's coherent.  */
 	return HWLOC_OBJ_EQUAL;
     }
 
@@ -484,15 +543,15 @@
 
   } else {
 
-    /* Different cpusets, sort by inclusion.  */
+    /* Different sets, sort by inclusion.  */
 
-    if (hwloc_bitmap_isincluded(obj1->cpuset, obj2->cpuset))
+    if (hwloc_bitmap_isincluded(set1, set2))
       return HWLOC_OBJ_INCLUDED;
 
-    if (hwloc_bitmap_isincluded(obj2->cpuset, obj1->cpuset))
+    if (hwloc_bitmap_isincluded(set2, set1))
       return HWLOC_OBJ_CONTAINS;
 
-    if (hwloc_bitmap_intersects(obj1->cpuset, obj2->cpuset))
+    if (hwloc_bitmap_intersects(set1, set2))
       return HWLOC_OBJ_INTERSECTS;
 
     return HWLOC_OBJ_DIFFERENT;
@@ -550,6 +609,37 @@
           fprintf(stderr, "Different OS indexes\n");
           return -1;
         }
+	if (obj->distances_count) {
+	  if (child->distances_count) {
+	    child->distances_count += obj->distances_count;
+	    child->distances = realloc(child->distances, child->distances_count * sizeof(*child->distances));
+	    memcpy(child->distances + obj->distances_count, obj->distances, obj->distances_count * sizeof(*child->distances));
+	  } else {
+	    child->distances_count = obj->distances_count;
+	    child->distances = obj->distances;
+	  }
+	  obj->distances_count = 0;
+	  obj->distances = NULL;
+	}
+	if (obj->infos_count) {
+	  if (child->infos_count) {
+	    child->infos_count += obj->infos_count;
+	    child->infos = realloc(child->infos, child->infos_count * sizeof(*child->infos));
+	    memcpy(child->infos + obj->infos_count, obj->infos, obj->infos_count * sizeof(*child->infos));
+	  } else {
+	    child->infos_count = obj->infos_count;
+	    child->infos = obj->infos;
+	  }
+	  obj->infos_count = 0;
+	  obj->infos = NULL;
+	}
+	if (obj->name) {
+	  if (child->name)
+	    free(child->name);
+	  child->name = obj->name;
+	  obj->name = NULL;
+	}
+	assert(!obj->userdata); /* user could not set userdata here (we're before load() */
 	switch(obj->type) {
 	  case HWLOC_OBJ_NODE:
 	    /* Do not check these, it may change between calls */
@@ -632,7 +722,7 @@
 
       case HWLOC_OBJ_DIFFERENT:
 	/* Leave CHILD in CUR.  */
-	if (!put && hwloc_bitmap_compare_first(obj->cpuset, child->cpuset) < 0) {
+	if (!put && (!child->cpuset || hwloc_bitmap_compare_first(obj->cpuset, child->cpuset) < 0)) {
 	  /* Sort children by cpuset: put OBJ before CHILD in CUR's children.  */
 	  *cur_children = obj;
 	  cur_children = &obj->next_sibling;
@@ -719,8 +809,6 @@
   }
 }
 
-static void
-hwloc_connect_children(hwloc_obj_t parent);
 /* Adds a misc object _after_ detection, and thus has to reconnect all the pointers */
 hwloc_obj_t
 hwloc_topology_insert_misc_object_by_cpuset(struct hwloc_topology *topology, hwloc_const_bitmap_t cpuset, const char *name)
@@ -728,6 +816,11 @@
   hwloc_obj_t obj, child;
   int err;
 
+  if (!topology->is_loaded) {
+    errno = EINVAL;
+    return NULL;
+  }
+
   if (hwloc_bitmap_iszero(cpuset))
     return NULL;
   if (!hwloc_bitmap_isincluded(cpuset, hwloc_topology_get_complete_cpuset(topology)))
@@ -737,6 +830,9 @@
   if (name)
     obj->name = strdup(name);
 
+  /* misc objects go in no level (needed here because level building doesn't see Misc objects inside I/O trees) */
+  obj->depth = (unsigned) HWLOC_TYPE_DEPTH_UNKNOWN;
+
   obj->cpuset = hwloc_bitmap_dup(cpuset);
   /* initialize default cpusets, we'll adjust them later */
   obj->complete_cpuset = hwloc_bitmap_dup(cpuset);
@@ -786,6 +882,15 @@
   if (name)
     obj->name = strdup(name);
 
+  if (!topology->is_loaded) {
+    hwloc_free_unlinked_object(obj);
+    errno = EINVAL;
+    return NULL;
+  }
+
+  /* misc objects go in no level (needed here because level building doesn't see Misc objects inside I/O trees) */
+  obj->depth = (unsigned) HWLOC_TYPE_DEPTH_UNKNOWN;
+
   hwloc_insert_object_by_parent(topology, parent, obj);
 
   hwloc_connect_children(topology->levels[0][0]);
@@ -794,6 +899,22 @@
   return obj;
 }
 
+hwloc_obj_t
+hwloc_custom_insert_group_object_by_parent(struct hwloc_topology *topology, hwloc_obj_t parent, int groupdepth)
+{
+  hwloc_obj_t obj = hwloc_alloc_setup_object(HWLOC_OBJ_GROUP, -1);
+  obj->attr->group.depth = groupdepth;
+
+  if (topology->backend_type != HWLOC_BACKEND_CUSTOM || topology->is_loaded) {
+    errno = EINVAL;
+    return NULL;
+  }
+
+  hwloc_insert_object_by_parent(topology, parent, obj);
+
+  return obj;
+}
+
 /* Traverse children of a parent in a safe way: reread the next pointer as
  * appropriate to prevent crash on child deletion:  */
 #define for_each_child_safe(child, parent, pchild) \
@@ -997,9 +1118,7 @@
   hwloc_obj_t child, *temp;
 
   /* I/O devices (and their children) have no sets */
-  if (obj->type == HWLOC_OBJ_BRIDGE
-      || obj->type == HWLOC_OBJ_PCI_DEVICE
-      || obj->type == HWLOC_OBJ_OS_DEVICE)
+  if (hwloc_obj_type_is_io(obj->type))
     return;
 
   if (parent_has_sets || obj->cpuset) {
@@ -1056,9 +1175,7 @@
 
   for_each_child_safe(child, obj, temp) {
     /* don't propagate nodesets in I/O objects, keep them NULL */
-    if (child->type == HWLOC_OBJ_BRIDGE
-        || child->type == HWLOC_OBJ_PCI_DEVICE
-        || child->type == HWLOC_OBJ_OS_DEVICE)
+    if (hwloc_obj_type_is_io(child->type))
       return;
 
     /* Propagate singleton nodesets down */
@@ -1090,9 +1207,7 @@
 
   for_each_child_safe(child, obj, temp) {
     /* don't propagate nodesets in I/O objects, keep them NULL */
-    if (child->type == HWLOC_OBJ_BRIDGE
-        || child->type == HWLOC_OBJ_PCI_DEVICE
-        || child->type == HWLOC_OBJ_OS_DEVICE)
+    if (hwloc_obj_type_is_io(child->type))
       continue;
 
     if (obj->nodeset) {
@@ -1246,9 +1361,8 @@
 
   if (obj->type != HWLOC_OBJ_NODE
       && !obj->first_child /* only remove if all children were removed above, so that we don't remove parents of NUMAnode */
-      && obj->type != HWLOC_OBJ_BRIDGE
-      && obj->type != HWLOC_OBJ_PCI_DEVICE
-      && obj->type != HWLOC_OBJ_OS_DEVICE
+      && !hwloc_obj_type_is_io(obj->type)
+      && obj->cpuset /* don't remove if no cpuset at all, there's likely a good reason why it's different from having an empty cpuset */
       && hwloc_bitmap_iszero(obj->cpuset)) {
     /* Remove empty children */
     hwloc_debug("%s", "\nRemoving empty object ");
@@ -1281,7 +1395,7 @@
 
   if (obj->type == HWLOC_OBJ_MISC) {
     dropping = droppingparent && !(flags & HWLOC_RESTRICT_FLAG_ADAPT_MISC);
-  } else if (obj->type == HWLOC_OBJ_BRIDGE || obj->type == HWLOC_OBJ_PCI_DEVICE || obj->type == HWLOC_OBJ_OS_DEVICE) {
+  } else if (hwloc_obj_type_is_io(obj->type)) {
     dropping = droppingparent && !(flags & HWLOC_RESTRICT_FLAG_ADAPT_IO);
   } else {
     dropping = droppingparent || (obj->cpuset && hwloc_bitmap_iszero(obj->cpuset));
@@ -1357,7 +1471,9 @@
   }
 }
 
-/* If WHOLE_IO is not set, we drop non-interesting devices,
+/*
+ * If IO_DEVICES and WHOLE_IO are not set, we drop everything.
+ * If WHOLE_IO is not set, we drop non-interesting devices,
  * and bridges that have no children.
  * If IO_BRIDGES is also not set, we also drop all bridges
  * except the hostbridges.
@@ -1367,6 +1483,14 @@
 {
   hwloc_obj_t child, *pchild;
 
+  if (!(topology->flags & (HWLOC_TOPOLOGY_FLAG_IO_DEVICES|HWLOC_TOPOLOGY_FLAG_WHOLE_IO))) {
+    /* drop all I/O children */
+    for_each_child_safe(child, root, pchild)
+      if (hwloc_obj_type_is_io(child->type))
+	unlink_and_free_object_and_children(pchild);
+    return;
+  }
+
   if (!(topology->flags & HWLOC_TOPOLOGY_FLAG_WHOLE_IO)) {
     /* drop non-interesting devices */
     for_each_child_safe(child, root, pchild) {
@@ -1376,6 +1500,7 @@
 	if (baseclass != 0x03 /* PCI_BASE_CLASS_DISPLAY */
 	    && baseclass != 0x02 /* PCI_BASE_CLASS_NETWORK */
 	    && baseclass != 0x01 /* PCI_BASE_CLASS_STORAGE */
+	    && baseclass != 0x0b /* PCI_BASE_CLASS_PROCESSOR */
 	    && classid != 0x0c06 /* PCI_CLASS_SERIAL_INFINIBAND */)
 	  unlink_and_free_object_and_children(pchild);
       }
@@ -1423,6 +1548,55 @@
   }
 }
 
+static void
+hwloc_propagate_symmetric_subtree(hwloc_topology_t topology, hwloc_obj_t root)
+{
+  hwloc_obj_t child, *array;
+
+  /* assume we're not symmetric by default */
+  root->symmetric_subtree = 0;
+
+  /* if no child, we are symmetric */
+  if (!root->arity) {
+    root->symmetric_subtree = 1;
+    return;
+  }
+
+  /* look at children, and return if they are not symmetric */
+  child = NULL;
+  while ((child = hwloc_get_next_child(topology, root, child)) != NULL)
+    hwloc_propagate_symmetric_subtree(topology, child);
+  while ((child = hwloc_get_next_child(topology, root, child)) != NULL)
+    if (!child->symmetric_subtree)
+      return;
+
+  /* now check that children subtrees are identical.
+   * just walk down the first child in each tree and compare their depth and arities
+   */
+  array = malloc(root->arity * sizeof(*array));
+  memcpy(array, root->children, root->arity * sizeof(*array));
+  while (1) {
+    unsigned i;
+    /* check current level arities and depth */
+    for(i=1; i<root->arity; i++)
+      if (array[i]->depth != array[0]->depth
+	  || array[i]->arity != array[0]->arity) {
+      free(array);
+      return;
+    }
+    if (!array[0]->arity)
+      /* no more children level, we're ok */
+      break;
+    /* look at first child of each element now */
+    for(i=0; i<root->arity; i++)
+      array[i] = array[i]->first_child;
+  }
+  free(array);
+
+  /* everything went fine, we're symmetric */
+  root->symmetric_subtree = 1;
+}
+
 /*
  * Initialize handy pointers in the whole topology.
  * The topology only had first_child and next_sibling pointers.
@@ -1430,7 +1604,7 @@
  * The remaining fields (levels, cousins, logical_index, depth, ...) will
  * be setup later in hwloc_connect_levels().
  */
-static void
+void
 hwloc_connect_children(hwloc_obj_t parent)
 {
   unsigned n;
@@ -1521,9 +1695,7 @@
 			  hwloc_obj_t *new_obj, hwloc_obj_t old)
 {
   unsigned i, total;
-  if (old->type == HWLOC_OBJ_BRIDGE
-      || old->type == HWLOC_OBJ_PCI_DEVICE
-      || old->type == HWLOC_OBJ_OS_DEVICE) {
+  if (hwloc_obj_type_is_io(old->type)) {
     if (new_obj)
       append_iodevs(topology, old);
     return 0;
@@ -1535,8 +1707,11 @@
   }
   for(i=0, total=0; i<old->arity; i++) {
     int nb = hwloc_level_filter_object(topology, new_obj, old->children[i]);
-    if (new_obj)
+    if (new_obj) {
       new_obj += nb;
+      /* misc objects go in no level (needed here because insert_misc() not always involved e.g. during XML import) */
+      old->depth = (unsigned) HWLOC_TYPE_DEPTH_UNKNOWN;
+    }
     total += nb;
   }
   return total;
@@ -1556,9 +1731,7 @@
 
   /* anything to filter? */
   for(i=0; i<nold; i++)
-    if (old[i]->type == HWLOC_OBJ_BRIDGE
-	|| old[i]->type == HWLOC_OBJ_PCI_DEVICE
-	|| old[i]->type == HWLOC_OBJ_OS_DEVICE
+    if (hwloc_obj_type_is_io(old[i]->type)
 	|| old[i]->type == HWLOC_OBJ_MISC)
       break;
   if (i==nold)
@@ -1616,7 +1789,7 @@
 /*
  * Do the remaining work that hwloc_connect_children() did not do earlier.
  */
-static int
+int
 hwloc_connect_levels(hwloc_topology_t topology)
 {
   unsigned l, i=0;
@@ -1713,7 +1886,10 @@
     /* New level.  */
     taken_objs = malloc((n_taken_objs + 1) * sizeof(taken_objs[0]));
     /* New list of pending objects.  */
-    new_objs = malloc((n_objs - n_taken_objs + n_new_objs) * sizeof(new_objs[0]));
+    if (n_objs - n_taken_objs + n_new_objs)
+      new_objs = malloc((n_objs - n_taken_objs + n_new_objs) * sizeof(new_objs[0]));
+    else
+      new_objs = NULL;
 
     n_new_objs = hwloc_level_take_objects(top_obj,
 					  objs, n_objs,
@@ -1765,12 +1941,15 @@
   }
 
   /* It's empty now.  */
-  free(objs);
+  if (objs)
+    free(objs);
 
   topology->bridge_nbobjects = hwloc_build_level_from_list(topology->first_bridge, &topology->bridge_level);
   topology->pcidev_nbobjects = hwloc_build_level_from_list(topology->first_pcidev, &topology->pcidev_level);
   topology->osdev_nbobjects = hwloc_build_level_from_list(topology->first_osdev, &topology->osdev_level);
 
+  hwloc_propagate_symmetric_subtree(topology, topology->levels[0][0]);
+
   return 0;
 }
 
@@ -1897,9 +2076,13 @@
 static int
 hwloc_discover(struct hwloc_topology *topology)
 {
+  int gotsomeio = 1;
+
   if (topology->backend_type == HWLOC_BACKEND_SYNTHETIC) {
     alloc_cpusets(topology->levels[0][0]);
     hwloc_look_synthetic(topology);
+  } else if (topology->backend_type == HWLOC_BACKEND_CUSTOM) {
+    /* nothing to do, just connect levels below */
   } else if (topology->backend_type == HWLOC_BACKEND_XML) {
     if (hwloc_look_xml(topology) < 0) {
       hwloc_topology_clear(topology);
@@ -1957,7 +2140,7 @@
 
 #    ifdef HWLOC_LINUX_SYS
 #      define HAVE_OS_SUPPORT
-    hwloc_look_linux(topology);
+    hwloc_look_linuxfs(topology);
 #    endif /* HWLOC_LINUX_SYS */
 
 #    ifdef HWLOC_AIX_SYS
@@ -2016,7 +2199,7 @@
   /*
    * Group levels by distances
    */
-  hwloc_convert_distances_indexes_into_objects(topology);
+  hwloc_distances_finalize_os(topology);
   hwloc_group_by_distances(topology);
 
   /* First tweak a bit to clean the topology.  */
@@ -2096,58 +2279,52 @@
    * and there.
    */
 
-  /* PCI */
-  if (topology->flags & (HWLOC_TOPOLOGY_FLAG_IO_DEVICES|HWLOC_TOPOLOGY_FLAG_WHOLE_IO)) {
-    int gotsome = 0;
+  /* I/O devices */
+
+  /* see if the backend already imported some I/O devices */
+  if (topology->backend_type == HWLOC_BACKEND_XML
+      || topology->backend_type == HWLOC_BACKEND_SYNTHETIC
+      || topology->backend_type == HWLOC_BACKEND_CUSTOM)
+    gotsomeio = 1;
+  /* import from libpci if needed */
+  if (topology->flags & (HWLOC_TOPOLOGY_FLAG_IO_DEVICES|HWLOC_TOPOLOGY_FLAG_WHOLE_IO)
+      && (topology->backend_type == HWLOC_BACKEND_NONE
+#ifdef HWLOC_LINUX_SYS
+	  || topology->backend_type == HWLOC_BACKEND_LINUXFS
+#endif
+	  )) {
     hwloc_debug("%s", "\nLooking for PCI devices\n");
-
-    if (topology->backend_type == HWLOC_BACKEND_SYNTHETIC) {
-      /* TODO */
-    }
-    else if (topology->backend_type == HWLOC_BACKEND_XML) {
-      /* TODO */
-    }
 #ifdef HWLOC_HAVE_LIBPCI
-    else if (topology->is_thissystem) {
+    if (topology->is_thissystem) {
       hwloc_look_libpci(topology);
-      gotsome = 1;
-    }
+      print_objects(topology, 0, topology->levels[0][0]);
+      gotsomeio = 1;
+    } else
 #endif
-
-    if (gotsome) {
-      print_objects(topology, 0, topology->levels[0][0]);
-
-      hwloc_drop_useless_io(topology, topology->levels[0][0]);
-
-      hwloc_propagate_bridge_depth(topology, topology->levels[0][0], 0);
-
-      hwloc_debug("%s", "\nNow reconnecting\n");
-
-      hwloc_connect_children(topology->levels[0][0]);
-      hwloc_connect_levels(topology);
-
-      print_objects(topology, 0, topology->levels[0][0]);
-    } else {
+    {
       hwloc_debug("%s", "\nno PCI detection\n");
     }
   }
+  /* if we got anything, filter interesting objects and update the tree */
+  if (gotsomeio) {
+    hwloc_drop_useless_io(topology, topology->levels[0][0]);
+    hwloc_debug("%s", "\nNow reconnecting\n");
+    hwloc_connect_children(topology->levels[0][0]);
+    hwloc_connect_levels(topology);
+    print_objects(topology, 0, topology->levels[0][0]);
+    hwloc_propagate_bridge_depth(topology, topology->levels[0][0], 0);
+  }
 
   /*
    * Now that objects are numbered, take distance matrices from backends and put them in the main topology.
    *
    * Some objects may have disappeared (in removed_empty or removed_ignored) since we setup os distances
-   * (hwloc_convert_distances_indexes_into_objects()) above. Reset them so as to not point to disappeared objects anymore.
+   * (hwloc_distances_finalize_os()) above. Reset them so as to not point to disappeared objects anymore.
    */
-  hwloc_restrict_distances(topology, HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES);
-  hwloc_convert_distances_indexes_into_objects(topology);
-  hwloc_finalize_logical_distances(topology);
+  hwloc_distances_restrict_os(topology);
+  hwloc_distances_finalize_os(topology);
+  hwloc_distances_finalize_logical(topology);
 
-#  ifdef HWLOC_HAVE_XML
-  if (topology->backend_type == HWLOC_BACKEND_XML)
-    /* make sure the XML-imported distances are ok now that the tree is properly setup */
-    hwloc_xml_check_distances(topology);
-#  endif
-
   /*
    * Now set binding hooks.
    * If the represented system is actually not this system, use dummy binding
@@ -2159,7 +2336,7 @@
 
   if (topology->is_thissystem) {
 #    ifdef HWLOC_LINUX_SYS
-    hwloc_set_linux_hooks(topology);
+    hwloc_set_linuxfs_hooks(topology);
 #    endif /* HWLOC_LINUX_SYS */
 
 #    ifdef HWLOC_AIX_SYS
@@ -2230,8 +2407,10 @@
     DO(cpu,get_proc_cpubind);
     DO(cpu,set_thisthread_cpubind);
     DO(cpu,get_thisthread_cpubind);
+#ifdef hwloc_thread_t
     DO(cpu,set_thread_cpubind);
     DO(cpu,get_thread_cpubind);
+#endif
     DO(cpu,get_thisproc_last_cpu_location);
     DO(cpu,get_proc_last_cpu_location);
     DO(cpu,get_thisthread_last_cpu_location);
@@ -2286,7 +2465,7 @@
   /* Only the System object on top by default */
   topology->nb_levels = 1; /* there's at least SYSTEM */
   topology->next_group_depth = 0;
-  topology->levels[0] = malloc (sizeof (struct hwloc_obj));
+  topology->levels[0] = malloc (sizeof (hwloc_obj_t));
   topology->level_nbobjects[0] = 1;
   /* NULLify other levels so that we can detect and free old ones in hwloc_connect_levels() if needed */
   memset(topology->levels+1, 0, (HWLOC_DEPTH_MAX-1)*sizeof(*topology->levels));
@@ -2334,7 +2513,7 @@
     topology->ignored_types[i] = HWLOC_IGNORE_TYPE_NEVER;
   topology->ignored_types[HWLOC_OBJ_GROUP] = HWLOC_IGNORE_TYPE_KEEP_STRUCTURE;
 
-  hwloc_topology_distances_init(topology);
+  hwloc_distances_init(topology);
 
   /* Make the topology look like something coherent but empty */
   hwloc_topology_setup_defaults(topology);
@@ -2343,13 +2522,64 @@
   return 0;
 }
 
+int
+hwloc_topology_set_pid(struct hwloc_topology *topology __hwloc_attribute_unused,
+                       hwloc_pid_t pid __hwloc_attribute_unused)
+{
+  /* this does *not* change the backend */
+#ifdef HWLOC_LINUX_SYS
+  topology->pid = pid;
+  return 0;
+#else /* HWLOC_LINUX_SYS */
+  errno = ENOSYS;
+  return -1;
+#endif /* HWLOC_LINUX_SYS */
+}
+
+static int
+hwloc_backend_custom_init(struct hwloc_topology *topology)
+{
+  assert(topology->backend_type == HWLOC_BACKEND_NONE);
+
+  topology->levels[0][0]->type = HWLOC_OBJ_SYSTEM;
+  topology->is_thissystem = 0;
+  topology->backend_type = HWLOC_BACKEND_CUSTOM;
+  return 0;
+}
+
+int
+hwloc_custom_insert_topology(struct hwloc_topology *newtopology,
+			     struct hwloc_obj *newparent,
+			     struct hwloc_topology *oldtopology,
+			     struct hwloc_obj *oldroot)
+{
+  if (newtopology->backend_type != HWLOC_BACKEND_CUSTOM || newtopology->is_loaded || !oldtopology->is_loaded) {
+    errno = EINVAL;
+    return -1;
+  }
+
+  hwloc__duplicate_objects(newtopology, newparent, oldroot ? oldroot : oldtopology->levels[0][0]);
+  return 0;
+}
+
 static void
+hwloc_backend_custom_exit(struct hwloc_topology *topology)
+{
+  assert(topology->backend_type == HWLOC_BACKEND_CUSTOM);
+
+  hwloc_topology_clear(topology);
+  hwloc_topology_setup_defaults(topology);
+
+  topology->backend_type = HWLOC_BACKEND_NONE;
+}
+
+static void
 hwloc_backend_exit(struct hwloc_topology *topology)
 {
   switch (topology->backend_type) {
 #ifdef HWLOC_LINUX_SYS
-  case HWLOC_BACKEND_SYSFS:
-    hwloc_backend_sysfs_exit(topology);
+  case HWLOC_BACKEND_LINUXFS:
+    hwloc_backend_linuxfs_exit(topology);
     break;
 #endif
   case HWLOC_BACKEND_XML:
@@ -2358,11 +2588,21 @@
   case HWLOC_BACKEND_SYNTHETIC:
     hwloc_backend_synthetic_exit(topology);
     break;
+  case HWLOC_BACKEND_CUSTOM:
+    hwloc_backend_custom_exit(topology);
+    break;
   default:
     break;
   }
 
   assert(topology->backend_type == HWLOC_BACKEND_NONE);
+
+  if (topology->is_loaded) {
+    hwloc_topology_clear(topology);
+    hwloc_distances_destroy(topology);
+    hwloc_topology_setup_defaults(topology);
+    topology->is_loaded = 0;
+  }
 }
 
 int
@@ -2372,20 +2612,9 @@
   hwloc_backend_exit(topology);
 
 #ifdef HWLOC_LINUX_SYS
-  if (hwloc_backend_sysfs_init(topology, fsroot_path) < 0)
+  if (hwloc_backend_linuxfs_init(topology, fsroot_path) < 0)
     return -1;
-#endif /* HWLOC_LINUX_SYS */
-
   return 0;
-}
-
-int
-hwloc_topology_set_pid(struct hwloc_topology *topology __hwloc_attribute_unused,
-                       hwloc_pid_t pid __hwloc_attribute_unused)
-{
-#ifdef HWLOC_LINUX_SYS
-  topology->pid = pid;
-  return 0;
 #else /* HWLOC_LINUX_SYS */
   errno = ENOSYS;
   return -1;
@@ -2412,6 +2641,15 @@
 }
 
 int
+hwloc_topology_set_custom(struct hwloc_topology *topology)
+{
+  /* cleanup existing backend */
+  hwloc_backend_exit(topology);
+
+  return hwloc_backend_custom_init(topology);
+}
+
+int
 hwloc_topology_set_xmlbuffer(struct hwloc_topology *topology __hwloc_attribute_unused,
                              const char *xmlbuffer __hwloc_attribute_unused,
                              int size __hwloc_attribute_unused)
@@ -2441,9 +2679,7 @@
     /* we need the PU level */
     errno = EINVAL;
     return -1;
-  } else if (type == HWLOC_OBJ_PCI_DEVICE
-	     || type == HWLOC_OBJ_BRIDGE
-	     || type == HWLOC_OBJ_OS_DEVICE) {
+  } else if (hwloc_obj_type_is_io(type)) {
     /* I/O devices aren't in any level, use topology flags to ignore them */
     errno = EINVAL;
     return -1;
@@ -2465,9 +2701,7 @@
     /* we need the PU level */
     errno = EINVAL;
     return -1;
-  } else if (type == HWLOC_OBJ_PCI_DEVICE
-	     || type == HWLOC_OBJ_BRIDGE
-	     || type == HWLOC_OBJ_OS_DEVICE) {
+  } else if (hwloc_obj_type_is_io(type)) {
     /* I/O devices aren't in any level, use topology flags to ignore them */
     errno = EINVAL;
     return -1;
@@ -2483,19 +2717,24 @@
   unsigned type;
   for(type = HWLOC_OBJ_SYSTEM; type < HWLOC_OBJ_TYPE_MAX; type++)
     if (type != HWLOC_OBJ_PU
-	&& type != HWLOC_OBJ_PCI_DEVICE
-	&& type != HWLOC_OBJ_BRIDGE
-	&& type != HWLOC_OBJ_OS_DEVICE)
+	&& !hwloc_obj_type_is_io(type))
       topology->ignored_types[type] = HWLOC_IGNORE_TYPE_KEEP_STRUCTURE;
   return 0;
 }
 
+/* traverse the tree and free everything.
+ * only use first_child/next_sibling so that it works before load()
+ * and may be used when switching between backend.
+ */
 static void
 hwloc_topology_clear_tree (struct hwloc_topology *topology, struct hwloc_obj *root)
 {
-  unsigned i;
-  for(i=0; i<root->arity; i++)
-    hwloc_topology_clear_tree (topology, root->children[i]);
+  hwloc_obj_t child = root->first_child;
+  while (child) {
+    hwloc_obj_t nextchild = child->next_sibling;
+    hwloc_topology_clear_tree (topology, child);
+    child = nextchild;
+  }
   hwloc_free_unlinked_object (root);
 }
 
@@ -2503,10 +2742,12 @@
 hwloc_topology_clear (struct hwloc_topology *topology)
 {
   unsigned l;
-  hwloc_topology_distances_clear(topology);
+  hwloc_distances_clear(topology);
   hwloc_topology_clear_tree (topology, topology->levels[0][0]);
-  for (l=0; l<topology->nb_levels; l++)
+  for (l=0; l<topology->nb_levels; l++) {
     free(topology->levels[l]);
+    topology->levels[l] = NULL;
+  }
   free(topology->bridge_level);
   free(topology->pcidev_level);
   free(topology->osdev_level);
@@ -2515,9 +2756,9 @@
 void
 hwloc_topology_destroy (struct hwloc_topology *topology)
 {
+  hwloc_backend_exit(topology);
   hwloc_topology_clear(topology);
-  hwloc_topology_distances_destroy(topology);
-  hwloc_backend_exit(topology);
+  hwloc_distances_destroy(topology);
   free(topology->support.discovery);
   free(topology->support.cpubind);
   free(topology->support.membind);
@@ -2542,7 +2783,7 @@
     char *fsroot_path_env = getenv("HWLOC_FORCE_FSROOT");
     if (fsroot_path_env) {
       hwloc_backend_exit(topology);
-      hwloc_backend_sysfs_init(topology, fsroot_path_env);
+      hwloc_backend_linuxfs_init(topology, fsroot_path_env);
     }
   }
 #endif
@@ -2559,7 +2800,7 @@
   if (topology->backend_type == HWLOC_BACKEND_NONE) {
     char *fsroot_path_env = getenv("HWLOC_FSROOT");
     if (fsroot_path_env)
-      hwloc_backend_sysfs_init(topology, fsroot_path_env);
+      hwloc_backend_linuxfs_init(topology, fsroot_path_env);
   }
 #endif
   if (topology->backend_type == HWLOC_BACKEND_NONE) {
@@ -2576,7 +2817,7 @@
   /* if we haven't chosen the backend, set the OS-specific one if needed */
   if (topology->backend_type == HWLOC_BACKEND_NONE) {
 #ifdef HWLOC_LINUX_SYS
-    if (hwloc_backend_sysfs_init(topology, "/") < 0)
+    if (hwloc_backend_linuxfs_init(topology, "/") < 0)
       return -1;
 #endif
   }
@@ -2584,7 +2825,7 @@
   /* get distance matrix from the environment are store them (as indexes) in the topology.
    * indexes will be converted into objects later once the tree will be filled
    */
-  hwloc_store_distances_from_env(topology);
+  hwloc_distances_set_from_env(topology);
 
   /* actual topology discovery */
   err = hwloc_discover(topology);
@@ -2631,9 +2872,9 @@
   hwloc_connect_children(topology->levels[0][0]);
   hwloc_connect_levels(topology);
   propagate_total_memory(topology->levels[0][0]);
-  hwloc_restrict_distances(topology, flags);
-  hwloc_convert_distances_indexes_into_objects(topology);
-  hwloc_finalize_logical_distances(topology);
+  hwloc_distances_restrict(topology, flags);
+  hwloc_distances_finalize_os(topology);
+  hwloc_distances_finalize_logical(topology);
   return 0;
 }
 
@@ -2710,6 +2951,25 @@
   }
 }
 
+static void
+hwloc__check_children_depth(struct hwloc_topology *topology, struct hwloc_obj *parent)
+{
+  hwloc_obj_t child = NULL;
+  while ((child = hwloc_get_next_child(topology, parent, child)) != NULL) {
+    if (child->type == HWLOC_OBJ_BRIDGE)
+      assert(child->depth == (unsigned) HWLOC_TYPE_DEPTH_BRIDGE);
+    else if (child->type == HWLOC_OBJ_PCI_DEVICE)
+      assert(child->depth == (unsigned) HWLOC_TYPE_DEPTH_PCI_DEVICE);
+    else if (child->type == HWLOC_OBJ_OS_DEVICE)
+      assert(child->depth == (unsigned) HWLOC_TYPE_DEPTH_OS_DEVICE);
+    else if (child->type == HWLOC_OBJ_MISC)
+      assert(child->depth == (unsigned) -1);
+    else if (parent->depth != (unsigned) -1)
+      assert(child->depth > parent->depth);
+    hwloc__check_children_depth(topology, child);
+  }
+}
+
 /* check a whole topology structure */
 void
 hwloc_topology_check(struct hwloc_topology *topology)
@@ -2805,6 +3065,11 @@
     /* bottom-level object must always be PU */
     assert(obj->type == HWLOC_OBJ_PU);
   }
+
+  /* check relative depths */
+  obj = hwloc_get_root_obj(topology);
+  assert(obj->depth == 0);
+  hwloc__check_children_depth(topology, obj);
 }
 
 const struct hwloc_topology_support *

Modified: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/traversal.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/traversal.c	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/src/traversal.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,6 +1,6 @@
 /*
  * Copyright © 2009 CNRS
- * Copyright © 2009-2011 INRIA.  All rights reserved.
+ * Copyright © 2009-2011 inria.  All rights reserved.
  * Copyright © 2009-2010 Université Bordeaux 1
  * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
  * See COPYING in top-level directory.

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/Makefile.am	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,105 @@
+# Copyright © 2009-2011 inria.  All rights reserved.
+# Copyright © 2009-2012 Université Bordeaux 1
+# Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+
+AM_CFLAGS = $(HWLOC_CFLAGS)
+AM_CPPFLAGS = $(HWLOC_CPPFLAGS)
+AM_LDFLAGS = $(HWLOC_LDFLAGS)
+
+SUBDIRS = ports xml
+DIST_SUBDIRS = ports xml linux rename
+
+if HWLOC_HAVE_LINUX
+SUBDIRS += linux
+endif HWLOC_HAVE_LINUX
+
+LDADD =
+
+if HWLOC_BUILD_TESTS
+check_PROGRAMS = hwloc_bitmap \
+	hwloc_bitmap_string \
+	hwloc_get_closest_objs \
+	hwloc_get_obj_covering_cpuset \
+	hwloc_get_cache_covering_cpuset \
+	hwloc_get_largest_objs_inside_cpuset \
+	hwloc_get_next_obj_covering_cpuset \
+	hwloc_get_obj_inside_cpuset \
+	hwloc_get_shared_cache_covering_obj \
+	hwloc_get_obj_below_array_by_type \
+	hwloc_bitmap_first_last_weight \
+	hwloc_bitmap_singlify \
+	hwloc_type_depth \
+	hwloc_bind \
+	hwloc_get_last_cpu_location \
+	hwloc_object_userdata \
+	hwloc_synthetic \
+	hwloc_custom \
+	hwloc_backends \
+	hwloc_is_thissystem \
+	hwloc_distances \
+	hwloc_groups \
+	hwloc_groups2 \
+	hwloc_insert_misc \
+	hwloc_topology_restrict \
+	hwloc_obj_infos \
+	hwloc_iodevs \
+	xmlbuffer
+
+if HWLOC_HAVE_LINUX_LIBNUMA
+check_PROGRAMS += linux-libnuma
+endif HWLOC_HAVE_LINUX_LIBNUMA
+
+if HWLOC_HAVE_SCHED_SETAFFINITY
+check_PROGRAMS += glibc-sched
+endif HWLOC_HAVE_SCHED_SETAFFINITY
+
+if HWLOC_HAVE_LIBIBVERBS
+check_PROGRAMS += openfabrics-verbs
+endif HWLOC_HAVE_LIBIBVERBS
+
+if HWLOC_HAVE_MYRIEXPRESS
+check_PROGRAMS += myriexpress
+endif HWLOC_HAVE_MYRIEXPRESS
+
+if HWLOC_HAVE_CUDA
+check_PROGRAMS += cuda
+endif HWLOC_HAVE_CUDA
+
+if HWLOC_HAVE_CUDART
+check_PROGRAMS += cudart
+endif HWLOC_HAVE_CUDART
+
+TESTS = $(check_PROGRAMS)
+
+# The library has a different name depending on whether we are
+# building in standalone or embedded mode.
+if HWLOC_BUILD_STANDALONE
+hwloc_lib = libhwloc.la
+else
+hwloc_lib = libhwloc_embedded.la
+endif
+
+LDADD += $(HWLOC_top_builddir)/src/$(hwloc_lib)
+
+linux_libnuma_LDADD = $(LDADD) -lnuma
+openfabrics_verbs_LDADD = $(LDADD) -libverbs
+myriexpress_LDADD = $(LDADD) -lmyriexpress
+cuda_LDADD = $(LDADD) -lcuda
+cudart_LDADD = $(LDADD) -lcuda -lcudart
+xmlbuffer_LDADD = $(LDADD) $(HWLOC_LIBXML2_LIBS)
+hwloc_backends_LDADD = $(LDADD) $(HWLOC_LIBXML2_LIBS)
+hwloc_bind_LDADD = $(LDADD) -lpthread
+
+endif HWLOC_BUILD_TESTS
+
+# ship the embedded test code but don't actually let automake ever
+# look at it because we have another configure stuff in there
+EXTRA_DIST = 	embedded/autogen.sh \
+		embedded/configure.ac \
+		embedded/Makefile.am \
+		embedded/do_test.c \
+		embedded/main.c \
+		embedded/run-embedded-tests.sh \
+		embedded/README.txt \
+		embedded/config/README.txt

Deleted: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/README
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/README	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/README	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,4 +0,0 @@
-The contents of this directory have been deleted from the MPICH2 repository.
-Because we build hwloc in "embedded" mode, these directories cause problems with
-the tarballs resulting from "make dist".  The directory itself is left in place
-to keep automake happy and hold this README.

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/cuda.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/cuda.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/cuda.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,64 @@
+/*
+ * Copyright © 2010 inria.  All rights reserved.
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <assert.h>
+#include <cuda.h>
+#include <hwloc.h>
+#include <hwloc/cuda.h>
+
+/* check the CUDA Driver API helpers */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  CUresult cres;
+  CUdevice device;
+  int count, i;
+  int err;
+
+  cres = cuInit(0);
+  if (cres != CUDA_SUCCESS) {
+    printf("cuInit failed %d\n", cres);
+    return 0;
+  }
+
+  cres = cuDeviceGetCount(&count);
+  if (cres != CUDA_SUCCESS) {
+    printf("cuDeviceGetCount failed %d\n", cres);
+    return 0;
+  }
+  printf("cuDeviceGetCount found %d devices\n", count);
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+
+  for(i=0; i<count; i++) {
+    hwloc_bitmap_t set;
+
+    cres = cuDeviceGet(&device, i);
+    if (cres != CUDA_SUCCESS) {
+      printf("failed to get device %d\n", i);
+      continue;
+    }
+
+    set = hwloc_bitmap_alloc();
+    err = hwloc_cuda_get_device_cpuset(topology, device, set);
+    if (err < 0) {
+      printf("failed to get cpuset for device %d\n", i);
+    } else {
+      char *cpuset_string = NULL;
+      hwloc_bitmap_asprintf(&cpuset_string, set);
+      printf("got cpuset %s for device %d\n", cpuset_string, i);
+      free(cpuset_string);
+    }
+    hwloc_bitmap_free(set);
+  }
+
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/cudart.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/cudart.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/cudart.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,51 @@
+/*
+ * Copyright © 2010 inria.  All rights reserved.
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <assert.h>
+#include <cuda_runtime_api.h>
+#include <hwloc.h>
+#include <hwloc/cudart.h>
+
+/* check the CUDA Runtime API helpers */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  cudaError_t cerr;
+  int count, i;
+  int err;
+
+  cerr = cudaGetDeviceCount(&count);
+  if (cerr) {
+    printf("cudaGetDeviceCount failed %d\n", cerr);
+    return -1;
+  }
+  printf("cudaGetDeviceCount found %d devices\n", count);
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+
+  for(i=0; i<count; i++) {
+    hwloc_bitmap_t set;
+
+    set = hwloc_bitmap_alloc();
+    err = hwloc_cudart_get_device_cpuset(topology, i, set);
+    if (err < 0) {
+      printf("failed to get cpuset for device %d\n", i);
+    } else {
+      char *cpuset_string = NULL;
+      hwloc_bitmap_asprintf(&cpuset_string, set);
+      printf("got cpuset %s for device %d\n", cpuset_string, i);
+      free(cpuset_string);
+    }
+    hwloc_bitmap_free(set);
+  }
+
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/Makefile.am	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,21 @@
+# Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+
+ACLOCAL_AMFLAGS = -I./config -I./hwloc-tree/config
+
+SUBDIRS = hwloc-tree
+
+AM_CPPFLAGS = $(HWLOC_EMBEDDED_CPPFLAGS)
+
+TESTS = main
+
+noinst_PROGRAMS = main
+noinst_LTLIBRARIES = libdo_test.la
+
+libdo_test_la_SOURCES = do_test.c
+
+main_SOURCES = main.c
+main_LDADD = libdo_test.la $(HWLOC_EMBEDDED_LDADD) $(HWLOC_EMBEDDED_LIBS)
+main_DEPENDENCIES = libdo_test.la
+
+EXTRA_DIST = run-embedded-tests.sh

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/README.txt
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/README.txt	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/README.txt	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,36 @@
+This test is meant to be run manually; it is not part of "make check".
+
+Someday I may figure out how to make this part of "make check", but
+today is not that day.  :-)
+
+You can run these tests in one of two ways:
+
+1. PREFERRED METHOD: From this directory, invoke
+   "./run-embedded-tests.sh <path-to-hwloc-tarball>".  This will run a
+   battery of tests against that tarball to verify that embedding is
+   working properly from that tarball.
+
+2. MANUAL METHOD: Expand a distribution hwloc tarball in this
+   directory and rename the top-level directory from hwloc-<version>/
+   to hwloc-tree/.  Then run ./autogen.sh, ./configure, and make.  And
+   whatever other tests you'd like to run.
+
+Things to test (most of which are done in the run-embedded-tests.sh
+script):
+
+ - autogen.sh runs properly and to completion
+ - configure runs properly and to completion (normal, absolute VPATH,
+   and relative VPATH)
+ - make runs properly and to completion
+ - you can run the resulting "./main" executable and it properly shows
+   the hwloc depth of the current machine
+ - make test works
+
+If you look at configure.ac, you see that it uses the HWLOC m4 macros
+to build the hwloc located at hwloc-tree/, and renames all the symbols
+from "hwloc_<foo>" to "mytest_<foo>".  The main.c source calls several
+hwloc functions via the "mytest_<foo>" symbols.
+
+Bottom line: if the "main" executable runs and prints the current
+depth (or you can run "make check" successfully), the embedding should
+be working properly.

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/autogen.sh
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/autogen.sh	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/autogen.sh	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,2 @@
+:
+autoreconf -ivf


Property changes on: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/autogen.sh
___________________________________________________________________
Added: svn:executable
   + *

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/config/README.txt
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/config/README.txt	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/config/README.txt	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,2 @@
+This file exists solely so that the config/ directory exists in hg and
+git checkouts.

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/configure.ac
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/configure.ac	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/configure.ac	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,37 @@
+# Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+
+AC_INIT([hwloc-embedded-test], [1.0], [http://www.open-mpi.org/projects/hwloc/], [hwloc-embedded-test])
+AC_PREREQ([2.63])
+AC_CONFIG_AUX_DIR([./config])
+AC_CONFIG_MACRO_DIR([./config])
+AC_CANONICAL_TARGET
+AM_INIT_AUTOMAKE([1.10 dist-bzip2 foreign subdir-objects tar-ustar -Wall -Werror])
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+
+AC_LANG([C])
+
+AC_PROG_CC
+
+cat <<EOF
+
+=== Configuring hwloc (embedded mode)
+EOF
+
+HWLOC_SET_SYMBOL_PREFIX([mytest_])
+HWLOC_SETUP_CORE([hwloc-tree], [hwloc_setup=happy], [hwloc_setup=unhappy])
+AS_IF([test "$hwloc_setup" = "unhappy"],
+      [AC_MSG_ERROR([Cannot build hwloc core])])
+HWLOC_DO_AM_CONDITIONALS
+
+cat <<EOF
+=== Done configuring hwloc (embedded mode)
+
+EOF
+
+AM_ENABLE_SHARED
+AM_DISABLE_STATIC
+AM_PROG_LIBTOOL
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/do_test.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/do_test.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/do_test.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,33 @@
+#include <hwloc.h>
+#include <stdio.h>
+
+/* The body of the test is in a separate .c file and a separate
+   library, just to ensure that hwloc didn't force compilation with
+   visibility flags enabled. */
+
+int do_test(void)
+{
+    mytest_hwloc_topology_t topology;
+    unsigned depth;
+    hwloc_bitmap_t cpu_set;
+
+    /* Just call a bunch of functions to see if we can link and run */
+
+    printf("*** Test 1: bitmap alloc\n");
+    cpu_set = mytest_hwloc_bitmap_alloc();
+    if (NULL == cpu_set) return 1;
+    printf("*** Test 2: topology init\n");
+    if (0 != mytest_hwloc_topology_init(&topology)) return 1;
+    printf("*** Test 3: topology load\n");
+    if (0 != mytest_hwloc_topology_load(topology)) return 1;
+    printf("*** Test 4: topology get depth\n");
+    depth = mytest_hwloc_topology_get_depth(topology);
+    if (depth < 0) return 1;
+    printf("    Max depth: %u\n", depth);
+    printf("*** Test 5: topology destroy\n");
+    mytest_hwloc_topology_destroy(topology);
+    printf("*** Test 6: bitmap free\n");
+    mytest_hwloc_bitmap_free(cpu_set);
+
+    return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/main.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/main.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/main.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,21 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+#include <stdio.h>
+
+extern int do_test(void);
+
+
+int main(int argc, char *argv[])
+{
+    /* Make the test be in a separate library that will fail to link
+       properly if hwloc forces compilation with visibility
+       enabled. */
+    return do_test();
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/run-embedded-tests.sh
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/run-embedded-tests.sh	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/run-embedded-tests.sh	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,133 @@
+#!/bin/bash
+#
+# Copyright © 2010 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+#
+# Simple script to help test embedding:
+#
+#     ./run-embedded-tests.sh <tarball_name>
+#
+
+set -o pipefail
+
+tarball=$1
+if test "$tarball" = ""; then
+    echo "Usage: $0 <tarball_name>"
+    exit 1
+elif test ! -r $tarball; then
+    echo cannot read tarball: $tarball
+    exit 1
+fi
+
+#---------------------------------------------------------------------
+
+i=1
+last_print=
+print() {
+    last_print="=== $i: $*"
+    echo $last_print
+    i=`expr $i + 1`
+}
+
+#---------------------------------------------------------------------
+
+try() {
+    cmd=$*
+    eval $cmd
+    status=$?
+    if test "$status" != "0"; then
+        echo "Command failed (status $status): $cmd"
+        echo "Last print was: $last_print"
+        exit 1
+    fi
+}
+
+#---------------------------------------------------------------------
+
+# $1 = announcement banner
+# $2 = path to configure script
+do_build() {
+    print Running $1 configure...
+    try $2/configure 2>&1 | tee config.out
+    if test "$?" != 0; then exit $?; fi
+
+    print Running make
+    try make 2>&1 | tee make.out
+    if test "$?" != 0; then exit $?; fi
+
+    print Running make check
+    try make check 2>&1 | tee check.out
+    if test "$?" != 0; then exit $?; fi
+
+    print Running make clean
+    try make clean 2>&1 | tee clean.out
+    if test "$?" != 0; then exit $?; fi
+
+    print Running make distclean
+    try make distclean 2>&1 | tee distclean.out
+    if test "$?" != 0; then exit $?; fi
+}
+
+#---------------------------------------------------------------------
+
+# Get tarball name
+print Got tarball: $tarball
+
+# Get the version
+ver=`echo $tarball | sed -e 's/^.*hwloc-//' -e 's/.tar.*$//'`
+print Got version: $ver
+
+# Extract
+print Extracting tarball...
+rm -rf hwloc-$ver
+if test "`echo $tarball | grep .tar.bz2`" != ""; then
+    try tar jxf $tarball
+else
+    try tar zxf $tarball
+fi
+
+print Removing old tree...
+rm -rf hwloc-tree
+mv hwloc-$ver hwloc-tree
+
+# Autogen
+print Running autogen...
+try ./autogen.sh
+
+# Do it normally (non-VPATH)
+do_build non-VPATH .
+
+# Do a VPATH in the same tree that we just setup
+mkdir build
+cd build
+do_build VPATH ..
+
+cd ..
+rm -rf build
+
+# Now whack the tree and do a clean VPATH
+print Re-extracting tarball...
+rm -rf hwloc-$ver
+if test "`echo $tarball | grep .tar.bz2`" != ""; then
+    try tar jxf $tarball
+else
+    try tar zxf $tarball
+fi
+
+print Removing old tree...
+rm -rf hwloc-tree
+mv hwloc-$ver hwloc-tree
+
+# Autogen
+print Running autogen...
+try ./autogen.sh
+
+# Run it again on a clean VPATH
+mkdir build
+cd build
+do_build VPATH-clean ..
+
+cd ..
+rm -rf build
+
+print All tests passed!


Property changes on: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/embedded/run-embedded-tests.sh
___________________________________________________________________
Added: svn:executable
   + *

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/glibc-sched.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/glibc-sched.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/glibc-sched.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,89 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#define _GNU_SOURCE
+#include <sched.h>
+#include <assert.h>
+#include <private/autogen/config.h> /* for HWLOC_HAVE_OLD_SCHED_SETAFFINITY */
+#include <hwloc.h>
+#include <hwloc/glibc-sched.h>
+
+/* check the linux libnuma helpers */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+#ifdef HWLOC_HAVE_CPU_SET
+  unsigned depth;
+  hwloc_bitmap_t hwlocset;
+  cpu_set_t schedset;
+  hwloc_obj_t obj;
+  int err;
+#endif /* HWLOC_HAVE_CPU_SET */
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+
+#ifdef HWLOC_HAVE_CPU_SET
+
+  depth = hwloc_topology_get_depth(topology);
+
+  hwlocset = hwloc_bitmap_dup(hwloc_topology_get_complete_cpuset(topology));
+  hwloc_cpuset_to_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset));
+#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
+  err = sched_setaffinity(0, sizeof(schedset));
+#else
+  err = sched_setaffinity(0, sizeof(schedset), &schedset);
+#endif
+  assert(!err);
+  hwloc_bitmap_free(hwlocset);
+
+#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
+  err = sched_getaffinity(0, sizeof(schedset));
+#else
+  err = sched_getaffinity(0, sizeof(schedset), &schedset);
+#endif
+  assert(!err);
+  hwlocset = hwloc_bitmap_alloc();
+  hwloc_cpuset_from_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset));
+  assert(hwloc_bitmap_isincluded(hwlocset, hwloc_topology_get_complete_cpuset(topology)));
+  hwloc_bitmap_andnot(hwlocset, hwlocset, hwloc_topology_get_online_cpuset(topology));
+  hwloc_bitmap_andnot(hwlocset, hwlocset, hwloc_topology_get_allowed_cpuset(topology));
+  assert(hwloc_bitmap_iszero(hwlocset));
+  hwloc_bitmap_free(hwlocset);
+
+  obj = hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1) - 1);
+  assert(obj);
+  assert(obj->type == HWLOC_OBJ_PU);
+
+  hwlocset = hwloc_bitmap_dup(obj->cpuset);
+  hwloc_cpuset_to_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset));
+#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
+  err = sched_setaffinity(0, sizeof(schedset));
+#else
+  err = sched_setaffinity(0, sizeof(schedset), &schedset);
+#endif
+  assert(!err);
+  hwloc_bitmap_free(hwlocset);
+
+#ifdef HWLOC_HAVE_OLD_SCHED_SETAFFINITY
+  err = sched_getaffinity(0, sizeof(schedset));
+#else
+  err = sched_getaffinity(0, sizeof(schedset), &schedset);
+#endif
+  assert(!err);
+  hwlocset = hwloc_bitmap_alloc();
+  hwloc_cpuset_from_glibc_sched_affinity(topology, hwlocset, &schedset, sizeof(schedset));
+  assert(hwloc_bitmap_isequal(hwlocset, obj->cpuset));
+  hwloc_bitmap_free(hwlocset);
+
+#endif /* HWLOC_HAVE_CPU_SET */
+
+  hwloc_topology_destroy(topology);
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_backends.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_backends.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_backends.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,93 @@
+/*
+ * Copyright © 2011 inria.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+
+/* mostly useful with valgrind, to check if backend cleanup properly */
+
+int main(void)
+{
+  hwloc_topology_t topology1, topology2;
+  char *xmlbuf;
+  int xmlbuflen;
+  char xmlfile[] = "hwloc_backends.tmpxml.XXXXXX";
+  int xmlbufok = 0, xmlfileok = 0;
+  hwloc_obj_t sw;
+
+  printf("trying to export topology to XML buffer and file for later...\n");
+  hwloc_topology_init(&topology1);
+  hwloc_topology_load(topology1);
+  if (hwloc_topology_export_xmlbuffer(topology1, &xmlbuf, &xmlbuflen) < 0)
+    printf("XML buffer export failed (%s), ignoring\n", strerror(errno));
+  else
+    xmlbufok = 1;
+  mktemp(xmlfile);
+  if (hwloc_topology_export_xml(topology1, xmlfile) < 0)
+    printf("XML file export failed (%s), ignoring\n", strerror(errno));
+  else
+    xmlfileok = 1;
+
+
+  printf("init...\n");
+  hwloc_topology_init(&topology2);
+  if (xmlfileok) {
+    printf("switching to xml...\n");
+    assert(!hwloc_topology_set_xml(topology2, xmlfile));
+  }
+  if (xmlbufok) {
+    printf("switching to xmlbuffer...\n");
+    assert(!hwloc_topology_set_xmlbuffer(topology2, xmlbuf, xmlbuflen));
+  }
+  printf("switching to synthetic...\n");
+  hwloc_topology_set_synthetic(topology2, "machine:2 node:3 cache:2 pu:4");
+  printf("switching to custom...\n");
+  hwloc_topology_set_custom(topology2);
+  printf("switching sysfs fsroot...\n");
+  hwloc_topology_set_fsroot(topology2, "/");
+
+  if (xmlfileok) {
+    printf("switching to xml and loading...\n");
+    assert(!hwloc_topology_set_xml(topology2, xmlfile));
+    hwloc_topology_load(topology2);
+  }
+  if (xmlbufok) {
+    printf("switching to xmlbuffer and loading...\n");
+    assert(!hwloc_topology_set_xmlbuffer(topology2, xmlbuf, xmlbuflen));
+    hwloc_topology_load(topology2);
+  }
+  printf("switching to synthetic and loading...\n");
+  hwloc_topology_set_synthetic(topology2, "machine:2 node:3 cache:2 pu:4");
+  hwloc_topology_load(topology2);
+  printf("switching to custom and loading...\n");
+  hwloc_topology_set_custom(topology2);
+  sw = hwloc_custom_insert_group_object_by_parent(topology2, hwloc_get_root_obj(topology2), 0);
+  assert(sw);
+  hwloc_custom_insert_topology(topology2, sw, topology1, NULL);
+  hwloc_topology_load(topology2);
+  printf("switching sysfs fsroot and loading...\n");
+  hwloc_topology_set_fsroot(topology2, "/");
+  hwloc_topology_load(topology2);
+
+  printf("switching to synthetic...\n");
+  hwloc_topology_set_synthetic(topology2, "machine:2 node:3 cache:2 pu:4");
+
+  hwloc_topology_destroy(topology2);
+
+
+  if (xmlbufok)
+    hwloc_free_xmlbuffer(topology1, xmlbuf);
+  if (xmlfileok)
+    unlink(xmlfile);
+  hwloc_topology_destroy(topology1);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bind.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bind.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bind.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,226 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#include <private/autogen/config.h> /* for HWLOC_WIN_SYS */
+#include <hwloc.h>
+
+/* check the binding functions */
+hwloc_topology_t topology;
+const struct hwloc_topology_support *support;
+
+static void result_set(const char *msg, int err, int supported)
+{
+  const char *errmsg = strerror(errno);
+  if (err)
+    printf("%-40s: %sFAILED (%d, %s)\n", msg, supported?"":"X", errno, errmsg);
+  else
+    printf("%-40s: OK\n", msg);
+}
+
+static void result_get(const char *msg, hwloc_const_bitmap_t expected, hwloc_const_bitmap_t result, int err, int supported)
+{
+  const char *errmsg = strerror(errno);
+  if (err)
+    printf("%-40s: %sFAILED (%d, %s)\n", msg, supported?"":"X", errno, errmsg);
+  else if (!expected || hwloc_bitmap_isequal(expected, result))
+    printf("%-40s: OK\n", msg);
+  else {
+    char *expected_s, *result_s;
+    hwloc_bitmap_asprintf(&expected_s, expected);
+    hwloc_bitmap_asprintf(&result_s, result);
+    printf("%-40s: expected %s, got %s\n", msg, expected_s, result_s);
+  }
+}
+
+static void test(hwloc_const_bitmap_t cpuset, int flags)
+{
+  hwloc_bitmap_t new_cpuset = hwloc_bitmap_alloc();
+  result_set("Bind this singlethreaded process", hwloc_set_cpubind(topology, cpuset, flags), support->cpubind->set_thisproc_cpubind || support->cpubind->set_thisthread_cpubind);
+  result_get("Get  this singlethreaded process", cpuset, new_cpuset, hwloc_get_cpubind(topology, new_cpuset, flags), support->cpubind->get_thisproc_cpubind || support->cpubind->get_thisthread_cpubind);
+  result_set("Bind this thread", hwloc_set_cpubind(topology, cpuset, flags | HWLOC_CPUBIND_THREAD), support->cpubind->set_thisthread_cpubind);
+  result_get("Get  this thread", cpuset, new_cpuset, hwloc_get_cpubind(topology, new_cpuset, flags | HWLOC_CPUBIND_THREAD), support->cpubind->get_thisthread_cpubind);
+  result_set("Bind this whole process", hwloc_set_cpubind(topology, cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->set_thisproc_cpubind);
+  result_get("Get  this whole process", cpuset, new_cpuset, hwloc_get_cpubind(topology, new_cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->get_thisproc_cpubind);
+
+#ifdef HWLOC_WIN_SYS
+  result_set("Bind process", hwloc_set_proc_cpubind(topology, GetCurrentProcess(), cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->set_proc_cpubind);
+  result_get("Get  process", cpuset, new_cpuset, hwloc_get_proc_cpubind(topology, GetCurrentProcess(), new_cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->get_proc_cpubind);
+  result_set("Bind thread", hwloc_set_thread_cpubind(topology, GetCurrentThread(), cpuset, flags | HWLOC_CPUBIND_THREAD), support->cpubind->set_thread_cpubind);
+  result_get("Get  thread", cpuset, new_cpuset, hwloc_get_thread_cpubind(topology, GetCurrentThread(), new_cpuset, flags | HWLOC_CPUBIND_THREAD), support->cpubind->get_thread_cpubind);
+#else /* !HWLOC_WIN_SYS */
+  result_set("Bind whole process", hwloc_set_proc_cpubind(topology, getpid(), cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->set_proc_cpubind);
+  result_get("Get  whole process", cpuset, new_cpuset, hwloc_get_proc_cpubind(topology, getpid(), new_cpuset, flags | HWLOC_CPUBIND_PROCESS), support->cpubind->get_proc_cpubind);
+  result_set("Bind process", hwloc_set_proc_cpubind(topology, getpid(), cpuset, flags), support->cpubind->set_proc_cpubind);
+  result_get("Get  process", cpuset, new_cpuset, hwloc_get_proc_cpubind(topology, getpid(), new_cpuset, flags), support->cpubind->get_proc_cpubind);
+#ifdef hwloc_thread_t
+  result_set("Bind thread", hwloc_set_thread_cpubind(topology, pthread_self(), cpuset, flags), support->cpubind->set_thread_cpubind);
+  result_get("Get  thread", cpuset, new_cpuset, hwloc_get_thread_cpubind(topology, pthread_self(), new_cpuset, flags), support->cpubind->get_thread_cpubind);
+#endif
+#endif /* !HWLOC_WIN_SYS */
+  printf("\n");
+  hwloc_bitmap_free(new_cpuset);
+}
+
+static void testmem(hwloc_const_bitmap_t nodeset, hwloc_membind_policy_t policy, int flags, int expected)
+{
+  hwloc_bitmap_t new_nodeset = hwloc_bitmap_alloc();
+  hwloc_membind_policy_t newpolicy;
+  void *area;
+  size_t area_size = 1024;
+
+  result_set("Bind this singlethreaded process memory", hwloc_set_membind(topology, nodeset, policy, flags), (support->membind->set_thisproc_membind || support->membind->set_thisthread_membind) && expected);
+  result_get("Get  this singlethreaded process memory", nodeset, new_nodeset, hwloc_get_membind(topology, new_nodeset, &newpolicy, flags), (support->membind->get_thisproc_membind || support->membind->get_thisthread_membind) && expected);
+
+  result_set("Bind this thread memory", hwloc_set_membind(topology, nodeset, policy, flags | HWLOC_MEMBIND_THREAD), support->membind->set_thisproc_membind && expected);
+  result_get("Get  this thread memory", nodeset, new_nodeset, hwloc_get_membind(topology, new_nodeset, &newpolicy, flags | HWLOC_MEMBIND_THREAD), support->membind->get_thisproc_membind && expected);
+
+  result_set("Bind this whole process memory", hwloc_set_membind(topology, nodeset, policy, flags | HWLOC_MEMBIND_PROCESS), support->membind->set_thisproc_membind && expected);
+  result_get("Get  this whole process memory", nodeset, new_nodeset, hwloc_get_membind(topology, new_nodeset, &newpolicy, flags | HWLOC_MEMBIND_PROCESS), support->membind->get_thisproc_membind && expected);
+
+#ifdef HWLOC_WIN_SYS
+  result_set("Bind process memory", hwloc_set_proc_membind(topology, GetCurrentProcess(), nodeset, policy, flags), support->membind->set_proc_membind && expected);
+  result_get("Get  process memory", nodeset, new_nodeset, hwloc_get_proc_membind(topology, GetCurrentProcess(), new_nodeset, &newpolicy, flags), support->membind->get_proc_membind && expected);
+#else /* !HWLOC_WIN_SYS */
+  result_set("Bind process memory", hwloc_set_proc_membind(topology, getpid(), nodeset, policy, flags), support->membind->set_proc_membind && expected);
+  result_get("Get  process memory", nodeset, new_nodeset, hwloc_get_proc_membind(topology, getpid(), new_nodeset, &newpolicy, flags), support->membind->get_proc_membind && expected);
+#endif /* !HWLOC_WIN_SYS */
+
+  result_set("Bind area", hwloc_set_area_membind(topology, &new_nodeset, sizeof(new_nodeset), nodeset, policy, flags), support->membind->set_area_membind && expected);
+  result_get("Get  area", nodeset, new_nodeset, hwloc_get_area_membind(topology, &new_nodeset, sizeof(new_nodeset), new_nodeset, &newpolicy, flags), support->membind->get_area_membind && expected);
+
+  if (!(flags & HWLOC_MEMBIND_MIGRATE)) {
+    result_set("Alloc bound area", (area = hwloc_alloc_membind(topology, area_size, nodeset, policy, flags)) == NULL, (support->membind->alloc_membind && expected) || !(flags & HWLOC_MEMBIND_STRICT));
+    if (area) {
+      memset(area, 0, area_size);
+      result_get("Get   bound area", nodeset, new_nodeset, hwloc_get_area_membind(topology, area, area_size, new_nodeset, &newpolicy, flags), support->membind->get_area_membind && expected);
+      result_get("Free  bound area", NULL, NULL, hwloc_free(topology, area, area_size), support->membind->alloc_membind && expected);
+    }
+
+    result_set("Alloc bound area through policy", (area = hwloc_alloc_membind_policy(topology, area_size, nodeset, policy, flags)) == NULL, (support->membind->set_thisproc_membind && expected) || !(flags & HWLOC_MEMBIND_STRICT));
+    if (area) {
+      memset(area, 0, area_size);
+      result_get("Get   bound area", nodeset, new_nodeset, hwloc_get_area_membind(topology, area, area_size, new_nodeset, &newpolicy, flags), support->membind->get_area_membind && expected);
+      result_get("Free  bound area", NULL, NULL, hwloc_free(topology, area, area_size), support->membind->alloc_membind && expected);
+    }
+  }
+  printf("\n");
+  hwloc_bitmap_free(new_nodeset);
+}
+
+static void testmem2(hwloc_const_bitmap_t set, int flags)
+{
+  printf("  default\n");
+  testmem(set, HWLOC_MEMBIND_DEFAULT, flags, 1);
+  printf("  firsttouch\n");
+  testmem(set, HWLOC_MEMBIND_FIRSTTOUCH, flags, support->membind->firsttouch_membind);
+  printf("  bound\n");
+  testmem(set, HWLOC_MEMBIND_BIND, flags, support->membind->bind_membind);
+  printf("  interleave\n");
+  testmem(set, HWLOC_MEMBIND_INTERLEAVE, flags, support->membind->interleave_membind);
+  printf("  replicate\n");
+  testmem(set, HWLOC_MEMBIND_REPLICATE, flags, support->membind->replicate_membind);
+  printf("  nexttouch\n");
+  testmem(set, HWLOC_MEMBIND_NEXTTOUCH, flags, support->membind->nexttouch_membind);
+}
+
+static void testmem3(hwloc_const_bitmap_t set)
+{
+  testmem2(set, 0);
+  printf("now strict\n\n");
+  testmem2(set, HWLOC_MEMBIND_STRICT);
+  printf("now migrate\n\n");
+  testmem2(set, HWLOC_MEMBIND_MIGRATE);
+  printf("now strictly migrate\n\n");
+  testmem2(set, HWLOC_MEMBIND_STRICT | HWLOC_MEMBIND_MIGRATE);
+}
+
+int main(void)
+{
+  hwloc_bitmap_t set;
+  hwloc_obj_t obj;
+  char *str = NULL;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+
+  support = hwloc_topology_get_support(topology);
+
+  obj = hwloc_get_root_obj(topology);
+  set = hwloc_bitmap_dup(obj->cpuset);
+
+  while (hwloc_bitmap_isequal(obj->cpuset, set)) {
+    if (!obj->arity)
+      break;
+    obj = obj->children[0];
+  }
+
+  hwloc_bitmap_asprintf(&str, set);
+  printf("system set is %s\n", str);
+  free(str);
+
+  test(set, 0);
+  printf("now strict\n");
+  test(set, HWLOC_CPUBIND_STRICT);
+
+  hwloc_bitmap_free(set);
+  set = hwloc_bitmap_dup(obj->cpuset);
+  hwloc_bitmap_asprintf(&str, set);
+  printf("obj set is %s\n", str);
+  free(str);
+
+  test(set, 0);
+  printf("now strict\n");
+  test(set, HWLOC_CPUBIND_STRICT);
+
+  hwloc_bitmap_singlify(set);
+  hwloc_bitmap_asprintf(&str, set);
+  printf("singlified to %s\n", str);
+  free(str);
+
+  test(set, 0);
+  printf("now strict\n");
+  test(set, HWLOC_CPUBIND_STRICT);
+  hwloc_bitmap_free(set);
+
+  printf("\n\nmemory tests\n\n");
+  printf("complete node set\n");
+  set = hwloc_bitmap_dup(hwloc_get_root_obj(topology)->cpuset);
+  hwloc_bitmap_asprintf(&str, set);
+  printf("i.e. cpuset %s\n", str);
+  free(str);
+  testmem3(set);
+  hwloc_bitmap_free(set);
+
+  obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NODE, 0);
+  if (obj) {
+    set = hwloc_bitmap_dup(obj->cpuset);
+    hwloc_bitmap_asprintf(&str, set);
+    printf("cpuset set is %s\n", str);
+    free(str);
+
+    testmem3(set);
+
+    obj = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NODE, 1);
+    if (obj) {
+      hwloc_bitmap_or(set, set, obj->cpuset);
+      hwloc_bitmap_asprintf(&str, set);
+      printf("cpuset set is %s\n", str);
+      free(str);
+
+      testmem3(set);
+    }
+    hwloc_bitmap_free(set);
+  }
+
+  hwloc_topology_destroy(topology);
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,146 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <assert.h>
+
+/* check misc bitmap stuff */
+
+int main(void)
+{
+  hwloc_bitmap_t set;
+
+  /* check an empty bitmap */
+  set = hwloc_bitmap_alloc();
+  assert(hwloc_bitmap_to_ulong(set) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL);
+  /* check a non-empty bitmap */
+  hwloc_bitmap_from_ith_ulong(set, 4, 0xff);
+  assert(hwloc_bitmap_to_ith_ulong(set, 4) == 0xff);
+  assert(hwloc_bitmap_to_ulong(set) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL);
+  /* check a zeroed bitmap */
+  hwloc_bitmap_zero(set);
+  assert(hwloc_bitmap_to_ulong(set) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 4) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL);
+  hwloc_bitmap_free(set);
+
+  /* check a full bitmap */
+  set = hwloc_bitmap_alloc_full();
+  assert(hwloc_bitmap_to_ulong(set) == ~0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 0) == ~0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 1) == ~0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 23) == ~0UL);
+  /* check a almost full bitmap */
+  hwloc_bitmap_set_ith_ulong(set, 4, 0xff);
+  assert(hwloc_bitmap_to_ith_ulong(set, 4) == 0xff);
+  assert(hwloc_bitmap_to_ulong(set) == ~0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 0) == ~0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 1) == ~0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 23) == ~0UL);
+  /* check a almost empty bitmap */
+  hwloc_bitmap_from_ith_ulong(set, 4, 0xff);
+  assert(hwloc_bitmap_to_ith_ulong(set, 4) == 0xff);
+  assert(hwloc_bitmap_to_ulong(set) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0UL);
+  assert(hwloc_bitmap_to_ith_ulong(set, 23) == 0UL);
+  hwloc_bitmap_free(set);
+
+  /* check ranges */
+  set = hwloc_bitmap_alloc();
+  assert(hwloc_bitmap_weight(set) == 0);
+  /* 23-45 */
+  hwloc_bitmap_set_range(set, 23, 45);
+  assert(hwloc_bitmap_weight(set) == 23);
+  /* 23-45,78- */
+  hwloc_bitmap_set_range(set, 78, -1);
+  assert(hwloc_bitmap_weight(set) == -1);
+  /* 23- */
+  hwloc_bitmap_set_range(set, 44, 79);
+  assert(hwloc_bitmap_weight(set) == -1);
+  assert(hwloc_bitmap_first(set) == 23);
+  assert(!hwloc_bitmap_isfull(set));
+  /* 0- */
+  hwloc_bitmap_set_range(set, 0, 22);
+  assert(hwloc_bitmap_weight(set) == -1);
+  assert(hwloc_bitmap_isfull(set));
+  /* 0-34,57- */
+  hwloc_bitmap_clr_range(set, 35, 56);
+  assert(hwloc_bitmap_weight(set) == -1);
+  assert(!hwloc_bitmap_isfull(set));
+  /* 0-34,57 */
+  hwloc_bitmap_clr_range(set, 58, -1);
+  assert(hwloc_bitmap_weight(set) == 36);
+  assert(hwloc_bitmap_last(set) == 57);
+  assert(hwloc_bitmap_next(set, 34) == 57);
+  /* 0-34 */
+  hwloc_bitmap_clr(set, 57);
+  assert(hwloc_bitmap_weight(set) == 35);
+  assert(hwloc_bitmap_last(set) == 34);
+  /* empty */
+  hwloc_bitmap_clr_range(set, 0, 34);
+  assert(hwloc_bitmap_weight(set) == 0);
+  assert(hwloc_bitmap_first(set) == -1);
+  hwloc_bitmap_free(set);
+
+  /* check miscellaneous other functions */
+  set = hwloc_bitmap_alloc();
+  /* from_ulong */
+  hwloc_bitmap_from_ulong(set, 0x0ff0);
+  assert(hwloc_bitmap_first(set) == 4);
+  assert(hwloc_bitmap_last(set) == 11);
+  assert(hwloc_bitmap_weight(set) == 8);
+  assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0xff0);
+  assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0);
+  /* from_ith_ulong */
+  hwloc_bitmap_zero(set);
+  assert(hwloc_bitmap_weight(set) == 0);
+  hwloc_bitmap_from_ith_ulong(set, 2, 0xff00);
+  assert(hwloc_bitmap_weight(set) == 8);
+  assert(hwloc_bitmap_to_ith_ulong(set, 0) == 0);
+  assert(hwloc_bitmap_to_ith_ulong(set, 1) == 0);
+  assert(hwloc_bitmap_to_ith_ulong(set, 2) == 0xff00);
+  assert(hwloc_bitmap_to_ith_ulong(set, 3) == 0);
+  /* allbut and not */
+  hwloc_bitmap_allbut(set, 153);
+  assert(hwloc_bitmap_weight(set) == -1);
+  hwloc_bitmap_not(set, set);
+  assert(hwloc_bitmap_weight(set) == 1);
+  assert(hwloc_bitmap_first(set) == 153);
+  assert(hwloc_bitmap_last(set) == 153);
+  /* clr_range */
+  hwloc_bitmap_fill(set);
+  hwloc_bitmap_clr_range(set, 178, 3589);
+  hwloc_bitmap_not(set, set);
+  assert(hwloc_bitmap_weight(set) == 3589-178+1);
+  assert(hwloc_bitmap_first(set) == 178);
+  assert(hwloc_bitmap_last(set) == 3589);
+  /* singlify */
+  hwloc_bitmap_zero(set);
+  hwloc_bitmap_set_range(set, 0, 127);
+  assert(hwloc_bitmap_weight(set) == 128);
+  hwloc_bitmap_not(set, set);
+  assert(hwloc_bitmap_weight(set) == -1);
+  hwloc_bitmap_singlify(set);
+  assert(hwloc_bitmap_weight(set) == 1);
+  assert(hwloc_bitmap_first(set) == 128);
+  assert(hwloc_bitmap_last(set) == 128);
+
+  hwloc_bitmap_free(set);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_first_last_weight.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_first_last_weight.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_first_last_weight.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,85 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <assert.h>
+
+/* check hwloc_bitmap_first(), _last(), _next() and _weight() */
+
+int main(void)
+{
+  hwloc_bitmap_t set;
+  int i, cpu, expected_cpu = 0;
+
+  /* empty set */
+  set = hwloc_bitmap_alloc();
+  assert(hwloc_bitmap_first(set) == -1);
+  assert(hwloc_bitmap_last(set) == -1);
+  assert(hwloc_bitmap_next(set, 0) == -1);
+  assert(hwloc_bitmap_next(set, -1) == -1);
+  assert(hwloc_bitmap_weight(set) == 0);
+
+  /* full set */
+  hwloc_bitmap_fill(set);
+  assert(hwloc_bitmap_first(set) == 0);
+  assert(hwloc_bitmap_last(set) == -1);
+  assert(hwloc_bitmap_next(set, -1) == 0);
+  assert(hwloc_bitmap_next(set, 0) == 1);
+  assert(hwloc_bitmap_next(set, 1) == 2);
+  assert(hwloc_bitmap_next(set, 2) == 3);
+  assert(hwloc_bitmap_next(set, 30) == 31);
+  assert(hwloc_bitmap_next(set, 31) == 32);
+  assert(hwloc_bitmap_next(set, 32) == 33);
+  assert(hwloc_bitmap_next(set, 62) == 63);
+  assert(hwloc_bitmap_next(set, 63) == 64);
+  assert(hwloc_bitmap_next(set, 64) == 65);
+  assert(hwloc_bitmap_next(set, 12345) == 12346);
+  assert(hwloc_bitmap_weight(set) == -1);
+
+  /* custom sets */
+  hwloc_bitmap_zero(set);
+  hwloc_bitmap_set_range(set, 36, 59);
+  assert(hwloc_bitmap_first(set) == 36);
+  assert(hwloc_bitmap_last(set) == 59);
+  assert(hwloc_bitmap_next(set, -1) == 36);
+  assert(hwloc_bitmap_next(set, 0) == 36);
+  assert(hwloc_bitmap_next(set, 36) == 37);
+  assert(hwloc_bitmap_next(set, 59) == -1);
+  assert(hwloc_bitmap_weight(set) == 24);
+  hwloc_bitmap_set_range(set, 136, 259);
+  assert(hwloc_bitmap_first(set) == 36);
+  assert(hwloc_bitmap_last(set) == 259);
+  assert(hwloc_bitmap_next(set, 59) == 136);
+  assert(hwloc_bitmap_next(set, 259) == -1);
+  assert(hwloc_bitmap_weight(set) == 148);
+  hwloc_bitmap_clr(set, 199);
+  assert(hwloc_bitmap_first(set) == 36);
+  assert(hwloc_bitmap_last(set) == 259);
+  assert(hwloc_bitmap_next(set, 198) == 200);
+  assert(hwloc_bitmap_next(set, 199) == 200);
+  assert(hwloc_bitmap_weight(set) == 147);
+
+  i = 0;
+  hwloc_bitmap_foreach_begin(cpu, set) {
+    if (0 <= i && i < 24)
+      expected_cpu = i + 36;
+    else if (24 <= i && i < 87)
+      expected_cpu = i + 112;
+    else if (87 <= i && i < 147)
+      expected_cpu = i + 113;
+
+    assert(expected_cpu == cpu);
+
+    i++;
+  } hwloc_bitmap_foreach_end();
+
+  hwloc_bitmap_free(set);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_singlify.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_singlify.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_singlify.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,52 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* check hwloc_bitmap_singlify() */
+
+int main(void)
+{
+  hwloc_bitmap_t orig, expected;
+
+  orig = hwloc_bitmap_alloc();
+  expected = hwloc_bitmap_alloc();
+
+  /* empty set gives empty set */
+  hwloc_bitmap_singlify(orig);
+  assert(hwloc_bitmap_iszero(orig));
+
+  /* full set gives first bit only */
+  hwloc_bitmap_fill(orig);
+  hwloc_bitmap_singlify(orig);
+  hwloc_bitmap_zero(expected);
+  hwloc_bitmap_set(expected, 0);
+  assert(hwloc_bitmap_isequal(orig, expected));
+  assert(!hwloc_bitmap_compare(orig, expected));
+
+  /* actual non-trivial set */
+  hwloc_bitmap_zero(orig);
+  hwloc_bitmap_set(orig, 45);
+  hwloc_bitmap_set(orig, 46);
+  hwloc_bitmap_set(orig, 517);
+  hwloc_bitmap_singlify(orig);
+  hwloc_bitmap_zero(expected);
+  hwloc_bitmap_set(expected, 45);
+  assert(hwloc_bitmap_isequal(orig, expected));
+  assert(!hwloc_bitmap_compare(orig, expected));
+
+  hwloc_bitmap_free(orig);
+  hwloc_bitmap_free(expected);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_string.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_string.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_bitmap_string.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,170 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* check hwloc_bitmap_asprintf(), hwloc_obj_cpuset_snprintf() and hwloc_bitmap_sscanf() */
+
+static void check_cpuset(hwloc_bitmap_t set, const char *expected)
+{
+  hwloc_bitmap_t set2 = hwloc_bitmap_alloc();
+  char *string = NULL;
+
+  hwloc_bitmap_asprintf(&string, set);
+  if (expected)
+    assert(!strcmp(string, expected));
+  hwloc_bitmap_sscanf(set2, string);
+  free(string);
+  assert(hwloc_bitmap_isequal(set, set2));
+
+  hwloc_bitmap_list_asprintf(&string, set);
+  hwloc_bitmap_list_sscanf(set2, string);
+  free(string);
+  assert(hwloc_bitmap_isequal(set, set2));
+
+  hwloc_bitmap_taskset_asprintf(&string, set);
+  hwloc_bitmap_taskset_sscanf(set2, string);
+  free(string);
+  assert(hwloc_bitmap_isequal(set, set2));
+
+  hwloc_bitmap_free(set2);
+}
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  unsigned depth;
+  char *string = NULL;
+  int stringlen, len;
+  hwloc_obj_t obj;
+  hwloc_bitmap_t set;
+
+  /* check an empty cpuset */
+  set = hwloc_bitmap_alloc();
+  check_cpuset(set, "0x0");
+  hwloc_bitmap_free(set);
+  printf("empty cpuset converted back and forth, ok\n");
+
+  /* check a full (and infinite) cpuset */
+  set = hwloc_bitmap_alloc_full();
+  check_cpuset(set, "0xf...f");
+  hwloc_bitmap_free(set);
+  printf("full cpuset converted back and forth, ok\n");
+
+  /* check an infinite (but non full) cpuset */
+  set = hwloc_bitmap_alloc_full();
+  hwloc_bitmap_clr(set, 173);
+  hwloc_bitmap_clr_range(set, 60, 70);
+  hwloc_bitmap_asprintf(&string, set);
+  check_cpuset(set, NULL);
+  hwloc_bitmap_free(set);
+  printf("infinite/nonfull cpuset converted back and forth, ok\n");
+
+  /* check an finite cpuset */
+  set = hwloc_bitmap_alloc();
+  hwloc_bitmap_set(set, 2);
+  hwloc_bitmap_set_range(set, 67, 70);
+  check_cpuset(set, "0x00000078,,0x00000004");
+  hwloc_bitmap_free(set);
+  printf("finite/nonnull cpuset converted back and forth, ok\n");
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, "6 5 4 3 2");
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+
+  obj = hwloc_get_root_obj(topology);
+  stringlen = hwloc_bitmap_asprintf(&string, obj->cpuset);
+  printf("system cpuset is %s\n", string);
+  check_cpuset(obj->cpuset, NULL);
+  printf("system cpuset converted back and forth, ok\n");
+
+  printf("truncating system cpuset to NULL buffer\n");
+  len = hwloc_obj_cpuset_snprintf(NULL, 0, 1, &obj);
+  assert(len == stringlen);
+
+  printf("truncating system cpuset to 0 char (no modification)\n");
+  memset(string, 'X', 1);
+  string[1] = 0;
+  len = hwloc_obj_cpuset_snprintf(string, 0, 1, &obj);
+  assert(len == stringlen);
+  assert(string[0] == 'X');
+
+  printf("truncating system cpuset to 1 char (empty string)\n");
+  memset(string, 'X', 2);
+  string[2] = 0;
+  len = hwloc_obj_cpuset_snprintf(string, 1, 1, &obj);
+  printf("got %s\n", string);
+  assert(len == stringlen);
+  assert(string[0] == 0);
+  assert(string[1] == 'X');
+
+  printf("truncating system cpuset to 10 chars (single 32bit subset except last char)\n");
+  memset(string, 'X', 11);
+  string[11] = 0;
+  len = hwloc_obj_cpuset_snprintf(string, 10, 1, &obj);
+  printf("got %s\n", string);
+  assert(len == stringlen);
+  assert(string[8] == 'f');
+  assert(string[9] == 0);
+  assert(string[10] == 'X');
+
+  printf("truncating system cpuset to 11 chars (single 32bit subset)\n");
+  memset(string, 'X', 12);
+  string[12] = 0;
+  len = hwloc_obj_cpuset_snprintf(string, 11, 1, &obj);
+  printf("got %s\n", string);
+  assert(len == stringlen);
+  assert(string[9] == 'f');
+  assert(string[10] == 0);
+  assert(string[11] == 'X');
+
+  printf("truncating system cpuset to 23 chars (two 32bit subsets with ending comma)\n");
+  memset(string, 'X', 24);
+  string[24] = 0;
+  len = hwloc_obj_cpuset_snprintf(string, 23, 1, &obj);
+  printf("got %s\n", string);
+  assert(len == stringlen);
+  assert(string[20] == 'f');
+  assert(string[21] == ',');
+  assert(string[22] == 0);
+  assert(string[23] == 'X');
+
+  printf("truncating system cpuset to 51 chars (truncate to four and a half 32bit subsets)\n");
+  memset(string, 'X', 52);
+  string[52] = 0;
+  len = hwloc_obj_cpuset_snprintf(string, 51, 1, &obj);
+  printf("got %s\n", string);
+  assert(len == stringlen);
+  assert(string[49] == 'f');
+  assert(string[50] == 0);
+  assert(string[51] == 'X');
+
+  obj = hwloc_get_obj_by_depth(topology, depth-1, 0);
+  hwloc_obj_cpuset_snprintf(string, stringlen+1, 1, &obj);
+  printf("first cpu cpuset is %s\n", string);
+  check_cpuset(obj->cpuset, NULL);
+  printf("first cpu cpuset converted back and forth, ok\n");
+
+  obj = hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1) - 1);
+  hwloc_obj_cpuset_snprintf(string, stringlen+1, 1, &obj);
+  printf("last cpu cpuset is %s\n", string);
+  check_cpuset(obj->cpuset, NULL);
+  printf("last cpu cpuset converted back and forth, ok\n");
+
+  free(string);
+
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_custom.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_custom.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_custom.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,77 @@
+/*
+ * Copyright © 2011 inria.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+int main(void)
+{
+  hwloc_topology_t local, global;
+  hwloc_obj_t sw1, sw2, sw11, sw12, sw21, sw22, root;
+
+  printf("Loading the local topology...\n");
+  hwloc_topology_init(&local);
+  hwloc_topology_set_synthetic(local, "n:2 s:2 ca:1 core:2 ca:2 pu:2");
+  hwloc_topology_load(local);
+
+  printf("Creating a custom topology...\n");
+  hwloc_topology_init(&global);
+  hwloc_topology_set_custom(global);
+
+  printf("Inserting the local topology into the global one...\n");
+  root = hwloc_get_root_obj(global);
+
+  sw1 = hwloc_custom_insert_group_object_by_parent(global, root, 0);
+  sw11 = hwloc_custom_insert_group_object_by_parent(global, sw1, 1);
+  hwloc_custom_insert_topology(global, sw11, local, NULL);
+  hwloc_custom_insert_topology(global, sw11, local, NULL);
+  sw12 = hwloc_custom_insert_group_object_by_parent(global, sw1, 1);
+  hwloc_custom_insert_topology(global, sw12, local, NULL);
+  hwloc_custom_insert_topology(global, sw12, local, NULL);
+
+  sw2 = hwloc_custom_insert_group_object_by_parent(global, root, 0);
+  sw21 = hwloc_custom_insert_group_object_by_parent(global, sw2, 1);
+  hwloc_custom_insert_topology(global, sw21, local, NULL);
+  hwloc_custom_insert_topology(global, sw21, local, NULL);
+  sw22 = hwloc_custom_insert_group_object_by_parent(global, sw2, 1);
+  hwloc_custom_insert_topology(global, sw22, local, NULL);
+  hwloc_custom_insert_topology(global, sw22, local, NULL);
+
+  hwloc_topology_destroy(local);
+
+  printf("Building the global topology...\n");
+  hwloc_topology_load(global);
+  hwloc_topology_check(global);
+
+  assert(hwloc_topology_get_depth(global) == 10);
+  assert(hwloc_get_depth_type(global, 0) == HWLOC_OBJ_SYSTEM);
+  assert(hwloc_get_nbobjs_by_type(global, HWLOC_OBJ_SYSTEM) == 1);
+  assert(hwloc_get_depth_type(global, 1) == HWLOC_OBJ_GROUP);
+  assert(hwloc_get_nbobjs_by_depth(global, 1) == 2);
+  assert(hwloc_get_depth_type(global, 2) == HWLOC_OBJ_GROUP);
+  assert(hwloc_get_nbobjs_by_depth(global, 2) == 4);
+  assert(hwloc_get_depth_type(global, 3) == HWLOC_OBJ_MACHINE);
+  assert(hwloc_get_nbobjs_by_type(global, HWLOC_OBJ_MACHINE) == 8);
+  assert(hwloc_get_depth_type(global, 4) == HWLOC_OBJ_NODE);
+  assert(hwloc_get_nbobjs_by_type(global, HWLOC_OBJ_NODE) == 16);
+  assert(hwloc_get_depth_type(global, 5) == HWLOC_OBJ_SOCKET);
+  assert(hwloc_get_nbobjs_by_type(global, HWLOC_OBJ_SOCKET) == 32);
+  assert(hwloc_get_depth_type(global, 6) == HWLOC_OBJ_CACHE);
+  assert(hwloc_get_nbobjs_by_depth(global, 6) == 32);
+  assert(hwloc_get_depth_type(global, 7) == HWLOC_OBJ_CORE);
+  assert(hwloc_get_nbobjs_by_type(global, HWLOC_OBJ_CORE) == 64);
+  assert(hwloc_get_depth_type(global, 8) == HWLOC_OBJ_CACHE);
+  assert(hwloc_get_nbobjs_by_depth(global, 8) == 128);
+  assert(hwloc_get_depth_type(global, 9) == HWLOC_OBJ_PU);
+  assert(hwloc_get_nbobjs_by_type(global, HWLOC_OBJ_PU) == 256);
+
+  hwloc_topology_destroy(global);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_distances.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_distances.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_distances.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,132 @@
+/*
+ * Copyright © 2010-2011 inria.  All rights reserved.
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* test setting/retrieving distances */
+
+static void print_distances(const struct hwloc_distances_s *distances)
+{
+  unsigned nbobjs = distances->nbobjs;
+  unsigned i, j;
+
+  printf("     ");
+  /* column header */
+  for(j=0; j<nbobjs; j++)
+    printf(" % 5d", (int) j);
+  printf("\n");
+
+  /* each line */
+  for(i=0; i<nbobjs; i++) {
+    /* row header */
+    printf("% 5d", (int) i);
+    /* each value */
+    for(j=0; j<nbobjs; j++)
+      printf(" %2.3f", distances->latency[i*nbobjs+j]);
+    printf("\n");
+  }
+}
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  unsigned nbobjs;
+  const struct hwloc_distances_s *distances;
+  float d1, d2;
+  unsigned depth, topodepth, i, j;
+  int err;
+  hwloc_obj_t obj1, obj2;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, "node:4 core:4 pu:1");
+  putenv("HWLOC_NUMANode_DISTANCES=0,1,2,3:2*2");
+  putenv("HWLOC_PU_DISTANCES=0-15:4*2*2");
+  hwloc_topology_load(topology);
+
+  topodepth = hwloc_topology_get_depth(topology);
+
+  for(depth=0; depth<topodepth; depth++) {
+    distances = hwloc_get_whole_distance_matrix_by_depth(topology, depth);
+    if (!distances || !distances->latency) {
+      printf("No distance at depth %u\n", depth);
+      continue;
+    }
+
+    printf("distance matrix for depth %u:\n", depth);
+    print_distances(distances);
+    nbobjs = distances->nbobjs;
+
+    obj1 = hwloc_get_obj_by_depth(topology, depth, 0);
+    obj2 = hwloc_get_obj_by_depth(topology, depth, nbobjs-1);
+    err = hwloc_get_latency(topology, obj1, obj2, &d1, &d2);
+    assert(!err);
+    assert(d1 == distances->latency[0*nbobjs+(nbobjs-1)]);
+    assert(d2 == distances->latency[(nbobjs-1)*nbobjs+0]);
+  }
+
+  /* check that hwloc_get_latency works fine on numa distances */
+  distances = hwloc_get_whole_distance_matrix_by_type(topology, HWLOC_OBJ_NODE);
+  if (!distances || !distances->latency) {
+    fprintf(stderr, "No NUMA distance matrix!\n");
+    return -1;
+  }
+  printf("distance matrix for NUMA nodes\n");
+  print_distances(distances);
+  nbobjs = distances->nbobjs;
+  for(i=0; i<nbobjs; i++)
+    for(j=0; j<nbobjs; j++) {
+      obj1 = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NODE, i);
+      obj2 = hwloc_get_obj_by_type(topology, HWLOC_OBJ_NODE, j);
+      err = hwloc_get_latency(topology, obj1, obj2, &d1, &d2);
+      assert(!err);
+      assert(d1 == distances->latency[i*nbobjs+j]);
+      assert(d2 == distances->latency[j*nbobjs+i]);
+    }
+  /* check that some random values are ok */
+  assert(distances->latency[0] == 1.0); /* diagonal */
+  assert(distances->latency[4] == 4.0); /* same group */
+  assert(distances->latency[6] == 8.0); /* different group */
+  assert(distances->latency[9] == 8.0); /* different group */
+  assert(distances->latency[10] == 1.0); /* diagonal */
+  assert(distances->latency[14] == 4.0); /* same group */
+
+  /* check that hwloc_get_latency works fine on PU distances */
+  distances = hwloc_get_whole_distance_matrix_by_type(topology, HWLOC_OBJ_PU);
+  if (!distances || !distances->latency) {
+    fprintf(stderr, "No PU distance matrix!\n");
+    return -1;
+  }
+  printf("distance matrix for PU nodes\n");
+  print_distances(distances);
+  nbobjs = distances->nbobjs;
+  for(i=0; i<16; i++)
+    for(j=0; j<16; j++) {
+      obj1 = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, i);
+      obj2 = hwloc_get_obj_by_type(topology, HWLOC_OBJ_PU, j);
+      err = hwloc_get_latency(topology, obj1, obj2, &d1, &d2);
+      assert(!err);
+      assert(d1 == distances->latency[i*nbobjs+j]);
+      assert(d2 == distances->latency[j*nbobjs+i]);
+    }
+  /* check that some random values are ok */
+  assert(distances->latency[0] == 1.0); /* diagonal */
+  assert(distances->latency[1] == 2.0); /* same group */
+  assert(distances->latency[3] == 4.0); /* same biggroup */
+  assert(distances->latency[15] == 8.0); /* different biggroup */
+  assert(distances->latency[250] == 8.0); /* different biggroup */
+  assert(distances->latency[253] == 4.0); /* same group */
+  assert(distances->latency[254] == 2.0); /* same biggroup */
+  assert(distances->latency[255] == 1.0); /* diagonal */
+
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_cache_covering_cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_cache_covering_cpuset.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_cache_covering_cpuset.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,87 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* check hwloc_get_cache_covering_cpuset() */
+
+#define SYNTHETIC_TOPOLOGY_DESCRIPTION "6 5 4 3 2" /* 736bits wide topology */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  hwloc_obj_t obj, cache;
+  hwloc_bitmap_t set;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION);
+  hwloc_topology_load(topology);
+
+  /* check the cache above a given cpu */
+#define CPUINDEX 180
+  set = hwloc_bitmap_alloc();
+  obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX);
+  assert(obj);
+  hwloc_bitmap_or(set, set, obj->cpuset);
+  cache = hwloc_get_cache_covering_cpuset(topology, set);
+  assert(cache);
+  assert(cache->type == HWLOC_OBJ_CACHE);
+  assert(cache->logical_index == CPUINDEX/2/3);
+  assert(hwloc_obj_is_in_subtree(topology, obj, cache));
+  hwloc_bitmap_free(set);
+
+  /* check the cache above two nearby cpus */
+#define CPUINDEX1 180
+#define CPUINDEX2 183
+  set = hwloc_bitmap_alloc();
+  obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX1);
+  assert(obj);
+  hwloc_bitmap_or(set, set, obj->cpuset);
+  obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX2);
+  assert(obj);
+  hwloc_bitmap_or(set, set, obj->cpuset);
+  cache = hwloc_get_cache_covering_cpuset(topology, set);
+  assert(cache);
+  assert(cache->type == HWLOC_OBJ_CACHE);
+  assert(cache->logical_index == CPUINDEX1/2/3);
+  assert(cache->logical_index == CPUINDEX2/2/3);
+  assert(hwloc_obj_is_in_subtree(topology, obj, cache));
+  hwloc_bitmap_free(set);
+
+  /* check no cache above two distant cpus */
+#undef CPUINDEX1
+#define CPUINDEX1 300
+  set = hwloc_bitmap_alloc();
+  obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX1);
+  assert(obj);
+  hwloc_bitmap_or(set, set, obj->cpuset);
+  obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX2);
+  assert(obj);
+  hwloc_bitmap_or(set, set, obj->cpuset);
+  cache = hwloc_get_cache_covering_cpuset(topology, set);
+  assert(!cache);
+  hwloc_bitmap_free(set);
+
+  /* check no cache above higher level */
+  set = hwloc_bitmap_alloc();
+  obj = hwloc_get_obj_by_depth(topology, 2, 0);
+  assert(obj);
+  hwloc_bitmap_or(set, set, obj->cpuset);
+  cache = hwloc_get_cache_covering_cpuset(topology, set);
+  assert(!cache);
+  hwloc_bitmap_free(set);
+
+  hwloc_topology_destroy(topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_closest_objs.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_closest_objs.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_closest_objs.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,81 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* 
+ * check hwloc_get_closest_objs()
+ *
+ * - get the last object of the last level
+ * - get all closest objects
+ * - get the common ancestor of last level and its less close object.
+ * - check that the ancestor is the system level
+ */
+
+int
+main (void)
+{
+  hwloc_topology_t topology;
+  unsigned depth;
+  hwloc_obj_t last;
+  hwloc_obj_t *closest;
+  unsigned found;
+  int err;
+  unsigned numprocs;
+  hwloc_obj_t ancestor;
+
+  err = hwloc_topology_init (&topology);
+  if (err)
+    return EXIT_FAILURE;
+
+  hwloc_topology_set_synthetic (topology, "2 3 4 5");
+
+  err = hwloc_topology_load (topology);
+  if (err)
+    return EXIT_FAILURE;
+
+  depth = hwloc_topology_get_depth(topology);
+
+  /* get the last object of last level */
+  numprocs =  hwloc_get_nbobjs_by_depth(topology, depth-1);
+  last = hwloc_get_obj_by_depth(topology, depth-1, numprocs-1);
+
+  /* allocate the array of closest objects */
+  closest = malloc(numprocs * sizeof(*closest));
+  assert(closest);
+
+  /* get closest levels */
+  found = hwloc_get_closest_objs (topology, last, closest, numprocs);
+  printf("looked for %u closest entries, found %u\n", numprocs, found);
+  assert(found == numprocs-1);
+
+  /* check first found is closest */
+  assert(closest[0] == hwloc_get_obj_by_depth(topology, depth-1, numprocs-5 /* arity is 5 on last level */));
+  /* check some other expected positions */
+  assert(closest[found-1] == hwloc_get_obj_by_depth(topology, depth-1, 1*3*4*5-1 /* last of first half */));
+  assert(closest[found/2-1] == hwloc_get_obj_by_depth(topology, depth-1, 1*3*4*5+2*4*5-1 /* last of second third of second half */));
+  assert(closest[found/2/3-1] == hwloc_get_obj_by_depth(topology, depth-1, 1*3*4*5+2*4*5+3*5-1 /* last of third quarter of third third of second half */));
+
+  /* get ancestor of last and less close object */
+  ancestor = hwloc_get_common_ancestor_obj(topology, last, closest[found-1]);
+  assert(hwloc_obj_is_in_subtree(topology, last, ancestor));
+  assert(hwloc_obj_is_in_subtree(topology, closest[found-1], ancestor));
+  assert(ancestor == hwloc_get_root_obj(topology));
+  printf("ancestor type %u depth %u number %u is system level\n",
+	 ancestor->type, ancestor->depth, ancestor->logical_index);
+
+  free(closest);
+  hwloc_topology_destroy (topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_largest_objs_inside_cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_largest_objs_inside_cpuset.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_largest_objs_inside_cpuset.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,113 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* check hwloc_get_largest_objs_inside_cpuset()
+ * and hwloc_get_first_largest_obj_inside_cpuset()
+ */
+
+#define SYNTHETIC_TOPOLOGY_DESCRIPTION "6 5 4 3 2" /* 736bits wide topology */
+
+#define GIVEN_LARGESPLIT_CPUSET_STRING "8000,,,,,,,,,,,,,,,,,,,,,,1" /* first and last(735th) bit set */
+#define GIVEN_TOOLARGE_CPUSET_STRING "10000,,,,,,,,,,,,,,,,,,,,,,0" /* 736th bit is too large for the 720-wide topology */
+#define GIVEN_HARD_CPUSET_STRING "07ff,ffffffff,e0000000"
+
+#define OBJ_MAX 16
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  unsigned depth;
+  hwloc_obj_t objs[OBJ_MAX];
+  hwloc_obj_t obj;
+  hwloc_bitmap_t set;
+  int ret;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION);
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+
+  /* just get the system object */
+  obj = hwloc_get_root_obj(topology);
+  ret = hwloc_get_largest_objs_inside_cpuset(topology, obj->cpuset, objs, 1);
+  assert(ret == 1);
+  assert(objs[0] == obj);
+  objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, obj->cpuset);
+  assert(objs[0] == obj);
+
+  /* just get the very last object */
+  obj = hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1)-1);
+  ret = hwloc_get_largest_objs_inside_cpuset(topology, obj->cpuset, objs, 1);
+  assert(ret == 1);
+  assert(objs[0] == obj);
+
+  /* try an empty one */
+  set = hwloc_bitmap_alloc();
+  ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 1);
+  assert(ret == 0);
+  objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
+  assert(objs[0] == NULL);
+  hwloc_bitmap_free(set);
+
+  /* try an impossible one */
+  set = hwloc_bitmap_alloc();
+  hwloc_bitmap_sscanf(set, GIVEN_TOOLARGE_CPUSET_STRING);
+  ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 1);
+  assert(ret == -1);
+  objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
+  assert(objs[0] == NULL);
+  hwloc_bitmap_free(set);
+
+  /* try a harder one with 1 obj instead of 2 needed */
+  set = hwloc_bitmap_alloc();
+  hwloc_bitmap_sscanf(set, GIVEN_LARGESPLIT_CPUSET_STRING);
+  ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 1);
+  assert(ret == 1);
+  assert(objs[0] == hwloc_get_obj_by_depth(topology, depth-1, 0));
+  objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
+  assert(objs[0] == hwloc_get_obj_by_depth(topology, depth-1, 0));
+  /* try a harder one with lots of objs instead of 2 needed */
+  ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, 2);
+  assert(ret == 2);
+  assert(objs[0] == hwloc_get_obj_by_depth(topology, depth-1, 0));
+  assert(objs[1] == hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1)-1));
+  objs[0] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
+  hwloc_bitmap_andnot(set, set, objs[0]->cpuset);
+  objs[1] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
+  hwloc_bitmap_andnot(set, set, objs[1]->cpuset);
+  objs[2] = hwloc_get_first_largest_obj_inside_cpuset(topology, set);
+  assert(objs[0] == hwloc_get_obj_by_depth(topology, depth-1, 0));
+  assert(objs[1] == hwloc_get_obj_by_depth(topology, depth-1, hwloc_get_nbobjs_by_depth(topology, depth-1)-1));
+  assert(objs[2] == NULL);
+  assert(hwloc_bitmap_iszero(set));
+  hwloc_bitmap_free(set);
+
+  /* try a very hard one */
+  set = hwloc_bitmap_alloc();
+  hwloc_bitmap_sscanf(set, GIVEN_HARD_CPUSET_STRING);
+  ret = hwloc_get_largest_objs_inside_cpuset(topology, set, objs, OBJ_MAX);
+  assert(objs[0] == hwloc_get_obj_by_depth(topology, 5, 29));
+  assert(objs[1] == hwloc_get_obj_by_depth(topology, 3, 5));
+  assert(objs[2] == hwloc_get_obj_by_depth(topology, 3, 6));
+  assert(objs[3] == hwloc_get_obj_by_depth(topology, 3, 7));
+  assert(objs[4] == hwloc_get_obj_by_depth(topology, 2, 2));
+  assert(objs[5] == hwloc_get_obj_by_depth(topology, 4, 36));
+  assert(objs[6] == hwloc_get_obj_by_depth(topology, 5, 74));
+  hwloc_bitmap_free(set);
+
+  hwloc_topology_destroy(topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_last_cpu_location.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_last_cpu_location.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_last_cpu_location.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,77 @@
+/*
+ * Copyright © 2011 inria.  All rights reserved.
+ * Copyright © 2011 Université Bordeaux 1.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#include <private/autogen/config.h> /* for HWLOC_WIN_SYS */
+#include <hwloc.h>
+
+hwloc_topology_t topology;
+const struct hwloc_topology_support *support;
+
+/* check that a bound process execs on a non-empty cpuset included in the binding */
+static int check(hwloc_const_cpuset_t set, int flags)
+{
+  hwloc_cpuset_t last;
+  int ret;
+
+  ret = hwloc_set_cpubind(topology, set, flags);
+  if (ret)
+    return 0;
+
+  last = hwloc_bitmap_alloc();
+  ret = hwloc_get_last_cpu_location(topology, last, flags);
+  assert(!ret);
+  assert(!hwloc_bitmap_iszero(last));
+  assert(hwloc_bitmap_isincluded(last, set));
+
+  hwloc_bitmap_free(last);
+  return 0;
+}
+
+static int checkall(hwloc_const_cpuset_t set)
+{
+  if (support->cpubind->get_thisthread_last_cpu_location)
+    check(set, HWLOC_CPUBIND_THREAD);
+  if (support->cpubind->get_thisproc_last_cpu_location)
+    check(set, HWLOC_CPUBIND_PROCESS);
+  if (support->cpubind->get_thisthread_last_cpu_location || support->cpubind->get_thisproc_last_cpu_location)
+    check(set, 0);
+  return 0;
+}
+
+int main(void)
+{
+  unsigned depth;
+  hwloc_obj_t obj;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+
+  support = hwloc_topology_get_support(topology);
+
+  /* check at top level */
+  obj = hwloc_get_root_obj(topology);
+  checkall(obj->cpuset);
+
+  depth = hwloc_topology_get_depth(topology);
+  /* check at intermediate level if it exists */
+  if (depth >= 3) {
+    obj = NULL;
+    while ((obj = hwloc_get_next_obj_by_depth(topology, (depth-1)/2, obj)) != NULL)
+      checkall(obj->cpuset);
+  }
+
+  /* check at bottom level */
+  obj = NULL;
+  while ((obj = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_PU, obj)) != NULL)
+    checkall(obj->cpuset);
+
+  hwloc_topology_destroy(topology);
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_next_obj_covering_cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_next_obj_covering_cpuset.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_next_obj_covering_cpuset.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,82 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/*
+ * check hwloc_get_next_obj_covering_cpuset*()
+ */
+
+int
+main (void)
+{
+  hwloc_topology_t topology;
+  hwloc_bitmap_t set;
+  hwloc_obj_t obj;
+  int depth;
+  int err;
+
+  err = hwloc_topology_init (&topology);
+  if (err)
+    return EXIT_FAILURE;
+
+  set = hwloc_bitmap_alloc();
+
+
+
+  hwloc_topology_set_synthetic (topology, "nodes:8 cores:2 1");
+  err = hwloc_topology_load (topology);
+  if (err)
+    return EXIT_FAILURE;
+
+  hwloc_bitmap_sscanf(set, "00008f18");
+
+  obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_NODE, NULL);
+  assert(obj == hwloc_get_obj_by_depth(topology, 1, 1));
+  obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_NODE, obj);
+  assert(obj == hwloc_get_obj_by_depth(topology, 1, 2));
+  obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_NODE, obj);
+  assert(obj == hwloc_get_obj_by_depth(topology, 1, 4));
+  obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_NODE, obj);
+  assert(obj == hwloc_get_obj_by_depth(topology, 1, 5));
+  obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_NODE, obj);
+  assert(obj == hwloc_get_obj_by_depth(topology, 1, 7));
+  obj = hwloc_get_next_obj_covering_cpuset_by_type(topology, set, HWLOC_OBJ_NODE, obj);
+  assert(!obj);
+
+
+
+  hwloc_topology_set_synthetic (topology, "nodes:2 socket:5 cores:3 4");
+  err = hwloc_topology_load (topology);
+  if (err)
+    return EXIT_FAILURE;
+
+  hwloc_bitmap_sscanf(set, "0ff08000");
+
+  depth = hwloc_get_type_depth(topology, HWLOC_OBJ_SOCKET);
+  assert(depth == 2);
+  obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, depth, NULL);
+  assert(obj == hwloc_get_obj_by_depth(topology, depth, 1));
+  obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, depth, obj);
+  assert(obj == hwloc_get_obj_by_depth(topology, depth, 2));
+  obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, depth, obj);
+  assert(!obj);
+
+
+
+  hwloc_bitmap_free(set);
+
+  hwloc_topology_destroy (topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_below_array_by_type.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,81 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/*
+ * check hwloc_get_obj_below_array_by_type()
+ */
+
+int
+main (void)
+{
+  hwloc_topology_t topology;
+  hwloc_obj_t obj;
+  hwloc_obj_type_t typev[4];
+  unsigned idxv[4];
+  int err;
+
+  err = hwloc_topology_init (&topology);
+  if (err)
+    return EXIT_FAILURE;
+
+  hwloc_topology_set_synthetic (topology, "node:3 socket:3 core:3 proc:3");
+
+  err = hwloc_topology_load (topology);
+  if (err)
+    return EXIT_FAILURE;
+
+
+  /* find the first thread */
+  typev[0] = HWLOC_OBJ_NODE;   idxv[0] = 0;
+  typev[1] = HWLOC_OBJ_SOCKET; idxv[1] = 0;
+  typev[2] = HWLOC_OBJ_CORE;   idxv[2] = 0;
+  typev[3] = HWLOC_OBJ_PU;   idxv[3] = 0;
+  obj = hwloc_get_obj_below_array_by_type(topology, 4, typev, idxv);
+  assert(obj == hwloc_get_obj_by_depth(topology, 4, 0));
+
+  /* find the last core */
+  typev[0] = HWLOC_OBJ_NODE;   idxv[0] = 2;
+  typev[1] = HWLOC_OBJ_SOCKET; idxv[1] = 2;
+  typev[2] = HWLOC_OBJ_CORE;   idxv[2] = 2;
+  obj = hwloc_get_obj_below_array_by_type(topology, 3, typev, idxv);
+  assert(obj == hwloc_get_obj_by_depth(topology, 3, 26));
+
+  /* misc tests */
+
+  typev[0] = HWLOC_OBJ_SOCKET; idxv[0] = 2;
+  obj = hwloc_get_obj_below_array_by_type(topology, 1, typev, idxv);
+  assert(obj == hwloc_get_obj_by_depth(topology, 2, 2));
+
+  typev[0] = HWLOC_OBJ_NODE;   idxv[0] = 2;
+  typev[1] = HWLOC_OBJ_CORE;   idxv[1] = 2;
+  obj = hwloc_get_obj_below_array_by_type(topology, 2, typev, idxv);
+  assert(obj == hwloc_get_obj_by_depth(topology, 3, 20));
+  /* check that hwloc_get_obj_below_by_type works as well */
+  obj = hwloc_get_obj_below_by_type(topology, typev[0], idxv[0], typev[1], idxv[1]);
+  assert(obj == hwloc_get_obj_by_depth(topology, 3, 20));
+
+  typev[0] = HWLOC_OBJ_SOCKET; idxv[0] = 1;
+  typev[1] = HWLOC_OBJ_PU;   idxv[1] = 1;
+  obj = hwloc_get_obj_below_array_by_type(topology, 2, typev, idxv);
+  assert(obj == hwloc_get_obj_by_depth(topology, 4, 10));
+  /* check that hwloc_get_obj_below_by_type works as well */
+  obj = hwloc_get_obj_below_by_type(topology, typev[0], idxv[0], typev[1], idxv[1]);
+  assert(obj == hwloc_get_obj_by_depth(topology, 4, 10));
+
+
+  hwloc_topology_destroy (topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_covering_cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_covering_cpuset.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_covering_cpuset.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,67 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* check hwloc_get_obj_covering_cpuset() */
+
+#define SYNTHETIC_TOPOLOGY_DESCRIPTION "6 5 4 3 2" /* 736bits wide topology */
+
+#define GIVEN_CPUSET_STRING "0x0,0x0fff,0xf0000000"
+#define EXPECTED_CPUSET_STRING "0x0000ffff,0xff000000"
+#define GIVEN_LARGESPLIT_CPUSET_STRING "0x8000,,,,,,,,,,,,,,,,,,,,,,0x1" /* first and last(735th) bit set */
+#define GIVEN_TOOLARGE_CPUSET_STRING "0x10000,,,,,,,,,,,,,,,,,,,,,,0x0" /* 736th bit is too large for the 720-wide topology */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  char *string = NULL;
+  hwloc_obj_t obj;
+  hwloc_bitmap_t set;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION);
+  hwloc_topology_load(topology);
+  set = hwloc_bitmap_alloc();
+
+  hwloc_bitmap_sscanf(set, GIVEN_CPUSET_STRING);
+  obj = hwloc_get_obj_covering_cpuset(topology, set);
+
+  assert(obj);
+  fprintf(stderr, "found covering object type %s covering cpuset %s\n",
+	  hwloc_obj_type_string(obj->type), GIVEN_CPUSET_STRING);
+  assert(hwloc_bitmap_isincluded(set, obj->cpuset));
+
+  hwloc_bitmap_asprintf(&string, obj->cpuset);
+  fprintf(stderr, "covering object of %s is %s, expected %s\n",
+	  GIVEN_CPUSET_STRING, string, EXPECTED_CPUSET_STRING);
+  assert(!strcmp(EXPECTED_CPUSET_STRING, string));
+  free(string);
+
+  hwloc_bitmap_sscanf(set, GIVEN_LARGESPLIT_CPUSET_STRING);
+  obj = hwloc_get_obj_covering_cpuset(topology, set);
+  assert(obj == hwloc_get_root_obj(topology));
+  fprintf(stderr, "found system as covering object of first+last cpus cpuset %s\n",
+	  GIVEN_LARGESPLIT_CPUSET_STRING);
+
+  hwloc_bitmap_sscanf(set, GIVEN_TOOLARGE_CPUSET_STRING);
+  obj = hwloc_get_obj_covering_cpuset(topology, set);
+  assert(!obj);
+  fprintf(stderr, "found no covering object for too-large cpuset %s\n",
+	  GIVEN_TOOLARGE_CPUSET_STRING);
+
+  hwloc_bitmap_free(set);
+  hwloc_topology_destroy(topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_inside_cpuset.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_inside_cpuset.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_obj_inside_cpuset.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,99 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/*
+ * check hwloc_get_obj_inside_cpuset*()
+ */
+
+int
+main (void)
+{
+  hwloc_topology_t topology;
+  hwloc_obj_t obj, root;
+  int err, index;
+
+  err = hwloc_topology_init (&topology);
+  if (err)
+    return EXIT_FAILURE;
+
+  hwloc_topology_set_synthetic (topology, "nodes:2 sockets:3 caches:4 cores:5 6");
+
+  err = hwloc_topology_load (topology);
+  if (err)
+    return EXIT_FAILURE;
+
+  /* there is no second system object */
+  root = hwloc_get_root_obj (topology);
+  obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_SYSTEM, 1);
+  assert(!obj);
+
+  /* first system object is the top-level object of the topology */
+  obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_MACHINE, 0);
+  assert(obj == hwloc_get_root_obj(topology));
+
+  /* first next-object object is the top-level object of the topology */
+  obj = hwloc_get_next_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_MACHINE, NULL);
+  assert(obj == hwloc_get_root_obj(topology));
+  /* there is no next object after the system object */
+  obj = hwloc_get_next_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_SYSTEM, obj);
+  assert(!obj);
+
+  /* check last PU */
+  obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_PU, 2*3*4*5*6-1);
+  assert(obj == hwloc_get_obj_by_depth(topology, 5, 2*3*4*5*6-1));
+  /* there is no next PU after the last one */
+  obj = hwloc_get_next_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_PU, obj);
+  assert(!obj);
+
+
+  /* check there are 20 cores inside first socket */
+  root = hwloc_get_obj_by_depth(topology, 2, 0);
+  assert(hwloc_get_nbobjs_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_CORE) == 20);
+
+  /* check there are 12 caches inside last node */
+  root = hwloc_get_obj_by_depth(topology, 1, 1);
+  assert(hwloc_get_nbobjs_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_CACHE) == 12);
+
+
+  /* check first PU of second socket */
+  root = hwloc_get_obj_by_depth(topology, 2, 1);
+  obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_PU, 0);
+  assert(obj == hwloc_get_obj_by_depth(topology, 5, 4*5*6));
+  index = hwloc_get_obj_index_inside_cpuset(topology, root->cpuset, obj);
+  assert(index == 0);
+
+  /* check third core of third socket */
+  root = hwloc_get_obj_by_depth(topology, 2, 2);
+  obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_CORE, 2);
+  assert(obj == hwloc_get_obj_by_depth(topology, 4, 2*4*5+2));
+  index = hwloc_get_obj_index_inside_cpuset(topology, root->cpuset, obj);
+  assert(index == 2);
+
+  /* check first socket of second node */
+  root = hwloc_get_obj_by_depth(topology, 1, 1);
+  obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_SOCKET, 0);
+  assert(obj == hwloc_get_obj_by_depth(topology, 2, 3));
+  index = hwloc_get_obj_index_inside_cpuset(topology, root->cpuset, obj);
+  assert(index == 0);
+
+  /* there is no node inside sockets */
+  root = hwloc_get_obj_by_depth(topology, 2, 0);
+  obj = hwloc_get_obj_inside_cpuset_by_type(topology, root->cpuset, HWLOC_OBJ_NODE, 0);
+  assert(!obj);
+
+  hwloc_topology_destroy (topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_shared_cache_covering_obj.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_shared_cache_covering_obj.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_get_shared_cache_covering_obj.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,78 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* check hwloc_get_shared_cache_covering_obj() */
+
+#define SYNTHETIC_TOPOLOGY_DESCRIPTION_SHARED "6 5 4 3 2" /* 736bits wide topology */
+#define SYNTHETIC_TOPOLOGY_DESCRIPTION_NONSHARED "6 5 4 1 2" /* 736bits wide topology */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  hwloc_obj_t obj, cache;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION_SHARED);
+  hwloc_topology_load(topology);
+
+  /* check the cache above a given cpu */
+#define CPUINDEX 180
+  obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX);
+  assert(obj);
+  cache = hwloc_get_shared_cache_covering_obj(topology, obj);
+  assert(cache);
+  assert(cache->type == HWLOC_OBJ_CACHE);
+  assert(cache->logical_index == CPUINDEX/2/3);
+  assert(hwloc_obj_is_in_subtree(topology, obj, cache));
+
+  /* check no shared cache above the L2 cache */
+  obj = hwloc_get_obj_by_depth(topology, 3, 0);
+  assert(obj);
+  cache = hwloc_get_shared_cache_covering_obj(topology, obj);
+  assert(!cache);
+
+  /* check no shared cache above the node */
+  obj = hwloc_get_obj_by_depth(topology, 1, 0);
+  assert(obj);
+  cache = hwloc_get_shared_cache_covering_obj(topology, obj);
+  assert(!cache);
+
+  hwloc_topology_destroy(topology);
+
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION_NONSHARED);
+  hwloc_topology_load(topology);
+
+  /* check the cache above a given cpu */
+#define CPUINDEX 180
+  obj = hwloc_get_obj_by_depth(topology, 5, CPUINDEX);
+  assert(obj);
+  cache = hwloc_get_shared_cache_covering_obj(topology, obj);
+  assert(cache);
+  assert(cache->type == HWLOC_OBJ_CACHE);
+  assert(cache->logical_index == CPUINDEX/2/1);
+  assert(hwloc_obj_is_in_subtree(topology, obj, cache));
+
+  /* check no shared-cache above the core */
+  obj = hwloc_get_obj_by_depth(topology, 4, CPUINDEX/2);
+  assert(obj);
+  cache = hwloc_get_shared_cache_covering_obj(topology, obj);
+  assert(!cache);
+
+  hwloc_topology_destroy(topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_groups.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_groups.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_groups.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,100 @@
+/*
+ * Copyright © 2011 inria.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* intensive testing of two grouping cases (2+1 and 2+2+1) */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  hwloc_obj_t obj;
+  unsigned indexes[5];
+  float distances[5*5];
+  unsigned depth;
+  unsigned width;
+
+  /* group 3 numa nodes as 1 group of 2 and 1 on the side */
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, "node:3 pu:1");
+  indexes[0] = 0; indexes[1] = 1; indexes[2] = 2;
+  distances[0] = 1; distances[1] = 4; distances[2] = 4;
+  distances[3] = 4; distances[4] = 1; distances[5] = 2;
+  distances[6] = 4; distances[7] = 2; distances[8] = 1;
+  hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_PU, 3, indexes, distances);
+  hwloc_topology_load(topology);
+  /* 2 groups at depth 1 */
+  depth = hwloc_get_type_depth(topology, HWLOC_OBJ_GROUP);
+  assert(depth == 1);
+  width = hwloc_get_nbobjs_by_depth(topology, depth);
+  assert(width == 1);
+  /* 3 node at depth 2 */
+  depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+  assert(depth == 2);
+  width = hwloc_get_nbobjs_by_depth(topology, depth);
+  assert(width == 3);
+  /* find the root obj */
+  obj = hwloc_get_root_obj(topology);
+  assert(obj->arity == 2);
+  /* check its children */
+  assert(obj->children[0]->type == HWLOC_OBJ_NODE);
+  assert(obj->children[0]->depth == 2);
+  assert(obj->children[0]->arity == 1);
+  assert(obj->children[1]->type == HWLOC_OBJ_GROUP);
+  assert(obj->children[1]->depth == 1);
+  assert(obj->children[1]->arity == 2);
+  hwloc_topology_destroy(topology);
+
+  /* group 5 sockets as 2 group of 2 and 1 on the side, all of them below a common node object */
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, "node:1 socket:5 pu:1");
+  indexes[0] = 0; indexes[1] = 1; indexes[2] = 2; indexes[3] = 3; indexes[4] = 4;
+  distances[ 0] = 1; distances[ 1] = 2; distances[ 2] = 4; distances[ 3] = 4; distances[ 4] = 4;
+  distances[ 5] = 2; distances[ 6] = 1; distances[ 7] = 4; distances[ 8] = 4; distances[ 9] = 4;
+  distances[10] = 4; distances[11] = 4; distances[12] = 1; distances[13] = 4; distances[14] = 4;
+  distances[15] = 4; distances[16] = 4; distances[17] = 4; distances[18] = 1; distances[19] = 2;
+  distances[20] = 4; distances[21] = 4; distances[22] = 4; distances[23] = 2; distances[24] = 1;
+  hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_SOCKET, 5, indexes, distances);
+  hwloc_topology_load(topology);
+  /* 1 node at depth 1 */
+  depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+  assert(depth == 1);
+  width = hwloc_get_nbobjs_by_depth(topology, depth);
+  assert(width == 1);
+  /* 2 groups at depth 2 */
+  depth = hwloc_get_type_depth(topology, HWLOC_OBJ_GROUP);
+  assert(depth == 2);
+  width = hwloc_get_nbobjs_by_depth(topology, depth);
+  assert(width == 2);
+  /* 5 sockets at depth 3 */
+  depth = hwloc_get_type_depth(topology, HWLOC_OBJ_SOCKET);
+  assert(depth == 3);
+  width = hwloc_get_nbobjs_by_depth(topology, depth);
+  assert(width == 5);
+  /* find the node obj */
+  obj = hwloc_get_root_obj(topology);
+  assert(obj->arity == 1);
+  obj = obj->children[0];
+  assert(obj->type == HWLOC_OBJ_NODE);
+  assert(obj->arity == 3);
+  /* check its children */
+  assert(obj->children[0]->type == HWLOC_OBJ_GROUP);
+  assert(obj->children[0]->depth == 2);
+  assert(obj->children[0]->arity == 2);
+  assert(obj->children[1]->type == HWLOC_OBJ_SOCKET);
+  assert(obj->children[1]->depth == 3);
+  assert(obj->children[1]->arity == 1);
+  assert(obj->children[2]->type == HWLOC_OBJ_GROUP);
+  assert(obj->children[2]->depth == 2);
+  assert(obj->children[2]->arity == 2);
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_groups2.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_groups2.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_groups2.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,198 @@
+/*
+ * Copyright © 2011 inria.  All rights reserved.
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* testing of adding/replacing/removing distance matrices
+   with set_distance_matrix or the environment,
+   grouping with/without accuracy
+ */
+
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  unsigned indexes[16];
+  float distances[16*16];
+  unsigned i, j;
+  unsigned depth;
+  unsigned width;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, "node:2 core:8 pu:1");
+
+  /* default 2*8*1 */
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 4);
+  width = hwloc_get_nbobjs_by_depth(topology, 0);
+  assert(width == 1);
+  width = hwloc_get_nbobjs_by_depth(topology, 1);
+  assert(width == 2);
+  width = hwloc_get_nbobjs_by_depth(topology, 2);
+  assert(width == 16);
+  width = hwloc_get_nbobjs_by_depth(topology, 3);
+  assert(width == 16);
+
+  /* 2*8*1 and group 8cores as 2*2*2 */
+  for(i=0; i<16; i++) {
+    indexes[i] = i;
+    for(j=0; j<16; j++)
+      if (i==j)
+        distances[i+16*j] = distances[j+16*i] = 3;
+      else if (i/2==j/2)
+        distances[i+16*j] = distances[j+16*i] = 5;
+      else if (i/4==j/4)
+        distances[i+16*j] = distances[j+16*i] = 7;
+      else
+        distances[i+16*j] = distances[j+16*i] = 9;
+  }
+  assert(!hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_CORE, 16, indexes, distances));
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 6);
+  width = hwloc_get_nbobjs_by_depth(topology, 0);
+  assert(width == 1);
+  width = hwloc_get_nbobjs_by_depth(topology, 1);
+  assert(width == 2);
+  width = hwloc_get_nbobjs_by_depth(topology, 2);
+  assert(width == 4);
+  width = hwloc_get_nbobjs_by_depth(topology, 3);
+  assert(width == 8);
+  width = hwloc_get_nbobjs_by_depth(topology, 4);
+  assert(width == 16);
+
+  /* play with accuracy */
+  distances[0] = 2.9; /* diagonal, instead of 3 (0.0333% error) */
+  distances[1] = 5.1; distances[16] = 5.2; /* smallest group, instead of 5 (0.02% error) */
+  assert(!hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_CORE, 16, indexes, distances));
+  putenv("HWLOC_GROUPING_ACCURACY=0.1"); /* ok */
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 6);
+  putenv("HWLOC_GROUPING_ACCURACY=try"); /* ok */
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 6);
+  putenv("HWLOC_GROUPING_ACCURACY=0.01"); /* too small, cannot group */
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 4);
+  putenv("HWLOC_GROUPING_ACCURACY=0"); /* full accuracy, cannot group */
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 4);
+
+  /* revert to default 2*8*1 */
+  assert(!hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_CORE, 0, NULL, NULL));
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 4);
+  width = hwloc_get_nbobjs_by_depth(topology, 0);
+  assert(width == 1);
+  width = hwloc_get_nbobjs_by_depth(topology, 1);
+  assert(width == 2);
+  width = hwloc_get_nbobjs_by_depth(topology, 2);
+  assert(width == 16);
+  width = hwloc_get_nbobjs_by_depth(topology, 3);
+  assert(width == 16);
+
+  /* default 2*4*4 */
+  hwloc_topology_set_synthetic(topology, "node:2 core:4 pu:4");
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 4);
+  width = hwloc_get_nbobjs_by_depth(topology, 0);
+  assert(width == 1);
+  width = hwloc_get_nbobjs_by_depth(topology, 1);
+  assert(width == 2);
+  width = hwloc_get_nbobjs_by_depth(topology, 2);
+  assert(width == 8);
+  width = hwloc_get_nbobjs_by_depth(topology, 3);
+  assert(width == 32);
+
+  /* 2*4*4 and group 4cores as 2*2 */
+  putenv("HWLOC_Core_DISTANCES=0,1,2,3,4,5,6,7:4*2");
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 5);
+  width = hwloc_get_nbobjs_by_depth(topology, 0);
+  assert(width == 1);
+  width = hwloc_get_nbobjs_by_depth(topology, 1);
+  assert(width == 2);
+  width = hwloc_get_nbobjs_by_depth(topology, 2);
+  assert(width == 4);
+  width = hwloc_get_nbobjs_by_depth(topology, 3);
+  assert(width == 8);
+  width = hwloc_get_nbobjs_by_depth(topology, 4);
+  assert(width == 32);
+
+  /* 2*4*4 and group 4cores as 2*2 and 4PUs as 2*2 */
+  putenv("HWLOC_PU_DISTANCES=0-31:16*2");
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 6);
+  width = hwloc_get_nbobjs_by_depth(topology, 0);
+  assert(width == 1);
+  width = hwloc_get_nbobjs_by_depth(topology, 1);
+  assert(width == 2);
+  width = hwloc_get_nbobjs_by_depth(topology, 2);
+  assert(width == 4);
+  width = hwloc_get_nbobjs_by_depth(topology, 3);
+  assert(width == 8);
+  width = hwloc_get_nbobjs_by_depth(topology, 4);
+  assert(width == 16);
+  width = hwloc_get_nbobjs_by_depth(topology, 5);
+  assert(width == 32);
+
+  /* replace previous core distances with useless ones (grouping as the existing numa nodes) */
+  /* 2*4*4 and group 4PUs as 2*2 */
+  putenv("HWLOC_Core_DISTANCES=0-7:2*4");
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 5);
+  width = hwloc_get_nbobjs_by_depth(topology, 0);
+  assert(width == 1);
+  width = hwloc_get_nbobjs_by_depth(topology, 1);
+  assert(width == 2);
+  width = hwloc_get_nbobjs_by_depth(topology, 2);
+  assert(width == 8);
+  width = hwloc_get_nbobjs_by_depth(topology, 3);
+  assert(width == 16);
+  width = hwloc_get_nbobjs_by_depth(topology, 4);
+  assert(width == 32);
+
+  /* clear everything */
+  /* default 2*4*4 */
+  putenv("HWLOC_Core_DISTANCES=none");
+  putenv("HWLOC_PU_DISTANCES=none");
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 4);
+  width = hwloc_get_nbobjs_by_depth(topology, 0);
+  assert(width == 1);
+  width = hwloc_get_nbobjs_by_depth(topology, 1);
+  assert(width == 2);
+  width = hwloc_get_nbobjs_by_depth(topology, 2);
+  assert(width == 8);
+  width = hwloc_get_nbobjs_by_depth(topology, 3);
+  assert(width == 32);
+
+  /* buggy tests */
+  assert(hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_CORE, 16, NULL, NULL) < 0);
+  assert(hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_CORE, 0, indexes, NULL) < 0);
+  indexes[1] = 0;
+  assert(hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_CORE, 16, indexes, distances) < 0);
+
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_insert_misc.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_insert_misc.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_insert_misc.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,34 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  hwloc_bitmap_t cpuset;
+  hwloc_obj_t obj;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+  hwloc_topology_check(topology);
+  cpuset = hwloc_bitmap_alloc();
+  hwloc_bitmap_set(cpuset, 0);
+  obj = hwloc_topology_insert_misc_object_by_cpuset(topology, cpuset, "test");
+  hwloc_bitmap_free(cpuset);
+  hwloc_topology_insert_misc_object_by_parent(topology, obj, "test2");
+  hwloc_topology_check(topology);
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_iodevs.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_iodevs.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_iodevs.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,84 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#include <private/autogen/config.h>
+#include <hwloc.h>
+
+#include <assert.h>
+
+/* check misc i/O device related stuff */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  hwloc_obj_t obj;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_WHOLE_IO);
+  assert(-1 == hwloc_topology_ignore_type(topology, HWLOC_OBJ_PCI_DEVICE));
+  assert(-1 == hwloc_topology_ignore_type_keep_structure(topology, HWLOC_OBJ_BRIDGE));
+  assert(-1 == hwloc_topology_ignore_type(topology, HWLOC_OBJ_OS_DEVICE));
+  hwloc_topology_load(topology);
+
+  printf("Found %d bridges\n", hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_BRIDGE));
+  obj = NULL;
+  while ((obj = hwloc_get_next_bridge(topology, obj)) != NULL) {
+    assert(obj->type == HWLOC_OBJ_BRIDGE);
+    /* only host->pci and pci->pci bridge supported so far */
+    if (obj->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_HOST) {
+      assert(obj->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI);
+      printf(" Found host->PCI bridge for domain %04x bus %02x-%02x\n",
+	     obj->attr->bridge.downstream.pci.domain,
+	     obj->attr->bridge.downstream.pci.secondary_bus,
+	     obj->attr->bridge.downstream.pci.subordinate_bus);
+    } else {
+      assert(obj->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_PCI);
+      assert(obj->attr->bridge.downstream_type == HWLOC_OBJ_BRIDGE_PCI);
+      printf(" Found PCI->PCI bridge [%04x:%04x] for domain %04x bus %02x-%02x\n",
+	     obj->attr->bridge.upstream.pci.vendor_id,
+	     obj->attr->bridge.upstream.pci.device_id,
+	     obj->attr->bridge.downstream.pci.domain,
+	     obj->attr->bridge.downstream.pci.secondary_bus,
+	     obj->attr->bridge.downstream.pci.subordinate_bus);
+    }
+  }
+
+  printf("Found %d PCI devices\n", hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PCI_DEVICE));
+  obj = NULL;
+  while ((obj = hwloc_get_next_pcidev(topology, obj)) != NULL) {
+    assert(obj->type == HWLOC_OBJ_PCI_DEVICE);
+    printf(" Found PCI device class %04x vendor %04x model %04x\n",
+	   obj->attr->pcidev.class_id, obj->attr->pcidev.vendor_id, obj->attr->pcidev.device_id);
+  }
+
+  printf("Found %d OS devices\n", hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_OS_DEVICE));
+  obj = NULL;
+  while ((obj = hwloc_get_next_osdev(topology, obj)) != NULL) {
+    assert(obj->type == HWLOC_OBJ_OS_DEVICE);
+    printf(" Found OS device %s subtype %d\n", obj->name, obj->attr->osdev.type);
+  }
+
+  assert(HWLOC_TYPE_DEPTH_BRIDGE == hwloc_get_type_depth(topology, HWLOC_OBJ_BRIDGE));
+  assert(HWLOC_TYPE_DEPTH_PCI_DEVICE == hwloc_get_type_depth(topology, HWLOC_OBJ_PCI_DEVICE));
+  assert(HWLOC_TYPE_DEPTH_OS_DEVICE == hwloc_get_type_depth(topology, HWLOC_OBJ_OS_DEVICE));
+  assert(hwloc_compare_types(HWLOC_OBJ_BRIDGE, HWLOC_OBJ_PCI_DEVICE) < 0);
+  assert(hwloc_compare_types(HWLOC_OBJ_BRIDGE, HWLOC_OBJ_OS_DEVICE) < 0);
+  assert(hwloc_compare_types(HWLOC_OBJ_PCI_DEVICE, HWLOC_OBJ_OS_DEVICE) < 0);
+
+  /* check that hwloc_get_hostbridge_by_pcibus() and hwloc_get_non_io_ancestor_obj work fine */
+  obj = NULL;
+  while ((obj = hwloc_get_next_pcidev(topology, obj)) != NULL) {
+    assert(hwloc_get_hostbridge_by_pcibus(topology,
+					  obj->attr->pcidev.domain,
+					  obj->attr->pcidev.bus)->parent
+	   == hwloc_get_non_io_ancestor_obj(topology, obj));
+  }
+
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_is_thissystem.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_is_thissystem.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_is_thissystem.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,74 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+
+/* Check the is_thissystem flag behavior */
+
+static void result(const char *msg, int err)
+{
+  const char *errmsg = strerror(errno);
+  if (err)
+    printf("%-30s: FAILED (%d, %s)\n", msg, errno, errmsg);
+  else
+    printf("%-30s: OK\n", msg);
+}
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  hwloc_bitmap_t cpuset;
+  int err;
+
+  /* check the OS topology */
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+  assert(hwloc_topology_is_thissystem(topology));
+
+  cpuset = hwloc_bitmap_dup(hwloc_topology_get_complete_cpuset(topology));
+  result("Binding with OS backend", hwloc_set_cpubind(topology, cpuset, 0));
+
+  hwloc_topology_destroy(topology);
+
+  /* We're assume there is a real processor numbered 0 */
+  hwloc_bitmap_zero(cpuset);
+  hwloc_bitmap_set(cpuset, 0);
+
+  /* check a synthetic topology */
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, "1");
+  hwloc_topology_load(topology);
+  assert(!hwloc_topology_is_thissystem(topology));
+
+  err = hwloc_set_cpubind(topology, cpuset, 0);
+  result("Binding with synthetic backend", err);
+  assert(!err);
+
+  hwloc_topology_destroy(topology);
+
+  /* check a synthetic topology but assuming it's the system topology */
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM);
+  hwloc_topology_set_synthetic(topology, "1");
+  hwloc_topology_load(topology);
+  assert(hwloc_topology_is_thissystem(topology));
+
+  result("Binding with synthetic backend faking is_thissystem", hwloc_set_cpubind(topology, cpuset, 0));
+
+  hwloc_topology_destroy(topology);
+
+  hwloc_bitmap_free(cpuset);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_obj_infos.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_obj_infos.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_obj_infos.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,41 @@
+/*
+ * Copyright © 2011 inria.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <assert.h>
+
+/* check obj infos */
+
+#define NAME1 "foobar"
+#define VALUE1 "myvalue"
+#define NAME2 "foobaz"
+#define VALUE2 "myothervalue"
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  hwloc_obj_t obj;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+
+  obj = hwloc_get_root_obj(topology);
+
+  if (hwloc_obj_get_info_by_name(obj, NAME1)
+      || hwloc_obj_get_info_by_name(obj, NAME2))
+    return 0;
+
+  hwloc_obj_add_info(obj, NAME1, VALUE1);
+  assert(!hwloc_obj_get_info_by_name(obj, NAME2));
+  hwloc_obj_add_info(obj, NAME2, VALUE2);
+
+  assert(!strcmp(hwloc_obj_get_info_by_name(obj, NAME1), VALUE1));
+  assert(!strcmp(hwloc_obj_get_info_by_name(obj, NAME2), VALUE2));
+
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_object_userdata.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_object_userdata.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_object_userdata.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,48 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* check that object userdata is properly initialized */
+
+static void check(hwloc_topology_t topology)
+{
+  unsigned depth;
+  unsigned i,j;
+
+  depth = hwloc_topology_get_depth(topology);
+  for(i=0; i<depth; i++) {
+    for(j=0; j<hwloc_get_nbobjs_by_depth(topology, i); j++) {
+      assert(hwloc_get_obj_by_depth(topology, i, j)->userdata == NULL);
+    }
+  }
+}
+
+int main(void)
+{
+  hwloc_topology_t topology;
+
+  /* check the real topology */
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+  check(topology);
+  hwloc_topology_destroy(topology);
+
+  /* check a synthetic topology */
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, "6 5 4 3 2");
+  hwloc_topology_load(topology);
+  check(topology);
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_synthetic.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_synthetic.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_synthetic.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,52 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+/* check that object userdata is properly initialized */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  unsigned depth;
+  unsigned i,j, width;
+
+  /* check a synthetic topology */
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, "2 3 4 5 6");
+  hwloc_topology_load(topology);
+
+  /* internal checks */
+
+  hwloc_topology_check(topology);
+
+  /* local checks */
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 6);
+
+  width = 1;
+  for(i=0; i<6; i++) {
+    /* check arities */
+    assert(hwloc_get_nbobjs_by_depth(topology, i) == width);
+    for(j=0; j<width; j++) {
+      hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, i, j);
+      assert(obj);
+      assert(obj->arity == (i<5 ? i+2 : 0));
+    }
+    width *= i+2;
+  }
+
+  hwloc_topology_destroy(topology);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_topology_restrict.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_topology_restrict.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_topology_restrict.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,185 @@
+/*
+ * Copyright © 2011 inria.  All rights reserved.
+ * Copyright © 2011 Université Bordeaux 1.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+
+static hwloc_topology_t topology;
+
+static void check(unsigned nbnodes, unsigned nbcores, unsigned nbpus)
+{
+  unsigned depth;
+  unsigned nb;
+  unsigned long long total_memory;
+
+  /* sanity checks */
+  depth = hwloc_topology_get_depth(topology);
+  assert(depth == 4);
+  depth = hwloc_get_type_depth(topology, HWLOC_OBJ_NODE);
+  assert(depth == 1);
+  depth = hwloc_get_type_depth(topology, HWLOC_OBJ_CORE);
+  assert(depth == 2);
+  depth = hwloc_get_type_depth(topology, HWLOC_OBJ_PU);
+  assert(depth == 3);
+
+  /* actual checks */
+  nb = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE);
+  assert(nb == nbnodes);
+  nb = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_CORE);
+  assert(nb == nbcores);
+  nb = hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_PU);
+  assert(nb == nbpus);
+  total_memory = hwloc_get_root_obj(topology)->memory.total_memory;
+  assert(total_memory == nbnodes * 1024*1024*1024); /* synthetic topology puts 1GB per node */
+}
+
+static void check_distances(unsigned nbnodes, unsigned nbcores)
+{
+  const struct hwloc_distances_s *distance;
+
+  /* node distance */
+  distance = hwloc_get_whole_distance_matrix_by_type(topology, HWLOC_OBJ_NODE);
+  if (nbnodes >= 2) {
+    assert(distance);
+    assert(distance->nbobjs == nbnodes);
+  } else {
+    assert(!distance);
+  }
+
+  /* core distance */
+  distance = hwloc_get_whole_distance_matrix_by_type(topology, HWLOC_OBJ_CORE);
+  if (nbcores >= 2) {
+    assert(distance);
+    assert(distance->nbobjs == nbcores);
+  } else {
+    assert(!distance);
+  }
+}
+
+int main(void)
+{
+  hwloc_bitmap_t cpuset = hwloc_bitmap_alloc();
+  unsigned node_indexes[3], core_indexes[6];
+  float node_distances[9], core_distances[36];
+  unsigned i,j;
+  int err;
+
+  for(i=0; i<3; i++) {
+    node_indexes[i] = i;
+    for(j=0; j<3; j++)
+      node_distances[i*3+j] = (i == j ? 10.f : 20.f);
+  }
+  for(i=0; i<6; i++) {
+    core_indexes[i] = i;
+    for(j=0; j<6; j++)
+      core_distances[i*6+j] = (i == j ? 4.f : 8.f);
+  }
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, "node:3 core:2 pu:4");
+  hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_NODE, 3, node_indexes, node_distances);
+  hwloc_topology_set_distance_matrix(topology, HWLOC_OBJ_CORE, 6, core_indexes, core_distances);
+  hwloc_topology_load(topology);
+
+  /* entire topology */
+  printf("starting from full topology\n");
+  check(3, 6, 24);
+  check_distances(3, 6);
+
+  /* restrict to nothing, impossible */
+  printf("restricting to nothing, must fail\n");
+  hwloc_bitmap_zero(cpuset);
+  err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES);
+  assert(err < 0 && errno == EINVAL);
+  check(3, 6, 24);
+  check_distances(3, 6);
+
+  /* restrict to everything, will do nothing */
+  printf("restricting to nothing, does nothing\n");
+  hwloc_bitmap_fill(cpuset);
+  err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES);
+  assert(!err);
+  check(3, 6, 24);
+  check_distances(3, 6);
+
+  /* remove a single pu (second PU of second core of second node) */
+  printf("removing one PU\n");
+  hwloc_bitmap_fill(cpuset);
+  hwloc_bitmap_clr(cpuset, 13);
+  err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES);
+  assert(!err);
+  check(3, 6, 23);
+  check_distances(3, 6);
+
+  /* remove the entire second core of first node */
+  printf("removing one core\n");
+  hwloc_bitmap_fill(cpuset);
+  hwloc_bitmap_clr_range(cpuset, 4, 7);
+  err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES);
+  assert(!err);
+  check(3, 5, 19);
+  check_distances(3, 5);
+
+  /* remove the entire third node */
+  printf("removing one node\n");
+  hwloc_bitmap_fill(cpuset);
+  hwloc_bitmap_clr_range(cpuset, 16, 23);
+  err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES);
+  assert(!err);
+  check(2, 3, 11);
+  check_distances(2, 3);
+
+  /* restrict to the third node, impossible */
+  printf("restricting to only some already removed node, must fail\n");
+  hwloc_bitmap_zero(cpuset);
+  hwloc_bitmap_set_range(cpuset, 16, 23);
+  err = hwloc_topology_restrict(topology, cpuset, HWLOC_RESTRICT_FLAG_ADAPT_DISTANCES);
+  assert(err == -1 && errno == EINVAL);
+  check(2, 3, 11);
+  check_distances(2, 3);
+
+  /* only keep three PUs (first and last of first core, and last of last core of second node) */
+  printf("restricting to 3 PUs\n");
+  hwloc_bitmap_zero(cpuset);
+  hwloc_bitmap_set(cpuset, 0);
+  hwloc_bitmap_set(cpuset, 3);
+  hwloc_bitmap_set(cpuset, 15);
+  err = hwloc_topology_restrict(topology, cpuset, 0);
+  assert(!err);
+  check(2, 2, 3);
+  check_distances(0, 0);
+
+  /* only keep one PU (last of last core of second node) */
+  printf("restricting to a single PU\n");
+  hwloc_bitmap_zero(cpuset);
+  hwloc_bitmap_set(cpuset, 15);
+  err = hwloc_topology_restrict(topology, cpuset, 0);
+  assert(!err);
+  check(1, 1, 1);
+  check_distances(0, 0);
+
+  hwloc_topology_destroy(topology);
+
+  /* check that restricting exactly on a Misc object keeps things coherent */
+  printf("restricting to a Misc covering only the of the PU level\n");
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, "pu:4");
+  hwloc_topology_load(topology);
+  hwloc_bitmap_zero(cpuset);
+  hwloc_bitmap_set_range(cpuset, 1, 2);
+  hwloc_topology_insert_misc_object_by_cpuset(topology, cpuset, "toto");
+  hwloc_topology_restrict(topology, cpuset, 0);
+  hwloc_topology_check(topology);
+  hwloc_topology_destroy(topology);
+
+  hwloc_bitmap_free(cpuset);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_type_depth.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_type_depth.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/hwloc_type_depth.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,56 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdio.h>
+#include <assert.h>
+
+/* check topo_get_type{,_or_above,_or_below}_depth()
+ * and hwloc_get_depth_type()
+ */
+
+#define SYNTHETIC_TOPOLOGY_DESCRIPTION "machine:3 group:2 group:2 core:3 cache:2 cache:2 2"
+
+int main(void)
+{
+  hwloc_topology_t topology;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_synthetic(topology, SYNTHETIC_TOPOLOGY_DESCRIPTION);
+  hwloc_topology_load(topology);
+
+  assert(hwloc_topology_get_depth(topology) == 8);
+
+  assert(hwloc_get_depth_type(topology, 0) == HWLOC_OBJ_SYSTEM);
+  assert(hwloc_get_depth_type(topology, 1) == HWLOC_OBJ_MACHINE);
+  assert(hwloc_get_depth_type(topology, 2) == HWLOC_OBJ_GROUP);
+  assert(hwloc_get_depth_type(topology, 3) == HWLOC_OBJ_GROUP);
+  assert(hwloc_get_depth_type(topology, 4) == HWLOC_OBJ_CORE);
+  assert(hwloc_get_depth_type(topology, 5) == HWLOC_OBJ_CACHE);
+  assert(hwloc_get_depth_type(topology, 6) == HWLOC_OBJ_CACHE);
+  assert(hwloc_get_depth_type(topology, 7) == HWLOC_OBJ_PU);
+
+  assert(hwloc_get_type_depth(topology, HWLOC_OBJ_MACHINE) == 1);
+  assert(hwloc_get_type_depth(topology, HWLOC_OBJ_CORE) == 4);
+  assert(hwloc_get_type_depth(topology, HWLOC_OBJ_PU) == 7);
+
+  assert(hwloc_get_type_depth(topology, HWLOC_OBJ_NODE) == HWLOC_TYPE_DEPTH_UNKNOWN);
+  assert(hwloc_get_type_or_above_depth(topology, HWLOC_OBJ_NODE) == 3);
+  assert(hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_NODE) == 4);
+  assert(hwloc_get_type_depth(topology, HWLOC_OBJ_SOCKET) == HWLOC_TYPE_DEPTH_UNKNOWN);
+  assert(hwloc_get_type_or_above_depth(topology, HWLOC_OBJ_SOCKET) == 3);
+  assert(hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_SOCKET) == 4);
+  assert(hwloc_get_type_depth(topology, HWLOC_OBJ_CACHE) == HWLOC_TYPE_DEPTH_MULTIPLE);
+  assert(hwloc_get_type_or_above_depth(topology, HWLOC_OBJ_CACHE) == HWLOC_TYPE_DEPTH_MULTIPLE);
+  assert(hwloc_get_type_or_below_depth(topology, HWLOC_OBJ_CACHE) == HWLOC_TYPE_DEPTH_MULTIPLE);
+
+  hwloc_topology_destroy(topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/128ia64-17n4s2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/128ia64-17n4s2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/128ia64-17n4s2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,363 @@
+Machine (P#0 total=1609512816KB Backend=Linux)
+  NUMANode L#0 (P#0 local=100057088KB total=100057088KB)
+    Socket L#0 (P#0 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#0 (P#0)
+        PU L#0 (P#0)
+      Core L#1 (P#1)
+        PU L#1 (P#1)
+    Socket L#1 (P#1 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#2 (P#0)
+        PU L#2 (P#2)
+      Core L#3 (P#1)
+        PU L#3 (P#3)
+    Socket L#2 (P#256 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#4 (P#0)
+        PU L#4 (P#4)
+      Core L#5 (P#1)
+        PU L#5 (P#5)
+    Socket L#3 (P#257 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#6 (P#0)
+        PU L#6 (P#6)
+      Core L#7 (P#1)
+        PU L#7 (P#7)
+  NUMANode L#1 (P#1 local=100073472KB total=100073472KB)
+    Socket L#4 (P#65536 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#8 (P#0)
+        PU L#8 (P#8)
+      Core L#9 (P#1)
+        PU L#9 (P#9)
+    Socket L#5 (P#65537 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#10 (P#0)
+        PU L#10 (P#10)
+      Core L#11 (P#1)
+        PU L#11 (P#11)
+    Socket L#6 (P#65792 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#12 (P#0)
+        PU L#12 (P#12)
+      Core L#13 (P#1)
+        PU L#13 (P#13)
+    Socket L#7 (P#65793 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#14 (P#0)
+        PU L#14 (P#14)
+      Core L#15 (P#1)
+        PU L#15 (P#15)
+  NUMANode L#2 (P#2 local=100597760KB total=100597760KB)
+    Socket L#8 (P#131072 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#16 (P#0)
+        PU L#16 (P#16)
+      Core L#17 (P#1)
+        PU L#17 (P#17)
+    Socket L#9 (P#131073 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#18 (P#0)
+        PU L#18 (P#18)
+      Core L#19 (P#1)
+        PU L#19 (P#19)
+    Socket L#10 (P#131328 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#20 (P#0)
+        PU L#20 (P#20)
+      Core L#21 (P#1)
+        PU L#21 (P#21)
+    Socket L#11 (P#131329 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#22 (P#0)
+        PU L#22 (P#22)
+      Core L#23 (P#1)
+        PU L#23 (P#23)
+  NUMANode L#3 (P#3 local=100597760KB total=100597760KB)
+    Socket L#12 (P#196608 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#24 (P#0)
+        PU L#24 (P#24)
+      Core L#25 (P#1)
+        PU L#25 (P#25)
+    Socket L#13 (P#196609 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#26 (P#0)
+        PU L#26 (P#26)
+      Core L#27 (P#1)
+        PU L#27 (P#27)
+    Socket L#14 (P#196864 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#28 (P#0)
+        PU L#28 (P#28)
+      Core L#29 (P#1)
+        PU L#29 (P#29)
+    Socket L#15 (P#196865 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#30 (P#0)
+        PU L#30 (P#30)
+      Core L#31 (P#1)
+        PU L#31 (P#31)
+  NUMANode L#4 (P#4 local=100597760KB total=100597760KB)
+    Socket L#16 (P#262144 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#32 (P#0)
+        PU L#32 (P#32)
+      Core L#33 (P#1)
+        PU L#33 (P#33)
+    Socket L#17 (P#262145 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#34 (P#0)
+        PU L#34 (P#34)
+      Core L#35 (P#1)
+        PU L#35 (P#35)
+    Socket L#18 (P#262400 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#36 (P#0)
+        PU L#36 (P#36)
+      Core L#37 (P#1)
+        PU L#37 (P#37)
+    Socket L#19 (P#262401 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#38 (P#0)
+        PU L#38 (P#38)
+      Core L#39 (P#1)
+        PU L#39 (P#39)
+  NUMANode L#5 (P#5 local=100597760KB total=100597760KB)
+    Socket L#20 (P#327680 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#40 (P#0)
+        PU L#40 (P#40)
+      Core L#41 (P#1)
+        PU L#41 (P#41)
+    Socket L#21 (P#327681 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#42 (P#0)
+        PU L#42 (P#42)
+      Core L#43 (P#1)
+        PU L#43 (P#43)
+    Socket L#22 (P#327936 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#44 (P#0)
+        PU L#44 (P#44)
+      Core L#45 (P#1)
+        PU L#45 (P#45)
+    Socket L#23 (P#327937 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#46 (P#0)
+        PU L#46 (P#46)
+      Core L#47 (P#1)
+        PU L#47 (P#47)
+  NUMANode L#6 (P#6 local=100597760KB total=100597760KB)
+    Socket L#24 (P#393216 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#48 (P#0)
+        PU L#48 (P#48)
+      Core L#49 (P#1)
+        PU L#49 (P#49)
+    Socket L#25 (P#393217 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#50 (P#0)
+        PU L#50 (P#50)
+      Core L#51 (P#1)
+        PU L#51 (P#51)
+    Socket L#26 (P#393472 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#52 (P#0)
+        PU L#52 (P#52)
+      Core L#53 (P#1)
+        PU L#53 (P#53)
+    Socket L#27 (P#393473 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#54 (P#0)
+        PU L#54 (P#54)
+      Core L#55 (P#1)
+        PU L#55 (P#55)
+  NUMANode L#7 (P#7 local=100597728KB total=100597728KB)
+    Socket L#28 (P#458752 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#56 (P#0)
+        PU L#56 (P#56)
+      Core L#57 (P#1)
+        PU L#57 (P#57)
+    Socket L#29 (P#458753 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#58 (P#0)
+        PU L#58 (P#58)
+      Core L#59 (P#1)
+        PU L#59 (P#59)
+    Socket L#30 (P#459008 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#60 (P#0)
+        PU L#60 (P#60)
+      Core L#61 (P#1)
+        PU L#61 (P#61)
+    Socket L#31 (P#459009 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#62 (P#0)
+        PU L#62 (P#62)
+      Core L#63 (P#1)
+        PU L#63 (P#63)
+  NUMANode L#8 (P#8 local=100597760KB total=100597760KB)
+    Socket L#32 (P#524288 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#64 (P#0)
+        PU L#64 (P#64)
+      Core L#65 (P#1)
+        PU L#65 (P#65)
+    Socket L#33 (P#524289 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#66 (P#0)
+        PU L#66 (P#66)
+      Core L#67 (P#1)
+        PU L#67 (P#67)
+    Socket L#34 (P#524544 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#68 (P#0)
+        PU L#68 (P#68)
+      Core L#69 (P#1)
+        PU L#69 (P#69)
+    Socket L#35 (P#524545 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#70 (P#0)
+        PU L#70 (P#70)
+      Core L#71 (P#1)
+        PU L#71 (P#71)
+  NUMANode L#9 (P#9 local=100597760KB total=100597760KB)
+    Socket L#36 (P#589824 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#72 (P#0)
+        PU L#72 (P#72)
+      Core L#73 (P#1)
+        PU L#73 (P#73)
+    Socket L#37 (P#589825 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#74 (P#0)
+        PU L#74 (P#74)
+      Core L#75 (P#1)
+        PU L#75 (P#75)
+    Socket L#38 (P#590080 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#76 (P#0)
+        PU L#76 (P#76)
+      Core L#77 (P#1)
+        PU L#77 (P#77)
+    Socket L#39 (P#590081 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#78 (P#0)
+        PU L#78 (P#78)
+      Core L#79 (P#1)
+        PU L#79 (P#79)
+  NUMANode L#10 (P#10 local=100597760KB total=100597760KB)
+    Socket L#40 (P#655360 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#80 (P#0)
+        PU L#80 (P#80)
+      Core L#81 (P#1)
+        PU L#81 (P#81)
+    Socket L#41 (P#655361 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#82 (P#0)
+        PU L#82 (P#82)
+      Core L#83 (P#1)
+        PU L#83 (P#83)
+    Socket L#42 (P#655616 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#84 (P#0)
+        PU L#84 (P#84)
+      Core L#85 (P#1)
+        PU L#85 (P#85)
+    Socket L#43 (P#655617 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#86 (P#0)
+        PU L#86 (P#86)
+      Core L#87 (P#1)
+        PU L#87 (P#87)
+  NUMANode L#11 (P#11 local=100597760KB total=100597760KB)
+    Socket L#44 (P#720896 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#88 (P#0)
+        PU L#88 (P#88)
+      Core L#89 (P#1)
+        PU L#89 (P#89)
+    Socket L#45 (P#720897 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#90 (P#0)
+        PU L#90 (P#90)
+      Core L#91 (P#1)
+        PU L#91 (P#91)
+    Socket L#46 (P#721152 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#92 (P#0)
+        PU L#92 (P#92)
+      Core L#93 (P#1)
+        PU L#93 (P#93)
+    Socket L#47 (P#721153 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#94 (P#0)
+        PU L#94 (P#94)
+      Core L#95 (P#1)
+        PU L#95 (P#95)
+  NUMANode L#12 (P#12 local=100597760KB total=100597760KB)
+    Socket L#48 (P#786432 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#96 (P#0)
+        PU L#96 (P#96)
+      Core L#97 (P#1)
+        PU L#97 (P#97)
+    Socket L#49 (P#786433 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#98 (P#0)
+        PU L#98 (P#98)
+      Core L#99 (P#1)
+        PU L#99 (P#99)
+    Socket L#50 (P#786688 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#100 (P#0)
+        PU L#100 (P#100)
+      Core L#101 (P#1)
+        PU L#101 (P#101)
+    Socket L#51 (P#786689 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#102 (P#0)
+        PU L#102 (P#102)
+      Core L#103 (P#1)
+        PU L#103 (P#103)
+  NUMANode L#13 (P#13 local=100597744KB total=100597744KB)
+    Socket L#52 (P#851968 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#104 (P#0)
+        PU L#104 (P#104)
+      Core L#105 (P#1)
+        PU L#105 (P#105)
+    Socket L#53 (P#851969 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#106 (P#0)
+        PU L#106 (P#106)
+      Core L#107 (P#1)
+        PU L#107 (P#107)
+    Socket L#54 (P#852224 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#108 (P#0)
+        PU L#108 (P#108)
+      Core L#109 (P#1)
+        PU L#109 (P#109)
+    Socket L#55 (P#852225 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#110 (P#0)
+        PU L#110 (P#110)
+      Core L#111 (P#1)
+        PU L#111 (P#111)
+  NUMANode L#14 (P#14 local=100597760KB total=100597760KB)
+    Socket L#56 (P#917504 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#112 (P#0)
+        PU L#112 (P#112)
+      Core L#113 (P#1)
+        PU L#113 (P#113)
+    Socket L#57 (P#917505 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#114 (P#0)
+        PU L#114 (P#114)
+      Core L#115 (P#1)
+        PU L#115 (P#115)
+    Socket L#58 (P#917760 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#116 (P#0)
+        PU L#116 (P#116)
+      Core L#117 (P#1)
+        PU L#117 (P#117)
+    Socket L#59 (P#917761 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#118 (P#0)
+        PU L#118 (P#118)
+      Core L#119 (P#1)
+        PU L#119 (P#119)
+  NUMANode L#15 (P#15 local=100591248KB total=100591248KB)
+    Socket L#60 (P#983040 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#120 (P#0)
+        PU L#120 (P#120)
+      Core L#121 (P#1)
+        PU L#121 (P#121)
+    Socket L#61 (P#983041 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#122 (P#0)
+        PU L#122 (P#122)
+      Core L#123 (P#1)
+        PU L#123 (P#123)
+    Socket L#62 (P#983296 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#124 (P#0)
+        PU L#124 (P#124)
+      Core L#125 (P#1)
+        PU L#125 (P#125)
+    Socket L#63 (P#983297 CPUModel="Dual-Core Intel(R) Itanium(R) Processor 9140N")
+      Core L#126 (P#0)
+        PU L#126 (P#126)
+      Core L#127 (P#1)
+        PU L#127 (P#127)
+  NUMANode L#16 (P#16 local=1020176KB total=1020176KB)
+depth 0:	1 Machine (type #1)
+ depth 1:	17 NUMANodes (type #2)
+  depth 2:	64 Sockets (type #3)
+   depth 3:	128 Cores (type #5)
+    depth 4:	128 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16
+      0 1.000 1.700 1.700 1.700 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.400
+      1 1.700 1.000 1.700 1.700 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.400
+      2 1.700 1.700 1.000 1.700 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.400
+      3 1.700 1.700 1.700 1.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.400
+      4 2.000 2.000 2.000 2.000 1.000 1.700 1.700 1.700 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.400
+      5 2.000 2.000 2.000 2.000 1.700 1.000 1.700 1.700 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.400
+      6 2.000 2.000 2.000 2.000 1.700 1.700 1.000 1.700 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.400
+      7 2.000 2.000 2.000 2.000 1.700 1.700 1.700 1.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.400
+      8 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.000 1.700 1.700 1.700 2.000 2.000 2.000 2.000 1.400
+      9 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.700 1.000 1.700 1.700 2.000 2.000 2.000 2.000 1.400
+     10 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.700 1.700 1.000 1.700 2.000 2.000 2.000 2.000 1.400
+     11 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.700 1.700 1.700 1.000 2.000 2.000 2.000 2.000 1.400
+     12 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.000 1.700 1.700 1.700 1.400
+     13 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.700 1.000 1.700 1.700 1.400
+     14 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.700 1.700 1.000 1.700 1.400
+     15 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.700 1.700 1.700 1.000 1.400
+     16 1.400 1.400 1.400 1.400 1.400 1.400 1.400 1.400 1.400 1.400 1.400 1.400 1.400 1.400 1.400 1.400 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/128ia64-17n4s2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/128ia64-17n4s2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/128ia64-17n4s2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,158 @@
+BZh91AY&SY
+kþªïÿÿÿßüÿÿ÷=ï_€ÿïÿòÔ8   ÔǸ`šÞà ð         À  Ø    d”RT»e)(£
+`Ý0ÝÍœsp^h¾[[d…]½Æ{í_Qð      }$ / óâÛ ÎíàìÚØ6ÀÁÅÀÀ A*€8c|hôÈø        ù¹k/	¡;2-äŽqàžÇ»:d&Îìj 7€s  ª¤ <\çoƒë    ú¾÷`Áw Ñ!@d:E;°z èx]È   •±°ZÑ´Ö–Ô×>… €° `          Š~¦†=)T¦¨ÐЀÀ ha ÀL10š#L†ƒ1”*žÔ¿jª”TÿILê             ª~	ªDIMTÓ 
+2@€      @mMž©TÓF¢§’yI              ”Ri14Òaj=OHõ@f õ¨Ú™¦PÄ@I“ÔÚA A$ Jjê4zOH<  Ð
+        ?d¯Ù+˜¤ÅŸê+TŸ°V©5?X®œ&©51?\¬+›TªZŠÔÄ—"¿ÎPèWi\)1R\)8Rj“…‹…&§ñrRrRbŒLöÊæV)1I‰‰¨¯Ã]kS‘_è®IÉ8EpŸ†´'j`,ᜲû„¤üó$‰"H’$‰"H’$‰"H’$‰"H’$‰"HÉD‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$ID‘$IEŒf1ŒÉ2ª•wQ^EÛTªX‚«QQ1óH‹óë§èè9D»(Tùî·ü…þE®‹ÏÞ0óÙ#îgž%îg=ϐ!“³àö}Ñ÷7[æðW>Ì»<Ë¹ä‰\÷3ŸgÙÆÞæ{·vT«°í%6y–M{žsìb³Ùž}xq"JF;¸o7’H€Äϸpc®÷"6ï|À‘ŽXl=w:_B½hbF÷	hôpåÜ0ÃF‘†‘¼Ã*AnáÄ8páÔûï¢|ôzv°Ã¼Àz=$zHÞú=ì˜aÁäz1#7#ZM.æÆGy¡¸‚HDZ8ö
 =Ǎã^X¬L;ŽòB¸ìjJžÇÂ{óqÜrD®;Ë·Alu<w›Ž„qcØž;'ŽÇ¼ØÔ2¶†›bŠØm×±=6“²«–ë»·vîIné5µ÷nìªåºîíݨ’$’S®îÝÉMË[»žä“Ý»·vîÃ{nîÝÙUËuÝÛ»wNÙí·wníÝm¶îíÝ»­©;V·wnìªåºîíÝ»©Š«nîÝÛ»wníÜ÷[båVëÍÅË.뻤ÖÖªåºîíݨ’N»¹$’ÝÛ»wníÜ’ÝÛ»w[m¹UËuÝÛ»*¹nª:Éqn8ÇÓvIwníu½R[ql'Û»rK·vîÝÛ»[jI%ovîÜ’íÝ»·’WnÝÛ»tî¶ÍÛwnì’îÝÛ»wdLIÝ»·v’IÝ»µÖL’¶öîÝÛ’]»·vîÝÛ­ä»»»wníÝ»·và±d½;·:ÚJnÝÛ‹a>IníÝ»·v¶É×Tš[u×níݹ%ÚëzÛm©-»·vîÝØžíÉ··%»q3§j¦&nA]i3M4Ó6I-Í13M0¤ë¬ÓhÝ—M13M4ܤRéÓ´‘Û;TÙ-Í4ÄÍ4ÓLÙ-Í4ÓM0«4yܱæw^äÜmºg™u\IÊ©¦šbgj¦m²fšiŽÍ×nÛ†gaµÄù¶j-¶°›mÛv í†Ûd–ÛmHÛ
+³#»±7y¶Øm‰l6l˜-ïH÷ÕÜ9Ú=õ†×æØm¨¶Ø]Ø]pgm‰»vÃm²KaÝÐŽîfGwbn'm†Û6ØmÝøwm›lm³†&mÔ¡;\4IØ+´lÎÃk‰ól6Ô[l7a6Á¶&ìAÛ
+¶É-‡wB;¸m™݉¸¶lHÛa¶'m·›l7v´Wn†×æØm¨¾Û
+÷Ñ6Á¶&ïH÷ß}ûîõ/}÷ß}ԍ°Û2;»z{Ò}÷ßpÛ6Øm²´Wn†×æØm¨¶û;½ôO}ô3¶Ä݈;Ü6Û$¶ÛjFØm½#mé7¶Øm½#ß}ô{ì’ ‚_v6m´’jŠâ2è$ë‡p’m͆©"pÂe½‰Øa˜oǰÛcÝÝÂŽØm¨½ ÎÜ3;
+®'ͰÛQm°Ý„Ûh–Ø›±l6Û$¶ÛjFØm™݉»Í¶ÃlHÛa°­pt•׎îÔRòš>š¥Ï$FñÔE{´uB
+Lô=Ó£LÎFЕ^rTóì[±¥)löìM+wn†×cáØm¨¶ØnÂm´KlM؃¶mˆ;mµ#l6ÌŽîÄÝæÛa¶$m°Úސgn†×cáØm¨¶ØnÂm
 ´KlM؃¶m’[mµ#l6ÌŽîÄÝæÛa¶$m°Û·lºéº™­“®Õíy·w_}öÏu›ÚÛskdä­íÖm[ãswu~ûï_zûé”ÚÛm·ÝÖmfÕ¾w97YµJVÛÛ¬ÚͬÚ읩÷u›Yµ{^mÝÖmfÕív”M­ÖmfÖmx÷wu›Yµ›^=ÍÇÜäÝfÖm[ãswu›Yµ›RmæßwYµ›Yµ›Yµ›T¥²Vøönî¢Ìç^mÝÖmlœ•¯[›wu›Yµìe6÷u›^mÆÝÝfÖmfÖm[nmfÖmx÷wuoÎMÖmfÕíy·wT¸™mÒ	&w yàx€x at YTªZ…Êeƒ0ÆYi¥–i¦ÓM4²Í¥ši¦–šYfšZi¦šiY¦šYe¥ši¦–ši¥)Rši¦–ši¦šZi¦”¦¥)M4ÔÒ”ÓKM,³M6ši¦šm,ÓK,´ÓM4ÒÓK4ÓKM4³M-4¥4ÒÓM4ÓKM,ÓM-4ÒͲ•)áðùàöH ÌRI$—¯ØÑ‰ZíWnîî¶I%ºIu5hßUm¶Ù$m¦äi#Y$òÈ’LM´|Þ >;Á¯’I%ÏFŒJ×j»wwu²I-ÒK©«Fú«m¶É#m7#IÉ'–D’bm£æð;ÁŸž2o’I%ÏF’]ÝÝÝm¶Ù$–ô2]"Zu¶Ûm²HÛMÈÒFy儜²$’j¢(xIðƒÄ«šM¶Ão¤Ö#kkºw.ëm¶É$·¤—X«ÕÛm¶Û$´Ü$k)$¹èÒI$‚mŒÒ'À@'Â	Þ
+x¤’I.z4b]Ý;—u¶Ûd’[ÒK©«Fú«m¶É#m7#IÉ'–D’bm¢0ùā—‹À…âŠ	Ïä„w>¼’î©[R]o¸J
+‡V•µj2	)”v5$’Y’ù¥"šÛm¶Ú­Q»t1æÒém¶Ûm’Få¢X$m–ÖÖ¦I–Ãä|*“D’I‰¢E ‚x7qI$’\^‘(Ÿwwwu¶Ûd’WÐÇ›K¥¶Ûm¶I8ÚIÉ9dI$ÅDpŽ$W„’I"‡œ‘§ST”Ud½Òœä&>nXÛ•·`ÈQ ŽÄrIfÚo£Jg7wwu¶Ûe¶Þ®ÍTŽs¶Ûk’A#r8Ú$Ö{&˜ “L®GÂ…*‰=½½½—½òW2ír$„’HHÕQQ$e45Nnµw‹²îîFÛâÚŒiR±'wtIS;±ªêR7%ªÉ×¹séÖIÜû»’“£I­èŒÒkÚØÛ³šÝ:÷n§”Íé-·k;»ZßuîIÝk­êøNæ¤-Zí›#Š»+
 +Ö•r«pmÛ&âU´rîIA{§rI4ºÙ©-§mµw% mÄ”ëºÚM·wrJñëjJÛmUÔ”jØj¶Ù$ëÝÝÖ¾mñ<ºÛÝÝÝϥ͍Ûu¤Óžîîîm½¶ÛfÛÛ±ÛfÛÛm¶1iÒ%Ýowu²N¶Öè­çxÚß[hV¥-mFìjI&m÷uµ)Ù¾ÛZZv-½ÐHû­ëÒ>Øš7g—¯AsÛi¶Ûnîê$“ž]]¹ºzMÛ±Ól÷,µ›=Û”Í"¡ÛnæºÝ+†ÒµvE´y]¬KdõÛ«ìÒOt廆æž×ž[†æ“ÊíµH6í¹íN”ôW7פ[1 È ‚¨”«æ‘i¤›d¶™I4‰ŽI-ÆâJ4Ûm¶…m·$‘©’lQŠ­¥c­¤I)FÑ&ªŠÖÒ&¤«m‘ $ðkÅ$’IsÑ£îéÜ»­¶Û$’Þ’]MZ7Õ[m¶Ii¹HÏ‚I'–D’rm¢0ÃÉ$’¬—Í)ëm¶ÛjµFÕº•—%ÒÛm¶Û$Œ¹I$Œ¸Òç£I%›J<‰# C†¤’J²^iH§[m¶ÛUª6­Ô¬¹.–Ûm¶Ù$eÈI$k'–D’JQF ƒçx0¼RI$¸7šR)ÖÛm¶Õj«{rmr]-¶Ûm²Hː4’HÖO,‰$”¢$Œ$‘æ$‘x„‘)$’\Ém-‘¨É‹­ªÔ¤RÛm¶ÛUªI-²KÕwrUÌßUºñçÜbu´¬¶Ûm¶É$¶ÚÝ‘I‘§$‰ÛD¤¬ƒË4ÛM¢I$“-¦™iIà$ø|áæî)$’\Éy¥"m¶Ûm¶I%}y´º[m¶Ûd‘¹¤‘¬žYI&&Ú#€'Îð`¼CÅx¤’Is%攊u¶ÛmµZ£jÞ¥eÉt¶Ûm¶É#.@ÒI#±©$’Ì—Í)ÖÛm¶Ûd’W¡6—Km¶Ûl’7 q´’5“Ëã€îñÂóK½Ï~÷à;Û‹Þ—ˆâÿZ>	°Øv ä’BG=AØ@à`Ô’”i ñ8œDÔ‚7ƒ‡Kλ_ù²ß6ñy	.Úëyµ»M|Ûæß;kÈ"/‘¡Úq"q0jI$)JM"ÐÄâq8	©$‚¥ThÒRlx0x85!Û]¯:·io|ÛçZó'Ž‚:JM§'¤’I
+R‡H4BHC/<!Ù$rÃp’D¹"Ym<M¤N&
+HB0†”hbe6›6¼‚"ðy×[ã^tׯ¼^BB„¤Ð-$L¦Ó`š’8©U$
+t”›Ž
+’¥&i"e6߯ ˆ¼ó®×ƼҾ+Åäµv¼Öºš÷ׯ¾-^SÃq¼âƒa¤‰´Æ¡$¡)4ƒI)´øÖ¼À‹Âç]¯yÓ_ñy	
+“H4‘2›M‚jÄ©$jGII´ÒDÚcP’HP”šD¤Ù|j¼ƒ€<×kâ¼Ò¾+ÅäŽt˜s:C¦9næft4ëH›LjB Ò
+$¦Çhš DñÐ7v¾5çM|kÅäí®·›[´×½¾5ñVò‹Ào6äÚi"m0jI$(JM(ÐÄÊm6Úò‹Ào:ë|[Κø×‹ÈZíyÚݦ½õñ¯Š×D^yÅ&ÓIcƒRI!BRi’Siñ­yEà7v¾5æË|kÅäí®×[´×¾¾-ñZó'މ#¡¤Úi"m0jI$)J Ò@Êl6¡©$„‰$4›M
+†
+Au]^unÓ^úø×ÅkÈ"/:JK6é"m2bI$(JM Ô @™
+îPΩ’HH܍…¦Gc±É‚I
+ZH4‘"lv	ï'ށ½íÚù¯:ù×Î¼Þ ©Jªmr*­Ó­òÖš…l(#Oä’DĆÚ†ž4àÔ…
+:9Whlñ†ç ÅTÆ:ªŠ£eѪMÓSfÔULa@ÝÌ eJ©eR©ij%!€Ôa€Ì°Æ°ÅƒUTµ­M©Leb™KmŒ*˜f(c€*L†C
+QŒXÁU•…VL”2˜eˆ–X”ÆRÂ^wÝáÝá\‰Œ&01v/'ù>1î!ýNZvc	ŒFBBýiÕÐnÞÿ½£ßª»ü§›§Áçv`ãÀUmaUŸ×*²|´©_—û€                              ê­µ~ û"ûúÔ}¢¾Áö¯CÐáÃн5èX=C…ÃÐô9Âô=pô/C‡
+z‡¡Âáèz8û·†Ñµá¨öãZ×­ëÆ·½x×®ýz®^ÞÀ õ½sǏŠn!¹¹¹¹¹ÔNNNNNNNN u:FÛm¶ÛÖ›m¶Ûm¶ÛÖ›m¶Û·nÞµnݾm»víëVíÛm¶Ûm½jÝ»víü¾_*ôôôôôôôôõë¨!!!!!!!!!=wž»t$$$$'§!!!!!=uА‰	éÈHD„„õ×BBBBBzr!!!!=uАû:ª¯Á[ño¾ª¦Þд[ýê¹nUËr®[•rÜ«–å\·*å¹W-ʹnUËr®[”Ü[ƒqn
+Ÿ7àÜ[…ø@À ó=÷'Ï~TÎäÞ~ßi:êN·ÕN®Nº†ÍìÞÞ™³{zÞ¶oyÖÙ½¸ÍÆüὛ߫[ÜÞÍõ†öoi›ºÞÍóZÖµ­| :€vphØîÎ1ÙÛ³Ê 1}ošòñžÖ
+@   `yyîQ‹åfñSZ“Xëx,•ÍMßFõ,È ýåUñãùµUxª«çÙ   €@ @ @ @ ž~‡~÷9Î=à9ÎpóçÈP UT·º®º©ÎzõW}÷Ý «œç7×9Îsœë®ºê÷]g_Ì  «#ê]J­¢‡ÏTªYû¬°î q÷ t´¯ˆ'ú@d¡ö { Œ ~߇>ð¼ ÊŒŠÀ0 ÀjU0 ù·ßõþGëŒb¿oݼ\“÷]^.sŽ1üŒëw÷à÷|ÌåSÒ×§çÃ8+cŸÉ~ü]!’{7±3‡p*ü0ú·¬o~€ =	Ýâ=| uðà<yPNî]y‡o?/‡nùï‡À8 (Týéóû7òüþ¿u'õþaù¾Sð /§ÞAîþ'Ç<?9û¿Ô¿ßé}:}˜ /öŸïõñ?è}_ÇøØ?×ÅÛŸïàüé¡  {ÚÏÆÁÞù›&ï[××<è<bǽ«Õt‘Ð*û5Íîc×½c=jûÈduŽŠï]óÞ±Ú×f+®hüP <ó¾¼UIW7íç
 Îó¿~^
+°	#$’$&9×w^]V±Ÿ—½_\ß«óß¿TØ_dO¼8úóòx  >üî g=‚‡QaXÀXÎû£}gç½c­N³Š=;Šñ{}ΪQ½lžðï3{Þg©À¾øX±}µÈ‰SÍDEû^€«æ®»§·ÏÇãò½¬Ì Å{õŽúó;úÖû >»ÆàIæþ{S5#þ¯ã?Ÿgòé÷öŸÝ=ß®ëóû·p"~è  ûÖäÃZü¢";ôDDFtÔ½ZÖûZ•÷xOs¿‘»ýßÉýžŸÖþ¿ŸÏß¿×~Ϥ[üÌ~|À‡¾ÆâûG¡»0ñÏLë®k°w韶9ºçÖÎo=ꀼ‡=:·»|Þ·»ü‘øäÆ/_•ßã;wøéø«|ú'Ôïlù]÷å÷ø þQ?»~wíü;ÛeýOÛÞÚW~w¾üöùS¨ûË€>ObWë÷áß“¯ÅÈ5WÌO·ÍMÝG}ŸË£§×Üdò­T¨¶rã«Ñn»/U<©æ¯;е[6²ÒÁ>}ß=`B÷†údôü§á{†¶mïwi>ûñ}|_ËêãAõb}ü_
+÷æqçòÆ_:{¥úíø×ç÷~1ûêñ~ë_ÏÊébýë1UßÚü\/ß}¿hÐ]÷ŒëïÏžáú §÷꽝è~—{uZ½òý¸Rªj_y1Ï~?;缝|üù{çÞûúkï¿®~Gà WÛö/ïÀ  ÓÅÔË™~÷·É¬­î&4Ý:9µ=>ÍsjïçÇŸ¦qáæä€'” åüý߯ïô?¨©±^ïžöïžüÞÐÇÏ`ì~oúÏvµ­kZÖw½ó×~ÜóçÏŸ3ØÞÁçÏŸ>G¥y™ìåöï/iowy½ï{ËÂ""":+
+÷XGzôDDD""""×xÞ–©ñÒZíÞ÷v·®Õæ¿>"""?gíª‰ïe·Šs;Y¥­íù‰]ï²{é‹·¿Å}ß8—¯Ï˜¯Ð  {‰w»Ù$Ÿ~}ïŸ>/Ÿ;ÝÛç|^ÿ  ý   € ýÀ 8 >Bo¹R¥Ü9X–⪮ãIãºxïgãÕÄösÂÝïׄråá O„‚bŒ"!^2i	(Àg·^ÎÎ;¹ŠxðžØ£ºqàlÇ	d#¢RhH#,¢A”ŽçpÍÞ\²Þ] x€ñÜ*´qUÜ’œÀ~ØØ á{ }‚hXŠîÁ^>&y|¾lê€ÉåàˆTþ˜ª§žyß“À®ñÜ;Çpå—>ýsÅä:A =óÙïžÏ;ëÏpˆ j¢²ü <@z@~ÑUÍ; p—~E˜ˆÌÊÌWP	Uô•öJÅ&)11:xøøõööæ|}zõë×ݝ—¾X óçÈûï¾ÇG@ªª€ª«ª aè 
+Pðü?Ëü†÷ðk^<xññ5­xñãÇŸÖ¼k^<kÇ­kZñ­xñ¯Áð|ïw»Ýñ7Uñ@ `UTUQl=   h*€
+®sœn¨: tt u ¹ÎsœVÃÐ  ‚¨ ªç9É€€ ê sœëœâÐ  Ð M€sœç}÷7T €UPtUUE°ô   ª *¹Îqº è ` ªªƒ¢ªª-‡   
+PUÎs“   
+Ô 
+ç9×9Å  ë`UW– ï¾ûï¾ø`Ž€ 0¨ ¾sžyÎ €@UW– ï¾ûï¾ø`Ž€ 0¨ ¾sžyÎ  ë`UW– ï¾ûï¾ø`Ž€ 0¨ ¾sžyÎ  ë`UW– ï¾ûï¾ø` ` º€\ç:ç8´  =lªªòÀ÷ß}÷ß `  7P +œç\ç€ ­€UU^X¾ûï¾ûá€::  À
+  VùÎyç8€ ­€UU^X¾ûï¾ûá€€ ê sœëœâÐ  Ð M€sœç}÷7T0  ¨ Îs®s‹@ @ U6Îs÷Ý0€0  Ý@ ®ssœZ  ¶UUy`ûï¾ûï–ꃦ À u ¹ÎuÎqh  h 
+¦À9Îs¾û›ª€  Ý@ ®sœç°ô € ªlœç;ﹺ èÑÐ 
+Ô 
+ç9Îq[@  
+ «œçª€ À
+€l
+ç9Îq[@  
+ «œç& 0  ¨ Îs®s‹@ @ U6î÷D}}ôo{ Çwwwnffªªîîó33y¬ÌÀ tt
+ª¨
+ªº¢ Ð  ÐU kƼxñã^<ùóäÀ?ÿ­xñãÆûëœçùòï¾w×ϰ¢~÷ç}uçžûÌï›ë¯° £«ç7ºöÝ^Áå€ ށUUUWT@ÃÐ 뮺ç9κ뮺뮺ü¯Ð}€~ 
+´¢*ÜU¯ÏŸ>{ï¾ýsœç×]uÖ:®€0 UU at UUÕy€ ‚¨ ªç9ÅP<°€0ªªŠª¨ƒÈ4  4@W9Î7T €UPtUUDA   ª *¹ÎqT,ß~|ùáœà::UTU]Qh  UÎsœQëׯ@ÝPt 0 UUAÑUUy€ ‚¨ ÷hUþ…PUL‚ƒy/£©ÑWTÕfN)&}Ñ”×Qr]$æbpEa–Ãl”’I·˜zTÛjsà¼KyÂ$+i¤QYxò‰%p‰-Ê%Ÿ)̵ÄÃâ÷›#æ ‚ ¯3ǐÃÄà݁ÒQ°Ô'ž]Á“SĐ5JâI%ù;‰ lx’¡A‚–ö=ñu)”!´8‚	­­ë$“t8•RÙÒlÙ³fÍ[6lÙ³fÍ™0ÌÔÙ³VÍ™2imhŠD 1ši§F¶»]®×k¨ívºŽ×WQÚê¸4GZívºÝ®32dÔàt&F%”ÉYL‹ÄÂcF”ȱ2,ŒS#Äȱ1LŒ&F%‰’²™S"Äı2,L&E‰‰˜#(€ê (ª‰W©Ÿ¯&“xßï a ú
+ð-«àV ¯ekßÕ­é§L§v'LNܧf'“#ìʧ»ÈD
+ç:,¼c, D<‡¹ 1œ\órÐÌcžïç;®wh«¾ûΞéÖ9}p Ü@««¤UÑßxëmFF	&&ì*  	óÁáWÖ½ôŸ›Ö=sß‹üoÞŸfúm!üùîùùêRßG¿>Ùé÷yöH$‚ ’I$’H?ãßõŸì¿ÆIÿ´Ÿ·úÿk¤¦QM¶¹rþ‚î”Áª·ûGÐ÷Z©pÈ‡È§ÍÆSó¥õSh†™
+§QëknÃ$s-¾~ÿs3üx :ñîuwèˆï:»Î®ýDw«_è~w8üá‡éµ¦ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  f	Λm¶ói%:m¶ÛÌzÐ a­  fÐ a­   fÈÌÉ¡wj¨Ù^Ég(2mË“RBfš2+h ETLûܰ7ÛÓ>nJ$뙐9ëw
+­aUá…çž?œ~
+'§ßœ} uã׏ 6ìwc€  Ø-¨ÁŠ ª¢Vù3¾Iã&L™2dÉ’fL™2dÉ“&L™2dÉ“&L™2dÉ“&L™2dÉ“&L™2dÉ“&L™2dÉ3&L“2dÉ“&L™2dÉ“&L™2dÉ“&L“2dÉ“&L™2dÉ“&L™&dÉ’fL™2dÉ3&L™2dÉ“$Ì™â¶ÛæÁW@«€UÞnoy™Æfq™œfg™ÆfqÕ®Lf^u5¬ç™Îu5M@ª*Žëÿ‡õSõkíÙ2dÅ‹&L™>óo½{okuši¦”¦ši¦šRši¦–Y¦ši¦ši¦¿‹A‹JNŽ-……ü]D’ÁUØ8¬T.k	…4ý&,Y2dDƒm?Íl´¤‰$H‘"D‰JRšYfši¦šYf†2rÓî¸8[2ËﱕGvRéc*ŽXd~Š_¥c*»†PGv÷…e~¡ÁÔÙ«VÍ›5jÕ³fϾâòܝ·75Êq6jÕ³M4Ù³fÍ›6lÙ¦šlÙ³fÍ›6jÙ³f­›6jÙ³fÍ4Ù³g÷x>ÿÞs<“œç9N¾r¹_¦—¢ýK[6dÅ“M4ÓM)Ji¦–i¦“&LY2dÃ&L>ûL’ºž„¼Ö1#“'yhè}ó&,˜`ĉ’ž›-) Á‰H“M4¥4ÓM4ÒÍ4ÓKdÉ“²pÃÅxõš¶jÙ³f­[6lÕø_ÊöÜÜç)ÄÕ«fÍ›4ÓfÍ›6lÙ¦šl٦͚¶lÙ³VÍ[6lÙ³fÍ[6i³fÏïð{y3œå8Zi·ù}ÿZ÷œÏÖ8\N'‰Ââq8\N
+¥¥¥¥ð|Êeý÷F“#‘ÂXÚZZZZZZXXXZZZZZZZZZXZXXZXZXZZZXÚXÚZZZXÚXÚZZZZZXÚZZZZZZXZZZZñ”È~ù Òe2˜Gý_ñ¨ƒüO<À`7Ÿ÷?íÿ‹€ øÏÏñxÙM”ÙM”ÙM”ðêÈy»Øÿ‹þ  w^=¯¼{¯¼{Ð> ïO»Ò€óÏ<²—)³38ÌÎ33ŒÍ;@  €m1dÆ,˜Æ,˜Å“²cLF4˜Å“II‘‘‘‘EH H€H6ªˆ HD HEˆ2DRDRA")")")#¤Äi1‹&1dÄcIŒY1‹&1d³¨ªÔJ.ºmR©b¿‘Ú}áÞã‹üKŸãK¾µQTr4à2X	ó­	c¥ÐÀC–%d2V1 [B›»C®
 Îòo0܃]ë˜
+{
+
+ Àzè!†Æ딕]…õa“c—&¤†d£!
+Íg­ã¹–N,^çzZ;¡Ï˜´óXº¬kzò¯ÍVS¬—PÉ2—XÎûÆôò›9³»UG&ð&õÖkz;k…¬‡Z¡ªÑÆœ›\:5fɝ”{c†¬_±É%˜Èì¢Üв eräÈy‘à‚öwךxµ°@h¡˜.¬Ê¬ˆ© Œ‚ ÂÈ*¢ðÐèÒù®l at NAÜWt°ÚuÖTDu^hØÕlä {ˆ¨â 8‹»ÇFkxßx“³TC F&uAU³²“.Ç¡Ñ&ïQß0k ºr3ƒ¨¯‹ÃFa5ea0´ïÑ›ÒcYÃ2
+ïXpšpc9«2fªÌç]wÍ_Y˜àEäxiÚåØàÈjHB¡õO1MTÍ‚Þw2œ èÀûïDgØw·à#`gÕì]¾&h"Â/!­h‰“¤¬e5T9TK¾¬®²]Ö rèÁë'5Ñs}Q˜#Ôs ‘‹­í‡äâÑ2haŒÊ&ò"¶ó "¹˜ëTsª­ôoGKÛƒ¦\UFú¬k™ê¸tK¢)5Õ1Å ¾é
+|<â/ <óŒzõo\÷Ý<c Œ ǘŒ ‚çhƒÔ‰S»ß{©ç𩾦
+Qè/«^Âó£»ÕBsZ†z>c‡Ðá(€	÷Òø‘+ÎCӏ?Xªºœ²Lr·ŒK¹c¬nÌ€Å{Cç§/ÏlzBG ÙêÁ#
+U;×<3…,‚øƒ¸wfÎQ:‚Ax¦AÃÚÚÛrð\QI,-­¶Ù%”A:ò©·%a7"L*ƒc€æ!ß'KŸĤròd|ÀCê2i
+‹Qò A’³lÔƒÉt
+¨‘»ÀvG|Hâ9dH˜räH%<¬R*&ŽtšM « V#l4É(Ðä¡Ä€|CŠ›¬â›´â›¬â›¬â˜R»iÚWk¹¥šn´èÑ$4HŒP@
+
+7#ºäEªqMÖîRºÝÊW[¹Jëw"ÃnµÜÒ»]ÊPÒ»kÅJm,Úii¦Òͦ–šZii¥¦–šZiR•)´³i¥¦–šm4ÚYR–šm4Ú[ÏM7üÛþ×&•ž¤æº×~ý"©à Õwà‚I%€ ¿>åù|  düߟ=ùõ|?vöÑÄ·ð“Ô1Š#çÏ™|‰’;üzƒï½K÷ܦ»ëëïçÇîËÞƒtó睑¯Í÷‡åìð   dô÷ýwÏÏÏÓëõõëìîúzõëÑLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀß·Yííííííí^ÛöÞ÷¾³ÛÛÛÛÛÛÚ½³ S03 S1°&àõ¯/µãzÞµ«¾f·­y†ŒVCýQCùŸYûÕ@ßt˜ƒ÷Í?:/xù߃ǐ    îæªI$’O†¾Ìó­[0Ï÷ñ¥‹úCä¾Ãº;ïԏèçó&Ýã[Eûy1³a¼Eü«¶@Ñ£X5çãôø`9½uÖ4‹ù×&´jõp½þã¢Ï9¾`åÀ_ž±ÖºÒ-k­g¯”ŒöWÓ¿ÀaõÑöÝ@Ή™ì¯7ò¾yˆù¼ß¾ïxÍPëZ’@    îîÝÀ$šùÞ± /é“ñ3œý@ZÇkÏ[½ýÈß3“½uŸÅsíæz辑wÚ¨ª1óÄ
+6N$½œû3
+éЮj³øÚ-Ü94j³˜;·€¿;¼˜Ê/âó¯Œóà}) ü5—”|¬µïUóç׿׽üwyµ{ß>>+îñò    ÝÝ»€§Óçéãá[{o_‡ññãÞñöùˆH•Ï®s\λ°Z]¼Bá>¢ƒj´‹ðÕŸcëÆ‘gž×y¬¢ÎCfò‹¤¨žCï¾g¿
+º=Ï÷þÿß×ìÔwÿÝýþòÏùGô=úŠÿÏ{_-¨q§=}–ݵÅnö¾[PãNzû-»k›·{_*PâœÓ©f[\ýöm|º£Ñ^šõO½ë=žÍ¯—Tz+Ó^©÷½bç³ÙµòêEzkÕ>÷¬\ö{6¾]Qè¯Mz§Þõ‹žÏf×˪=é¯TûÞ±sÙìÚùuG¢½5êŸ{Ö.{=›_.¨ôW¦½SïzÅÏg³kåÕŠôת}ïX¹ìöm|º£Ñ^šõO½ë=žÍ¯—Tz+Ó^©÷½bæíÞ×Ê”8§4êY–×=žÍ¯—Tz+Ó^©÷½bç³ÙµòêEzkÕ>÷¬\ö{6¾]Qè¯Mz§Þõ‹žÏf×˪=é¯TûÞ±sÙìÚùuG¢½5êŸ{Ö.{=›_.¨ôV£¯²Û¬\xókåÕ+Ó^©÷½bç³ÙµòêEzkÕ>÷¬\ö{6¾]Qè¯Mz§Þõ‹žÏf×˪=é¯TûÞ±svïkåJSšu,ËkžÏf×˪=é¯TûÞ±sÙìÚùuG¢½5êŸ{Ö.{=›_.¨ôW¦½SïzÅÏg³kåÕŠôת}ïX¹ìöm|º£Ñ^šõO½ë=žÍ¯—Tz+Ó^©÷½bç³ÙµòêEzkÕ>÷¬\ö{6¾]Qè¯Mz§Þõ‹›·{_*PâœÓ©f[\Ý»ÚùR‡æK2ÚæíÞ×Ê”8§4êY–×7nö¾]PâœÓ©c±svïkåÕ)Í:–;7nö¾]PâœÓ©c±q[½¯–Ô8Óž¾ËnÚæíÞ×˪Sšu,v.nÝí|º¡Å9§RÇbæíÞ×˪Sšu,v.nÝí|º¡Å9§RÇbæíÞ×˪Sšu,v.nÝí|º¡Å9§RÇbæíÞ×˪Sšu,v.nÝí|º¡Å9§RÇbæíÞ×˪Sšu,v.nÝí|º¡Å9§RÇbâ·{_-¨q§=}–ݵÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÅnö¾^Qè尿Sïzü¹»õí|º¡Å9§RÇbæíÞ×˪Sšu,v.nÝí|º¡Å9§RÇbæíÞ×˪Sšu,v.nÝí|º¡Å9§RÇbæíÞ×˪Sšu,v.nÝí|º¡Å9§RÇbæíÞ×˪Sšu,v.nÝí|º¡Å9§RÇbæíÞ×˪Sšu,v.+wµ
 òòG}5êŸ{×åÍ߯kåÕ)Í:–;7nö¾]PâœÓ©c±svïkåÕ)Í:–;7nö¾]PâœÓ©c±svïkåÕ)Í:–;7nö¾]PâœÓ©c±svïkåÕ)Í:–;7nö¾]PâœÓ©c±svïkåÕ)Í:–;»ÚùyG£¾šõO½ëòæï×µòê‡æK‹›·{_.¨qNiԱع»wµòê‡æK‹›·{_.¨qNiԱع»wµòê‡æK‹›·{_.¨qNiԱع»wµòê‡æK‹›·{_.¨qNiԱع»wµòê‡æK‹ŠÝí|¼£ÑßMz§ÞõùswëÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\VïkåÕ:æKymsvïkåÕ)Í:–;7nö¾]PâœÓ©c±svïkåÕ)Í:–;7nö¾]PâœÓ©c±svïkåÕ)Í:–;7nö¾]PâœÓ©c±svïkåÕ)Í:–;7nö¾]PâœÓ©c±svïkåÕ)Í:–;»ÚùuC޹§RÞ[\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯—T8§4êXì\Ý»ÚùuCŠsN¥ŽÅÍÛ½¯ø2_ä¯ÿŸ“ü™?©ÿîOò¤“ûÓÿì:I$ŸÞ’M?½'ÿéù'äþô‘”_õßÝ$ŸÞ“ü¹þ\?¾“ìþÒwøŸáÿ‡þ¯äÿý9?€þQ[ ÿ)ÖZS0ÿ/çtGZÖ?—X“wš¯Óùò    ÝÝ»€ŽÆýGuõñõo£ëy$!rßwVèØ}GzÕýyŠûQ[ÊßñbyœåÝ~7ÃÏ[%~Þ	éüýþ•ôžþ?ÖÃʈ{‰ê’'1I^û Ÿj¬õeEq×ß×ÇËÏ¿{^Þʯ»Ç    îíÜ xï}¾|ÚÛ|ÖÖÒpª*ý€ Õš\™Ãøÿ¬Î÷CáÙ×9B³v(æÎkÑåâ*—Lód9çªU.ÞÓ—?'+íeÎPÌ(vn©Y‘Vd‘ËvˆÌDc*‡NžŽ-œŒÍ¡.ì…G^S”²å@yßé@
 šƒ’ß+„|ˇ4}n«ØìÅ0Áv~ˆ+ˆÇ—uççÞNþ»àéÀ    ÝÛ¸$’N뉸…‚¬n7Sý5ŸÌp°ü¦ˆo!Í\ûÌðùŸËE :î™9g»­ý±ÎüÕÌ“æh~ચÇ^…döŒQ=_7‚Èdº×áj00`×Wryæbò¾üÝùç|U|ûúÿwϏzª¾ÿ     wvî ><~,ü'Çâ~áo·‹È#çëCÏ耼ý^‹9/œ‡Ïð÷ûåüKß”}ø÷ÍîÙ{Ž&1«°$Á~wƒ¾|qç5ΠxGdê;àó»°ÆèÔ²Í~.äëPæ!˜¨µá«åÎüÀ      =þß~ÔmÅ«ÕQÔ
+€kÏl¸ã¯7ùó­|®p¼}c1÷–ÙXÒ¨ª:‘ÄZƒ”¼äÀ•K¥ÄÖwæ„àÙ|뮿¾UG_:—&þýó˜’      ÷ί¥TÉý/ïÿ¸oî=Áåý¤þþ3^ü†—åÖ=ê÷9£–<¾cf?,ïY—€ cíåmÕj}ÈBú,„(=ÑöÇ7å½Í÷©<5ܫӯ×$UÞåށmdE”^xŒAããêÙJ¼1Þo'a›}ƒÜÛd¶a¶Øm$ØA õ>0ÌH“A$–
+	>Ö@Øl\|.3dšW"N¡$	B˜jp™#áäÉ#LŸ’SƒÇâ–>Š£Éê	¨Zx˜-—ÒEøM$o<œHcÂY+›z^TmÒVËzCÁé$±¶åVÁ
+ϯY‡9³M›6l٦͚lÙÚR»kµÕÚêêi®Úí¸@#K@ #R”ÒãÄ›4Ù¦›4ÓfšlÚÜÊÒÓMZi†O8àʲ`,Õ4ªY¶iTÒ©¦Ù¦³M³M³Ke5”Û,Û4ªiTÓlÒ©e²–Í5LDH1 Åcö÷°·%uÔ˜ë]óí×Ô³&îË.뺰 9> Ý^»ç~uÝu˾æ}AŽÍo¬¤=ûý¸.¿š
+×ó¿=њǺŠÊ^·}èú‡Ÿo›~-}u¿I$’AA$y o‹êM‘ˆ©l4¿jÖ~ŸŽ½žaøÖ˜ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜':m¶ÛÌi¤”é¶Ûo1ë@ †´ ˜k@ †´  0X ˜v'îü¾äA¯¾ÝÄEÇÛyf­Öèܘý·öE_µ@‘A ²j±¨
+±MëëçÄû?OÞ@      𮞤ôùJ¬²Å?8ðÔà$ˆ|÷¡è†¾û,¼¦p:ÉPæóKô|ј“Sq½.¯}IŸyC¿LãÈ™óÎt•åøsœï6ó̲³t¸ÐLïÎ`qóÿ1÷ë>ÿmúí#ò»8’I$’I$’    =õç{ýo‡Ÿ§»ÊQ¯¤0a£.eAD37ƒòf6kl/aŠÐ—Î%ÔÜBÂPiÖæÎ)nÀâá§c’tÄÅq…ÈU0Šã¤±¢ÔL[}o˾| B9"ãȲez^­Ñ`fV>w_7®û;çÛ½ý¾¾=xëÈ      ­Û}?«U}½ñm|ùוÆ	]ZÔ[[ò@‚„ªZÚj¬Úåh0Cý8ƒÔS#‘¥YªCäó” %¿jò]wË̲¨æ#–%œ’H.‡¢ÇV‰¨^µöê¥ÃìóëÅïö¾_ß       }5ÚñëÍíã+¼xõkçx]nŽ“zr4æÖ•ŒªrÛi‡LjEREaë3`½ª®¹¼oÎcxË4e8pî‡CÁ¥Í‚²z>~¶OÙïïß\6ú}wÂI$’I$’I$€   ö½þ|{yó_>ý]ΗÖ]ùt&j‘+
+T at s 1 .½.‚ù¼#…€ ®HÔ^ðŽ`š¦Õs_ŦûÂ÷@ê*‚ 	ßÏ6kêÿllÔ®©è‡!ú}°Žè`n,“èx69¤2|;ûÝÉæ3:ï§¿{~~      ão_O‹z[ÚŬMõ÷·¹¼sÜhÐ×›éä™Ë¡§5–U|™p™5ÚUäÈRû‘ÌEPƯE¦‡á“KÔwnݎ͜ұT©ÍÞëγ™\ᣕO
+èd	6šZÑ"X÷ß:öñõú||½þÏnà    $’I$’I40;Î…¾R”lÞÖ°‡VawŽÊ?QBcZùЕŒ
+vk(— MëIç™ëfS­d™¤95Q3å¨ÈˆÃ…QÐtYÜ(~PÒdi2Qº)p‚…ù¬O1šëY÷úx¾¾ÞÞ>     I$’I;‰Ÿ,Ì1ìDJ&m–`±1ªA@¼5`‚‰˜	ˆ…Π&œ°<ï:ó‡?<…S°:†^ú¥Ûæûïyáë÷ùkŸƒùèöƒ^çŠgɺzÇžãÌÉŒæ8òË7‰žéTUzF¿¿¿7À] yçÏw¨_Áù9|Uýþ\:úüÌÔëáç.³¾
 °ª*E˜“¢¡yušÄÍ/•¢Ou”T^%ÅA	$ÙÌw|[ç\Ékw˜7ÜÞÊÑJ<L‰¶ÛI2ÚH#‡Pg-R	ÓL PD¤IaŠMJ[M’IæÕ&Æ
+¨‘×@Æò|^b‰äŽ$| J-£ä ‚,:‘ðø$£–½€†Ñò AtÖ8‚hˆì˜˜8¼¸`P  ¦U`R¨¹ÆÛot‹ÊÄ•²ýº÷øøÞ5Ü3v»”ݮᛵÜ3v»”Ýw)º®å7YÚnÝÊnÛ¹‹ ‡rw
+ "îî€7wuuÎuÌAĵwÝ®å+µÜ¥v»”®×r6k]Ên×r•Û¹MÛ}UAší¤?Bk<ó©1޹ϝ}¥™6¸g÷úûó¯{ïçß¿ýM·	ëRã»ß¾õ…¥ø2~Yá}Að»~ß›_sõµªíóíõóïãßçÇ<ßÁ   ìÒµŸ©mø~Æ´À Ì5  ÃZ  Ì5  ÃZ  Ì5  ÃZ  Ì5  ÃZ  Ì5  ÃZ  Ì5  ÃZ  Ì5  ÃZ  Ì5  ÃZ  Ì5  ÃZ  Ì5  Á9Óm¶ÞcM$§M¶ÛyZ  Ì5  ÃZ  Ì5¡ ‚À Ñ0|¾¾¨×Э%ôBV™YÃAC…D?qöæÏ±×'<ó[×CZ<ÌÜÌÀ*Áé`¢Ep_>ÚèúÝ}Š\?ÌÏð¶c|ÞȐ?µesïºÙý¾4%ñ¬—Ã’ò4BäRr6³nŠYC°Uük¹Ïº,.À¯Ë•w캿}ÖMä;žþ(×לÀßÕټׯt`Pá  2^vJË @‡±L¾¶8TCê s<ÕO©]~霂Àç0}ðåjHMbß`þp ‹TCTƒìÙ Æ)MÀ»¯­N|¬›Žc˜†¢†áž½Öû@C&JM@@Ÿcd!d¢…§²º ×ÞvFï¶w˜õÎV®
+t10ª‡óžýüï¬y﻾'TP*ÀöQÈÏ9^UåÉ:ç «G ½™Ó¬XÃÞuƒX÷¯5¢·X©ÜÜï<ýÝfáŸ<a‘èÑë	E‘6¸pCßsäë˜Çβu挂ùԝc}ÝÞÿø ’ÿ¯ÏŸ¿”
+Xé G8|ÂuȼÈRY#‡	 D!ó:ߟ
+÷€óΰ¯Ü¾þËý÷绲üCßU#·óÚ;í_¼VÐ2[A°‰Á‡zžÎ*ƒßGóõ³ïßÙ^õzžgç©úÿ~{א@úþ¸ÒAç›Æ–jóZÁƒ•ÅÉFrÞ
+ˆÔÊ`³: º8{*MùÖ=ÄðÀø)[ükÏ7}Áá óòϐy½ìðOCòz'w¿”Aa®çŒn÷ó)^wr}ü¾¦¹¯o9óÙïÌ`|Ù–êyNçÊì°A!’uýïoéÉJ¿}ú…óÁ_-*
+øRw›#›SÃo8ú®õYß-b‚>u‚G¤Œ$›kÄRl&Ý)rKªc(a6Sm¤l Â(„è$4 ¨	, vq ŽF¡Ã˰¼dSÞeä!Œ!ÇÅå~	¡á@Ã0ø€A‚"sDP|à‰aárL¢SÍ|q=âðŽKŸ\OI"J.Ü‹
+tQt'	#
+‡°¶Æ¯oõË—.¢•Y“‰³fÍ›5lÙ«fÍ›ZndÓVÍ›6jÖíuvºÝUÂDsœê¹ nî¸ ŒFÜk¸in×kµÖívºÝ®Í[6jnf`ÜÌÁ³VÍ­›4PÒ} söÉ@8pÀYx©9õõïÍõß.ì¿€ Z ÕKÄÅ㮼ïªëÎûªÌÉ ’GÏ¿xœ÷¼óϯëïê!WÃëüø}ë{áœ9Þ¿:@ï¼Ãù¾gùT÷½ô/·|õÞÑséëßçßè’I!ñî÷ú/=Æ%Ip¼K©&.|pª*€ sÖùñÞoÞö÷Ïÿf{LÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀx‰Ð bJt Ù­fffeÞkX3 S1°&àóãÃv`Øâ.¢x@ÊÞ3¤P?K~ÐóíßžbYó³}Í©‰uÛÀ^߯STö äú
+±¡ µ‚¬}9Øv4»ihÅ–8ë8Àç™"ý”ýÌg
+¢¨ÖV¯ídÆgí¤ 2>ÃÎTñ¶¬æ3 P+gÈù®g£ïÌu\À.GY¡£j dÊfÓç1ÜÓGv6ÙUÉm­ōüßBæ/]Y½ÅàØÖœ•P’63£ТûŽõr½årÁzÔÄO˜JÄ5€9Ušó2f¬tî#ì´âÐÈ•"R
+Óx³g»‚L9*©Ü: ÁÀéÅçH+ŸjúšóSÏ=Üí4¨‡½óºÓ¡D%¤D4Ç*@)ÎU@ÈwªË€D3ÏpCS‰`P´®°´ ]oÈèJ†CP ÔRNžYeTU*
+©HˆfÝÕIßw«+x<ÉíÓáÑP.‘@ž!˜(IƒÁ@ c™¾R:Ž‚…Ëj”‚³÷ˆ8\™Étˆ‡s E2~()ɘ)A¬‹õ ÷3nÍÇBkFê)ZI˜I¢•@Îkz¬àØ6îI’"ÒzV¨!ƒÕT¿«Ýò`¥Á¨à¥;Ù™7N!ƒ‘zˆètkB«õ”ê\ÐëS  u…Æ!/ }©s€È‚Öô:Ñ¥:ÎGJ¼î½„!õ×<¬™!¶kn(]˜°ƒ´ì¬dA·ó8Ø/Iƒ¿”U9'⃰×)\8>|˜0YÌuå=Gqdk7½¹ME·w¨™kAopDÑž_V&pD„M¿ʨïçöo=tü¿<ó »6‘¨¯9BCšYV‚ŠçfKʳ’„8Å;õÄärS¦J=835F—˜@Ô
+õï8ðmT¯4.|îK„³%<˜›”pÕ£ŒŽÂ üûýo“rñ÷Ó¯ô€…çŸW缇¿ÛïÓ—cSËŸÇ·øßwʶÿ¿\î#ï¯KÇ¿I¯OuîUëá*Œ]æºÍ\ÿTU €Þw2×°YP%8WÅ¡Å2G$ ˆ
+œRøœ§nSŠ‚I¤¹D­†ÛìÒë3¶Æl Y%4SšAÔ:P,ñÁ$§ˆ†“D‚lë›,‘Ü›h"JDpm Ý‚¬âV0øò‘y:2‡D‡È~b)¾ ’"¢ig„‰‡	¹"	k*N$@>Jp‘#áñÜí6ùy¯Ó1X ‚w[lÚØ¬ìÆcÍ¢€‰#J¢HÆ’¨Sv»¥7kºº×t¥
+n×p¦í§Ħê­×)$ F(„!¦”Ý®èfí8¥vœR»N)]iÉë8¦¥%H$¬ ãç
+–h,¼ÔÝvÞ~k;q1313R¡fÞ¤®¬5Ôbû雞çòÕ_Ç1†š]¯õ9ŽüôO~ÈÓûê#».¶~OÏ‹àôý„|B	Õ_‡â¢wÈH)$’P¡%
+P¡$©¨xð{Z` fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ a­  fÐ `œé¶Ûo1¦’S¦Ûm¼Ç­  fÐ a­  fЀ Á` a…7yXØÈ¹6T1H
+¨åA|ÝMu眛pÑß>t‰pOÒ —­d<ʧÏ(dZÒy€ U‰˜®f+9p…@ûû‰ÂÃ`Z“°ï®Œø Áò80°Œ\MɃ"|Ýüáß^w{Ð/O aô¿zËGUÏhçœóW’ì¦w݆µvw½€am„Ù²C»£²ŒŠ¯á{ÊÇñ"?“ß‚~ïçÜ}Ï'£Þ?¾¿› —ã€ÐÀî¯Èý€‚AIï˸_¯X
+Æq‚µÜôóµŒè7êÁî†hÀ(vyU'ž{Êט³Ìêêáéf.ï8Å^
+æq×î»ø‹1a:¬õùìɵËä¬'#e²'¤qÔL!³êgæîkúÕP-q?¦‘ý}¾ü]ÞcçÀ?#kð-ïo#ÊÚì=X
+ÂÆ¬)9
+eh À‚÷×~ïÎkÌ‚è4°¸ô«WºÇî×=́NéÇ),Ⱥƒzo¼(uò&§TJÝuz™émä
+ÈÂHYX->G#j@æ'ºë{Öºó¬¿bœG •œþTarœƒ’Ç]á‘säÒ\£åhQC=¬˜@@sžÌv;: p3$êÖXL–î728!ö†»ÕçëÞ¥äŽ "nY÷μÀâ3I¤î)9Kaʵ©dn
+ðÔë•‹ˆEg³½æ{qæn#ïÑùè»Ûïê©wñ
+ûñ¿»Øj? >¥Gð|Br¾V~c^ùWӐXBóö®ü¬Býó$¼|êæq=ßíy×5ÐŽì:ç@äÍbâüuD~
+Y%Ùé­³Ás
+Ta68OXǹ>`¤q¦…¦h%CÕ¶Û=#¶Q„‚l1
+#¢j&Qæ¶–HÃi‚A”TÚ£y at Q=i“d¼!'Â/5ƒC¼Æ‘2¤]Àø7­è(€ÃÂBM% ÊñÐÈ68Cˆ#\|y#aǏˆa> $ÎÞÖØÕÁu­éJÕ$’hÙ¬nñ«»²ÍïFÆ“	m£iim¥¥-„FÆÒ‹‘ˆ–6–¶— D‰`XZZXZÚZA‰`X`\	5€1©¥
+B䐐 °±´¦ÂÒÂÛK
+m,,,m‘ÛKKK{Uâ¾êYfši¥–i¦ši¦ši¦ši¥)JYfši¦šiešRšlÓi`ËcL
+?c…rõ«ß^uõu®u.É5*rï}[ô—YxÁAwƒ;	Ts[é¬Ýœßbï²o;jö–WkòÇJF¸ód­o9]æù÷ííãϏ—Òw¸@ 	ð¹$7*Ê—&ñux1ˆ Vu+õÏzïÁïæ{LÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀÌLÀß·Yíì ]ˆI)Ð fµ™™™—y­fffeÞf ¦`
+f §Ÿï^·ãÖ¼{Ù ›I’Îᑆ¾UI®¾y¿:äå#Èȸó "½cwæKn4SØ‘5H™£fCuEøSÞ:á/­)ažqü`1Êήh{}ot³hG-í†G”lùU'ìù¾jg ½ø`sуÇ„åaTUÞ>ûïó8gÀB>…,¹
+A¢@>ü :÷]›àvêÉՁÑ;ƒAW•÷º÷™š®`!½þ•xŸ'œÚ1u WtQó y}eº³uœ­ü¼òõÉ·Ñs–‡AÐ1Ñ«¬Mꁳ¿¯<9ô‹Ó!Îý£½>ΰb~Xú¼N‚ûûÖ‰ò¿ÏŸ;çñ¡üæQìÐáÖ·€'!†Š.ŒaûÀ rúœùß1ÖgY÷Z”öª*ŽÏwІûë›qªÅ~ìâÉ®‹0Cì¨*§ŽH¥Ô1,
+DE
+·Á.Ü.«?/Éž÷ºM7ÃXIáÕG)ž¼:/¯¿•>Ü¿kÎdÄêwõOÈoß}˜O.êη“	‡¿zÆ;ß_’„#BC†öY5’ë¬VÊ!ðVï ƒŽZL19RáÒdÏ]õÖ~{Âë8ñ2wŠ1x4…¸UG•bl«°o~Ï0Žåà€ã­ñÜ
+È:u„1«pcY=€† njŽ^§Z´¥­Úu§dFTs gÜó‰Éu»ö±å‚àpY:Ìò—HèîÆÔ©œY08RÍ£¯hu¡Ðšp†È‰P™2¹Ã9&(ÕуA‘ÒØsWÞ·Ÿ7„àì-yq±M=¤O·ïÝûïèî˜w1óŠô<€Ið^TÅøøýõšPå !‚€Ìru1|s7›÷!sQɹùï¹_±Gã8¾doWÆ>ýô2¨_²¶I0ôê{™M­ L„
+,]0L£J׉3„6^ä‘I¬’­–ÂId¤ÄÈ‚	q(…É%‘6Üày¶’!"”
+†Æ`‚5Xñ$¿Ì“8¡bGÃåî9<Y¡cÞqÄN´
+üÄS¼tT Ò	xšNƒ`D4{±äW’ ,1ï0G
+òÌ
+†ÆK‡Pû
+’J­¶™mj„SNÉ$Ü<Ìø˜xÀq#c`U¤m,
+´%É#­&öÓ´¦•ÛNÒ»NÓM7ZtXe$  ³MÉÈ€á©ÚnÓ´®³´®·sJë8ØêÎÒ»’$Hêˆ-G:ϾÔ4d(£«çQ­o»³3óV–R˜˜Ô©žé,åèT½n©æfgØa
+ÀZ#֏ï½ôz'ÞÀnÁø˜O[à?Íñn|û~сÁï¿)÷W§ªŸC³3qÈ…ÙÎÖò§»«qÔþ£ŒÀaíi€˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ †´ ˜k@ ƒ™m¶ÛÌoé–Ûm¼Ç­  fÐ a­  fÐ a­  f˜¯ª‡6;`1%§=|ùæsÖ<E¾cÙ`T֏+He5¡Æ:ûÐ:»ëi
+,¬Eiµùf®•ÁKuèjèî^3¡Æa“"KºÝõæ:èÙZïEPÍWdFQ'Î^|çg™>jÐ&CZï^Y(D¾­ƒÊ,Õ·Ž`æ ä9Ör,ˆå%À9[W˜u€Â8»äÂ0@ÜÄÄo›7º(aFއ®¥)`¸²j¤ïÞýçw¾Ž¶¶÷£¨8ì²¥:÷&³FŠ!!BCƒ:îIup`½ûf ˜ ¼õî@öiB	¸…(@1:ŠZ¤Sfî\©“;êê–0cQ:¯*Ô…^1$nUI×^×½wzÈ.Õ/Zô0#ŠÔ*X](yå-JJðÎæ@0‘3("J*›Å#º-ð Ô^EI|—æ«&ꇪdÈãS…‰aWuŠ’'½nûë¿Qpd@ˆÝ¥ë
+ù®²†›Ju•3dLác”¡Î äz˜&’‡A=÷ƒ‡Nš]_y°@ËCš˜;Æ\”™Êâ„‚cç…ç4f«68³™Ë€ãã5&€ùçG{æ·Í×z×Ï /2)y’*Š£Ø}B‚@ÉY4YK‚»ò°ã%ØÙ—Ÿ}òëA®±°àoZÞ‡WCG“Wö€Þi(ð ë3¯¶Þé#žjð¦j˜Ö3õŠ!ŸJ!
+ø8³Ó&X8Ù)yDɳ.]j5¶z=ÏÛï4QS ¼°QÂóB›¬£™%TV8òXÞ:ÏÍ®wœH&g5HJ݉
+ÌwòîõœIč—ÓløPr܆܎CFeHCæ7Ô_›ã?gñßãÏ7žoߌ‘á¯ð_>ÅBCuùŽô›!RÌÑÑŒ†E cX_›ÎwÊß*Mü»õ}ÑXÜ×W2`îcõ¾Ì„!}_Ý	?š;úpŒ<ûùoïÒ¾÷óÁ² Ãî9S&jµy®*Š£ûYÙ“s%÷ï7ç<ùX²&&f$“3|ˆˆˆ…κó0ªìqdFM4ûïΚƒ¿™cð1ðúò>ü–ŠH?MùÕ|Â,”Hç­:züè7b×ÄÝÓ×ßw£oÍôü( >Þ8¡ùm…(Èà!ØþxãëççM»ñæ~  Á      `€  ‚  0@   Á      `€  ‚  0@   Á      `ôÛm¶ñ¿´Ûm¶ñ    `€  ‚  0ýMCËU$û{óÞkäù£”Wn~÷ª.ÁU#l€›ï÷üþßÄGóúEåý¿|S¨÷®Þübük÷èý“'õß}¾
+ß(,ý•-Ãæ^¯oöŸ·êÏÅñþ‘€Ý_ìæÄýübGßÞ‡÷—0<ó|üà ?>Úçèü4EÝù_Ì_àï~;€óÏÛDÀ„|ߏÙIcóêÿ
+]¾z·ð¹ùÖ¾j½Åë ¿9’³ø:0BÝ–B?¸{ÏÆ§‘Í'ÚύJ¾Ä{N›×">û_ƒ<‰‰Ü
+́ðæôD¬LŸ=1Ᾱϝ|ùŸ5ÞÏÞõzªýGãóÍø¿w¾È>zý¤?/êDÿ¹  c¢ùÏ™ô÷£ µfüýhÖù×Âîþº•†Ïª©3“ÛÆ=ùŽïÍ‚çO›ùÕ÷7Cûk|˜NzW™ô
+;Çïu׊¢¨ç>ž,,™¾÷ÞùÎÿ6·dLLÌM.‘ÀížÌ
+í\oãXdj»ù¯1þI³ü_Ò€½øO}qÞ(L7†
+:ϾõÓ‘a£·W»Ö¹Íäw\»›9$DDççñãc~l                                                      m¶ÛmüÛm¶Û             ñ'Î{5ºÝù‹ÇéçZ=ô¬þ2ëY÷¬fî`÷ڝóWÑê>ñþ}÷o©ÿ_~q½ýx<óоûØrø ³ÏkyÍùZ祐Œ!V+YáçZχP|Îϵ(;
+iEö#ïµ>uvNÅûqpû™®çš™ÆÌžÃ}ïÔ[óï@zs¿ù½eڝc ÖJ
+ï®]­oÊÇ»ï¯h ËÙî}êkÛŒö·Îβ1Z‡}Öw~ÕõxƒuîD}öÎi\$¾ú>ßÑùÑ?Ž·ùHCõ"w~õùó˜üz08kSDÄÔku®÷ê¯l1œK8/‡i
+ïÝùû>óÏ/=w›òüúkùýŸß¤x<×xïYë޽׺ùåLy<‚Õ"ªoZóÍ(;x3á’„!|r\9ì£3™Ï{¼n~g§Pk•_Œžâ>úù
+F/ÄÏÆãóý•§ñ=üÑÆŸ5£²3îð| Ìÿž$‡ûõSõªÁ·¶ö´µoÚtðê©L;ûžÞÕ%×vqÿ½ííÅ	Eï½Ö<÷nÎYÓ	иpþþÐÀÀ,€×p âwo’¬Å‡!•ƒ£+ p&Œ_ðÆŒXfX0bÁƒV¬ÈÊ@{
+®œÊ¯þ þwía3)ßP5ÿ_¥¯¬¶éWª¯‹Wù?ý    ?Ùc¯@rˆeÏþ€h›ñ ÀOO. Ì€~ n+2GÔÀC§ˆ
+þ2;dtþ 7é€ýÞ]pMçïójûþð   ï´øvÖìfUê÷Èÿ˜ªÍ*´¯„¬Rb“WœªüØeûÙ—ý×n3
+×.]¸Ã àݸÍÜ:]»$Àà®Ü›®Ýº¶ë·nº`Wn$áÛ·]30.+·ãuw30+·8Ý]tÌÈãvè!Ë·næfvàÃ⻘q]¸3â»pfÆ»pfíÁ˜·`\WnÃuvãuµ®î»˜·I##M5#B}ÁW «W)••[mÕæšieši¦™™4³M4ÓJi¦šSJSM,³M4ÓM4ÓM4Ò”4Ò•Õ¶Ý]M4²Í4ÓLÉ,³M4Ò”³M4¦”¦šYfši¦ši¦ši¥(i¥+ÛUí[mùx(ÀŒŒ!?@«W@ŠÀUîEt+x•^ª¥Rÿ­R©xÑv$™Uü¥U{НB?Uè*¼
+«÷ʯç*²¥Ùø…W´Úó¤l¥À€PUs‡"«Ö
+Ð’úÅR©{À9•\áÂ4•=à<@|¢«´ªØt%Oz5ãªU."«ãN@w} >«À@½—Œ3U/Ê`x±Sî—`†^ ªõJr«‰W(À‡ 
+­T8ó ùWW¿€ŠY…f-ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠÙ+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶JØ­ŠØ­ŠØ­ŠØ­’¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+b¶+d­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­ŠØ­¾êÛe²Š|V]’««ë™™˜°Æa…W^‚«J¯¡àV&èUaUÞU`òÀ*¾Nr‘UȪí•)Ì©䪥€;W¨ª÷C‚«
+¯¤“ÛŠ¥€<@s€<
+®eW:Iø¼90–&2¦#; }eaUÄ4ªì*»
+®ÑU¤ªù@t‡Ò«°ªú=WÏ—×ÖÓ-ÂÞ‘UÙÁUå Á(¯šKJó£è*¼À?ìÏØK‚«ë ð‡yUßB«Â©T¼ßTªÒ«ØUs*»@qðDª]òø1'"«8€r*¸ç‰T°hzНhʯœù˜ùyUêøê¶ÅV	S‚˜Uq	Èå*³x‘ïªU,”0ÅTª]WAT÷ äR‚=V¾uC at pUp*šëúÅSó*•K˜ª{€aUw•^Ø•K´U}piUøÈòÃç*½«¸—ðéUòU*–
+¬*½ 6˜JžNJ÷#Ìð£Î¬=ðúˆk j7´]¾(åè¨*¼@<à0*Iù¨øÅW´ªøÅWt3ãªU.â«©*{J¬
+¬%L*¹
+¦^«Óx×iJ= ;Àz€yeAYEü7”ªà©î%Lϼ± 42T茇?K›À Ur¤¢¸ç‡çU*–£è*¹
+¯´P²ƒ¼ªÂ¤:! 9M‚%w•_0^eVrCËI?)r«ÊUaUȪæUx w#¼šfèy@}j;Àa*zН	ÇŸ÷ÂÌ`1€U%RU4ªiTÙT•301”“á éTª_À¡J>"«ØRÒñڏ8ªóK°]
+Qæ…W2«åò€v€ùJ«‘U…W¢PÒ«ÀªûIU|0ñ_AÊ®â«ÜOaUàU{J¯gDpUyÊ®à%W˜ªø‚«ÜRŽ¥WB«½åWS³Ó@v„‘;Â)hªÂ«­R©háà`ªÈ}@
+¯)*u êJYUú#Ȉz‚)w æU^ ;ʯȏ€ªØu*°UxÈ>ØpUp%J«ãG—‚«ÞUzÕ+À¬LÁUÅR©uÈ€fgóU,©}Ê¥RÅtÄŸÖ\X
+¯ÈŽêJ+³¼ªõ]…VН@òªò€åиªõ•\¡ÊíªU.Øwö	T½ÅWãá©rGIüܪø<!ô€È¸̪í‚«Qä*¼ž%W€Q*–C¶Pó ð*¼åW»©à9£J®¾%W‡0¼éB%}Œªú¼„þ:Žà%NÐE°ÈGÉÙù
+¯!Uè*¼WÀ°ªýÚ¥RùНâªU/@@ªì«ÊFCÒJ¯PªçŠÂ?2ÁUÌ•;ÿ,Ô)F£µ%RôV	T½`= ÿmÿùŠ
+É2šÊâh WÜ?ü‹œZÂ÷ÿ( ÿÿ @  <à GøeÌÁ!‘Äô    *ŸåU?zªh    4  4~¨5O=AJFLši£LL !“A“MJ§íR Ð Ð  Ð4z™   SõU         9¦FC&hÂ`4hÄ
+2d`  TQ<“òšhƒ Úš4™›SÛôAO¨þ§ï>c&‡ÒFÆL2Sá40`lSâHøÖª­UZªµ@ä5	);)¾H(X”²I!>?f$MҐLðö><kfŒÊ™PÊ.ßuÙª‰izˆ¬ZÓ»=ÔÒ¦™d]2¡®±xdՍ
+SÌò õH67)¶Û)BMÈ&mµm«mµm©$—×å…Ul#DUc ’„c#EhŠŠÔ®îéÇN:wѶ&r)ÞpO8ÞÊšêðL×r•²‹{¦¸§OX'i»J™E=Ó\S§¥7xS(×]÷ÎØcS5¡'„”$ø‚Jˆ†H+Í2?iã<=Ûm·xŽÛÊþºä_Ùz^ëםÅU«nÄ´$ò4<ÂM0(dzÕï*pé£(‰$§0“ç7>³´á¯£¦†£è	?ÈI½Ý€                  ZXDDj$–d%II¶ÛmÄØ6Îp	48páÃ9Îsœç9ÎsœçÞ	éM:îóc®9k³@“\R¬U‹b¢$F|±2F$$Gž’¬«*˹ƒC1Ó‰|O“ä¶ÛaQjICt-óÆ*²<6É$–ŠÙ$&ÚäU¼k—¥)J2”Ïl…Û Jª ¢©IF‰OTyKk$ǯÖgRC×EÆ
+Ms6¸Ú^X^Z4Ï-tٝ5㝭–­__4ö`“ƒ˜€Ã°à "P ³ùõ}¯Ö½5[k.¨¶¨¨‚ÐaÑly2ê‹j‚ ´cC4[Lº¢Ú ˆ-ÐÍÇ“.¨¶¨".2¢€›Àf ™RNà’‘L½&¦ÄÁ¡à|&Ÿ)'‹‡«ÉϏéç¾—4¶ÛVÛj     æ:IºI³ÔÅÁ/¼8d®7\,¶jÐb›ÑŠB­”ZÖ–Tœ©5Ø$ùBM·ÑÏ}paÃM÷µm«e°¶ØsåZ·/Råz³9
+Øí0rG<6Ê.pÛM³ÂÖÁ²$ð`[i&æÅÂI’KBMA33rI…$¸0Fh³\ëbid–Û->“¸92å¯+ôâÕ›°lf	)«ò#™Žy†Öd8lkÔ“i’íÀ›r×—1q”tÙm·„I¦ºìÂM^_XIÌ“ &¦ÜvÇ ’´‹,ÓÙN=—:µ`¸ÓIc]»&¶Ì¬ol­­»Ù&L´ÎKŠÔ$¯ƒhÌhiû‰ÃŸa'>PI¼I‚h+` @úìžRH¬ŠÈª¡¡HºÛm¸1‹m·ü>ã@àh}ç€Iô„›ŽÃî9Ÿi÷Ÿ€þä?(}B? “ÒxÐНBOÈ;‡º{Ø6™©’$ÁƒÐ)A'ç)$r)ÔÐȧ‰¹¡MÈ`h`†Á&ÃÐdèu)ÄyÆM†	às2=„žD=fÁ'#RŽà“ÚS¸às	748„øêMí")ša'3Új5Èvƒñ„™&§P“qÐð;ºx„”S¡(“©±©Ôt:“´ÔJ”Ðv›âr)‰¨q"OÌ{†MJCrØÁ¹Ì¦OAâN†¡%#ß={ã¼BzNò”â`اƒÌæy¥?AÌäyqMN¤àj)àh49RwJnvš¢IJw&BO°$ÀIñCBƒR$æv››æÁ&BNó€$ï	8“s©“´ÔäR49žIö”ð58
+îxžÐ“´ž£´v”džr	=„Ÿ"ü]ÉáBA!Œ_D
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,77 @@
+Machine (P#0 total=41943040KB DMIBoardVendor="TYAN Computer Corp" DMIBoardName="S4881 " DMIBoardVersion=S4881 DMIBoardAssetTag= Backend=Linux LinuxCgroup=/dummy)
+  NUMANode L#0 (P#0)
+    Socket L#0 (P#0 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#0 (size=1024KB linesize=64 ways=16)
+        L1Cache L#0 (size=64KB linesize=64 ways=2)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+      L2Cache L#1 (size=1024KB linesize=64 ways=16)
+        L1Cache L#1 (size=64KB linesize=64 ways=2)
+          Core L#1 (P#1)
+            PU L#1 (P#1)
+  NUMANode L#1 (P#1 local=8388608KB total=8388608KB)
+    Socket L#1 (P#1 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#2 (size=1024KB linesize=64 ways=16)
+        L1Cache L#2 (size=64KB linesize=64 ways=2)
+          Core L#2 (P#0)
+            PU L#2 (P#2)
+      L2Cache L#3 (size=1024KB linesize=64 ways=16)
+        L1Cache L#3 (size=64KB linesize=64 ways=2)
+          Core L#3 (P#1)
+            PU L#3 (P#3)
+  NUMANode L#2 (P#2 local=8388608KB total=8388608KB)
+    Socket L#2 (P#2 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#4 (size=1024KB linesize=64 ways=16)
+        L1Cache L#4 (size=64KB linesize=64 ways=2)
+          Core L#4 (P#1)
+            PU L#4 (P#5)
+  NUMANode L#3 (P#3 local=8388608KB total=8388608KB)
+    Socket L#3 (P#3 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#5 (size=1024KB linesize=64 ways=16)
+        L1Cache L#5 (size=64KB linesize=64 ways=2)
+          Core L#5 (P#0)
+            PU L#5 (P#6)
+  NUMANode L#4 (P#4 local=8388608KB total=8388608KB)
+  NUMANode L#5 (P#5 local=8388608KB total=8388608KB)
+  NUMANode L#6 (P#6)
+    Socket L#4 (P#6 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#6 (size=1024KB linesize=64 ways=16)
+        L1Cache L#6 (size=64KB linesize=64 ways=2)
+          Core L#6 (P#0)
+            PU L#6 (P#12)
+      L2Cache L#7 (size=1024KB linesize=64 ways=16)
+        L1Cache L#7 (size=64KB linesize=64 ways=2)
+          Core L#7 (P#1)
+            PU L#7 (P#13)
+  NUMANode L#7 (P#7)
+    Socket L#5 (P#7 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#8 (size=1024KB linesize=64 ways=16)
+        L1Cache L#8 (size=64KB linesize=64 ways=2)
+          Core L#8 (P#0)
+            PU L#8 (P#14)
+      L2Cache L#9 (size=1024KB linesize=64 ways=16)
+        L1Cache L#9 (size=64KB linesize=64 ways=2)
+          Core L#9 (P#1)
+            PU L#9 (P#15)
+depth 0:	1 Machine (type #1)
+ depth 1:	8 NUMANodes (type #2)
+  depth 2:	6 Sockets (type #3)
+   depth 3:	10 Caches (type #4)
+    depth 4:	10 Caches (type #4)
+     depth 5:	10 Cores (type #5)
+      depth 6:	10 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1     2     3     4     5     6     7
+      0 1.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000
+      1 2.000 1.000 2.000 2.000 2.000 2.000 2.000 2.000
+      2 2.000 2.000 1.000 2.000 2.000 2.000 2.000 2.000
+      3 2.000 2.000 2.000 1.000 2.000 2.000 2.000 2.000
+      4 2.000 2.000 2.000 2.000 1.000 2.000 2.000 2.000
+      5 2.000 2.000 2.000 2.000 2.000 1.000 2.000 2.000
+      6 2.000 2.000 2.000 2.000 2.000 2.000 1.000 2.000
+      7 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.000
+6 processors not represented in topology: 0x00000f90
+1 processors offline: 0x00000010
+5 processors online but not allowed: 0x00000f80
+1 processors allowed but not online: 0x00000010
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,68 @@
+BZh91AY&SYþ폺 {ÿ§ÿÿ¿çóïÿúýïÞ ÿïÿð% ! "/ø`,>Núú p  ð¼ô=Ï[5¯C'Àè}åß`³ÈúÒð¼@<8 $Îõ½qS{»Ùî2·³¯Z.¹Û´g»Ús^ì  $       þªªgÿúª¨50~¨2`  É‚` À   †§‘ŠQSÊšš~¨Äi &Ðh  CL@Ó&€ 4?TmD SÔò€=DÈÂ0 `0 Ó 
+Ÿª)†©ú¦™             
+HMO)&ýMzšPzA‘¦€£Ê<£ÔzS at zOP  Ô
+‘ @#M4›OMš6„=L€¨ i¡¡µM¤=2á ¤ýÐä ø†øÄ%1”%ù0t+€c,'¤ }ŒCaX@ù!:ßú‚á^ÀÐZn0-†RÓõë~¿ì;hl¶Ûm¶þô?ôw§ü+¯ºûð=1aTôTÍyV*bÚ"*J‹* | sÈ€©€
+˜€-@(Â(ýšª¢!¿ŸžyùöôúuNÞ
+j´	É­i„Ay˜¨—®¨ÚµÝÚ5F—z£®f#âTƒ*Që֡ɶq B«	MA+Òb„¤ Å)¼¡)1BJè¸33PJèohÔbYdnI$–ÛnÉ$“24ãPÚ­ªt§l’7d’HÜ3Ún†á¸©«·r+µnœÃ0Üî­Ûq7ŒkÔ‰Õ&Ö(‚(a†(¶Š(¢Š7m‰#Y,™M&	„Âi2šM&“I¤ÒE0Ã1E´QET­¸•‰i³UwcnÉ$„ÆÛnÉ$‡KK%nÙ$‘BqîšnÓ‘ìÛ[m´q§§w6±¥0¦¤/UÆpëgÖpígÖpÑ¥iDVQD…e‘ÏG<F¹çÎwçž„TëB§"¦¥C•Eàs®zë[pm¦9ôcÈé-`̳ 
+	¦NaÙ(N&U☡‚Ð`™EÄÌÄDR„á‘E4ÕRµI”&R#Ebbààbà☡)+„M4+N)Š-8âà㋃Ž.)ŠŠb†#Eb˜¡ˆÑI÷
+ñÉ]8.—š87­fe têI‘V”ÆT’Š¥9Xe'1EÎW™­ffffQºQ™€œ ê(¢ŠŒÍ(s‹‚â$ÑETJœ‹§`1]‡66âíÐ4¼EÆUu–³33(èS”\
+ETtÀî8)4QEDÈu£jy·-@
+åï" 	*ŸŒ *cЍ+€`C@A,ÀHA2Õ³
+EUH@«@T…@€1
+ {*ÖDùƒ¼>Að
+d{Ô6žÖ.^áw캪ªªùÂô#31„\»C‰‹—R½ƒPÄÅUU†ò
+hyüï_Ÿ/u|hy8XøOjö—Zð~;ÔrЮðjò ù¾ŸïW5|ú€Ö³àÜ v]Ø s™7êkv]Ø  ­Ùwf—eÝœ‹³¾€&/{Í3(äp÷
+ Ä¶¤Î[Re$ËÓ*ch—{2±EQE6Ý^ÛÙø¶MuZÑs\¬QrЄi™1ËÚ˜„lÙ2b—V„pi“Œ¹` ËàbÖ…²m½´KÍšjص¢Z†(¢d÷®˜QD™Í:QDäß%œ²-õ«ÌÉž!{ÉÑŒŽdŽdŽdŽdŽdŽdŽ]
+{WGIËíràx†;ƒ!ñ¸‚5UUUû ° C7ÞÏOãÓÓ¶÷È ZMñçÆfgžùòøS®Ãm6ã3+m±µé}Cæ~ÒM¸Úï}øé¾Ûm¶Ûmµ†Ûm¶Úm·>œqÇqð2	 J¢ŽBh *Bªà —¯ìðĈ{tÔJ‚¾Bý'üñßSÆï­wù\ï¯
+ç>¿Ù½xø ç ØºF8SÜÖ¼=®2׼ސú*C2EáC[ݯF˜lV”'”Ê„¯©:ÛE¶,ë)ÙÉ•I	-²GˆbLR#[å¿=3¾/ú]c—®·{-ßF"Ûc®rRN+:ãÔ‹ɽ1[téý°Àv’$ÜÚ#ŠUsîÇ»Ÿ.9éÁ\¿¿¿Ãå¾o¿€p£‚1]*­åcg¯¸ 7` s<úúùõ5lvø ìïñý˜ z>|ùóçÏŸp ;vÞÞܲ;m¶Ûm¶Ûm“eº d ½í—¶W$¶»e´æG-;›%û@ ïeì½ý` NÇojͲÑ+²Úq·-¶Ûo° =à x   r ðìž@°õþ Ð;ÃQ-’H×mš“yN¡RqU.ª¥Àc3TEINj™2¨J›rÐ¥¹˜š"¤n]f—Y¼^mW™œ^il泆gãœ8prãõ‡Ô¨}aüaâÐsÐ
+äPd:†Á¸`50°à d'Ù‘$úCÔ.I;§¥HôOtõ—,ù±1¢¥U ’>É‘¨l0m$Øv   0      }jIp„•UsiÍ—61Œcµ­kcušqðäÝÍËп›éß*…–&&a†UVa€T UPU@U T UPU@U T UPU@U T UPU@U T UPU@U T UPU@U T UPU@U T UPeq‘¦@  ƒ      ÆÊHŸ9!T#ª΄UçB*„oB*„oB*„u¡B:Њ©áƺë¯q¶Ûm¶ÛmÏÇÆ=ßM!:õëׯ^½wO¹îø I:tª®—v @Û Ø  
+¶Ûm·wAR¤›¤’Nœ¸wnË 5•v 
+¶Ø¡7½UMñËË–œºêõ   0      {’JÖ\jõŒ<         0h  0 ± !ƒm¶ÛbŒÊªªªªÁ5º€Šr o¾þ=¼wÞ«
+ª *¨ ª ª€
+ª *«·nݹ‡°à˜&)UUVeUT ¹Q¿•ª•R¤ÍS‹k8§^š8£+pŒfÐ)Ùt@Ã&à@o7‚L„¥™¶üYÆåÍcÎü^¿*§[
+€AÀªÛ遾µÒï¥YâÓ–ï«x¹p&oë }>õUUUÜDÛŽú@ÍvﳩC$Ê„ECRÏ«yZˆ};Ƈ‰JB–’š³n·ÑêɼƒØê~ñ»ø¿}…ôÆÖè[«bÝî7rE%•Ú9—œ¦œzÝI'S$œÖr`       d’eD’ P ZªªªÀÕõBY°òU=o&¾c–Àï'-eÎûæ¨UTv·råæåÊØðH€©)ïïî‰î¸þ«õ”ÅÅÅ­ïîº:@éN‡ó>@¾î"þ»îöên»ˆ{ç</ û§*Óªl¦ˆÈ~)L܇âbLAýÔÀj›9N–N•'õ;ýcüHÚGžÛp|9Kqdät'gC¡ö¾«ø¹úOi?lm¾{Bl={Cwæy>jh|ôºPø~†Ééڐ>¿Åñ~ž{›zvúþbyÑD>”!)K(¨§û"
+"„»V“éz9ŽÛ·pŸLBIþ†d
+e.-¶q„K]6gQ‘qœ<c€\´&”.kˆÍ
+Š	IŒä;C)2ªLD!F HæØ*œm¾æhÊNúí®³‘ ÍmDqbÃ|e𐆸´@ßæ•ToZgË•Ó9Îp  õ%}¨ã<=©@‰3¤pyºbZˆ2&ø;ÝG”’< ï…/–èòañÉB,ä='E9JTˆp!la²šÐE!ð¾Ê\'32m8	Ý»cÖD˜ÑW~ßùKžÒŽâDë?Åsé×:cCI‰Æß—ÆÙ²Jœ<=Ü’w›6€      ’I•H‰$̹$’ì .I"øÛ$qøìN·¥?l9þÉнêÊ¥ý£ö}ÇŽÛ_”†A¶{vñîïI!/6’úãÒïÃicLßv—8ÏZbbÞG¤ìqšâË~}ò¢DG/бœ\êHˆß\.f®™±sŒV8®&4ëlL_W`u8qáËm'× ŽZ
+»
+u®’uîÇ:ÛŽ—Êi¾ö˜£¾u8gˆFøÞÒDEߍrxôÓlô9os\ªð‘b£¡»¦üfPŽ<7¾jªî¾1ÇŠ	"œb7¸»×	$n³'ÑhqU×ç9Š¢ãQÁ'š„¶Î…Œ¶ÏZ•Šš|,d)™ûâ‰Ç‰ŽJÒûð"÷¤•Nž¡|$• &suJ눜7Ä冯Çë-Wî×Úþ÷÷þ¤~]3%þœý#AŠ«Ÿ*¬Åk~«$öœÙíC»¤(nÜÊ
+õd9³¹ƒ«I!œE
+Úõ¢ƒ}Y'Nlî`méÕ‡¨¡›^´Po«$§6w06ôQAízÑA¾¬’œÙÜÀÛÒB=EµëEú²JsgsoJDõ×­êÉ)͝Ì
+½1aê(FÞ´Po«$§6w06ô¥Î¢ƒÛƒYA¾¬’œÙÜÁÕ¤ÕÌ…Þ
+eú²NœÙÜÁÕ¤(nÜÊ
+õd9³¹ƒ«I &Pݸ5”êÉ:sgsV’@L¡»pk(7Õ’tæÎæ­$€™CvàÖPo«$é͝ÌZI2†íÁ¬ ßVIÓ›;˜:´–¹ˆ¡»pk(7Õ’tæÎæ­%ïµt=œ?X£íúÞ3ÿ-¼>׍¸ßY<ùŠ¡s÷—¶S:ZU¬-(½­=?Hãù$5ԾÙ9SÍx¹Ôª·U–"Q¦Ië.BJzзW]¡­_^¿U¦~£¾¾;‰ðµ2K†8ðªunñM‚ÀDŠ„£9jÙh2Œ·y÷ã€3Ä«™d;’'@]k»–&wã^yÇLµ#ï†Ýý·Æ1Ë7™œeGI°}ðß<ªªªª¨      «@H 
+k 2ªª« “’ä·Ý]oWWc#zVåT*B¨¨PäoäQÉß÷wïÏ‹¶-wÚ§uÌÖ»ãM¯8F1uP›§4•¡*ª›º™»©M,œ4Csšx²¡Íê1‰vА։u¦•Œº¦Úô›fý­¦ úGšë1[w ŽpÖ“ÌQ¦¥
+i¸öç|íˆÀüuß[=³­žÆ8`Æ)·ž:„
+Vac‰PŠÖкҙµ†­3§LAá¿.Ûí¿ôCxf۝øán¹ÚåAá•’Ñ*¢F˜çtåIiÁ§f¸¼g\ZôEÍq„×3,ñ¢I–YÂÃ-k-r¢"è/{Î8žã5ÜûêQ³äy釔ªÄ»=>aÁ=ÄŠ)ÝRfnÁ˜vЃÝAÍo™˜ns¶£Žx§\c¦½*&Ò)£ÔwŸ~Qè•ÛNþAÏ®“ZW>|—¶ÛïÆ*ªª¨      ª±s*ªª« âëÃì€ó{lpð—Òýü¼¸˜âc¡[F‡5HkI­$ˆMlD¸Üë2/n/­¦.•¡TÄĐF)…®Ó:Mq™²ÍöðÕ{è6÷ã„+ËÂæ³š÷Ø/¥QT•ÖÕ½¹ç®-ÅTâ_µczLLK”k(™™–Xµä‘¶fkðcQ§01ïÂ! Çc\TaÍ9ÛV»ríË8ã‚¢&1„skœÚ29 ‰ÖôË-ö»ÒH‡˜kŠî®\q¼ÍÜåÎI×9bðôk“mŠíßÃ]÷ÃjzBIНŽqáVXJ­«¹O]1Vk|ç<’I_‘íkêå¨Œã9diưÝÜ™D‹pÆAÍì͵¾¸¹9Û~hçžiת	kØ`•!©RNHHý€ìȆõ*¤J÷¥À¾™êèß3J»å+¦ûuà4ÞS·kc4þÏ©›=º|„O›¯EUU      ‹™UUU\›½ü.<“…PØ7ñß~¾§¬måÏ£Ž’¹.klLrg]smXž>í:8ŒoO§N†{wÓ­:Ó­8αš;÷ÐômNú5§3
+i'iÚòÎ Žgh‘ÂxåŽxÃ.3Ž4æÚ õó
+d`ð
+"Bšaf:vçgÃWcúº„Np
+ at Z©• BU$…Q…Z2›
+ú$K´AkôÌÛµÆüRëWK§Ešë¢÷»©@4u®úðßk“¼o¬î÷1×|à†ãZ]LOQ–\¼¼é8ιvëmN¤4o× ŽsükՏ,A¸6
+<îH“¦3{U:sߣ;dwr.>E3Zqfn·†·‹ˆDiڐ—+7MtÓJ™×’$ÚüÈjžÅG½7¾{wa$¼šI#/‰wÃ/~É*s9€       ]Uتª«`ñõ}“3¬;'t
+¶5yÔÍhž7±»Šâg1­©dˆŽÀǼkx&s0ö#uù€ãÝo@‚®zÁ¾.ø³—¬Æu·9ҝ¸â9̱Qv^6 ßÑÈŸ;¯„a:p!;¾Žù#¯£Nšg»ôERñÅÁõÛ×áW}H~F
+C2ækÎoÀY1óy€¸]("FJy¤žpìàŒôà9âû`¼q¯lg¼õÔŽA»ŸtÅÝK¥1Ÿ.“O.RP½¶©k¿sr{úÉ6ÆNº!÷ÌMDAY”Âíf«~˜EªsxÌáÙ
+ge{OnÜíÛ´nö³£ läí²¼T…ÒFúf¶ÅUïLLéØ'¶àÓ–û¹‘ˏJ]AU›½q}Éjz\'@usšuïÚl•RõÚñr¹ö«&ýû3YªTkµ®]âY5“ÉÂk)‰”2›Ë¤ÛG|gÎÞ«[K’êQ¹_	
+qŒ×-Ì¥´ÝSVn×´ËXu
+ÁÁ’)ÉÁ¼™ Ýh$ë Z bõ^þ²z&®ýùò¬Lo㦍]|¶ë§zê  ó„¯Ö`'ÝÒ•À:|,ŒŒo
+ߞü'œ4‹7”ZÒ0pú¯O/9H³KÜC˜u†ìej4$q€`7¸éßqSwƒ×T\wk‚£6ôsã¶ÑÞ<3£;Ý5{Fšs¤“[æËåÏ—]¸åºr½{iÛÌð;¦ÛöÆ:v¼Þ•ʱ×^ËëÓæ
+5vÍâîóuXTºÇYaÌG¸éÏ‹^ÿîïç]áã5sãÃÄÆVÍo×®ÜvÒ§JÓŽ{iÎMƒ;5qË;W¯ž<›íB±ðۍ:{ÐI}.z'>Ùå¿Z¾¸×…Ä”,¶q•¯uòø¾VV
+ùÕf¬®ë:ÞyÓ—M·ÚÍó¶÷ûÃÕ?|T?w›ý…¦—rêM€ eÃJ«ª¸"(Ÿ(êùc
+c‹ìŸ8ä €Ÿ:?x=áù¨„×ÈæDþ0|ábcþâÇçC,	¨PÔ=€ÎùñÂUÒPž)úuJ¨¡,?Lp°þСÔlÔxŽÃ!¸ÀÀØ9üÐn¿ô	•‚zý°ÿÀùƒl( Ø?ë }>ÀNAÀJaa9éÈ]¸ª¥UE5‚X‚|øÍnPÐ((ž¡…!,68&wŒ„ ;ƒÏÔt¨h¿(øÁÀŽ¡<Áî Ü('u	ð
+­‘Ê0Ð5$öÁA󌠒?!ü á)Ý'X'XhÄÁ<‡Çø‚|øOŠ	#¸4‚9þááàœÃ@û¨$üõçI uƒ€äIA€…ï…Ø¤„ vØL ¾ðâNðä	aA,4ïûÐAB* JA)¤JA)¤JA)¤JA(€K’4£õI¾`Ý>å*MµlÁ:  à*!Ü‚HÀ}UV ¥#`¨„nDHÜJ”Ÿ¨Aõ‡vOÈâJ%%%DR) 5’|êwd%1¼#$Á¨`,> î
+èx(8Å)`’R€   a<E~K.IÈ\7Á‘aÀs	@ ”
+ÙÈ<ƒíõ@Nt…a;®Q!#é¨x#`›A®‡xÁÜÛíÃî»	š
+I°y€w ûà~â ¦Ÿˆ*‚d`Ä¢A;&€RHˆ{à}—°NÁA> ôhXp0Û0{¨|âd’	#žôE‡(7 PLà>O z‰š†Á€u€œÁ/!¸NHF`Ÿ‘€n
+ÃX(¢X¢Š(¢0ÄplÔM³0üx‡Þƒ¸;²‚Hä	%A&GƒŒƒ¥ò„Ü'}pÐ>౨‘ê=ÁðA¸Op8	aš	Èæ=	äâ@¸DûÃÐ5
+dŽnŨè=áî	°tnañA$xA¸&áïá€÷
+>'p;€<ƒ´HHÀ¡9‰c¿˜s	*ÁÒBIy‡€Ò»ƒ€ú|“pÀî
+‡ s<§/ ûƒvv©îA$TAAüÔEÊ;mÂÇaÈ' ’TÕ"ä˜<°ƒ mÈ;âÛ~ìú˜w‡iAA\¯Ðp(sx?„=‹OaP>A.Þ!ú‚<∥TEQPŠzƒÈÑ‘Àn|{ÂL‡åïó‚:‡8xA¨|Á'@õ𼃠"ƒwö|ƒ¸~øÌv
+` ù	>ðw‡À,n,(<Ôƒê	ÈXu
+0<:Ð2 “F¡¾£fLûTð܇æ
+ƒŸ¸*	AIE$‰³ô†uƒ¢	#ÂÃ|Ä(0X]èXGÒA€O¬24	³°`<þ!ùµ¯v’Gê…0}‘ÜÄ‚HèÐL†üöÀOŒ
+ü±Ù‘äÂÂ<Eh
+¿lT•’-,’$b$’G§mZ„Ç]Cí¸pha˸; ’5©+€–€M0À=‚À'k	 M€Ô#¸?”Ì;äÔ~*	`È‘ï; ’29u‰	ƒPÂDHà*$$tÔPϰàç6á cÔ(Õ
+Àl;»ÈI#€¨’$vl8
+0jèXMCÌ<BPs	û¸Ièy‡Pî	è ’,ÞBXà'H6©"$ŽA÷C@üâd“A(P“ØðWèŽm:	" "§¶ |ª">¹E1QTS*Á‡è†áâžîßΘÊHHó
+h4	AÛPó	P7px‡ ’w…íÃÝAA8ð
+5°A)A4	Ð%„õH‰Á(>@•=CÀö¤ˆI?þ.äŠp¡!ýÛt
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.options	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.options	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+-p -v --of xml

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_index="0" cpuset="0x0000f06f" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffef" allowed_cpuset="0x0000f07f" nodeset="0x000000ff" complete_nodeset="0x000000ff" allowed_nodeset="0x0000003e">
+    <info name="DMIBoardVendor" value="TYAN Computer Corp"/>
+    <info name="DMIBoardName" value="S4881 "/>
+    <info name="DMIBoardVersion" value="S4881"/>
+    <info name="DMIBoardAssetTag" value=""/>
+    <info name="Backend" value="Linux"/>
+    <info name="LinuxCgroup" value="/dummy"/>
+    <distances nbobjs="8" relative_depth="1" latency_base="10.000000">
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+    </distances>
+    <object type="NUMANode" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+      <object type="Socket" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+        <info name="CPUModel" value="Dual Core AMD Opteron(tm) Processor 865"/>
+        <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+            <object type="Core" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+              <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+            <object type="Core" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+              <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="8589934592">
+      <object type="Socket" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <info name="CPUModel" value="Dual Core AMD Opteron(tm) Processor 865"/>
+        <object type="Cache" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+            <object type="Core" os_index="0" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+            <object type="Core" os_index="1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="2" cpuset="0x00000020" complete_cpuset="0x00000030" online_cpuset="0x00000020" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="8589934592">
+      <object type="Socket" os_index="2" cpuset="0x00000020" complete_cpuset="0x00000030" online_cpuset="0x00000020" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <info name="CPUModel" value="Dual Core AMD Opteron(tm) Processor 865"/>
+        <object type="Cache" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+            <object type="Core" os_index="1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+              <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="3" cpuset="0x00000040" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="8589934592">
+      <object type="Socket" os_index="3" cpuset="0x00000040" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <info name="CPUModel" value="Dual Core AMD Opteron(tm) Processor 865"/>
+        <object type="Cache" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+            <object type="Core" os_index="0" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+              <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="4" cpuset="0x0" complete_cpuset="0x00000300" online_cpuset="0x00000300" allowed_cpuset="0x0" nodeset="0x00000010" complete_nodeset="0x00000010" allowed_nodeset="0x00000010" local_memory="8589934592"/>
+    <object type="NUMANode" os_index="5" cpuset="0x0" complete_cpuset="0x00000c00" online_cpuset="0x00000c00" allowed_cpuset="0x0" nodeset="0x00000020" complete_nodeset="0x00000020" allowed_nodeset="0x00000020" local_memory="8589934592"/>
+    <object type="NUMANode" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+      <object type="Socket" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+        <info name="CPUModel" value="Dual Core AMD Opteron(tm) Processor 865"/>
+        <object type="Cache" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+            <object type="Core" os_index="0" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+              <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+            <object type="Core" os_index="1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+              <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+      <object type="Socket" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+        <info name="CPUModel" value="Dual Core AMD Opteron(tm) Processor 865"/>
+        <object type="Cache" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+            <object type="Core" os_index="0" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+              <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+            <object type="Core" os_index="1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+              <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets.xml.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+16amd64-8n2c-cpusets.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.options	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.options	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+- -v --whole-system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,102 @@
+Machine (P#0 total=67106960KB DMIBoardVendor="TYAN Computer Corp" DMIBoardName="S4881 " DMIBoardVersion=S4881 DMIBoardAssetTag= Backend=Linux LinuxCgroup=/dummy)
+  NUMANode L#0 (P#0 local=8386704KB total=8386704KB)
+    Socket L#0 (P#0 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#0 (size=1024KB linesize=64 ways=16)
+        L1Cache L#0 (size=64KB linesize=64 ways=2)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+      L2Cache L#1 (size=1024KB linesize=64 ways=16)
+        L1Cache L#1 (size=64KB linesize=64 ways=2)
+          Core L#1 (P#1)
+            PU L#1 (P#1)
+  NUMANode L#1 (P#1 local=8388608KB total=8388608KB)
+    Socket L#1 (P#1 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#2 (size=1024KB linesize=64 ways=16)
+        L1Cache L#2 (size=64KB linesize=64 ways=2)
+          Core L#2 (P#0)
+            PU L#2 (P#2)
+      L2Cache L#3 (size=1024KB linesize=64 ways=16)
+        L1Cache L#3 (size=64KB linesize=64 ways=2)
+          Core L#3 (P#1)
+            PU L#3 (P#3)
+  NUMANode L#2 (P#2 local=8388608KB total=8388608KB)
+    Socket L#2 (P#2 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#4 (size=1024KB linesize=64 ways=16)
+        L1Cache L#4 (size=64KB linesize=64 ways=2)
+          Core L#4 (P#0)
+            PU L#4 (P#4)
+      L2Cache L#5 (size=1024KB linesize=64 ways=16)
+        L1Cache L#5 (size=64KB linesize=64 ways=2)
+          Core L#5 (P#1)
+            PU L#5 (P#5)
+  NUMANode L#3 (P#3 local=8388608KB total=8388608KB)
+    Socket L#3 (P#3 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#6 (size=1024KB linesize=64 ways=16)
+        L1Cache L#6 (size=64KB linesize=64 ways=2)
+          Core L#6 (P#0)
+            PU L#6 (P#6)
+      L2Cache L#7 (size=1024KB linesize=64 ways=16)
+        L1Cache L#7 (size=64KB linesize=64 ways=2)
+          Core L#7 (P#1)
+            PU L#7 (P#7)
+  NUMANode L#4 (P#4 local=8388608KB total=8388608KB)
+    Socket L#4 (P#4 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#8 (size=1024KB linesize=64 ways=16)
+        L1Cache L#8 (size=64KB linesize=64 ways=2)
+          Core L#8 (P#0)
+            PU L#8 (P#8)
+      L2Cache L#9 (size=1024KB linesize=64 ways=16)
+        L1Cache L#9 (size=64KB linesize=64 ways=2)
+          Core L#9 (P#1)
+            PU L#9 (P#9)
+  NUMANode L#5 (P#5 local=8388608KB total=8388608KB)
+    Socket L#5 (P#5 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#10 (size=1024KB linesize=64 ways=16)
+        L1Cache L#10 (size=64KB linesize=64 ways=2)
+          Core L#10 (P#0)
+            PU L#10 (P#10)
+      L2Cache L#11 (size=1024KB linesize=64 ways=16)
+        L1Cache L#11 (size=64KB linesize=64 ways=2)
+          Core L#11 (P#1)
+            PU L#11 (P#11)
+  NUMANode L#6 (P#6 local=8388608KB total=8388608KB)
+    Socket L#6 (P#6 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#12 (size=1024KB linesize=64 ways=16)
+        L1Cache L#12 (size=64KB linesize=64 ways=2)
+          Core L#12 (P#0)
+            PU L#12 (P#12)
+      L2Cache L#13 (size=1024KB linesize=64 ways=16)
+        L1Cache L#13 (size=64KB linesize=64 ways=2)
+          Core L#13 (P#1)
+            PU L#13 (P#13)
+  NUMANode L#7 (P#7 local=8388608KB total=8388608KB)
+    Socket L#7 (P#7 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#14 (size=1024KB linesize=64 ways=16)
+        L1Cache L#14 (size=64KB linesize=64 ways=2)
+          Core L#14 (P#0)
+            PU L#14 (P#14)
+      L2Cache L#15 (size=1024KB linesize=64 ways=16)
+        L1Cache L#15 (size=64KB linesize=64 ways=2)
+          Core L#15 (P#1)
+            PU L#15 (P#15)
+depth 0:	1 Machine (type #1)
+ depth 1:	8 NUMANodes (type #2)
+  depth 2:	8 Sockets (type #3)
+   depth 3:	16 Caches (type #4)
+    depth 4:	16 Caches (type #4)
+     depth 5:	16 Cores (type #5)
+      depth 6:	16 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1     2     3     4     5     6     7
+      0 1.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000
+      1 2.000 1.000 2.000 2.000 2.000 2.000 2.000 2.000
+      2 2.000 2.000 1.000 2.000 2.000 2.000 2.000 2.000
+      3 2.000 2.000 2.000 1.000 2.000 2.000 2.000 2.000
+      4 2.000 2.000 2.000 2.000 1.000 2.000 2.000 2.000
+      5 2.000 2.000 2.000 2.000 2.000 1.000 2.000 2.000
+      6 2.000 2.000 2.000 2.000 2.000 2.000 1.000 2.000
+      7 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.000
+1 processors offline: 0x00000010
+5 processors online but not allowed: 0x00000f80
+1 processors allowed but not online: 0x00000010
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c-cpusets_noadmin.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+16amd64-8n2c-cpusets.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,99 @@
+Machine (P#0 total=67106960KB DMIBoardVendor="TYAN Computer Corp" DMIBoardName="S4881 " DMIBoardVersion=S4881 DMIBoardAssetTag= Backend=Linux)
+  NUMANode L#0 (P#0 local=8386704KB total=8386704KB)
+    Socket L#0 (P#0 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#0 (size=1024KB linesize=64 ways=16)
+        L1Cache L#0 (size=64KB linesize=64 ways=2)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+      L2Cache L#1 (size=1024KB linesize=64 ways=16)
+        L1Cache L#1 (size=64KB linesize=64 ways=2)
+          Core L#1 (P#1)
+            PU L#1 (P#1)
+  NUMANode L#1 (P#1 local=8388608KB total=8388608KB)
+    Socket L#1 (P#1 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#2 (size=1024KB linesize=64 ways=16)
+        L1Cache L#2 (size=64KB linesize=64 ways=2)
+          Core L#2 (P#0)
+            PU L#2 (P#2)
+      L2Cache L#3 (size=1024KB linesize=64 ways=16)
+        L1Cache L#3 (size=64KB linesize=64 ways=2)
+          Core L#3 (P#1)
+            PU L#3 (P#3)
+  NUMANode L#2 (P#2 local=8388608KB total=8388608KB)
+    Socket L#2 (P#2 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#4 (size=1024KB linesize=64 ways=16)
+        L1Cache L#4 (size=64KB linesize=64 ways=2)
+          Core L#4 (P#0)
+            PU L#4 (P#4)
+      L2Cache L#5 (size=1024KB linesize=64 ways=16)
+        L1Cache L#5 (size=64KB linesize=64 ways=2)
+          Core L#5 (P#1)
+            PU L#5 (P#5)
+  NUMANode L#3 (P#3 local=8388608KB total=8388608KB)
+    Socket L#3 (P#3 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#6 (size=1024KB linesize=64 ways=16)
+        L1Cache L#6 (size=64KB linesize=64 ways=2)
+          Core L#6 (P#0)
+            PU L#6 (P#6)
+      L2Cache L#7 (size=1024KB linesize=64 ways=16)
+        L1Cache L#7 (size=64KB linesize=64 ways=2)
+          Core L#7 (P#1)
+            PU L#7 (P#7)
+  NUMANode L#4 (P#4 local=8388608KB total=8388608KB)
+    Socket L#4 (P#4 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#8 (size=1024KB linesize=64 ways=16)
+        L1Cache L#8 (size=64KB linesize=64 ways=2)
+          Core L#8 (P#0)
+            PU L#8 (P#8)
+      L2Cache L#9 (size=1024KB linesize=64 ways=16)
+        L1Cache L#9 (size=64KB linesize=64 ways=2)
+          Core L#9 (P#1)
+            PU L#9 (P#9)
+  NUMANode L#5 (P#5 local=8388608KB total=8388608KB)
+    Socket L#5 (P#5 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#10 (size=1024KB linesize=64 ways=16)
+        L1Cache L#10 (size=64KB linesize=64 ways=2)
+          Core L#10 (P#0)
+            PU L#10 (P#10)
+      L2Cache L#11 (size=1024KB linesize=64 ways=16)
+        L1Cache L#11 (size=64KB linesize=64 ways=2)
+          Core L#11 (P#1)
+            PU L#11 (P#11)
+  NUMANode L#6 (P#6 local=8388608KB total=8388608KB)
+    Socket L#6 (P#6 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#12 (size=1024KB linesize=64 ways=16)
+        L1Cache L#12 (size=64KB linesize=64 ways=2)
+          Core L#12 (P#0)
+            PU L#12 (P#12)
+      L2Cache L#13 (size=1024KB linesize=64 ways=16)
+        L1Cache L#13 (size=64KB linesize=64 ways=2)
+          Core L#13 (P#1)
+            PU L#13 (P#13)
+  NUMANode L#7 (P#7 local=8388608KB total=8388608KB)
+    Socket L#7 (P#7 CPUModel="Dual Core AMD Opteron(tm) Processor 865")
+      L2Cache L#14 (size=1024KB linesize=64 ways=16)
+        L1Cache L#14 (size=64KB linesize=64 ways=2)
+          Core L#14 (P#0)
+            PU L#14 (P#14)
+      L2Cache L#15 (size=1024KB linesize=64 ways=16)
+        L1Cache L#15 (size=64KB linesize=64 ways=2)
+          Core L#15 (P#1)
+            PU L#15 (P#15)
+depth 0:	1 Machine (type #1)
+ depth 1:	8 NUMANodes (type #2)
+  depth 2:	8 Sockets (type #3)
+   depth 3:	16 Caches (type #4)
+    depth 4:	16 Caches (type #4)
+     depth 5:	16 Cores (type #5)
+      depth 6:	16 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1     2     3     4     5     6     7
+      0 1.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000
+      1 2.000 1.000 2.000 2.000 2.000 2.000 2.000 2.000
+      2 2.000 2.000 1.000 2.000 2.000 2.000 2.000 2.000
+      3 2.000 2.000 2.000 1.000 2.000 2.000 2.000 2.000
+      4 2.000 2.000 2.000 2.000 1.000 2.000 2.000 2.000
+      5 2.000 2.000 2.000 2.000 2.000 1.000 2.000 2.000
+      6 2.000 2.000 2.000 2.000 2.000 2.000 1.000 2.000
+      7 2.000 2.000 2.000 2.000 2.000 2.000 2.000 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16amd64-8n2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,82 @@
+BZh91AY&SY±ñX x¨ÿ¥ÿø½ç÷ÿüÿÞ ÿïÿð% !"/ø`+|•À ÇÈ>–÷Zè{Ï22ô8™¾ oxßBò|ûMŒBŸ^O<¯< ®ð·½Î1¼½áâ<ö^^^^÷²s›ÕÎ{½pzô  @       PSLÿýUPÿÿUUM7¨ýPL À ˜  À   €žF))5š›PÈõ=@ 42 h    €‘ú Æ¢ “Rz™   L  L  ˆ` dmAž©"hM5€€
+         "„<TýP! ÓC@€  Í 4     
+’DÈHž&©²›SÔôž¦j€òž¦é2
+MFÅŒ'ð„¤H‘ûÁ?ä¾”‡ð!R+"þQ
+8 V	ÿ ù?†àÁX ~h' MQ=؇H+Èd,š‹‹#q„²}ïéýÿÙþ§àÒ#M4ÓM?«û_·øßÇý+Ÿ¥ºÜy^ÁUôÅOë‡|$‡H‚ÁT(Íò„QJ*)QU 	„‰ï$"óïÎÞ~~{ùéŒi+A%´ju²
+ âP‚È/30‚¤QI"
+ êTƒ„™„ âTƒ*Që֡ɶq B«	MA)¡® •ЂWW«I]A+¡® •Ñpff •ѹF"ÒËcrI$„¶ÛvI$™‘§€–ÕmS¥;d‘»$’Fá˜ÓpÌ7
+Ä…M]»‘]«tæ†à'unÛ‰¼c^¤N©6±DAC1E´QEQ»lIÉdÊi0˜L&I”Òi4šM&’(a†aŠ-¢Š(¢¥mĬKMš«»vI$&6ÛvI$:ZY+vÉ$Š{†›½êÛ6ïzÛmɲf:Æ”Xš°½Wíœ;Yõœ;YÃF”m¥YDHQE…aD]¡÷ÛFúß~6E0"ŠQ¨ˆaAw Ûn	›HoJèp“[I-€	 jY$ªVÉ’ÒL–aTUTDBÙ&!
+P„-¡fÌ,“,¨IR­hÕ*„R+HFF@$VF©T(²5«FµhÖ­¥P¨ÈITª	*•B£!"n‹ëÁ5Å
+É8h¸^$75&-²@åÄ	a$•ƒº‘$$‘M׍§MiŠE&„™¨ E†¤VÐMÐ
+âBÜ(oV‹Q#!!!!$"¦âᩐ*;¹Àµy‚Û
+%Mæ)™$“RP HµM­·$Ò‚s²NRï.Kb„ƒC[´¼¢DêMÔT¨‚‚H¨T=èŠ)Z¨$’ÂÅ%!AAJ(T•(T*Бj¥± „YËi
+EUH	J€•ÂCø‚¢|ÁÔ>!ìÈ÷¨i=ì--¨ZÞ൪ªª«äȍÁ‰{¢ÒÖBáy{¥ªW¸f—ªª °d t‡¯ÉëòÃ×áaàØ7¿¬ö¯yjºIÄþ
+ç1©mÝ&ž)$ô?Nô‡§Mk_‡¨ fa™€é5ÛƒŒÃ3   3Ì6Ì30ò³Ì<™†iç9«†¯âHƒJ‘QµH¨Ö¤T]5S0™›êéJR”®Ys–oü·œpÆ#'ºR5“„o­M!ÎI¤#}榐eÄ#žÚšB5“ A¬æÓ†4äÙŒDÍo·
+ØÄLÎN1ˆÖOé…A™œÓ¥AîMô,¢ˆ/0üÜOA7 vˆÒˆÒˆÒˆÒˆÒˆÒˆÒ€k´ètyÇ‚––AîèpÈ8ƒJªªªªªª¯ñƒT¾:çÆØÛŽ5ÓMwI¾zy™™éßOGÀpøÀ €+¾o<fÜ©¯x >  ö|¾s—Ê—{ç¯m¶ÛP [n™i§.6Ûm¶ÛØ|ò$RBDµ!ñD‰’H~è"½2’"Ø”ññ–éS­­Êºv´é]Õ'^Ø×+åHc;kÀ,ĺÎ	7ÕçYß[6õ€ÇªdPÏm\
+èm.<ÌÃ%5‚“œ`Cn-~2äç¦Uoίmq{A½^ˆXŽay/I¦²o¯^´T½y	[ìg!¢A¥i4-+Ž0©&ÕŒƒò…ËæEƒkKÖœqû¡pé!&¦‘R«—uü¹o·,¶+b5óëÚöð×ë°6Q±®*­•ôÉŒùò1ŒÂ¹_~|÷çZ[妛—×\ó×_ßöï¾ûï¾ü€;vÞÞܲ;m¶Ûm¶Ûm“eº ( ;{Û/l®ImvËiÌŽZw6Kõ ÞËÙ{ùà ŽÞÕ›e¢We´ãn[m¶ß èƒöCÐ:x(=C°zPÌ8rãŠ^ÝÖÅb+QÝÔ»ºƒ€Bª»Ñr®áT¬J䕪J§V;¢J–â%”X¡n踳¬]‰ùCæ
+ƒÌ7åê¤:0úƒø‚ÁÞƒp䯇Ôa j
+Ä, òû1">õA:…$x§œõ–––ž‹Ê«"DY€Âi‰%Õå·’`      $’I$Û ·€
+ÝøüøûñÛm­¶Ý¾Ÿgéð{sz\æ-C!šÅ‹K,0Ã0ª¬0à *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ Æ1Œcm¶Û‹{ï7    @   m¶ÛgŽ øª€&|eB@¤$Ê„UåB*„kB*„kB*„s¡B9Њ©×lóÏ=¶ÛM4ÓM4Ó½Í$$m¶Ûm¶Ûj›;â$ßzªÞÀ A$ "	   ¾ûï¿,“¤’IƹréÇNšÀ‰s I$@VswwyÓ——~ƒ‡	À         r¤–0¹\Îf@         D    €I$’A0€ –mm–[<v[%³‰$›ï¾<xê«<xÀª ª€
+ª *¨ ª ß}÷ß§N8—œ½%ÉfK2Ø 2\À %Žÿ6Û,²wuë˹§'=¯-â{3‘Fœk
+ÝÉ”H·a`ÁtÊ[!Û\¤‡i<Ƀƒœࣜà `p0 ÑP8÷€k.ª¬v˜lËÞvlå,Íòò“Ø[}¿@ :Ë,Û—]Y&k§]œAÉEC
+G¼ñ&!¥C´RD$YFIsưw‰¨ƒÈ¾ó§›¿‡÷‹äß\mn…º¶-Þãw$RY]¡C˜µÏ6ÛʽÕo®’O/^        jI5bI$šI$ I$ύ</ Kd¶É1黲xÍ™ÝÔîÙ‹8Ö®&š(*L6nï7l™:‡«E"žð¤„Oú ùêU«T<ÿˆ¬@pÂœ—éúßÑtâø_ ÏSK¡DØGeØ<ÝCÏ;à„È…MÜÕ	…¢8 Øu2(œXœT~=}cüšHÒGŽšl{o,šYbn8—òþÏÜõîð}€ù´J:ô¾w¥³ß³ã©ñð¸PùÞ–SÉ×P>ÿÝû7ñyyíÑq I¨§ºzäE”=m+ÕyqäÅMFïX|ç	KxÆ1¶)–%Ñ"EA}×®ûLë9˜’¥ ½BJÀT#¤
+	J Ô h 
+çlٍIƒ}`€lPC˜"	óŠªRc3}äËm¤–UËšº‰-ÊvNd4´ŽD#ÐŒª2ê<̾ 9£$ˆò’G@ßx¾ýiÒF¿:6h;¹"™­8³7[‹C[ÅÄ">©	fl6Öµí(³rT_±õ¾™Ý{>p;uα Ä Ä;öÅï­qï€=þu$’       jI5bI$šÖI$™€€«jÞRÛÛ÷ƒoÂs-áP¶Õ(G‡õÃçM2ç¡pPiŽÝ<ÁײHÛÊ™HUëß^ÜKNÂG”èmµk¶œºÀHßµ…*üÒDF·dqV¦,-mo¶S*ÙUÇ@plÓ-vÊ`EúgÀ­+zåÛ¦:N|†üXl÷z‡Û ›bc´Y9$Åí;TŒ¯ÛŒõÏ‚©¤«u‘B£‘›–zbPÀòg‰Šâï|aRÞ³
+ö›…ëç­·ç:éfŠê
+På¬#>[Ó-·ÅZe[ÔÎõUIn›Ç¢"äI,^ÞÙœ¶í¶*&¹
+Grôæ÷<?)ùÇúô°þ'ïÏþïžA]óé^
+
+ý5’{Žl÷!ÝÒH	”7n
+eú²NœÙÜÁÕ¤Î"†ízÑA¾¬“§6w06ôêÃÔPͯZ(7Õ’S›;˜zHG¨ ö½h ßVINlî`mé!¢ƒÚõ¢ƒ}Y%9³¹·¥"zŠkÖŠ
+õd”æÎæÞ˜°õ#oZ(7Õ’S›;˜zRçQAíÁ¬ ßVINlî`êÒjæBƒo²ƒ}Y'Nlî`êÒH	”7n
+eú²NœÙÜÁÕ¤(nÜÊ
+õd9³¹ƒ«I &Pݸ5”êÉ:sgsV’@L¡»pk(7Õ’tæÎæ­$€™CvàÖPo«$é͝ÌZK\ÄPݸ5”êÉ:sgsV’÷ܺΤQ÷}/3é–[x}Ïq¾6³=ÙÍÔ=ÞÕs=ÐôÕϯùcì~ ‰àø³Ë=®<ÃuuõÑ8›ÔQR“+1æíP3î’Ÿe¿1zìö}Ǐžôõ!ûÁ!™s5ç7‰àš“m9pMm5¼¥ÆÛÇcÛˆqè!Ü‘8«|ÚÞc^YòÅøÃ2>èiצºÖºí›]µ´^׉$󤓞Ý@       Ô’jÄ’"I5¬’I3 $’uíÞ‚NÎþ–ùÒ<ö[!iaG“ÃÉ'uõ²$âŠí_ok;+ºª –éfÖ£,g¯N/ ¶´²ŒÏ `\jl’¨ÙLkÖ‘™˜hªÅ—%¶Ò|hm¥YÅfl¡h,L&x@æ;£€yˆw.€Y㈾åLŒƒJ™k½ö­³‚Þ:ËÁX¬î’eHÙ`ß9¶ùÒòökƁ”$íH9T“¬ñ:mÇM	‚;QY^¸ÖÙzëzaÅÜns¶Äah"§ FB­B±¢»W®œ£T¯H¦ƒ®wËéäCg}eæ-£@'€yÎ+A^J}õàòþ1ÁÎpyð÷Ãaç¤Ƚ0LlˆLטE5
+ÁÁ’)ÉÁ¼™&èÓA'r£M&-ç"4¨‘w9”þ”£É+¦]w}·¼‘ÝÛ¿ÏLãYåë@       e¹€
+ªªß9žüZ]{J®ñã7á“ÎyÏØ¦òsß®5çÅbªéÝŽN*b&šô4/]§K~*IcÈñ¶ë˜ø¬éÈŽÒ2Ž­o4ß}VºŒßTËS@
+$÷{cŽqƒk]óxÖtv f0µ´a³4¨‡’ÓS¼Û~1Ñ^ÓÝ7âôéƒuê$1Y&.Ðcô1sš}=—Yó<è 	ðúœô¸·O©Zsž1˜Dg@§eÑ›¼Þ
+2’ZáŒJåÖDœ s€p/” èŠA’*@"h€ÔŠgÊ 7Ԑ‘Fz¨ëžÇSŒº–ø׍ûr® Nv9™.¯Úå燫ÀŠ)ã㤒I$      [˜ o%¶IŠN½þIy÷úž²iáˍ±MW–NúòÊØôóë2É)“UkÓŪ¦É,ïlÔÞC`Îv·§¨È¨‰³Àí¸Ižp"Šqȁ¬€„Xª‘*-L崙ԝ"rcË>y¦ÚíÊk|r¶Y®HZÖø¾1\Í›=‘°V0Çq&¨1W[ÕÓ"MHÒs/(Åé1 F™†.÷ªYms
+šcï­šþƒ4¼m!'³G©õ3—Ô"ÎCèNŠr”©àBØÃe5 ŠCá|”¸NfdÓVwnÕÎÎgÂÕ=剝¹oÝpµØ
+½·«[e¹äG¦´       [˜ ùÚw—Îz¶X‘á#x–©zxÞÁÖ¬‡†[bš7ª–ß(¨‰Ü á1¼¦ÆÆü[Ç“&vÝÚá©$)9@ÍUÔk7•´iW¦uWw­
+úG‡ ‰Ï4÷Î	dœ‰qó4gm²—
+Y
+–Æ="§ƒ‡6ãÆÚÂÁ^5zèáÛ,5ÅxÎ"æ)ßs¦%Úwì\ƒÏz<óÐî'ÂÔÈ.tã©Ô
+»Å4jSB(ŒåªZ‚ùç$CÆMCªh¯n—-}óé|_Ç<ÈÜ5q²ü^Ö©jRøå-$ðÔ%/«æTäCãÂpÒW9%wÄÔB#Ô¹ÞË3u‚,¡-7¡E`ŒÓ¥ ÅJ8óTé­ÛãÁƒ˜Æ‘Ö¯ \ÎÏ~là„½›¼ñqܼ¼Ö
+”L…C¼£m¶Ã:ÚµšLï[+˜R­“k¢Uô¬Ù–Îg1ˆ¶{ìóËoĉ<w½eÜ…ï¥Yãw fdç;:Êtíâ€xœlqŸÁƒ¸pÔJ×n*äÝ£•Q¹o1ê’§šiÒT蕏3V‡‹¢ç‹¨o¥MWTÖz.]³ŒÅ«jƒ‘ÝJ¤ÞöéøëÒtÙÓ~o(ÛïúáÅ89Áõ:³¥àß:~pO(§™“NàÌ;hAŽn‚ ¤´’î.uRùÐf‰=1ë'’fë¾ÛÕå÷ïË&n~sËb=sICºc+J­®ÎïD]½ÕÅ´¦3ÙçÓJvñóË6ŠŠ¨¥^;»¶âl›æöô-æíݺ¦%¡âSÍÛ VLb£˜š„Žm$1iWÄnpäŽc#BSƒi6-Uç&bµa¾¼ÊKx¸J­y7Ú£9½£F2â3¤så¸çÇ-6ßTÞÙôËŸ‰ØîškÒ÷㥱l«z¿<ú-Ϗ˜.2ÍÓ½­lZªê–«ó–B<Î9meµøwÇw^UÔ;æn[vï/…˜­yóÓn‚ÜTâ²Û–™r“@ÆŒÛo+ׯþ
+t¡WöÓl¸ôD‰<Zy'.›kÝËû/³äD àï©ç\ƒÉÜöÙÖ^ß7|I6;9S~4×KãMmøÇªÌT?Å7ã-LZÓ,›€¬†Öå¹E'þ’e½~ªYbªRÉT¯È-ìð
+	òŸ=ôP7~`Ï'óäÿã¤x.&akÂÞà\?œ?0,±aû ‹XNôûµJ¨¡,tceÃóŠÆ¡aÐ`6Âd5_ÿÂÀž¿X ù‚ö4P?îöÈ>ÀOœ&á°JA`œ²ÜZͪ©UQLà–Á¸O•ñZ„Ì2
+
+0º‘	
+°›
+’⺌°Áãê?”8¨dÿ8ö
+qÂxƒÌ9ƒP Ô'°P}¤H‘¼!f(Iîƒä0‰?9ÿ N¡)Ý'8&Ã8d˜;‚x‡ò„ù…ÃPŸH‘Ü
+	A¿íàœƒ íöê¥RDHüö§ çÁ¸I%Â5 Ì(~Øa$$e @ÎÁ.‚ÝCi:†á@°K°e×çÈ&BªU‘‘‘‘‘‘‘‘‘‘‘‘‘¸%‚Ähø†iõÒ¤Ë&¡€æIÊ
+
+‚¢"EÃ騳(2	D#T‘¨$”5)>ð/Ô?8OrQ))(Š"‘Hû#)'̧vP_HEªH0¸X>îƒç0PkzRÀ’Rp   ];Å5……¤›‹CPh
+ƒ€”
+	@È}€°ýÀ>×1Ød	ʃP¡È'@  Þ$$}sÐÌ&pop]°ZápÐ;ƒ;?X4XKX%Æ(4D‰Ð<Cpýp™n’/:T¥UEJ„ÎÀÄ tI0à>p÷	Ð('ÀAñ
+ë
+…à   {âpõ˜Ý$n'¢$H°o°2
+	p“¨™ßQ00Ð.aÀ&Áì–Àjt"áp°'²HH¸5¡œªT”ªU*•J¥, ûAÎ1‰päGx}ÁÐ;ƒ»‘#pI*	06è`POMBu jÖ,3=G˜{á¨O0lÁŠ	¸#Äy*À#¼
+Љ÷fɝ
+QÀô0š€Ü>‘#´hAƒ Ð.c/`“ 9‡Px|HH¸¡9	aאr	€*ÀâDIx‡a—plG‚jÁ˜Ü û‚ƒ6@õ‚tD‰ÈP}ôH‘CñBüp`I*
+$‰ñÒ÷
+àà4Ü<"Ö<ïâ
+ø9È9
+
+¯ä(n$ìûCÜ´÷âÖw‡ÞãE(Š¢*ˆ¢„PƒÔàžH‘#`Ô$ö	è`?G_#˜r Ì>`“€ôì
+÷ ﻯGÄ;‡ãzpP|DŸHvu`°ÔX(;¨(%Ôq`æ và&A€ö	2fæ7÷¨=Pj4^aPJ
+HB((ÑýŒàá$v°]`ï
+…Ä–["ÁH<…Á>Ð`dG@¸xüõf1^yû!K†Hî
+^D‰ò®v	ðÍ$Ph‚;
+È
+[Ý"$RZ$’G—-Y¾úÃßPØ((>¿xw"DŒ›°4ºà÷
+À, š˜G¨~¸;Ç ë&`µ»ÔÀÀ‘è(tD‰ó‰	0ºDHØ*$$p˜¡‹Pjr‚‰AÔ0¡’\4ÝÒ"HØ*$‰
+‚Áäà ýkÌ<C¼% Ÿ¤5	<ƒoæÁ;ÀP9+„°Ø'mRDI‡Ûƒõ	‚L„¡BN£pnÿÚ$HúÀàANHHÂHI!#P9=À!ÜC¼
+=Ã_	!#À3 È%Aà hAØ5“¸(.@,Tðf “Á8	`ž‰#¸%À¢BG v}I	'ÿÅÜ‘N$,|V#À
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-2m4c2t.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-2m4c2t.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-2m4c2t.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,35 @@
+System (P#0 total=2032544KB Backend=Linux) "Kerrighed"
+  Machine L#0 (P#2 local=1016272KB total=1016272KB)
+    Socket L#0 (P#1 CPUModel="Genuine Intel(R) CPU           @ 0000 @ 2.93GHz")
+      Core L#0 (P#0)
+        PU L#0 (P#16)
+        PU L#1 (P#20)
+      Core L#1 (P#1)
+        PU L#2 (P#17)
+        PU L#3 (P#21)
+      Core L#2 (P#2)
+        PU L#4 (P#18)
+        PU L#5 (P#22)
+      Core L#3 (P#3)
+        PU L#6 (P#19)
+        PU L#7 (P#23)
+  Machine L#1 (P#3 local=1016272KB total=1016272KB)
+    Socket L#1 (P#1 CPUModel="Genuine Intel(R) CPU           @ 0000 @ 2.93GHz")
+      Core L#4 (P#0)
+        PU L#8 (P#24)
+        PU L#9 (P#28)
+      Core L#5 (P#1)
+        PU L#10 (P#25)
+        PU L#11 (P#29)
+      Core L#6 (P#2)
+        PU L#12 (P#26)
+        PU L#13 (P#30)
+      Core L#7 (P#3)
+        PU L#14 (P#27)
+        PU L#15 (P#31)
+depth 0:	1 System (type #0)
+ depth 1:	2 Machines (type #1)
+  depth 2:	2 Sockets (type #3)
+   depth 3:	8 Cores (type #5)
+    depth 4:	16 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-2m4c2t.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,35 @@
+BZh91AY&SYåë· C„ÿó@gÿôï€ÿïßð `?                 di“A“&LÐLš48ÈÓ&&ƒ&L&™! 4™40hq‘¦LML˜M2C at h
+2h`Ðã#L˜š™0šd†€ÐdÐÀ	 1ÆF™142a4È
+ 4É¡€@`© ‚4ž‘OI½CHhLSO&§£)Á÷¿í%¾’ÿSÒº­O|zá¤ú’SR¼‚OvžïÁðÅñðù.ËŠHÖHÒ-¥˜¶oYΖÒú±kùYRª’{R’p,¨JIBJH²¢Š•*Ie!h¤‡ðê
+üÁC°P? 4žàÈ4bè±bË,±bÏæ”]bÅ–,YbÅ’B…Pyƒù‚à 4€õ‚€èóýK[ô^¤“¤²IˆT©Q#ÐÒ\À.9D¥zÁ‘ì `À©@¼Ñv[5g,²Ë-a°(±©“SCSbóP9€1:ÄšÍ%Ô
+\Øqr{Z¹°ÕÍ«
+\uUÙl ô¤¤’'z!üARK=’ŒÃÎ`qHprpta9³Ù£FELÊ‘v¥’KLËIKÍ%¤&’é*Dý`Ü{eé‚¥Jnæ±víå7v˜6¢dÚzæeç7ÎŽFwF…#S‘d^lY	‰¡ÐF×FÒ‘ÄäYK8œK4š™—A¡™g²i,ÉÀ²N–0sn©ã0§#‰Èš›”Qƒc¤øƒÂ6›' 8€©¹³ƒ Á@©5›âÜ ò€:ƒÔæ ¸0à{Aö`vƒˆ<A@ }`þ È:‚Àà
+Ѓ«Ë¬:ºÌ^_LRº3™u¦o.½*Ò—Ë«¯uÞ
+c3Ò`?;Ì°`@È>ÐvåÁÜ æ äðdä‚àÐàôÔàÜ
+€óPwƒÌÀúA@Õ&í$£x­úéŒ^Ö¶C1‹ûáæ
+’m¥­ézòˆÒ|óóÂ༈ØT¨à²CU¨’	iA.ö—`ĹRŠ›H?LþéñNMéS?–q"GíàüI>Wù¿ü.üϧù
+‰>ä’§”©dvï20¤ÂKöžE^d©…—ÓÓ)¶5+Y¢Æš,S{\¼TÉèÒf`Á<Ýs4X¢­,™Ì¶ÕgpÔT‚š°
+ÍŒÌ2£3y1%I“ró먴Äô¬—Qg©iµCœÉ½Ái:¤´œN“‘yE&µ#‚ß¶çJ8
+KÍ8$çmx]½ÛqÍÕìYøX~@\Ë…7ÿÝû¾û|?vVýÖp⎏Åsb–”’ç‰Ñdhñò^¼A–èÛ‡
+l#Dp-,£SCÇtƒÃczy±ëÎÔ`±¥‡9N­öàÁ§«Ú¿&¶FË#9é5Ä–=ºÍ¬–4—;Ùà¹ÚR5Pݬ²ê3G)™Ü]–‡†\ÃBó\0ÔÕiÅQf¦ËŽe0úò“ó$髌ÔXp”á-%–3,Q“p<TjÌâÒi×,6-ïÕ¦`®®õË_6ŽîgnÓ”æ
+0ËM§N˜´ýê–4VVgÏÄ̑ƹƒ`P9¹Ô±cBÒTÞ5pß3poðz0iwFLLƦ%8´¹‹$¨o†Ï=õ;–#~jÝyW·V²ÎUÖ\4rQckÏ>ð=),ìI´W=#’¸™8”I¢M-9UeÊ_lKší¤Áºgc3
+­›Æ•ZØÉ®¦M­0Ô2¸-,ËE·ÈÐÊJQ„вl\s–‹7¾ªP(ši¢ÊÚ”VÓS„àk5ào7“%æÌ¶T¹ÂdÛ\Ü
+¹‰Ž°æ“lœI7—msyy¼Ñs†®ºáƒvfÉ1\ó8*E)Fæò¦0jj`Á†WQ“bQRFN’Íi‰vû3–¥©»ÐåÇ:M)'Hñ݇-8\´ÔÞ_4~Q0X¦Y\©©ÎTÐè
+Fèho0˜p›Ÿ 2º,¦Ë78›Üð³ É«V¨ÌÐñÃiÐ|NÍ'ϘTæm.àt6š;KÎûK ìc3 :›4c—¬´Ò)ŒÍ8>¿Cö*ÏŒYT^wK®û½KÞ×~•Õ*ªfRY¢ªLOí?|ÌúÜU_€ÑÅ`$ò} ñŸ4úX#ë“ ©Ù?ÒMgô›LÎùìÀi¬“¨>°Zvƒ g¶{Þœé¢t©õ§ûÍÉ¿þƒÙ;gÕ5OÙ*^T5ž‰yá<'“ì	™vÄîÝ=äÒq¤qîÜàÏ@<p0>¶f}³ y§âOX=SÀ€ò—I-8¤Àþ@à)€Xpw‚ÀÈ=é÷à:y„–N`þSÍ,™è“pj
+™ÙÖ’“ <Á¨@`³è²X9¤IyÉ9€(A@°(A :á2û&éºi>3p8‚3(ϦQ.PP3uh.P}`wH2H,êàØ wƒÞ
+åŠ÷N3ªvKËKNS˜8É8Ôž€tŸù)?æÑ34™‡@qÁ`P?ROrq|Ðåˆ7fÀêÀ@Ñ'Âj ~€LN°àñUT“@pyƒ ÷ƒ¼øg´°<ÒàÐ
+¤A¡=r
+”‡±'´Ô–0`ƒ´©	ppÊâ	 <¨.
+€Èj((E`rÁÔ`â›Ïã0“Dª·€vH5Aö§¬,é¨À^h’	û>gtÕÛY>@NàJPvÀ¼ˆüÓ̃TéÀd¤˜’8&& zAp; üé9$Ĥ©ý“pN ¼ò㝠ÔO`4žIdؐ:ÀîÏ, j
+’m iÄÙ9HAèI`l¼S²Ë?ù2
+ÁØ
+ s„¸Áڞ؞„©JMÁÔvPìIæ
+àN È3(wƒÜP>@d9l؃æAÞíšKBàðJ¸
+§¸°
+Á¨&A`\Ptª&'Ω%Q Ô
+æ
+ä@ Tƒ8$á8‚àÐàê
+Á 7ã8§Æâ
+Á÷'‰îœÁˆ7wΉ<Á€5iРvÀP(’i(³*`È
+€Ü€÷;Ñ%åâ
+@À% óèÁ€Piã Ù'¦nÑ4œÐʁùÀ'Ì“ óNô°3=R*	„ð˜à¸=ħ00`ÖwƒÈÀ zA¨0Ï0o*pIÈùý$— *uÍgäŸrO”½&€ðØP;7†€¸<@èà5Èù¸9‚ÒÀœØp$õ‰?ü]ÉáBC—®Ü
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,53 @@
+Machine (P#0 Backend=Linux)
+  Socket L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#0 (size=4096KB linesize=64 ways=16)
+      L2Cache L#0 (size=1024KB linesize=64 ways=8)
+        L1Cache L#0 (size=16KB linesize=64 ways=8)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+            PU L#1 (P#8)
+      L2Cache L#1 (size=1024KB linesize=64 ways=8)
+        L1Cache L#1 (size=16KB linesize=64 ways=8)
+          Core L#1 (P#1)
+            PU L#2 (P#4)
+            PU L#3 (P#12)
+  Socket L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#1 (size=4096KB linesize=64 ways=16)
+      L2Cache L#2 (size=1024KB linesize=64 ways=8)
+        L1Cache L#2 (size=16KB linesize=64 ways=8)
+          Core L#2 (P#0)
+            PU L#4 (P#1)
+            PU L#5 (P#9)
+  Socket L#2 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#2 (size=4096KB linesize=64 ways=16)
+      L2Cache L#3 (size=1024KB linesize=64 ways=8)
+        L1Cache L#3 (size=16KB linesize=64 ways=8)
+          Core L#3 (P#0)
+            PU L#6 (P#3)
+            PU L#7 (P#11)
+      L2Cache L#4 (size=1024KB linesize=64 ways=8)
+        L1Cache L#4 (size=16KB linesize=64 ways=8)
+          Core L#4 (P#1)
+            PU L#8 (P#7)
+            PU L#9 (P#15)
+  Socket L#3 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#3 (size=4096KB linesize=64 ways=16)
+      L2Cache L#5 (size=1024KB linesize=64 ways=8)
+        L1Cache L#5 (size=16KB linesize=64 ways=8)
+          Core L#5 (P#1)
+            PU L#10 (P#6)
+      L2Cache L#6 (size=1024KB linesize=64 ways=8)
+        L1Cache L#6 (size=16KB linesize=64 ways=8)
+          Core L#6 (P#0)
+            PU L#11 (P#10)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Sockets (type #3)
+  depth 2:	4 Caches (type #4)
+   depth 3:	7 Caches (type #4)
+    depth 4:	7 Caches (type #4)
+     depth 5:	7 Cores (type #5)
+      depth 6:	12 PUs (type #6)
+4 processors not represented in topology: 0x00006024
+4 processors offline: 0x00006024
+4 processors allowed but not online: 0x00006024
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,39 @@
+BZh91AY&SYäÞÍN Taÿ¥ÿüï=ßÿô½ë^Àÿïßð @  ø`_Ü 
+„zÀQÐÜt2T%cw ÜŠ@¥³R›5«)€¤É        Œ“Õh!“™2 € Èh4ÀCT™£*~ª"jƒC@  
+A È     ЧúÕHÄÈÀ˜  ™211110 Ä12`I¤„B™*4 @È ¦Ò ÐÐ  8€h 42h¦€h †  Ð*H @‚i£SLˆÈ†Mhê2É4ômA=MˆÉ‰êOÿáÎCðü'ù‡ä%„¡”ÐH’ÂÃü‰ ¡/`þƒYz°.,(‡íÓ?-
+î±ü_søÿ“ù›V£]u×]Ÿþñû¼ÒºÓµ}Ðë$Hà ‘ògÄH’‰"Z$‰D)T ó$#½ÍJ)J~+¤HN»øq§…ÕU^–—¯Û=trÞ²£ÍÓC‰‹Í)‡êŠg5wU—aÕæ5£G7IÒ‰7w˜Ek­yºxÐ,Ùyˆµ§˜q¶Ø|Z›m“øÓn6ØÆê¨Scuë·VÒÔ-Õ½NËÖxµ¶ÛÅÍ;­¶¦Ûaª¥wwwTÛy™UƒSªuOoOÌÌIº!…B³‹Smµƒ*ª†7hÃ2אּ“¼}UgT‰Dá–kF«Ì±‚¬ÖœËÊÝ̲ê“̶ˏ¾ôk.=5á®S­w ‰\H’Ô"FA5
+tÙU{UwÞ‡2æõ¦f‚l†	$9¨¤Iª1EÕ°X*)!X0ÉЁBÛÅÖJáµÕ™­¸¡¾fÒ­q(1b±ˆF,IÞä$FÅ2+²rŒ“£,wËž,
+òÈNÎ*¶–¶ÝeÌÃ-¥¥JŠCI£F°$Ü’pÅXª¢È¥’ÈDb¨(¨ŠII*( Á$I½ ’T’DŸlH’Ò$• ¤ˆ‚±„‘‚¨‘bU	æ =¡àÐüÁ¡5ô˜n~k=žð®²-pª
+Ö¹ߐ) d>@íñW›­WŒ^=ª²©Eh­dWBºƒõ|?Œ	ý¿;ç[m¶Ûm¶Ûm¶Ûm¶Ü	ÖbV¥jV¥jV¥jV¥jV¥jV§ƒÊù6FÌ3D1Ð F"F4H€ƒht9¡¦‡F´¸hu«¢´ÐêÜÓK«
+ÃaXÃWaX¬aÿ€óè'AúªL‡ç, ÷Òü9ü:ç?=ó¨n]J¥)SځTœr
+nè†þRNqmjÖ—YwÀ4Ï<禼ôΜõÓ®¸ñIH©"I=¢D”’OP+߁=žìŽ}»¹¹t«÷1ÛNí³ñiëå$„²9ÔôµRm¿_’Ù¹¦t¼×¡ö òÞ¤ë]ñÃYg»s«ë 1›hélT·vþþ6Ï_â1°~ Û¿
+¹wìöΕ™˜ïÆqzÛu»¶ÞÐ^‚ÙÖÙk½}àÛŒõãfû\9c‹ÀÎ1®÷·,ôÇyå×\ ` Ã]™žj±Oc/7ƒì  VCÌ,Œ¨5…é
+äxlì@üÁ€è‡0Ð=áËŸYU{Ýz«òa¸X6ç笁ýAÐ2‡´,ðÀy†€ñ
+BÁñ°x„ø‚\>@üAøÃ`>âK"¤‘È$IÔ蘭 €{„û¯‘ÊÛm¶¶¶¶¶´DDDS¸ … !D•kž hê™Å6™eÃçïá$i»r'ݹóy”$‘I’I$‘I’I$‘IQ>¡’:NE$I$R at d’E$I$R at d’E$I$R at d’E$I$RA©r at c]H¤€É$ŠH’H¤€É$ŠH’H¤€É$ŠH’H¤€É$ŠH#qÉr at crE$I$R at d’Fê]]ÝÝÝÕÝ]ÕÝZÛm¶¿'Ä'¼„›ø„
+ (@QE
+(@P€¢ª!TB¨‡kv‰+$MŽËm¶”µijÕ¶Õ/D†¡
+h¢"*§¿½øìÞ-¶ÛKV–­-¶ÛWÐOѳfå«m¶ÚÕ­¥ÚP¥h¢"*§­’$%è2yyyy) 2I'ˆ}»v·nÝ»vS©FI×QI‹§%ÉŽN¥I§Ô¹UUUÐUUUVÀª«BÕDEE >ß„$0òèKߟX>&Ýñ3[Ý·ÇT]áªky–­Ë‰º„I.ö^¹Ñ' ˆBI!Øœ\ž£,,¿>x9 0å$	 Ò’iÊÓ•*¦Šrçb5>ÅiûŸ)=\sªUUUUUUUUUUUUU\	„" 1UUV=á '%ÐùÒ{‰>ÿßþªú>¼Ÿ|)õgïRO–(|²]d”u½]:ÜC£ë@ê}iú©î‡õI§15–·nˆ8}á9N\jüÀ´ÿÔ6…ÿ¬LNC=¦âÂÚ…ÖK…=='!È´ü?áçiwÇé?²Oðþï€ÏÐ&“°×ñ}^Nnäw%ÉUR¾ÔI)$DŸÃÞÛíÀ’ý¤ð¢›ú_•×_D¦ÀÎì›9â£Ë$$×]fNŽþι®ÇÈa`Keî%î¹.B‚¡
+%¤‰˜k	$:0¤ž"ššSA30§š%dz'Z fµ)ÙG·j[NéȱÜ(ɲJl€Dd’ —¬òh7Ý‹ÑhºÕ§Zï_Oƹ;gyÃV¸ïyEáMj“;Ù4Ƹb‰7¢hýªß~†‚î…Ѫ'%*£]3U^’JVƒ™f½5:7²{HC0úp8ÃνkÓá<ù?0&mUUUUUUUUUUUUUVÕUUZ|| \	ÄéÓmyQöÒÝÚ˜Nìbrú+‘9Ø—ÍK­~þü- —ÍfÎÛã9Ö56ªwí§†Úö¶ù¢êRh/d8ZÒOãç…á²@ÛÛ£oŒÀøk›„ì“
+VT7=¾¾ s¾õ¾ÎrgNüíĐ^¶×¯W
+q4ÙÐH“®á}¹q¾ü³&¬An—ÌC^[Ù‹</µ}lÛ„qäítò
+×€H! ùÈ2 †ÉtŸt£Ì`±,‹aB+&X‘™’ŒÈ¸Eðhw˜÷.ÙÝvRG'„_‡yrí×e$q"xEÝsC³rí×e$q"xEðhw˜÷.ÙÝvRG'„XºªC³rí×e$q"xE‹ 4;8÷.ÙÝvRG'„_‡yrí×e$q"xE‹ 4;8÷.ÙÝvRG'„_‡yrí×e$q"xEðhw˜÷.ÙÝvRG'„_‡yrí×e$q"xEòùÁÿh×sÿ{Ï]ç[ÀH“ÇÀöcI-§¯\aîÏ•zráÆ÷Z°Í«;òm.ºÝÖÃ{Ýôã×.:S†j¼NM«sûä:Œ`$„‘FR¡J‚Œ¢äꉮøæEª«;_{gß\ôæ½4ÿ nÐ|Dãz$±QIBo×—:Nu]ËÛž-ÃâGïd–ß:[Y,nטÏvwÝÔ“½=†Gða$Þ=³Ö<g]9Ù}hÕ….ëuÅfÞ±rZ¥ƒß³k­me¦qKQ:g7Z'ój°e­¡
+¢i,³^Þ°$˜žÞ ÷Ù¹cíNo at K©8àªI'~;ï{3Å5ëÎI%|©ãᨪց;€sXzMfòqŽÜϏî!'ÔBNþcèéó~šŸñ.¸o™Îx¦÷­älÆêÜõŠõ^óÄÍë‡_6Oš†Ïp¯}y¾¾9×X ê,›ç
+|.º2mý¦,°˜¢k©X¼Åk獫£s-U{,~:ñ¯=÷ˆšÂèNƒ·©®¶äð½rw¿YÞr²@†ÐÖjSÂs^  Lä<Y
+µµ£
+kÖmGÖ¢÷ÝKÆ¿5¸X xà®ý(¨w±hW‚ó#ÙŽÈUXðV-UùÙ¢¦ù³zä:ÞŽ›ÇYÒs€	u§âl!9_0×ys^»ø|w¯ï¨H²u½sÒ뼕UÇ ñšË‰\kžòPQ5_;ë	ŸŽN/sÃÖüo½‡|wvOsßÎ@ TÍ4È‘&¨…T!*’$Î3Ì£Z¯˜Þ÷swIÆ-jÚÖA9e›8ç±›¼;;²I ï;ë® {¼öììÎuã‹$d…š’›ì’µÄï¬ÒUI6֐ï¥üƒ~›àŸæ$IÌH’þ;rÛlºâØÆ´¹©àl=ã¡¡òèk,:³®žª+l 0$Òk…“Œ„’| ,„ï <:¦aÇ›Îõ¯>r¡"É|®ó:À$$¹Éö¨j«䗝¹m¾-k-¥õÇ(§~è¶mO®€0ÖÑ.»+ÝNƒÀ£ªeS®¶žè!<؏UbùmXíÙ®€„2 žWÖÀ:õë³°ÙzÍß^¸^Y›ëP…&Æ7Ýo (s¶fmÖë`ÐÞh»º«Ü\¹O7×ͳyiB"¨‰:¦Ô‡Boà[1œ[m¹_Ž[ì
+¶PjCv¹µ¥±–&¬­ÕÓ> Ó¥wËÌ¡xÁ°5¥ ª“},-›_YZËšßR˜ñ!€ÆšG>Ä$c[‡þD‰.n®ì¹âËie¶,¥+M0E™{kÎv&uÉDN¯o8ºÙ	ÚUèåß¶_Iñ玵/£ÊróœÛÅ/[6\×W\éw7Ò@Í€:_:õë{ÎÏ]ç†I½']ˆå:‹=/ƒ6ºÐä±TÃ%³”¥)Bó0ºÈë6jï$ól6Zwa:7<JvnÙ¦%%G—!«'NÕéËr3˜ÆÂD™‹¯bÉ›ZYÐË8Öì8Ã9£
+æZQJÇmŠ-Mˆ^yñãE,¡–Ë%¡`	ØZgk4âÜù‹§Q2Î¶Åùg\ñlZ¯Ç \6\†‰®èg>IÑ8í¶z«zé{O*UÄw¾y³œæ0Öл 5ÌK|3Äî¥Ýï}ëfL€@Å,µëÀ <+Î)A:ž·{À&(7¬æÄ­Y­Ðµ¯µ´ÏÞ¿éíyu×[ö~ÏëÇØ
+ #Îvh-z
+ø‰oÓ\ñê€ù@?,= | 3ïUUUVªª&é
+ˆÿ¸H[_£ýCéÃõUÃ=ßHx‰¯ëư_@ý$=Ð{ˆ}pÿFa?|„>6
+k®šlBÄ,Mˆ|¿Ãœ·!±4	Z‰¨{„‰(›Y‹ÛÏ$}Oó'xyò'´0¿¨L…œÐx‡ éPN‚zÂÁ¨w†0TC |.$IùHt!¹
+0¸~¡ÿ7í!í¾Ä<ĉ:Q¼ Ü¦}‘"MàÈ}!A’Ñ4¾àbB$Ì‘¢Ä9â[¢á¸PpB‚Áa,L‡0ù2ÐI!,X at X°€°€±aaaQ°Y«?ïȦ!!($4%Pj†B¤Ci“Bªx`IP¢Š(P{rw…Á¤¬ƒä¤9CÚ øÉb^ıYpvýY®-Ì+}ƒ6'É
+%¢gâ·éñåçß’”äC¨Pn
+A$ýÑ"O„êÔ,²°9†áà tùÈYb¡2$IÀy‡×	}½bD”„I××Z…àÉ<$ˆ'¼>oŒ‡0¢à»êÜH“ÐO€`H“puo€Ø((/ {ä“q"Màò$°eAbIÔƒ²Gªä(L‡%ˆplØE‚=²&¢h
+‡Î„ØO‡p~÷¸:ºàH“å Š7
+·`ßuPx¶"j­o?7³B‡¬ºCÈI<|‚¢x‘  ìÁ`º$~ïj·“ÙÖÞD4
+¸z	wÁBD›È\5^=¤“@sðuäDIzžÉná8D0«˜gÔýƒpÈW@Û`ì
+ð õPpa©bD”5ëæ…vèCR ¨$‡¬?ü'väp÷;äGÖÕ dœt5ÃÃë×Áæòžu‘Yáö‰@ñþ"O!"O@Ø’{H{	&À‰àpÆ¡èI;ÆßAûþ¯?^	ÀvCÙùðyÌ(…ÌCK  ï	ÀnÜI4
+šná¼Ï¥Aäƒ@ðPJ
+„”‘9DœX9†ê  À^HP”ž½ˆ}\d…˜~ËÂp‘°œ‚âD›íŽ{Q:‰PhëY¼ª¤"J„DŸÄ$IS¿¨`…¸h‡­°n/|¢D˜Ø…¡	æX…ÈhÚ=í†C°P+Ä…³ĉ1Ç$"Nab"M‚‰4&T·¸yˆ‘'ð	h(2N¾Ê‘Mð ’Uø!Ü'É¡öõ¸!ë¼7$š‡xsêD<à Ô:‡a:L·"D’GîP!Ô(:Tªˆm¥ô	}@~ÙG:‘"¥Q*	Oâ'°*B$³¸0BØ†ˆh è	¼(‘((>߸Q¡ñ’KhC,C̈“©
+@ŠB$ÿw	'®ÿø»’)„‡&öjp
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.options	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.options	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+-p -v --of xml

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_index="0" cpuset="0x00009fdb" complete_cpuset="0x0000ffff" online_cpuset="0x00009fdb" allowed_cpuset="0x0000ffff">
+    <info name="Backend" value="Linux"/>
+    <object type="Socket" os_index="0" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111">
+      <info name="CPUModel" value="Intel(R) Xeon(TM) CPU 2.60GHz"/>
+      <object type="Cache" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="16">
+        <object type="Cache" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="0" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101">
+              <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+              <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
+              <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
+              <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="1" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
+      <info name="CPUModel" value="Intel(R) Xeon(TM) CPU 2.60GHz"/>
+      <object type="Cache" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="16">
+        <object type="Cache" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="0" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
+              <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+              <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="3" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888">
+      <info name="CPUModel" value="Intel(R) Xeon(TM) CPU 2.60GHz"/>
+      <object type="Cache" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="16">
+        <object type="Cache" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="0" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808">
+              <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+              <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080">
+              <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080"/>
+              <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="2" cpuset="0x00000440" complete_cpuset="0x00000440" online_cpuset="0x00000440" allowed_cpuset="0x00000440">
+      <info name="CPUModel" value="Intel(R) Xeon(TM) CPU 2.60GHz"/>
+      <object type="Cache" cpuset="0x00000440" complete_cpuset="0x00000440" online_cpuset="0x00000440" allowed_cpuset="0x00000440" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="16">
+        <object type="Cache" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040">
+              <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="0" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400">
+              <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines.xml.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+16em64t-4s2c2t-offlines.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.options	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.options	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+- -v --whole-system --cpuset

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,53 @@
+Machine (P#0 Backend=Linux) cpuset=0x00009fdb
+  Socket L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") cpuset=0x00001111
+    L3Cache L#0 (size=4096KB linesize=64 ways=16) cpuset=0x00001111
+      L2Cache L#0 (size=1024KB linesize=64 ways=8) cpuset=0x00000101
+        L1Cache L#0 (size=16KB linesize=64 ways=8) cpuset=0x00000101
+          Core L#0 (P#0) cpuset=0x00000101
+            PU L#0 (P#0) cpuset=0x00000001
+            PU L#1 (P#8) cpuset=0x00000100
+      L2Cache L#1 (size=1024KB linesize=64 ways=8) cpuset=0x00001010
+        L1Cache L#1 (size=16KB linesize=64 ways=8) cpuset=0x00001010
+          Core L#1 (P#1) cpuset=0x00001010
+            PU L#2 (P#4) cpuset=0x00000010
+            PU L#3 (P#12) cpuset=0x00001000
+  Socket L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") cpuset=0x00000202
+    L3Cache L#1 (size=4096KB linesize=64 ways=16) cpuset=0x00000202
+      L2Cache L#2 (size=1024KB linesize=64 ways=8) cpuset=0x00000202
+        L1Cache L#2 (size=16KB linesize=64 ways=8) cpuset=0x00000202
+          Core L#2 (P#0) cpuset=0x00000202
+            PU L#4 (P#1) cpuset=0x00000002
+            PU L#5 (P#9) cpuset=0x00000200
+  Socket L#2 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") cpuset=0x00008888
+    L3Cache L#2 (size=4096KB linesize=64 ways=16) cpuset=0x00008888
+      L2Cache L#3 (size=1024KB linesize=64 ways=8) cpuset=0x00000808
+        L1Cache L#3 (size=16KB linesize=64 ways=8) cpuset=0x00000808
+          Core L#3 (P#0) cpuset=0x00000808
+            PU L#6 (P#3) cpuset=0x00000008
+            PU L#7 (P#11) cpuset=0x00000800
+      L2Cache L#4 (size=1024KB linesize=64 ways=8) cpuset=0x00008080
+        L1Cache L#4 (size=16KB linesize=64 ways=8) cpuset=0x00008080
+          Core L#4 (P#1) cpuset=0x00008080
+            PU L#8 (P#7) cpuset=0x00000080
+            PU L#9 (P#15) cpuset=0x00008000
+  Socket L#3 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz") cpuset=0x00000440
+    L3Cache L#3 (size=4096KB linesize=64 ways=16) cpuset=0x00000440
+      L2Cache L#5 (size=1024KB linesize=64 ways=8) cpuset=0x00000040
+        L1Cache L#5 (size=16KB linesize=64 ways=8) cpuset=0x00000040
+          Core L#5 (P#1) cpuset=0x00000040
+            PU L#10 (P#6) cpuset=0x00000040
+      L2Cache L#6 (size=1024KB linesize=64 ways=8) cpuset=0x00000400
+        L1Cache L#6 (size=16KB linesize=64 ways=8) cpuset=0x00000400
+          Core L#6 (P#0) cpuset=0x00000400
+            PU L#11 (P#10) cpuset=0x00000400
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Sockets (type #3)
+  depth 2:	4 Caches (type #4)
+   depth 3:	7 Caches (type #4)
+    depth 4:	7 Caches (type #4)
+     depth 5:	7 Cores (type #5)
+      depth 6:	12 PUs (type #6)
+4 processors not represented in topology: 0x00006024
+4 processors offline: 0x00006024
+4 processors allowed but not online: 0x00006024
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t-offlines_noadmin.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+16em64t-4s2c2t-offlines.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,57 @@
+Machine (P#0 Backend=Linux)
+  Socket L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#0 (size=4096KB linesize=64 ways=16)
+      L2Cache L#0 (size=1024KB linesize=64 ways=8)
+        L1Cache L#0 (size=16KB linesize=64 ways=8)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+            PU L#1 (P#8)
+      L2Cache L#1 (size=1024KB linesize=64 ways=8)
+        L1Cache L#1 (size=16KB linesize=64 ways=8)
+          Core L#1 (P#1)
+            PU L#2 (P#4)
+            PU L#3 (P#12)
+  Socket L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#1 (size=4096KB linesize=64 ways=16)
+      L2Cache L#2 (size=1024KB linesize=64 ways=8)
+        L1Cache L#2 (size=16KB linesize=64 ways=8)
+          Core L#2 (P#0)
+            PU L#4 (P#1)
+            PU L#5 (P#9)
+      L2Cache L#3 (size=1024KB linesize=64 ways=8)
+        L1Cache L#3 (size=16KB linesize=64 ways=8)
+          Core L#3 (P#1)
+            PU L#6 (P#5)
+            PU L#7 (P#13)
+  Socket L#2 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#2 (size=4096KB linesize=64 ways=16)
+      L2Cache L#4 (size=1024KB linesize=64 ways=8)
+        L1Cache L#4 (size=16KB linesize=64 ways=8)
+          Core L#4 (P#0)
+            PU L#8 (P#2)
+            PU L#9 (P#10)
+      L2Cache L#5 (size=1024KB linesize=64 ways=8)
+        L1Cache L#5 (size=16KB linesize=64 ways=8)
+          Core L#5 (P#1)
+            PU L#10 (P#6)
+            PU L#11 (P#14)
+  Socket L#3 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#3 (size=4096KB linesize=64 ways=16)
+      L2Cache L#6 (size=1024KB linesize=64 ways=8)
+        L1Cache L#6 (size=16KB linesize=64 ways=8)
+          Core L#6 (P#0)
+            PU L#12 (P#3)
+            PU L#13 (P#11)
+      L2Cache L#7 (size=1024KB linesize=64 ways=8)
+        L1Cache L#7 (size=16KB linesize=64 ways=8)
+          Core L#7 (P#1)
+            PU L#14 (P#7)
+            PU L#15 (P#15)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Sockets (type #3)
+  depth 2:	4 Caches (type #4)
+   depth 3:	8 Caches (type #4)
+    depth 4:	8 Caches (type #4)
+     depth 5:	8 Cores (type #5)
+      depth 6:	16 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,52 @@
+BZh91AY&SY"ÿ gx¥ÿ°þwÞïÿñ?ï~Àÿïßð @  ø`">8 WÀIÝ¢|¼p ×ÀzÚ\ž}÷­Î ÕÀdåÉUÎcRÈtíÎuց- t       :§ïÕ?ÉOÚªPÔÿT           
+0T“Ôjc@É“ Œ  !“10	¦ jŸ½UJzš
+¨@   hh  €  %?T¢M2š¡¦CF@         P¦!™<“ Aê ÄP bx£j4 êR@‚ÔÓM2ˆÅ2zš4Ð 2ê zƒÊl§ê$ûD7@¯ê ó 2 (spBîˆH¬?ˆÀ'pBàÀ­H¤0	t¨„‘ µH÷`L@úN¯[Õõ®%ï{Þþ¿±ìñj	¶:éx€;ÄQuXQÆ¿ $(„-…HH¨${DDâ¤$HSÃÍÝu×]J]uÃ1ùw fúÿ?°ô2Ið|z´MŠh©Vˆ7€³•íî³»·yfŽpá´È4 Ő$> ”²‚á©Èõ¶’‘çVMa$uïs|ÃæÉ¬:Ó²W{^KÖí´\½ÁVíµ¼v…­ÛjX»‚­ÛhÛĐm\¸ƒëݽ)–]¢âºƒw·k–×—¸*ݶîæÈ·m¢åî
+·m¢ÒjI$M“R[ºN“¤é4šM&èZÀ뻨ìÑÛ{TRËÜnÛd’D”RdAQ]LÞS©2žo›ŒH™Ñ¼¤B[ñ$PïHƒð4|uÈ»  £¾×c“À€£DGÀ3à5Z·cVmŽ ÄÀ$6@Г4 ;h%’üXIE=(€@`ÎT#AYP@#¶ AfrØ€DfI‚ºµ–qqºH®«®ñÂq»uo6Åœo½8陘ˆ˜èçå HŠuÜÒÝÖf`Œa™„À˜FfbFs¥žÓ,ÅLÊñºEÆ–Ι—LfgÄVæå)!ÀŽOÂÁ›Ë3 ñœI Ÿ
+(c	–Â	$@I20“‘ ¹²Ë¦XªÏà"""­³u2Ü­ÌÊdDDDBE"TBB¢„ºC"ȐÈ"’”‘"$?ª	YòÉÂÃ,AŒ«$Ë*°«2Åë꿜> ô~€×Ö¸7?E…‹XSæÀ`¶BÅ®A µƒnCoû…4 P;ý•èÞyçÃч§A8‡â ‡Ht…õ»Õ_zªý½=Ý     1I&V,V*ÅX«b¬UбV*Å-jÖ­jÖ­jíÞ;Ý'¥ÍÉÅÌå!(@b‚@Á‚BX€Èˆˆ@a 1'
+…R		b"ˆ¡„8P€Äœ(0`0D 2KV+”=º×R`?Hq`溗åק϶søïƒ€ÊêU)JŸ  ú‚¨7
+9èáØ6=dœ²æÛU­.²ï˜k=sžÛuÖu×mwÛà>BJ’I!ò…$“Þ
+û°$Iñû2:ùyõtíWócË^{çë×ä`’{±du¨%éj*¤ßŽu~‹_36ªÖ:+°r>ÊM±¾ªì^Ó½Zû[¥Ã¶­Šƒ6ßîãlvôÞ#àÿ oã
+úxÜ8òΫ31ãÆvïnó߈3Azgke·ü¿9î$œîã{‡LsxÆ6À^öéžØéÇ–ûÁ…×âõÎ×uçlgVc~>[ã
+h+!ìFÞƒõƒèpnP|AØ?@`;Ô4ptëéÞU^÷^ªý¨p
+ÁúAúCñ‡@d?œ(;C`ù‚Áà0Á ÀzÁ`Èz!ä>´\>ÿ0ü၀þ$¡H©!]!Ü,O¶IóÁÞI6[‹‰@)J  Û[÷Ã|ýy¾¾x¯nsôÛ~œûþ•xðG^½:yùç9m㡎2XÚ@”6“ ’À¦Ò`XÚLK›I€HHfTGxB£)´™€I`Si0	,
+m&%M¦ I€:m&%M¤À$°)´˜–6“ Ì¨…á±Ói2–6“ ’À¦Ò`XÞf$Àe6“ ’À¦Ò`XÚLK›I€Id)Pa±Ói0	,
+m&%M¤À)Yjª¨R”   ¹$’d’M^!Ÿ*ˆUª!TB¨YEe”VQYEe”¢D*ˆx·‰!Y	›·ZÀˆˆ´  c*a„Ña0·3›˜Û-´ ÛtÝݵ   t’I“
+,Ç1Ìx Z(UªˆÃ@Kl¶Ð ·JÌË+µ–eÿdÈ–…ã6“Çq’À¦Ò`2dÈgÏž›IçÏŸ<€›m’Y
+U˜ÀRˆR¬ÁÛÇ·mñíãÏn9Þ{xöñíÛ|@Ön€ ™h¶n‚ FÙ=O· fÅG–¤üæï¤DGË	”mO´iàA³C ƒ^C7ÕSt“·‡„ld€ Ì…3ÎųÀ(®„¶líi¦škÍ$˜fÚ²BH5I5ÖÓšUM)ÏkuªõþÃÞûj¯]ßÈ      Š®,¥RUW Õ]ºùÙꬪÌÌðYU™™î¥à !“–$³êã@H™ì…ãZ8Ç#ŒÃUUDDBmfÙ`äBÏ#Ù¨_hÄ1˜Bg`™»WCŒQã؆ÍpâD0ï	O(®Hj%ç1 n2$¸¡‘ H+Ëë‰×k­Òª`íxOІ¯o§â‰g˜Vès„ÃÅÜç‰Ï%ê $"¨‡ ¡¿Œä9u'¾´œ€®®)”Ïzµ+‹J…C<_wÜ6N¸Åö¤¾âôBU!"‚‘*H©
+
+½,L€B&£Õdà”*5©	 ƒR	±%ZçF‘–eEb4ÈpÔ# ¨
+½í`Ú«@lZºodƬœc8bÅƒoËPÕ_†øÛA0BÈ#Ý+
+ÑÜÍûH±7Ê£ƒf «ç›ƒ6xª:¨bŠ­6åäò]ûß
+«Ž€      Ufè mTëŒE«ªGæ·líÒˆ_5‡úSÉ<ñÏæ®Ci"‚Þ<bÍRÒ˜^Ìxʯ“ø±lݾc®aåÚÉVËݬæÚÍÙiœpí${ªYSÓFº²)HH)¦fcZÖ_ØÓQ¬)$ʐU–Ã	l&‚°ÂbvÆù™‹mh«sÛxvűÛh«Õ‹1º±‰r˜½±ºÕÚ“Í«Í!ÆwåœÄ/¦Õ1R©§<YŠ$ëœXFüÚ¶ÄBú¦¹µWPH^÷íAÍÖÇKÎüó~»j¤Þ› VUtBîÍ%Òe’mTÓ¿$º^ŠyqŒ18Àé<•øÛÔ8·Õ*§^/uï{Ø`¢bXÄKГPB9ÑÛ‡´Ó_Þëe3º­mÓW¿9ÜÞ0°hªK±*÷j}ÜçsxÂÁ¢©.īݩ÷sÍã	ÑS—bUîÔû¹Îæñ…ƒER]‰W»Sîç;›Æ
+Iv%^íO»œîoX4U%Ø•{µ>îs¹¼a`ÑT—bUîÔû¹Îæñ…ƒER]‰W»Sîç;›Æ
+Iv%^íO»œîoX4U%Ø•{µ>îs¹¼a`ÑT—bUîÔû¹Îæñ…ƒER]‰W»Sîç;›Æ
+Iv%^íO»œîoX4U%Ø•{µ>îs¹¼a`ÑT—bUîÔû¹Î½SD²§ý
+áÝÒðw÷à8wÞ”Êtf[X,C9e%!k¥Q³ÍfIm|vÆn}–€<1à¿3~m^Ò¨wF­Þ;Æòò.":
+RÎ¼¶vhBãÏýÌ Œ œD©)©I%")QREÓ܆Üc©ª¬ñ~-Ÿu×Ué¯ñ‡µìj»ö       Ú«7@j®¼wïo˜vìžlÛU%¬Ç/±7ú%m·ÛjnÕ±,g/¡iÖ,ç©2ÊÄÀÙizh	h‘Ê ˜T¡ÔEª”n²™ùôß5³XÛ-FRV$„­–›QLLN¸$ºòÉKÚÓyS§,o©®Ë`ï£fléñHh@`†Làe€
+›™:N[Ó®Ù›¤B©#9½àç˜30ÚÓ;ÙÅÀÀ­àCK7"+eåV!C=³¥ËCXFy»Šbù¼ÕJÍ^þÈ	å†þþ–×+Äm'ë½B}0ꁾ‡gBà¤JÙØU5¶Eõt‹2
+ÙËÖÀXhô€¾mòó¸ë׊§         3Œ¼Þmëã¹äË|Z3·2™¬a¾/j2ͤ‰Ój±;ªI73jSmƒth©ÅMéKËLXŒ)/*JVTœ8ºûbÉ©1¶¥¯—]r©D€ ¸ÊLFò"MÌÀ  ½T¢Àð˜u{ÛÕfAc_‹yj•1[Ü.ìæ×æqj¢ôw¦€:ˆ¼‘1Èùˆá¯—wH^€n§„R'º„êZÒg§Hï€30 8y…&ÁÀZºA]v½¯Ž»véZß-¾Õ@       æí—K—†WêºùX¯BͳMµŸAA¶ôÍ­©ªµNÔòZì©«ZÕ|ôãf՝1»0îïi ¾œZlÖ¬	
+eDЍ€ªAçHÍޤâñ'JLsj¦œßšA/¥=6b³-³U2I:i(‚5m-€Î:1|LÉ%µÆÖÒõI’Ô¥nÛÅæÛR)Pß¶øã‡@H_Óq$³>]ïJ_N,®2¤9 êD®ÐP›D„ý„"è+"
+àÎÆt¹Ì¡™»ÈD*ÑWw;qÅÕ×§¹çÍۍ        ½Ïµ–Öt	
+ÇDh·<Þ\3ZZ[«ã@(Of¡Ö¢9¨Z“`Ãj½Œ;ä΀°ã8ˆp ÁR¤à©qxÎYªŒ3Òö¿ó³Yµ‹5°’yc‡
+$ŒäÙSm#I“KÕÛ^ ¦Ðå‰Là¾Ûz)¾êÒC,J·LæÚÛ}›¶ÂËU¯{¥)O!ÂïR¹°Ã·ë8D‹{[gµéRø–H’U#º^‘;†ðc´tÖ3‹tß­úõãp°oºƒbµìTÖûÜ¾ÛæýÃmT¦:Z¬’^õ*nÅöÈZ›ß\Lí{)âõ'YНpL¯–j©\Öõ܈“V—’?˜mL<íÛUºII0m[VuHm×ûÚtcYí{opÐI€zwÏÃϾ`¼¹ñ!iï.iAMÖæéˆ÷
+ †o&fr/ÔFî <hÀWϾFíøuâüT’ä0èpÅÚIª•Rªªff‡"E2ÖÅ¡¦Ë8È.k5$˜¨Æo|ZÒjY“›0]mUKÆýl	uNs»öᕌ7Ûf/‹µªËÁnl±G6RÍ—®BÃmk‹7âÝz‹§pd4µ¾/×;g›bÕ~~ ¸n¹
+&Ü!œú§tçË|÷WÚöžUªš¾zc¾$˜Øf³B¹ÛŒkYëŽ×Îu®›g¦wÏã8æ·VÙ¶Üï~:‡Z÷ßZáÆüv¿=-€ÅœØ+fk„-kïmgùƒüÿWÉëþë®·íý¿êÇå
+ #àòh?8Z¬+Õn·÷…Âßààô+øÕz   W5]ÈU¢?0ì-¿ü3þûòýupןÞ€Ûöch/ ýA>È>ÀŸ?ôÌÎ@Ÿ0›†‚m¶µ¸K°nð[9ppа6@HPnæ/olIøòÛ |ƒðü!³ª@䪰>`Ø<0T°|î	ü쀚Âá÷‡è	ãÙý>WÜ'°$;`=`à¾~PHqCù@’ƒ! Ðzh+øƒ$C0r	&–	Ð/».!(,‚ƒ!Ô>™	‚UD*¢Q
+¨”e”e”e”e”e”e”e’ª!UªˆUD*ˆ\%‚Í™ÿî6P9@©	 ª
+ÈTˆo"D4%P}Á€}á=䤤¢QŠEòð`µ\,@ûàd>Aè´,°X$K"./ךæÝ¸Ü3`ä2‚‚Pgë·ëôàëã!:)Ð'p à,ˆýàH|çp÷l`°?(~Ðê¸>Ûñ²Á1@È$9`ü/¼‰íëZÁ€˜ĈÜ»ö„èì¿sä˜p±ÅÃ`  ¼P}ÒA!¼ °e‚ÁÂ<I=÷	@ÈtX'!ÈI¸lp—
+ùH‘
+ Pd?yƒp|üÃ÷þÀîï€H~ ‘8fÞAÆÝAèÜ
+ƒøííìøè'ðá.„õzz…Aè	îy…‚èIûÞ¡°làöõ	 Ð8¨M¸X2|‚:ƒ yƒ°y"H…ê|e¼Èt	„%XC>çï!]ƒ}ÃȃßAÈ{Á:‚BƒÒ ýC`¯.Á6	‚¢$|ÿÀóà9
+¼Þ$GãÙ ÈrØWwä®`žAìõžÕ¨KYîþ¢G¨==àùÁžÁ x8
+È#°P}pžT—ÓÀ?f€î‡´÷C¸z¨PJÜ	«@ öà2Ö Ý®Àq3ò¨=C€h=ÁÒ	AR… tA!̓¨h=áî
+ä%úÃpŸ‡	Aì¶ð9HÜàÜ'”˜	òAÜ
+
+
+‚w¬…‚‚‚‚Þ¤‘
+Dˆ$*xî	nZÃàÜ8
+
+§¨}!ÂX	`{à–	pš	mõõݐò
+z øâƒ¨$1ÏDH‡P±$Cp¤H†ƒ*
+œ\=CÐÀ	
+j‡HI0"$*ü„óÓA=âàä'À€ƒÀuî¡=ƒ Ø;‡;l„·@È$Ÿ’‚HUA7Õé‡áôA$ëRTª%H‰0ï0>!R$BÏ0ÀJM! ÷°nx
+PP|ÃÇA;‡ÚmÀKö$ˆw	AõR$CöƒÌ!ð€@ñw$S…		/ð
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.options	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.options	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+-v --of xml

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_index="0" cpuset="0x0000ffff" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" allowed_cpuset="0x0000ffff">
+    <info name="Backend" value="Linux"/>
+    <object type="Socket" os_index="0" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111">
+      <info name="CPUModel" value="Intel(R) Xeon(TM) CPU 2.60GHz"/>
+      <object type="Cache" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="16">
+        <object type="Cache" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="0" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101">
+              <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+              <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
+              <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
+              <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222">
+      <info name="CPUModel" value="Intel(R) Xeon(TM) CPU 2.60GHz"/>
+      <object type="Cache" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="16">
+        <object type="Cache" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="0" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
+              <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+              <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020">
+              <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020"/>
+              <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="2" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444">
+      <info name="CPUModel" value="Intel(R) Xeon(TM) CPU 2.60GHz"/>
+      <object type="Cache" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="16">
+        <object type="Cache" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="0" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404">
+              <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004"/>
+              <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040">
+              <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
+              <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="3" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888">
+      <info name="CPUModel" value="Intel(R) Xeon(TM) CPU 2.60GHz"/>
+      <object type="Cache" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="16">
+        <object type="Cache" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="0" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808">
+              <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+              <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="1048576" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_index="1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080">
+              <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080"/>
+              <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t.xml.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+16em64t-4s2c2t.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.options	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.options	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+- -v --merge

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,34 @@
+Machine (P#0 Backend=Linux)
+  L3Cache L#0 (size=4096KB linesize=64 ways=16)
+    Core L#0 (P#0)
+      PU L#0 (P#0)
+      PU L#1 (P#8)
+    Core L#1 (P#1)
+      PU L#2 (P#4)
+      PU L#3 (P#12)
+  L3Cache L#1 (size=4096KB linesize=64 ways=16)
+    Core L#2 (P#0)
+      PU L#4 (P#1)
+      PU L#5 (P#9)
+    Core L#3 (P#1)
+      PU L#6 (P#5)
+      PU L#7 (P#13)
+  L3Cache L#2 (size=4096KB linesize=64 ways=16)
+    Core L#4 (P#0)
+      PU L#8 (P#2)
+      PU L#9 (P#10)
+    Core L#5 (P#1)
+      PU L#10 (P#6)
+      PU L#11 (P#14)
+  L3Cache L#3 (size=4096KB linesize=64 ways=16)
+    Core L#6 (P#0)
+      PU L#12 (P#3)
+      PU L#13 (P#11)
+    Core L#7 (P#1)
+      PU L#14 (P#7)
+      PU L#15 (P#15)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Caches (type #4)
+  depth 2:	8 Cores (type #5)
+   depth 3:	16 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_merge.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+16em64t-4s2c2t.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.options	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.options	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+- -v --no-caches

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,34 @@
+Machine (P#0 Backend=Linux)
+  Socket L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    Core L#0 (P#0)
+      PU L#0 (P#0)
+      PU L#1 (P#8)
+    Core L#1 (P#1)
+      PU L#2 (P#4)
+      PU L#3 (P#12)
+  Socket L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    Core L#2 (P#0)
+      PU L#4 (P#1)
+      PU L#5 (P#9)
+    Core L#3 (P#1)
+      PU L#6 (P#5)
+      PU L#7 (P#13)
+  Socket L#2 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    Core L#4 (P#0)
+      PU L#8 (P#2)
+      PU L#9 (P#10)
+    Core L#5 (P#1)
+      PU L#10 (P#6)
+      PU L#11 (P#14)
+  Socket L#3 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    Core L#6 (P#0)
+      PU L#12 (P#3)
+      PU L#13 (P#11)
+    Core L#7 (P#1)
+      PU L#14 (P#7)
+      PU L#15 (P#15)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Sockets (type #3)
+  depth 2:	8 Cores (type #5)
+   depth 3:	16 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2c2t_ncaches.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+16em64t-4s2c2t.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,73 @@
+Machine (P#0 Backend=Linux)
+  Socket L#0 (P#0 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#0 (size=4096KB linesize=64 ways=16)
+      L2Cache L#0 (size=1024KB linesize=64 ways=8)
+        L1Cache L#0 (size=16KB linesize=64 ways=8)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+        L1Cache L#1 (size=16KB linesize=64 ways=8)
+          Core L#1 (P#2)
+            PU L#1 (P#8)
+      L2Cache L#1 (size=1024KB linesize=64 ways=8)
+        L1Cache L#2 (size=16KB linesize=64 ways=8)
+          Core L#2 (P#1)
+            PU L#2 (P#4)
+        L1Cache L#3 (size=16KB linesize=64 ways=8)
+          Core L#3 (P#3)
+            PU L#3 (P#12)
+  Socket L#1 (P#1 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#1 (size=4096KB linesize=64 ways=16)
+      L2Cache L#2 (size=1024KB linesize=64 ways=8)
+        L1Cache L#4 (size=16KB linesize=64 ways=8)
+          Core L#4 (P#0)
+            PU L#4 (P#1)
+        L1Cache L#5 (size=16KB linesize=64 ways=8)
+          Core L#5 (P#2)
+            PU L#5 (P#9)
+      L2Cache L#3 (size=1024KB linesize=64 ways=8)
+        L1Cache L#6 (size=16KB linesize=64 ways=8)
+          Core L#6 (P#1)
+            PU L#6 (P#5)
+        L1Cache L#7 (size=16KB linesize=64 ways=8)
+          Core L#7 (P#3)
+            PU L#7 (P#13)
+  Socket L#2 (P#2 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#2 (size=4096KB linesize=64 ways=16)
+      L2Cache L#4 (size=1024KB linesize=64 ways=8)
+        L1Cache L#8 (size=16KB linesize=64 ways=8)
+          Core L#8 (P#0)
+            PU L#8 (P#2)
+        L1Cache L#9 (size=16KB linesize=64 ways=8)
+          Core L#9 (P#2)
+            PU L#9 (P#10)
+      L2Cache L#5 (size=1024KB linesize=64 ways=8)
+        L1Cache L#10 (size=16KB linesize=64 ways=8)
+          Core L#10 (P#1)
+            PU L#10 (P#6)
+        L1Cache L#11 (size=16KB linesize=64 ways=8)
+          Core L#11 (P#3)
+            PU L#11 (P#14)
+  Socket L#3 (P#3 CPUModel="Intel(R) Xeon(TM) CPU 2.60GHz")
+    L3Cache L#3 (size=4096KB linesize=64 ways=16)
+      L2Cache L#6 (size=1024KB linesize=64 ways=8)
+        L1Cache L#12 (size=16KB linesize=64 ways=8)
+          Core L#12 (P#0)
+            PU L#12 (P#3)
+        L1Cache L#13 (size=16KB linesize=64 ways=8)
+          Core L#13 (P#2)
+            PU L#13 (P#11)
+      L2Cache L#7 (size=1024KB linesize=64 ways=8)
+        L1Cache L#14 (size=16KB linesize=64 ways=8)
+          Core L#14 (P#1)
+            PU L#14 (P#7)
+        L1Cache L#15 (size=16KB linesize=64 ways=8)
+          Core L#15 (P#3)
+            PU L#15 (P#15)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Sockets (type #3)
+  depth 2:	4 Caches (type #4)
+   depth 3:	8 Caches (type #4)
+    depth 4:	16 Caches (type #4)
+     depth 5:	16 Cores (type #5)
+      depth 6:	16 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16em64t-4s2cu2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,48 @@
+BZh91AY&SY6¿Á| fö¥ÿ°þï}ÿÿò=ï^Àÿïßð @  ø`"žùN ƍR¢|qÀ |o[SsoL_ØuY `›I@Õd4–@e“JU at 4       'ûU?òTÿj¥CÔA10  !ˆ`     4Â5Q%3Q¨Ñ„b
+À€L 0š=Aª§þõU£z  €         	OÕ)
+$Ôj4Èõ
+         &§©&ôSLa0†MŒÈÀ6’6“@Â	€Tˆš@54šf¡0“j4ôi ÔÐ2m@õš
+~©ê<“î ÷ÿ€ @Æ!9D&Qÿ)H¤~t4JI1bQ¤±E¢‚m‹OÑHÞ“ñ'òþ?æþö‘­kZÖŽ–ž¤à•ais3¨hˆ,à+p¥p ¢¸„(ŠBEA#ØA<Þo'ƒ0”Ã0ÃÍ´“Ϲ»Y¥î{”MŠhªëh€³•ÝÛ{»wÑÀŽ—˜Ñ¡ŠÁ6PѨh±îíËuÖÚJF:±ZK^÷7¬>lšÃ­;%wµä°-nÛEËÜnÛ[ÇhZݶ¥‹¸*ݶ¼Iâ¶Æ×b={·¥2Ëx³qÞÙ0‰nï9my{‚­ÛnîlkvÚ.^à«vÚ-&¤’DÑi5%»¤é:N“I¤Òn…¬»ºŽÍ·µAE ̽ÁVí¶A	$IE&AQEÕ¬>Š^&SÓ»\bDÍTˆ@K{$Pîȃ£AFˆuÈ»  £¢4Íx at Q¢¦h`£Dä,ð3pHdI"IÀoÇ
+¬UcóTÖñ×§KzmVÕnYÚFUÆVT€#¶ Nyã,ήÜöëÛ¯ ˆÌ’.Šá¬³‰¤H 4MZB  q
+ä¨óï\Ì͉;tíÚéËžv ‘çsKwY™‚1„fa™ˆ19ËÔË1S2»]"ãKfðÚTNU.R•PǼqq6ÕÌÊ;µ³[5Ó‹xqŶí¶í¶ÚîÕJªo&sJÍULÙLÉ
+¢TˆÔà"""­­ÔËr·3)‘	–Uqe*ΙD‡4JJ¤THª%B$?Œ•»eYV2ÖEba at eY*ˆ¨H”öØô˜?Hkç¸8?M‹,ùŸHW!’ö/T°È_@È_õ…]ªºÕz•J«Ëì^kÐ=d8ói¾ž›Cˆq ‚:èÁlìh$’wä’{1Î     I$ÏäÉb¬UбV*ÅX«b¬UбV*ÅX¢<z}ƒð „±†BP€Ä$ƒpÀÁ‘€Â\, at b. 3, at b˜0HKE!„$áC
+ʲͲ¬çºË
+Í^=»®¤È~ Õ‡H>šc—nßW}¶û¸Ûpä6aJ¥)Sâ8UAnB‚ùw
+ßY'FΗ½]Ì-‡ÔÛ¶Ûwß¶¶×mõá¾Cà‡ T’I¤’H|A!I$÷‚¾œ‰|ßF÷—g^õ&|uåÆßc_±’HAé›Gj‚b—ETœsÓXê¼m3Sz­gª»‡AôRož5Xg<*ñ½õÀgkÓ½æ Úøúyß=ýÜDgÐ?0qç—|ø|vÕm6<흷ð¾WåÇ0mAŠÛ{Ù¿5üáÇM¼“§xÀuÏL@Û9ß!Œ_]»ç¯><qXcœWMðíÓ|í«gŽ~ÞvÈÐVÁ쌇¼7þÃAò¤8œ>`wÒáÈv
+Ò{{¼%V1†*±Ô;!aÀ?P?P}àê
+ƒöpØ7ˆXXy†CØ4pn¸:ˆ{‚}„`>Aùƒó†d2Ë$—HJ'PHx‘ödŸPb ù¾ªÅÕÝÝÝÝ]ÕÝ   $™d“.ØdÏm2Ý>Ë6ù¦›-vŽŽËË Ï¶ÛϧϞK›I€I`Si0	,
+m&%M¤À$°)´˜  6Û`XÚLK›I€I`Si0	,
+m&%M¤À$°)´˜–6“ ’À¦Ò`
+ˆ^hb ºm&@’À¦Ò`XÚLK›I€I`Si0	,
+m&%M¤À$°)´˜–B•›41]6“ ’À¦Ò`X†ráŽ8ãŽ7 ¥(  ]ÝÝ׈<CÂ@†Þ$*ˆU¥e”VQYEe”VPB¨…Q
+¢D*ˆx_Œ‰K„’ffLË3flh 
+ÝÝÝ-æÌºe–ætº@–Ùm -¶ÛlBе  wwtïUÎwº]0­› B	mVÛ[e¶€ ]2ÌË"Ç}¼|om³¼|||xã\óÍí¶s·<óÏpäÍ–YSi<²Ë  m¶À$²«@(…*ÐB#AR!¦1ŒcÆ0i4µXÆ0 æZ m› €U¢»ý±"Mú:_KÕ+~´ÓXÕçZºº¢ò
+ÔðŠBÄ÷PŽ‹&FÓ  3 ÊF°Û}âl
+ˆ‘$áRÕ´®¬ÌÌÌL³ø6j´„j’k­Î´ª¥ãçmeÍW¥äøÞ÷ÛUz^O8      Š®,¥RUW Õ^ys¼²«33|¶k5ç0$—¶û±=!HOôÝPûqP5Á 5ãu(X”
+"…$„cÂ2“*BHk¡&»º;ˆo­AZhUš¨ž&ÍlÊÀ“aZˆT¦Ó˜œbÐ…“ã-qZHtFӼݚKEÍÈÂZ`ŠOo˜üÈ%‹ÍäbÀúß¶ÛÃÂO­4<‚Y>Î;Q-GΠz!0ƒ˜€“"¨†>68 ¥¹ðUè'ÅÝN¯aæó]úu»©ÏdÏ„g{µ+W(¦ò³©G~sˆ½àä8Î"ª"©*QÔ(*¤ŠØ NT¢s½J6åªÞΘ¶Ma‚®–oœæI3ŠVÛ¹¹ §EÜ0Ùëò4 ‚	ðügŸ>ï䍰5Å›gl³@âƒAÇñP¶³Æ+UlÝí€|ã>t‡4m’è”<$&4¡X\‰¯Õ˜j±?ªÏ&Ù~(sQ†1¿lö®ÔíÑðª¸ê      µVn€ÕOùχ>}‘ùAoËOÝ|(‡åϦ÷¦Lž™ôíÐ7’(.óR»ÛÃ&$‰$Æi½õÀòòªq¾;ç.}Üñ«çTBôï${ªZ¦ã6‚9Æ0ütÙ0ﶬ»Eó¬8év»ïÛ¿ñÔÖ-Lª¬æW>—9¨l‡Û¥Ú×Ϋ£}â^ÕѾÅI&qeÕL$šÃ®Ö¾uÓ£ž"oÈnÅu‡|bœøsÏWJì¹|uj5âó7ô§Ѽ'FüÝYÓù‡ŽüçÔ9ÜV½ý]ð׍%OøžÁìOóû6%ì{¾Äû¹Îæñ…ƒER]‰W»Sîç;›Æ
+Iv%^íO»œîoH抜»¯v§ÝÎw7Œ,*’ìJ½ÚŸw9ÜÞ0°hªK±*÷j}ÜçsxÂÁ¢©.īݩ÷sÍãФ»¯v§ÝÎw7Œ,*’ìJ½ÚŸw9ÜÞ0°hªK±*÷j}ÜçsxÂÁ¢©.īݩ÷sÍãФ»¯v§ÝÎw7Œ,*’ìJ½ÚŸw9ÜÞ0°hªK±*÷j}ÜçsxÂÁ¢©.īݩ÷sÍãФ»¯v§ÝÎw7Œ,YƒõsŽ{=àöÉÁûc×áî§¾ÕT	
+i£Õ¶Ú’^½·Î_go]¡öya W£'Ô4‘Äéõz•͢·ë8Fòt6¶C :ÿœÆ9„eXÌY&32Ye"©JUAòØÐxˆéÎ{‘uU·Lt½¾Uß]ئ¿Ê«Â«•W³ªòx       mU› °x:sw]»<©æÅë§ÙûLF)Å6’ªwgEhÊ\épjj£Ý–ãMrÛi„©I5JÜurËŒ0ÄΛÓjêtß+‹ÛåY3:•œ1Ð]„鿞õ7½fË^°òé'…©$J¤â"ªk—.ÊlçŒÿŸ»¤LI\“Šƒ7a‹©NîøÊ6»’×q%Ú®—9èÎLà0Äc(Æ#Êtƒ<p¹mM¹ãd̹iw-Zââof*f®–È9æg<Zx᝼`p‘M o§ºÝ4á(â¨(pmÎ)œuÄÞ¥mXÇ— $?Ò	/®»tö”P§µéá4 ·u¹ºad'¸€8U¶·¼j¶›Ýc7[àÒõµ7ÛÚø	³Nå»óá¾>^9犧@        :õ;z6/Wçîû4ýa›Žµ7©á‹–T©ÁÃzÞÛpÅšísðÄãbaŒbVXÄÙ"î\Bík™ÓÎÔÙYK”E\´*;Þ15úÍ›Fê4£D¨©eƒLD’ILƒ°`P ÝÁ:Iߘ33b#Œ~)qª˜©™UT¬kà™m9¨k²K˜N}«eßvŠ©u:bZ¢º[uJœæítñëð ~‚ùIù;¾ÔŒ2ñ„Ê%O´iàA³C ƒ^A¡kŒ“9ŠFt™€x_[½9 Õ×X+·8¼g¶ýûÖ»ôð·¿         qyõÅÖ½jòxÕxÜç»ÒEÇ5)L1xßÐ((8Ú+›M®åPÅ4º[ÍgvÙ­²â·ß®c|8šÚ°ž/’$“Œhk77†ËR"ªH
+¤·#"§bsdjgž›Û¨LÑ#®íÝ6´™ÍÃ߇BBV8ÛtRœo$bxTºo[V':ÁÚ¥$R¸oå¡­RtçÞ5ÆCïC¨$1û ™éo#íù`¶BC×ä#zV£ºC/F¾ÁCÒ9qÎ!ÒZ ÌÊ33ˆÀ7¥Ö7\bî©$í
+©!¶šÍ±‡/¼xtéäðã@        æíÕ×›š«2·}¸¨xp¾*ºíx¨I$ò¬Ö
+¦÷Åh3½1Òª”ÖT&nå]ïUY©Ú3w  	 xZð(½¯VùŒD¸éÎ̺]p$™ðÎé­÷¦°7Æ«­Þ+X|0Ô•SzÒ¤Š-)«yÚÛGƒ|1Fúxå
+Ñ©îñè`í3-B‰ˆŽËeͯšÎÛÓØÆòÉU"#ºb‘;† ÏhƳ¶o§qׯ<‡(7!|
+Õï¬è/jo¬w›ç4jŠ®¹ª±‡8¬óÏUÖÂjæpãŽhÔ©…HšœUÆ«5…jeO@›‡N8n’½‰3rG_È	½U™¹Ž³~kË
+P7Þ±,Äå;ƒˆð$¥c¹¸ó3<.^2PªûMy`À™€zç¦Õé(z>!Õ}Î.0…‡AH•³°«É2ˆj‘Ï ž²_GêõnØÝלu©&q¦§MØp¹ÆÓ­ešl|Dñá
+ÎBj/ Ìgê8·{s+¯:qSQ*0©Æ÷³R6¡•U4€,	€ï‡æ¼…œœ8qf1 ×q$鶦ô¥k[p¼ÚÖÙ9^¬+ž:boJŒÚށ¶Øén:_nÃJxƒA¸nëœã¾ÛíÖóuŽ¿ÀpÁ
+=ôã×ÅÙ8É“¯Ÿy+šðÅÏ:ÕMcn¹ñÌ“;«jÐm¿9Ö¶íŸm¶µ×}ºíÆÜ眐ç¥p­ö½úqŽ{jóƵ˞9o!škm¬+vÕÊxâõ·úÃùþ?Ãòá…þÿßþÜÿUƒù‚àÃèúë¶^ðÀ@n«|j¾ÅW£é€  ”ã`¯Úÿ Çìqý_¬?n_]`6òÿ{¿îÎðcAúÂ}}>ø~†Ð?î ŸPNA7ßZà%„°à'Úÿ¶Û9	Àh
+܇¨$(8	œ_¶A$ûÖaíÔ>!ø}°Ø-Ù¸:½@wÀ,70ÈmA;‡Õ€H~pÂrY`?Ü 'Ÿ³û|qÀO`Hwfá:úÁÈ0_᪕D‘`Ø>°$ Ø#j
+»A_Œ3"D6ƒ $šXN¡ˆ/»ÈPt	Aa`° Ø;Ë`™ …TBª e”e”e”e”e”e”e”e”e”e”e”e”e”VW–Ý·íÏ€$8p‚:À T„Ü*ƒ„6
+‘dH†‚Dª¤2¬'¼”””J"‘H¢>>`Ú¬‡È>°êÄ=àû!a‹	яìÚº_€W<Ö`”ƒo±¯ÜµÛÏ`TêÀ(9
+DH$>©à›„Ü,„?xvCÐ>Aß„Í`Ht`ûá1ĉïëZA™ÎDêàû!:…ú¹ñÈ9Ðç¸PPbœ>™@Hq¨$,6A ° O~P6«	Ð:œá8	€ OŒ‰ÜÁ÷CÈêòí}àðÈ$>ÐHœ…‚m~!ÎAà ÷8pÈ}ëöö|Ú	È|ÀL!=BïP¨=Àž€ ñ °Â¨n¹WÍá~¡4!ó‚CæÐL†ÁðÏÄ#°:‡;‡Š$ˆb§Í/ĨL¡*ÁØ6÷—¼9
+‚»‡ˆ(<ƒßAÐ=ƒp!Aî¨?w`Ü+ǸMÂD ¨‰ ý òä:þO9÷÷h6€êÁÙ€ôüÒ	âÏYíPz„»z~ ¢G¨=ÀžðH|Cp˜'°FCÌ0çÐ|B;…Ð	ãAø}Þ`ÿîCðCÚ	üààõ
+	A÷jèP{Ð9
+‚Ã!ö45Èy‡3oAêƒAè`” ˆPRPè	–ƒAï@ ÈbBPO|8	öó°J`ýøÑ#€uC€ž0{²âƒÀ
+
+‚xVÁaAAA~¤‘
+Dˆ~ HTóð„¾ðp…ËÔ>@Ï,	`ö,&h%èœ?¸›ˆP+܃æÍ`Hg§TH‡`²H‡H‘
+Ê
+Üà=CÜ	
+ƒµC¿µHI2DHV9	â«A=Ø'« OPy!‡vðxO€l
+ÃÀ<AÜ;ìú„ð ’}êHl	
+D#À(;…Tª‚q½î‡ÚöB$íRTª%HI2žž@{H‘yBP<‚i
+ ;‡ ‡PB‚ƒé>B‚xÐz	–Ø’!àƒâ	H‘ìCá	ÿñw$S…	küÀ
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,127 @@
+Machine (P#0 total=48346688KB Backend=Linux)
+  Group0 L#0 (total=24182720KB)
+    NUMANode L#0 (P#0 local=6045632KB total=6045632KB)
+      Socket L#0 (P#0 CPUModel="Madison up to 9M cache")
+        L3Cache L#0 (size=9216KB linesize=128 ways=18)
+          L2Cache L#0 (size=256KB linesize=128 ways=8)
+            L1Cache L#0 (size=16KB linesize=64 ways=4)
+              Core L#0 (P#0)
+                PU L#0 (P#0)
+      Socket L#1 (P#0 CPUModel="Madison up to 9M cache")
+        L3Cache L#1 (size=9216KB linesize=128 ways=18)
+          L2Cache L#1 (size=256KB linesize=128 ways=8)
+            L1Cache L#1 (size=16KB linesize=64 ways=4)
+              Core L#1 (P#0)
+                PU L#1 (P#1)
+    NUMANode L#1 (P#1 local=6045696KB total=6045696KB)
+      Socket L#2 (P#512 CPUModel="Madison up to 9M cache")
+        L3Cache L#2 (size=9216KB linesize=128 ways=18)
+          L2Cache L#2 (size=256KB linesize=128 ways=8)
+            L1Cache L#2 (size=16KB linesize=64 ways=4)
+              Core L#2 (P#0)
+                PU L#2 (P#2)
+      Socket L#3 (P#512 CPUModel="Madison up to 9M cache")
+        L3Cache L#3 (size=9216KB linesize=128 ways=18)
+          L2Cache L#3 (size=256KB linesize=128 ways=8)
+            L1Cache L#3 (size=16KB linesize=64 ways=4)
+              Core L#3 (P#0)
+                PU L#3 (P#3)
+    NUMANode L#2 (P#2 local=6045696KB total=6045696KB)
+      Socket L#4 (P#1024 CPUModel="Madison up to 9M cache")
+        L3Cache L#4 (size=9216KB linesize=128 ways=18)
+          L2Cache L#4 (size=256KB linesize=128 ways=8)
+            L1Cache L#4 (size=16KB linesize=64 ways=4)
+              Core L#4 (P#0)
+                PU L#4 (P#4)
+      Socket L#5 (P#1024 CPUModel="Madison up to 9M cache")
+        L3Cache L#5 (size=9216KB linesize=128 ways=18)
+          L2Cache L#5 (size=256KB linesize=128 ways=8)
+            L1Cache L#5 (size=16KB linesize=64 ways=4)
+              Core L#5 (P#0)
+                PU L#5 (P#5)
+    NUMANode L#3 (P#3 local=6045696KB total=6045696KB)
+      Socket L#6 (P#1536 CPUModel="Madison up to 9M cache")
+        L3Cache L#6 (size=9216KB linesize=128 ways=18)
+          L2Cache L#6 (size=256KB linesize=128 ways=8)
+            L1Cache L#6 (size=16KB linesize=64 ways=4)
+              Core L#6 (P#0)
+                PU L#6 (P#6)
+      Socket L#7 (P#1536 CPUModel="Madison up to 9M cache")
+        L3Cache L#7 (size=9216KB linesize=128 ways=18)
+          L2Cache L#7 (size=256KB linesize=128 ways=8)
+            L1Cache L#7 (size=16KB linesize=64 ways=4)
+              Core L#7 (P#0)
+                PU L#7 (P#7)
+  Group0 L#1 (total=24163968KB)
+    NUMANode L#4 (P#4 local=6045696KB total=6045696KB)
+      Socket L#8 (P#2048 CPUModel="Madison up to 9M cache")
+        L3Cache L#8 (size=9216KB linesize=128 ways=18)
+          L2Cache L#8 (size=256KB linesize=128 ways=8)
+            L1Cache L#8 (size=16KB linesize=64 ways=4)
+              Core L#8 (P#0)
+                PU L#8 (P#8)
+      Socket L#9 (P#2048 CPUModel="Madison up to 9M cache")
+        L3Cache L#9 (size=9216KB linesize=128 ways=18)
+          L2Cache L#9 (size=256KB linesize=128 ways=8)
+            L1Cache L#9 (size=16KB linesize=64 ways=4)
+              Core L#9 (P#0)
+                PU L#9 (P#9)
+    NUMANode L#5 (P#5 local=6045632KB total=6045632KB)
+      Socket L#10 (P#2560 CPUModel="Madison up to 9M cache")
+        L3Cache L#10 (size=9216KB linesize=128 ways=18)
+          L2Cache L#10 (size=256KB linesize=128 ways=8)
+            L1Cache L#10 (size=16KB linesize=64 ways=4)
+              Core L#10 (P#0)
+                PU L#10 (P#10)
+      Socket L#11 (P#2560 CPUModel="Madison up to 9M cache")
+        L3Cache L#11 (size=9216KB linesize=128 ways=18)
+          L2Cache L#11 (size=256KB linesize=128 ways=8)
+            L1Cache L#11 (size=16KB linesize=64 ways=4)
+              Core L#11 (P#0)
+                PU L#11 (P#11)
+    NUMANode L#6 (P#6 local=6045696KB total=6045696KB)
+      Socket L#12 (P#3072 CPUModel="Madison up to 9M cache")
+        L3Cache L#12 (size=9216KB linesize=128 ways=18)
+          L2Cache L#12 (size=256KB linesize=128 ways=8)
+            L1Cache L#12 (size=16KB linesize=64 ways=4)
+              Core L#12 (P#0)
+                PU L#12 (P#12)
+      Socket L#13 (P#3072 CPUModel="Madison up to 9M cache")
+        L3Cache L#13 (size=9216KB linesize=128 ways=18)
+          L2Cache L#13 (size=256KB linesize=128 ways=8)
+            L1Cache L#13 (size=16KB linesize=64 ways=4)
+              Core L#13 (P#0)
+                PU L#13 (P#13)
+    NUMANode L#7 (P#7 local=6026944KB total=6026944KB)
+      Socket L#14 (P#3584 CPUModel="Madison up to 9M cache")
+        L3Cache L#14 (size=9216KB linesize=128 ways=18)
+          L2Cache L#14 (size=256KB linesize=128 ways=8)
+            L1Cache L#14 (size=16KB linesize=64 ways=4)
+              Core L#14 (P#0)
+                PU L#14 (P#14)
+      Socket L#15 (P#3584 CPUModel="Madison up to 9M cache")
+        L3Cache L#15 (size=9216KB linesize=128 ways=18)
+          L2Cache L#15 (size=256KB linesize=128 ways=8)
+            L1Cache L#15 (size=16KB linesize=64 ways=4)
+              Core L#15 (P#0)
+                PU L#15 (P#15)
+depth 0:	1 Machine (type #1)
+ depth 1:	2 Groups (type #7)
+  depth 2:	8 NUMANodes (type #2)
+   depth 3:	16 Sockets (type #3)
+    depth 4:	16 Caches (type #4)
+     depth 5:	16 Caches (type #4)
+      depth 6:	16 Caches (type #4)
+       depth 7:	16 Cores (type #5)
+        depth 8:	16 PUs (type #6)
+latency matrix between NUMANodes (depth 2) by logical indexes:
+  index     0     1     2     3     4     5     6     7
+      0 1.000 2.500 2.500 2.500 2.900 2.900 2.900 2.900
+      1 2.500 1.000 2.500 2.500 2.900 2.900 2.900 2.900
+      2 2.500 2.500 1.000 2.500 2.900 2.900 2.900 2.900
+      3 2.500 2.500 2.500 1.000 2.900 2.900 2.900 2.900
+      4 2.900 2.900 2.900 2.900 1.000 2.500 2.500 2.500
+      5 2.900 2.900 2.900 2.900 2.500 1.000 2.500 2.500
+      6 2.900 2.900 2.900 2.900 2.500 2.500 1.000 2.500
+      7 2.900 2.900 2.900 2.900 2.500 2.500 2.500 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/16ia64-8n2s.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,48 @@
+BZh91AY&SYü+ËoÇÿÐÞóßÿö=ïÿ€ÿïÿòÀ   kø`&þù\ |ó Cnø ^óK–óÎÉŸAOCËÄ À )w0 rË(Œº\šèÈ"…€       $ýSOÿÕUÿõUH?T           S0T™TSôÕ?JhÓFš €      i§êƒSÙR§§ªž©é?J  
+42
+      SõISM5&“Ô4Ð  h Ð      "¤¦†€ € € Р4    TP‚ š 4£LÈL‘¡ê 2oTш=Mš† 6ˆi´`3@ ’Àœpy `sÍ…J•2#(ÂI'õÔ~a7Bˆ¤“t¨JÀ'4GC	ùÆDBO Ý0‰Fl€_ª€IUX*ªù<D“Æ$	Œ$‰!$©$80s€p{89ÁÀ9ÎøŸP_«õ½}T’ŸZÉ(’DW0%%I%mM§Nœ&éz•Ó„Ý4ͦ$©lkz°—¥%.œ%iÃT)%Kæ%›š®Ó·Nt•¤éÍQE°Ã
+ÁEL—c›[‡0QDVÃ7ETÞ–q¢N`BŠ(­†nŠ(¤Ù‚R©¼¶
+mŠkm[hRÀd•$¥°C£dµ$¥³2MÁ-µ(^m³waEf-›vìÔÞ½²"nÝ»$9RF[&¤JU»™^eY•fE™S²æE˜ÖeUU™VeY•:
+¶¤”¶f[´‰#‰#-‹$‰%-›‚IjIKf7f`ˆ(­†BŠ •·˜bŠ+a†¢Š)Òmµ$¬²<¤!z Q`Ë£Cê*s2Ap‚
+¤m ƒi° ÚAÒ.B‘$‰ ¬Ib“îߍøåHÌHˆ&Iq$’rŒFb),`©‰[PÄ©Vn0Èö¶Z¶SÅ$“
+­ÊÓ32dI0̵*·s2!2µ†,Û@0©•‚ÊÜ«m2,µ"ÌÝÌÈÌÉe`‹3R2ÍÜ̐„˜ªM&“éœôÄM™ÆÃ-ìͶ‹L&‡Lï[®Æó9ÝŒôˆâ³¤µ$èÛ9ΑKmÓDÊ22¸—€3&ªÛºÝ€”%Hq%²ÙP RÅX &Ót–ØÙl¶[I-DC»2ºåÑ›º\ÌË•ÄNm»»¦nZ’FJ$’F]ÙZÂ£!uÊÎfwC¾&ìæÛ»»wå]iœD;²®¹tNn1lÄbªØÒbËV×D:‡ßÂvF1&1Q„GL&"FBTˆ%‰c!ÂX©VÔ°©A`²-²*RÙ*TT¡d¶RD¶Ê•,BY
+*JhŠ*D-ˆÈžáÌ6N‰‚Sò&v³økˍ¯}boùƒéΤý¡×ÿÃ_cs•W‘U^EU@UV ભ•„@„@„@„	ÄÅ‹!!!p›÷ïx^-ò[%§e8gV0rÆÓ–0ZZZZ`€fŸì Õ”Ö§Œ²׌·©ã-êxËzž2Þ§Œ·©ã-êxËÐÊx‹ãÔñ—âxË¢2؅̆z¹Äg}ˆ~M¸ [£G ¾w ƒé Ym…SÆÄ˜¤÷åƒ6&ʼn…1baLX˜S&ňûâCó†á€¡ã|üwòÚìÆvÏ—žr¶íõŸ=\scùé¿N˜`;É> èÖý5ÏNœq×·=3Ÿš@ƒÕƒøâ@–æŸÈö>ÀØ0Dö
+‡Ä,‘ûü!AÕª•ÆEB¥É ŒÈ>a `<Wµ˜q¿LãïÆpÍÖ8Îv¸ÕÛÐjÁ±
+ÞÕ͘¸¸ÅÅ«—S[mH¨YJX)ä’Iœ‘e#ž—9#¥“ÓLãëÁ°FáCä÷{~oÍì÷jr›jrܲI[I~ ΟRޝ¶Ûd¶Ûz }u×Þ Ý `}uÕë×p´í©£-ºµ«nM®[Ѝí«mu×mŽ»-SUrÉm¶ô ¾ à Û|„··ÒÕ·)‘ÉZ)e+L2åÎfIsssa\%¹L93\Ê`d0ÌÍLfÉr.RÂÛ-³4™Qj«[ˆ? {½Ä$$„ÞsÖßÝºÜā;`8H¡¸_KŒcÓ*ªª¨UU¨*ªªUUI;¹öÀí Ûëåïå¶Û[m»|ùýüÝóýØ>!Ë<¿, òY䳜  9eË###j«qÄ
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€
+ª *¨ ª ª€Ã0Ã0;v 9À œ Û|Âw‚$yHòãŽ8ññññãŽ8ãŽ8ò&$“Öµ­k\“I‰5«n€ÒªªÅU¶ *¨Z¶ÕUBئµ­nßÇ‹,ñUg‹·nݼ] ÙÒÎp -¶Öb3\¹$¼xÛk6!³ŠªUjX¬H-ŠÅbB­¶Ûm­œ³œ  9eË.ꬪÎúª«9“UY98âU T UPU@U víÓ§N:víÛ·^ …¬ç  b8Ä¶Ô  ,fh nnîî8>aÎpÁQõë™xÙÝgzŸR—rÌoS%¹Ä3%y—Iáeí‰u‹5­·In“#f""¢,*D“ïÂnœ§dÑ<ìã~…îk/'å` Õ]¼*º<<7Ç麠Áø=g»™»ôóؼ-ézN½Ö¦š×¥üE¶q¨ÝHxYˆûy ü@Ú½Ä 7@        6«˜ªJ¬ç ¶Ûp)›&Éâ"X$"Iîîž	‘7M“–<xÛ Ô‘!MÓ)¤ñõÀ5†½‚;²@… „”5‚J'íµd,‘`ì?rGîÂpJ0™Jc6,SB¦Ÿj5µ¶Û_oåö£öæòI’~ÚƒݼŸj}¯·m‘´#R4p›
+ÇÓñ÷Çî÷qÕË(ð&£I¤v&ÃFFÒwL£rhÒMGbHÑ2ev¹v¸U [Ñ	 jBq'm}äԇ£0~o»©÷ª%…J"T’BB~¸‰€‘#èúâBLhë<>[;ÀÆ:‹©²òd¸É²jr˜Ù$\Lb	¿;ã	ÍÚBÑ$¶—8D1ƒYH#Z3dÃ}¸Õòç‰Æ1&ÌÛ×8pàëRÌn1‹r8ݽՙßUÒñ¿
+¶c~8ñ†ú³Ä3·;óuŘ.8+4Ömž”ÄIêî÷Ô 
+½AêzAa‚Þ´+4E5Ö•¹Q»‹€s-¹™£4Q‚ní]o´ÆÆÛãm¿|3ûÉÓõ×’Àü íߦUÕYyÕ^<þUn€        mW1T•YÎ Õ^Oܽ?jÙ¬Ïà÷¯w1eë3ùàL›7qÕé7¸¦4÷]x»ÖÅ™ï1¬õêãÆ$rß8範HZõÁ‹}{å||k­uq1=ÙzNêéÛr»w‰þO/‡¨ÄyQА'|bžqÎîzƒ]òñé¿—}®«vìLzôg¯”Hé‡NÞ³†»Üû¾ÚNžxéqå{ùxxc~1\a¬$õ'[å6t©éÞ5áÓG´HZ{{lž6x¶ëßløoªºÄéØ=¼›õò‰O;'^ݽ´èåásãwã¾¼8Û}驜O+«W.A¹éR9±<-ܐ'·äßo,ºãsbg8‘íÙ` ©ƒòÿßGùûÿ€{ÿì‚߼ϡ“ëíÿÞ„Sì|µ[ts=h~[¦y“ͽô"Ÿ%ªÛ ƒ™êâHg<ÛßB)ÙòZ­º=°Ã<€¹ò'›{èE;>KU·G Vl3ÄÏ 2y·¾„S³äµ[tzfÃ<@Éò'›{èE;>KU·G Vl3ÄÏ 2y·¾„S³äµ[tzfÃ<@Éò'›{èE;>KU·G Vk9áºg<ÛßB)ÙòZ­º9ž™Ï-Ó<€ÉæÞúNÏ’ÕmÐAÌõñ$3Èžmï¡ìù-VÝÏPÏ2C<€ÉæÞúNÏ’ÕmÐAÌõñ$3Èžmï¡ìù-VÝÏPÏ2C<€ÉæÞúNÏ’ÕmÐAÌõñ$3Èžmï¡ìù-VÝÏPÏ2C<€ÉæÞúNÏ’ÕmÐAÌß{c¿ëϰÛoÿ›ºúmÝKR>ÿcn¶Ûu¶Ø÷}/£öø>ŸýôwÇÍÂ>ªDïQqöm~ΞAúûnñúò×ÙÓëòëÇÄGÞç=‹ã±yÖü¥ÄsPŽ]
+ÂF5Œ¡‰©€ÜŲŒƒ£d¨ê¼S^1Y¤T%žIÃ'’bnã’KSp¼H[±$ž’x9ïÚ­Ð        
+ªæ*’«9Ëm¶ÛmÀ<¼{ß*í5ê˜ØDõNÞÁ϶Øt©;½wí·…ãUœáv¯ÚÐÖp"ÉF1ér#OO×N8«7ÇF}DOvü5-—‹‰z\Œ—	bc	#9g"X&rU—7œ‰7K]«k¤C>ÃmË*íxÌD&Kœw
 ©ãÓáŒD[!íß f‰á×=ô½‹jÝ[‰$‡ŠyÔ¶Z˜Ô['1RÅ$²–JT±ápœ÷çE¦ª§Z˜y\*'lLH²v¸0ìÁ«"ŤéZå¼bÙ×q•#*±š5I<,Åñ›f3sˆâÄwâkZ$	˜½ñŒbãœoŸxÁš'cµ®1μ5½ü Mú]±×Á¾3yÓCs_«’¡šѐišÛn3ÐAææM¢LÝZ¡ÂÔÃe¼˜¬@psäœàù7ÍüUÝãÓã]â=ƒáŸ†C¶Ûm¶Ð       Ú®b©*³œ 
+ª¶;W—”Ïã~
+óm­ñŽ|~Õ¶õ¾&¸s[c ¯åøõ»ò|…íæ;õ{íõë6žztâã;33¬óXH‡[sÙ€¹Øô7n'<ö¼k†sjÛo~qžíœþ;Öt¼s™­`ÅÕëЄ²Bú#3—uf÷É·‡  Q¡{%pë7ZÅ‹Àv…šæÑ¤A@‚iNGKÖXA̯31è×Û¾XÛmµ±Æó{®	!#1Ÿ¤¢Ù%ŠJ–JN‰äÓ¡&ÊCº
+4ð
+†7¤tðã.Æq‹¥­ü;²ÌªÏ7žh        ¹n€¶ÛßVçéTí·GgªkÝ'Žüõá:ù^áwÞ›rºg…,»÷,Þ‰«e’‚”ÆàxœM)vëÆXÞO\±+:¸®«¾Æªç9é[kUæÄ*H"ïÒó[g™±ÄG<íÇEqoc|‘Ú­’I°Ú«eÍcnºvÜïÓf¹]K3·<3m[,²·Áƒ0nó@Ù¤€¶ü6ô1ÌÕñü?9Îs“¹àëàïrA¡n,	ö
+!ŠÝ!<¤—$^2‚з#¹™ƒ6cKÝšÞÓÃO9Îs›Îsœ Ç« ¨¨RÆýöšøWšë®þâ#^g<À        rÝ |ʯ‡x'=åŒïMøÝ©6±‚È¥’Ë'l0Zž¸ÁlÖÖí[ËqÎv:R;¼]v€Ìæg3®T·ž–õ¦|ÄOkëÀX÷=jmÒÆ
+]ëÝX¼\®XºÇ6o[nÆë,ÛKeŽÖȶXF±–P„¹HÊV+YÆlÞ¥»¼d’M³+lLç½Ó,Õ™œD˜*JYÏ=4hÚN˜«ÆÓm\³Ic›Ñ…%³Ìd1&s7«ƒß
+1í\ùW^ü~›58#:
+ÅÞY.Ùåï	æhX®f]ÞE·8Æøk|a¾±ï›”:VÙÐ=m¾9HøØÙ‹Û9ͺ¸béq¦œû{$,Y6U±vߌêæÜhо—Ö¥v±‰åG>S®Û&ØbU3³3&ÄÄÂL6¬Ívh&¦¹í­÷Äcvõe—ã5‰½ˆÃ5¡"dÁˆˆM²ÊÜÉ$8Î,ÊÜbawçls´sӏ<âjºÓÂÌ»bf·£Ž19éyž`{Ã|ÿÒ$	†:ãžq|ÒA›ïîº™Úe«^
+wºëÆ8æl`Æüä2ž{N€:ÜÖ4t u‚ôZÝܾÈ~B'^$5YÀÃz  3ƒœÝŽÎnJ0Ó‚t+B(I2LÛŠŒÝˇ9%£
+˜ánØšÖ,Öøß;½·ç·‘æÏOHod…‹'wg‡Ž\xIޝ+*­²ìåÎ'ز–spYÝq)V[¶°›oÄÆ&ÎJÚyÖ1âÀÓꮇ3Šú`|ìåÃÌõëƒ×0©ƒ›ç}Ù)Òš\ā8ð’I7‰s±Åùæÿ+6в¦'0×V6‰­LIµq¶u‹onÛû“®îÀà=Ë›{xnÎ;Ý®nXÆ®qYÂç8‘æ7Ûv*±‘=£MüyÛ;xí¿	\ºØ>/CpëÒÙ×£ZÞ’J‚„{Öý1Åfã>è'óg^9É'œHÏ-›]³o‹ÇpÇ@í·^=/NqµÛ¦™qßw£ÁÛ:s¾ye¿ã>üžß•îgòãV]a>ÁΛµs¢D³1Ò®ræt5™¶ô  fg?Ú¯Û•·EŸ‡+¥•ù¿?[Ê©ó…ab°¤3•
+µô‡nùi
+¦ƒæ‡þ‚ÿOñjÉÒA ÈdW¥þ*ú‚è<(Û˜{áë7À´Uþ@ÀPÆ!Ô>€=¿T6ñ…,-“Š¢‚:<ÉÔY)&~Hwþ ýîÊ?šÀڝy„÷ÃÝ´=Ð÷ùƆt:M‚uÅ’ÑòüI9‡õŒøÇŒ[e¥õ ~ >­…þ[%“P r…
+ëùÃôā<Äâ†!þ¨z‚Cô?˜Z }0ðÜŒ>€±#o:‡‰8΁è¡¡띡¨'Îü |@Üh@{Àü z‰ÔžC€–$	¾¤Jõïõ½?áç3€ð‡!‘CÚ
+ L¸; Ð`2P5â†á'Ÿ¨L@‰Áú¡¼>¸urƒôT0`uˆä@›†ôô!P©R¤–"رJT|ãè×̬>PÀbP!PMü|E·ˆ`bNa˜|€èÏÈn0Á6ƒâÐÌ?¦ úû¨ó†ûȉØ,õ=°ÿËî‡a@ r;D<°!è N<ê*[bØ“¸
+â L 8:|Þ öGÎ(d“愵$Pâ$	°¡çØ'È	<ƒÈ<€ù˜A!è6À2°>Ϙ±Ð `(>QzuÔÀó üCè‚ýùâ@žð!{a‹€˜{ÃÈ>Èy‡Ð`_¤2ä=È܈GH´#ÓÝ Œ"z‚z?2‡Ó!ñ÷ñ‰uù@ÐE¼~ÓÚ{‡Ô{ÃÄ<䀖‘1ÿÕ; N¡åà8†W`múÚ$	 z
+_÷â@˜‡öaò€ï
+@è(Y7
+ý@Û=ÃÊ!?1²AÀä<‡ìŠ9@ýd|CÐ=óä‘CâöÄ}4‹H²PŠHŸ(= qýä$ú€ûO¾÷°u†áåÜ$û¡°t	æ8ïÛâG¸z‡”> >:‡0Ôö—û@v‡PõˆIx…Ÿ>¤ž’'„›D7A#õƒ ÈO¸Xd¿!ñ
+‡ z‡Ø>P?JÃ9
+Èi$	ôC€Þñ
+	Rˆ¨øD(08¾ÿîÑR@˜D	½’7¤ž|î܇h'ÊÊlÐ(7pÀ×p4(ïÔ
+D{Bޱ M’@M¿c @¸£H`1„X’	”#ˀ̐Ž€l8ʃ=ᐓ9 /]Â(Üd LÑü‘'€~Ÿ ÞJ(‘˜|Ã¸~DHúâ@Ÿ=C×ÑQ>P¢A23Ü@‡P=ßx>€“0ø@í°`ĐÞ˜  âîH§
+ƒey`
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,5 @@
+Machine (P#0 local=8299024KB total=8299024KB Backend=Linux)
+  PU L#0 (P#0)
+depth 0:	1 Machine (type #1)
+ depth 1:	1 PU (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/1alpha.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,14 @@
+BZh91AY&SY„æ%I µ¥ÿô Hgÿò?_ªÿïÿð    Pާ½k=Þõz˜J!Fš4y&G“PÈê4  20€4©íSÒi¦ji         h	I¢š4=!ê4h¦€   4´¤)êz!µ4Ðѵ4  d Ð€ I4И54z™G¦‘µ  h Ð
+2mKÈ_1W&,&C†"Ä‚"ME¥µ
+¨H<ÇäZbj`LM"WaÛND=ê®;·”S^Àä„qâ_eµÑTk½Ú‹2ýÔ+ª^‚¹¨,ß‚6Ýw»•
+6¦§I#©ZV¬	‰%¦Ñ(šH7€(«š¥(“sÁ°I  O’‰¥S²
+,x4ãÎéÂó´Æ´Äâzk"-Ì@œaí¢Br%d®CÒc„jÚÙòRÔˍ­
+€Ó6h†lfªªf¡¾C=Faß¡²Uú#‹v ÆZ"ß”ÊUl‹é{õêœpá<2¸©	(	°@  Jħj$ŃkFÒ·ƈt|=ç7ÍôÚäʆ}Øš‘j\0𳄒9bÐÛj	,”§°l›7¦—0^LžŒeàÌ‚øu©/{Õ«¸ˆB&•¸‹qE~}ýH–teÔ|GxL„0†q.¬@Æ‘Ô2ÀÉœÜÐÊ:Øm³	mÔ“MHz™,®b£9a¤ÈNéµ`ÈŠµDdªè3pç#Bn%!‹Î¿¶ô ÕÊ’Xqr€!ó!I=û»†E2)ˆGŒFÀ¼K°1fEpÂFÚ‰¸{ê&`!é…ùâñ`1 at dufפ!bÆÕË9ŒÔa‡A.
+Ú¦×fyZðåQÑDÐÙd•u­Bd/+"
+)eK!»•s€ÂöWµªG?»úàï(×ÈjvÍ| TÔ¡º[ ,ë-ù_£¤iÓ ½f"ÃÅš
+Vפu¯­ù0œ`XÖ<ÚR¯«±3Óó`¥ó
+–sÅbY$‚¥—ª9êF¶œ²8‚9ށruâ³–’ûƒY°ÅFG‰ÿ¤ÛA¸Ì‰m¨g
+±DBùl’І¡šàµ=ÉKÝˇ8õÅÏAB“v ҶVŽŒÂq4s𭄐L-8K˜(> HÄ‚MOmôB¢¢’“¤˜Õ’85–}
+쎕;#G[}3ße‘0ï‰Ú Mœq¼·‘ l*ÅÆêÃrâÃ!IïzWg–½;„§
+‡rR؝I5¹RI”ûåƒ2ÅåíHFb‰‡+ÓôjzrÆ&a½ª¬µ´m”Ä«¢ ¡‡Ä¦R-)éˆ0²29Íòiƒ*f®÷£ó¤˜*S\£–¥½›¬lÆÄžC89bƒqF‡-vx‹H·È?K³½UD––i!$žGœ•‰žª*F4|Ïy	#óßyŠ'µDá1Cë’0ÈîŽ *¡1”Ü–Ó}ҏ+ã’::Qµä¥)Izغ‹³\8sš«Ã.Ò0/âîH§
+œÄ© 
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/20s390-2g6s4c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/20s390-2g6s4c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/20s390-2g6s4c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,57 @@
+Machine (P#0 local=2053992KB total=2053992KB Backend=Linux)
+  Group0 L#0 (P#4)
+    Socket L#0
+      Core L#0 (P#1)
+        PU L#0 (P#0)
+      Core L#1 (P#1)
+        PU L#1 (P#1)
+      Core L#2 (P#1)
+        PU L#2 (P#2)
+    Socket L#1
+      Core L#3 (P#2)
+        PU L#3 (P#3)
+      Core L#4 (P#2)
+        PU L#4 (P#4)
+      Core L#5 (P#2)
+        PU L#5 (P#5)
+      Core L#6 (P#2)
+        PU L#6 (P#6)
+    Socket L#2
+      Core L#7 (P#3)
+        PU L#7 (P#7)
+      Core L#8 (P#3)
+        PU L#8 (P#8)
+      Core L#9 (P#3)
+        PU L#9 (P#9)
+    Socket L#3
+      Core L#10 (P#4)
+        PU L#10 (P#10)
+      Core L#11 (P#4)
+        PU L#11 (P#11)
+      Core L#12 (P#4)
+        PU L#12 (P#12)
+    Socket L#4
+      Core L#13 (P#5)
+        PU L#13 (P#13)
+      Core L#14 (P#5)
+        PU L#14 (P#14)
+    Socket L#5
+      Core L#15 (P#6)
+        PU L#15 (P#15)
+  Group0 L#1 (P#3)
+    Socket L#6
+      Core L#16 (P#1)
+        PU L#16 (P#16)
+    Socket L#7
+      Core L#17 (P#2)
+        PU L#17 (P#17)
+      Core L#18 (P#2)
+        PU L#18 (P#18)
+      Core L#19 (P#2)
+        PU L#19 (P#19)
+depth 0:	1 Machine (type #1)
+ depth 1:	2 Groups (type #7)
+  depth 2:	8 Sockets (type #3)
+   depth 3:	20 Cores (type #5)
+    depth 4:	20 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/20s390-2g6s4c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/20s390-2g6s4c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/20s390-2g6s4c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,35 @@
+BZh91AY&SYN*% Hzÿ“ÿÿËïÿÿÿÿÿ߀ÿïÿð  €ø`$=õ窐ꢥsÍÊûqð**{`û‰|ú7:Û³®s³€ݪ‚Y޶ÅÜç\—,tÒÍÎÕÊ]ãÞQ      D%›ÓÿõQU?Þ©¤õ5 at i£Ô  b        i¤ÌŠ„§             
+0„šSÔ5M4Ð 0€4   šd PgªH“Lԍ õ   €  †€h  ¤£F¢)§€£Ô2z€4m€ h¥ƒOHÐ  ¢ˆ ™  HÓE='êžD{$ž£Ô4  
+¡µ2=OP¦ž§¡?l³Î–%„A&L’Å–ßüÑ‘ú˜GèEÕÕÁFQªMäÀ	6–k‘,ž|³i0m´ÑHÂ2Œ‘„YEI*?ƒ~¬µß“ìû/îÿ?óCú?Ÿ¼ŽÞ|ùóçÏŸ>|ù‘ÍùðFd~Ÿw£½F²2ŠQüYFQ寖uÎ?ypGGñþòõÂB~³1Åt¬Ù÷»!!7Iæ–ÄŠ€ÏÉ		ïF$E"ĉIàì’Œ@’z=5÷ûýþý÷Ý»»»±Ëvpåà·¹²I7uí«9¦ Ù“vI&îÈL%fa:$	݆ƒkœž&ši ÓM53-4ÓM4Ò.Uƒ«FkSnÕËÍÌÕŠ^inn‡ŽÛf(-•Vi§v[ãm¶m¶Ú»<tÔ¹·ÆñÄ.‹o6æÛ»›ªÆÂÅæéXômÞkm†Ûm‹ç8Óu"ì¹°iM‰š•‘U\žeJ&¯14ÓM4Ó%4ÓM4Ó’7wBW,¨Îæìõ„®iQœÍُ[¸Tg3vIWo»NîbÀ”˜Tg3v9,½*3¹»a,Ý*3¹»1àKw
+ŒænÇ0%—¥Fw7f^M+YÜÝŽ`K/JŒînÇ0%—¥Fw7c˜ËÒ£;›³·p¨Îf섳t¨Îæìǁ-Ü*3™»À–^•ÜÝŽ`K/JŒînÇ0%—¥Fw7c˜ËÒ£;›±Ì	eéQÍØFkß
+7Æ—^$ý0›¡!3Pœ’I$j’[¬$&ÈH]·¶{“ž`ç¾jì³[ wnš’Î[¢bÅÂ+TeÂ0Ž)¶Øµ¦qs Lì–p´@µd€-"ÁKm«V­ZŠ„´H²XKb[ºÛ30Ì$ºK»Y›ëY32ff!,Õ» J’`¬¶âÉxÂDKVÛm±ÄK?*É$H`*I!Š˜¸P²Yl”))%µ$Ya$°²"J²DKP´‰f$X¤xç^œ8ÈY!jÙ ²!d,‘%«']8òÌãB‹/v³ÇffffdµjúóÛ}yqkžzñrÎ3ž¹ÔtÖqnfŒ;¦N–lág%òÂÏ›d˜€L ‰&Ð@°x‚Á,IÑ:ƒ sÍÒ8	É@"H ‚<A$Fºì‚H$‚!‚e¦Ù!+-7f+|17ØÄßc@_AVí-·©Û`Ylµ®ÒÍè–ÆÂLòá¶Ò5–$D,ƒ¶É!ýŒQôX“/£úÂ=Û|Ÿ‹Ž)	’NWOÕœyxvöû{ÈgYdŠz){¹î›|÷	3“WÇéoW¢È|è©Z¹´¾ˆ;â":z¦ÌèaÞÝÈ;¾‡˜Vyé­êo¿yg<7bm_jÅ®erW–s­rþ^J=È‹à PßNù€¿;Éëñ †Ðær׎ ¾
+–7·‚F+Ò9Ðk¡=g‰eD©ÆäÊ­2
+
+¹¤‚ƒfΑVÝÿ…ÐJþùîÂI	²Š>à™€°#ÿ<‡·ŸoÒðéHçُÕÚG¶Ùb>ý@ç»pDí#Џ¬fI)Ùïß[·Ìcqø#©5Š…¶â=¨HM3?vð#xHO½õ¢c•\·KžXê¹ ±ä]—kÌ×mü‘ǽm5i¦ši¦š q3{Þ÷½ï{€  x‰™ÓŽ"cv•UUUU@™oÛ¯,²Ë,²Ë,€   ¾[wÛlkªªªªª /º"cÆ1Œc 1[+jVÛQ1UUUUT |艋Ú÷½ï{Ü<xñìâGaŠE"‘HçyóçÏŸ>|À‰…€ ‰‹ÄLZ"b‘H¤^ø@—º!lBØ…±bÄ-ˆ[¶!lBØ…±bÄ-ˆ[¶!lH‹Zbb-i‰ˆ¶ÛqZ"b­UUUT qoŽf<"@—ºùg#Â&î½ÝÝÝÝÝ{»¸pÛmuۏ(‰vpp  áÄLE²åêÒÜS3m_ž­Öµ¹V˜˜ÎÙçžyçž`Ñâ&-1‹cÆ1Ž»»»»»¹Ô“ãòx AõgÁÏ'(¨$Ùn¢ €Ù&v‘R;ȤR)÷¿¿¿¿¿víÀ                                    Í›6l        dÏ3:âf"f-8¿sÛ½Ø7o™ÜcÝ2îYÁ/qG¨­“ÖE‹°ì0œlÌ·±$´ÝéynÂ$–Kd»%–e T É$F$$"p¤Îœ9´¶ñáê#w¶9O¯ç;3ÎÇ;­Í‡ÖöVµ¦øÆ]jc·²Î4n„„üŸgÙ›êå?/3ÎxDbç@        ’Ù.òÝü#;Þ’T„KéásjqÛçŸ_''&‰¾ûdÆI›1r¦	U”ªJYÀz<æ¥!(¢" CH(HM!<šzy…{e¢å›•ë☌G*Ł,€L@˜’ˆAÄ+ \QP‰@'z€J!b	„Ѐ\ðI	ßòæ‰}H„8bxľ	}ݢő:Y}.ƒLI„É0IÄÁƒË0	8ÍM¦R§³[[Ó‡?W<yÂk„¼%a8ÕÐ
+P@\„–H‘œÚ±ý"I‚˜R£ÉÉòHHL0ÆYXÃlÇÏòbM¡!+O…{qríû8m¢þ÷©x`b‹Z•ZiZc†ŒÝa1ÃŽP3œHŒXuË13‡¢˜a«$‰Œ0(P8CÜ–,#M Œ#
 +P.©RB²µv;)˜†ÐDDÑÔ_æØç.CÁVúðX@ÛnFMÌÒVÕ0ˆ‚k8ª­‡8£¸ât¤ïšv¨
+ )Bž›  P­PÿAvá<çkà8xöÓÊ{v®H£Ýz&K7Ñ–Õë›4½²òì9p»²öܿԿ'Ã] °ª¡çg%ì2͵ÿ/]È  Yad–XI,¤²–XKid°’Y    ;ºõqÄNþÚóä³ÛõoIƒ üžNÀļ^!{MîSß>
+‘Ûµø;È'Á¡ººØR-´‹d„¶Ò-‰-lYõé|5ãà„„åš½zðœ·0OjôúT(ÂI&$ ¤Ù;ÍÓ®¸µxpìÅÃϳ–‹寒ð‹aH¯ÁÖ  Gšó¹ßw"g¼vܘQ†ÑîG¯(Vwç9×ò”Àªë„Р-ŽõQ«œffnüÓ~y……Ò3œ²[%^`‚Ns¦õu"§r0gˆp	 t	'ÌùÂL@&6gßQÕ—v:8¼ƒ ·˜ œqø¡!3mÆýXHqÒ®{û3¯lÇ@cNg®Äõî}È”f‚œAU·1áwmî4ñ^nlÙ—â™,½²ñ3·.i{eå¯×¡UA@(((/†ÞÝ÷—ŠäñY<\ú2l“–¶g‘©­À      m¶Ûm¸ÑÛŽzc‡Ÿ(HOÜ„„êážþž>‚K=ó@‘M¤¸¦_'þ?ï²ÿ¯¢ÿƒý,j$I8ÉÿåQ|I€>¹¡eÚ\ßŔŷÃÕ"„
+JFj nÙÊE”¬œÇ f^`­(@´¥lî¸2óiB¥+guÀ—˜+J-)[;® ̼ÁZPiJÙÝpeæ
+Ò„JVÎë€3/0Q6 UÜÞNc€3/pQ6 UÜÞNc€3/0T›*êo'1À—˜*Mˆ{+guÀ—¸*Mˆ{#Nꀶv‘B-‘§Z€½;H¡–ÈÓ­@
+ޝ¤PIHÍ@
+Û9H¡’‘‡€¶r‘B%#5 7lå"„
+JFj nÙÊE”Œ8Ô Ý³”Šmm·Sww½óðÒé}Í3—²£ÎÄZ––(¶+|#
+}¼7٦φºýÂIÁ­-–%šKfb吶&馬±Œ¶‰ )cuUY¢íAylb…ŠÕj€5$ь攵%•TÎ’U±Eª ¢Bª¾Þ`ې½Kzn* ‘0ÐbâÈÅÆ1‹ñÐŽ9Ó$sÎs$uŽ5‚gš»ìnwíõ€¡%вH&è(Ð/ìääÂBk0±­`biXîÐfÀ­:9ÞΓ…Æ›°Ûn›ñk´„ÌeL*ŠŒ_£1ËÇ[Š¶Â©29Þ<\9¯;«|mtË‚ë"1di†4±cÎbÃÁ*¾]„i¯‘ËŸ,mÇ×î¡!1÷yôpáÍ£Kr禲Ì\°®ÝÄ5ë;³V;%[ÜÁªBðéÜX3-nK-êÜ–^Yy‡îê‚߆îž7ºÂõáxo¶­nzlþ
+¥´        »çn“–ÓS³—8Õ›):áÀ‚Oll°(UG®t´¸zôíxÊ7 at UW‚rÝ
+5$í@
+ (¥©¤AåP@Vxbv8 ùÚçò‘Í $’T†è6A$u—2MVØe&(bC ìbJnsnÂê3 ô’H“@š 	:y¡ZQ´-¤²Âo¼Îüœ7fpÍöú¥¾Ã@™˜$’7¯"NelËŠdH„‡„1„&RHPIÇ¢ûêó×9¼ü¹ª ÜÕU
+=zZ¿	ûg<áõô»1©H'.ÐgÒß7^·™«v;½/]ásàˆÛ7³K$¥NŒßu(7rÕY∈ˆˆ1""<»ÁÒºÄkrë#JÚ®9ã\﮳¦ºíéÞëþýw         58qçŒ×‡§é›ïäûnçmç7w)€Àt¢Iß“¼suÄÁÇ.n+ZhC6Å©¶Ù— ®æÒG1Z¦u²îð*¨ˆˆ€ìYº©ÌµZois¥®Xá ˆ ŽÉÉ­&Äo9wƒßr ¡ILBe½˜¤ÒÂökŽ8Åm«
+ZÜ]|=|sµŽ´tãûèHJuߦ‹OßßgðÛÝßõø÷yuIO		×NÍóÊòÖÏ!SÛB1MmÅ{k1,›»³R[—ÖÉ—1-*kÀ¶ÖÈ…â´ŹB¾@ THs!ädˆ¹NÖ›xhÛ³f«™,÷šØ        ¯WLàšîœ6Ô¶KIôͪD'Ú½’¦õ-\°Æ­Z¤$¹åõ=+d
+´HÃàù™„Ž]Î]“E
+ ÕA‘8™šI¿1èÝd0A¨ULÒ©š‚
+ ‹µÛSè’2øj€ s˜{L›ò據¨h©ˆˆôMˆ<HÏÁå‹`ÑòU@‘iµE›eé¿+4“CE
+P@RÔÎvT8©è;3‹Û¥›Úb‚á]„é
+Ë*%®^µ¤¬ÝŽ÷52šnl'w"ÌY»v]¥rÊšð-µ¹=E xóžWÜI&í|.sçÖqéݨۮfÝ8Ͳ%Ü        žrxqx8 ¿/Ø 1DÕP8¨  ‚;õ˹Àúº[ŠÕ0AÍ hIllÑÅyoPŽêæO€Œ4!ª£ÌOˆKµÊÇ~£ÖM\P¸ <õ¡Ý#½™áœÐãM at MXüUUUUѬÝ:†ß03ÒþA¡4ñMã8ýîÙ·V(
+ (²<Hò(ïˆãBBg½ŒTtÎwÛ\jEÇ?óBBc¼Î}Œ3¡/¸Lzî+X†Þ5{—¢ËÜGf Ä7bÛ›kNb¸àBÔQH^[°·]®˜ÛT$&~S‡m»í:,‡BÕì×:é5œqÀ        –ûfsÓ›–Ûk¶¯„•,Ô,ŠF…k®as‘mY±^RQÓ-Z(¾í­LA TÏ7lp‘Ùˆ™˜ìÍLé"'£àÑÁÒFÒ"	l‰3Œ®ejæðoxc]¹		p²ªÛq[g»Õ^ýØ»ìÂkz9}A…'€¬a´N(ÔT$%Âk¢ç-±¦qiŽxµ¤ß„ä#«„ñŸ{À³Ç¤ï+Þ¼÷S{øGó}À        ;t»ú¿"w¶éÓorXßžùÁ¢2¨
+ *˼6EœôƒÒï×/ÆcÍÐ-õ™ÛŽúà’k“u<'NZèáÏ:ôÀ        I$îy}»ð.ÃæKßwžwÁž§·ÇhP@W$o±Œðn݇g¡ZNòLI~rñôçÐF^:[ˆoªŸö­LT”ªÊ	DÕ)Y\‰¦»wmܶ\±zå»×n^žyçžyçŸ^¢ƒxÙë@‚ƒj
+ÜÁûá¡S©"œmwÒiYêÏ´«2|PPj¤«I”fzän¢œ[øûÏÏ		õtÛ?ûùÕô퉷=;ûü·ì×9_ß5¼d–z,ÏCÊÛm¶Û%³  ˆD" K`T Í„“«ƒwýDjÐG3l¶#ƒ…¶Ûm¨„B  L’̸T  L’̘ "€2K2d©Aı$–kµ		¯¿n\{Dweý?ó²Fi¨\èëa!?õÜ#R‹ÍÀNñ§jÿwé™úvBBz¿gÞ¡¼”$&â9óðíw;á!?g³ó~¿ÁýÌöuàÉBIô}‰%Ýÿž7Ç·se«e‰JK`üRÜMÎB6q‚>5$	²GNÔE‘»¸‚:ˆ¿UD	ÛR¤-HZµ!jBÔ…©R¤-HZµ!jBÔ…©R¤-H[ݙ„„ú¹-»i	''ó/™³`ŽÜydG)ÏžäuÖH š=Øjáï¹#ZÁŒTòJF:™øçâíÓãÝ‹wcãÏŠ¿4l#Vì"‘HLˆÔF?Ë		ðö¸4ýV>…òÓ|½{F¯v}Iä:}åxèèG|CŸ§Ô×fݲü¬BBxhG;²¢ÔzºñÒ&m²,ˆùÓ¿SF‰«N0A;î7äzí/?Ü矞ð}´> úduø\öe;~†Ÿ+|<½šïÎΟ‘		O»±
+ˆ½~¾{¡$ÐFB³Ë ŠtôÂGâûäw„~w¢}~"=üÑ õñ’@›ÂIÓ¡B><ÈñàˆúÄzÚH$O×ãÔ‘¹>Ÿe¹zjI;©$´I><„xHñqÇëÃá7L끦DoHö9üüÐY÷	%Dz¢<|ȨRÊ#Ý£Q
+üÞ¿{¼"êrì#kn$ö‰&â;'|ÓêìO7?%¶Ø@–'KԏäœÌÈ$OgkgZð5Å’h~?›/Ûöv{žLø¡!8‘i¢-ûgÇ·¡#B‘îHþLˆÊt±OMôD^/ÛùB8v´Žt‹ÀŠG,ºˆ{eHªóœ]þÝB’{‘>çÝø¯@)2#’#ñ‘ÈI:OXBt#åûÜ“âF]¾ó Œ>ÝÄx½¼øõ×Ý"6éÕ¬ßÉðáæ#ƒftJË–#j“ÝŠôãñ×ïw@œø¡!=}„wc8ñiX›Ó
+=â(’z‚6Óížnƒ~'°Füè#¡Ò7Dmü¯>]tÎ^<wãÅ$DÓÕ¼3d’ÞÄŠŠL#ÑÂ0‹Ê2Š‹#$_?ÏqÜñÓ:viºhMa!+np’ÄŠ†1"¢  ÁNÞA’²½àAA‚ƒR±ÜÃÅôÓ]õÛä#.$ÈŽ¤mÉ		ðÚ#œÒæ±OW4$'c‘ OW·}˜HBiIràŠEE"ÄkzâóüðBBc¡†|x~×8"BjÝé’@šåŒ9„nFñôÙÉ$– ¨‘ˆ‹ä#“Ù”íöðN•—N
+ð#Õ 'ÜìûO¸BãGn›weïÓÇG€ÀûœŸ±		ê›<¯z}¢6’@žkݳVa!,$'_NîBB`Žò)’H½’B”@(>ÁÐPCþ.äŠp¡ œTK 
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ia64-64n2s2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ia64-64n2s2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ia64-64n2s2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,799 @@
+Machine (P#0 total=516912176KB Backend=Linux)
+  Group1 L#0 (total=129224048KB)
+    Group0 L#0 (total=32296336KB)
+      NUMANode L#0 (P#0 local=8064400KB total=8064400KB)
+        Socket L#0 (P#0)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+          Core L#1 (P#1)
+            PU L#1 (P#1)
+        Socket L#1 (P#3)
+          Core L#2 (P#0)
+            PU L#2 (P#2)
+          Core L#3 (P#1)
+            PU L#3 (P#3)
+      NUMANode L#1 (P#1 local=8077312KB total=8077312KB)
+        Socket L#2 (P#512)
+          Core L#4 (P#0)
+            PU L#4 (P#4)
+          Core L#5 (P#1)
+            PU L#5 (P#5)
+        Socket L#3 (P#515)
+          Core L#6 (P#0)
+            PU L#6 (P#6)
+          Core L#7 (P#1)
+            PU L#7 (P#7)
+      NUMANode L#2 (P#2 local=8077312KB total=8077312KB)
+        Socket L#4 (P#1024)
+          Core L#8 (P#0)
+            PU L#8 (P#8)
+          Core L#9 (P#1)
+            PU L#9 (P#9)
+        Socket L#5 (P#1027)
+          Core L#10 (P#0)
+            PU L#10 (P#10)
+          Core L#11 (P#1)
+            PU L#11 (P#11)
+      NUMANode L#3 (P#3 local=8077312KB total=8077312KB)
+        Socket L#6 (P#1536)
+          Core L#12 (P#0)
+            PU L#12 (P#12)
+          Core L#13 (P#1)
+            PU L#13 (P#13)
+        Socket L#7 (P#1539)
+          Core L#14 (P#0)
+            PU L#14 (P#14)
+          Core L#15 (P#1)
+            PU L#15 (P#15)
+    Group0 L#1 (total=32309232KB)
+      NUMANode L#4 (P#4 local=8077312KB total=8077312KB)
+        Socket L#8 (P#2048)
+          Core L#16 (P#0)
+            PU L#16 (P#16)
+          Core L#17 (P#1)
+            PU L#17 (P#17)
+        Socket L#9 (P#2051)
+          Core L#18 (P#0)
+            PU L#18 (P#18)
+          Core L#19 (P#1)
+            PU L#19 (P#19)
+      NUMANode L#5 (P#5 local=8077312KB total=8077312KB)
+        Socket L#10 (P#2560)
+          Core L#20 (P#0)
+            PU L#20 (P#20)
+          Core L#21 (P#1)
+            PU L#21 (P#21)
+        Socket L#11 (P#2563)
+          Core L#22 (P#0)
+            PU L#22 (P#22)
+          Core L#23 (P#1)
+            PU L#23 (P#23)
+      NUMANode L#6 (P#6 local=8077296KB total=8077296KB)
+        Socket L#12 (P#3072)
+          Core L#24 (P#0)
+            PU L#24 (P#24)
+          Core L#25 (P#1)
+            PU L#25 (P#25)
+        Socket L#13 (P#3075)
+          Core L#26 (P#0)
+            PU L#26 (P#26)
+          Core L#27 (P#1)
+            PU L#27 (P#27)
+      NUMANode L#7 (P#7 local=8077312KB total=8077312KB)
+        Socket L#14 (P#3584)
+          Core L#28 (P#0)
+            PU L#28 (P#28)
+          Core L#29 (P#1)
+            PU L#29 (P#29)
+        Socket L#15 (P#3587)
+          Core L#30 (P#0)
+            PU L#30 (P#30)
+          Core L#31 (P#1)
+            PU L#31 (P#31)
+    Group0 L#2 (total=32309248KB)
+      NUMANode L#8 (P#8 local=8077312KB total=8077312KB)
+        Socket L#16 (P#4096)
+          Core L#32 (P#0)
+            PU L#32 (P#32)
+          Core L#33 (P#1)
+            PU L#33 (P#33)
+        Socket L#17 (P#4099)
+          Core L#34 (P#0)
+            PU L#34 (P#34)
+          Core L#35 (P#1)
+            PU L#35 (P#35)
+      NUMANode L#9 (P#9 local=8077312KB total=8077312KB)
+        Socket L#18 (P#4608)
+          Core L#36 (P#0)
+            PU L#36 (P#36)
+          Core L#37 (P#1)
+            PU L#37 (P#37)
+        Socket L#19 (P#4611)
+          Core L#38 (P#0)
+            PU L#38 (P#38)
+          Core L#39 (P#1)
+            PU L#39 (P#39)
+      NUMANode L#10 (P#10 local=8077312KB total=8077312KB)
+        Socket L#20 (P#5120)
+          Core L#40 (P#0)
+            PU L#40 (P#40)
+          Core L#41 (P#1)
+            PU L#41 (P#41)
+        Socket L#21 (P#5123)
+          Core L#42 (P#0)
+            PU L#42 (P#42)
+          Core L#43 (P#1)
+            PU L#43 (P#43)
+      NUMANode L#11 (P#11 local=8077312KB total=8077312KB)
+        Socket L#22 (P#5632)
+          Core L#44 (P#0)
+            PU L#44 (P#44)
+          Core L#45 (P#1)
+            PU L#45 (P#45)
+        Socket L#23 (P#5635)
+          Core L#46 (P#0)
+            PU L#46 (P#46)
+          Core L#47 (P#1)
+            PU L#47 (P#47)
+    Group0 L#3 (total=32309232KB)
+      NUMANode L#12 (P#12 local=8077312KB total=8077312KB)
+        Socket L#24 (P#6144)
+          Core L#48 (P#0)
+            PU L#48 (P#48)
+          Core L#49 (P#1)
+            PU L#49 (P#49)
+        Socket L#25 (P#6147)
+          Core L#50 (P#0)
+            PU L#50 (P#50)
+          Core L#51 (P#1)
+            PU L#51 (P#51)
+      NUMANode L#13 (P#13 local=8077312KB total=8077312KB)
+        Socket L#26 (P#6656)
+          Core L#52 (P#0)
+            PU L#52 (P#52)
+          Core L#53 (P#1)
+            PU L#53 (P#53)
+        Socket L#27 (P#6659)
+          Core L#54 (P#0)
+            PU L#54 (P#54)
+          Core L#55 (P#1)
+            PU L#55 (P#55)
+      NUMANode L#14 (P#14 local=8077296KB total=8077296KB)
+        Socket L#28 (P#7168)
+          Core L#56 (P#0)
+            PU L#56 (P#56)
+          Core L#57 (P#1)
+            PU L#57 (P#57)
+        Socket L#29 (P#7171)
+          Core L#58 (P#0)
+            PU L#58 (P#58)
+          Core L#59 (P#1)
+            PU L#59 (P#59)
+      NUMANode L#15 (P#15 local=8077312KB total=8077312KB)
+        Socket L#30 (P#7680)
+          Core L#60 (P#0)
+            PU L#60 (P#60)
+          Core L#61 (P#1)
+            PU L#61 (P#61)
+        Socket L#31 (P#7683)
+          Core L#62 (P#0)
+            PU L#62 (P#62)
+          Core L#63 (P#1)
+            PU L#63 (P#63)
+  Group1 L#1 (total=129236960KB)
+    Group0 L#4 (total=32309248KB)
+      NUMANode L#16 (P#16 local=8077312KB total=8077312KB)
+        Socket L#32 (P#8192)
+          Core L#64 (P#0)
+            PU L#64 (P#64)
+          Core L#65 (P#1)
+            PU L#65 (P#65)
+        Socket L#33 (P#8195)
+          Core L#66 (P#0)
+            PU L#66 (P#66)
+          Core L#67 (P#1)
+            PU L#67 (P#67)
+      NUMANode L#17 (P#17 local=8077312KB total=8077312KB)
+        Socket L#34 (P#8704)
+          Core L#68 (P#0)
+            PU L#68 (P#68)
+          Core L#69 (P#1)
+            PU L#69 (P#69)
+        Socket L#35 (P#8707)
+          Core L#70 (P#0)
+            PU L#70 (P#70)
+          Core L#71 (P#1)
+            PU L#71 (P#71)
+      NUMANode L#18 (P#18 local=8077312KB total=8077312KB)
+        Socket L#36 (P#9216)
+          Core L#72 (P#0)
+            PU L#72 (P#72)
+          Core L#73 (P#1)
+            PU L#73 (P#73)
+        Socket L#37 (P#9219)
+          Core L#74 (P#0)
+            PU L#74 (P#74)
+          Core L#75 (P#1)
+            PU L#75 (P#75)
+      NUMANode L#19 (P#19 local=8077312KB total=8077312KB)
+        Socket L#38 (P#9728)
+          Core L#76 (P#0)
+            PU L#76 (P#76)
+          Core L#77 (P#1)
+            PU L#77 (P#77)
+        Socket L#39 (P#9731)
+          Core L#78 (P#0)
+            PU L#78 (P#78)
+          Core L#79 (P#1)
+            PU L#79 (P#79)
+    Group0 L#5 (total=32309232KB)
+      NUMANode L#20 (P#20 local=8077312KB total=8077312KB)
+        Socket L#40 (P#10240)
+          Core L#80 (P#0)
+            PU L#80 (P#80)
+          Core L#81 (P#1)
+            PU L#81 (P#81)
+        Socket L#41 (P#10243)
+          Core L#82 (P#0)
+            PU L#82 (P#82)
+          Core L#83 (P#1)
+            PU L#83 (P#83)
+      NUMANode L#21 (P#21 local=8077312KB total=8077312KB)
+        Socket L#42 (P#10752)
+          Core L#84 (P#0)
+            PU L#84 (P#84)
+          Core L#85 (P#1)
+            PU L#85 (P#85)
+        Socket L#43 (P#10755)
+          Core L#86 (P#0)
+            PU L#86 (P#86)
+          Core L#87 (P#1)
+            PU L#87 (P#87)
+      NUMANode L#22 (P#22 local=8077296KB total=8077296KB)
+        Socket L#44 (P#11264)
+          Core L#88 (P#0)
+            PU L#88 (P#88)
+          Core L#89 (P#1)
+            PU L#89 (P#89)
+        Socket L#45 (P#11267)
+          Core L#90 (P#0)
+            PU L#90 (P#90)
+          Core L#91 (P#1)
+            PU L#91 (P#91)
+      NUMANode L#23 (P#23 local=8077312KB total=8077312KB)
+        Socket L#46 (P#11776)
+          Core L#92 (P#0)
+            PU L#92 (P#92)
+          Core L#93 (P#1)
+            PU L#93 (P#93)
+        Socket L#47 (P#11779)
+          Core L#94 (P#0)
+            PU L#94 (P#94)
+          Core L#95 (P#1)
+            PU L#95 (P#95)
+    Group0 L#6 (total=32309248KB)
+      NUMANode L#24 (P#24 local=8077312KB total=8077312KB)
+        Socket L#48 (P#12288)
+          Core L#96 (P#0)
+            PU L#96 (P#96)
+          Core L#97 (P#1)
+            PU L#97 (P#97)
+        Socket L#49 (P#12291)
+          Core L#98 (P#0)
+            PU L#98 (P#98)
+          Core L#99 (P#1)
+            PU L#99 (P#99)
+      NUMANode L#25 (P#25 local=8077312KB total=8077312KB)
+        Socket L#50 (P#12800)
+          Core L#100 (P#0)
+            PU L#100 (P#100)
+          Core L#101 (P#1)
+            PU L#101 (P#101)
+        Socket L#51 (P#12803)
+          Core L#102 (P#0)
+            PU L#102 (P#102)
+          Core L#103 (P#1)
+            PU L#103 (P#103)
+      NUMANode L#26 (P#26 local=8077312KB total=8077312KB)
+        Socket L#52 (P#13312)
+          Core L#104 (P#0)
+            PU L#104 (P#104)
+          Core L#105 (P#1)
+            PU L#105 (P#105)
+        Socket L#53 (P#13315)
+          Core L#106 (P#0)
+            PU L#106 (P#106)
+          Core L#107 (P#1)
+            PU L#107 (P#107)
+      NUMANode L#27 (P#27 local=8077312KB total=8077312KB)
+        Socket L#54 (P#13824)
+          Core L#108 (P#0)
+            PU L#108 (P#108)
+          Core L#109 (P#1)
+            PU L#109 (P#109)
+        Socket L#55 (P#13827)
+          Core L#110 (P#0)
+            PU L#110 (P#110)
+          Core L#111 (P#1)
+            PU L#111 (P#111)
+    Group0 L#7 (total=32309232KB)
+      NUMANode L#28 (P#28 local=8077312KB total=8077312KB)
+        Socket L#56 (P#14336)
+          Core L#112 (P#0)
+            PU L#112 (P#112)
+          Core L#113 (P#1)
+            PU L#113 (P#113)
+        Socket L#57 (P#14339)
+          Core L#114 (P#0)
+            PU L#114 (P#114)
+          Core L#115 (P#1)
+            PU L#115 (P#115)
+      NUMANode L#29 (P#29 local=8077296KB total=8077296KB)
+        Socket L#58 (P#14848)
+          Core L#116 (P#0)
+            PU L#116 (P#116)
+          Core L#117 (P#1)
+            PU L#117 (P#117)
+        Socket L#59 (P#14851)
+          Core L#118 (P#0)
+            PU L#118 (P#118)
+          Core L#119 (P#1)
+            PU L#119 (P#119)
+      NUMANode L#30 (P#30 local=8077312KB total=8077312KB)
+        Socket L#60 (P#15360)
+          Core L#120 (P#0)
+            PU L#120 (P#120)
+          Core L#121 (P#1)
+            PU L#121 (P#121)
+        Socket L#61 (P#15363)
+          Core L#122 (P#0)
+            PU L#122 (P#122)
+          Core L#123 (P#1)
+            PU L#123 (P#123)
+      NUMANode L#31 (P#31 local=8077312KB total=8077312KB)
+        Socket L#62 (P#15872)
+          Core L#124 (P#0)
+            PU L#124 (P#124)
+          Core L#125 (P#1)
+            PU L#125 (P#125)
+        Socket L#63 (P#15875)
+          Core L#126 (P#0)
+            PU L#126 (P#126)
+          Core L#127 (P#1)
+            PU L#127 (P#127)
+  Group1 L#2 (total=129236960KB)
+    Group0 L#8 (total=32309248KB)
+      NUMANode L#32 (P#32 local=8077312KB total=8077312KB)
+        Socket L#64 (P#16384)
+          Core L#128 (P#0)
+            PU L#128 (P#128)
+          Core L#129 (P#1)
+            PU L#129 (P#129)
+        Socket L#65 (P#16387)
+          Core L#130 (P#0)
+            PU L#130 (P#130)
+          Core L#131 (P#1)
+            PU L#131 (P#131)
+      NUMANode L#33 (P#33 local=8077312KB total=8077312KB)
+        Socket L#66 (P#16896)
+          Core L#132 (P#0)
+            PU L#132 (P#132)
+          Core L#133 (P#1)
+            PU L#133 (P#133)
+        Socket L#67 (P#16899)
+          Core L#134 (P#0)
+            PU L#134 (P#134)
+          Core L#135 (P#1)
+            PU L#135 (P#135)
+      NUMANode L#34 (P#34 local=8077312KB total=8077312KB)
+        Socket L#68 (P#17408)
+          Core L#136 (P#0)
+            PU L#136 (P#136)
+          Core L#137 (P#1)
+            PU L#137 (P#137)
+        Socket L#69 (P#17411)
+          Core L#138 (P#0)
+            PU L#138 (P#138)
+          Core L#139 (P#1)
+            PU L#139 (P#139)
+      NUMANode L#35 (P#35 local=8077312KB total=8077312KB)
+        Socket L#70 (P#17920)
+          Core L#140 (P#0)
+            PU L#140 (P#140)
+          Core L#141 (P#1)
+            PU L#141 (P#141)
+        Socket L#71 (P#17923)
+          Core L#142 (P#0)
+            PU L#142 (P#142)
+          Core L#143 (P#1)
+            PU L#143 (P#143)
+    Group0 L#9 (total=32309232KB)
+      NUMANode L#36 (P#36 local=8077312KB total=8077312KB)
+        Socket L#72 (P#18432)
+          Core L#144 (P#0)
+            PU L#144 (P#144)
+          Core L#145 (P#1)
+            PU L#145 (P#145)
+        Socket L#73 (P#18435)
+          Core L#146 (P#0)
+            PU L#146 (P#146)
+          Core L#147 (P#1)
+            PU L#147 (P#147)
+      NUMANode L#37 (P#37 local=8077296KB total=8077296KB)
+        Socket L#74 (P#18944)
+          Core L#148 (P#0)
+            PU L#148 (P#148)
+          Core L#149 (P#1)
+            PU L#149 (P#149)
+        Socket L#75 (P#18947)
+          Core L#150 (P#0)
+            PU L#150 (P#150)
+          Core L#151 (P#1)
+            PU L#151 (P#151)
+      NUMANode L#38 (P#38 local=8077312KB total=8077312KB)
+        Socket L#76 (P#19456)
+          Core L#152 (P#0)
+            PU L#152 (P#152)
+          Core L#153 (P#1)
+            PU L#153 (P#153)
+        Socket L#77 (P#19459)
+          Core L#154 (P#0)
+            PU L#154 (P#154)
+          Core L#155 (P#1)
+            PU L#155 (P#155)
+      NUMANode L#39 (P#39 local=8077312KB total=8077312KB)
+        Socket L#78 (P#19968)
+          Core L#156 (P#0)
+            PU L#156 (P#156)
+          Core L#157 (P#1)
+            PU L#157 (P#157)
+        Socket L#79 (P#19971)
+          Core L#158 (P#0)
+            PU L#158 (P#158)
+          Core L#159 (P#1)
+            PU L#159 (P#159)
+    Group0 L#10 (total=32309248KB)
+      NUMANode L#40 (P#40 local=8077312KB total=8077312KB)
+        Socket L#80 (P#20480)
+          Core L#160 (P#0)
+            PU L#160 (P#160)
+          Core L#161 (P#1)
+            PU L#161 (P#161)
+        Socket L#81 (P#20483)
+          Core L#162 (P#0)
+            PU L#162 (P#162)
+          Core L#163 (P#1)
+            PU L#163 (P#163)
+      NUMANode L#41 (P#41 local=8077312KB total=8077312KB)
+        Socket L#82 (P#20992)
+          Core L#164 (P#0)
+            PU L#164 (P#164)
+          Core L#165 (P#1)
+            PU L#165 (P#165)
+        Socket L#83 (P#20995)
+          Core L#166 (P#0)
+            PU L#166 (P#166)
+          Core L#167 (P#1)
+            PU L#167 (P#167)
+      NUMANode L#42 (P#42 local=8077312KB total=8077312KB)
+        Socket L#84 (P#21504)
+          Core L#168 (P#0)
+            PU L#168 (P#168)
+          Core L#169 (P#1)
+            PU L#169 (P#169)
+        Socket L#85 (P#21507)
+          Core L#170 (P#0)
+            PU L#170 (P#170)
+          Core L#171 (P#1)
+            PU L#171 (P#171)
+      NUMANode L#43 (P#43 local=8077312KB total=8077312KB)
+        Socket L#86 (P#22016)
+          Core L#172 (P#0)
+            PU L#172 (P#172)
+          Core L#173 (P#1)
+            PU L#173 (P#173)
+        Socket L#87 (P#22019)
+          Core L#174 (P#0)
+            PU L#174 (P#174)
+          Core L#175 (P#1)
+            PU L#175 (P#175)
+    Group0 L#11 (total=32309232KB)
+      NUMANode L#44 (P#44 local=8077312KB total=8077312KB)
+        Socket L#88 (P#22528)
+          Core L#176 (P#0)
+            PU L#176 (P#176)
+          Core L#177 (P#1)
+            PU L#177 (P#177)
+        Socket L#89 (P#22531)
+          Core L#178 (P#0)
+            PU L#178 (P#178)
+          Core L#179 (P#1)
+            PU L#179 (P#179)
+      NUMANode L#45 (P#45 local=8077296KB total=8077296KB)
+        Socket L#90 (P#23040)
+          Core L#180 (P#0)
+            PU L#180 (P#180)
+          Core L#181 (P#1)
+            PU L#181 (P#181)
+        Socket L#91 (P#23043)
+          Core L#182 (P#0)
+            PU L#182 (P#182)
+          Core L#183 (P#1)
+            PU L#183 (P#183)
+      NUMANode L#46 (P#46 local=8077312KB total=8077312KB)
+        Socket L#92 (P#23552)
+          Core L#184 (P#0)
+            PU L#184 (P#184)
+          Core L#185 (P#1)
+            PU L#185 (P#185)
+        Socket L#93 (P#23555)
+          Core L#186 (P#0)
+            PU L#186 (P#186)
+          Core L#187 (P#1)
+            PU L#187 (P#187)
+      NUMANode L#47 (P#47 local=8077312KB total=8077312KB)
+        Socket L#94 (P#24064)
+          Core L#188 (P#0)
+            PU L#188 (P#188)
+          Core L#189 (P#1)
+            PU L#189 (P#189)
+        Socket L#95 (P#24067)
+          Core L#190 (P#0)
+            PU L#190 (P#190)
+          Core L#191 (P#1)
+            PU L#191 (P#191)
+  Group1 L#3 (total=129214208KB)
+    Group0 L#12 (total=32309248KB)
+      NUMANode L#48 (P#48 local=8077312KB total=8077312KB)
+        Socket L#96 (P#24576)
+          Core L#192 (P#0)
+            PU L#192 (P#192)
+          Core L#193 (P#1)
+            PU L#193 (P#193)
+        Socket L#97 (P#24579)
+          Core L#194 (P#0)
+            PU L#194 (P#194)
+          Core L#195 (P#1)
+            PU L#195 (P#195)
+      NUMANode L#49 (P#49 local=8077312KB total=8077312KB)
+        Socket L#98 (P#25088)
+          Core L#196 (P#0)
+            PU L#196 (P#196)
+          Core L#197 (P#1)
+            PU L#197 (P#197)
+        Socket L#99 (P#25091)
+          Core L#198 (P#0)
+            PU L#198 (P#198)
+          Core L#199 (P#1)
+            PU L#199 (P#199)
+      NUMANode L#50 (P#50 local=8077312KB total=8077312KB)
+        Socket L#100 (P#25600)
+          Core L#200 (P#0)
+            PU L#200 (P#200)
+          Core L#201 (P#1)
+            PU L#201 (P#201)
+        Socket L#101 (P#25603)
+          Core L#202 (P#0)
+            PU L#202 (P#202)
+          Core L#203 (P#1)
+            PU L#203 (P#203)
+      NUMANode L#51 (P#51 local=8077312KB total=8077312KB)
+        Socket L#102 (P#26112)
+          Core L#204 (P#0)
+            PU L#204 (P#204)
+          Core L#205 (P#1)
+            PU L#205 (P#205)
+        Socket L#103 (P#26115)
+          Core L#206 (P#0)
+            PU L#206 (P#206)
+          Core L#207 (P#1)
+            PU L#207 (P#207)
+    Group0 L#13 (total=32309232KB)
+      NUMANode L#52 (P#52 local=8077312KB total=8077312KB)
+        Socket L#104 (P#26624)
+          Core L#208 (P#0)
+            PU L#208 (P#208)
+          Core L#209 (P#1)
+            PU L#209 (P#209)
+        Socket L#105 (P#26627)
+          Core L#210 (P#0)
+            PU L#210 (P#210)
+          Core L#211 (P#1)
+            PU L#211 (P#211)
+      NUMANode L#53 (P#53 local=8077296KB total=8077296KB)
+        Socket L#106 (P#27136)
+          Core L#212 (P#0)
+            PU L#212 (P#212)
+          Core L#213 (P#1)
+            PU L#213 (P#213)
+        Socket L#107 (P#27139)
+          Core L#214 (P#0)
+            PU L#214 (P#214)
+          Core L#215 (P#1)
+            PU L#215 (P#215)
+      NUMANode L#54 (P#54 local=8077312KB total=8077312KB)
+        Socket L#108 (P#27648)
+          Core L#216 (P#0)
+            PU L#216 (P#216)
+          Core L#217 (P#1)
+            PU L#217 (P#217)
+        Socket L#109 (P#27651)
+          Core L#218 (P#0)
+            PU L#218 (P#218)
+          Core L#219 (P#1)
+            PU L#219 (P#219)
+      NUMANode L#55 (P#55 local=8077312KB total=8077312KB)
+        Socket L#110 (P#28160)
+          Core L#220 (P#0)
+            PU L#220 (P#220)
+          Core L#221 (P#1)
+            PU L#221 (P#221)
+        Socket L#111 (P#28163)
+          Core L#222 (P#0)
+            PU L#222 (P#222)
+          Core L#223 (P#1)
+            PU L#223 (P#223)
+    Group0 L#14 (total=32309248KB)
+      NUMANode L#56 (P#56 local=8077312KB total=8077312KB)
+        Socket L#112 (P#28672)
+          Core L#224 (P#0)
+            PU L#224 (P#224)
+          Core L#225 (P#1)
+            PU L#225 (P#225)
+        Socket L#113 (P#28675)
+          Core L#226 (P#0)
+            PU L#226 (P#226)
+          Core L#227 (P#1)
+            PU L#227 (P#227)
+      NUMANode L#57 (P#57 local=8077312KB total=8077312KB)
+        Socket L#114 (P#29184)
+          Core L#228 (P#0)
+            PU L#228 (P#228)
+          Core L#229 (P#1)
+            PU L#229 (P#229)
+        Socket L#115 (P#29187)
+          Core L#230 (P#0)
+            PU L#230 (P#230)
+          Core L#231 (P#1)
+            PU L#231 (P#231)
+      NUMANode L#58 (P#58 local=8077312KB total=8077312KB)
+        Socket L#116 (P#29696)
+          Core L#232 (P#0)
+            PU L#232 (P#232)
+          Core L#233 (P#1)
+            PU L#233 (P#233)
+        Socket L#117 (P#29699)
+          Core L#234 (P#0)
+            PU L#234 (P#234)
+          Core L#235 (P#1)
+            PU L#235 (P#235)
+      NUMANode L#59 (P#59 local=8077312KB total=8077312KB)
+        Socket L#118 (P#30208)
+          Core L#236 (P#0)
+            PU L#236 (P#236)
+          Core L#237 (P#1)
+            PU L#237 (P#237)
+        Socket L#119 (P#30211)
+          Core L#238 (P#0)
+            PU L#238 (P#238)
+          Core L#239 (P#1)
+            PU L#239 (P#239)
+    Group0 L#15 (total=32286480KB)
+      NUMANode L#60 (P#60 local=8077312KB total=8077312KB)
+        Socket L#120 (P#30720)
+          Core L#240 (P#0)
+            PU L#240 (P#240)
+          Core L#241 (P#1)
+            PU L#241 (P#241)
+        Socket L#121 (P#30723)
+          Core L#242 (P#0)
+            PU L#242 (P#242)
+          Core L#243 (P#1)
+            PU L#243 (P#243)
+      NUMANode L#61 (P#61 local=8077296KB total=8077296KB)
+        Socket L#122 (P#31232)
+          Core L#244 (P#0)
+            PU L#244 (P#244)
+          Core L#245 (P#1)
+            PU L#245 (P#245)
+        Socket L#123 (P#31235)
+          Core L#246 (P#0)
+            PU L#246 (P#246)
+          Core L#247 (P#1)
+            PU L#247 (P#247)
+      NUMANode L#62 (P#62 local=8077312KB total=8077312KB)
+        Socket L#124 (P#31744)
+          Core L#248 (P#0)
+            PU L#248 (P#248)
+          Core L#249 (P#1)
+            PU L#249 (P#249)
+        Socket L#125 (P#31747)
+          Core L#250 (P#0)
+            PU L#250 (P#250)
+          Core L#251 (P#1)
+            PU L#251 (P#251)
+      NUMANode L#63 (P#63 local=8054560KB total=8054560KB)
+        Socket L#126 (P#32256)
+          Core L#252 (P#0)
+            PU L#252 (P#252)
+          Core L#253 (P#1)
+            PU L#253 (P#253)
+        Socket L#127 (P#32259)
+          Core L#254 (P#0)
+            PU L#254 (P#254)
+          Core L#255 (P#1)
+            PU L#255 (P#255)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Groups (type #7)
+  depth 2:	16 Groups (type #7)
+   depth 3:	64 NUMANodes (type #2)
+    depth 4:	128 Sockets (type #3)
+     depth 5:	256 Cores (type #5)
+      depth 6:	256 PUs (type #6)
+latency matrix between NUMANodes (depth 3) by logical indexes:
+  index     0     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15    16    17    18    19    20    21    22    23    24    25    26    27    28    29    30    31    32    33    34    35    36    37    38    39    40    41    42    43    44    45    46    47    48    49    50    51    52    53    54    55    56    57    58    59    60    61    62    63
+      0 1.000 2.200 2.200 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+      1 2.200 1.000 2.200 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+      2 2.200 2.200 1.000 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+      3 2.200 2.200 2.200 1.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+      4 2.600 2.600 2.600 2.600 1.000 2.200 2.200 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+      5 2.600 2.600 2.600 2.600 2.200 1.000 2.200 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+      6 2.600 2.600 2.600 2.600 2.200 2.200 1.000 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+      7 2.600 2.600 2.600 2.600 2.200 2.200 2.200 1.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+      8 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 1.000 2.200 2.200 2.200 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+      9 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 1.000 2.200 2.200 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     10 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 2.200 1.000 2.200 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     11 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 2.200 2.200 1.000 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     12 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 1.000 2.200 2.200 2.200 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     13 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 1.000 2.200 2.200 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     14 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 2.200 1.000 2.200 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     15 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 2.200 2.200 1.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     16 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 1.000 2.200 2.200 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     17 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.200 1.000 2.200 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     18 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.200 2.200 1.000 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     19 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.200 2.200 2.200 1.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     20 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 1.000 2.200 2.200 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     21 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.200 1.000 2.200 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     22 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.200 2.200 1.000 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     23 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.200 2.200 2.200 1.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     24 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 1.000 2.200 2.200 2.200 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     25 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 1.000 2.200 2.200 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     26 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 2.200 1.000 2.200 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     27 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 2.200 2.200 1.000 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     28 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 1.000 2.200 2.200 2.200 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     29 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 1.000 2.200 2.200 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     30 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 2.200 1.000 2.200 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     31 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 2.200 2.200 1.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     32 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 1.000 2.200 2.200 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     33 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.200 1.000 2.200 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     34 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.200 2.200 1.000 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     35 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.200 2.200 2.200 1.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     36 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 1.000 2.200 2.200 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     37 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.200 1.000 2.200 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     38 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.200 2.200 1.000 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     39 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.200 2.200 2.200 1.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     40 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 1.000 2.200 2.200 2.200 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     41 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 1.000 2.200 2.200 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     42 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 2.200 1.000 2.200 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     43 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 2.200 2.200 1.000 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400
+     44 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 1.000 2.200 2.200 2.200 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     45 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 1.000 2.200 2.200 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     46 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 2.200 1.000 2.200 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     47 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 2.200 2.200 1.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000
+     48 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 1.000 2.200 2.200 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000
+     49 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.200 1.000 2.200 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000
+     50 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.200 2.200 1.000 2.200 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000
+     51 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.200 2.200 2.200 1.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000
+     52 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 1.000 2.200 2.200 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600
+     53 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.200 1.000 2.200 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600
+     54 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.200 2.200 1.000 2.200 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600
+     55 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.200 2.200 2.200 1.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600
+     56 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 1.000 2.200 2.200 2.200 2.600 2.600 2.600 2.600
+     57 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 1.000 2.200 2.200 2.600 2.600 2.600 2.600
+     58 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 2.200 1.000 2.200 2.600 2.600 2.600 2.600
+     59 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 2.600 2.600 2.600 2.600 3.000 3.000 3.000 3.000 2.200 2.200 2.200 1.000 2.600 2.600 2.600 2.600
+     60 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 1.000 2.200 2.200 2.200
+     61 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 1.000 2.200 2.200
+     62 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 2.200 1.000 2.200
+     63 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.400 3.400 3.400 3.400 3.000 3.000 3.000 3.000 3.000 3.000 3.000 3.000 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.600 2.200 2.200 2.200 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ia64-64n2s2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,112 @@
+BZh91AY&SY@оQöçÿüß\?ÿò=ï_€ÿïß°÷À   p 0è`l}'      ]¸§lUKx/秃€ß@zv¶e/>AUÙ’î  @ºe­(I áåîݏ¢‡ßsé0À¢d±™AÕh {Ü€õ A³2 ó'½‚Ö
+¦IWÀ   ÛÞùw¡L¶€§yŒ#ÕRY  wÀ ^Ø^õŒ {
+£AïPÀz£AëÙ˜] PnC Ô<IKXb       *chÚT©	¤Ñš€@        ªŸ†Òš©MGªƒA ¦š†C   †€Ñ Ð Jª÷ú•$*z€          4iµ§¤B„H’ @        ¤M"™P  h(Aµª A   
+¢ˆ	¤52™‘15'ê†Ò=†ƒC@zCÔêzM=GêOã„"Oß ÿ`ùðþä‰ü	ðAPþAGBhM¦„þQG„¤Ø°}è@~Y …	&€{»B%‘$,I"T € ¨¢‚©ò¯Q]J€¢œBA_6¿ùO›Ç9ùß}÷ß}÷ÝT’I$ºO[w.`X…»•Kä’dR)’I‘I2I2)&I&d“w2<K32¤“"„É$Ȥ™$æI7s#Ȥ™$™“$“-¬MlªBŠlŠU,©QHERê(¢Š(£¨¢Å.ES\R©eH¢ŠJ¤(¦‚´!”¢ŠmE[R)T ÄU!Š(TV¢™´µjÝhC¡ZžöûËÕKË|§¼½¨¢”¢Š/ÊÔ^¿yyy{È^QJm3Qyx(`›»B‹eRŠ)uªQÔR©L­QE%ÅåêT¼¼½™‹”¯yyy{kËÕJJ~Ååê&·)¯/).бJ¨¢ŠnbŪˆªS*(¢’…j)WJÔR]«QJ¢TŠ:ŠU,™‹*–mE[*”QK»QE71bŠ]D(¡QJ¥’©E¸†ñHL’LRI’IŠI2I1I&I0Y‘âÌÌRI’IŠI2I1I\o$Ìk$2I1I&I&)$Â]7£&dˆ„’2òBH¡!$•H’îI¢IIr8I%¹		ë™<«Þ=$·¬›»$¢GA²îE„’4 ¢BB"IIrC«mÉ»º÷tÝÜÅ“3$o×a.ýA‚’f,ÜÌ7tÝÙ»·wMûÄ!URWˆä%z9'¤÷¤÷¤ô·$$”nní“vkÛ™™w·-mî¢ÌEQ‰ÌZ'	¦F¶½3~ð계!Jª¢„"!Jª¢„!BUU„!Bª¨„!B•UD!B„ªª!B„%UQB„!	™˜B5ë*ªˆB„!	™UU˜B„!	UTB„!Jª¢„!BUU„!Bª¨„!B•UD!ERI%UQB„!	™˜B½p!*ªˆB„!	UTB„!Jª¢„!BUU„!Bª¨„!BŽ
 Ê¡¸I>I$’O’I$‘)$’IòI$’|’]ß’I$¾4„qD
+€‡ŒLñpqÊ)¦œÌp™˜&†‚$˜`–Hd!†Ye† ™‰¥
+µH¬@Xèt«¨
+KX†9Žf8f:Ìp‰™&†Òê’a‚Y !†B	e–`‚`‰¥ÃAlt8áTQ‘fQSM
+âdÑLE11ÌA0L“Á2LA30A33ÍU44àã”ÐSYc32L±
+ã“AAÉ,„2@K,0É344àã”ÐSYcL“,CB¸äÐDC²@K!„Ë0LÌM
+88åÓNf8DÌ“CHAL0K$2ÈC,²ÃL4ºØ
+?@~Õçœzxy^¢Ìihh)*…­!šŒ³4µT;.ÍUåêf8ÆI.õæn‰¬°æ²;PÎŒC$DÖü*¦Ñ’.Fb#A	’A	fˆšI Ø*éÚŠôÔAD1IבzAX`=‚‚bRঀ`˜‹‚ 	$!Œ.ø 0’XB$Ș‚$ID1EK*Qd(²@(%@¢*‹ ”DU…¢T$Q@(‘$AJ•Q%’RI)b–ˆR(H¡,B¢C¿¿¿[ÝšTФU"©HÝHªER*‘×ñ|Ì‘TФU#Þ¤U%>æ×Â‘TФU"©P['ú3„oM,K\Ó‹ýžÆ¥ŠR­Q¡ƒôò’ëÝÏâþ¤ÿÏäåÍu®£Æ~´êwfq›}âÓ]eµ·e;I$µö›n^vÅÙè¦x¤ûו
+ÏgEK;=îÍ»<]g±Øzõ^‘üî2¼êŒ—ß"ɾËõ«9<¹îcÏvÓºOág;/—’ÌZú½DUïqÙ{UwÝÙšŒ"ªóõž®÷‹Æt]q ›¹Šu{}«³Ø>êøÑ’•UUUR*ªª+¨EQUUQUUVH¨ªªŠªªŠª¨ª­SUUUUEUTUUT*ª¢ªªŠªªŠª¨ªª¨ªªŠªªŠª¨ªª¨ì$é€%[Qj~ª1S2€Èr!È‡ 2€ÈbJˆ* D¨¢Jˆ* D¨¢Jˆ* D¨¢Jˆ* D¨¢‡ 2€Èr!È‡ 2€‰Q%D•"T@‰Q#@d9äC@D¨¢Jˆ* D¨È‡ 2€Èr!È‡ 2€Èr!È‡ 2€ÈbJˆ* D¨¢Jˆ©ŠOö€j£n9ïÙׇ‡<óÏ<ñÍçž@ `t    €À´  ÀØ 4 qp:   ÀØ 4  ÖÀ °  UT Àè  
+ +ZÖµ­kékZÖµ§   5ÅgLò¼gi¾s)M|ÖÖmf½SêouÚ„øIÉ$’YÑmò½]šö̯uxï.½ÙzžUt‘ÐUÉîÅI$’M—Ó\kZÖš¨vKdÙÜï<՝ß*½g/KíU1¯j÷Oc÷•ßVI=çL=­ex‘íõûÜ^*íOGîÌ&n™7ÊçM½Ï]×zÕiïnI嵬ìÕ½î8Ó\7۝ôߎw ô’I' €\EUTUUTUUEUUEUTUUTUUEUUEUTªª©ªªŠªªŠª¨ª•TUUEUUUUUQUUQUUUUUQUw½ï[ÇÞÛïL3       3½
+ì        ;ÐÀ€       7°ÞÀ       ;ÐÀ Ìï@ 3333  Îô     9çžyçžyçÈ'®„Y	Hüð„IdH’CûRþðÆú $Oа"	í ±?8’H“ò z  u£° ²H”ˆP
+” Pèi $ü`CÝŠõüÞéf$ÌHÔ
+y'R_¹RÈTH  ”Éþœœæ^$¹r«Ç¹ãç8x­ƒœØÁ¢]ÚÀKËn†ãwwcV¨[H ÊrIe–är’e—™—mà[ŠRÒ­Ž\KIE¸þh Ó¡ ŠP d½eÀ%Ü—(·KEª¹eÁ"T YhÇ( ("Élh@m±É¥nîß”Ô]*噦qt®e¦qeuUUU*ªªª¢Š(¢Š"
+(¢Š(ìTm:b(ZµÓ hÅ–¨T4\’ÙŠ:àb„›
+“Á0L ÀÓM6NII™›-µI¸pØ®0ut È`w2€#*ä
+/„NÊ" ðë@ÀãM2!€è0T`ÀÁEÀ°,‰0ª„’M`ÔÛ|C!Fl€Æ‹Œ Ãa1DH@¨p.Øp1ÄVl qæ!b‡PÎ0…€(Z†â0 °pÆ ´1Œ!hS³°Z†q„1ÚH!œ… K«°Yv ´ÆìH/3 $2`R@	y˜  
+yQ¸*]ÓhH ˬ·E¹™rd·$ Q¹ca2eÇ		–—&J/$¶ ːhKb«’a
+™#ÉŠ«Š´ºg-1°p
+Öµ¯>o›æú_
+|ËãJþn|¼ùtݪ™Ôó½ë6rÖí÷•O›l+:¨Õítíu­Ó^f7º¥|ooº÷:»Ùy³v»Ë‡è¼zê° o¡w{Ô¹Jê¯xŠ{Þž¬Ì÷å[›ys®s›øÒÖµ­j«{ªs$˜ Àè  
+ ( @ Ì˽îì 08 Ð @ P €:™—w|Ýn¨ x0    y™™fffcÀáÐ 
+ì € X @ »»;»¤ŸI$’Yµ[è½P{ÉO£Õï­©wªë¬;˜ÇÆßkU»4úËÓé\мVðõ;Uïj™Ù}¦g«Û3:¬›O´6wº½¨yxô÷”•ŽÛ`Ì}máM·X6Öu×]uÌÌÿ¨ ûP ^OSwμw¼òôáK×øyºU‹{§.ÎÙ'{}ï^Vg­ù\›j?Þžõ;Uïj™Ù}¦g«Û3:¬›O´ºÁ›t‡—OyIXí¶ ,ÇÖÞÛuƒ`›måUQx؃uw[âÎôÝÖw:^âì=¾åRé¾~ù9z[t¶òM¬*¦GÐåíÚðýÒã£8šV{Üß½'³Þà%Žªôª™Õ}lßWwUU™ÇÖ:|áX¸ŒßxqÇ;ñÎyÆ7õ€x Pp¼ :~rYÞÅq¦8˜©FîñŒfD’ò¥Ã/%Œ™Œ¼ÌÜ„rc“29LÉhÛ“.Öâ^IxÁ´nÆãâY-Ž]æHÂárÒ.îXIJ2ïæLÂɐqÇȹ$¹„™—m“	nH—y28Ü’[3òE.Õ̶òIä»—rî]ÄÆÛ¹!Ö7pZ”ÄYänî¢^FfUä%EQAÆî4·ÙpfKB­³%Ë Ìs#n
+^\b¥£2êÛ‹2–±G%˶–I’
+-áwpbãŒÉ#–¶²c%Á°’L„¨‘!il’£Xȳ¦AŠ[kb0¼ä™‘mÁ¸Ýå²ífL°¶ÖK…¶.7s!˜æ8¢2fKbcq—‘cƒ%ä¼¶Ù&K¸–‚µnFî5&SŽdL»ÂäËÌ‘&8ÚdK‘Á«É‘1ɍ™&$d¤—y$¾@@Ü‘$ä ú„a	ž÷Ž:½	ÀúÇÖ>ÁÔöÙk„1t¬]iµDˆwë½ï×{Èœ‡aÐêI¥šY;ØkcjÚ˜¶ …a°Ôj5 ï×{ß®÷¿n$æ»ÙÕŒYÞ˜¢!ß®÷¿]îâp:‡C© ìmt³M±¥[6¨!ß®÷¿]ïr9‡@5«F;âk¶»h‚ï×{ß®÷a9‡aÜt›¥iuº÷Æh!ß®÷¿]îât;Žã¸ºf÷Ó÷ HŸá íDž`€æ ú€8õ_V1êÎsÆši¦Ú뮺ï°íÀÙ @»¹™wP’I;«®û3:ª¨I$]ÝÝ™™™˜6Ûm€ 
+¶Ûô’I ¶ÞîÝ×uUußfgnîù¶ß  N’Iî’IÀ›s01æÞ]wwwwIRîfLÉ™3;ÛÙ—uÝ]wÙ™ÜÛ| pÀ 
+¶÷ws2î»»»»»¿mûOö|½-ò f M >^WËyg9¸ûîeçÝægÝ™Ÿv÷`}Ø»ª®©BI$îüi|I|_>]×ÕßÕf}]æý;mý @ÐË»½ÕV÷Ísmãm¶hÙÎ2ºURªEUVwuU]ïwÇlæ»] ü^kZÖ¼×Ý$’ø ç»—ÖLN}ª&½…¯´[s¯ÞËîç<s[ówkuÇë¿óäà!xÈÏ–’I%®¥ßÛ3>Û»¿fÛ@ö’I'àÛm·ð  m¶ÛÌÌÌË»»´’ï{Îl+®û3=»»Í¶ø àt’Ot’N <ÛÙºn<ÛË®îîîé*]ÌÉ™3&w³³.뺺ï»wy¶ß  pÀm½ª®÷¼æÀ  ÐsœáÒªªª„‹»»»»³3Ûm¶Ûm¶Ûo3.îîîîÒªªÌ»\»®îû;www|ßm·Á:@~é:FÞûwہvö«wwwtR]ܹ™rægg¯®írî»»ìíÞo¶Ûààm¶øªªª®óœæ€  Ñ£š9ÞìªîÊ¥ªàØSÎUódô½é=î—¬“ŶÞ¶Vf»Í«®êëµÙ‹³6½ºÝç0Üæ“‰{Gœá¹âæ³i­X»»»»¤¥-Tª•Rª.òëT»©u®¼¯v·yÌ79†ç0®Šî»Io½­ošÞ
 €  6s‡{Òª¨I$]ÝÝ™™™˜6Ûm€ 
+¶Ûy™™˜ 
+·™—uÝ]wÙ™íÝÞm·À ¤’{¤’pæÞÍÓqæÞ]wwwwIRùîw¹ÞçGÓ½ç69Àª*¨ª¢ªŠª*«½ï9°ÙÇ8pæÀ  Ñ£š9ÞìÝÊíÖ¶ù°§œ«æÉé{Ò{Ý/Y'‹l#½l¬Í«Êºî®»]˜½™µÛ­Þs
+Îa¹8‘ç¸ôyΞ.7FÓZ±wwwwIJZ©U*¢‹¼ºÕ.ê]kÝ›]ºÝç0ÜæœÃs˜nku™ª­RîîîîîýÊø’AG”4¤kÆO±^ü»E†MéNo$^g3i¡DËÞ
+Ž™24áºZææÚñ£SFÁÊÞÑ8ÔwÆÕu—vªºÝݪëY—wj«š»o­ê«ëZª®“Y™¥W´E€èU•^Ì2  %DT뜷íô¸Ÿ`ꨮ$;êvÿH ;óZ—5†]‘»p„þ™@ð Ô߁œí¶üi£Fši¦škm4ÛI$’YxþÿÁnY‹ñG»Îï‰ u¬ÜßμïÎûç}ÎûîIßxAAA¢¨‚e(B•…óçÊÍ>£f…fæ°ÖØ  é¶Ä6Ù™†XØ3Fšô2Ø1š0uY´c`ìòåWòkòñþ³þ$ëùScµUNôáΟw<ç;Nxxs¿œÜès·¹°Ç.ìË®ëÝ¿lÏ3wªq•NeµæÞûwCw[nÜ$w-½{»»Ï83nûùù穽3
+íÙ¹»774ñZ£|nö܃ós®;Ýïmœððïðë»¶Û`ÖÛïmº·y‡p÷s32îf‰ÓÝÝÌ7ow6¿Ûð©ùjû|I~EBT%R¡*‰)P•	Bø”„¨J‰%+ä%BQñ%!*¢IJS3>2îîîþtú óÒIIÌ ÝÝÝÚI+µÛWwï+Ï}m¶ýI$öI$’6Ûq$I$’FÛn$’É$’HÛmÄ’@9$’Im¸’H'šÒzòö›öC#Y Ð"	G>®FÚôßÉo~  bùžwÔ­Vå¼ps3]]?¢‰}BT%D”¨J„£âR¡*$¥BT%	)U	P•>$2†Qñ)%UUUU¥TTÎõwÎîü€ k÷—}õwιC(C(C(C(C(C(C(C(C(C(C(\ë—9×.uËœë—:åÏÀîA ?cà'ÀQÏ‚˜‘R1£l
+Š1óüà|ê‰óó¢&ݨí6#µ@ØíQØìø| ø
+'ÃN”t(™LÉï ªC÷‰!Hþáõ{ÇÁ"~ÿ¿áø†¢G»Ð|ѬÖDÕ Öj‰¬}[&ÒDÕ5ÀkÍßèêýkµÛ]¨C(C(C(C(C(C(‰%ûªI|ùéêôõxe e e e e e e¢$¾%	P•PÊPÊPÊPÊPÊç:åιsrç\¹ØT ?Z%¥¡bZZZ%¥¡bZZZ%¥¡bZZZ%¥¡bZ!¡ b!¡ b!¡ b!¡ bJJ$¤¡"JJJ$¤¡"JJJ$¤¡"JJJ$¤¡"J
+
+   U---KKERÒÒÑT´´U---KKEP¦ššhbi¦†&šši¡‰¦†&šhbi¡‰¢ŠŠ("(¢‚"ŠEPDQAEPDUQQUUUQ¢*ª"ª"Bª"ª"¥QQUUUQQPDQAEPDQEEQAEŠi¡‰¦†&šhbi¡‰¦ššhbi¦†&š²ÒÒÑT´´U---KKERÒÒÑT´´U-
+
+   "
+JJ$¤¡"JJJ$¤¡"JJJ$¤¡"JJJ$¤¡"J!¡ b!¡ b!¡ b!¡ bZZ%¥¡bZZZ%¥¡bZZZ%¥¡bZZZ%¥¡bZ AÅ@€óˆ"$À1þPêu$Ço¯1˜B$©Fƒ	&ÖK`Èd0¯ÃA ÎÙ€5
+÷Ì‘ê©gëÓVÛŽF5` €ß+¤® J¯<ïÃVªªÛCäbIͺi˜™YñÈ„*µïÖVÌ+Zã Õh7æúåð8ÇրѸultš$EïïϦ뻡é_+rªª©|
+ zäQC®žAãÇb =K‚‹Í'RmØê©!-ŒkM¯ïÅÁV3Á	Ú’C¨‘¿ŒC\à áva]Í÷*ÃH¾¸øô]U^¼^€ híUUWè ô™³R‚š˜A›¦f;vÛ¨Õ¹#››Q˜ò`RyrÊ©xG]Þªªç]÷«çNúÜ©ÙUª-àŠ°¾Ë§5h²Œ—†Jª«*«q†û ðʪÛ@i
+°h;ï¾ÇWª­êQ3eׇg;CIµ°®‚ë,qÒªª®ÍuÀ °ÐvR¬Í¦«ËV{GTÞN·Q·Uä¹üJ|ß—é¾Y¬Ö*ªªÝóW™;µzë¼Ø-ðÖôvUå,K1óß]ùúAu-¤&­UUuoUU@ÑÖîê¬Ø` s
+ÀÔŒ&œdddÔÅŒf2xdÉ4ם5ˆUy]k½Í/c$’úß4w¾±íRUÝeØÞ¢ªª¬¼Õཙ΄èï¿
+Ñ„w;vïY†›UUUëW4sqƺ4××n7ßœvàìoNÐP£Ðx¥´ˆ÷Þë¤Xyv¢­äfmæ÷_/w»Õ±Enî÷¤ƒN\-E]VøÔ·\ÅÙ¾IU’R5¬hæèà媮]ݪ®Iío.íUuÉyË»Uå&ÿÃäߝ¹ÉÉ‘.c™-nþ€ þð kZ½¸fa™™xᙞºÎáë]t櫇5›æ±lóZÖµ¯>%×Ì„ `psÎö”ÅÌ33X^ë` ÆÛØ
+ƒÆÆVf¶nîšô
+ÌÖʍ¶im+øyær±awwv{ôÀà’JHþ˜ {wwwiU+¾ªJïÞöîóß[m¿RI ý’I$¶ÜI$’I$‘¶Û‰$€rI$’6Ûq$I$’FÛn$’Çå¾yG]yG÷ß^Ç}J¯¶ª€ÕWÖµîÂîä’I&1Št“öw²hž± ©‡¬‹}ýWÁ¤™á;g؏.vi$»'¯¿›G>¬²ë5Û,´gUUævSè*ŒîâfWüá_¿=ôõëÎìÕ³
+kž´UáWð±¯yóó\+äïv^滟›åxW³Gd’I÷y ?W~X]Ü’I$’uF¡Oø‡ß­Ó{+Ì8΍l¯êùAAEV~çèìDŠúŠÖ_F¦ŠÉâz
+ôO>Éþ*h§oiekÙb'Þ½ÞÊkø}|í½5ëaùCØx{𨎉$“鮯×HÄÜ«G¬ü„Ö°ÈG rCãß>X]Ü’I$’fÃ}o­•Þ)Ž8SúGêvoŒ.©t¯%UuэSǨB$Ö1£&òh¯­AEUòMº)´æL+Ô:Ð~!{÷8RyÞT0¯žÍˆ†º‘ÑVsÌ׿[²ÀCuc碥WS:Ú÷wå…ÝÉ$’I&%u»²þÆÊk¯„Ç
+ýý"{>ûõ‡Sõ}”úýw¼nsÜáOézû³~ý]}d²šóñ–WsìDHöïÛË­Œª„ùF&½•¿[Õï¬@?W~¬.îI$’I1+W޾~¬áM%|Á,¦ùSèDH¾è((ªïØzÖËùÏ¿EkáÑ>;+ë¿ßzÑ_Äýµ°úš)ØúòSø'!
+òh¯Ñ>*šÐð®×D’H;Úû»êÂîä’I$“õ¨Wx'¶Ã¯\áO­QG{ïMÚ‹ë…l­´&ö=vF3}w„»qâÊ«frÌõù噺s1²Ÿ¿×ž÷­”Ÿ²ð§0çÜ4Ri:|³_™¿˜ =”w …Š·zÞ zRçÝ—u.øYmÞG4   ?\׫»’I$’O£úëÍמ
+ôVXöýµÓÓçWÑY´7ÇEN¶W­ýkçÙ‚5ÛÒ¾™àcÛ×Hž›è}æºè^º>š‡ÝŠ‘
+¥Ù3!Í!âqã·Lî™7î¬ÊeŽ
+ˆ§Œ<s]üwÒ‡–sÎLæä’I$“½B¬5Amš¯¿®Ÿ5×{Ù]L¿sEwQ
+0²§Zú4d!„â8» ‹zû°F‘Në¡Ø©¹=óšéê^í=Îöö7vùî×C®ý˜"{篍ž^§<@>îýØ]Ü’I$’bW3˜aVkë0¯P…~½}†{=y'
+ûû6"çËÙ[çðåSçÉûøE|Ùüy­ù©eO¿³O=aðUýsv€~îû°»¹$’I$Ä©…zþ3°×^cãÑ_sÍóEoÏÎûþ?_öSø'¸C_EMÕüç{ôð«ö_ïÏ®g
+ϼã~·²µë¼Â³áb&¨ëď¶ÄŒ‡Ý{Wåü—‚#2I½s{‘ÔŽn÷w’eÜ”Æ^ÝÝÒ%È±Š‹ºàޝHìÔ®r µ#6ÚliÞä
+Ø-mÎeݪ®®îÕw5nZ­êîÕÖ:—j®ùwkš*oö où5чçG£Úd¼.Æ29R^fbÌÉ™™™‹3.ÏËÕÞ  sÖeï«ï™Ü7Þú}€ nåhll’wœ’üמyæ¹Xªñ*T­s@Á€ 6ØSm›z c 0a€Ç€0À`­æ±išºÛ-gÎڍtÔBÛt…“,ƒŒ–Òd«q*î
+£wq»!mˆ–ÄÂ&H)‘¹b&$KLË‚¨—#!Ø5h]Á¸ßª«Ý÷Îÿ\ÌÌÉðm¶ýI$ùÀíÝÝݤ•Ýí%w~ó·wžúÛmú’Hì’I$m¶âI ’I$¶ÜI$’I$‘¶Û‰$€rI$’6Ûq$?/Íy­ëSZð×Õ{ÎÖI'­Ìê}v€gnz2Ûƒ/º¯›ëÕ…ÝÉ$’I'ñïמ²«EÕ|*‚„=DocK™êíÂi¤‰3R&'žp!3cƒñÀô’I/º=×8= =5ßR»›Ù^pþFˆ»vVý™L¯e÷Ê!”è« ¯h<•Uäà>«çzóôÌ)ø"'•ùE
+vòwÖí ýÝ÷awrI$’I°Ô*Ãn¾Æõ°è'
+øp½PáV}^Yë¼óEN½f”¬š+~eWžM§*§
+öaµÌûÄàžÐêõòùbös<oFøÝ4‚b£ª„6²å¢qµ5¡½{ö`H“ánüf¥ô€U J¯™X]Ü’I$’zªÔ+ª
+ád*” ´a_W¢²Žg>øTç
+3è뿬£¯?;ð¯ÏËàw?:{:+Î[\9¢Ÿ±9 ‰Z»Ñ^çf÷æl®óÙ=ëEwÄ;Ì*Â}o[×	T
+wGÏ¥Ù$’r÷Wä@?.ýØ]Ü’I1Œck„Ò‰:¼¼šª¼{è¼iÂu’p7öðn„Sp"ÕÖÇ@&÷ž—¼M6Ù;ï¾™ÙÕ0îʬÒ!tNr„‘œ¦þ-|5Õ.×	×\(V	wß¡ÂHHÍg›ê€{àuÑmälºlG0Ÿ\¿,.îI$’I0/©›êöW£b5
+ðÍ:ßM¶Lr!Væš&7Ûl£]SËËDHáuÕ0D2ã×ÓeV|qºxy»9Üm²¥yMW´
+¨Õ¾h¯«Þð§Ã_ÍïÏ[p+¸vPŸs9­n€à æg«»’I$“Ö§¯˜]@mc­üÜ*ÎÃ
+uO,p!ýÍ ÷ö|ü¾ùµ̆“ôѽ•"QT^Ï/&¬a…W[e–$HlÓÙ«õm‡òþaþ?Ã$É2L“$É2BBBBBBL“$$É	9âåÂBBL’åË—.\É2L“Ê“¤„$É							2L“$$É2BL“$¹rá&I’d„„„„„„„™&HHI’d™!&HHI’d„™!&I’d™&HHHHHHHIÒL“¤™!!!&I’d„™!!&I’d™&I’\¹p“$É		2BL“$É		2L“$É					2BL“$É	2L“$É	:I’t“$$É2BL“$$$$É2L“$$$É2BL“$$é'I:HHHHHHHHHI’d™!&HHI’d„™&HHHI’d„„™!&HHHHHHHHHI’d„„™!&HHHI’d„„„„„œçõçºó÷÷Ûn¶ó¶Ûoñ·þÝûmÝ·Ÿ»m·›¶ÞnÛu¶Ý¶ÛmäÝÛvÝûm¶Ûm¶ÛoA¶Ým·m¶ëmºÛm·vðÛ¶ðÛní¶Ûm¶Û­¶Ûm¶Û¿m»m¸ñ¼½wmÛm¼›mÖîÛ¶ïÛ¶Ûm¶Ûþí·¶Þ]»÷†ÞM¶îÞM¶Ûm¶îÛn¶Ûm¶Ûm¶ª¯…URªuuY_ûTëÚ«¯þªºöªWΪªUUö]õÿÒÓîúŸgݯÛûwbîü™È»öÆžößmâI>)iihD
+i¦Qü=ïèh5­d’I$“/Ô› ‰æÜ'0~õïAùÐ}6|ó7|6}÷÷ðø#P¯aðõ׬ë³Ãû­›­5¾ºÀ&­n¤ds>¤õ@~]þX]Ü’I$’|ïáϬ(ß¿fÄMpúZú;îÑûùž¯>üW¾ÌW×΀Ҿ}OGÇç¡s½vÛÛp÷Ô-=÷8"¯»‡n¾wݳIp/»³&_æ¹ùawrI$’I«£^{°ïó~¾ÄDö|×ßß¿Öõ¯³ß;ú¿®Œø| ‰=ö‡'[ùýíø'ï</œ ?w»»’I$’LõtNëáKýòõ<¿—÷5œ>ù˜”|»¾ì“³¿g›}û3ÝûH ‹õAiæ»ñ„÷æÙñYe–1„µùyÁ\˽Z+,q—zdÅE©wvvÓ)•u³uÇ‹KLÔµÓW8ì!Rä[æ³-UrîíW5w|w½*®®îÝâ³Wvª»åÝè¥)
+£t~Ž}½÷ß—	.eÜŒÙ’óY†}ºÖµ™™†iÖ¾ý{õ»õà g9ßSPäšèÇy[ç4Îæ›0 fÉ'yÉueâß*•ó 6  ˜6zf€÷@ͶÛ0Öy Þ†î=fëc>Ëç]¼¿–fffOƒm·ðI$ù@Û»»»K·wt©+¿k·wžúÛmú’Hì’I$m¶âI ’I$¶ÜI$’I$‘¶Û‰$€rI$’6Ûq$)¬æ³]í<ü§¸Ï®ô
+!ïši¡Ah¢Š(¢Š@Zªªª   
+_Z×»»’I$’O ¯ä Á÷¨Ií ¨‘AùC¿¯Ë´8‰1a_f„O×èóTu÷wß{õóU4uø2å„ýýØg}/=á•ÝýëZ}$!ç^ü÷Ÿ]ÄÆl wg]ßTêïõawrI$’IÊ?¢þk
+èŸvV[TWˆú=ÌÝ<1&››ëêù¼öM쮜téUçvÚôž©#}ln½í$‡  3k—@dÖ¤|ÂIjÿ±úë«»’I$’NŽ‹ë÷{Ù¸ôH÷É#ñÈtJ=È{gÞaÅàô×}ô ‡¿[U^òù33õ­ogÖšÊîaÆŠ¡óίºòïòÂîä’I$‘ 4tÝ€ ~ýüÏÎ|úïSsëª>¡Ôöèï´÷ÐrÛ†º£T4O
+ÄÚ$£a;lÓ¶yÓMd :µjÕQHUUUTÀ@ýïîÂîä’I$“ü
+wÛåþýuÜúƒÐ|É÷n÷Ï;½.Ûåç§k¿]ú×>Ývðº&±SÕ'{ C}»6hd’s7Ézù@~]þX]Ü’I$’v[÷7~½pKu?_=k[럢úl²ïR«e5W`}%<¨ ³ÑزI·: 7jy	$wÌjÉeýkŸVw$’I$ž·FÞ5×ë—¾µç¬ïîøÞá»ô\¾ûyõ³[ï]ªÝR(;J}”Twäõ@}ÝýØ]Ü’I$’sßêf«Ë=üòöo7òþüš›Ü>¾¸ï½sœêü >®þ¬.îI$’I9z䡇«Êöú7š÷! ß¿Y¾¾Ï]VÝwÅвI;ïçªåßË»’I$’Ožuמ¾wÝþgÀúúêþ™®½Ã×}noï÷Öúó¢w>yº¯
+ƒº#AªÐô·v-Ü‘tz´MÈ^"³L7vK¸Ë³aÁ¬/NÉF׌F—Z¼nÔ³{LkŽ*Ë»µUË»µ\ÌË»µUË»×7«UË»ºªÞfÇ]¨‚¨X`«‡×ô²‚µùÍúîeNõ¼—.
+ã1nK¼ÌÅÌÊÌÌÌÅÌö  € z÷Ï'œ6÷Ž:Ü®¥QËgÓÍRƋӶÀ 6ì‹Z_ÏŸ>-ׄuxÝ[Öê÷5¶Ûm½ÖÛÆÛÜo/uºÍzÛm»ÍÆë5ë§m½ÌÆö¦µ«çœNê6L‘¸]ÌÌ1»—.äL̲K»‰‹˜5™îÂ
+ÈÞÞ.]—N#™kndIî¯ÕV¨((ªêúç¾îîï=¶ßÁ$ç€¤’I$—x’^ÕZ¿}õ¶Ûõ$Ù$’HÛmÄ’@9$’Im¸’H$’I#m·I ä’I$m¶âI žyžy½kWæµ{×›î€
+éxj•íשõ@>Œîçv6Û»î«çYêÂîä’I$“õ}õݺªý€%ô€üëäûë­yßß5Sùþ[³“»úêzÀý7Ýyßiìôlªî›‹
+aÍK——=÷ƒ×wû°»¹$’I$ëÝœ¾Âåíý;ýzûüúãÙ¡Ãħ}¸ãwÎ9öøiÒjŠ5Ô½´»=>¨»¿»»’I$’O—ë®þ{ógïÓåUI"ZˆI0Õž2ÛW§³œzšöòã¶ž\qà™W·=*¯>yÐwvw$’I$ž¥ÎŽ{¼ÉÍÃ^¯[’‚
+K?WXðwÛdÒkX™s“J»_Ûxm'C¼!’€‹ž},$’CO®PO;âã¤KÄúyõawrI$’IàZ~ ]õ®ý™f_hÌï)ʉWÉïäM@Od¯‰ݱÁ%=<è×—'õfž†Uz=ºî€ú»ú°»¹$’I$ì9ž¥Öª»¾2„×V¹’$ïdÒ÷£Ûç<çÓƒ5|5ÎóËŸ>Ɣݎ3áÁ×éfùŽ8×Ͼ{AùwùawrI$’I»íþß0Ã×ÄÝŸe÷ɯwóÍýï›9îr®W´ÒjkÎþËîUšê´W¾„’Iy¹{{î€û»û°»¹$’I$Nºúž÷Þò³Ü³Û=kú
+xw·¾­R¾ V\ª éª©ä®5zª’WˆÉ%æ½P­ÌL”áõÍ}X]Ü’I$’jˆk×ñë͆_[ÖoøüŸ®ß¡tþ}ß«:Msßο¶yµ›ê€ü»ü°»¹$’I$ëÎüïÚrþBƾ›ç=¼ç|5Ó©œëD–H!¢xå)¯˜xÝûVnI-[±Þ,à›„É©c–.äËnÄ–æø‚Öë6VÔ&f6^´¡‘œU^nîÕWRE»[Ë»UYnã»»µU¹ eUAÊ(
+
+ÕOæ¬ç7}zòfI!áÔ—n[ÅÊ—y™‹—Žfff.^yηޯè¾²_w/›ÛÖÜ7­kZÖµÍᦠ°ï½ì•Jònnë«{¯k7[m¶ÛzÛo[o5Ö½mfãyºÛ¦ñµ›¼¶ÚyÛzÛI$’æûUòwv¶Û~¤’ü€©$’I$«´—·ÛWï¹™™žûww`ß²I$‘¶Û‰$€rI$’6Ûq$I$’fffIww`Ü’I$ÌÌÌ’îîÁ¹3žfk}¯<ª
+*¹çožèw~¬.îI$’I;÷ïÀ S=ß4 J ;À·o]îì…ÓEV;w†¾^èï[y¿¾h/zÙë¦^½‰€OC„d‘{ïºêïêÂîä’I$“Ëõ–>²éƒ£ÝýûžölDúÀèk\õéÀЊg®cH‹]›{}u3ïçgƒJ‰\÷ð³¥D¥|¿Y3ÇÎùšÞ|Išjê„Uo/õ@v_$¨H;D…³îoîÂîä’I$“º´Q]ÏhåQaêb(´£õóêð¤TZSž_­‚¨µóï_Ë+JÒ×™ràÑwÕãC–WvBõª‡Ið>@®k£~^wù@~]þX]Ü’I$’j½gVh=d³ãÏ&g2þ%‡‡ÈP´­·üó¨å_‡~û(j«~m¾ºî€ú»ú°»¹$’I$ëö½÷(ñÎU™•[=uí\Õγ—Y’V?Ç­|ÂôWGÛATP_©Š*s;ê€ú»ú°»¹$’I$á<<ëùf^«¾¿z>´‡½ëç6ßçæPç³W…xEVšt’/pêC^qõôÚè:-øï³×Áæ)5Y×Ù$’zÎè
+{MÈ®ö}óoaÁÃmær£žû
+bN5a*vÎí;:ïb»6uߍ{x‹àez•ök }Í}å5“^º³øåžhôúù¯ÖÿSËë³2‚‚Š­ìí­U5U»ìÕû ?SõEU^Ž¼Ã¼0òkÜ;¿“¯Îkä›fÍÕ§Ø`÷ô_s{<½ïËûùÖhëÀïU3àš÷@}ϸ*ªç8{ÑÏŸ#åløTùϤú÷
+ô†¬3„ÿ{Ï
+¯²HÉ=õÕ÷>àHªªž¹Ã¿;>púú×Ï9ùÂ~wâûP1”OmÝl0ñ‘'ŠÝªŠºÅæ	¼–.Iw¬–6`ŽË.ÅeÞl9¹Hk[Ù*¢ÓDÊžjeÖ—u|¨·7zË»U\ÕݪÉ4·j·—v¬·rqZºÖµªu™°CˆrO@8½yÞMûïœñòfLÁ¹r83eæf.fc™™»U»žò»;
+fÛî™›²,°×çÄÞî9òrIzÖ¼óÏ<Ä»™[í%Í®Òç*’I&Ûm¶Ûo6Þ»ÖÛ¶Þ¼ÝÝzÞk¶ÞµÕæ‡W­[wš½ÈC¶íÖd˜å¸0²e¸dËlat5$«[ºÇ`ÚLÅËÃ/%’˜¬f0.Ú  ÔÅòK»»†ff{Hþ@Ô’I$’UÔ—·V¯ßs33ßRHý’I$ÌÌÉHä’I&ffH’@7$’I332D’¹$’I™™’$
+Êò¼Íù«Öµ½yá§
 \ÖðY$¯têæ	
+ÝÙ+	M±”æOz®Ã{ÞÉögËóõË_sëaÏF½èóÔ—ËÛǝ÷Ô¿³¯âûóœ¢êÒ¶滞´ÏTäü"ª«Ï]:Ì“Íü/N¿ƒnË3Pxׯk
+_<çñëë¬Ïw¬ëùg}ï}ÑïØ{CÕRçZï”Üû"ª«ž¾éO~Qžµ¯=KþO\á:
+øÿ$õæh¯ª®ܪ¶8I$“wî€úŸP$UUÙÛÉûÖQâQëÖ7Äp*± -ª¯¿:»àpCC¼žž­p®ŠhÕUgWú€ Ãï]y	a›ÃþÐA¿}UUz+¾Úë¿K­€ï¯†šoRf“]7Èõ ݦG†õÛ1ªYÀμ²W7œœfþ¨((ª÷EÙOfšèÖ«ª(ÒtüUU^MƒŒùÙóæŸ>Y©×­Ëö¸u5ü÷֏;öxåa–i<ÖŽŠ©éžŸŠªª†º”FˆöW»%WŽ¼Ûœ§¹Ê«k®1%ët ê39,î¶f«›Ðªç^õ9󯊪ª†Úæz¹¥:¸¦±œô卯2–Ʀ3»Gtý+;²
+§]̹߾ìámúÙ/-öªª²s]§o\o{É»/5ÌI¾úè36j_€ ÅUUïöõç'¾Ù¿=aì/|7ã°ï´Eô¯Z‚iôì<yÊ®YwJ¢Í̃Í,åË"1šÖcLÝÉ.–I†øƒ$KÓLÞ‹ÝWQ£tdÆåÍñ«9Wwj«›»µuríu˜ª¹«»e«¾]Úªêîì,’PUQÃlë/Ç“²=LÁË&[\¼ÌÅÌÃ33wj·yn¬§•Ûàc¦ð›y³š+ÇGLÎNI.­^-ó´·]IWWRI$’m¶Ûoi½w¹­¼Ì×»m»Ëm¼Ì×y»J«‰-.$¹]í}îîÃ33=õ$€oâ =I$’I.$’õ%wï¹™™ï©$~É$’ffd‰$rI$“33$I ’I$™™™"I Ü’I$ÌÌÉHåkOÍhŒ­žUf&ü=½*ª¯¿Ÿ»Æ«ÒW^y¾¼6Vdªöûß…è<ß™Îl9Àá|ï®<ºº7F+ú6*ÉSÇÚªª½=è¿ÃG•y <ùëæµ8|Ì?D3Ïã¿ZësïžùãîUw%wº÷ÆI#:ò[ªÒÊD½Ò8oíUUvÇèÚU–ùï¯Xt§|ì€{ïÁÖ¤„£¤%rþší¦«³Jf»wt9t“¶Ðͧjۍ¹íöªªºðûõ`˜QmPÕœ/»13Gx^zùÞ{uó¿$8t;ßôO[òíþ<ÓU¿@Z4<wÇíUU_{º«AXÝ÷¼°ú­–w¾¬œæ× ùvw×WUé½WG~yk„’IÞk·Òªªõ*ª‚Š®€ ;¿I€uÏ™XQàzo¬õçZæ ![2ÂÊ®Ï=u´•ø•AõØí_¯ÄÅoaß·0ß²Ë5]U«ÌQSç\øèЇÉyLÂí/éUUx*¬óç£Ï9AÀ©Ý`5MS{…]î‹õ¦®Žo(Â;¹+7=œúÝž8aۮ퓊;ó#6(ðÍ»ùÛôªª»©É¿p‡~¯]ê€âE\ªñéÓ~¯0îÃêygžsyïšyÏ=ñúÓÍó­N?UWÎ_žÖCâyïZ0<õšòó¯;Öº;NÑO‰ëÑÑßEü—­{ëUçWžç«8üUU\é=g~¦WØq¿{¬ìÂë7¸š¾¼/-UqÚü{à¯ráýU5øÕ·yа˜\n^L3332ñÃ3]Md:ên÷Ï\²¸qÝU®oæwŸqe¸T€ 9Îv¥â«mî½n¯1¶Ûm¶Ûm¶òÞ7˜Þ·[šîÛ×—zÛ­Í{™ºí
 Ûomãoë®®±U÷˜Œ±Ê€Ó,ËËZ’l¹mØÅ2ã˜æ\Å#d·.›IcvÌæ÷Í÷^ùå§GÐ.îíû™™“à’@7ò ¤’I$—R^ª«¿}ÌÌÏ}I öI$“33$I ’I$™™™"I Ü’I$ÌÌÉHä’I&ffH’@7>Žjõ½ï~ïëÝûu¢ÛMÎUo¥UUþ:£R«øíªè‡¼ynçÖñºUðßÏsˏvœ<×yqªëƼjU_®SÞçZ9ï¸~•UW~½þw·C–ÂY嚱ï¨IÏ:þfŒ„9Ö»ç¹éä=ªª¬òö>§GÏ’¥	câxšÞûãš,õ»ß®Ç\†Å]õáéUU|ó\ž²užòú“ÝëN¿o=xG¤ï‡¿á$’ožú÷ç:á®±EŽ\ÈÕßÅUU•ßšÔßïª/RQ¼õŸ5ï½›Ýo½o¾¼ù×0øªª·ÑÎèÖòrjõào}ï|9nìíUU|4lׯ^“4›Ï[ÏÐÇaÚ	ï'…’I'ÎýõœÙñVÛmóeãß,¹nqxìñË®ý¶ÆÓl~`×£3¿¿;óÓÍžÅ^sæôeo¤•!,î8a¯µUUÖoVwŸ¯ê_ç'µóæL÷Û¿‰ºŽõ¼³âªªì™ûá×~]òc|½l°´/Ê>}êi÷èçi\ï~§©;×S—ˆÌ”™c-»ËÌ\É™&dÃ3hßœë†+×­Lâu&çWêÎÅaR €ç8RS9¾u.ªê[ç{I6Û¶Û{ºÛN÷[ÖÛY™­n6Ý<mff·šÛ×­½yÄ’I+0?kÀé$Ÿ‡©$êI$’¤·Ê¤½åUß¾æfg¾¤
+û$’I™™’$
+É$’LÌÌ‘$€nI$’ffd‰$rI$“33$I ‘Õç;ð÷Y½ï{Þ÷½ü˜¨çÆë߇Áfwki­tëåßOÖw¾øf§~`ÿ/5ç*¿#÷Ùöªª»ù¬ùμžTÍ|rrwí凯ÎÅWÜ;nby™XBòñÃÚªªà{ޏWüŽÎU¼0õïaÏ/áù5Üõ÷rÝM÷Ö¼ëÑÞz>ÕUW½þ~œîóÜÎAÃéä—½ô_5ç3xôûÃÚªªë¾n­›°éOF¶öwG§ÒöïÑÂ'×}oÃb¯Zåÿ@ úUU_]ÿC÷¿ZàöFý“.Ô¾}ŒÙz¿®|½óŸKèd’8åúÌûè"MáI,×Òªªï{w¼²üòf´Y×ÏWvÇ®÷yðỐ®õ¿|=ªª¯¾zvï\óÏ£²Ë>tßrs•Ù¿7äæk¬ù¾ºä
 ÷¼ÎNÓ⪪¹éözëÚ@ßò…Ózߪöt{$’O|ìøªª¿9ê/@ÎËyëאsA­{õÒ:Qçõÿþ¨-	4%öY“4REõ0þ;j5BÖ¤¦Bè İ   øT5
+T4U3€PT©Tµ@U`E!’‡þ©U»bYƒ½a¨‘çEHåT¦Hd	л@¥ bŸWùü€2 €%€> ˆÈ±J”±J”©J”§]±’¥,R¥)R–hL	`’`’`’	P ‚X!‚H!‚H!‚JT¥Š-‹E¨ªKGÀ,€R¤.@,`†H!‚H!‚H!‚$¥ŠV@>  iú@?ûù4D’Ôæb ÿµþýo5É^ ÕúÝÙUUUUUUUTªªªªªªªªªªªªµUUUUUUUUUU_Ø€5 ځh(ù@  Àà^Í4Ð!ÿ€$˜°-í 0 käÙ€â@xÿôq6±$µ­P÷÷ù"ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªþPú€.ó„’Z÷|òö€êÒÒŲY¢"Š¢¦bŠ* iH–j)¡¤@ ³Oî•iH¤*†‰”*…™¢b  …Ø¢P H@ƒò ‚/ÖA"N€šÀ~¿Ôú`=@è@M=`‰ (Ôþ æ='Ѥ!z 4 z w=Ð@l!gÚ5 ýÀ“€
+ 0“åöÕ‰?~0ìxOÜ
+§ 
+ïD˜ ö x´ À #Ôÿ  •	„'×d”
+À {?M ¹ æ $œ€{Àú€CØÜý=v °J„X
+À?ò@È`ç úÀæíûm¦É"s´A
+ÜÈ'É| : ÿذ 7´!xtê ‰7Dž6D ȁI@>Câ>#â>"|GÄßöþdØ€b@|`b	ò@|¡’@=!“P	ô d=`ÄzØ 0  wÄûp„Ið Ÿ
+ øDœ >Ð	üÈ 6 þO”!{@2¸ ž€v üð jÒÔ
+€>¨{{ =<á!& <€‚'å€ä‡¾‰(Òz§€ ò ü@¢ {@Ÿþ”û 6 äX€ûZ» f‰0àæ„"L@~Ô G  F€uØPûà8 Ô
+À:ú€P6ÜøÐ<@=³Ù PÖÞP¤¡QBÄ¡d¡T-
+P±BÐX¡R…PªAhZPZBUBЪAe¡h*…¡hU
+ ´- Z¡T(QB¨R{ 5„"Oæ Ø>°ú >ǘ€hÀ>@ òó$¬­óÈ ›ÎP@œ6€Ä÷é$’M :@‰&°„I€àGҐ@'Ò ýqê È 
+ 9 ü 9Â@*!|Јñ„"M 0 ÐÜþ´AY$þ¬!RIµ„„xB$÷ ;€n èn at 0 (B'¨
+d“ðôD™T© 8„$“  XŸâ¤P5  >d  Ž0åë€$ŸOÞ@ìš P#ÓÀð„"Oç„"O`Ÿtp<€4 æ€ûçÖð Ž 9ˆ"Nà DŸ0׿@EÿÅÜ‘N$4/… 
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.exclude
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.exclude	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.exclude	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+*/sys/devices/system/cpu/cpu*/cache

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,609 @@
+Machine (P#0 total=516423680KB Backend=Linux)
+  Group0 L#0 (total=124780544KB)
+    NUMANode L#0 (P#0 local=58458112KB total=58458112KB)
+      Socket L#0 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#0 (size=4096KB linesize=128)
+          L2Cache L#0 (size=256KB linesize=128 ways=8)
+            L1Cache L#0 (size=32KB linesize=128 ways=8)
+              Core L#0 (P#0)
+                PU L#0 (P#0)
+                PU L#1 (P#1)
+                PU L#2 (P#2)
+                PU L#3 (P#3)
+      Socket L#1 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#1 (size=4096KB linesize=128)
+          L2Cache L#1 (size=256KB linesize=128 ways=8)
+            L1Cache L#1 (size=32KB linesize=128 ways=8)
+              Core L#1 (P#4)
+                PU L#4 (P#4)
+                PU L#5 (P#5)
+                PU L#6 (P#6)
+                PU L#7 (P#7)
+      Socket L#2 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#2 (size=4096KB linesize=128)
+          L2Cache L#2 (size=256KB linesize=128 ways=8)
+            L1Cache L#2 (size=32KB linesize=128 ways=8)
+              Core L#2 (P#8)
+                PU L#8 (P#8)
+                PU L#9 (P#9)
+                PU L#10 (P#10)
+                PU L#11 (P#11)
+      Socket L#3 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#3 (size=4096KB linesize=128)
+          L2Cache L#3 (size=256KB linesize=128 ways=8)
+            L1Cache L#3 (size=32KB linesize=128 ways=8)
+              Core L#3 (P#12)
+                PU L#12 (P#12)
+                PU L#13 (P#13)
+                PU L#14 (P#14)
+                PU L#15 (P#15)
+      Socket L#4 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#4 (size=4096KB linesize=128)
+          L2Cache L#4 (size=256KB linesize=128 ways=8)
+            L1Cache L#4 (size=32KB linesize=128 ways=8)
+              Core L#4 (P#16)
+                PU L#16 (P#16)
+                PU L#17 (P#17)
+                PU L#18 (P#18)
+                PU L#19 (P#19)
+      Socket L#5 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#5 (size=4096KB linesize=128)
+          L2Cache L#5 (size=256KB linesize=128 ways=8)
+            L1Cache L#5 (size=32KB linesize=128 ways=8)
+              Core L#5 (P#20)
+                PU L#20 (P#20)
+                PU L#21 (P#21)
+                PU L#22 (P#22)
+                PU L#23 (P#23)
+      Socket L#6 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#6 (size=4096KB linesize=128)
+          L2Cache L#6 (size=256KB linesize=128 ways=8)
+            L1Cache L#6 (size=32KB linesize=128 ways=8)
+              Core L#6 (P#24)
+                PU L#24 (P#24)
+                PU L#25 (P#25)
+                PU L#26 (P#26)
+                PU L#27 (P#27)
+      Socket L#7 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#7 (size=4096KB linesize=128)
+          L2Cache L#7 (size=256KB linesize=128 ways=8)
+            L1Cache L#7 (size=32KB linesize=128 ways=8)
+              Core L#7 (P#28)
+                PU L#28 (P#28)
+                PU L#29 (P#29)
+                PU L#30 (P#30)
+                PU L#31 (P#31)
+    NUMANode L#1 (P#1 local=66322432KB total=66322432KB)
+      Socket L#8 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#8 (size=4096KB linesize=128)
+          L2Cache L#8 (size=256KB linesize=128 ways=8)
+            L1Cache L#8 (size=32KB linesize=128 ways=8)
+              Core L#8 (P#32)
+                PU L#32 (P#32)
+                PU L#33 (P#33)
+                PU L#34 (P#34)
+                PU L#35 (P#35)
+      Socket L#9 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#9 (size=4096KB linesize=128)
+          L2Cache L#9 (size=256KB linesize=128 ways=8)
+            L1Cache L#9 (size=32KB linesize=128 ways=8)
+              Core L#9 (P#36)
+                PU L#36 (P#36)
+                PU L#37 (P#37)
+                PU L#38 (P#38)
+                PU L#39 (P#39)
+      Socket L#10 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#10 (size=4096KB linesize=128)
+          L2Cache L#10 (size=256KB linesize=128 ways=8)
+            L1Cache L#10 (size=32KB linesize=128 ways=8)
+              Core L#10 (P#40)
+                PU L#40 (P#40)
+                PU L#41 (P#41)
+                PU L#42 (P#42)
+                PU L#43 (P#43)
+      Socket L#11 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#11 (size=4096KB linesize=128)
+          L2Cache L#11 (size=256KB linesize=128 ways=8)
+            L1Cache L#11 (size=32KB linesize=128 ways=8)
+              Core L#11 (P#44)
+                PU L#44 (P#44)
+                PU L#45 (P#45)
+                PU L#46 (P#46)
+                PU L#47 (P#47)
+      Socket L#12 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#12 (size=4096KB linesize=128)
+          L2Cache L#12 (size=256KB linesize=128 ways=8)
+            L1Cache L#12 (size=32KB linesize=128 ways=8)
+              Core L#12 (P#48)
+                PU L#48 (P#48)
+                PU L#49 (P#49)
+                PU L#50 (P#50)
+                PU L#51 (P#51)
+      Socket L#13 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#13 (size=4096KB linesize=128)
+          L2Cache L#13 (size=256KB linesize=128 ways=8)
+            L1Cache L#13 (size=32KB linesize=128 ways=8)
+              Core L#13 (P#52)
+                PU L#52 (P#52)
+                PU L#53 (P#53)
+                PU L#54 (P#54)
+                PU L#55 (P#55)
+      Socket L#14 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#14 (size=4096KB linesize=128)
+          L2Cache L#14 (size=256KB linesize=128 ways=8)
+            L1Cache L#14 (size=32KB linesize=128 ways=8)
+              Core L#14 (P#56)
+                PU L#56 (P#56)
+                PU L#57 (P#57)
+                PU L#58 (P#58)
+                PU L#59 (P#59)
+      Socket L#15 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#15 (size=4096KB linesize=128)
+          L2Cache L#15 (size=256KB linesize=128 ways=8)
+            L1Cache L#15 (size=32KB linesize=128 ways=8)
+              Core L#15 (P#60)
+                PU L#60 (P#60)
+                PU L#61 (P#61)
+                PU L#62 (P#62)
+                PU L#63 (P#63)
+  Group0 L#1 (total=133955584KB)
+    NUMANode L#2 (P#4 local=66846720KB total=66846720KB)
+      Socket L#16 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#16 (size=4096KB linesize=128)
+          L2Cache L#16 (size=256KB linesize=128 ways=8)
+            L1Cache L#16 (size=32KB linesize=128 ways=8)
+              Core L#16 (P#64)
+                PU L#64 (P#64)
+                PU L#65 (P#65)
+                PU L#66 (P#66)
+                PU L#67 (P#67)
+      Socket L#17 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#17 (size=4096KB linesize=128)
+          L2Cache L#17 (size=256KB linesize=128 ways=8)
+            L1Cache L#17 (size=32KB linesize=128 ways=8)
+              Core L#17 (P#68)
+                PU L#68 (P#68)
+                PU L#69 (P#69)
+                PU L#70 (P#70)
+                PU L#71 (P#71)
+      Socket L#18 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#18 (size=4096KB linesize=128)
+          L2Cache L#18 (size=256KB linesize=128 ways=8)
+            L1Cache L#18 (size=32KB linesize=128 ways=8)
+              Core L#18 (P#72)
+                PU L#72 (P#72)
+                PU L#73 (P#73)
+                PU L#74 (P#74)
+                PU L#75 (P#75)
+      Socket L#19 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#19 (size=4096KB linesize=128)
+          L2Cache L#19 (size=256KB linesize=128 ways=8)
+            L1Cache L#19 (size=32KB linesize=128 ways=8)
+              Core L#19 (P#76)
+                PU L#76 (P#76)
+                PU L#77 (P#77)
+                PU L#78 (P#78)
+                PU L#79 (P#79)
+      Socket L#20 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#20 (size=4096KB linesize=128)
+          L2Cache L#20 (size=256KB linesize=128 ways=8)
+            L1Cache L#20 (size=32KB linesize=128 ways=8)
+              Core L#20 (P#80)
+                PU L#80 (P#80)
+                PU L#81 (P#81)
+                PU L#82 (P#82)
+                PU L#83 (P#83)
+      Socket L#21 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#21 (size=4096KB linesize=128)
+          L2Cache L#21 (size=256KB linesize=128 ways=8)
+            L1Cache L#21 (size=32KB linesize=128 ways=8)
+              Core L#21 (P#84)
+                PU L#84 (P#84)
+                PU L#85 (P#85)
+                PU L#86 (P#86)
+                PU L#87 (P#87)
+      Socket L#22 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#22 (size=4096KB linesize=128)
+          L2Cache L#22 (size=256KB linesize=128 ways=8)
+            L1Cache L#22 (size=32KB linesize=128 ways=8)
+              Core L#22 (P#88)
+                PU L#88 (P#88)
+                PU L#89 (P#89)
+                PU L#90 (P#90)
+                PU L#91 (P#91)
+      Socket L#23 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#23 (size=4096KB linesize=128)
+          L2Cache L#23 (size=256KB linesize=128 ways=8)
+            L1Cache L#23 (size=32KB linesize=128 ways=8)
+              Core L#23 (P#92)
+                PU L#92 (P#92)
+                PU L#93 (P#93)
+                PU L#94 (P#94)
+                PU L#95 (P#95)
+    NUMANode L#3 (P#5 local=67108864KB total=67108864KB)
+      Socket L#24 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#24 (size=4096KB linesize=128)
+          L2Cache L#24 (size=256KB linesize=128 ways=8)
+            L1Cache L#24 (size=32KB linesize=128 ways=8)
+              Core L#24 (P#96)
+                PU L#96 (P#96)
+                PU L#97 (P#97)
+                PU L#98 (P#98)
+                PU L#99 (P#99)
+      Socket L#25 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#25 (size=4096KB linesize=128)
+          L2Cache L#25 (size=256KB linesize=128 ways=8)
+            L1Cache L#25 (size=32KB linesize=128 ways=8)
+              Core L#25 (P#100)
+                PU L#100 (P#100)
+                PU L#101 (P#101)
+                PU L#102 (P#102)
+                PU L#103 (P#103)
+      Socket L#26 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#26 (size=4096KB linesize=128)
+          L2Cache L#26 (size=256KB linesize=128 ways=8)
+            L1Cache L#26 (size=32KB linesize=128 ways=8)
+              Core L#26 (P#104)
+                PU L#104 (P#104)
+                PU L#105 (P#105)
+                PU L#106 (P#106)
+                PU L#107 (P#107)
+      Socket L#27 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#27 (size=4096KB linesize=128)
+          L2Cache L#27 (size=256KB linesize=128 ways=8)
+            L1Cache L#27 (size=32KB linesize=128 ways=8)
+              Core L#27 (P#108)
+                PU L#108 (P#108)
+                PU L#109 (P#109)
+                PU L#110 (P#110)
+                PU L#111 (P#111)
+      Socket L#28 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#28 (size=4096KB linesize=128)
+          L2Cache L#28 (size=256KB linesize=128 ways=8)
+            L1Cache L#28 (size=32KB linesize=128 ways=8)
+              Core L#28 (P#112)
+                PU L#112 (P#112)
+                PU L#113 (P#113)
+                PU L#114 (P#114)
+                PU L#115 (P#115)
+      Socket L#29 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#29 (size=4096KB linesize=128)
+          L2Cache L#29 (size=256KB linesize=128 ways=8)
+            L1Cache L#29 (size=32KB linesize=128 ways=8)
+              Core L#29 (P#116)
+                PU L#116 (P#116)
+                PU L#117 (P#117)
+                PU L#118 (P#118)
+                PU L#119 (P#119)
+      Socket L#30 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#30 (size=4096KB linesize=128)
+          L2Cache L#30 (size=256KB linesize=128 ways=8)
+            L1Cache L#30 (size=32KB linesize=128 ways=8)
+              Core L#30 (P#120)
+                PU L#120 (P#120)
+                PU L#121 (P#121)
+                PU L#122 (P#122)
+                PU L#123 (P#123)
+      Socket L#31 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#31 (size=4096KB linesize=128)
+          L2Cache L#31 (size=256KB linesize=128 ways=8)
+            L1Cache L#31 (size=32KB linesize=128 ways=8)
+              Core L#31 (P#124)
+                PU L#124 (P#124)
+                PU L#125 (P#125)
+                PU L#126 (P#126)
+                PU L#127 (P#127)
+  Group0 L#2 (total=133955584KB)
+    NUMANode L#4 (P#8 local=66846720KB total=66846720KB)
+      Socket L#32 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#32 (size=4096KB linesize=128)
+          L2Cache L#32 (size=256KB linesize=128 ways=8)
+            L1Cache L#32 (size=32KB linesize=128 ways=8)
+              Core L#32 (P#128)
+                PU L#128 (P#128)
+                PU L#129 (P#129)
+                PU L#130 (P#130)
+                PU L#131 (P#131)
+      Socket L#33 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#33 (size=4096KB linesize=128)
+          L2Cache L#33 (size=256KB linesize=128 ways=8)
+            L1Cache L#33 (size=32KB linesize=128 ways=8)
+              Core L#33 (P#132)
+                PU L#132 (P#132)
+                PU L#133 (P#133)
+                PU L#134 (P#134)
+                PU L#135 (P#135)
+      Socket L#34 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#34 (size=4096KB linesize=128)
+          L2Cache L#34 (size=256KB linesize=128 ways=8)
+            L1Cache L#34 (size=32KB linesize=128 ways=8)
+              Core L#34 (P#136)
+                PU L#136 (P#136)
+                PU L#137 (P#137)
+                PU L#138 (P#138)
+                PU L#139 (P#139)
+      Socket L#35 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#35 (size=4096KB linesize=128)
+          L2Cache L#35 (size=256KB linesize=128 ways=8)
+            L1Cache L#35 (size=32KB linesize=128 ways=8)
+              Core L#35 (P#140)
+                PU L#140 (P#140)
+                PU L#141 (P#141)
+                PU L#142 (P#142)
+                PU L#143 (P#143)
+      Socket L#36 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#36 (size=4096KB linesize=128)
+          L2Cache L#36 (size=256KB linesize=128 ways=8)
+            L1Cache L#36 (size=32KB linesize=128 ways=8)
+              Core L#36 (P#144)
+                PU L#144 (P#144)
+                PU L#145 (P#145)
+                PU L#146 (P#146)
+                PU L#147 (P#147)
+      Socket L#37 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#37 (size=4096KB linesize=128)
+          L2Cache L#37 (size=256KB linesize=128 ways=8)
+            L1Cache L#37 (size=32KB linesize=128 ways=8)
+              Core L#37 (P#148)
+                PU L#148 (P#148)
+                PU L#149 (P#149)
+                PU L#150 (P#150)
+                PU L#151 (P#151)
+      Socket L#38 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#38 (size=4096KB linesize=128)
+          L2Cache L#38 (size=256KB linesize=128 ways=8)
+            L1Cache L#38 (size=32KB linesize=128 ways=8)
+              Core L#38 (P#152)
+                PU L#152 (P#152)
+                PU L#153 (P#153)
+                PU L#154 (P#154)
+                PU L#155 (P#155)
+      Socket L#39 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#39 (size=4096KB linesize=128)
+          L2Cache L#39 (size=256KB linesize=128 ways=8)
+            L1Cache L#39 (size=32KB linesize=128 ways=8)
+              Core L#39 (P#156)
+                PU L#156 (P#156)
+                PU L#157 (P#157)
+                PU L#158 (P#158)
+                PU L#159 (P#159)
+    NUMANode L#5 (P#9 local=67108864KB total=67108864KB)
+      Socket L#40 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#40 (size=4096KB linesize=128)
+          L2Cache L#40 (size=256KB linesize=128 ways=8)
+            L1Cache L#40 (size=32KB linesize=128 ways=8)
+              Core L#40 (P#160)
+                PU L#160 (P#160)
+                PU L#161 (P#161)
+                PU L#162 (P#162)
+                PU L#163 (P#163)
+      Socket L#41 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#41 (size=4096KB linesize=128)
+          L2Cache L#41 (size=256KB linesize=128 ways=8)
+            L1Cache L#41 (size=32KB linesize=128 ways=8)
+              Core L#41 (P#164)
+                PU L#164 (P#164)
+                PU L#165 (P#165)
+                PU L#166 (P#166)
+                PU L#167 (P#167)
+      Socket L#42 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#42 (size=4096KB linesize=128)
+          L2Cache L#42 (size=256KB linesize=128 ways=8)
+            L1Cache L#42 (size=32KB linesize=128 ways=8)
+              Core L#42 (P#168)
+                PU L#168 (P#168)
+                PU L#169 (P#169)
+                PU L#170 (P#170)
+                PU L#171 (P#171)
+      Socket L#43 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#43 (size=4096KB linesize=128)
+          L2Cache L#43 (size=256KB linesize=128 ways=8)
+            L1Cache L#43 (size=32KB linesize=128 ways=8)
+              Core L#43 (P#172)
+                PU L#172 (P#172)
+                PU L#173 (P#173)
+                PU L#174 (P#174)
+                PU L#175 (P#175)
+      Socket L#44 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#44 (size=4096KB linesize=128)
+          L2Cache L#44 (size=256KB linesize=128 ways=8)
+            L1Cache L#44 (size=32KB linesize=128 ways=8)
+              Core L#44 (P#176)
+                PU L#176 (P#176)
+                PU L#177 (P#177)
+                PU L#178 (P#178)
+                PU L#179 (P#179)
+      Socket L#45 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#45 (size=4096KB linesize=128)
+          L2Cache L#45 (size=256KB linesize=128 ways=8)
+            L1Cache L#45 (size=32KB linesize=128 ways=8)
+              Core L#45 (P#180)
+                PU L#180 (P#180)
+                PU L#181 (P#181)
+                PU L#182 (P#182)
+                PU L#183 (P#183)
+      Socket L#46 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#46 (size=4096KB linesize=128)
+          L2Cache L#46 (size=256KB linesize=128 ways=8)
+            L1Cache L#46 (size=32KB linesize=128 ways=8)
+              Core L#46 (P#184)
+                PU L#184 (P#184)
+                PU L#185 (P#185)
+                PU L#186 (P#186)
+                PU L#187 (P#187)
+      Socket L#47 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#47 (size=4096KB linesize=128)
+          L2Cache L#47 (size=256KB linesize=128 ways=8)
+            L1Cache L#47 (size=32KB linesize=128 ways=8)
+              Core L#47 (P#188)
+                PU L#188 (P#188)
+                PU L#189 (P#189)
+                PU L#190 (P#190)
+                PU L#191 (P#191)
+  Group0 L#3 (total=123731968KB)
+    NUMANode L#6 (P#12 local=66846720KB total=66846720KB)
+      Socket L#48 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#48 (size=4096KB linesize=128)
+          L2Cache L#48 (size=256KB linesize=128 ways=8)
+            L1Cache L#48 (size=32KB linesize=128 ways=8)
+              Core L#48 (P#192)
+                PU L#192 (P#192)
+                PU L#193 (P#193)
+                PU L#194 (P#194)
+                PU L#195 (P#195)
+      Socket L#49 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#49 (size=4096KB linesize=128)
+          L2Cache L#49 (size=256KB linesize=128 ways=8)
+            L1Cache L#49 (size=32KB linesize=128 ways=8)
+              Core L#49 (P#196)
+                PU L#196 (P#196)
+                PU L#197 (P#197)
+                PU L#198 (P#198)
+                PU L#199 (P#199)
+      Socket L#50 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#50 (size=4096KB linesize=128)
+          L2Cache L#50 (size=256KB linesize=128 ways=8)
+            L1Cache L#50 (size=32KB linesize=128 ways=8)
+              Core L#50 (P#200)
+                PU L#200 (P#200)
+                PU L#201 (P#201)
+                PU L#202 (P#202)
+                PU L#203 (P#203)
+      Socket L#51 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#51 (size=4096KB linesize=128)
+          L2Cache L#51 (size=256KB linesize=128 ways=8)
+            L1Cache L#51 (size=32KB linesize=128 ways=8)
+              Core L#51 (P#204)
+                PU L#204 (P#204)
+                PU L#205 (P#205)
+                PU L#206 (P#206)
+                PU L#207 (P#207)
+      Socket L#52 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#52 (size=4096KB linesize=128)
+          L2Cache L#52 (size=256KB linesize=128 ways=8)
+            L1Cache L#52 (size=32KB linesize=128 ways=8)
+              Core L#52 (P#208)
+                PU L#208 (P#208)
+                PU L#209 (P#209)
+                PU L#210 (P#210)
+                PU L#211 (P#211)
+      Socket L#53 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#53 (size=4096KB linesize=128)
+          L2Cache L#53 (size=256KB linesize=128 ways=8)
+            L1Cache L#53 (size=32KB linesize=128 ways=8)
+              Core L#53 (P#212)
+                PU L#212 (P#212)
+                PU L#213 (P#213)
+                PU L#214 (P#214)
+                PU L#215 (P#215)
+      Socket L#54 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#54 (size=4096KB linesize=128)
+          L2Cache L#54 (size=256KB linesize=128 ways=8)
+            L1Cache L#54 (size=32KB linesize=128 ways=8)
+              Core L#54 (P#216)
+                PU L#216 (P#216)
+                PU L#217 (P#217)
+                PU L#218 (P#218)
+                PU L#219 (P#219)
+      Socket L#55 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#55 (size=4096KB linesize=128)
+          L2Cache L#55 (size=256KB linesize=128 ways=8)
+            L1Cache L#55 (size=32KB linesize=128 ways=8)
+              Core L#55 (P#220)
+                PU L#220 (P#220)
+                PU L#221 (P#221)
+                PU L#222 (P#222)
+                PU L#223 (P#223)
+    NUMANode L#7 (P#13 local=56885248KB total=56885248KB)
+      Socket L#56 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#56 (size=4096KB linesize=128)
+          L2Cache L#56 (size=256KB linesize=128 ways=8)
+            L1Cache L#56 (size=32KB linesize=128 ways=8)
+              Core L#56 (P#224)
+                PU L#224 (P#224)
+                PU L#225 (P#225)
+                PU L#226 (P#226)
+                PU L#227 (P#227)
+      Socket L#57 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#57 (size=4096KB linesize=128)
+          L2Cache L#57 (size=256KB linesize=128 ways=8)
+            L1Cache L#57 (size=32KB linesize=128 ways=8)
+              Core L#57 (P#228)
+                PU L#228 (P#228)
+                PU L#229 (P#229)
+                PU L#230 (P#230)
+                PU L#231 (P#231)
+      Socket L#58 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#58 (size=4096KB linesize=128)
+          L2Cache L#58 (size=256KB linesize=128 ways=8)
+            L1Cache L#58 (size=32KB linesize=128 ways=8)
+              Core L#58 (P#232)
+                PU L#232 (P#232)
+                PU L#233 (P#233)
+                PU L#234 (P#234)
+                PU L#235 (P#235)
+      Socket L#59 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#59 (size=4096KB linesize=128)
+          L2Cache L#59 (size=256KB linesize=128 ways=8)
+            L1Cache L#59 (size=32KB linesize=128 ways=8)
+              Core L#59 (P#236)
+                PU L#236 (P#236)
+                PU L#237 (P#237)
+                PU L#238 (P#238)
+                PU L#239 (P#239)
+      Socket L#60 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#60 (size=4096KB linesize=128)
+          L2Cache L#60 (size=256KB linesize=128 ways=8)
+            L1Cache L#60 (size=32KB linesize=128 ways=8)
+              Core L#60 (P#240)
+                PU L#240 (P#240)
+                PU L#241 (P#241)
+                PU L#242 (P#242)
+                PU L#243 (P#243)
+      Socket L#61 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#61 (size=4096KB linesize=128)
+          L2Cache L#61 (size=256KB linesize=128 ways=8)
+            L1Cache L#61 (size=32KB linesize=128 ways=8)
+              Core L#61 (P#244)
+                PU L#244 (P#244)
+                PU L#245 (P#245)
+                PU L#246 (P#246)
+                PU L#247 (P#247)
+      Socket L#62 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#62 (size=4096KB linesize=128)
+          L2Cache L#62 (size=256KB linesize=128 ways=8)
+            L1Cache L#62 (size=32KB linesize=128 ways=8)
+              Core L#62 (P#248)
+                PU L#248 (P#248)
+                PU L#249 (P#249)
+                PU L#250 (P#250)
+                PU L#251 (P#251)
+      Socket L#63 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#63 (size=4096KB linesize=128)
+          L2Cache L#63 (size=256KB linesize=128 ways=8)
+            L1Cache L#63 (size=32KB linesize=128 ways=8)
+              Core L#63 (P#252)
+                PU L#252 (P#252)
+                PU L#253 (P#253)
+                PU L#254 (P#254)
+                PU L#255 (P#255)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Groups (type #7)
+  depth 2:	8 NUMANodes (type #2)
+   depth 3:	64 Sockets (type #3)
+    depth 4:	64 Caches (type #4)
+     depth 5:	64 Caches (type #4)
+      depth 6:	64 Caches (type #4)
+       depth 7:	64 Cores (type #5)
+        depth 8:	256 PUs (type #6)
+latency matrix between NUMANodes (depth 2) by logical indexes:
+  index     0     1     2     3     4     5     6     7
+      0 1.000 2.000 4.000 4.000 4.000 4.000 4.000 4.000
+      1 2.000 1.000 4.000 4.000 4.000 4.000 4.000 4.000
+      2 4.000 4.000 1.000 2.000 4.000 4.000 4.000 4.000
+      3 4.000 4.000 2.000 1.000 4.000 4.000 4.000 4.000
+      4 4.000 4.000 4.000 4.000 1.000 2.000 4.000 4.000
+      5 4.000 4.000 4.000 4.000 2.000 1.000 4.000 4.000
+      6 4.000 4.000 4.000 4.000 4.000 4.000 1.000 2.000
+      7 4.000 4.000 4.000 4.000 4.000 4.000 2.000 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nocache.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+256ppc-8n8s4t.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.exclude
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.exclude	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.exclude	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+*/sys

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,520 @@
+Machine (P#0 local=514318208KB total=514318208KB Backend=Linux)
+  L3Cache L#0 (size=4096KB linesize=128)
+    L2Cache L#0 (size=256KB linesize=128 ways=8)
+      L1Cache L#0 (size=32KB linesize=128 ways=8)
+        Core L#0 (P#0)
+          PU L#0 (P#0)
+          PU L#1 (P#1)
+          PU L#2 (P#2)
+          PU L#3 (P#3)
+  L3Cache L#1 (size=4096KB linesize=128)
+    L2Cache L#1 (size=256KB linesize=128 ways=8)
+      L1Cache L#1 (size=32KB linesize=128 ways=8)
+        Core L#1 (P#4)
+          PU L#4 (P#4)
+          PU L#5 (P#5)
+          PU L#6 (P#6)
+          PU L#7 (P#7)
+  L3Cache L#2 (size=4096KB linesize=128)
+    L2Cache L#2 (size=256KB linesize=128 ways=8)
+      L1Cache L#2 (size=32KB linesize=128 ways=8)
+        Core L#2 (P#8)
+          PU L#8 (P#8)
+          PU L#9 (P#9)
+          PU L#10 (P#10)
+          PU L#11 (P#11)
+  L3Cache L#3 (size=4096KB linesize=128)
+    L2Cache L#3 (size=256KB linesize=128 ways=8)
+      L1Cache L#3 (size=32KB linesize=128 ways=8)
+        Core L#3 (P#12)
+          PU L#12 (P#12)
+          PU L#13 (P#13)
+          PU L#14 (P#14)
+          PU L#15 (P#15)
+  L3Cache L#4 (size=4096KB linesize=128)
+    L2Cache L#4 (size=256KB linesize=128 ways=8)
+      L1Cache L#4 (size=32KB linesize=128 ways=8)
+        Core L#4 (P#16)
+          PU L#16 (P#16)
+          PU L#17 (P#17)
+          PU L#18 (P#18)
+          PU L#19 (P#19)
+  L3Cache L#5 (size=4096KB linesize=128)
+    L2Cache L#5 (size=256KB linesize=128 ways=8)
+      L1Cache L#5 (size=32KB linesize=128 ways=8)
+        Core L#5 (P#20)
+          PU L#20 (P#20)
+          PU L#21 (P#21)
+          PU L#22 (P#22)
+          PU L#23 (P#23)
+  L3Cache L#6 (size=4096KB linesize=128)
+    L2Cache L#6 (size=256KB linesize=128 ways=8)
+      L1Cache L#6 (size=32KB linesize=128 ways=8)
+        Core L#6 (P#24)
+          PU L#24 (P#24)
+          PU L#25 (P#25)
+          PU L#26 (P#26)
+          PU L#27 (P#27)
+  L3Cache L#7 (size=4096KB linesize=128)
+    L2Cache L#7 (size=256KB linesize=128 ways=8)
+      L1Cache L#7 (size=32KB linesize=128 ways=8)
+        Core L#7 (P#28)
+          PU L#28 (P#28)
+          PU L#29 (P#29)
+          PU L#30 (P#30)
+          PU L#31 (P#31)
+  L3Cache L#8 (size=4096KB linesize=128)
+    L2Cache L#8 (size=256KB linesize=128 ways=8)
+      L1Cache L#8 (size=32KB linesize=128 ways=8)
+        Core L#8 (P#32)
+          PU L#32 (P#32)
+          PU L#33 (P#33)
+          PU L#34 (P#34)
+          PU L#35 (P#35)
+  L3Cache L#9 (size=4096KB linesize=128)
+    L2Cache L#9 (size=256KB linesize=128 ways=8)
+      L1Cache L#9 (size=32KB linesize=128 ways=8)
+        Core L#9 (P#36)
+          PU L#36 (P#36)
+          PU L#37 (P#37)
+          PU L#38 (P#38)
+          PU L#39 (P#39)
+  L3Cache L#10 (size=4096KB linesize=128)
+    L2Cache L#10 (size=256KB linesize=128 ways=8)
+      L1Cache L#10 (size=32KB linesize=128 ways=8)
+        Core L#10 (P#40)
+          PU L#40 (P#40)
+          PU L#41 (P#41)
+          PU L#42 (P#42)
+          PU L#43 (P#43)
+  L3Cache L#11 (size=4096KB linesize=128)
+    L2Cache L#11 (size=256KB linesize=128 ways=8)
+      L1Cache L#11 (size=32KB linesize=128 ways=8)
+        Core L#11 (P#44)
+          PU L#44 (P#44)
+          PU L#45 (P#45)
+          PU L#46 (P#46)
+          PU L#47 (P#47)
+  L3Cache L#12 (size=4096KB linesize=128)
+    L2Cache L#12 (size=256KB linesize=128 ways=8)
+      L1Cache L#12 (size=32KB linesize=128 ways=8)
+        Core L#12 (P#48)
+          PU L#48 (P#48)
+          PU L#49 (P#49)
+          PU L#50 (P#50)
+          PU L#51 (P#51)
+  L3Cache L#13 (size=4096KB linesize=128)
+    L2Cache L#13 (size=256KB linesize=128 ways=8)
+      L1Cache L#13 (size=32KB linesize=128 ways=8)
+        Core L#13 (P#52)
+          PU L#52 (P#52)
+          PU L#53 (P#53)
+          PU L#54 (P#54)
+          PU L#55 (P#55)
+  L3Cache L#14 (size=4096KB linesize=128)
+    L2Cache L#14 (size=256KB linesize=128 ways=8)
+      L1Cache L#14 (size=32KB linesize=128 ways=8)
+        Core L#14 (P#56)
+          PU L#56 (P#56)
+          PU L#57 (P#57)
+          PU L#58 (P#58)
+          PU L#59 (P#59)
+  L3Cache L#15 (size=4096KB linesize=128)
+    L2Cache L#15 (size=256KB linesize=128 ways=8)
+      L1Cache L#15 (size=32KB linesize=128 ways=8)
+        Core L#15 (P#60)
+          PU L#60 (P#60)
+          PU L#61 (P#61)
+          PU L#62 (P#62)
+          PU L#63 (P#63)
+  L3Cache L#16 (size=4096KB linesize=128)
+    L2Cache L#16 (size=256KB linesize=128 ways=8)
+      L1Cache L#16 (size=32KB linesize=128 ways=8)
+        Core L#16 (P#64)
+          PU L#64 (P#64)
+          PU L#65 (P#65)
+          PU L#66 (P#66)
+          PU L#67 (P#67)
+  L3Cache L#17 (size=4096KB linesize=128)
+    L2Cache L#17 (size=256KB linesize=128 ways=8)
+      L1Cache L#17 (size=32KB linesize=128 ways=8)
+        Core L#17 (P#68)
+          PU L#68 (P#68)
+          PU L#69 (P#69)
+          PU L#70 (P#70)
+          PU L#71 (P#71)
+  L3Cache L#18 (size=4096KB linesize=128)
+    L2Cache L#18 (size=256KB linesize=128 ways=8)
+      L1Cache L#18 (size=32KB linesize=128 ways=8)
+        Core L#18 (P#72)
+          PU L#72 (P#72)
+          PU L#73 (P#73)
+          PU L#74 (P#74)
+          PU L#75 (P#75)
+  L3Cache L#19 (size=4096KB linesize=128)
+    L2Cache L#19 (size=256KB linesize=128 ways=8)
+      L1Cache L#19 (size=32KB linesize=128 ways=8)
+        Core L#19 (P#76)
+          PU L#76 (P#76)
+          PU L#77 (P#77)
+          PU L#78 (P#78)
+          PU L#79 (P#79)
+  L3Cache L#20 (size=4096KB linesize=128)
+    L2Cache L#20 (size=256KB linesize=128 ways=8)
+      L1Cache L#20 (size=32KB linesize=128 ways=8)
+        Core L#20 (P#80)
+          PU L#80 (P#80)
+          PU L#81 (P#81)
+          PU L#82 (P#82)
+          PU L#83 (P#83)
+  L3Cache L#21 (size=4096KB linesize=128)
+    L2Cache L#21 (size=256KB linesize=128 ways=8)
+      L1Cache L#21 (size=32KB linesize=128 ways=8)
+        Core L#21 (P#84)
+          PU L#84 (P#84)
+          PU L#85 (P#85)
+          PU L#86 (P#86)
+          PU L#87 (P#87)
+  L3Cache L#22 (size=4096KB linesize=128)
+    L2Cache L#22 (size=256KB linesize=128 ways=8)
+      L1Cache L#22 (size=32KB linesize=128 ways=8)
+        Core L#22 (P#88)
+          PU L#88 (P#88)
+          PU L#89 (P#89)
+          PU L#90 (P#90)
+          PU L#91 (P#91)
+  L3Cache L#23 (size=4096KB linesize=128)
+    L2Cache L#23 (size=256KB linesize=128 ways=8)
+      L1Cache L#23 (size=32KB linesize=128 ways=8)
+        Core L#23 (P#92)
+          PU L#92 (P#92)
+          PU L#93 (P#93)
+          PU L#94 (P#94)
+          PU L#95 (P#95)
+  L3Cache L#24 (size=4096KB linesize=128)
+    L2Cache L#24 (size=256KB linesize=128 ways=8)
+      L1Cache L#24 (size=32KB linesize=128 ways=8)
+        Core L#24 (P#96)
+          PU L#96 (P#96)
+          PU L#97 (P#97)
+          PU L#98 (P#98)
+          PU L#99 (P#99)
+  L3Cache L#25 (size=4096KB linesize=128)
+    L2Cache L#25 (size=256KB linesize=128 ways=8)
+      L1Cache L#25 (size=32KB linesize=128 ways=8)
+        Core L#25 (P#100)
+          PU L#100 (P#100)
+          PU L#101 (P#101)
+          PU L#102 (P#102)
+          PU L#103 (P#103)
+  L3Cache L#26 (size=4096KB linesize=128)
+    L2Cache L#26 (size=256KB linesize=128 ways=8)
+      L1Cache L#26 (size=32KB linesize=128 ways=8)
+        Core L#26 (P#104)
+          PU L#104 (P#104)
+          PU L#105 (P#105)
+          PU L#106 (P#106)
+          PU L#107 (P#107)
+  L3Cache L#27 (size=4096KB linesize=128)
+    L2Cache L#27 (size=256KB linesize=128 ways=8)
+      L1Cache L#27 (size=32KB linesize=128 ways=8)
+        Core L#27 (P#108)
+          PU L#108 (P#108)
+          PU L#109 (P#109)
+          PU L#110 (P#110)
+          PU L#111 (P#111)
+  L3Cache L#28 (size=4096KB linesize=128)
+    L2Cache L#28 (size=256KB linesize=128 ways=8)
+      L1Cache L#28 (size=32KB linesize=128 ways=8)
+        Core L#28 (P#112)
+          PU L#112 (P#112)
+          PU L#113 (P#113)
+          PU L#114 (P#114)
+          PU L#115 (P#115)
+  L3Cache L#29 (size=4096KB linesize=128)
+    L2Cache L#29 (size=256KB linesize=128 ways=8)
+      L1Cache L#29 (size=32KB linesize=128 ways=8)
+        Core L#29 (P#116)
+          PU L#116 (P#116)
+          PU L#117 (P#117)
+          PU L#118 (P#118)
+          PU L#119 (P#119)
+  L3Cache L#30 (size=4096KB linesize=128)
+    L2Cache L#30 (size=256KB linesize=128 ways=8)
+      L1Cache L#30 (size=32KB linesize=128 ways=8)
+        Core L#30 (P#120)
+          PU L#120 (P#120)
+          PU L#121 (P#121)
+          PU L#122 (P#122)
+          PU L#123 (P#123)
+  L3Cache L#31 (size=4096KB linesize=128)
+    L2Cache L#31 (size=256KB linesize=128 ways=8)
+      L1Cache L#31 (size=32KB linesize=128 ways=8)
+        Core L#31 (P#124)
+          PU L#124 (P#124)
+          PU L#125 (P#125)
+          PU L#126 (P#126)
+          PU L#127 (P#127)
+  L3Cache L#32 (size=4096KB linesize=128)
+    L2Cache L#32 (size=256KB linesize=128 ways=8)
+      L1Cache L#32 (size=32KB linesize=128 ways=8)
+        Core L#32 (P#128)
+          PU L#128 (P#128)
+          PU L#129 (P#129)
+          PU L#130 (P#130)
+          PU L#131 (P#131)
+  L3Cache L#33 (size=4096KB linesize=128)
+    L2Cache L#33 (size=256KB linesize=128 ways=8)
+      L1Cache L#33 (size=32KB linesize=128 ways=8)
+        Core L#33 (P#132)
+          PU L#132 (P#132)
+          PU L#133 (P#133)
+          PU L#134 (P#134)
+          PU L#135 (P#135)
+  L3Cache L#34 (size=4096KB linesize=128)
+    L2Cache L#34 (size=256KB linesize=128 ways=8)
+      L1Cache L#34 (size=32KB linesize=128 ways=8)
+        Core L#34 (P#136)
+          PU L#136 (P#136)
+          PU L#137 (P#137)
+          PU L#138 (P#138)
+          PU L#139 (P#139)
+  L3Cache L#35 (size=4096KB linesize=128)
+    L2Cache L#35 (size=256KB linesize=128 ways=8)
+      L1Cache L#35 (size=32KB linesize=128 ways=8)
+        Core L#35 (P#140)
+          PU L#140 (P#140)
+          PU L#141 (P#141)
+          PU L#142 (P#142)
+          PU L#143 (P#143)
+  L3Cache L#36 (size=4096KB linesize=128)
+    L2Cache L#36 (size=256KB linesize=128 ways=8)
+      L1Cache L#36 (size=32KB linesize=128 ways=8)
+        Core L#36 (P#144)
+          PU L#144 (P#144)
+          PU L#145 (P#145)
+          PU L#146 (P#146)
+          PU L#147 (P#147)
+  L3Cache L#37 (size=4096KB linesize=128)
+    L2Cache L#37 (size=256KB linesize=128 ways=8)
+      L1Cache L#37 (size=32KB linesize=128 ways=8)
+        Core L#37 (P#148)
+          PU L#148 (P#148)
+          PU L#149 (P#149)
+          PU L#150 (P#150)
+          PU L#151 (P#151)
+  L3Cache L#38 (size=4096KB linesize=128)
+    L2Cache L#38 (size=256KB linesize=128 ways=8)
+      L1Cache L#38 (size=32KB linesize=128 ways=8)
+        Core L#38 (P#152)
+          PU L#152 (P#152)
+          PU L#153 (P#153)
+          PU L#154 (P#154)
+          PU L#155 (P#155)
+  L3Cache L#39 (size=4096KB linesize=128)
+    L2Cache L#39 (size=256KB linesize=128 ways=8)
+      L1Cache L#39 (size=32KB linesize=128 ways=8)
+        Core L#39 (P#156)
+          PU L#156 (P#156)
+          PU L#157 (P#157)
+          PU L#158 (P#158)
+          PU L#159 (P#159)
+  L3Cache L#40 (size=4096KB linesize=128)
+    L2Cache L#40 (size=256KB linesize=128 ways=8)
+      L1Cache L#40 (size=32KB linesize=128 ways=8)
+        Core L#40 (P#160)
+          PU L#160 (P#160)
+          PU L#161 (P#161)
+          PU L#162 (P#162)
+          PU L#163 (P#163)
+  L3Cache L#41 (size=4096KB linesize=128)
+    L2Cache L#41 (size=256KB linesize=128 ways=8)
+      L1Cache L#41 (size=32KB linesize=128 ways=8)
+        Core L#41 (P#164)
+          PU L#164 (P#164)
+          PU L#165 (P#165)
+          PU L#166 (P#166)
+          PU L#167 (P#167)
+  L3Cache L#42 (size=4096KB linesize=128)
+    L2Cache L#42 (size=256KB linesize=128 ways=8)
+      L1Cache L#42 (size=32KB linesize=128 ways=8)
+        Core L#42 (P#168)
+          PU L#168 (P#168)
+          PU L#169 (P#169)
+          PU L#170 (P#170)
+          PU L#171 (P#171)
+  L3Cache L#43 (size=4096KB linesize=128)
+    L2Cache L#43 (size=256KB linesize=128 ways=8)
+      L1Cache L#43 (size=32KB linesize=128 ways=8)
+        Core L#43 (P#172)
+          PU L#172 (P#172)
+          PU L#173 (P#173)
+          PU L#174 (P#174)
+          PU L#175 (P#175)
+  L3Cache L#44 (size=4096KB linesize=128)
+    L2Cache L#44 (size=256KB linesize=128 ways=8)
+      L1Cache L#44 (size=32KB linesize=128 ways=8)
+        Core L#44 (P#176)
+          PU L#176 (P#176)
+          PU L#177 (P#177)
+          PU L#178 (P#178)
+          PU L#179 (P#179)
+  L3Cache L#45 (size=4096KB linesize=128)
+    L2Cache L#45 (size=256KB linesize=128 ways=8)
+      L1Cache L#45 (size=32KB linesize=128 ways=8)
+        Core L#45 (P#180)
+          PU L#180 (P#180)
+          PU L#181 (P#181)
+          PU L#182 (P#182)
+          PU L#183 (P#183)
+  L3Cache L#46 (size=4096KB linesize=128)
+    L2Cache L#46 (size=256KB linesize=128 ways=8)
+      L1Cache L#46 (size=32KB linesize=128 ways=8)
+        Core L#46 (P#184)
+          PU L#184 (P#184)
+          PU L#185 (P#185)
+          PU L#186 (P#186)
+          PU L#187 (P#187)
+  L3Cache L#47 (size=4096KB linesize=128)
+    L2Cache L#47 (size=256KB linesize=128 ways=8)
+      L1Cache L#47 (size=32KB linesize=128 ways=8)
+        Core L#47 (P#188)
+          PU L#188 (P#188)
+          PU L#189 (P#189)
+          PU L#190 (P#190)
+          PU L#191 (P#191)
+  L3Cache L#48 (size=4096KB linesize=128)
+    L2Cache L#48 (size=256KB linesize=128 ways=8)
+      L1Cache L#48 (size=32KB linesize=128 ways=8)
+        Core L#48 (P#192)
+          PU L#192 (P#192)
+          PU L#193 (P#193)
+          PU L#194 (P#194)
+          PU L#195 (P#195)
+  L3Cache L#49 (size=4096KB linesize=128)
+    L2Cache L#49 (size=256KB linesize=128 ways=8)
+      L1Cache L#49 (size=32KB linesize=128 ways=8)
+        Core L#49 (P#196)
+          PU L#196 (P#196)
+          PU L#197 (P#197)
+          PU L#198 (P#198)
+          PU L#199 (P#199)
+  L3Cache L#50 (size=4096KB linesize=128)
+    L2Cache L#50 (size=256KB linesize=128 ways=8)
+      L1Cache L#50 (size=32KB linesize=128 ways=8)
+        Core L#50 (P#200)
+          PU L#200 (P#200)
+          PU L#201 (P#201)
+          PU L#202 (P#202)
+          PU L#203 (P#203)
+  L3Cache L#51 (size=4096KB linesize=128)
+    L2Cache L#51 (size=256KB linesize=128 ways=8)
+      L1Cache L#51 (size=32KB linesize=128 ways=8)
+        Core L#51 (P#204)
+          PU L#204 (P#204)
+          PU L#205 (P#205)
+          PU L#206 (P#206)
+          PU L#207 (P#207)
+  L3Cache L#52 (size=4096KB linesize=128)
+    L2Cache L#52 (size=256KB linesize=128 ways=8)
+      L1Cache L#52 (size=32KB linesize=128 ways=8)
+        Core L#52 (P#208)
+          PU L#208 (P#208)
+          PU L#209 (P#209)
+          PU L#210 (P#210)
+          PU L#211 (P#211)
+  L3Cache L#53 (size=4096KB linesize=128)
+    L2Cache L#53 (size=256KB linesize=128 ways=8)
+      L1Cache L#53 (size=32KB linesize=128 ways=8)
+        Core L#53 (P#212)
+          PU L#212 (P#212)
+          PU L#213 (P#213)
+          PU L#214 (P#214)
+          PU L#215 (P#215)
+  L3Cache L#54 (size=4096KB linesize=128)
+    L2Cache L#54 (size=256KB linesize=128 ways=8)
+      L1Cache L#54 (size=32KB linesize=128 ways=8)
+        Core L#54 (P#216)
+          PU L#216 (P#216)
+          PU L#217 (P#217)
+          PU L#218 (P#218)
+          PU L#219 (P#219)
+  L3Cache L#55 (size=4096KB linesize=128)
+    L2Cache L#55 (size=256KB linesize=128 ways=8)
+      L1Cache L#55 (size=32KB linesize=128 ways=8)
+        Core L#55 (P#220)
+          PU L#220 (P#220)
+          PU L#221 (P#221)
+          PU L#222 (P#222)
+          PU L#223 (P#223)
+  L3Cache L#56 (size=4096KB linesize=128)
+    L2Cache L#56 (size=256KB linesize=128 ways=8)
+      L1Cache L#56 (size=32KB linesize=128 ways=8)
+        Core L#56 (P#224)
+          PU L#224 (P#224)
+          PU L#225 (P#225)
+          PU L#226 (P#226)
+          PU L#227 (P#227)
+  L3Cache L#57 (size=4096KB linesize=128)
+    L2Cache L#57 (size=256KB linesize=128 ways=8)
+      L1Cache L#57 (size=32KB linesize=128 ways=8)
+        Core L#57 (P#228)
+          PU L#228 (P#228)
+          PU L#229 (P#229)
+          PU L#230 (P#230)
+          PU L#231 (P#231)
+  L3Cache L#58 (size=4096KB linesize=128)
+    L2Cache L#58 (size=256KB linesize=128 ways=8)
+      L1Cache L#58 (size=32KB linesize=128 ways=8)
+        Core L#58 (P#232)
+          PU L#232 (P#232)
+          PU L#233 (P#233)
+          PU L#234 (P#234)
+          PU L#235 (P#235)
+  L3Cache L#59 (size=4096KB linesize=128)
+    L2Cache L#59 (size=256KB linesize=128 ways=8)
+      L1Cache L#59 (size=32KB linesize=128 ways=8)
+        Core L#59 (P#236)
+          PU L#236 (P#236)
+          PU L#237 (P#237)
+          PU L#238 (P#238)
+          PU L#239 (P#239)
+  L3Cache L#60 (size=4096KB linesize=128)
+    L2Cache L#60 (size=256KB linesize=128 ways=8)
+      L1Cache L#60 (size=32KB linesize=128 ways=8)
+        Core L#60 (P#240)
+          PU L#240 (P#240)
+          PU L#241 (P#241)
+          PU L#242 (P#242)
+          PU L#243 (P#243)
+  L3Cache L#61 (size=4096KB linesize=128)
+    L2Cache L#61 (size=256KB linesize=128 ways=8)
+      L1Cache L#61 (size=32KB linesize=128 ways=8)
+        Core L#61 (P#244)
+          PU L#244 (P#244)
+          PU L#245 (P#245)
+          PU L#246 (P#246)
+          PU L#247 (P#247)
+  L3Cache L#62 (size=4096KB linesize=128)
+    L2Cache L#62 (size=256KB linesize=128 ways=8)
+      L1Cache L#62 (size=32KB linesize=128 ways=8)
+        Core L#62 (P#248)
+          PU L#248 (P#248)
+          PU L#249 (P#249)
+          PU L#250 (P#250)
+          PU L#251 (P#251)
+  L3Cache L#63 (size=4096KB linesize=128)
+    L2Cache L#63 (size=256KB linesize=128 ways=8)
+      L1Cache L#63 (size=32KB linesize=128 ways=8)
+        Core L#63 (P#252)
+          PU L#252 (P#252)
+          PU L#253 (P#253)
+          PU L#254 (P#254)
+          PU L#255 (P#255)
+depth 0:	1 Machine (type #1)
+ depth 1:	64 Caches (type #4)
+  depth 2:	64 Caches (type #4)
+   depth 3:	64 Caches (type #4)
+    depth 4:	64 Cores (type #5)
+     depth 5:	256 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t-nosys.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+256ppc-8n8s4t.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,609 @@
+Machine (P#0 total=516423680KB Backend=Linux)
+  Group0 L#0 (total=124780544KB)
+    NUMANode L#0 (P#0 local=58458112KB total=58458112KB)
+      Socket L#0 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#0 (size=4096KB linesize=128)
+          L2Cache L#0 (size=256KB linesize=128 ways=8)
+            L1Cache L#0 (size=32KB linesize=128 ways=8)
+              Core L#0 (P#0)
+                PU L#0 (P#0)
+                PU L#1 (P#1)
+                PU L#2 (P#2)
+                PU L#3 (P#3)
+      Socket L#1 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#1 (size=4096KB linesize=128)
+          L2Cache L#1 (size=256KB linesize=128 ways=8)
+            L1Cache L#1 (size=32KB linesize=128 ways=8)
+              Core L#1 (P#4)
+                PU L#4 (P#4)
+                PU L#5 (P#5)
+                PU L#6 (P#6)
+                PU L#7 (P#7)
+      Socket L#2 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#2 (size=4096KB linesize=128)
+          L2Cache L#2 (size=256KB linesize=128 ways=8)
+            L1Cache L#2 (size=32KB linesize=128 ways=8)
+              Core L#2 (P#8)
+                PU L#8 (P#8)
+                PU L#9 (P#9)
+                PU L#10 (P#10)
+                PU L#11 (P#11)
+      Socket L#3 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#3 (size=4096KB linesize=128)
+          L2Cache L#3 (size=256KB linesize=128 ways=8)
+            L1Cache L#3 (size=32KB linesize=128 ways=8)
+              Core L#3 (P#12)
+                PU L#12 (P#12)
+                PU L#13 (P#13)
+                PU L#14 (P#14)
+                PU L#15 (P#15)
+      Socket L#4 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#4 (size=4096KB linesize=128)
+          L2Cache L#4 (size=256KB linesize=128 ways=8)
+            L1Cache L#4 (size=32KB linesize=128 ways=8)
+              Core L#4 (P#16)
+                PU L#16 (P#16)
+                PU L#17 (P#17)
+                PU L#18 (P#18)
+                PU L#19 (P#19)
+      Socket L#5 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#5 (size=4096KB linesize=128)
+          L2Cache L#5 (size=256KB linesize=128 ways=8)
+            L1Cache L#5 (size=32KB linesize=128 ways=8)
+              Core L#5 (P#20)
+                PU L#20 (P#20)
+                PU L#21 (P#21)
+                PU L#22 (P#22)
+                PU L#23 (P#23)
+      Socket L#6 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#6 (size=4096KB linesize=128)
+          L2Cache L#6 (size=256KB linesize=128 ways=8)
+            L1Cache L#6 (size=32KB linesize=128 ways=8)
+              Core L#6 (P#24)
+                PU L#24 (P#24)
+                PU L#25 (P#25)
+                PU L#26 (P#26)
+                PU L#27 (P#27)
+      Socket L#7 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#7 (size=4096KB linesize=128)
+          L2Cache L#7 (size=256KB linesize=128 ways=8)
+            L1Cache L#7 (size=32KB linesize=128 ways=8)
+              Core L#7 (P#28)
+                PU L#28 (P#28)
+                PU L#29 (P#29)
+                PU L#30 (P#30)
+                PU L#31 (P#31)
+    NUMANode L#1 (P#1 local=66322432KB total=66322432KB)
+      Socket L#8 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#8 (size=4096KB linesize=128)
+          L2Cache L#8 (size=256KB linesize=128 ways=8)
+            L1Cache L#8 (size=32KB linesize=128 ways=8)
+              Core L#8 (P#32)
+                PU L#32 (P#32)
+                PU L#33 (P#33)
+                PU L#34 (P#34)
+                PU L#35 (P#35)
+      Socket L#9 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#9 (size=4096KB linesize=128)
+          L2Cache L#9 (size=256KB linesize=128 ways=8)
+            L1Cache L#9 (size=32KB linesize=128 ways=8)
+              Core L#9 (P#36)
+                PU L#36 (P#36)
+                PU L#37 (P#37)
+                PU L#38 (P#38)
+                PU L#39 (P#39)
+      Socket L#10 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#10 (size=4096KB linesize=128)
+          L2Cache L#10 (size=256KB linesize=128 ways=8)
+            L1Cache L#10 (size=32KB linesize=128 ways=8)
+              Core L#10 (P#40)
+                PU L#40 (P#40)
+                PU L#41 (P#41)
+                PU L#42 (P#42)
+                PU L#43 (P#43)
+      Socket L#11 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#11 (size=4096KB linesize=128)
+          L2Cache L#11 (size=256KB linesize=128 ways=8)
+            L1Cache L#11 (size=32KB linesize=128 ways=8)
+              Core L#11 (P#44)
+                PU L#44 (P#44)
+                PU L#45 (P#45)
+                PU L#46 (P#46)
+                PU L#47 (P#47)
+      Socket L#12 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#12 (size=4096KB linesize=128)
+          L2Cache L#12 (size=256KB linesize=128 ways=8)
+            L1Cache L#12 (size=32KB linesize=128 ways=8)
+              Core L#12 (P#48)
+                PU L#48 (P#48)
+                PU L#49 (P#49)
+                PU L#50 (P#50)
+                PU L#51 (P#51)
+      Socket L#13 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#13 (size=4096KB linesize=128)
+          L2Cache L#13 (size=256KB linesize=128 ways=8)
+            L1Cache L#13 (size=32KB linesize=128 ways=8)
+              Core L#13 (P#52)
+                PU L#52 (P#52)
+                PU L#53 (P#53)
+                PU L#54 (P#54)
+                PU L#55 (P#55)
+      Socket L#14 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#14 (size=4096KB linesize=128)
+          L2Cache L#14 (size=256KB linesize=128 ways=8)
+            L1Cache L#14 (size=32KB linesize=128 ways=8)
+              Core L#14 (P#56)
+                PU L#56 (P#56)
+                PU L#57 (P#57)
+                PU L#58 (P#58)
+                PU L#59 (P#59)
+      Socket L#15 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#15 (size=4096KB linesize=128)
+          L2Cache L#15 (size=256KB linesize=128 ways=8)
+            L1Cache L#15 (size=32KB linesize=128 ways=8)
+              Core L#15 (P#60)
+                PU L#60 (P#60)
+                PU L#61 (P#61)
+                PU L#62 (P#62)
+                PU L#63 (P#63)
+  Group0 L#1 (total=133955584KB)
+    NUMANode L#2 (P#4 local=66846720KB total=66846720KB)
+      Socket L#16 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#16 (size=4096KB linesize=128)
+          L2Cache L#16 (size=256KB linesize=128 ways=8)
+            L1Cache L#16 (size=32KB linesize=128 ways=8)
+              Core L#16 (P#64)
+                PU L#64 (P#64)
+                PU L#65 (P#65)
+                PU L#66 (P#66)
+                PU L#67 (P#67)
+      Socket L#17 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#17 (size=4096KB linesize=128)
+          L2Cache L#17 (size=256KB linesize=128 ways=8)
+            L1Cache L#17 (size=32KB linesize=128 ways=8)
+              Core L#17 (P#68)
+                PU L#68 (P#68)
+                PU L#69 (P#69)
+                PU L#70 (P#70)
+                PU L#71 (P#71)
+      Socket L#18 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#18 (size=4096KB linesize=128)
+          L2Cache L#18 (size=256KB linesize=128 ways=8)
+            L1Cache L#18 (size=32KB linesize=128 ways=8)
+              Core L#18 (P#72)
+                PU L#72 (P#72)
+                PU L#73 (P#73)
+                PU L#74 (P#74)
+                PU L#75 (P#75)
+      Socket L#19 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#19 (size=4096KB linesize=128)
+          L2Cache L#19 (size=256KB linesize=128 ways=8)
+            L1Cache L#19 (size=32KB linesize=128 ways=8)
+              Core L#19 (P#76)
+                PU L#76 (P#76)
+                PU L#77 (P#77)
+                PU L#78 (P#78)
+                PU L#79 (P#79)
+      Socket L#20 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#20 (size=4096KB linesize=128)
+          L2Cache L#20 (size=256KB linesize=128 ways=8)
+            L1Cache L#20 (size=32KB linesize=128 ways=8)
+              Core L#20 (P#80)
+                PU L#80 (P#80)
+                PU L#81 (P#81)
+                PU L#82 (P#82)
+                PU L#83 (P#83)
+      Socket L#21 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#21 (size=4096KB linesize=128)
+          L2Cache L#21 (size=256KB linesize=128 ways=8)
+            L1Cache L#21 (size=32KB linesize=128 ways=8)
+              Core L#21 (P#84)
+                PU L#84 (P#84)
+                PU L#85 (P#85)
+                PU L#86 (P#86)
+                PU L#87 (P#87)
+      Socket L#22 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#22 (size=4096KB linesize=128)
+          L2Cache L#22 (size=256KB linesize=128 ways=8)
+            L1Cache L#22 (size=32KB linesize=128 ways=8)
+              Core L#22 (P#88)
+                PU L#88 (P#88)
+                PU L#89 (P#89)
+                PU L#90 (P#90)
+                PU L#91 (P#91)
+      Socket L#23 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#23 (size=4096KB linesize=128)
+          L2Cache L#23 (size=256KB linesize=128 ways=8)
+            L1Cache L#23 (size=32KB linesize=128 ways=8)
+              Core L#23 (P#92)
+                PU L#92 (P#92)
+                PU L#93 (P#93)
+                PU L#94 (P#94)
+                PU L#95 (P#95)
+    NUMANode L#3 (P#5 local=67108864KB total=67108864KB)
+      Socket L#24 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#24 (size=4096KB linesize=128)
+          L2Cache L#24 (size=256KB linesize=128 ways=8)
+            L1Cache L#24 (size=32KB linesize=128 ways=8)
+              Core L#24 (P#96)
+                PU L#96 (P#96)
+                PU L#97 (P#97)
+                PU L#98 (P#98)
+                PU L#99 (P#99)
+      Socket L#25 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#25 (size=4096KB linesize=128)
+          L2Cache L#25 (size=256KB linesize=128 ways=8)
+            L1Cache L#25 (size=32KB linesize=128 ways=8)
+              Core L#25 (P#100)
+                PU L#100 (P#100)
+                PU L#101 (P#101)
+                PU L#102 (P#102)
+                PU L#103 (P#103)
+      Socket L#26 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#26 (size=4096KB linesize=128)
+          L2Cache L#26 (size=256KB linesize=128 ways=8)
+            L1Cache L#26 (size=32KB linesize=128 ways=8)
+              Core L#26 (P#104)
+                PU L#104 (P#104)
+                PU L#105 (P#105)
+                PU L#106 (P#106)
+                PU L#107 (P#107)
+      Socket L#27 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#27 (size=4096KB linesize=128)
+          L2Cache L#27 (size=256KB linesize=128 ways=8)
+            L1Cache L#27 (size=32KB linesize=128 ways=8)
+              Core L#27 (P#108)
+                PU L#108 (P#108)
+                PU L#109 (P#109)
+                PU L#110 (P#110)
+                PU L#111 (P#111)
+      Socket L#28 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#28 (size=4096KB linesize=128)
+          L2Cache L#28 (size=256KB linesize=128 ways=8)
+            L1Cache L#28 (size=32KB linesize=128 ways=8)
+              Core L#28 (P#112)
+                PU L#112 (P#112)
+                PU L#113 (P#113)
+                PU L#114 (P#114)
+                PU L#115 (P#115)
+      Socket L#29 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#29 (size=4096KB linesize=128)
+          L2Cache L#29 (size=256KB linesize=128 ways=8)
+            L1Cache L#29 (size=32KB linesize=128 ways=8)
+              Core L#29 (P#116)
+                PU L#116 (P#116)
+                PU L#117 (P#117)
+                PU L#118 (P#118)
+                PU L#119 (P#119)
+      Socket L#30 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#30 (size=4096KB linesize=128)
+          L2Cache L#30 (size=256KB linesize=128 ways=8)
+            L1Cache L#30 (size=32KB linesize=128 ways=8)
+              Core L#30 (P#120)
+                PU L#120 (P#120)
+                PU L#121 (P#121)
+                PU L#122 (P#122)
+                PU L#123 (P#123)
+      Socket L#31 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#31 (size=4096KB linesize=128)
+          L2Cache L#31 (size=256KB linesize=128 ways=8)
+            L1Cache L#31 (size=32KB linesize=128 ways=8)
+              Core L#31 (P#124)
+                PU L#124 (P#124)
+                PU L#125 (P#125)
+                PU L#126 (P#126)
+                PU L#127 (P#127)
+  Group0 L#2 (total=133955584KB)
+    NUMANode L#4 (P#8 local=66846720KB total=66846720KB)
+      Socket L#32 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#32 (size=4096KB linesize=128)
+          L2Cache L#32 (size=256KB linesize=128 ways=8)
+            L1Cache L#32 (size=32KB linesize=128 ways=8)
+              Core L#32 (P#128)
+                PU L#128 (P#128)
+                PU L#129 (P#129)
+                PU L#130 (P#130)
+                PU L#131 (P#131)
+      Socket L#33 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#33 (size=4096KB linesize=128)
+          L2Cache L#33 (size=256KB linesize=128 ways=8)
+            L1Cache L#33 (size=32KB linesize=128 ways=8)
+              Core L#33 (P#132)
+                PU L#132 (P#132)
+                PU L#133 (P#133)
+                PU L#134 (P#134)
+                PU L#135 (P#135)
+      Socket L#34 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#34 (size=4096KB linesize=128)
+          L2Cache L#34 (size=256KB linesize=128 ways=8)
+            L1Cache L#34 (size=32KB linesize=128 ways=8)
+              Core L#34 (P#136)
+                PU L#136 (P#136)
+                PU L#137 (P#137)
+                PU L#138 (P#138)
+                PU L#139 (P#139)
+      Socket L#35 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#35 (size=4096KB linesize=128)
+          L2Cache L#35 (size=256KB linesize=128 ways=8)
+            L1Cache L#35 (size=32KB linesize=128 ways=8)
+              Core L#35 (P#140)
+                PU L#140 (P#140)
+                PU L#141 (P#141)
+                PU L#142 (P#142)
+                PU L#143 (P#143)
+      Socket L#36 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#36 (size=4096KB linesize=128)
+          L2Cache L#36 (size=256KB linesize=128 ways=8)
+            L1Cache L#36 (size=32KB linesize=128 ways=8)
+              Core L#36 (P#144)
+                PU L#144 (P#144)
+                PU L#145 (P#145)
+                PU L#146 (P#146)
+                PU L#147 (P#147)
+      Socket L#37 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#37 (size=4096KB linesize=128)
+          L2Cache L#37 (size=256KB linesize=128 ways=8)
+            L1Cache L#37 (size=32KB linesize=128 ways=8)
+              Core L#37 (P#148)
+                PU L#148 (P#148)
+                PU L#149 (P#149)
+                PU L#150 (P#150)
+                PU L#151 (P#151)
+      Socket L#38 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#38 (size=4096KB linesize=128)
+          L2Cache L#38 (size=256KB linesize=128 ways=8)
+            L1Cache L#38 (size=32KB linesize=128 ways=8)
+              Core L#38 (P#152)
+                PU L#152 (P#152)
+                PU L#153 (P#153)
+                PU L#154 (P#154)
+                PU L#155 (P#155)
+      Socket L#39 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#39 (size=4096KB linesize=128)
+          L2Cache L#39 (size=256KB linesize=128 ways=8)
+            L1Cache L#39 (size=32KB linesize=128 ways=8)
+              Core L#39 (P#156)
+                PU L#156 (P#156)
+                PU L#157 (P#157)
+                PU L#158 (P#158)
+                PU L#159 (P#159)
+    NUMANode L#5 (P#9 local=67108864KB total=67108864KB)
+      Socket L#40 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#40 (size=4096KB linesize=128)
+          L2Cache L#40 (size=256KB linesize=128 ways=8)
+            L1Cache L#40 (size=32KB linesize=128 ways=8)
+              Core L#40 (P#160)
+                PU L#160 (P#160)
+                PU L#161 (P#161)
+                PU L#162 (P#162)
+                PU L#163 (P#163)
+      Socket L#41 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#41 (size=4096KB linesize=128)
+          L2Cache L#41 (size=256KB linesize=128 ways=8)
+            L1Cache L#41 (size=32KB linesize=128 ways=8)
+              Core L#41 (P#164)
+                PU L#164 (P#164)
+                PU L#165 (P#165)
+                PU L#166 (P#166)
+                PU L#167 (P#167)
+      Socket L#42 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#42 (size=4096KB linesize=128)
+          L2Cache L#42 (size=256KB linesize=128 ways=8)
+            L1Cache L#42 (size=32KB linesize=128 ways=8)
+              Core L#42 (P#168)
+                PU L#168 (P#168)
+                PU L#169 (P#169)
+                PU L#170 (P#170)
+                PU L#171 (P#171)
+      Socket L#43 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#43 (size=4096KB linesize=128)
+          L2Cache L#43 (size=256KB linesize=128 ways=8)
+            L1Cache L#43 (size=32KB linesize=128 ways=8)
+              Core L#43 (P#172)
+                PU L#172 (P#172)
+                PU L#173 (P#173)
+                PU L#174 (P#174)
+                PU L#175 (P#175)
+      Socket L#44 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#44 (size=4096KB linesize=128)
+          L2Cache L#44 (size=256KB linesize=128 ways=8)
+            L1Cache L#44 (size=32KB linesize=128 ways=8)
+              Core L#44 (P#176)
+                PU L#176 (P#176)
+                PU L#177 (P#177)
+                PU L#178 (P#178)
+                PU L#179 (P#179)
+      Socket L#45 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#45 (size=4096KB linesize=128)
+          L2Cache L#45 (size=256KB linesize=128 ways=8)
+            L1Cache L#45 (size=32KB linesize=128 ways=8)
+              Core L#45 (P#180)
+                PU L#180 (P#180)
+                PU L#181 (P#181)
+                PU L#182 (P#182)
+                PU L#183 (P#183)
+      Socket L#46 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#46 (size=4096KB linesize=128)
+          L2Cache L#46 (size=256KB linesize=128 ways=8)
+            L1Cache L#46 (size=32KB linesize=128 ways=8)
+              Core L#46 (P#184)
+                PU L#184 (P#184)
+                PU L#185 (P#185)
+                PU L#186 (P#186)
+                PU L#187 (P#187)
+      Socket L#47 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#47 (size=4096KB linesize=128)
+          L2Cache L#47 (size=256KB linesize=128 ways=8)
+            L1Cache L#47 (size=32KB linesize=128 ways=8)
+              Core L#47 (P#188)
+                PU L#188 (P#188)
+                PU L#189 (P#189)
+                PU L#190 (P#190)
+                PU L#191 (P#191)
+  Group0 L#3 (total=123731968KB)
+    NUMANode L#6 (P#12 local=66846720KB total=66846720KB)
+      Socket L#48 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#48 (size=4096KB linesize=128)
+          L2Cache L#48 (size=256KB linesize=128 ways=8)
+            L1Cache L#48 (size=32KB linesize=128 ways=8)
+              Core L#48 (P#192)
+                PU L#192 (P#192)
+                PU L#193 (P#193)
+                PU L#194 (P#194)
+                PU L#195 (P#195)
+      Socket L#49 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#49 (size=4096KB linesize=128)
+          L2Cache L#49 (size=256KB linesize=128 ways=8)
+            L1Cache L#49 (size=32KB linesize=128 ways=8)
+              Core L#49 (P#196)
+                PU L#196 (P#196)
+                PU L#197 (P#197)
+                PU L#198 (P#198)
+                PU L#199 (P#199)
+      Socket L#50 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#50 (size=4096KB linesize=128)
+          L2Cache L#50 (size=256KB linesize=128 ways=8)
+            L1Cache L#50 (size=32KB linesize=128 ways=8)
+              Core L#50 (P#200)
+                PU L#200 (P#200)
+                PU L#201 (P#201)
+                PU L#202 (P#202)
+                PU L#203 (P#203)
+      Socket L#51 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#51 (size=4096KB linesize=128)
+          L2Cache L#51 (size=256KB linesize=128 ways=8)
+            L1Cache L#51 (size=32KB linesize=128 ways=8)
+              Core L#51 (P#204)
+                PU L#204 (P#204)
+                PU L#205 (P#205)
+                PU L#206 (P#206)
+                PU L#207 (P#207)
+      Socket L#52 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#52 (size=4096KB linesize=128)
+          L2Cache L#52 (size=256KB linesize=128 ways=8)
+            L1Cache L#52 (size=32KB linesize=128 ways=8)
+              Core L#52 (P#208)
+                PU L#208 (P#208)
+                PU L#209 (P#209)
+                PU L#210 (P#210)
+                PU L#211 (P#211)
+      Socket L#53 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#53 (size=4096KB linesize=128)
+          L2Cache L#53 (size=256KB linesize=128 ways=8)
+            L1Cache L#53 (size=32KB linesize=128 ways=8)
+              Core L#53 (P#212)
+                PU L#212 (P#212)
+                PU L#213 (P#213)
+                PU L#214 (P#214)
+                PU L#215 (P#215)
+      Socket L#54 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#54 (size=4096KB linesize=128)
+          L2Cache L#54 (size=256KB linesize=128 ways=8)
+            L1Cache L#54 (size=32KB linesize=128 ways=8)
+              Core L#54 (P#216)
+                PU L#216 (P#216)
+                PU L#217 (P#217)
+                PU L#218 (P#218)
+                PU L#219 (P#219)
+      Socket L#55 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#55 (size=4096KB linesize=128)
+          L2Cache L#55 (size=256KB linesize=128 ways=8)
+            L1Cache L#55 (size=32KB linesize=128 ways=8)
+              Core L#55 (P#220)
+                PU L#220 (P#220)
+                PU L#221 (P#221)
+                PU L#222 (P#222)
+                PU L#223 (P#223)
+    NUMANode L#7 (P#13 local=56885248KB total=56885248KB)
+      Socket L#56 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#56 (size=4096KB linesize=128)
+          L2Cache L#56 (size=256KB linesize=128 ways=8)
+            L1Cache L#56 (size=32KB linesize=128 ways=8)
+              Core L#56 (P#224)
+                PU L#224 (P#224)
+                PU L#225 (P#225)
+                PU L#226 (P#226)
+                PU L#227 (P#227)
+      Socket L#57 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#57 (size=4096KB linesize=128)
+          L2Cache L#57 (size=256KB linesize=128 ways=8)
+            L1Cache L#57 (size=32KB linesize=128 ways=8)
+              Core L#57 (P#228)
+                PU L#228 (P#228)
+                PU L#229 (P#229)
+                PU L#230 (P#230)
+                PU L#231 (P#231)
+      Socket L#58 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#58 (size=4096KB linesize=128)
+          L2Cache L#58 (size=256KB linesize=128 ways=8)
+            L1Cache L#58 (size=32KB linesize=128 ways=8)
+              Core L#58 (P#232)
+                PU L#232 (P#232)
+                PU L#233 (P#233)
+                PU L#234 (P#234)
+                PU L#235 (P#235)
+      Socket L#59 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#59 (size=4096KB linesize=128)
+          L2Cache L#59 (size=256KB linesize=128 ways=8)
+            L1Cache L#59 (size=32KB linesize=128 ways=8)
+              Core L#59 (P#236)
+                PU L#236 (P#236)
+                PU L#237 (P#237)
+                PU L#238 (P#238)
+                PU L#239 (P#239)
+      Socket L#60 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#60 (size=4096KB linesize=128)
+          L2Cache L#60 (size=256KB linesize=128 ways=8)
+            L1Cache L#60 (size=32KB linesize=128 ways=8)
+              Core L#60 (P#240)
+                PU L#240 (P#240)
+                PU L#241 (P#241)
+                PU L#242 (P#242)
+                PU L#243 (P#243)
+      Socket L#61 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#61 (size=4096KB linesize=128)
+          L2Cache L#61 (size=256KB linesize=128 ways=8)
+            L1Cache L#61 (size=32KB linesize=128 ways=8)
+              Core L#61 (P#244)
+                PU L#244 (P#244)
+                PU L#245 (P#245)
+                PU L#246 (P#246)
+                PU L#247 (P#247)
+      Socket L#62 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#62 (size=4096KB linesize=128)
+          L2Cache L#62 (size=256KB linesize=128 ways=8)
+            L1Cache L#62 (size=32KB linesize=128 ways=8)
+              Core L#62 (P#248)
+                PU L#248 (P#248)
+                PU L#249 (P#249)
+                PU L#250 (P#250)
+                PU L#251 (P#251)
+      Socket L#63 (CPUModel="POWER7 (architected), altivec supported")
+        L3Cache L#63 (size=4096KB linesize=128)
+          L2Cache L#63 (size=256KB linesize=128 ways=8)
+            L1Cache L#63 (size=32KB linesize=128 ways=8)
+              Core L#63 (P#252)
+                PU L#252 (P#252)
+                PU L#253 (P#253)
+                PU L#254 (P#254)
+                PU L#255 (P#255)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Groups (type #7)
+  depth 2:	8 NUMANodes (type #2)
+   depth 3:	64 Sockets (type #3)
+    depth 4:	64 Caches (type #4)
+     depth 5:	64 Caches (type #4)
+      depth 6:	64 Caches (type #4)
+       depth 7:	64 Cores (type #5)
+        depth 8:	256 PUs (type #6)
+latency matrix between NUMANodes (depth 2) by logical indexes:
+  index     0     1     2     3     4     5     6     7
+      0 1.000 2.000 4.000 4.000 4.000 4.000 4.000 4.000
+      1 2.000 1.000 4.000 4.000 4.000 4.000 4.000 4.000
+      2 4.000 4.000 1.000 2.000 4.000 4.000 4.000 4.000
+      3 4.000 4.000 2.000 1.000 4.000 4.000 4.000 4.000
+      4 4.000 4.000 4.000 4.000 1.000 2.000 4.000 4.000
+      5 4.000 4.000 4.000 4.000 2.000 1.000 4.000 4.000
+      6 4.000 4.000 4.000 4.000 4.000 4.000 1.000 2.000
+      7 4.000 4.000 4.000 4.000 4.000 4.000 2.000 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/256ppc-8n8s4t.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,469 @@
+BZh91AY&SYùA™Aæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿï×ÿÿ×ÿÿÿÿ÷ÿÿà£^z>À ˜GÀ'x   àê	Ñ>âÁj
+ø;à       @  íà  ú ;½•>gË}o‚€ ¶2&U8 "\ìÄ@	€  ˆ ˆ‰° ˜M€ ½!  	'º.ÆÛE¶°° ’‹é§­ìh^½ÛÛÛӝ€ £°d]†Ø±£cä©”!*DI©J  ÐT>[ì!õ¸  ìnywlÛ3ØÝ€Û:Æœ =ö  àÑB‚‚’  –%IP* 
+ŠA@¢ ¦úÒ))EÄ  ±èsâD³aÍž  9Cß0`È     `el`©²Mžý5*TÚG¨4ÆÊšyMè h @¨Ñ ÚOQ“Ô dÓ 4Ð4
+ hÉê=@ hAÿú¥S@úª@ ÔðI&”ò•SÞªf)“ýTÿÕIÍ&ÓLL#MÔõDÄÀ Ó	“hÐ40@ÀLF@@hdi¦0†ŒL† 42&ýJ©O)ê56“ÒÞ¦¦¦šzš= 44Âiè&SÄ4žCS¦šA Úš™4Ðhhhi¦Sjb4ÓõC@Ð
+
+
+
+
+
+ @@	=RT„ÒšOE§¨Éêi   €       h              ¥( ¡24j›bi˜z'¨Ñ£jmOÔ˜Ô=@É hm'M© hÐhSFÔå6¦ÔÓ&É ê hÓCi©êä‚$!†ž”ýF¦‘êzG©ùSM¨ôž¦›&š˜žjƒôÔô‘µÔÓÒyCõOSÔ~’4å  õ =@@Ò‡¨ 
+OSFG”Ðõ‡©ê õ0W¸ùñX+j+z\Ⲭ
+î
+ýcQ°WÖÁ&‹C}U›iZZm¥•­¿úíØ­®°Ê–ý9-
+
+[’	{²YIaƒb‹h–*X{ÂX{ꚬSµ¶+2)úekŠF at I
+*A€ºPpDóŠJe#)JS)šJ16ØÆ))še33)4”˜ÅJØ€¦µFÆ,cF£X¯¢im–ÒÚYk–1¤¦R2”¥2™¤£Ò£ÉLÓ)™™I¤¤Å* iٍÈEôÛ]ÂÚÜÑb“2Ee­
+~ómmÕUåIi–šVYl©Yil´ÚVZ[-+,¶Y´¥¦ZKKo4\®sræÝ7,n—M’åÓdºî©]%¥.ºæjS®Ü›(IJuušæÝ¥rÝ›šæÅR×,\¹rérìº].Ë¥ÒìéÓ§]$DÝQî6­û×·ð[kësZî#&™dÙ*fɲTš,ZíRkäëåîßë¡"]PË¡¨‰ƒÊXã%(\tXa²RÓ
+Õ-­¯ÅÕJÃV)XÕÃ5{ÆíÅ$=“ÄQEQEQEQE%QEQEQEQEQEQEQEQAEQE                           333upUI2+UX+	Y%âaòñT#ê2&Úü_áU·jÛðêÛß?Í@             ïÅ~aø¯ÌøßŸáþ/ñßsó/Ãý|ßwíÿ€ñ¼ŽÔp\'¼o|V»_Åñ›;ä9K”Þ¹§æ·Ý÷Q¿ùÿAÍ󞇅à´<oŒ½øÖšãÂsy4ƤäM‰³8ƒy4Ç}<ÑÌžxç
+Üݍ!ºœñϝ	ÁÒ)Ó9µ:Ãߝyžv'djžvghv§lvçp~U;“ùØî‰±xlc‡õ€                    á+¬cºÖÝÝÝÝ€          H%
+/꾿õ¿2\×ë{–üïæüõóu}ÖW½Âç›ñîcçύøÍíâ-üµ©59±KmœøßÆoohϾµ&¤N~G}ƒÅüföÄZ3Y¥kšF~FÛg8¾<^Ö‹Gµ&¹ý%y¾Á›ä½³ƒä-Iªü%—¼ßd³|—¶bÐ|­©5^úËâ÷Ù,ß%혴'jMUd÷³°x¿ŒÞÞ"ÑŸ—µ&§ÑY~O}’Íò^Ù‹Aó6¤Õ}%—Êo²Y¾KÛ1h>rÔš¯çY|Vû%›ä½³ƒÛZ“Uõ\ï°Nþ3{x‹FsjMcØ®}‹l/ã7·ˆ´g{Rkulþ{}³œß5Þ|E£>òÔšŸUcã÷Ø3|—¶bÐ{¤ÕIíí°x¿ŒÞÞ"ÑŸÖZ“SÖ²ù}öK7É{f-ë­Iª‰>c}ƒÅüföÄZ3óö¤Ôø{/Ço²Y¾KÛ1çy^ãzM]%{›l–oོE£>öÔšžÒËæ·Ù,ß%혴²µ&©Ù|Þû%›ä½³ƒÞÚ“Uîl¾K}’Íò^Ù‹Aó¤Õ{6_;¾Éfù/lÅ ù«Rj½›/Ño²Y¾KÛ1h?mjMW³eö#Æþ3{x‹F~.ÔšŸì±Æû‹ï›ÛÄZ3;Esñ1›FÙÎ'"oEjMr­Ÿ¸ï°fù/lÅ ú;Rj½›/}¾Éfù/lÅ ö¶¤ÕIöËl/ã7·ˆ´gø–¤Ôúõ—Íï²Y¾KÛ1h?“jMWØ,¿/¾Éfù/lÅ ÷ö¤Õ{‹/œßd³|—¶bÐ|Rj½Å—Îï²Y¾KÛ1h?ŸjMW¸²üæû%›ä½³ƒ×µ&ª²}Êvñ›ÛÄZ3ýKRj}nËô{ì–o’öÌ~Ÿy_ÙÞ“WÕŸËo³eò¯lÅ û½©5^Å•÷Ø<_ÆolÅ£ŸojMI¦~Û‹øÍíâ-þí©5>2Ëç·Ù,ß%혴àµ&«Ù²ùýöK7É{f-ÔZ“UðV_3¾Éfù/lÅ õ­Iª“ãm°x¿ŒÞÞ"ÑžíI©ìÙ|öû%›ä½³ƒêmIª‰?g¾Áâþ3{b-ÿU©5>µeî÷Ù,ß%혷¹ñô¦8ÿֽNJMuî­ŸÛï¶‚ùêöÌZúZ“UM¾Éfù/lÅ úí©5U“ã§`ñ½¼E£?øµ&§º²úöK7É{f-þ­Iªû¥—î÷Ù,ß%혴¸µ&«ìV_«ßd³|—¶bŸXæ-JÒ±u{¢Mʯ»¤äjô)45~'/Wà’jj÷Tœ½]œ½_ƒI³«ï	7ʽ:M^‘&ίN“q«ð	6UugWW‘'-W‘&ʯ
 "M•^Dœ­^D›¾')Wœ“’«Ñ$ë*ôi9
+½N>¯F“v«Ñ¤æ*êÎ:¯"O)W‘&¯"M…^D›j¼‰6yqµvq•z4œ]^è“_W‘&¾¯"Mµ^Dšê¾&m^‘'“««8ª¼äšÚ¼äœM^rN&¯9'Wœ“‡«ÎIæ*ôé8z»5•zTšÊ½*M]_{I««Ò¤ÕUéRy*½*JÑpÕ"¯“¥'ñ¸eþ˜Ÿîa—úr}¾§'Ûa—ø$ù¸eý¡?…Ãúðv‚?ÒÁéû|þ?í ôþ²ÿÚƒü\ÿŸ'Ýá—òÉðá—òÉðá—òÉðá—òÉðá—òÉû\2þÔŸžÿwóÁêüðGüX?žÿxóÁñ@ù«óÁêÁýžÿVåk÷°¿&#ýœÊÿ@?”þ€(#ý þPGúü ôùAèò‚?ÐåŸõ!~X1þ€vÿ@?”þ€(#ý üAèò‚?Ðå·ƒùà÷€<þîç‚?݁üðGû¨?žÿtóÁéðá—ï“áÃ/åáÃ/åáÃ/åáÃ/åáÃ/í	ë†_Ù“áÃ/øB|Œ2þ×ï~ÏóØT“üóZÏ¿ÑRL˲IlKm‚IÉ$“$Km‚Im°I-¶	%¶Á$É$’Û`’[lKm‚Im°I-¿¨&FÁ$¶Ø$–Û’Û`’rI$¶Ø$–Û’Û`’[lKm‚I’H	&I $–Û“$KoÿD“#`’[lNI $–ýè=ïz{ÞƒÞ÷ ÷½è=ïz	m°I2I$¶Ø$™$€’[ªdlKm‚Im°I<É$“$Km‚I’H	&I $–Û“<õ怍û"äTTQh¢(±–åŠ(¯öÖå^»jýËVߨü¥ô$¯ÊнáRj> ­¢¹{ܰ¿Bûkj ^Ö,ýb䟨譁¾Ç~ nƾ`ï*«æWÍ{r€ù€U-~±uäÕÝ‚£¨»@_ / ¾¥ã
+ãÛRY»@ú-4¨ºÂ¾‹]j'£¦‰IG£¦„½4ªŽp®*—Ò
+ì
+Ø¢sîÑDôtÒŠôtÐ<ŠYÜ×Z¤n©qŠê
+ö{vÀ@yîÝ¢Š\ò®À¿•vŠ7ò®À_¦‚+òÀZú¼¯´­‰Wv"·öwwöwn1XÄÕIQ[ÓS|5øûãï¾UV1™¼Nø+ÊÔ5¨¾ý½²çÁޏ­“®¼ºÊëç‹Êº¯G'¾e|'+}…åü7?}…çÞ®þ%ü[èoã_cz*«ŠÆ*¯ÌÆyžW©:3=©åŒó<¯Xg™î’ø»ùÌ_'&ý}ü«ùwÉße2ö—ô/èßMJû;èïéßÔ¾žôÕUŒ}Wi}Eý‹ío©¿µnúæï¶½­ýËû·íoï_¢½µö÷÷ï«¿Ã}Äþê~Þ×?ÄŸöOÆŸƒ?Û?e?q?8
+"?÷U¨‡øuUTWü4ÐWütÒ+î4Òÿ-4~Ÿ>Flü=>6Z¨þæ¿u-ü*ÿÞ~Tü9¡A?ø¯þe€¿B¿úŸ—?6ª‡ÿtÐ+àé «ítÒPGÿ´Ð¢‘òð©4¤þ¶Ÿ3??`+l)ü1_d+J+úµ,(5b³$˜ÂŠ`f0™UU–T”LeT³%ÌŠK/}ƒì4Ø¥²É–UJË2TË%[2¦Ze£LÔÍ™fY›3kk[S52Ó5)fY–e”³,Ë2Ûe,¥™fY–e”³,Ë2Ùd¢dPÌ¥J2Ä«,ÙšÖÂU³,ͪٛ2µªm]«¶ÛmJR›m¶ÕÚ´Û÷¿à|ïýÿñ¼}7Ó}/Ñúzzzzzzzzzzzzz}?§§§§§§Óúzzzz|O§§§§§§§§§§§§«íÞÿ/öÿ«êú_¤õ}Ðz¾3ü^¯W«Õ÷¯W«Õêûï«Õêï¾ûï¾ûï¿wîûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï¾ûï½¶¥6¦Û÷À,Eþ‹úOÅûÿÅûû¿ÀÞÿïœ9Ë»çIÇhµ·˜-mÛ©[E$Ñºío30ZíšÛ̶ítn¶í—KÝ2‹2—”˳8æÒ–Y‚—”ÌsMÜEÂö™E™KÊeÙœsiK,ÁKÊeÙ”ÅtÝ.é”Y”¼¦]™Ç6”²Ì¼¦]™L‰œ¥í2‹2—”˳8æÒ–Y‚—”ÌsMQ¶Ä¹¸Ý™¹q±·7ÙºØÛ›ÇtmÂF[˜«r	sqm›­¹¸ØÕpe»	Ù­ËkvêU»u­º•o3R­Ú-vê$ÜKv·™™©[u«yš•nÑ«wÖöÄ
+Ð^‚˜/tÁÂÐe0tƒ( ƒ4`ºh)ƒ¤Aš
+`é`9AÒ ‚ áh3¬ÁpA” ëÐA4ÁÒ Í0tƒ™AÒ Ì0iVlÝÝ»²I6ÛwuÙ#¶±»»¹™™›mÛwww.èÝ»$¹–ÑE¶ÜÌÌËmÛ$’îèÝÝ©(ntËýWsz^ôÎìÎ9½)e˜)yLÇ4Ý“q\ubQl
+¹º3
+¥tÜY,âÝÀµ…píÖ0*t•Ia¦æn«¦sF@‚ÁB•¤ít)¼Úˤëxrò•sa£	ÀÆmJ+FºftÊ,Ê^S.Ìã›JYf
+^S.̦n=ÜÝÑ»»$“m·w]’[tnîîfffÛE¶ÝÝÝ˺7nÉ.e¶‹m¹™™–Ú-¶I%ÝÑ»»m†áwL¢Ì¥å2ìÎ9´¥–`¥å3ÓB·rîÝÙ$›m»ºì’Û£wws336Ú-¶îîî]Ñ»vIs-´[mÌÌ̶Ñm²I.îÝÛE†áwL¢Ì¥å2ìÎ9´¥–`¥å3ÓM–nîÝ»wfBrîݺª¶Ý»víÛ·vdʵ[nÝ»vîÂreÝ»v'e»víÛ·n“víÛ·vdË»wfL»¤Ý»³&§³nÝ»víۤݻvíØ–íÛ·nݺMÛ·nª­·nÝÙ“);·nݺðè›-9né×-.ãÒÆfˆæÓ—s(Ì2‰fS–î”4åË™˜4L9rS™F]ÝÊ3)w.îé×.êº&K§-Ý:ÄÌØòÒÆȩ)»wwnÝ»³!9wnÝU[nÝ»víÛ»2eZ­·nÝ»wa92îÝ»²Ý»víÛ·I»víÛ­#w%ÌÂ÷%Ìˬe»¹™ºÆT•Ýß4>åÜ̺ÆvîæfëÙÝÖ2¤’N±–îëÃ&ÍÝc;wuàu%›¹™ºÆ^îæfë]c-ÝÌÍ×I{­É‡.Jeʲ%–FnãrIµÝËr3n7%9r:›si¹V¬Ù˜÷.ër幡$;rSd̬ͭɇ.JeÌys.D­‘›¸Ü”S+¸î;ŒëÚ¶=Ä“Üw׵͖»Žã¸î;Žã¹s¸¬wåÇ,Úî;Žã¸î;—‰'qî;ŽãOl¯qÜwÆuæ×q$î;Žã¸îZ­­U¼OeoS¤Ë±\­êvVõ-—S¤“ŠÙ¶6¤N˱Rr·©Ù[ԝÅl­êÖíÙ±±›—pÅ¶n¶6æãcqÝp’F[˜«r	sqm„î¶6æãcrèÛ3c™nÝÙ“.é7nìÉ©ìÛ·nÝ»vé7nݺîâ–]Û·nÝ»t›·nÝU[nÝ»³&RwnÝ»wsayL¢Ì¥å2ìÎ9´¥–`¥å2ìÊaÁ-lc­äW+r,',O%nE™[’Y²,$•Š[RH³,O	•¹enIfȳ+rW·éyL»09´¥–e/)—fS2é–»¥íÄôçKÞžôvgKïnvÍã—¥,³/)—fS*M¥Ý2‹2—”˳8æÒ–Y‚—”ÌsM.Ñ_2›Kºee/)—fqÍ¥,³/)—fS-u…å2‹2—”˳f^”·³KΙve3&—¥î™E™KÊeÙœsiK,ÁKÊeÙ”È
+‡‡øÓ,Îc0ÖÎB3
+pã£\8Æa­†¢H0e†að°è¼0eƒÃÃ(¼<0eåƒ(¼<0bÑ(lÉeÃfLZ\/tËË2—”˳8æÒ–Y‚—”ÌsMÈ™2áº]¦PlÊ\¦]™Ç6”²Ì¼¦cšhR;š5†Ì–hÖ2fQ¬Éh®„ôlІŒ´!FZÑf„4e¡
+2а…4$…t!FZ£-SBHWB)e¡2àI
+z£-Q–…„)¡$+¡
+2Ð…hXBšÑ7B3hXBšBº€©p)ÂÐ’Ð…hF¸ѳB2а…4$…t!FZƒ.×¡IטèÞô!Ñ–…„)¡$+¡
+2Ð…hXBš’”,!M	!]Q–„(ËBÂЃۗvíÛ»2—víÕU¶íÛ·nÝ»³&UªÛvíÛ·v“.íÛ±;-Û·nÝ»t›·nÝ»³&]Û»2eÝ&íÝ™5=›víÛ·nÝ&íÛ·nÄì·nÝ»víÒnÝ»uUm»vîÌ™IÝ»víÝÌH½É£[Ž#2Y£[Žæa³%š5†Ì–i{fa³!(È]Ó(³)yL»3Žm)e˜)yL»2˜ÝÓawL¢Ì¥å2ìÎ9´¥–`¥å2ìÊdÌÓ!{¦QfRò™vgÚRË0Rò™ve1íy…ÒóL¢Ì¥å2ìÎ9´¥–`¥å2ìÊgx88\X^ÚgE™AyL»3Žm)e˜)yL»2˜»—tnîÉ$ÛmÝ×d–Ý»»™™™¶Ñm·wwrîÛ²K™m¢Ûnffe¶‹m’Iwtnî×Ð ç9Î œ ppr7Òˆâ¬ÁXI1Ã\8P‚(hÙÚoR¤^NR
+AY"Ö4Y4dFÛëU&™d¤Ì‘níUÍo‹k,”d‘ZÍZ¾ª‹×”î+Mˆ$Ì’RDD´DDE]x•Dd‰HF*­F£RZe“d¤É"š­bÛ±µ´kFµ]/ªîºdÒY6ÆÉ³*f”³e*eI¬[V¾mkz·™$›Ic]Ýn»µÓ1c[š¨ÛE¼Ým-Šf”¦É²jKIµE´6ÒÊ£L³6YeM5*lÔ©©Sfš™Y›Ebµb£bÆÅE¶«kmF4”d“FLÄ’’"­±£E%3&I’#
+«kš¸Õªô;›–á$$˜Ì•'.—w].s'7LM$I®Þ…äbI’I”ÌÌ——W…ªék¥)†R”¥)J»¥º«Ì$$’ēλ»»¸ºÏuÝ×wDFÖòŠ2S)))’“µŠ(Å*µì­¥Y·»«»»»6ׄ’fIwN—]ÝÝwuʉ ;&d’L’KºîîîV›€YhÔQ¬bH‘e›i–k_VM´Ú¹¥Öëk´²Ú첬ËiV[×G65Ý[›»®î»q×]ݶ¥Q1 Å’‹c!%O†ïôo±Œ¤!Ѝ"SB
+R
+|õWϧ§ôþs$I$‘Ã$’H¤RI$1$2G$Ù³cfÍÀ•P’ŒñEd^vu*YB}Î$Sí`Pºøžp¯@\yRcŸF2¥z‚W"¥Ò7}ú¸áNµ-¸®¹2¥¦EcŽã‘6ð,ŠÞ+§vfc 7üÞÑ\X“n+W
+†©»ð£^ -ßRŽ>ÐEµÈ²cÀF1QäÿÔDaÎ p¸$ÜqÐV¶Ø¥b•®ÆEiPyú۹ܣoî·øìyY8<h_ø@ {ßsõ`¾L+Ü€aGòÀ2­ØKD»í}‹ßòñ\֏³ ×jtÙ˜§Ä|µ)JR”¤úô¯?	ëߨöÿùÅqŒcÆ8Æ#Æ1Œ_ÄãÆ1¾1Œ[Æ1lcÆøÆ18Æ1Œ_ÄcÆ1Ž1ŠãÆ1ŒsŠcÆ1Œcb˜ŒcÆ1Î+ŒcÆ1Æ1Æ1ŒbøÆ'Æ1ñŒbØÆ1‹cÆ7Æ1‹ãœcÆ7Æ1‹cÆ-Œc߯'Æ1‹ãŒcÆ1Æ1\cÆ;ï®Îûï¾ûï¾û¾„ <þã÷¯OòUõßÏ  —ï릫óhr¥ÐÀ$¹ ¢ˆ-¶Ð µGÓ*6 »›Ÿ‰¿ìþ‡Ìêÿ›k“Ú|Ÿi«Ê+Ðç
+ÐW7F¢µª[Y‹‹O·ûmƒŽ®>×i><\|uú¥~»¯wuµº÷7]M×QuÓÝow^Ó€Wñºé®½×²éUýn½…×®ºõ¾­]ϪWîºèîº+¯Ouéºw7\ý×=uÎÝo×Zû®뜷¼÷ZÛ'ëãWªý.ùÀ†ž¶öV©µ­u[m¤Vå¶Ùh£¬q°TE
+i¡G=ÊÇAG%·ûxzý¿ælâ‘PNúá`"SM".wY"
+[k'Óì¶Z‚4´´”“j£¡‚¸b¢›þ±O÷aPDõ«~E|,©÷ú¸¾ÌÑÖ½˜­íÈ’fe3L³&Y”Æ1‹_n	§ÓBJ2CîT}F”~h° 
+⪄wö_¥ý_é¿‹¿ÕýÆÏ3,Þê³p càÛ½z2¼if
+wÁ>x’ÕÙÔχË¢tgª´<9‹6`—»£Ç	]SÇ’y“»5«¹|Ï$[ÝÊúhÇçN”±
+ª°Ÿ;Ol=Ìíî•çv$ cÌ=ò‡fµ›ŽºF½V÷0© sœóÒQqÔ Cºë3­óž+²ûšÞœñ<»Ê±ÏE·Îø\9{åo¾°<Ñ	È6vŸŠyàÎîn޾¥¾WËÞÓŽß;žÙ:ݪÇ⻢xf7åˆö½ð<xù¾xò>ù›ã]j#ƒwjÏ2±6o™ãÞèuwʨÏwÉ1x°½ó§µŽÏ-y3°±ž9gšú´å>˜.^¼ÃáÏ3ÎŽãeo‡bðõù‚f흝=ñÁå()…;æÀ|CWVêxšðftà-‘:r²·	]œXóžkíU<Æâó™«„ñæy;:.xzâèÞÁ…bŒ<ÌÚûäïEˆ:Øó«ÃÇâ„	¡sÃÄ@ðæíB]ë• BÞ¸ÕÈÅ —³VöøÄW£bð€Òå=H> LòtÀÏ4$ÇÂO+žt
+C žL²›ƒ»â>gšúÛLvøÇwg˜oWWŽž¹ž; dwXò+äÔ5 ÈP½Õd;‹©ºÝqÜs”¡­Pw5:…dÍ7éšoݧ4Rê | ‹Ûõ?Û¿…Ž=4äåù?3êýU¸g±¬¾ÍCâpÏk㫌áôtÂ(ó<ñÂÎßLyÓ„íOø_žtþ¸Ñ;á(z./³#¤|vìÓ1 "A|¬ïXÒžcܸä¨T*I~¼óŽ Hu2ùÕù.Ÿ¡¸Ô;…MÏ3^Ö½<IßÄ wA4z3ËðšÏe
+QnC¸¬T/ƒ™½Ñ£~uÐfîP_qgkyFwsÍî÷!*_;<‘½*öŸØÒc0|¾6™›<Sž>ùLX:Bò{ÛJ+ºWSÎù;{iŽ^›ÜÜ><Yäìïrl;|Ííð¢F¹äêÅ|o	õðIçâk@ÀHÚƒ#فáôÓ#râHwU\7.eQéóYâDÈ)ÕP'*€=xïÓU”	é*yˆUSÕÐê‘ý—jj«¸$Âíäʰ 	 ¾±<·ÎNù›Eî©^h[ˆ÷Dn5&©*pÈ%À;ªD:ÊÔ¨dê]ɐMFãȃq<Ï x€xÝÔGÄç¾ §£×[póNèÔIGÙ7²Cpó!È>¹¸/é%ÄzªêÉW(+«±¨ú9~kåz0>ÁàGþÊÁÜ}¹=xÞ"»ñ“~8½g~g‘}¥a_)ûòÍ8Vz
+=%_ä‘Ì_È\óÛwëªnCÒëÒyöWBí" Ë  ñÏo–e^^T¨’Š(ßÕ  {ÿx+¨çµ…G>•-–ËHW¶„…­­¢¥>GmRò5x™ºÝjÔ+[[DêYm -4Ò‹“ñ¾~àüþøqE{øç€ c 5ŠË…£ <P
+ŸTÍ›]>¶
+'PÇ[–Ûeüà ½<~B¢‹Ûģт±JÅ+1·q\V—tW€‰(ñ]ê—B¥…·ßշʶµøÊÛu¿³Aˆb4ÔF@DTÐÒ± ˆÓQ ASCHCTl!` P	€ X
+ƒER¨²i,¡K2ÆŠ¥A’dŒFËDD“$E¥–B£`Ù  2€L Àl*•E“Ie
+Y–4U,Aˆb4ÔF DTÐÒÕÈX À”` À`ÑTª,šK(RÌY“05QKQò¶
+î|:—Ñùõ.,%”XaîEoÈ+J—€+Í©t(›+<a\rÔ¹j[…j+ð*[·Šöµ-·Tµm­ý®ÛYmjQ$%™²l–¤ÔlXªUJÖû6¬¥}åµnÛhØÆÑEb¢ÅU[	b¦Ê™)•0±hh´±›meµ©h¤Éšif›)²T–™©6KJªê¶íµkåVß=µ¾vûÔ€F#MDdb¦†…ˆ1  ŒFšˆÈŠšB>5¢Qíµ/QRéí;V‘Wdðjª¿/ü¢¼ónîànßy㻇»ŽÆÛtê_§m’	û.fÏØwtnîîÝïì–ÛZ¶‹lMÑ™H’HþŸõƒìþdØý4LÌ3333óú5­a™—w+ãV|_|ø½õ×Èü@÷¤}Þîànß_Ü=Üq–÷½ïW‚{»¸·¼wpóœe½ï{åZÕ«AOæKó6Å’	úlÌŸ›wFîîèÝß?5¶ßÍmØ$›£3 ‘$‘üߘüŸÌ›¦’	$I$üØ32	#l¯ =’H>$‘$ž.k%$O9Æ[Þ÷½^	îîànÞñÝÃÎq–÷½ëå[V¶¯Šø	ñÝÜ
+ÛãÇw9Æ[Þ÷½^	îîànÍ’’$²Š'„q¶ßÑúKé¶6H'ᙃ3ëwFîîèÝÞý[mú¶‹lMÑ™H’Hý}gé6?	 ’A$’O¬™‘¶WÐÉ$H’O5’’$²Š'„q¶ßÑúKé¶6H'ᙃ3ëwFîîèÝÞý[mú¶‹lMÑ™H’Hý}gé6>¤‚I’I>°fdFÙ_@{$|I"I<\ÖJH’Ò%Â8Ûoèý%ôÛ$ðÌÁ™õ»£wwtnï~­¶ý[E¶	&èÌÈ$I$~¾³ô›RA$‚I$ŸX32	#l¯ =’H>$‘$ž.oŽîsŒ·½ïz¼ÝÝÀݽ㻇œã-ï{ÖÚµµz¼ÜDÅÆÂH‚ÐEAm·ôOÒ	/¥²EøÌÆQs>·1¸ñõîïÓL}ni˜Ü‘äH QGëèû#馃ú’#MH¾ž`aFO»¯¸ëÝÜ
+Ûç㻇œã-ï{Þ¯÷wp7oxîáç8Ë{Þ÷«Á=ÝÜ
+ÛÞ;¸yÎ2Þ÷½êðOwwv÷ŽîsŒ·½ï{î¾ïwÝm’	øf`ÌúÝÑ»»º7w¿VÛ~­¢Û“tfd$’?_GÙúM© ’A$’O¬™‘¶WÐÉ$H’O5’’$²Š'„q¶ßÑúKé¶6H'ᙃ3ëwFîîèÝÞý[mú¶‹lMÑ™H’Hý}gé6>¤
 ‚I’I>°fdFÙ_@{$|I"I<\ÖJH’Ê(žÆÛGé/¦ØÙ Ÿ†fÏ­Ý»»£w{õm·êÚ-°I7FfA"I#õô}Ÿ¤Øú’	$I$úÁ™Ie}ì’Ÿ^îànß?Ü=Üq–÷½ïW‚{»¸·¼wpóœe½ï{½¡‡¸FíÞw\=Üq–÷½ïW‚{»¸·¼wp÷qÆ[Þ÷¾ú¾+à'Çwp7oÜ=Üq–÷½ïW‚{»¸·¼wp÷qÆ[Þ÷½^	îîànÞñÝÃÝÇo{Þõx'»»»{Çw9Æ[Þ÷½^	îîànÞñÝÃÎq–÷½ïW‚{»¸·¼wpóœe½ï{ÕàžîîíïÜ=Üq–÷½ïW‚{»¸·¼wp÷qÆ[Þ÷½^	îîànÞñÝÃÝÇo{Þõx'»»»’’$´‰DðŽ6Ûû?i}¶ÆÉúÌÁ™÷»£wwtnï~í¶ýÛE¶	&èÌÈ$I$~þϳö›rA$‚I$Ÿx32	#l¯¿°>B}½ÝÀݾž;¸yÎ2Þ÷½êðOwwv÷ŽîsŒ·½ïz¼ÝÝÀݽ㻇œã-ï{Þ¯÷wp7oxîáç8Ë{Þ÷«Á=ÝÜ
+ÛÞ;¸{¸ã-ï{Þ¯÷wp7oxîáî㌷½ïz¼ÝÝÀݽ㻇œã-ï{Þ¯÷wp7oxîáî㌷½ïz¼ÝÝÀݽ㻇œã-ï{Þ¯÷wp7oxîáî㌷½ïz¼ÝÝÀݽ㻇»Ž2Þ÷½êðOwwv÷ŽîsŒ·½ïz¼ÝÝÀݽ㻇»Ž2Þ÷½êðOwwv÷Žîî8Ë{Þ÷«Á=ÝÜ
+ÛÞ;¸{¸ã-ï{Þ¯÷wp7oxRD–‘(žÆÛgí/¶ÞÉ>¤ŸrFß~äû’ÏßÙö~ÓrFÚ_hýŽsƒƒƒŸ`|’H>’H’O+%$Ii‰ám·ö~Òm³ªH~Öfaû[»ºŽîîtýÛjûVÛ¨äxfäF ’Gïìû#í6~Ԑ™$HŒûÈŒŒ6WÜûçÉ$ƒé ‘$ž.6JH’Ê(žÆÛgí/¶ØÙ ŸY˜3>÷tnîîÝïݶ߻h¶Á$Ý™‰$ßÙö~ÓcîH$I$“ïfA$m•÷öÉ$ƒé$‰$ño§Žîî8Ë{Þ÷àjµ­«â¾D’$“ÅÈÉIYEÂ8Ûoñ?Š_‹llO¼ÌŸŽîÝÝÑ»½üm¶þ6Ñm‚Iº32	IÇñ>Ï⛌I ’I'ãƒ3 “ãÞó¾í}ÀŸ^îànß?Ü=Üq–÷½ïW‚{»¸·¼wpóœe½ï{ïß
 ð㻸·¼wpóœe¼Ûgí/¶ØÙ ŸY˜3>÷tnîîÝïݶ߻h¶Á$Ý™‰$ßÙö~ÓcîH$I$“ïfA$m•ô²IÄ’$“ÅÍd¥ÃÝÇo{Þõx'»»»{Çw9Æ[Þ÷½^	îîànÞñÝĹR¤`ÝÝßÄUA÷þŠ|?ÑçÒü?¢øø|_çáàú/OÖGÚÂáƒõ	ÓáýAƒSI„HÝŽêRɰ§	7,ÀÕÁ¤k Jh!ÄI$’q$?'¥ Id#³n ú„Z¹I ’ZnœÌK˜I$“-q6ˆ‚	I"Ø Â¡B ¡Ù0MI$›mîæLÂÈÀ“41yL(4,Æ„jââBiÃJG7ÄÓrk9ª†Ûƒné”<Ž5HÁ‘
+¸›³B2¦î@éÍbS3l’º·r·•»†Œ&
+m†-Û7L[¹ ‰Â^Å¢º–ÔFQ†nh&RmRIVÃm†dˆCAt-ïzhYz‡V)ܘªCTI„šÆLã©$ÅE
+s D⍱R ÁŠ”ÁˆŽ ¸"Ó@$#´‚LI%îé&]×#sVàÔ˜’$'uÒÓµÆÑn]܍ÍW[µÈ„™’I¤ˆM‚*ˆ¿'ç>·†ºç^<}Æï®ç}÷U]÷ß~ *zѐÝNº£ÎUË×^|]™ãqP„qÃA+ži‹ãA·䃽ëÅÍ$=šõú¾@­P}РH’<ÙK!sqj‹#! Bà!Ȩõ㪴“¨÷ªŠšÈháß]w¾ú­î²¹;È)@@‘_§žbcó¾ìM~ÇÇãûŸ{î¦Û.5=>5ðß	ðßò]$¦fb!$’I   ‰%33	$’I          ’S31’I$’ILÌÄBI$’I%33	$’I      ILÌÚfRI$         ILÌÄBI$’I%33	$’I$”ÌÌD$’I$                                          $”ÌÌD$’I$                                                IDBI$’I(S1 	$’ILÌÄFI$   ’S31’I$      $”ÌÌD$’I$      ÅR‹LÌFÛDP§ÁÍD’I¤’IÈ{ø%±¢8 ÛZÛçòúgËå}Ëç  lhJ¤­vÕÚ„”{º}å
 î,È^¿ü_ûûò{ÿLj·ð7þf‹žŒbRJÆ"IˆÖYoá7äñªßêWêlÊ™Š¯¾=™ïT®kûv`_ÝùWølÀ¸®&a.+2-ñìÈ_+žç³!n·3!vnÍ™­u¬À·ÛìÀ¹.`]ÚÉ>>R~ÆéfIÓ#É¥¿ß~+_‚#»’HI™$’j°	3$“2RI%¤ÙKLÖe²Â©d›RÌZšU–m¦–Ó5£j-µ ƒTj+U¯õØ“Q¡bµú6ŒUŠŠ“fSJYfÊT¦ÆÉ¨±±­š¶6K&šifY4–4m6·áXÖ‹ÂÜ1FfdÙ,ÊeIS6Js¨²RP“`‰ÝÉ2DÒD˜Qcb£k4RfI"*hÄI™$’"Íÿ©&f’ÉRZe¤¬[‹nîÚå¢ÑbÅ®®
+ë\­Š¨µµøoÀÜÛLªüJ06¦å¹©(
+-¥oÄ¢w\‘rª[­Ö­ø „dŒ”QEmLÆ¥Ù¾úÌ…Û¼2‹Á³!z~•+ï®Å˜aJîkkf­Óf¯b=ŒfY®“–M’£dÙ•&’Òb·r#IfY4–f“"`ׯu¬À¿¿û^ê•Ý»öd/Gü^W”Ü€’*òá%f•fˆ ù¯ÉúJWY–¬¥E´ù2ëWwm¦À
+ð~Ǹ&I$œI$’I(™I—&°*ύ­ð º’I$’I$’I$ájå4¯]ecŠÑã+ŠæhÍÒºÍC
+:WN:†:WX˜cŠç)D:5}g5KV=k(!”’I$#(XyÁ 
+Íæ&´ŠÉ$’I2I$„’I4¸sjø  ìti\ÅÂÕ°DVÀ²wÍ+¥EÀ4Mb¸ ¢f!˜®"(Ø™0ÅqAVжյt‚=»•µ[KœA^hÃÈI$’LHjqhœd›]WÏåñó»ß[íp  €|VÙ4­R”¬BˆR°Z%+¢¬ˆtZ´ÊW©B
+]€ Ez7YuU˸i6q½UI$™RQµ«spOà\/5 –”I$’I  ;çZù+ÞÝm4ÛæÚë&¢”"™%Å)cDB–P<áKibàA`¢4$”F½À^ëÊš…Áyzg)wrs\ÙšÙ¥lÔ½n“F’îA¶Ú¹]—ûõS0˹B–QR¥=º+Zª®XÙIÙuAnÌgzÍKˆËs5ÖÆãÒI$’I$’IôùôÖ³svÚRY,™mä®DÂãA†ž2éÃnÑ©TÈ/(à™Rï‘Cœï4ô¡Y4|!ñÈaXBì*š
+éDB¹,Ä ¨;m¾oww×çö_?§Ïãè   ?•ô½|Ÿ»Ï|¾]|þ@ öw         €*€’I$$’H¯Ìôiù¿oa߯PñÊ©=3Î÷W-nDèL´XRf¡º’›N,qÓ,W‘š@”È/XxBI$’q%Úi޲AE°ØÆe½N¢yI’HAª£$ç0’u	ÔV6Ûh‚A#A$’A‘l CÇNÔI$š:3Èuéš
+Ë»SljA$Ã'ᇇš¹”饋KäMÉŠh»[m°Ûa;ZnLu­iqB®èL⛺4‘­†µnäÄ^KjܵîÍčœkS{9¯bÒ`ÌonÒ3Ò]77î"P¶;šdg‰RI*Ûm$Ãm„Aʶ°f°æÚõHp)±æâ‘H¤#RD¤sƒœ[¹ë™’zk^TwÞ:ñ׎ýž|xðxñ⪼xñãǐWÚ žœôó}øeåy=+ru~^§}’_¡zñáöLº
+Ñ\…ÝØ0ð(ò†¸kaú>yBÎ">~ÛÔ~ÇRøï¬;šóàjO_ÛÇ¿¸&¹Ýî7=Dx ùêîï$‘¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶›i¶Ûm¶Ûm¶Ûns¾"HðŒøÀä?A`|ÌÆØ‘§â€€øß]Õzú^xÛûÿQUAUUUTÀª V0*ª—`¡]Vnï÷Ë]Y¨`·òÅõ€fe‚Y.è^ =tjXW,êå‹öv<¬6×>{ê°ñ ‡¯_:2
+/@N‰Û =¢‹žyÂëϏpº:óã’I$’I$’BI$˜¹ß]à½EÔÖ¨Z‰r®…hÓJši¢¹á%뢴°fš+Q.…¢¨Z
+¡y՝xõós½Hkâ-æt]o8ÆÀ\æhD(7‚z½á{ƒ9ëåôù€ }-òùu·×âíô_+T.\(È^P´­'U²Ý[›ææn…ÐëEèÕ½¦Í›ÞÅÐéÖµ4.€J»š DðõÏÇU7SÆÍì׃–h½ïC^… )ž¢H/K4n€ô’I$’d’HI$“I£G{å¡Ei½j`¹Þ¶Ùw­Í‹y6l»Ñ½‹Y²h»Ö…ë6hÎq×4-ê!‘CLÞ[fn•lÖ¨³F¶-­Ü±eP¾äO.·×˜kÆ~MkË`&† ¹Åè8J<æg7y¿zø}ÝnyYŠ@
+ cª©vI ’âKxGƒ|cÃÈ ž”‚`0ßÝ›p8ð4™Í	(ß¿5IÉTE¦Y”á	3:²îê£=k]ù£Á8<d¹Íƒ›náP¬(®ƒ'“à¿Rùø  @>»çúm[|¯›ç>W˳ÇJš5ZÕ(ã…f´iÑ­a†f´hÀ<Ýó¶‹ÍAÔºþ7ny<a#…ï(cp)˜F§›£3Ôéõ'|ü<ÂI$’I$’H$’Kèèw°@Ãaù'˜Ùþ†@çÂ	ëgÖàp’ûç›ßLyρÉ0ÆÌbrâc5,I2	̏9ÁÌõC¥ßÇ<#ãÔçª@ ËîWÇ|ý½Ý»½íz÷«îõ€x½j´€ˆ¡¤39ãzCF°ªêЯß1oxl_|ÇÞ ’$’Iq$ ¬`UU.ÁC~‚Vlª¼¶UÈÛq³ÂÒ% ’ãã™>6©S<Ïáø£œ”œIr	ô‘$bA$
+ÁÀ=ÒI$ Û        BI$ŠÛtw¨sÅëδOC’d’ÊÖ³¢Hµp¢K[[O%CkÌx…‚]t@^ëˆÆ†I“©¤Ñå'”ANE0Ë¥˜ŠKšI$’Kš¤#RDµLÚ“KR
+¶AHÔ‚ZÔ„“‰A!¹„	ÅÁ˜	buµ6ÞI¸„QŒmñÂ$ÍGM5)Šs›[m°Ü£I5â;nWCŒÚiF3LѸlY‡Bš³ue›¹‰6ó%¸ÅBª“šé#xŠDi×€´tãÝ–©§c#{FèÊ‚I$–6Ûm¶l#¹HŽÌÕ”é¸uaÒŠ63“p’N¤’Cp s„H¹o¿ÃÎø<óφ߯^½-ivo­]éÞ·ofÒBùóÁ‹Ê<ñŸKÊ©%éŸC¯"«.0):!ÔÄŸ‘¿IG==Ùé磢x}zÎè(ëòzU"=vYEJÝò€/Úˆ   <s½]ÝݶÛm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ÛM´Ûm¶Ûm¶Ûm¶}YÁël1Œ.>z“d#oß1ЬVfnm;²fn{~Z…P¨KU@%UUTÕSåMrÕÈ+qOÅa¾  m@çZÄqÌÄñ ÒšÖ¹°²ˆµµ›+»áÍ »\w»Ûµ$‘‘6³{—½‘ÈU\öÑZɽCG“&_`&ùKÂýèY|EO#òXI$’I$’I’I|Ámç93‡cW83Snà¬&†·iµB‹ca®+9ÊCh‚,‹3{®³œâ¥Å®¸r¯{¤¸hªÃšãuÕU'UœçG€ïl`hηáfÐ Óáœòz¾Ïˆï¯À  €}>ÇÙö}>z¶sDѬ xEIDŽ˜œ×Ú0¤Ùw­lØ,"02šˆ;7­ëC…Ùbsfµ1PËÌD@A„ F at F÷”QPæÇ¢Æ<+­ì`ç	…¨ŸŒR¾Âü×å8I$’I$‚Þ¾¿gÓì¾7Ñ•ImR–ÖÐb"	º7½î°6¨Æ `¤# (sœÖÎuÅ@ÈŠ‡ ªó9ÖиkW­: n÷½õ{ Y	e êï\³B„`"Æ"Æ`¤b	ƒ¯7½ìd3*©µïgKtð½ar‚C¨LÊ~„¤åò	%ñS£~}u	$’K‰ XÀªª]‚†7
+Ã73.ª±•YU•)[»Ì33W¨!£ZÓ­
+H‰ ŠH¢•ã{w¤@Ö´kY¥V4ëZ>æ —{Ý—-À<sÂÝ*ÉR"“'Âýu%'™“Þø¯žºI$’I$’I$’IÂös¼
+‚û𑷏s+B!A ¼ÀO‘ѧd½á½€’, Ðïnæ¶‹#´ÚÖô€h4&»½—W·V*±®ÝvkY^m¶ëokÍ^Vº­m_ÍeÊê¶Û¿àÛöìÌfæ	ÜÙÓýôÆðíôÉdÈŸÿ—ÇwßPÁëSÒ@Õ§Ù÷Ü`oÒ½öÉdÌåO™ïÅóÔ(øÔÀô5iù?=Æü«ßl–A<À~U•ŒBæ)Å3xšSÄE+Ä^ª«æ”ºŽ9&µšÒµÛzUE•ŒBæ)Å3xšSÄE+Ä^ª«æ”½+~35¬O >Ô÷>:½õ
+=j`zH´û>ûŒ
+oÃ%O >Ô÷>:½õ
+=j`zH´û>ûŒ¨ã’kY­+]·¥TYXÄ.bœS7‰¥<DR¼EꪻŒ
+ùW¾Ù,‚y€ü©ó=ø¾z…˜’«ÕUs¼Ò—QÇ$Ö³ZV»oJ¨²±ˆ\Å8¦oJxˆ¥x‹ÕUs¼Ò—QÇ$Ö³ZV»oJ¨²±ˆ\Å8¦oIVŸ“óÜ`h;~,‚yö§¹ñÕï¨QëSÒ@Õ§Ù÷Ü`oʽöÉdÌåO™ïÅóÔ(øÔÀô5iù?=Æü«ßl–A<À~U•ŒBæ)Å3xšSÄE+Ä^ª«æ”ºŽ9&µšÒµÛzUE•ŒBæ)Å3xšSÄE+Ä^ª«æ”ºŽ9&µšÒµÛzUE•ŒBæ)Å3xšSÄE+Ä^ª«æ”ºŽ9&µšÒµÛzUE”ºæ)½3xšSÄE+Ä^ª«æ”ÝFü2YòíOsã«ßP£Ö¦¤«O³ï¸Àß•{í’È'˜ÊŸ3ß‹ç¨Qñ©é j½UW;Í)urMk5¥k¶ôª‹+…ÌSŠfñ4§ˆ@Õ§äü÷F߆K ž@}©î|u{êzÔÀô5iö}÷߆K ž@}©î|u{êzÔÀô5iö}÷ò¯}²YóùSæ{ñ|õ
+>50=$
+Z~OÏq¿*÷Û%O0•ec¹ŠqLÞ&”ñJñªªçy¥.£ŽI­f´­vÞ•Qec¹ŠqLÞ&”ñJñªªçy¥.£ŽI­f´­vÞ•Qec¹ŠqLÞ&”ñJñªªçy¥.£ŽI­f´­vÞ•Qec¹ŠqLÞ&”ñJñªªçy¥4¿–A<€ûSÜøê÷Ô(õ©é jÓìûî04¿–A<€ûSÜøê÷Ô(õ©é j½Jœï4¥ÔqÉ5¬Ö•®ÛÒª,¬b1N)›ÄÒž!VŸ“óÜ`h;~,‚yö§¹ñÕï¨QëTÒž")^"õ*s¼Ò—QÇ$Ö³ZV»oJ¨²ƒ\Å7¦oJxˆ¥x‹ÕUs¼Ò—QÇ$Ö³ZV»oJ¨²±…óÔ(øÔÀô5iù?=Æü«ßl–A<À~Tùžü_=BLIVŸ“óÜ`h;~,‚yö§¹ñÕï¨QëSÒ@Õ§Ù÷Ü`oʽöÉu¥k¶ôª‹+…ÌSŠfñ4§ˆŠWˆ½UW;Í)urMk5¥k¶ôª‹+…ÌSŠfñ4§ˆŠWˆ½UW;Í)urMk5¥k¶ôª‹+…ÌSŠfñ4§ˆŠWˆ½UWq¿*÷Û%O0•>g¿ÏP£ãSÒ@Õ§äü÷F߆K ž@}©î|u{êzÔÀô¢•â/R§;Í)urMk5¥k¶ôª‹+…ÌSŠfñ4§ˆŠWˆ½UW;Í)urMk5¥k¶ôª‹+…ÌRLIVŸ“óÜ`h;~,‚yö§¹ñÕï¨QëSÒ@Õ§Ù÷Ü`oʽöÉdÌåO™ïÅóÔ(øÔÀô5iù?=ƃ·á’È'j{Ÿ^ú…µ0=$
+Z}Ÿ}Æü«ßl—ZV»oJ¨²ƒ\Å7¦oJxˆ¥x‹ÕUs¼Ò—QÇ$Ö³ZV»oJ¨²±ˆ\Å8¦oJxˆ¥x‹ÕUs¼Ò—QÇ$Ö³ZV»oJ¨²±ˆ\Å8¦oJxˆ¥x‹ÕUwò¯}²YóùSæ{ñ|õ
+>50=$
+Wªªçy¥.£…á-瘧4­
+ÒkÍBÓzï|Mk5¥O >”õ=u|õ
+>u0=$
+Z}Ÿ}ƃ·á’È'j{Ÿ^ú…µ0=$
+Z}Ÿ}Æü®9&µšÒµÛzUE•ŒBæ)Å3xšSÄE+Ä^ª«ä
+oÃ%O >Ô÷>:½õ
+=j`zH´û>ûŒ
+oÃ%O >Ô÷>:½õ
+=j`zH"õ*s¼Ò—QÇ$Ö³ZV»oJ¨²±ˆ\Å8¦oJzH´üŸžã~xH!ÿ©]5ãÄȰN<@L‹ãÄȰN6€1¨' &E‚qâdX'.A‘`œm cPN6€1¨' &E‚qâdX' &E‚q´A8ñ2,"Á8ñ2, j	Lj	‘`œm cPN<@L‹ãÄȰN<@L‹ãÄȰN6€1¨' &E‚q´A8Ú Æ œx€™	ÆÐ5ãÄȰN4€r('@ԍ j	Ç‹dX' &E‚qâdX'@ԏ"Á8Ú Æ œx€™	Lj	‘`œx€™	Lj	‘`œm cPN<@L‹ãh‚qâdX'@ԏ"Á8ñr‹ãÄȰN<@L‹ãh‚qâdX' &E‚qâdX'@ù‘`!EÁ€…j.Ô(¸#P¢à@B‹‚5j.Ô,\¨QpF !EÁ€…‹‚5
+.Ô(¸#P±pF !bà@B‹‚5
+.Ô(¸#P±pF !EÁ€„—i‚.Ô(¸#P¢à@B‹‚5
+.Ô,\¨Dq¤Á
+.Ô,\¨QpF !EÁ€…jI—XB²“.°…e&]a
+ƒuVB²“€…‹‚5j\¨QpF !EÁ€…j\¨X¸#P¿Ö®Ô,\¨QpF !EÁ€„GLµpF !EÁ€…j\¨QpF !bà@BÅÁ€…0¬×ÅŒÁA🤠¯ÆoóPÍš¦Z¹f
+L€AðÏÈݽÖÿ<Z<ÂI$’L’I!$’Jv
+
+U Ä­ëLŒ ’)ïB‰	!M€l§x$„B0 BÍ h¢¦B!!	"ÒX¾&¯f—’Ónµmm†æU‹ÊÃ"ÃŒM<†êoÃ}¬Þò°Èc#⚎‹9
+;„1$F Ø_Í‚‘/»ÀsŸÏ {D›pðóI&ËçC÷ñóù|¯§Ïì  ¾V»ã·Öø¾oã€0H at BD‰fiá§ŠwN×l8Y¾¨À4ÕðÓ›f˜:X^^«@ƒh0a† #%¸±Ä°F'Ôåß{Ù˜kñõ9	Pƨ#åo’¿;éòöõ÷;›ßgww½ö{âøÓî|€ ãâdÈDo§ÇÀ  €  õî뻫»»ƒ¨XÀªª]‚†°    ’H¯ê~ãÙîôíè/Ó­û*j¯x^Œ¸dÊäÍiHšÃ$žÛi<¦eØ“IԐ{1Dbö	ܽ\êxÉ’MGw¡“ÃȐHn opµL(’¹I$iaffIÔ’HmT²MI,l6ØiA8‚H´[D5 Ya ‚A³+E#
+\ÖQ‰²AŒ!°Ûaóu‹\ÆV8¦	+Ä”m¤¬¢Ó,ks;
+´ã9›7 Ö£”jՍ˜—¬:®kÆÞå’nd¹U¹•H9r‚2®,u—±»š
+Õ³a.ÌZ5“•R³- N¤‰XÛm†ÉX•bÔãMàÖRÓ·4ÂN­;ЏI$’u$0Ÿ|‚v®ý($žgš»|ïßž_<>xý·ëׯ^ˆ‡Ï8ŒÕ7Kûó¼3¸ÒóãCÒô×K@õ bÓCC§â¨|Ö4ú92^\𦠭÷³ËÕ§ÙÏÄ/ê€à sžŸ®¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Óm6Ûm¶Ûm¶ÛmàôCd`ç¬Á؁ãÛ¢Áœ< RXŸª s†úëùœ‚Vá¢Üs*€@
+ÆURíUTUSUNmðbÏŒµE
+SZAb6[b!ce–
+¹†^"ŽD¢îÛ»ÌDnæåòQF³ç˜4–$”蹜Jx@ ÈöÞû~>Ÿ.ë»åõ_?¨  @>+ß'WÛlÙl²ÙRٲ٪[,
+ËFÍ+U`ÅbÅ`Ådb²1X1Yª¸ô¶ØµVLVÙKd¶+j™lU±[Tùz•P\»±W—sqëmnNŸë
+fÝcÎ1.ñ¬	Ã2Ú=&ÉP`¿€Ÿ¹ 6û~@ ÷Ÿjiô\Ñ@Fè=,»@aÕ½â¨`Ef5`ý4c[:»8œqÙÎi(†¬C|Ìâ	焐âK¼Ïr0—ósëÀ ñï­ô¯mjÖÔF6YKMss(ց
+
+­ô‚8˜›´Äp1i¤¤;«aÔ0èÆÆ(œ°rƒÊHÙÆ41£W`r>y¡ÎÞÇêf@øòpÏŸX‚H’I%ÄU +UK°PÀÆÝXͪ¬¶g)0<GWˆÀ°,§X¥&! ZQ«Õ´Ž‹4hÍ™
+	M8!¡E6ù•'L4ôn4:×…áŽÌ03ˆ€¹áÄ‚ÅWÎó¥ücÁ|Öùz½ð   }eô«ª57T\15Ýc¤Õ`Ù*ð!D-0—x B¡nxh—­.Ô	Œ«Á’Û…Zd¡+!N0£Z›
+®·Òî„vè,Ùi³aEjµ—Y¸K•š':éªfR۝õã´th|C®±´ÉBˆÓpÂÄ\·H· wøYn´Be4
+QE õëzš:=	Œo´HœhlŠ7‹Œ`EÕI¸Â¡üþÞî÷u¢ú¾>Ÿsìû=ö>¿0 “¼¢”O«ˆ/&E†rËïÌ5£ZÁ0ޝcò!¬i= e¥*yÝušÌέkÅVƒ/3rÌÍÐîQB¨T ¬5TRUUQUMU;3¹  #&y»>¿oË}ª¾fùß{öý€ ñ|’.wßõø|¾@    Üî뻫»»»»·wWp
+ÆURì00]ÝÝÝÝÝÝ‚   UT  ÀüÓ{zúüŸo~#ëóøûï|
+4#8Ña8äÄÞ<3é¶ž*ÜZD½–` •¨2#jdk"\„’I>‘ÔÍï&Fœc:IIZÙ„’I'R\•bn‘RI%­¶ÒL6ØDp†ÛaÈëaˆ6ˆ‚ÌÆP¯bÜÈ™xárQ AÔ¸ÛaéKÒ·+ƒOCÀ‚I$l£UBŒPlsf­ÝZ!¡J1J´S®­Œ¥ÌÓ˜ão3BØd¸³pèY$	DônY»§ÅEwk(lnîɇ	ÒmŠ«Vó%tAHI$’I&FjŠhÁ	1›78q¦^I$’q% ª‘Ó®
+³”ª&5Û¿n¼ñϝbøÆ#*|xñàãíX½3Í8¥kHÍwÍ<^Õæø>yŒÕˆÏW!çRïSÖƒÔ‰'
+4€¼ðgÀhá_ãèQ¤øõa¿{цcÚÜ¿ïÅé1»:TàœàÏ]Ëž½ûÏï?ƒøÿŽöu×S31×]u×]u×]tÛm¶ÛitÛ™™ˆ†Ûm¶ÚI$’I$’I$’I$’I$’M·33
+¶Ûm¶Û™™ˆ†Ûm·×]u×]LÌÄG]u×]u×M¤’I$’I$’I$“nÌDCm¶Ûm$’I$’I$’I$’I$’I&Û™™ˆ†Ûm¶ÛmÌÌÄCm¶Ûm¶æfb!¶Ûmõ×M¶Ûm¶“m¶Ûm±¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm´’I$’I$’I$’I$’I$›m¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ú뮦fb#®ºë®ºë¦ÒI$’I$’I$’I$’I$’I$’I.›m¶Ûm¶Ûm¶Ûm¤’I$’M¶Ûm¶ÛI$’I$›m¶Ûm¶Ûm¶Ûm´’I$’I¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûo®ºê":뮺뮺뮺ë¨êf"#®ºë®ºë¦Ûnff"m¶ß]tÛm¶ÛitÛ™™ˆ†Ûm·×]6Ûm¶ÚI$’I$—M¹™˜ˆm¶Û}uÓm¶Ûm¤’I$’I/ÍИFý¾Ð„lÀ°Ë
+7¶Í•—ìºÎU]•­—'>s¯{5ïk^þÍŸ×xú´Y•Õ…¶Q=*Ëi’T)’|-‡HY.ѲÊ!Le’ž¶tjBýX½€\…¸n9­Í4oyY}]gʦ3a5ïRL6ÀOÆÞw:‚Ô¸Ðb,Ê:èÇf)¸u¢iӍ˜ËÈaeÞŒÍIZLÔ’I(Ül`OYIÎvw1’^h 3ʤ0»h6l§…f³<JÌ:ΰH¡ßOüAÃÎsóO"ãÂ$ËÈjøm܃zÜ›½Ž£5«°Ó m³Z½‡d„·{ÝîlØFA„#NÍîöm6 at d	!7Ù ÒiŠI!	M$‡fùÈÊÂ'„nÕJ8€èР®éM„IÆN>ËË—©x¶à\7ǍuPñ§‡5
+ìÚol“+[!f݆öCA)Û{vl7Š ŠÛB/i³w¨n Œvlp5C¨2)‘¨FCM®Í¡@ju³Ü	D.
+•¥ð-IŒ8‡V‡ "wubh“5
+Ä(œ pE
+* ˆNuš™ž4¥“3ÆýD_'4½Îº˜˜,öC…íy66‰­V	% j.¦€ˆh$QP˜ËM”ª¡uëV8V at In¼S¢á¡5<å+¢¡¦ÁÔë,¼á܆î¸Äu$
+PÜäoŸ mnk¬i;Ô‘Çøg]j¡kSVAæaËav5d»Ða½ºM"Ö6­Ùd!0ÃLÜ俐kFÞ?9Ä@ÐO5vgpK îãeI¨¡Ë˝cæOYÀ2!.œ•p`÷12Cfá!˜†B8ƒ†8ª'>ŽC€`äǘ=0ÚÜ04FwÉ+|<¬êŽ7rì/[JuDÖªÛÕBƒg5Õ—~pKÍnS@»,4A¢ØËlîgZi†·¡7ZÓ§HÑd,.›…·¨ÈËÜ512ÑN]ÕubTNºóÞ»ÛÙ79’0‘î¨a	+wU\»ïÜ&¸k™§š©$!`‹÷Š[ˆŠy~—Á'ž½·ì¨fõ¬ôÝ_®U›©ºÑiœ"^I¥GŽœµbA8î
+¼\ˆ>Ô6wŒ’o]0÷ ‚,-©7­7¤’IêI$(¬ä’I$êIЉÒA$’J6Ûm¶l#È‚DÂölâ=m¶Ñ,˜Âcu63AR	ìì|h ‚ ’âÝèT*‰kÖhÂ$’&-6¼š³&WqŒ•AJ9¸K2ÂÂ{3.4ÜWÌÖ“Æã$Ý:°Ì;«1n
+ÚàÝg	{[VÔTJîh3ÊJÜ[^j+tf¶ŒA‚	$‘b„£¢ ôæìMê‚eÕ]]å]å]æ$$“UÁ9>Q3nýÉ	“ã<ß/“¾¼úó<óÄ—ž½zõë=txqú;}n¿ÌF÷Ï8dëmïj=GǪZ;4«o0yçsð ¡	ãYÓ§*û_•e™¢I’	$H$I ’A$‚I’I ’A$‚I\Ò
+žQÝ Ai<m	­„<r¦Šrƒf*qßZ[/¼L³rû»Îõî¾íñ$0•$ZÃv¦¡˜Ö®Êª5ˆj)˜uyƁ5¿^:wࢼ$yœ;Ť€tc°ÛA"ˆÁDˆ€ÑsÍ‚OŒ;¡Ö#àŒbÌœRA —ešÑ¤~#½¦Ë@½àåoX9wð@cGŠ’(ÑÉÏ\
+’HÌCvÛÍa†e^Qo+†þ ֻÙçZOnûžºO°
+¡¡Õ\² \SÉA]uc΍G’Ðp–4m¹¥°‚á	ŠLq
+½:’ôÀB_¥q ‚^Š#LIÀë0Bò¤N쨖yµÌZ†hU°xo¤€k‹@Cà „âX2C[(¢0²ùÃ
+×Pì¿:4î³Ú"øé
+•@S¦í½RPe®a€\44ÔXéeå®Ûº
+J²ôððoF7vx•TqÙ£È›ŽƒUu*;‘–^Êá	Ro½()¾uªžk6FwAÓ\·.œk:0§EjÌ·˜amfã3
+f´•­FÍ*c„Íè3d²èç
+HP7ƒ
+@`‰d’N’HÖÌŠ\Ä0mA=7zé!ùÄQèEàYE]–néÃ@æhÓ×[G2C…«W´*÷™
+ÏrÄ9âm³…”v̉ØaØ<”êHMÉ&êÌœ9mÕQ!áÕ|'«ÓÞÁó)ˆf&h¦®À.ªVŒ…Ú5‘ïakEôÏOÅ61Ñïäps›êcàÕéìø/:Xá x89ÃÉøú;ÙòðA}Dà^ñ„KK<+
+‰ÆÜÌÏ“«Vœžm*ã0 NÙÍmï]M΄I ïPew7cî$BI$’KIµ¦öI“©ÐáA ˜’%6Ûl6‡"mɹ6h&m°‘/J…
+Ôf­”PT„+¸vr>.$AÙ„êU±(¡Ç“&VèÒ	
+ –á¡e¦W6LÇq)†E‹K”µÁL×K$‘5k¹*ØÝS1ëq
+Á‚"³„½‹VÕ¦¤FäwsÜ0—b«jÝÙ­¶Ú H¨ ’Ka ·.µ]×6f¤†¤5™›šÖöä„’IJ ŽpÀsƒœ{½îwðùòyç‰/<÷ë× V[JfzzóÄ=tÎ.­égÈÆy‘#ÅFãμÄ"BÜ`稳ׯ́ñÏIï›ÜóÀ½ŸÊ·~'Hî?Q¶’m´“m¤’A$$„’	$H$6Úm´›m$Ûi&ÛôÁ>(šI¶9ÚY±w2¤Ü’I&ä”Ù'A¶Š!¬¼ç	K£páG<_š­ÑãØ"èÑÞ¥¥¥˜64
+-ÒÀôц-—m­ÐPܪ„ÃÔ¢yª»»ƒêg\¤r8†IÔ‘@>Q¼A
+M»I$Áš&èçRfï×,îpßi$(um–X–ImÚwƨ!*¨$!
+›
+T™„9-…÷Uwi|µÈp€ÂN(5„Å„Ô4 FðŠRgZ®ïFoÏ­_{zæ F8P•4
+HYcm4Â%+D‰MÚH”HÒ]ž|ä—¬³2¦UVèkËÐ6@#E%ê‚͐äÊÝI	©±⽡|=Ì¡°@| ]Bp@¹™F`…̳¢a—…»ÆêÁÎG3œ£BBÂ'‘œ%#¼ñK`M9…ÍœÈéËÍt<ë
+x³Ä;ÍÕ–}:£öÀ/  =¢/“ž¯ ºÑš„ÅÃ2`•p´nuUB˲’¨×œTÌ
+3×’YrË«ª¨Ì5=—É%¢^˹+fI!¥	áð˜?¦etÂÃÞ !3–®¼Ì00ÂQWF°ÆÖaAvR¶‚ËhQm‡v
+Ö‹T¬’ª°ê ØÁ…Ò©{­õEæI•±.‘ãC®´켘w|hÐg{!ƒe†¢Í&$.ÃE¸6…”àà%A•n'4¬(†
+!P…'$³’­••Ux|á ì|çV¬­ê‘¼cDB–›ëšï(×|²½^fYRVXÈ7		$aBXBîÊô³®íåÏQíõéëâäòT¼ëÄ޼󝈻DPö}z£Þoàö¿£ Ø>N¯gIÎ5‰½ØÔIdfawÕV)Is0mŠFÐg+’N$’¬mèd¼…£œEά]êO)$’I‰$Å's9	’K¢¨‰@h ’I$’I41˜ƒ
+G²MÒu$£a¶JQÃ+YŠR¥¡ ª41…Ây«‹‰Bâ#XQI¶“(¸–£‚bN¬6U—SÅ%J‡q´ÜÚÌ8ÙË$9DÂòæÙ%u·»™UÍ’ãMÔÚE3‹V¦h6)¬•º­yiCMUná3„×5ª“H6ØIA#R	‰*5Vj¬e7DX"a-†ÌÌK˜I$“›Îpsè­Ùlîw{wçÏžx’óÏ>=zö  àÎÅuøç¯„5߃ƒÄpÖóG|ðOÃמSÁç”Mðá‘zXaç©åÓÆÛí\9å²²­`‚sÌŝ>ú—
+8U­´“r	$H$I ’A$‚HÒM¶’I¶ÒI¶ÒM¶’m¾Îž/ 
+GŐq„Ý£5%ŒNs‘
+a²)çxÑ^s­!¸Î Ò’ –ºü©k’ôÚê‡enÔì†Så[¤ðF¯Á$»ä4°H‘¬s<•3œ;vPxý&I^–NÉm¥)Gv¥êÛ[»luÕf»-ÑvYß4ÇnbÎ÷nʼN\ ÄސpqkE
+÷pù;ñ/žŸ©ã\ Ž8¨x;x*¹º "VH‰87”ENðtàÝôN¤}zwNúç¯NN!è7§s˜0CPú]5Ž£×6l6hÜ5Zt:4d&¦3“P>€Ðl]Á°K	'”ž%3;Í3LÜzùà¿‘˜7רàç ÃqÏPk{
+›*ë4 ’ñ4jæhEÐ^ˆhÌÏN¦‹h»*ÔMhÖ—3“qÔI$“„’{ÇÉEÅ¥`Ý—šª9]øÍç™vòŠ«@DPúN×NcÕØ–Aa ;÷D¡K,Ô´”‘O°‘àR²I$“D’Î†&úáZ¦‹1DC:á¦ü÷‡¡¾‚KE˜4ŠÕV«Õ®«¬E¬Zª”‘¡%
+JB„(¥½\³2Ë•tPÁ¢	Ï$’bI$J™é‹ròW¯@_Rt•ãsBÂDzڂ]
+`]¤²×wŽ
+`BìP[j“Ù7ŽúöõwwÞzš¯h‹g˜Þç;ÏL+»½“ÝA÷o;{Ï?^)ÇÞþÏøÝéJmµéçêÛÇ­®½§­ëqðXŒcŒcx1f½tÕDõhÇêb_`#.ƒ~GBή<Î¥æ Fžð´’ïW|2EåÙkÞÎÎgíxwÅsÉÜy{ñù¾£9߁âø!•ñ¿>7æþ¿¶öÞǯõvˆ…1’I$   ‘¦"I$’         "!LD$’I$‘¦"I$’HˆS	$’I      DB˜ˆI$’H         ˆ…1’I$’DB˜ˆI$’I"!LD$’I$                                          $D)ˆ„’I$€                                                Hª„’I$’©
+"!$’I$ˆ…1’I$   ‘¦"I$’      ˆ…1’I$      ®ÊSÌõMí®)µ6ÛÖ½5¿­Yâµñ3âºó_Zö¿° –˜}<;€0ô±;†xçP£D%¾=?:'£FÄìÊè€  õ72:~=ær=« 6x=%|ßà89ÏÏ›ðO½÷=ßc½úMøîüˆ¿L ˆ¡÷"Švû‡Wëß³­íjÖÖÜ¿<>VŽ1ˆÆ1Æ1L_ŽiŽiŒRü×x[¤.ø'o‰.³¾v O!âi~wW¢ãçGˆa²ùõëÑpvzyÙë´Œ9žn“«¾y‚,ÌóãNçG®êñ¶’m´“m¤›lI ’A$‚I’	$HšI¶ÒM¶’mªè¿Áô89Ïj÷«ÂfP¹þÜeܨz9ìå%ï+ÞÙÜ»ñ‰¯.òx…Ü?ƒœ¢þ»0Å,êŸ?†ú½£§&á}p×µîë8íÀª[Òu/
+½ÇòwõïÀ"ýg£ÇÝ>çò~/òRÈ>ê}Þ³îéù«»+äÏ×uËÕõßë ×ÚûZüìú™Ž6Ym´{ÖÛm4×ã}x§ÔŠß<üã2¿wˆ~®ûßmá
+¶º3‡¤‘*)`•‚%‰%5d©Fk{ï`i¶†týK~æëÞÒ(»ZT¿œ"«Ÿ›üýÁd‘DŸatþJˆ*0?é×·¯¨Óüä}gû7_©?_ìJ  öçÆžù¦5G¶B|ˆïá4õï`½Ç›—n‘Rãðþº©~so6{ÿ§ù#ôyôÜ?%ï©^
+K¶„ˆ»€:ÿòÎÍKèIq»¾V—û)//Øùè}÷çhþtý?×uô’Ýü÷;ú¿“û¿ª¾}¼×½³L?)D=oÖ~Gø¾öîüZÉ	p:‡Õ~ìƒÜ‡L¤Ûêó‹>ËÙü϶ô77I%'v¢wE{OÇ~—Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm´ÛM¶ÛmÝÝÝÝÝÝÝþˆ~ ßèªÿB/Ô*ªƒûɽý}þš—¹ô⺕ÊY³™Å¶¥¾¥Äkzp
+j“A_ÊU'ªnŠúë*^Ç„$£`<W©¯^Þ¥ËÌ+ù¢´ÔW¤•-Ò“æùj^¢Rw­õŠÆ1XÎÒiÒA$‚I’	$ZDH$I ’@´ˆ$K»ª«»üÐ"þ«ÑE¡ÑQíCìZ[V*^«¢)‚½NáZ
+Ýy¼@$£ª+,¹¹¾é~“Íú_7­áy?åû^×ÚëS3?UçÏŸ>|ùóçÏŸ>[m¶Ûm·çε33ZëZÖµ­kZÖ›m¶Ûm·ç®ºë®ºë®ºë®ºm¶Ûm¶ßŸ:ÔÌÍk­kZÖµ­kZÖµ©™š×ZÖµ­kZÖµ­kS35®µ­kZÖµ­i¶Ûm¶Û~v¦ÛR›Sm©Nºë®ºë®ºë®ºëϝjffµÖµ­kZÖµ­6Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ÛÖµ©™š×ZÖµ­kZÖµ­kS35®µ­kZÖµ­kZÖ¦fk]kZÖµ­kZÓm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ÛoZÖ¦fk]kZÖµ­kZÓm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ÛÖµª×ZÖµ­kZÖµ­j53b<ùóçÏŸ>|ùóçÏŸ:ÔÌÍk­kZÖµ­kZm¶Ûm¶Þµ­LÌÖºÖµ­kZÖµ¦Ûm¶Ûmù뮺뮺뮺뮼ùÖ¦fk]kZÖµ­kZÓm¶Ûm¶Ûm¶Ûm·¶ÛmM©çoƒ¥½R•’ªå+$¶%y¼D£2RkºªW*] 
+qŠÉRµ±£Á Ú+Š¥ÇRÔ4©hšaD£…Ks7 oöfþ:©l©^ÎÌh¦EGUª]-.ïw»ÝÐ’A$‚I’	$H$I ’A$’H$I ’A¢¬Roô™4JçÊÔãJªxº¢´U'\V§?`Wˆ+ŤOSR•â’Ê¢Ã÷$´šff‘Q²š-OÆí®²¶õzÖײY© Ò¥yjš)°ªa¥#E”˜ÕJòh¶%bU±½JV9¸yûzMíê–Ñ\b´JOW(­“h®$¤Ò”›j&ÙB(P¢üÁð]Ýü™—wx
+¡™™wm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûi¶›m¶Ûm¶Ûm¶ÿSÁÁÁÇÖßύZqñªIrM%'‡*\î¤Và4®ÄWÎm ð®M =. v²¥ÓÎííÙÅ*ª¡]š–üèçóÝüÅT¸‚ºõ-YÇU.²¥éŠ(¸ê\â½gÅâTº!%ž-MEq
+íŠÊ–P™E†Q^׋›³¿³Ñ7ŠÌëÕJñm”ª¨êí ÐWhWhW“\ýsŸæÀ  ?9ü¿$Ëi–Ó-¦[L¶™m9wW.êåÝ\—W.]Õ˺¹w__…^…ét©^{¬îõÅuÅyB¸ê¥õâNA]Ñ\œ^4¤ëÚq
+ò*¥Ðgn¥¦‹|$£xWfQ•.Q[ªYRóÿÉésä}¿·ØÙÔU'‰ –T²äúí—*ªU,
+íÔ·
+Ò)’•UeK;‚»jVvԮάpE}Æ
+ò!%MK²+T¤îlÛÅÃz¥é÷Õ'“T¦äWãz‚º <¿
+¥Êêº 9Åk¸Wª4ƪ”óý—erÕJáëÐÓ¿)1Öáîx9Žþ•K¸ŠñR±E,*ÁÐÙÞñøÝî¯]DÁX©ff`I!&d’H fI$’I   ⨮Þ
+·<!ZÏM	(ê¥'5Rs\ÞÍT¦ú¥èk´«x;b‘r𵧇Ùü`­‚¸*LJïstlßRâÝá0V®> ®Ç±ðÅyõ-·ÂJ2¥Õ±*=b$£9=­¶¥Ð©99Åv·Uh­UI”¤ã©u¶T¿{°Ü¥wùhßRàõ»öÅoÙ¯ ­j–¢²©>{Êu.XIGrÊ©]ZUJÑÙê
+ÙÚ„”wå'{¯Rô®j¥4`¬à+H®¼A\J¥`®h®ýJ;§-KÙkøÊEÑ_?å¿ûà}ßo­æöôî½6tÔ»áYQ;Ý`*ÐÊLñEiµH·T·T´©y;€8ê[>yQµRÝã€lÅ	(áßʪ·*–6ª^0¯Lê^åL±fÊ%¸‡.Ð®Š©p­RÀXIG–ßÛT¶*—wJE‚²¥¯‰T¹j^5+€†+°+Åß(”~Né”›jC±*Z
+áÒÊ+Ο›tuE`­y‘DœB¼ŒªZÔª£+ìÅn Á[~ƒ¥RÜ¢y˜Döt]âYE¡†QhhiEv	eE†T®Â¥¦*ƒE†Õ-qJÙæãˆP£\ŠÑÝÔ‚£ÏD”jÙ†÷EKÀŠó»¢¼A\P’â¼*-h°Ã“¤V€À®Z– hªQ»*¥ÑÄ+ÁÀWwJÖ¥À+{˜V*•¿–QÁRj+ŒWÍ |þÁ[*\<W˜Ï[áT¹EeKª+A^ÍQÁÕìúÞÑ­UUJ—`W`W@®
+ 8 kRîs…rª[Elã©qŠù®×dWTVÍЮ¯*î€j+©T·Ô±RÊ—@­â¹µÙ(”t€6îH^?¢º<II¿š¥Ù`ªº‚°ýT½FkÐ+±ÁJõœ`T»R¥àpQ4”™Ê+
+%öQñ¡%•IÐä©v8Åru”
+-•.šUDÔWtW 
+ñøœU/eÔºÅ\U/8Vï9¿±õ›[|j¤ýø®&ì
+ïwˆš’Ã©tJMîZ—ÎíªMâ¶<•*¦Ž¶sf2ßî…hlõ_Ù÷môfJÙY’XŠû¼{
+ý^Zß—-·ôMkWèŸßI$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’HI$’I:úím÷×AìŸÔªü{Üý·÷Cò4k¿†ƒ¨ä„¸£üª5?ï?üý‡ì?œáÏ0÷â\„QjŸ_¼ýÐüýë¹Ü=è~OöÿÜþÛçüÿŸÀϽçÎzHL‰sÝ™?–ü¿ô?s£]Cèàu2B7ÿ'ç^§ý_yû_×ý÷ó\8ù÷¨=ù’¸{ðû¡ö×Ï{œÎ¤&A¿ö€_ËýŸèuûN«¯ºñ÷Z4ëÜ úY’|€·W>»ï¿wOPóT at I’eÒŒ"V3$†ÌQ4²©e•ŒŒ¤§W-*Ye˜JÅ‚¬ Š¢AÿÏö™Oé~Çñ?I£H(’@Q#”••ËšU,l",Ê)™[mª1µE­‹[U¾ö(.¤&Aõ÷k'Öþ_ö¿þèÓâ'%ÈA¸ñçò?sø_a¿°þNŽýÚ=è×ó /¾¨ûù퟼~ƒó?eÿ†ÍõÇtä„È /¿øòåþ–¹?ì3ƒÌÉ‚5ó*–’“\õüÿ?¹üÍÝ̨(âÇc›ñ·1·CgÄÛR×$LÊVT½f4%sç¶úÑ_cÿó’e55-} JÅÿÿÿÿÿÿÿÿÿ÷½ìþÿÿ$y §ç€Œ,ÿ¢gü.?ž
+QóáðضßwxÞœ >=   @    *œÚ¤’B@(¡"TŠŠ$¤ôR€( ¤ Òê¥ à 
+Ï(ß`f1ð΀       à=ÝmÍH
+Ü.‡¼ 8 ãЭæìDz÷˜- 0BðÙÉ’ŒEˆô Pw}àzŽDö@–UB‹ ä 9x-ëh2Ád <         w|œ€ °^Â6b2Ù­i â4++u…+k&€: o¸ÞÕk(¤ `1‘Ñ$†K`:C Ý‚›fÛÁïç×€¾Jå   aj at -€@     ¶Ðdö`T‰A(ÍQ‘ii¡¦˜M0'¨Á4À &F€b
+ iˆhi‘„TÿÒJ¨¨ € €   €
+Ä      ýµUII¤`                   	4ˆT!$h)êi‰¦˜ƒ@     È         4h)!È	„4™êž¦šOMe=COHh1?R4ÐÈh=COQ¦˜šbh4i h=&i¨ THš„B# i € hh   hÐ4       x?^(£C²{CꍽMò
+Ym’J„N
+$,0~ Ø6¤¦¥J†ÃéÉ}1¨~–èä8QýZ%’ZáF$¶²K„kF
+”oa˜©~,l£Ìà7ªÙ™ŸÐŽ‘·HÙ	$`HÀXÆ1YTbŠ!@@ú0 ¬c¬Ub‹ôQXÃè‡÷2%	¨¨ˆ †¥EŠ4h¨¢ÖP©ij·2F$Ð¨‰àó–ÖZaePØ0£”–q£¤al£%a‹ñ#î(—	‚M“
+7M¤¾›uºÙFË©£D¹eDöK•‚$“îiiiiiiilUUUUUaa!OÝ€pA‘…C#A}hÁû1ÿïµ¶Ûm¶ÛoØþ3òߣýGê]û¯AÛâ=ÖúŠöüJüºýýjþÊÿ¢ó»Öùçžyß%û^ýUUU¶Ûm¿¾Ù @ý×îUUUV’0Œ ¾Ïé{sùm³Ÿ½¿Ùû|_/×ïåÙø|·ìÖúíø›¶Îï×ß»èñw{y^}!çzþPëyíÍõîo^»]ùC¼çûã­ç¯øo‚|{{y^}!çzÿëyí›ëêϏ^»]ùBàÏ?æo=u¾¿®<zõÚïÊàÏ?¤:Þzƒ×ØŸ½y^}!çzø#­ç·[ë᏾ÿ]úûw~«öÿÏ~ù~½|þ¸~¯3ùÑÿæJ-¿ÓÞæ½×¶k_Iïš×οG³zý
+ý-·¯É¯ñ¶Þ¾íɶõö²$?_ûÿëôUÌÌÑÝÝs3]ÝÝs3\ÌÁWwwE\Ì1wÁÿ
+3s>ll–_o—Ѫ©}Øûáìh6¨éÓ=÷ñGÞ4û×¾8ëõ¥p9¼`n‡1”+¸eR„í
+£ãѺ‚>_Üéòõ¢WàëD>èë~7ªTº‘y2T8u³Éózþ¦k7âªT<ß;Ïχ>v~†—:¶×éfßèÖ«ì5þ¼ÿf}ž·?ÝœêPO¸×ÕÏÙÏ£œþ5ûYµDEìŒÇøÐ~ö1RIlÈQø7Û¿"ÓUµECvTUbÆ+¬bÆJ ˜Å™*ˆ¾Ãö¿Ãðü?Ãð}§Ú|Áéôú}>ŸO§Óéôú}>ŸO§Óéôú}>Ÿ‹_8d(¥÷¿#äæ~?ßí·äo™¯ÈãààyÈÍæg)¦EØ^7rîîU2If·Í)rê‰]‘Ô»m×Û¶ÇœûV’œY]¬Ý½×:8¤9ôí¼ýéƒC–dzs¥!Ó§Ôæp©ÜÔ9œ¬ALk½,³=ß'\,§¸è¹ô{åÑTòë]ÚℾÕ,NÞÄTÓ¼ž'SÄù<O“O¹7ÝɧܜNbÅy<O“îîO‹Ééj}®'‰ƒÝq4ö§‰òq8›îäâq<]Ëow'uî´ú§‰òi÷'‰¾îM>äÓ¼š}Éâ}é'¼œN'‰ù7ïrxŸ'‹ªÐ"}ÄM=Äêi÷'‰ò{®'‰ðñ2ò}ÉÛjoo.}y<}ɧy8œMõäû:÷¦Iäñ:›ï{î¾’{¼ñ?&˜*©ì=7¢xž¦Îäñ>O¯rv¢'‰êxŽZŸr}ÝÉÝs{Éâu=Íq7½ÉªbÅjx˜›/&'918ž'Éìê-OÔñ17ÖÔû5^4î²î®-Ú¯-Ý‹¹tâM¹¦î®
+ÕgoBR©b»±·Æ1^¶RÎÞUXÝÔsjÅCj±Ëª™¤³V¢ªu†é±tÛªŠ‹‹e+mH·vNœbµtâj«ª§Y,6uÓ“½»ºÛÃ^ö:‚ôG ¶gvw]íqé^Ž­ÀF
+p—œk@lj‘Ód–úm¥ÜÛä»­´8ªÖß7Ü—w[; H}Ü7ÜÖöwv^îîæß[n[d‘Z•­»…îîä»­µ»dݽפ¾m÷^æß[onê[; ÀëmmÖÝËÜ—vws}Úß6ù·Í¾Îîîî’F»’î’LëÙÝÝÖ¥kn·j]Ákn¶î^ìî亮|­©[À$IÖÝà—A¶ay·Í¾Îî O¶’¶ä™ë»¾Oo1Ïí—	`xÏy’säOywGT‘ÝZH>qev³^vtë×¶j’§mçœóX=œû£æÒ˼2ÙÁóœ
 ÞÙF5fÝÅwkTœÃk”®ºç]VSº#­#å$wV’œY]¬Ý½ÖöÍRQôí¼óžkZáϺ>m,»Ã-WoÕ$wV’œY]¬Ý½ÖöÍRQôí¼óžkvç=}ì¾µNï¹yÞç³¢#ÔZ.‹·X¦£¯G\lIt))#íZH>qb·ggou½³T”};o<çšÖ¸sî›ÏRÊpγªíâ:¥Å¤Ñó«9÷3žÛÓ¯lÕ%.ÝxÞJf»Ýs‹8Ám'^ÄùõݹmÝî“.PÝÍ$™N·/·sN‘.ÜÜ7wt»š‘ܰÂî†Ì$d™¹½ÝC:ܹs­ÝK;u*S··78$ÎÍî ¶d‰vÚ§<›ÙÙÀîêGå$wV’œY]ó5ç³§^½³ÊN·^WšÄ-•û£æÒ˼2ÙÎ'$t×9ÍÕÆØâ’¾Õ¤ƒç {vvv÷[Û5IGÓ¶óÎy­k‡>é¼õ,§ë:2÷uç^R—ujèvÝÛÑÕ$wV’œY]¬×:õ횤£%Û¯+Í`ìGt|ÚYw†[;w+	ÝÊîÕÖ¹G»Þ7K»ç»ÆVÃ}¬½Áh2D»vKA½êjœ½=Úvùží~0¤Œ6Ý}¾í¾ÞÛ¥žëIÖM¯wv¾ŒíµÝ|Ûo#i[”Vì§uÞî˵¼oI¥×‹xjnÎM#ªXÜZM:±Zö¼ííé×¶j’Œ—n¼o%5ØŽèûœYÆi;—oÕ,n-&YϹœðΝzöÍRQ’í׍䦻Ýs‹8Ñ–ÎùQ…vô§nöu»½Òe¶ÐÂÉ2m½C·6Ù7pÞÝÛw"Ó’Ã6ö†Ì$d™¹½ÝC®\¹s­ÝKx´:væ÷^ÝÍÍîá»¶Ií;'L›ÙÙÀï'Äé¨ì±îææ­ÍîvÇ\êã·:e[€Ã¬záq+›[ÖnºÍsžšúwd|œ{šNÍë7XÍo£nlÕ¼†Ú´éJ÷­Ü/^CÄ`»4ËuÕÛÕ!ãÈ•Úá©dliC,qîë·*¸T$ì—’Ë9U¹».rì»ó“Îç3SÍÛÐǧ¹zyñ¢ŽÃ:qž¦CŽåð¾9ÛoŸnøæéwKº^%Þ—¸ot¾Ã{qîãÝÇí¸Å{\*Ý7µŒ×+Ó_m6
+ºª$ÎOä]…3—a~ryÝ}óçÌÃ*¹oc®Bʱ\õŽöwsw%çs‹$çb·-Lê|XUcåçs|¦>o®wGN×Ï“X^qd9³'sǏ¹É“±.ÎìJçrÎìîY9ºe±³¯wëÃ(šÍ£‹![2w5ÙÝ‹wbë–¬iѽ
 Ü’;ÙÛÏw¶–>m,u¾ìîŽ,œ°ì·_‹'WNæ® Ù“¹÷gtqdèâÈFû;µãΣ}—«Š^Y%qdîqd9Őæøg½_ðæ=sð‰ßap_õ·ÙÜßww7-×N™Ý^<îçÏ:ë‹3½¸™Í¶ž÷‘=áñRù;ßRžôzd9ãÂ×»u-Öv[¯VIˆÜcÕˆËÍ¥›KFû;µ×Ïst.8ߠЬ•+J‡5R¡£ªW5Dd¦D¹8×>”’âüKÎeËooy¼ÝÝy¾ç·=qÝn=Ê›ujs¦H”·ué{¹œú+uöÎnä“b±V‡‹Öy/²™i{{Í7bÓ{{g8·SÃ>$“n)6•í™»·yï{מ¾Ç½ÛíÎn怑ÀaÓÁ ÃS–ßfa˜a“3&wttÝÍÝ™&¬ÝÍ 3w7y˜vj“Me¹rÛL0èa€·uëÙ7sw$É$Äž`Àº£Û-(w.NY»M6šg°.ÝÆ3p›º#7Ü¢lå;‡:w™,ö^›Ù½óaó»s°Ã³²
+™Ïsƒ§ikÈúÝ·¤›^îîînÉØÚ‰gÌøO ¨ZÓ­jy\˘0ØwÖß\̹2Zåîh›n뙩jåʾI¯ã‰=uì“´I(̆mÁüÖœÝn(-·züå^ÝàaØûw¨÷´Õ×U©F[yWEÚIÝ­sì—+äsĹYNÚQ¶¶ÍÒìèç+’·2HÍݪ|KÍní713kw7
+;—-«mÔå­e;o¶s›îîݹÏ{ºk¯‰»\(‡†¾:6˜¡9†¾Ÿ$y§3{\íÌ“ãY&XbÍܪeMf²dš®u3›Ù•çfãÁôznðúIó¹Á™×µÛd×Ê]É4ORÕ—NçËž³^òlêhú|‘—‘GkäÍÔ²L­®ù:³«ÞÉuîãÜ
+ø±Ù‰®™!{6åÙs¢S#msîãy¹Š÷qÙf»7$·zɯ‡'wr¯Y¹½&êIpÝÇQ†æŽhäÇŽa—w]w2îÝÜEdŒ|Ðæf9Ë®fgɘžD”ÜÅ
+ƒÔ‘ñ‹tÍn=“7rð†l“`Ì–ìvAnÏ™.õuƒ­ÎÞç­½zqª÷fòê„MØúÈÖ׆ï
+Ì·.î.œç8wµæ™‹m‚Æ@¼I¡dŠdÌs+”±¯‚†Äµôù"a³qá3$ÆÑÓs‹‹7r·»’>wÞ¦s`â“$î6ƒÞn+}›Üì6½ë%}µ½ç{fv«È3Eµ0Õ0$š÷^ëY—rªȧPòW=žsîsœæW3÷2ßn˜jQ’w‚¨÷s2¶­·œÕºÀûz­Ë³ƒcùó3²ôùŸN}¯w³@H^#홺ž,ÊbIb»$iôj8œ]¡Ü·ªÜ»87µfE‰6«O#l™ªèlQßRµönM»²ìÝ6nšsMÓuÃvnéÎp¼ç3œ¦›Ëw6îîêÝà¶+mË– ë—ÜÝÜÜÝÝÚîn黆Ò´
+3´¾pŸ¬Ä£mÄ·f´“ÖÞææ¨ô’À	.›Q­½y'Z•fn –Cæê›[»u]ʸÖÊŽ”½É™ƒF½ï2pyÍÃq¥/°×
+¡lMÃri€–oSNhpȝÉÎŒç½Éí‰ìñãÞӝ<e!•/G7;“ɶ½êî‰ÍRnnótÝÝÓ3©V^ŽÐZZ«8÷¼æªB×$Ù5ôÉ4915³$JL‘«³touÄÓRd–°Ú÷ˆÝk»†-[¯eÚ÷¬‹Œ[Üìyb#Š^µ,*¹»ÍÜójîÝ®æîî8«!ã¾ÀqOzcuÛ¦­‹C·¶s‹u<Ú’J·É7ÍôÙº·^Šww3¥Æõê¼øÂñÜí­àÂNܝ³^5©¥µ$”²j“¦H7º÷€eîîg>ŠÝÇÛ
+Ùó;/LÌY;£ºÃMØ´ÞÞÙÎ-ՏfÔ’U½R<m+Û&î½;»™Ï¢·_l7g|øò¥Æ£jzæg·0Ì0É™“tÓ¼äyÜÞGufîh›¹»Ìøw&©4ÙÖ[—-´Ã:†w^½“w7rL’LI€…ÕÙJPî^éÜœåÓi¦{íÜc7	»¢3{Ê!¦ÎS¹9Ó¼Ég°àséÙ;;çCçvça‡gd3žçNÒבõ»n7I6½ÝÝs
+ÝÜÝ’9±µùŸÀS§ƒ@aªù}˜Û†Z[r‹q–n-Ýxæj‘ÍÜK ‘ìânÇc[¸æé8É!Ç77¤Šnêo^´Þ­Šf#jÐS
 J%íRÚ)mëyK—6ꦗÙ9»Ý»¥æ™‹bÛ™q3ÛSMÁH›Ñ½z>–åí̲í®Ë·öš Ùm禽Fì›DÞhŒR9»‰ö¥vó33jæh•dŸÈœùoÌÉð`aÀ–qñÙŽW„0#ÑqD`P:ïtcì§Hïz\‡)¦Êºi&és É‹†ÌŒ¡0'Hc½«n%Zäá6†2ê²Üu5,ÂhœåoŒÅïI Rå8´˜NÈw&Þ•)‡N²d·†	dÉ; §w¸¸#˜²çgHl—-ko&FYèJu6ô·4ÌãƒdÆk4¬‰‘Ëv䫊té
+$²£•áD¤2d/Wz²çN“H7x`”™'BPé§e\8àÙ2eºtÒ°hrF9[Î35¦^HRå-æ
+ é:»Ò¹^öM¥qxT²d!gGNÌΝ“d)W8`”˜NÈS«½Ys§I¤-q·†	dÉ:Jwz\ïCIKœÆ†BS»Ó1ÂçN¡)r–ðÁ(INïKèi)s˜ÐÀì”êïKì6K.s‡a{½3½™sq³'BPé§e\8àÙ2eºtÒ°hp˜q·&[§&L·NšV
+&9¾3\á´ÅÎcC¤§w¥Îô4”¹Ìh`t”îô¸p0.f40:@³Œzò­¸•l8+‰V™22„À!N:´½Ã0à¦&\ÆÉ’vIaǵ9*âÄ2 ö(á“#,†ì…â÷‹.Nv¸Û†	I’t”çx\8N—3W
+ŒuΙ§F£ŒÖSDç•p8BvUÃ& `„³Œ{Å®4¡ÂIÒ¸–á‚X²÷…K“„¹KpÁ,™'INw…Á„és1¡ÒSápàa:\Ìh`t”çx\8N—3’Îxf†IÙs1°Àè)Þ,«á è\¶™22Â%9Þ¥ÌƆBYÅï¸Û8é\mà`‡;ÉLœ“ vW2´˜N‡;ÎrÆÞ´Ã¤§{ÂáÀÂt¹˜ÐÀé)Îð¸p0.f40¹»ÒS§.[aÙ€t¨å´É‘–Ct”çx\8N—3
+s¼.p0:d2t’‡•r	;Q\2de t”çx\8N—3%9Þ¥ÌƆHS§¨å¶	„ÊŽ[L™B`N„³‹Þ-q¶p	Ò¸Û†	CC‰Ž¹Ó4èÒqšÖ®8&GUkÕ⍣”¶ÚN `²£”¶Ú`ÑL
+s¦iѤã5­\4q1×:fN3ZÕÃG48šdx1\‡X$Q°ô2D“戉,ÅŒ‚бñ eF¢VV’0b±ŒX²@:‚0Y ±a"Œ}b-¨ˆÊµ­1E`"ŒP ŵ–ª£Aw…™l”¶Â7˜ªT>Š:å\°-•J†Tª‡ÑU*RÔ~°Ä>|eU
+}1‚©SêØ‹ðõÑôœQÔZI×LEr*\Ž!Ä—)ƒhoV‘‚Á`Éb ?`·mJWâà©3*TfJFe*LÈ%™"™…#2•%.1Cç;“Š©8bfULÊ00Èc.±ÔRY…IŒ©ƒèeÇr*mMFK«aôºÖ–•bÂ1`X±²‰¥áZA‹õ‹½\,HbY§õWî½>¥àûÙ$Þ§UÙUUN•ö
+ªªþjª›UUVÕµUlˆ‡àœÁ8'Dàˆ¶­«¥UiUS¥UUiUXªª®•U¥6ªªª®•Ò /$Ñ€ˆ#$ÁŒz(£¢h¢ŽŽŠ(è£ÑG‚ŽŠ(èèèðQà¢px½WKUUV–ªªªªªªªªª¨ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª«KTû/ì“àʸ•ZŸl«›‹fïZ¶n-›‹fëmo-µ»Û•q3*âfUÄmZ«R«Sr«qlÜ[7–ÚÝè¶n-›µmnmZ•ZœÊ¸œÊ¸Ê­J­y•sqlÜ[7jÚÝê[7ÍÞ¥³qlÝê[7jÚÞ[kym­Å³qg¦UĪÔîUÄÌ«‰™WU¯–ÚÜ[7Íųw¬[7Íå¶·[kw¬[7ÍųqlÝ«i9•q*µ*µ*µ*µ*µ*µ>ÆUĪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪԪÔùï­¶ÛmµUUUUUUUkUUUUUUZÕUU­UUUUUUUUUUU^¸*ªªªªªªª ªªªª®«ªô Õ^€ªô Öµêêê רz‡UÕz€M¦˜=ߌ&¡±†Ä6Ô6Ô6Ô6Ô6Ô60؆Àš†Àš†Àš†ÍqkzPØPØPØPØPØPØPØPØPØPØPØPØPØPØPØQ»5k`MC`MC`MC`MC`MC`MC`MC`MC`MC`MC`MC`MC`MCa„Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6h¦¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡°&¡±†Ç–óœÍyo?L?Ó“Ã'ë$
+2TFJÅ“*²eCL¨bÉ•Y2ÈÁ¾Þ;ë<ïC^\·Û}{gmuÏ0ú£ëC#C½²M5ß%ê0ÐÁÚ‹ŒII9T=9ìP“Fî±$‰:‚àÓz€Ò¿gäuT”Gµe#檕
+/Ï`Ùt¨Š½aô‡ôŠÚ£
+õ+"¾¤j¹í–,°­$Ío$$!d“b¢/¨~Íú_«úß_«úÎwÛß{ÏŠm“MœE”ÎÊoY%¾ƒ ¦Km¶Km¶ñÛ<I$Ûm¶úißH„[뀤Ûm6ØJlë¦Ûm·ÒÐÛxñŸ4 [ëÛæ4S<%$Ûm¶Û~÷½ä烋32~¶iŽ[1DÛ\Û†Z*Ìi…û³\T/,â3U•ÁÖ[ZY¦i€¦³wpÍ.šµ¶Ú¡wuÐÐvÙ–Ëw)¸k…håé!?y„W‘ÌÔ¢·Ê¥eߤ'€,y,4öÒQî®Ál9{¥Ú\…I®Áp¸Â8-ѼJä°(Å®”9.H•ȹ#’Ü·‚[–èÜ·FäSr܍ÖÉH¥þ1U~˜šBÊ/Ç12!¹|J©Èó/ ò¯1²Ù±±»vËv&Û6i¦Ì6˜TÙLhm¦Êm6ÄÓI£fÌm1¶Û?ÁDtté¸|!Gڍ‘õL†Õ¶UXŠŠÄF ¨ ‹¬b«TEˆ¨¬Eˆ*"Ì!#a\n?
+>DrŒ¦=ÁÈj=ÜŽú[©xA×Ìr÷Ç!ùQÀâ6GêC)˜c̘9Çb1!±Få´TŠ‹m•j•j0d'CãÖÕ¶UU[VÙUfÉn´‡ÙýdAëöGÑ­k5¬Ök.µ¬Ì2Q@K…  8ERÀ!, e
+À+
+ÀP¬!”°’Â$°ˆP@QFK :5  áQ’ÆK m­¶Ûm¼þ¦kÉšõ*§l—Êøß[Íí¼¹Ñ'ƒ»5»ÍÞ¹çÝvW5{O7™¬œ~µcÍÕÖ5$ÉÌ⻬.­¸á•<›Ö‰ïá}{Õ~t‡?>{–êæ®µÔ’$žžÞ›öù¾OšúüÝ×®þö>ž&Øõ…‰ŒAš®d;ÖètJœD…qÈÆM¤ËSæ:E«¶×!†<M±p‡±3ˆ3U̇z݁	Sˆ«ÙäÚL²!žc§mXŶ¹1âm‹„=‰œAš®d;ÖètJœD…^È÷&Òe‘ó;jÆ-µÈal\!ìLâÕs!Þ·C BTâ$*öG¹6“,ˆp§˜éÛV1m®Cx›bábgf«™õº§!W²=É´™dC…<ÇNÚ±‹mrcÄÛ{8ƒ5\Èw­Ðè•8‰
+½‘îM¤Ë")æ:vÕŒ[kÃ&ظCؙĪæC½n‡@„©ÄHUìrm&YáO1Ó¶¬bÛ\†ñ6ÅÂÄÎ ÍW2ët:%N"B¯d{“i2ȇ
+yŽµcÚä0lj¶.·ˆ3U̇z݁	Sˆ«ÙäÚL²!žc§mXŶ¹1âm‹…‰ŒAš®d;ÖètJœD…qÈÆM¤ËSæ:E«¶×!†<M±p³±1ˆ3U̇z݁	Sˆ®9É´™aƒ
+|ÇHµcÚä0lj¶.v&1j¹ï[¡Ð!*q{#Ü›I–D8Sæ:E«¶×!†<M±p³±1ˆ3U̇z݁	Sˆ®9É´™aƒ
+|ÇHµcÚä0lj¶.v&1j¹ï[¡Ð!*qÇ#6“,ˆp§Ìt‹V1m®Cx›bágbcf«™õº§!\r1“i2ÃùŽ‘jÆ-µÈal\!ìLâÕs!Þ·C BTâ$*öG¹6“,ˆp§Ìt‹V1m®Cx›bágbcf«™õº§!\r1“i2ÃùŽ‘jÆ-µÈal\,ìLbÕs!Þ·C BTâ$+ŽF2m&X`Ÿ1Ò-XŶ¹1âm‹…‰ŒAš®d;ÖètJœD…qÈÆM¤ËSæ:E«¶×!†<M±p³±1ˆ3U̇z݁	Sˆ®9É´™aƒ
+|ÇHµcÚä0lj¶.v&1j¹ï[¡Ð!*qÇ#6“,0aO˜é¬bÛ\†ñ6ÅÂÎÄÆ ÍW2ët:%N"B¸äc&Òe†)ó"ÕŒ[kÃ&ظYؘĪæC½n‡@„©ÄHWŒdÚL°Á…>c¤Z±‹mrcÄÛ;ƒ5\Èw­Ðè•8‰
+㑌›I–0§Ìt‹V1m®Cx›bágbcf«™õº§!\r1“i2ÃùŽ‘jÆ-¶Hal\/!of«™õº§!\r1“i2ÃùŽ‘jÆ-¶Hal\/!of«™õº§!\r1“i2ÃùŽ‘jÆ-µÈal\/!of«™õº§!\r1“i2ÃùŽ‘jÆ-¶Hal\/!of«™õº§!\r1“i2ÃùŽ‘jÆ-¶Hal\/!of«™õº§!\r1“i2ÃùŽ‘jÆ-¶Hal\/!of«™õº§!\r1“i2ÃùŽ‘jÆ-µÈal\/!of«™õº§!\r1“i2ÃùŽ‘jÆ-¶Hal\/!of«™õº§!\r1“i2ÃùŽ‘jÆ4ï3Üæîv»ÝÜÝÍÍÎnª2P¤@K…  8ERÀ!, e
+ÀK B°„P
+ÀK’À!A B‘,  èÔ …FK, &ffeÌÌý(I Þu¾s?FIOÎINýùã·¯?×W<îµ—.jë^½»kÛåðù_ó;æï}÷½÷zï”Þg|Îûï{îõß!ï™ß7s™ÌÕÖ´€f®jë^^^Zòòðò¿2$D“ßßÓß×ïöûòë'2µ¸æV·ÊÖã™ùw¹ù~_ƒò~MæwÍÞûï{îõß)¼Îù»ß}ï}Þ»å7™ß3œÞc´ÖÍ5³MlÓ[4ÖÍ1kLZÓ´ÖÍ5³MlÖ7ëëë>¾¾O§ãŸMús+[\n9•­Ç2¶šÙ¦¶i‹Zkf˜µ¦¶ÆãWŽekq«Æ®7ù¤„$·[­û}_Ÿƒó wñù¿6c–å™™™™™ŽË9 6sŒ¤²  p›-Î%œàl³n 6s€
+²Í¸É`6ÊŠÛ€
+œã):á`aÛ,äXÙÎŒ‘´äX £g8ÙÎ …Ý~yžyž}ß[îû{{¼ë×®ý½¼÷äàæ{swÙ-ööõ×·=ÿ#àG¿¿¯¯§Ÿ§¿œËj­¶­«m¶¨¨Šª¨ªŠªˆªŠŠ¨Š¨¨ª¨ªŠ¾„&*"ª**ª**"ªª"ªª¢""*á `f*®ç›ù›ùä’>µ×W:º×ËÏÏ_/—Ãå|uâç•Ëííï­]fh¬*2P¤@KB‘ „U,’ÀåË· , e
+Â@+ ,"K …!B,  ¶6D  áQ’ÆK ’Àm¶Ûm¶Ûm¶Ûm¶Êªªˆªªªªªªªªªªªªªª«„À„ÌUUUTEUUUUUUDUUTEUU\$$ÅUÀÀÍëzæVæ¶Í¶îîîÛ»»µÝô¤«Ç•xUS·§®g·3œÞfów9œÍæï½îûžÞë÷Œ>óÆÛ;ƒ5\Èw­Ðè•8‰
+㑌›I–0§Ìt‹V1m²CxÛbágbcf«™õº§!\r1“i2ÃùŽ‘jÆ-¶Hal\,ìLbÕs!Þ·C BTâ$+ŽF2m&X`Ÿ1Ò-XŶÉ1ãm‹…‰ŒAš®d;ÖètJœD…qÈÆM¤ËSæ:E«¶Ù!†<m±p³±1ˆ3U̇z݁	Sˆ®9É´™aƒ
+|ÇHµcÛ$0Ǎ¶.v&1j¹ï[¡Ð!*qÇ#6“,0aO˜é¬bÛd†ñ¶ÅÂÎÄÆ ÍW2ët:%N"B¸äc&Òe†)ó"ÕŒdç9ÎsœâªªªªªªªªŠªªªªªªªªªªªªªªü„ÌUUUUUUUUUUUUUUUUUU\$$Å]Ï;,l*2Éd±°ˆP  L©°FÆÀÈ[ ¬–ÀÈ[@l€[ ±°ˆP@Éd±° ƒ£P@  ËçžwyÝ瞯®ðÕúˆ™>Æ:|?¿'·)_1µ¾qQSÇ9Á\¶·—Wmϵv㌭͇õ̾ÖƳٸ¼å6,Pe³‰S3-¢¢¯‡½wºÝL³MõÜÎnw–`ÑéŽ÷Ôö¼žJ#ékSxO{.eU^žówËÏ
+9g}Ëuòº:+”[pUëžñå}ÓvîewÜ8Š*Áç{¾0æž§½8ðzà´Üñêñ×¢î™Ôê7¾éß[;…Ç¶½[’ç2ãÁpeiNSÜëÈîV·)]õæîÔ° p’BH<xÏvpáÛ4
+“Tšœ@9"£4­ÚTC	ˆáœ8,TU“dÑLwm¢aE‹8sfši¼ää“€pœ%98(EÃ‡.ÇæÎ8sfɲj“C“‚À8N"N*íˆ!$H*T*ŠY,¤¥IJŠRR¢Ë"Ë"•R”•R¬•b””¤ª•RªQP©‘‹!‰‰‹0Ébb¨¨©R•)R–K%
+*T¤²XYe*R¥Z–
+*R”©(©J”T*)*T¨¢TT¥J£¤µ‚QƒC’цfShÒÖc2sIIUïI>IS§]a¥ðɹª³O_²ü‹m¶ª«ù sÞŒù±ˆ´’ÚKt$ùþ#üßܧó¸y~ñÄžëêp±ºív¼Š‹_ž,ﱬÝÙ4õ™;fÛ)žq·Ó~T=ìžm.y뮼{èRRQ)*”J•Œ\&Ï‹s¹¡ò*§›ßøžO?OW}û8êôuv{šìêÖež|ï‘çÍóå«v‹m­[´[mjÝ¢ÛkVíÛZ·h¶ÚÕ»E¶Ö­Ú-¶µnÑmµ«v‹m­[´[mjÝ¢ÛkVíÛZ·h¶ÚÕ»E¶Ö­Ú-¶µnÑmµ«v‹m­[´[mjÝ¢ÛkVíÛZ·h¶ÚÕ»E¶Ö­Ú-¶µnÑmµ«v‹m­[´[mjÝ¢ÛkVíÛZ·h¶ÚÕ»E¶Ö­Ú-¶µnÑm·<ú÷­óÏ<ó‡UUUUU]UUUUUUUUUUUUUUUUUUUUUUUUUUTóÏ<ó™…´É$†f[m¸I$32Ûm¶Û~¾~ÿ}ô=z¾½5nÑmµ«v‹m­[´[mjÝ¢ÛkVíÛZ·h¶ÛëÇ^<xñÖôŸ\ëÇ:çdOÉûoÇ6nŽý}ºð} HHI'æ¡Sç›yÌïÄ1*T¨T¤¤©1r8\mE)Uº6ÛDq‚=ÕR¡ú+ò«ôYùÃê^Ëù-
+kZü6߀Üÿ6d¡-¤¥,–Yd)J)HR””¥Ú)d¥,”¥%´)J´-°¶ÊRJP-¡m
+ýÇøae”%¶K,²¥%´,¥”¤)JKh[BÚØYe!m
+Rm’Ûml,²È[@²Ê´-¡e˜Lcfa™†fÄOGõ‡õ„þ¹Ïõé,²…´,²…)Ki,²…)B”¥´¶–ÒÛ,¥´)K-¶ÒÚ[Ie”¶’Ë)m-¤²Ê¥f`Ãfc3¸ôžVË-³CîƒúCôS¬ëQ×%ùqù‘Î>ìy—¨ðѼ}1å+ûCZÖšôlô{¸Llš˜LLÄÁŒ““$`ÆF2˜É0c`É3$É1‰‰Œ“Ã0a˜dfFLɃ0c†‡Þž~æ&d˜Œ˜ŒLd˜ff1ƒŒ†&2L333ŒÃŒF†`É33ffL˜L3,£&CÃÃ	“	ƒ0Ì00ÀÃ0Ã0ìJ±£æRYhZYK,,¥
+R’”¥)B”¡KBÒÊRÊZZP¥¥¶[m(R”)im,ÿ#X1ˆŠ(#b"Š,X1EŒE#E#DPEøñ5÷ÓœjLf4õ7ݳï†ÓS	†bdÆI‘“$aŒ˜Äc˜cÁ†2L™‰“&31ƒ†LÈÌɆ0aŒÌ1˜zµÛò&L˜0É0™0É0Ã	†f‡s¹Îws¼sžw9Îyã‡s‡s‡sÁç<çç8w;œçw;‡yW8w8w6óž<yç8w:»®çŽws‡s‡s¼xñÝã¹Îws‡44hÐi­hÓZÑ÷ï™×>ibÎÇÊ£ª¨Š#"€úAûŠ‘D€¨~ÄŸ®PR("ª#‘\ÌÆ31˜öŠñG„Ã&Nôy’ñ<yǘyN}:7àI~jj9™9\–ÚR–Ye)JR”¥)JRÛJR”¥)m¥)m¶ÛiJR”¶ÛxI&¡ñor­Z²ß(Sú¿Ø}³í31Ÿ¢kìÛ>æ¦3É2dÉÆa`R–JRK@´²R””¥’Ú¥ÚØ[e)@¥(ж‡ßþ»ëŒ™0˜Ì“1ÆI™†R²`R–)d¶…´-¡m…–RÐ¥(Ò[Kh[BË(KhV%–´-¡e”%)@¶…
+ÚÓô¶Ox~—É>ÉGÊ’ûì_-Ú¥ö*XŠÉ,A‰O±RD>ÕbS…X±KXŒQabLX*ÂÅXXF,*ÂÂ0°X±V,IˆÁab1`±a±b0ŒXŒF#"¬,,,,Ff#…бc0XŒ#b,µR„©HX*D©KBÅ•&b–QLF,ݢ̡P´”¨}–*•«B:¼»#J†šÓähÚÍ1Ÿo¦”¥j#zÍîdHñ "õd˜’ëÝ⪼¥X/Z3Ç>ûL´ÌÉßHñUUUUUUUUUUUUUUUUUUUTÍÓ¸Q°!)gÍ™†f»ÎMÚr–‰$„2Iä’|w¹‹X1‡R‡Ãm¨o'>7
+™Îm4Í­$þ+Ð!Æ÷T+MiR¹í¤[ä¨Ìf2"³Q™)-têÙJ¶Û5"«§ÌÕ#l¥»Urß­·Vi‘ƒ"]Ñ7œÚcMÒü
+“¶ªªªªªªªªªªªªªªªªªªªªÏ™‚'¨í†‰;afáÉ‚ú”Q#f]ŝ5ܦÄñ$ä¿OÁë²d&[HÁ"<¾Ã˜\C~8›ª* 1šÏ‡s†áaÞ¹š)ý!!é!<f5ðÍÂã˜YlôÆ馜ٳM—†‡1â‚*€¯­ÊlÒÇØ¡ßS)Úg
+{ B“!Þ‡<iºáɤÛ߇&ï§$oÌ÷};så¿;ç€30>`gÿB™‡Ä² ‚¼´MÙyÊdæóš­0> †« FM9Ý&Ïä0å%ùÞ98R’—0ÃKòÓYíÃ!!Ž÷Þè—¤’IÈHڏϸü—;µÛoÀï~{êÍL1óEjž¸Še¾ÓVcƒ‚4F%Äu¢V­ª÷xU&r0ò<ñs#ŒË8•ªªzÞû‡ªkq×{Ã-·ƒÓÓÃGÆ>žEg
+5QþXú‡¨«ÛÓʏ'C£[Ì7Þó\vn"ÄDu†ÍUרù‹;çŽ+놈£ Mk1NS7~<¯&p둁¸LšÝ÷s©ÃÖŠU¾õr»˜gmº¸µ·sMÃ]K™¹™s®åbu̸Üw5Çuß_P{Þ9»»7M
+
+CCfŠŠ!{œšÎkb‚ÄJêÍÙ5g9Í›»ºnÍš±9À8C‡9³s0ÍÝÙ½¶lë¡ÑÓ££cf“²?O<»éáݹ±°Ùs[›¯Vªw•‹åŸº¯<ußKÛÕùÁì=ËÔ|QcÆW
+8±ÂŽ,Ep£®•uÒ¢ŽºTQ×JŠ:éQG]*(ë¥Et¨£®•uÒ¢ŽºTQ×JŠ:éQG]*(ë¥Et¨£®•uÒ¢ŽºTQ×JŠ:éQG]*(ë¥Et¨£®•uÒ¢ŽºTQ×JŠ:éQG]ú>|’#$F@=ðûã×âüs¯;ËÛÞuçxë¥Et¨£®•uÒ¢Ž»ÙóçϐMäã"¢×ø¡»í¢Aó$’û‡áþ5UUUUUUUUUUUUUUUUUUUWãçÛÒy7éûî¾]Q:ž_&º3Èqçívܱ}
+¸Ìƒ+švòo¼MêÖÙt[ÄܹÞ
+íV;ŠÀüߊ`Êò_Ïܱœ¢?Jªªªªªªªªªªªªªªªªªªª¿cêXÃ
+ûOÉ.Q5»{hœ¦Û[Dڏ•!•‘,®î8è·¯¡‹‡Rég‡Ÿ½G8Ìôêwì²Zø_jê_ŠÆ]k5ñÐ’u=gÎ$¿©õI¤ý[øUUUUUUUUUUUUUUUUZªªªýz7Û5¼¬ôòÓÒ:ò‡¯9åí¦µÓÙ2¾I®É;{y=;:©oyÖìÖ“]f8ÛW°G±'·RÉ׏Šyolõdߢrú}Ï>·ôîèðξŒ›’ùù=ës¡ÓÑ3ÊØ–OŽv½Ž‘Ù©®B;žSM“ŽdÅ›_9‡]f±ñQ)$†ý*ªªªªªªªªªªªªªªªªªªªú!>v/ùOÇ	éÛ´ìŸsÈrEÞb,&ýžPöœ“AÊzŠ¥C³»»2¸’¤1Ìs«`­
+KI ×Sª'KPŽîÑÎðµÎùM:aÖ½×Vy6º×TNkª­çhóî·VîO7iœGà|[ÁÈ9Ô#HÔ“­·ØÜ¶t[VÒ۝ÄMëråÉë;øÆ:8C4÷÷Úê2½ÚQxÏ£®u;§	¦¯¢ÓÒ‘ÑÐÉ2bu¦áã§QÓÐÓF»'ÏíÓ§LÆx„WÅ7·s¨FÐööõõ®î©um†ó$Û×:Õ¬Ö´ñªâ©‘•bÊe†0íŽr˜¼ËŸÕ‹íç[Ün{VI}a²úY±ì֝’H’
+
+ÍY;ê¯Ô±4ÚŒê[ïž!Þž›òN­°,K'hG§s!|oŸsñ³”OCQ=_/fWU_š••ufx|œ¼<;ñ•ŸÙÏ_%Ë:Tu«æ,ªg¼¼ãQEÇ0ËLGœc¥-´ãWyÛb•F§¬¦&Q¬æ˜õäÆ#AˆÚ²pÍiE‹¹®çœÛã0DÊÒÔ⽞í·ÃÕçX´în†·›˜¨›fš¯"Ä`óÌÍð¢zÏ'yÛîƒyãʍ<fJÅZ™šµõË©åG¥¬Y|ó'±-Pæ<W98ñTÔâÔ™‰sø–MÙ‰Q—;.;­ÍÝM#$*ÝÖ¡»º¹E"ɍì[5¹×4U;Û¹‡9¹kL´óFm´ÇrûÌOôï”ñéãǽ=å<x' xyE¬}JRÙcë-¢(zIè¢">£h­AAY
+Q¯½m*WȯŒÌ˜\nzçyNo.ìÝn:éwF´Â”R­«Kl;'”ïlQ}ë}_wªÄ­GƒRÄå©ZÑCÓǏz{ÊxôñãÞžòž=$òå’HP=åzÙQ<VÆz–[JMÑTX‹±SR´Xzxõ}éíóiïzwªpôñãÞžòž<Ä<¼¢ÇÖ(ž-–>²Ú"‡‚z€÷–,_#ê4U´½³.UO®„ˆœpwí;µ9õZÝ…¥¨MÛFèÝø’HøÞü»jñ½žËw6†Rh$¤ÓCH` a‡ô„ž:ñð¼xñãÇK¦»äö‹Ö{ú’2Ñ!¨f‰…C4Hd*¢C!PÍ
+†hÈT3D†B¡šl^‰…C4Hd*¢C!PÍ
+†hÈT3D†B¡š$2Ñ!¨f‰…C4Hd*¢C!PÍ
+†hÈT3D†B¡š$2Ñ!¨f†—¡†Áeèa°Yzl^†—¡†Áeèa°Y{¾ß{yî{æI!£$F@|ü÷ççùçÎ	…C4Hd*¢C!PÍ
+†hÈT3D†B¡—¯<xñÔ¼äç\çŽtùÎxëÆmùہšS6¿nMú„úÄ'èäüÅ‹4ëæ–\¾–q8zB<Þr¦§z¼Ðv¥XŒñUª¬«‘ÌË:DãŒq)Ó—)†”¼„q:’k©:Å‹ó§!ouÐÌ_˜A”\ÁÂ
+&ÃA&dÐ-ŠnÏ“ˆv?]ŸDiH0öä¹·$’†À‡’6"¦j$ü’I›È+~ƒæ9$&šDâ)|†ìÄwAŒ3`RÃM’h±“mÃSu-õÜ×Q‹Q1Ðêt“uT¶H}mƒ_.9ÂÚYæ©hf™34ã÷‚IQ9&²úÈÞp³ˆuÄÜ
+Öêmψš=ì$9#‡5蜄`ì¢D¼œÝ›Â¦¨›‰¶‘9؃mÉ'7¢Ë%)*”²¦â6Ø5Øä#B­”’Øí5óìïŰóX,SÇZ¹*Km´*R|ƒåUUUUUUUUUUUUUUUUUUU_;Âo²–n
+ì‚Ѓr7£f+n£|âo¼ª\bL²²b¬¬)p­¥kx›ÓA22,Èe0˜X,ªXŒ$Ê07Å¼MÉoa›êä8‰Åpc	™ÕÊr.w)ÅTÉjÚLé:‘»ÈGHèzâ;¼;÷Ye°œ±®²zý98ò^ÞlÚSg;¥ÕpÜmyÂ6nn6Ô“M
+O&òÈ›lÑ©M<·{jMDÖš”ÏžfrÀ1«Ôƒ;tÛ’nªªªªªªªªªªªªªªªªªªªªÖ„!l…ˆÃb×½Æõ½ZØÚ6¨Ôij¢ßc|­ç]TãÔókÕÉVõSÿoþk÷?󋈳ÿÑÿÆï÷þÇîïôŸñû^Ü«Gׯí_Ý|s¿‹ï¾."Îâïã~ÿ7ññOnÜ«Gׯáü|s£ß}±qhýîý÷íñ~ÿñõہõhúõû¿Ž`wñ}ñ÷ÅÄYÁü]üoßæþ>)ãíہõhúõü?Ž`t{ï¶."ͽ߾ý¾/ßâž>»p>­^¿wïñÌþ/¾>ø¸‹8?‹¿ûüßÇÅ<}»p>­^¿‡ññÌþ/¾>ø¸‹8?‹¿ûüßÇÅ<}»p>­^¿‡ññ̏}öÅÄY£÷»÷ß·ÅûüSÇ×nÕ£ë×îýþ9Þûí«1š+õžÝ¬¢¿º¼6gåCy·†ÌûY§6ðٝ¡¼ÛÃferé³2ƒ¹tÙ™a¹tK¶—D»a¹tKË
+Ë¢]Ãÿ¼ëÊÝÒh˜ñÓtÿê7&¥å{½4L<é„:y—&¥å
 Zf“DÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò.MKÊ´Í&‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹©ãZszh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<2y
+V™½4L<é„=<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„Ã'Õi›ÓDÃΘCÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBá“Èj´ÍsSÝóñ„<ñcÕ¼£LÛ4L9Ótò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBæäÔ¼£Ow¦‰‡0‡O! ðÉä5ZfôÑ0ó¦ôò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€xdò­3zh˜yÓzy‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBá“Èj´Íé¢açL!éä <†«LÞš&tž
 Bá“Èj´Íé¢açL!éä <†«LÞš&tžBá“Èj´Íé¢açL!éä <†«LÞš&tžBæäÔ¼£Ow¦‰‡0‡O! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôò.MKÊ´Í&‰‡0‡O! ðÉä5ZfôÑ0ó¦ôòžQ}£û‡Þwù»¿i»ú
+Ýݸç9»»»»»»»úðýƒû®$ýŽL¨½°˜€öý–Îø› R7öjªªªªªªªªªªªªªªªªªªª¿¤ÔtBH~Û~YÄ'!ÔFó&¤Ô»RlnVÄHã}Î&QÀá
+Ŧ!kY‚S0)V²Ú·Z³×ŠÀ™‚¬ÁC2©›ŒH6E#8NHN²ˆf¼¤FM
+’@’®Â5f†É"1`£ßÛ½™'Ä'Ë	ˆk$é¿_jI	ûm&íBß½¶Ûm¶Ûm¶Ûm¶Úªªªªªªªªªªªªªªªªªªªªªª½w½g®í»¾ °^B#&CBh±á²àlÉ`Ì3’ÁB2±™"Pɘ§à¶é½$£nåMBš¥²ïpf“bÉšïb’D´ï.«MâI÷þ÷ÿ£ßuUUUUUUUUUUUUUUUUUUU^qúíÊI$>¤›ör—ãâýg,ÎÏ«hÛîÏs0kV•=©¨«ŠŠ®"ãzá«´æ[:Þq;iGÙ˜e;kml}¶Û·ÎLDiQ‡0ÔµTyÞó»šÌ:cÃÛ½/9u‹39Ï'•ízzá˜7&5ÌLäè‹ùc¢¼k}»˜>ó¾FŠ&YãGÔ§c²ÌÁ4s}åDåž5Zj£‡¹³Q-
 G™_wGMöhöêðÞÖåïpN{½,O·“RÈ»Iq¥ÏA"Ä–¬[‘˜²MR%¼]Ù‹Ǎ½×îA=Ó¯kïz@ñêO}_{‡”ž˜¢'©mO[U|OòŒžKZ+QP²ž1óQž¯³Ë3™Ž_aqÂînÝܵm¶O@âx[Û^åñž§»:Åãoj®ÉéãÞò>óïO÷‘ïŸzC‡‚ÈU…Eˆˆmö
+«é45ŠŒq[kª«¤ôñïwÙKîž÷=¯yéãÞ<ú¾÷‚xž˜¢'©mO[U|Oò$ðx<‹|ÒÑ<ª>'ïÐ ‡Y=ú6èÄðšR¦‡Áî’F9¾þDŸ·	'íÉ$/òû}¯åÏ;Îó{®w{Îó{®wzSn©v”Ûª]¥6ê—iMº¥ÚSn©v”Ûª]¥6ê—iMº¥ÚSn©v”Ûª]¥6ê—iMº¥ÚSn©v”Ûª]¥6ê—iMº¥ÚSn©v”Ûª]¥6ê—iMº¥ÚSn©v”Ûª]¥6ê—iMº¥ÚSn©v”Ûª]¥6ê—iMº¥ÚSn©v”Ûª]¥6ê—³çÏŸ3±d’Þû»ísÛÞw›Ýs»Þw›Ýs»JmÕ.Ò›uK´¦ÝRí)·T½™óçφÞÛ9'k*Cʐ¬“›ÉxÈH~`ú*ªªªªªªªªªªªªªªªªªªª¹&Á'ý™’5M¥ŽÕ1*k¾^3
+l²eêÉ,Àa»°†M}aÃfBS(Œý.W¯8‡¸kË1˜õ‚2þ;VõÛhÞÝ>ÎÎFáøT–*LÕh²É²´ÑZV&™™CːïÊ
+™$'݁ÀûæÝÄ›1û§ÝŠ¡%éš{œÎK°š’Hp¡ùÀ	îã¡@Óù3UUUUUUUUUUUUUUUUUUUvúŸÁ~§MfÛ‹‰1SϨ«UdS"¬¥>¨=]»\
+ÊÖM$`Ú!S&D¥‚Ò¥….¿rªs©:žö;3ß¾­-õu¾AÕ@Þ*ªªªªªªªªªªªªªªªªªªªôÎä‚((3f’̖ʦo¾¡²¦·Ñ6	…¶Ö…µ#³*¦ûÞlŽ$2òU¶Eµ^>=°ÒvwŽy7jÄB'r{¹˜'?IUUUUUUUUUUUUUUUUUUUU$Ø@>4íØlFno66›ÔhGÍå¤ÐO;úöíâxðžé½ìØEœæÎüèàEñ›å“IÎ
+>é’0—‡ÛÙÓ;ÈÈC£ÊÈœn´è'M“fÂk{)³a5¡ÍìI)Öäe—R‘b"du¨Ž· lÍî
+Y4؍/[Ä×r'z+./k7Cá²)³ÃݰD+~Œ1d‰¨™Nä5¶;µ!Á&ÔÒ´TÔKQÆÒÆÕ±š­KX#zMÔeTÀŸŸô>·NƒŸsð]4¨Þò[ÆcÄN[D9±¹!0ɦ„i;ó¦Â61ßR$ÍÖDo0GZ×6#Dã3¬~]>ÝÐéï·Oƒ¬»2©ŠŽN}Ÿµø±Îõä娨ªúh²žÁÊ[e´qÌ{¼å‰jw^µJ‰eSÆ®Êxç3)Å1b¶V0á€Ãª;¼§s]Ã{mÑæqÖ*ŽNù‹9í«:4|c·4¦æoO"ÆZ¡ãG¾ñìós'½mðï';ºks—†
+¶¢Séæ¾ÇÙŠ‰¶i¢f¢Ç˜¤Å‰fܳw²Ãˆ—%½Öãì7—Ã
+*i‰)-ˆ†	7æ59LGiäRÞ´ÓÕ‘ÌJN3D’BŠís=G=»Uj۝„  †éÞw§yÎsx'TêΜéPT;:.U*Îí*ö­kV½iQÝìâtâvuaÕ^¬çNóœçsœæðt/Ì©%—2ïÍÏš—ÍÌܹ@  4äå±Ë\¶q×98œ¶pãäÕd-*ÄYd*¢ªJ¨U*KIU%T•IUȶ„PEDB,‹"„bHU*’Ñj*¡e’[Ñh¶IUQT*¤´[Ë!h¶d–‹IeHª’Ô”¨–‹HÇ'‰ß³I%¶Â ¬?D œ¿˜$oS·+naÔ®TÉvÖªbi£8èÜ¿ŸŸŸÛï}÷óvsŽ‹§iˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆiˆw%ŠªŠ¨ªªªŠEU‚бE‹DQTW¾ç±ö{yœÇ™ÍæsCHDCHDCHDCHDCéú>gÚ±üIt-SàɉE½½ß…€ª@gͪgY¤–­‰m©]µ}{q·IÛ{=+tñéðb‡ÁѲS²Ç½–¿_T’/¾ß—iÞÜÕµÜͪÞg:µ9ÜÅ"‚Kù•UUUUUUUUUUUUUUUUUUU{ÁI‘€A@†¤ LˆöwÝݦäùfˆ¨No©©ÍuÑ®25d#nðŽÐi×ùIúT²~±¼}ôq;Â}%ss¤ºͱ‚(iÉÖn®#ÔYOÔ%çè|þ\Zß1lD’$Ìd€ŠšÆ"¸Y(i¶ç×ɳ§~¼CÕÂd…ІxÞ.¸ã3ž±¬±¬U*ÔE[®þ<]åmïÏx^î«Í¦>zÓ^WQ¦­]˜äÝJÕ”	‘–-ä¨@­ä¬û!M¡ããÇÆo±gŽÉJÀPÃsNÜxQlJ }û3`BYI!ÞÙ:š‘ý
+æ[\ùï»ÃãÛ>Pù÷I1‚“³›µµ-°dèç®7%e¡ÝÞɆk¿‡¹=Ü„¬Î|N鬚‹2'Ç'}ãÔ¸&ið°Ž»õ²sÚc¿ÛóMv—Ïq¹|Y&)óÒeZ×Äιë§vøâ}O•XHFNwô?oŽªªªªªªªªªªªªªªªªªªªªþŽ~wó~â*T<µ)6žNß#ÅÙãðrk–6Ûlf3-Žñ*½-»ÑD‚>õN*ç´Ô
 M¥ŽuÛn\N®NŠŒí žÁ¸£ë*ÅÕÛÌÃja`ŝ3šñ½MW¹®qqÜÁGlá£Óʏ'w£:é–Û£»³FÙ§N£j6xïgFLzÞ÷YçÞó̯`¼Ó0Ì™˜XœÄǾ¥=rc\Äý]5MrRàÅø7·y·†³~3]wᯬí½ç)êõ婽ôïMz›™[‹Xœs¢Înâvjmä,ʵbbo5©ÍïÉ$®íͦY!!÷pç–{Þ÷½<yg½âzO)à<úÄcžEO¡á_Z–ØÛ[}ÞD´¥-Q£J>˃™rѨ«=™Šc\\F8ªžê½m£ëmõ÷¤ïm(ˆª*Åâ*h{Þô÷•O{Þ÷§¼ª{Þ'¤ò–IEô}F1ˆ1Šygƒ@ÕÕUUU
+Y¡ï{ÓÇ”ãîž÷§Ž¬ï=ïzxòÏ{ÄôžSÒyõˆÆ1žEO‰âyÐ=äUQжeÏs=%²æp·xM†ë›·ryë¯/]ô×Å[ñ¦¸ÒH®$’+‰$ŠâIR«m¥VÛJ­¶•[m*¶ÚUm´ªÛiU¶Ò«m¥VÛJ­¶•[m*¶ÚUm´ªÛiU¶Ò«m¥VÛJ­¶•[m*¶ÚUm´ªÛiU¶Ò«m¥VÛJ­¶•[m*¶ÞìľbI|¼»»©U¶Ò«m¥VÛJ­¶•[m*¶ß½=¿nÙöWp8†2|$ç7¯¯¼­¸kKJ¥Ca68ê1ÍÕÓ"%i¬„ïßÞð3“μü¾8ôòß’ŠýCˆÙyað’œÓ½;n™ˆ)õ‰­XœŸS&=09¥ÈƒÓIè©›·!%3 ¡!ÙŸ!§ÌdØVS¹’Ù:æÙ¾NnæI‚>Ú}c·¾¤ÑAãÉf%[VÚ#ÔËe³QLÖŠ·Ä™‰dƒtA™‚3wËÆîÞ~™ÞMfDá¹%döfÞj^o{%IŸUUUUUUUUUUUUUUUUUUUWàøà4㈋O«sædKf›àøù)Pîá™ê	Ü£
+Ãá犽§W¬™ À‡m
+ÊY’žlš~Ÿ;0vdê(M”“?	°øŸ_CbÖ{â2©^2TCÞ7׊µ«ÕµÄ²Dˆé4Ÿ#ÒâN
+wñ†g~ûYÔc1‘bK(4§2~†Ýù=ï£!`pCŒš`éqÌ7NúíÎÜÑÌÉÛ)ԁA»$“Ý^ýg‹Ó¢Â8î]áÖF{ÒLTu¦“§{õŸS„’yzuzx›Y¹:¶ÃE—›dMM›™>~^™wÞ:ÊQ“¡Ðަ£ÚÎÝ2|kåñéåΕyåëÛ~ÞÏ‘¿>ç·n,3Íã^{ß^®{³”Ó2Üç·—®(©ÛPS¾tÖ·[».[m·Ë—US[Æ·ÇgDõ±É3vË|ñp{œÕ¹¸áb(ˆ¾™ÎsÚãf'³–î{:5½ÎøQíž4_yÏ=Ã]w2ºtò‰AöD=ÞvÚ=zû1‹=ãÞóžš4n£Ü*"8ss¾ž7³×4¦æ\neWNâε#Ið¦¾Þ›­Ô—mÞW6Nm-¸õg,Mb|¤rd´šoY¯nHÚÛ¨ºÓ˜knzܶfg/¸’	ïëïzxñã¾}ïOIé<@÷”QõTðl$ÄómTo®f*[mL¶Ú¬”W<n®>ÛwØeÛ‹rÑÜËEåÍyêæÓ¶žYä2ñÑzÛUàh/• ïŸ{`0;çÞÐ'”ž+’RU“LJԶ«àðn¶Ôvˆ¸h0<wϸ{Þg„;çÙÖǏù÷´EôžÇ…UO’CÒzO=å*»*»¦Ž’£¨[GkhudŒ¤3ÏÝߝs‹“\dɺlÓLcnOL½=¶ì¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶]ÌùnËe¶[e¶[e¶[e¶[e¶[e¶[e™ôÌ.wÑAß…X»9d¹8ä.%J’Î_Ž´æÞCЁ‡ç;sχ€À‡#½P,“C´’œÈ&RŒ‹’9!¦è††˜ŠñáÎ;宎UÞ&M^jLÙ;gR©ŽšÑ—m,(G$ÃMîÀ°´›ºC!“p2S0¶gp
+?}Ÿ=ïiÔbªøùÉ|êg9M#'˜&œb{Þº<-î&"‹à’DçZ¶Jå²ÚªmUib[âц
+–V–í>ˆüN@%)I$ë O‰¦OüK°íə̓'0-éׯQ÷;ž¶“Á Àý ¿h~Ov檳Fj–±ÒÖÛR–ù›$µ©%mµh@Ö–…
+ðD+¹,’Iða¥Ï“äèy‡»@f°¤s£Ì&C™/PÃf'wœ©Äá8píª›÷9ø±Õ­µ¾¹´wÙÓ—›¶‚z˜'(Î1§^Þˆ«~·
+öµ‘ù2-6~o¯žUfl‚¢F™¹áÓ#†sf]‚ô{2åþ¥îØ ¤É3Ý}V05¬ŸXi½éË‚àï
+›Ð!ùù»$&ü›Ý‰'$š¬Ž»ë⾎ܓ›;öÕòßjäŽ:Ö¡åÛwdM»Òm &Ûv¾nŽÒaK̵Ï^éFÃ3ã“nÇh/g€'‰!°±’F„)¸_Ð&>—]ç]!z<djBê±7CJ5­>yã¯9›öð¼±:u^n›léÄO[»©Tܪ?ÛçñŽá˜:~?'û»‹›’«gš¦"ßj%殚…ÊZÝãÅÊQZ˜û8tFx²†QJÌ.ÕÛˆŠ±˜-.P«qDQ칦Ù۝FÇØ¼Æ4Üø:5¾éÈs0öÚÅžÃ
+Uy<§†¾²ã”bøç|ù_möfw®^æWnEk-żJuÇÙ•öìÑ£vn{׫ؽ±{sõ|ú–îe>	+·œrtm¡:ï»Þõ—¦Ìõ¹ÍµÔ®¹–Ä®8VöãÍ^\qÚ)­£··S®¾·ƒ´¾âÎÎÎÛ뜜qÎs˜áË%Ž:áJNΤEG¶ÒÚÒª¬™Õ]œ·—¶ÔtUPéÄïxÎNXáÃ]äãŽsœäãŽsœÄáÅ’Çd±ƒ†Î¸SFŒÑNN8ç7ËËÇç9ÉÇç9“‡,–88lë…1ÖK6páñÛ¤©Á˜ó1çݳ>ë–á‡ÑÓè·%VÙkªÛ-u[e®«lµÕm–º­²×U¶Zê¶Ë]VÙkªÛ-u[e®«lµÕm–º­²×U¶Zê¶Ë]VÙkªÛ-u[e®«lµÕm–º­²×U¶Zê¶Ë]VÙkªÛ-u[e®«lµÕm–º­²×U¶Zê¶Ë]VÜùòZê¶Ë]VÙkªÛ-u[e®«lµÕm–º­y±f}9>󨕇°¿Odܤå鞦†1ÓÒEëø1eK+‰ÑÃK±¥Ž­›ÓCMÝ>?x?SƉî™ñõÚód‘äI9ilšf|ÚT.œàüwàÓ'Åéi£OsNIsµ„Ÿ9»…g$KHn|‰Òhӏ@!M÷¸iìÙÅ?6öù;Že5áºêÇz…ÖMRºNù©¡­·Lçs¡$ßpïsJéQó·`w¼éŒðΦí,êmÃ·úø™´ï¡òUUUUUUUUUUUUUUUUUUUUߏ¢~›´ç·#>|rG@ùz“M‡K;¿]Â;=W¾îIòbÊUª”æØOÕ’ûs›'/pŸÕÔ`¤‰Þ`a¦æNì>‡|hÈT$R at b¤$2†`°Ê¤Ì¡™a’[%°[–BR“ž··¦4ðﮥÓÂËžÓfÌ)nfJR”¥0öþ˜sQÂÄg»Oggêi‡KÞifc5¾ûòbLÇs¾&Ûyyyj•zŸ[Æ;ûHô°‡­’F©h5KI$j{M½Àýo~BKçÓ´®[åncQñ4áÀuÖõÖõ×[׃ׁ×Yï|2¯Àøçï÷Þ÷ÞfwojÚ’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’JÛm¶Ûm¶Û>¡·ôÉL’I$‘¶ÛzzzzUU^€ªªªªªªªªª ªªªªªªªªªªªééé
 ééééééW ª ª³¾û=÷ÚI$’I$’I$’I$’I$’^}tºióB7¿§é{ùg‹é~†>¥ú9èúTúˆ“Éæ¾sǦ{B5ïãû¾®¡;qì_^ïW~>9é­xßc™×~|ñË©ÛÊ'‹]²¥Cú’¥CÌáîãcÚ}"Nž¾ÿK3ß···g\^sœçW¶Òâ¶Ú\VÛKŠÛiq[m.+m¥Åm´¸­¶—¶Òâ¶Ú\VÛKŠÛiq[m.+m¥Åm´¸­¶—¶Òâ¶Ú\VÛKŠÛiq[m.+m¥Åm´¸­¶—¶Òâ¶Ú\VÛKŠÛiq[m.+m¥Åm´¸­·»1,ø’_/bîî¥Åm´¸­¶—¶Òâ¶Ú\Vóœë‹Îsœ„y·žÝ·£Ø°~ù>=üjeÒªªªªªªªªªªªªªªªªªªª«ù¿Oòû{çñ‡çß¹úÿ¾g²¢;÷øõøø¾1éßkè’G\ø„cþ„IÚyYèõã_h>åôLXbªÛbÕ¯»¿yÑDŒ,ý ’o2`_*ªª·eº‘“26>Á«V¾î[
+;Añ/ݏ?°¾Ã[> ò%u"0JörQu{Àðˆ°~¸ªºG%SCþBI'¤ó!·k[NÕSG³*žÒªnÌÈ+°U_“ÅWðEUÀñ”0]‘ó*•~¸ª¾¨äÀ÷Gt ÐòŽ\ªtÇÕWõýárÆJ§»J§öc´ebª|jU9*§Ê¥Sqàó­Ò©ªU5U:R©Òªtª™Jd–*__Ó몕ã*Ÿ&/ á+Ö0n´?¹R¤´=!Ϊ{íUO­¼^Øõê¦	ÚÇ8꺋ThvªGóƒÚd~ØáT¨qJ§xö’©îŽcõUMʏýÁ¤ÉC•;cÇGå¥SÆ¡ójó¥{C˜½nêU:ãR¥CçG í*¦‘’«ÇŠ–‡«*T;ãÙOÛ@™TÜ^Âeì …ˆÇJ©ë LFØ”•l‡eJ’ļe
+T¬
+Ç($碊¼ôªbBs‡»U?o«Æ3:Ê‹z©Ô™U2Bå!îF‘÷
+Úˆ¹Ô.ؘqTª
+©ëŽƒa±Ñá!ê…/‹O@È>°ÐóFÈÒ{CJ6U!	„Æ*£UDF"ª¢±DTb*¢*±ˆŠ‚
+¨B!$‰$cDTQˆ¢"#UQXˆŠªŒ,ŒÌc0õcu‰î
+È>ăHsÀð4ì<†$8;”jGp5êò MT‰$`¯´¶KbÚ(YjZÛIÛbÉG˜À£ƒˆCaÌŒªò¡ÕJ§*4ªŸ‡!ØãpúCÉP»ƒˆðöÇ0A°vƇ}*šÜâ’®Á:U7nAÑ઼cÛ¥S²5J§xêãŽùR¡Ò1-¡ç%àJJ»©å³e‚Øl‡¬9ÐWªy*•C¸`*HØ|ãÞL~yì~ý÷™™™™™™™™™m¶ÛjÛm¶Ûüá ?² IûbBr@ëJ{²U=Êa°Ø{Uä„|qæ1?0]ƒÙŽC߃ÞT^ü`ž	R¡Àx¢T¨j;(ðSQÊ(žNÂ=zU=Š•%ñªo@øꩵTëAˆÈj9 \Ê©µ%eT÷*•CÞŒSÔZ…ßP¼Aó;EîJ•Hï©*›A-†SæÑ¤x!Ê©zGˆs*§ª<ñäx‡‘ëE.ƒ±*W]ÌeEç£xòÒ©ãG^ÂĦ+A°Ê‹Ð9b]b¡mU¶Ûm¶üˆ}Púáó‰ƒæ”ª|yR¡Þ£Ö¥Srªn*§ wC„|‘ãŠ'£b•Ê)*íÑÜ-†‡]*›Ã)TñÑ¡èÃÀ‘Ô:CÀ>Èz¹ƒÐr•*%Ô0_•*?T[Çmáàå%¸*¦ÄdëÞ?pnArMJ§Pð‡T'Hê˜9CeTë´¹8öºº=Ñށ<ãö-R|ð¯paY…e`¬„ñITô4©Pâ(žÅ*Ô|X¢sŽÐ¬=Ñ¡íŨ`íCIPï‘ìˆwGèš*¯-*œÆèf<ÃÂ<욪j.ú¥PûeBÁèëUN#hö"‰ÕBT¨lŽCÉl‡ÄG1åEUWêGd	àlćd7uª•
+ѺJ¥ƒ#Ë‘ñãÈ8•Šªž뎪U=d	òCÇG1ÛJ§TO
+ÆÃãÞ‡¾9Ò$憅Uú¡íŽÚ©åG¿=a‘¤¼C!Å%0adaæ$b1&*z#²{¨’¡èÈÏTn:vh*±)*ÄF¢’¯‘*T0.µTÝ*ž(ó|zãØR¥C éG”{TªhZ•MS²ªy‡†8†ôªd#ŠU<Úƒ°m%¨äÇzÚ†•SÌ0wª•
+ÇJ;b’®C¬sª›’’®²FãtŽcφGxÐû
 ¹R¡Â©ÈzƒÒ<¡´±áÌv†GIWÝb\ƒÀª™
+ñÛU:ˆd7ŒF!'Xä6@™U<©p¥ºÔ<‘Ήb`“ªB%쌑)½Tõàýawƒq”¼w'${<c’Z£¨i~t©PúÊ¥C©# ïÀ<4ªlãU*¡ºå#•NñUqz¨ÕITúãÔU0`ÈéG(ö"‰¸Þ•LT.ž”•rJ§ÅªšŠJ»R~<}´‡ÿl}Çú•UUUUUUJþÖ)þD“?ü°5Dþ‰„¯ýL
+$ýÛ¬ÿîš\¾¸çù#ÔÔq)EfP,À-ˆª*¡öU˲ÿÚ·ÄHúyןþÓ»jÕ„î£Mñ.yŸ‚KùÅTðb‰)¿êÑt?þb‚²L¦²
+!çš
+’Ýÿ
+ÿ ?ÿ¿ßÿÀPÿᨅ  EðÁ| z =àÀ    ÒªCï°   AT  P¥T  	Já€}
+ Aà ãž         0
+ØÁ AÞ î û P úx8 4R¤D@ `EA„ =4§xêWL™°Ëf@ƒ€ƒ¹ƒAõ܏            p èøÀd9X (†@Ṳ̈’WÖ‡@M÷Àžù`¤úÄ  O §J,Ú, ×`DŠLv¹À    2Ÿ°ÙJ©SP         E?ÒJªL4hɦ˜MÂhÓdÄh3PŠŸíªªš§ú¤@   h    	O)&UMMIêh=@4  
+¨d€  Tˆ„КQµÔš6 
+=&iêhÚG©‘£ÊDB‰=@€ ÔÐ ¦²B~dIþ²ˆ«)õÅ_ådWû¨«"¯¬U¸¬¢­2*Ý%bVØq[¦‹VfA?ÙE\”™IY
+2™%seC"°cùÅTþ‰$«ñŠ©•US¤¢*ö‰Kî	Ue%TÄ ò¥Jƒšúo¦Ö©¸¨ŠºÌI›üŸNõôþNuÎu¹ík[ÛknëùïlúÉ—ŸYÖÎÛmo”ݦîí¦É6»íœøL©ÍÓ•èús}ÖåîÚ—›ÎÕÝiƦuWon{DêoÛȲTó}·…Óã²Ô‘[-øW‚pÍ’WM2¦OÔâ‚Ôï'm©âÑn'SÄù>îäñ>M—“Љâz›;“–âÒòi÷'‰Ôíµ4ôO©âwžë‰§¼›îäÓîMÞäÓîO­•âbxN'1wwz?{“OÞO©â~NÛSOŸ0ÝkÞó(Þa¾ô7›[Z÷¼ÝúÔâq4ôM;Éâ|ŸwrxŸ&ËÉÒßF^OÞ¾L¤ONäÓá7{“}Õ<O¹+Üž'ÉâîZM=O¹4û“îîOä÷\Ä´©§×š}ɘ7§'‰òxŸ›¾÷˜o5÷|ÚÚÚÚÃï<nù†ós–³sÍ{Þa¼Ãy»ïy†ókk7Ýaï_
+æÌ7X»æÌ7™½SO¹7ÝÉŵÛ³-²íÛÚvËTìÝ6Öô\Û
+An›.ÃbWgEÕ½lm¶Õ½Ñ‚ØÛm¢[[k޲•I×U/jâÝ6+È
+å8ÞRš)Û7{W‹Ú¹oE¼¸V+×·®öÅÜvËÖ˺ºSnô»n »ÀXIoP«ƒyN7”–ê¦Í½!ˆ.åÒöÛ½ºAð¸ˆîÒZÛgZì{ݧT­ËÜwu-©^K»»¹·ÀmäHÛl’%kn¥ÝÜ—^]Ɓ;m÷wvwtyï>|Õæ¯=çϐ
+óço>jòTú PeQUG¼T{ÁðTUPU@P{ÀHUQ™™ïaUEUðUHUTUT÷¡UEUð{ÁðT{ÀððUTñ@¼ðUP ™™¹™š TUPU@PeQUFfgØUEV¶ëvë|—s˜‹^uvîí¯WYZ	ÊCŸÆ»¡:WÆï>6>Úè6䓺ÎvîÅ|0ì¾ÆÉ8¯ç°Ÿt™c¤¶ÎÛo6×nÓwvÓd›mšÝÔú§4ë"';eâƒo©NçÎm‰ÝAζºIfÅÜ=ÍÝÚî©Ô&Î+¬ qÏMGzt}F/cdmµüöë&^}g[;mµ¾Sv›»¶›$ÛlÖî§Õ9§tˆívAí±€Âåìl‘Êþ{	õ“/>³­¶Úß)»MÝÛM’m¶kwSêœÓ¬ˆœì…Wè÷†+‡cr6ÞÙÏç°ŸY2óë:ÙÛm­ò›´ÝÝ´Ù&Ûf·u>©Í;¤Gk²mŒ/cdŽWóØOºL±½³·­æÚíÛwwt6Iª÷p7Ú™Sšu‘²ïQw{Ö÷{¸0³y,Énæm ëììí»©%›L2‚Ig	gîm0îÎî·.]ì'gnîæ¶Ì0îη.\0ζÛrÛÆîöu œkt™¸wa;80oºÜ7s°ÙÖ⬵òâ>ãÖöw±¿Há⿞Â}é2Ï2[³Ûëy¶»vÝÝÝ
+’o­šÝÔÏ$ædDçl¹I\ëaØÜ·¶sùì'ÖL¼úζvÛk|¦í7wm6I¶ôÞ|&TæÒ#µÙ¸]kPNq•ò×càaÙ{$p⿞Â}Òeì
+½o6×nÛ»»¡²M¶Ínê}WI½z’+l¹yÖ·­«¯'o:áv³Ö‡>q¹ÝÝžHó©kÝçã¨'‹»À’AÝÝvԒޮԍêÞë£<8m»½½î}¯ÛKi›Vã3rR9¬©$Ê­#W6ªU]@$»¦ÞçÖݐÖ7®Û\֍ËWZй÷5gs	5½¸v6HáÅ=„û¤ËØ;zÞm®Ý·w{i²KÝf¾á§4ë"';e
+±€Âåìl‘Êþ{	÷I–7°6võ¼Û]»nîî†É6Û5»©õNiÖDNvËÄíÛ]Ö÷{¸0¯y,Énæõ¶·gga·u$³i†PI,²»››Ý–õ¹rïa;7ww9¶a‡u¹rå·;;»ºÜ¶ñ»½h gšÇÝ&nØNÍÍÍnÓ°ÝÎÍͽï¤ÉË/³®¼yg›ìÎÜ·nlohÞ<îwGÝ—µÅ­S&ÙÜ\ápd¼
 >éÞ¦ék‰ß©K´G½'gtxû®¼yÔw Ù“¹Å’s‹$æ»;³;:¬“î=Ž,ì½®,œ8³{õx÷»s…Î\ápfïœNù$¼›¥±Å“£}Úúçn¸§w8²^qd9ãÂ[S}ȋި÷’KÉ%ä÷z”½]s¸qNÝxòðúçn¸²utÂ>çwÖ¦è‰ïûÞ¥/R—©K´G}¶¦ûmMöÄ{ßD{ßWŽû¶¦ôDágvw6û:ÇŽ&³º8²YÑdá÷gn¼yÝ^<;œYcÎîk²ö#scfä‹4Îèû²õqd£‹'»;uÅ“ªë“«Švó‹$çIÌ0‹‡,]Í¥Œw{ß3k~w6ï¾{6·ç±žö}I> `LTE\ª"­2I#gÙ™™öý÷ßgÛŠ¹‘©¶côuóé
+ Ûvâ@ù¾ZÙzU!v³zêÝÛ³ºTí©M¦ÃVü»
+îF¥°â¾6tIj‚BnÜH7Ë[/J¤.Öo][»vsî5knIÔØjß—fa™Z­¼mã‰ã’í0‡[s.[rÛ—/K–Ì—m0ÎVç[ñ~!õ¿Krܸ_noßiÃstÜÜØˆªNõDq>³í½Ç“qtÃzccÃë›õ¯"½Ý—,¹›&¬¿K†=ú㗌ﻛ“3»;ã8¿lÎÞ´Üìîܹqý{rLïŽãâ“éÛ’v¼°ËKÈËvcÃwO®ä“6~Ó¼3L0׺ñ7òYòÌï¾Y‰|’ÌX«U¬mÆÜ’ÐÞwU³6ÜN­\ÃQÝvæöåK•É.\íË…MÇÍ[)›»yc·nÎ16l·¶íÞÉ[‹m™½ÙÒÙM|ÉÇEÎI.VÛäPÞÜÞÜæâ}‰ã3s·.I—DF‚S6k#nÈ\[\ÝÒòk7¸h÷7SRD’˜›øÌÆ7É,|žÚY“*isé(eÒâTЬ¹vëÄû¡«§Bg!¼+K®^ÜìOdÍZÜ–eËMÊîRËzç5¯’âÞãi¹Ù¦\Ü‘»ÃŸ[ÙÑ^ëÚs˽eYØ µ^{¶eì“nÑôáRt˜tí&íÜÜØ˜kª>És³»rѪ…—–§5gjÝuôû³¸ÚvÚøÜÓ
+“‰a»wµÍëÙÊçh·¢Þ6››jÍméË¥·$μ­§h°²^™‹x76KwxÊ:ð›IUH;-0Ìå7ÕP°«~«cÍ7Xni†îëpSM׉­ÝÆMñ³íoûä¾Y‡ruâÉ&NlãFðÍmðo;«£Ó»²év¤§3…w‰;¸‹´Á°µonnnçe³’Y:wd}:ØŽi⛫œnëÛr[7SE¤ÖŒ‘=ɺ·¤HH{Îq¹ºL6î¼¢Š×Χy¼O°Ó\Ž:`µØ<}sËQw=o;;Î!²NÛ½'Sx#3²\3\9ãzÛzÝ9åË"ÞSvÌ£Lí™D“77§(–ÞÙÏ£î÷J“„›”Ø¡­˜bšc&á‹a>Õö5òKîÁ[’G˺•ŸBN–á†
+»q(.™Øµ¡:mtÖ)6ì2gokÔúl”›#X»5[’G˺•ŸBN–á†
+»q(.™Øµ¡:mtÖ)6ì2gokã{y»ß·›¾ÖE ƒÕíE»¦¹2vîqÊܹ~¶Û…Å–Þ¸e¯#¶ñ~îÉÖá~¹pªýråÊU~.+¢ÃAh³~Ü“'Óé$ɍ¿´æÒ6)ô‘(:ä©Ëvîîâ]Üq›zÞt;nì’IZ³i$’ì…ÄÛÚ
 4ÂlM5Õwe]ÎõDs‘öæ›çxœ7‡­Ã37çõ¦^û»ÌìÜ¿V+Œ9Üï·½<D{ž=ãMïsÖQï¾.šsŽíÇ‹ãWv<Þ3o5õ1gW¼fÞ>ÊbÁwo
+ý’æâ.Ñ»òNÓ4ùÃâß¹'9»™8!ß
+«‹sus¶ñ[yÕ#zúTëÅµ¥Ý{{X؆ÈÊݦÚòÛv„:êÑ®i¼oiw6IHéÊ%oq¢
+™‰&óåTŽ%·¶%¹½»´˜ª[ÖÞMݤd’FôÅ4ÝÝÜdÓå°™«ÌKìY‚Ê®Lj[+ãgAô–¨$&íāó|µ²ôªBífêê&k6N‚Á÷p’ÖÝS­—Wwå:êœúKoXÓNKq(>o–¶^•H]¬Þº·vìæ%ר’$›M†­ùv܍KaÅ|lè>’Õ„ݸ>o–¶^•H]¬Þº·vìæ%ÜjÖÜ“©°Õ¿.ÌÃ2µ[xÛÇÇ%Úa¶ýrܹۖz\¶d»i†r·:ß‹ôxa­ú[–åÂü€3pŽÎ›¦ææÄERwª#‰õŸmîFð}0ØØðÃ:æýkȯweË.gfÉ«/Òá~¸åã;îÂæäãLîÎøÎ/Û3·­7;;·.\^Ü“;ã¸ø¤úv䝇o,2ãÇÒò2ݘðÆ‚ÝÓë¹$̓ߴÂûí£ãŸ||}Ëœ±rLCÀ|—¤Í<¶âV™§(Æša§0oCsm“–·»»š˜´É¯BÐ}ð³7ÜÝ]ÔÝ%]UŠÎõqDZ›““‰äs·LØ8i§Y‘5Qw=ÎÅ’«Ckf
+7/nÒæÎy:hWÜkÝ7BDÃMæÎ™Õý¤•URÂåãRÙ&¦ï8¹mÇl­ØÝA£{)¹V±0ÆB=Ýà Zæý1M²Ø§ö	³¶óí¹væ}F“ë.ÜÉŠŒLwÞfö5<ÍeŒ<˜ï¼Í÷Ž&3{·
+<˜÷<Í÷Ž&3{·
+<L<ãÓ-מ&L·]j°hòcÜó7Þ8˜ÍîÜ4òcÜó7Þ8˜ÍîÜ4òcÜó7Þ8˜ÍîÜ4ô†OXñìΤ±Üèg0I²Ç,Ãr<1î<ÍóÇ!™nõªÈØñ2zÞugXºtDë_$ÐÈ<ãÆkÏ&[®µX4y1îy›ïLf÷ny1îy›ïLf÷ny1îy›ïLf÷ny1îy›ïLf÷nyZãÖ²®æcÓÄâ2®æc³e˜M'¤aç™n½áÄdËuݸ4zyÏLkÏIÉ2ïX¬MOrxËuéèrI™Ws1Ù²ÌF£ÄÇ«™æfë3ϸÌëUƒG‘‡œzeº÷‡“.»—$Ù<·L«¶½=#r(ìý–9f˜t:¯'¢ÎµÜî )vZû7Œ4á–uy՝k:4žeÛ™­V
+LwÝfºjy›»pÓÉŽû¬×MO3wnx™;o»
 n]¸ÉѤó.ÜÍj°hñ1ßgmÖn²ta<ÍÆfµX4x˜yçf[§F“Ó-ÖµX4zc¼¹É³­6v{¼æK{wzL<ó³-Ó£Ié–ëZ¬<LwÝnÕÝf΍3¥±Zhp>W³ö4ìµ:ML·rÜÍl¬&“ÐÉÛ}Ö]Ë;&Èó.ÝZÉ5<ŒwÝfî㱐ó6Ýj²6OIŽû¹Y®ÆÉ|»»r6<†GmyÛYWs2:MCÓ*îf6l³	¤ôc¾ë7¦žfÅ=&;ï3gMfëU†ž&yÙ–éѤôËu­V
+C#¶¼í¬«¹™&¡é•w36Y„Òx˜ïºÝ«ºÍO3q™­V
+wݘÙÙ4zeÝˉ©àÎÙ}om™nÇa¡}µ–ãfË1¼ìËtèÒzeºÖ«&;î³]5<Íݸiá‡}ٍM™wrâjx2v×§L·c¨ÐöUÜÌlÙf#Qá–|½ùgZÏ€ÐΓ­i¢@h0,>S§ÊHíX|¦rGj77,Âi<L:ó³-Ó£Ié–ëZ¬<Æ÷95ÖµÔgmóÓ6v5Ûs5ªÄÔñ0ëÎÌ·N'¦[­4H
+¡–|½ùgZÏ€ÐΓ­kUƒG’dí—Ý·.ÜaÔjO2í&Ò0Ó™…Ÿ"Wå‘Ú­ŽÉ6HöUÜffcM)‰5'Ã¶¼í¦nfGdl™Ws1³e˜MèeŸ/~YÖ³à43¤ëZh<˜ïºÍtÔó7v᧤‘6	]Á1Qb¢*úVªT*,T‚§Õ>iU©Š¦æQ>Y’Y2•ï™R¾iÒj•t™P÷Â{«ÊË,½,½v^–_ßUWUUÕuNª«ªêªªºª®ª¬êºªª®«ªqUU\UUWÅUuU\UUVªªª©ªêªªª¸ª§UÅUjªUUWUUUÅUUuUH?¿,‡”U“ËÊê×YV­^¯V­^¯UÅ«ÁE…x(ðQ࢏?zUUUUUUUUUUUEUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTÿ*þ¤ü—Sö6]MÙu?VË®JÉú¶]F–F–O¶]MÙu>ÙuÉY%dûeÔÝ—Q­­Þ‹fâÙ¸¶nô[7ÍâÛHJÉö˨ÒÈÒÈÒÉöË©öË©+'Û.¦ìº›²ê4²4²4²}²ê}²ênË®JÎJÈÒÈÒÈÒÉ».¦ìº›²êÍÖÚÞ-µ»ÑlÜ[7ÍŝF–F–IY9²ênË®JÎJÈÒÈÒÉ+'Û.¦ìº›²êseÔÝ—Sv]MÙuÉYÉYÉY>Ùu7eÔ
 •“¦Ë©+$¬’²JÉ+$¬’²JÉ+$¬’²~fË©+$¬’²JÉ+$¬’²JÉ+$¬’²JÉ+$¬’²JÉ+$¬’²~}õUUUUUUUUS5UUUUUUUUUUUWUUUUUUUUUUUUUzªªªªª
+ªªªªêªªªªªªªªª½ZÖ½4 AÕu]W Öªõ 꺮«Ô5­kÐ u]7²I$M4ÓM=’Aè†üa5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+5
+°š†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Ã	¨l	¨l0š†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†Àš†ÍÔ6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6Ô6ã9Ö¹çñœë\óÎøÎu®} I>%DUúÕV©	OZP½”ï¢Ü÷OŠœªIÌ®i\SÝNesE.òt'S°‰%*x‡‰âzO!䐇“Ây'‰âxÔGS¢tœ$Dñ:'Pæ§2ºS¡T!Ãö„é^w•çz«ƒŽ8qÄá®ÄãMMiŽ0cƒM8pÓF§i­85Äã4kN&Ÿ÷¡"AÉÇyï;»Úzþ«×  É`2X É"cn(V 2XÊ€’Ic%€È!XB2…c%„#%„!c(V€ É` )Œ–  2…c%Œ‚€’JH„ ûá>pœñœ÷ëyÓŽ5­üœsÆ÷wk\qî㎛ëòxë·MmÜ÷ªªËªö]fe{×u÷E«ê7¬Ãˆ]´öåÖJÊ%þÏ¿?>û¿]úý~»õú“ѸïêÓ¨ìj‰Ó0ºÚíÌ‹"Úum¬gÄöÚ›ÝÔî’LÌÎ(vâsÏtžÇyììj‰Ó0ºÚíÌ‹"Úum¬gÄöÚ›%™Ž§t’ffq@à·ž{¤ôn;ÎgcTN™…Ö×ndYÓ«mc8î'¶ÔÙ,Ìu;¤“33Š ݸœóÝ'£qÞpë;¢tÌ.¶»s"ȶ[kÇq=¶¦Éfc©Ý$™™œP8íÄçžé=Žó‡YØÕ¦auµÛ™E´êÛXÎ;‰íµ6K3Né$ÌÌâÀ7n'<÷IèÜwœ:ÎÆ¨3­®ÜȲ-§VÚÆqÜOm©²Y˜êwI&fg»
 q9çºOFã¼áÖv5Dé˜]mvæE‘m:¶Ö3Žâ{mM’ÌÇSºI338 p
+Û‰Ïwtžë¼áÖv5Dé˜]mvæE‘m:¶Ö3Žâ{mM’ÌÇSºI338 p
+Û‰Ï=Òz7ç0ì;6¨3­®ÜȲ-§VÚÆqÜOm©²Y˜êwI&fg»q9çºOFã¼áÖv5Dé˜]mvæE‘m:¶Ö3Žâ{mM’ÌÇSºI338 p
+Û‰Ï=Òz7ç³±ª'LÂëk·2,‹iÕ¶±œwÛjl–f:ÒI™™Å€nÜNyî“Ѹï8uQ:f[]¹‘d[N­µŒã¸žÛSd³1Ôî’LÌÎ(vâsÏtžÇyììj‰Ó0ºÚíÌ‹"Úum¬gÄöÚ›%™Ž§t’ffq@à·ž{¤ôn;ÎgcTN™…Ö×ndYÓ«mc8î'¶ÔÙ,Ìu;¤“33Š ݸœóÝ'£qÞpë;¢tÌ.¶»s"ȶ[kÇq=¶¦Éfc©Ý$™™œP8íÄçžé=Žó‡YØÕ¦auµÛ™E´êÛXÎ;‰íµ6K3Né$ÌÌâÀ7n'<÷IèÜwœ:ÎÆ¨3­®ÜȲ-§VÚÆqÜOm©²Y˜êwI&fg»q9çºOFã½iÔv5Dé˜]mvæE‘m:¶Ö3Žâ{mM‰ŽîêwI&fg»q9çºOFã¼áÖv5Dé˜]mvæE‘m:¶Ö3Žâ{mM’ÌÇSºI338 p
+Û‰Ï=Òz7ç³±ª'LÂëk·2,‹iÕ¶±œwÛjl–f:ÒI™™Å€nÜNyî“ѸïZuQ:f[]¹‘d[N­µŒã¸žÛSd³1Ôî’LÌÎ(vâsÏtžÇyììj‰Ó0ºÚíÌ‹"Úum¬gÄöÚ›%™Ž§t’ffq@à·ž{¤ôn;ÎgcTN™…Ö×ndYÓ«mc8î'¶ÔÙ,Ìu;¤“33Š ݸœóÝ'£qÞpë;¢tÌ.¶»s"ȶ[kÇq=¶¦Éfc©Ý$™™œP8íÄçžé=Žõ§QØÕ¦auµÛ™E´êÛXÎ;‰íµ6K3Né$ÌÌâÀ7n'<÷IèÜw­Ã¬ìÚ¢tÌ.¶»s"ȶ[kÇq=¶¦Éfc©Ý$™™œP8íÄçžé=Žõ¸u›TN™…Ö×ndYÓ«mc8î'¶ÔÙ,Ìu;¤“33Š ݸœóÝ'£qÞ·³³j‰Ó0ºÚíÌ‹"Úum¬gÄöÚ›%™Ž§t’ffq@à·ž{¤ôn;ÖáÖvmQ:f[]¹‘d
 [N­µŒã¸žÛSd³1Ôî’LÌÎ(vâsÏtžÇzÜ:Îͪ'LÂëk·2,‹iÕ¶±œwÛjl–f:ÒI™™Å€nÜNyî“Ѹï[‡YÙµDé˜]mvæE‘m:¶Ö3Žâ{mM’ÌÇSºI338 p
+Û‰Ï=Òz7ëpë;6¨3­®ÜȲ-§VÚÆqÜOm©²Y˜êwI&fg»q9çºOFã½ngfÕ¦auµÛ™E´êÛXÎ;‰íµ6K3Né$ÌÌâÀ7oémeÝ]ÝÝÝÝÝ]Ý]Ø–%€’!<”+ ,e
+ÀI$±’Àd¬!B±’’‰±”+@ d° ’!,  e
+ÆK+ $” ‘­ïzÞ÷­ï{ñE/×(Š¿æQ	èˆIïÛ÷>åÝÝÝÝÝ»›—w at l糜 l±¬d‰ÌFÙfÜ lçe›p³†§\lç°e›q’ÆÙfÜlç
+1³œd±”‘•n6Y·, Îp I×’ÆÎp ¶Y·9ÆÎp„lçe›iÝvÙÝÝuUUUQUUUQQUQUQUQUtÌpÀÝTEUTEUDUUEDDDETDTUÜ<w<lñëxñãÇx¨€ %€É`$ˆAO e
+ÀKB°’I,d°+FP¬d°„d°„"A P¬! ’À e
+d±’À P¬ç9Îs†ŠÀKBNœFÛ»nîªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª®™€nfºªªªªªªªªªªªªªªªªª«¸`nÞffÛ|%WYDUÒ	ÓŸ/WŸ«õûÚ“Ѹïî-:ŽÆ¨3­®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw­:ŽÆ¨3­®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw­:ŽÆ¨3­®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw­:ŽÆ¨3­®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw­:ŽÆ¨3­®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw­:ŽÆ¨3­®ÜȲ-§VÚÆqÜOm©±1ÝÝNé$ÌÌâÀ7n'<÷IèÜw­:ŽÆ¨3­®ÜȲ-§VÚÆqÜOm©±1ÝÝNëmÝÝüN}ÞÞî	æ’I$’I$’I$’UUQÅUUUUUUUUUUUUUUUUUUUUUUUUÓ0€nªªªªªªªªªªªªªªªªªªïŽñÜñÞ;¶xwd  ØØ
+€
+ŒˆE±·@Ù`ccd-€
+Œ–666`BØB6BØØØB66„Xcd-„  66 0aØØ  Ùccc`BØ ØÉd ÈÍÝÍÝÍÝßó‘q;÷íî\kž~}Õ­Ó]ïzy%ÖI÷SŽLP9N¢ãDqUq]çTAÅêN–e¸yÄG›Ç‚"æqœ@k3ëÀ´s‘öŽ“iöûæû~×~ækɍ;àñGƒîªy³,ñ¹;.iÞ£žrÁOn!îçZ\ø;Öî<úñ¦û‘ÍØ”5—Ãt6ŽùDS¾MÔÔ²4ÓPÔXÉÍÃÛ¼^:ëLj»±®õãÇ‚žïÜn%§Û¯ާÛKOlõ¼ç8æg-³m@ä$>kä÷Êuò{ÞÏg¾Sϐ<fÀò#ô8ž‚‹<U‰ìð©ê†…pÍwØqÏT}né¥y76Ñ7mͽ˅kºFòÑ6²wJ¡Vœ÷ʾžõ¡íì<™ì¢r¡~IXra>–±=ïg³ß)çÉï{=žùO>@<A˜{ȏÐâz
+ DñVs0âê"ªñɇ”#÷³Ùï”óß{Ùì÷TóÔ÷½žÏ|§Ÿ x<Ì=äGèq="x«<f0ò'Ê¢¢eDGØp:ªUJ©JJ©U*¥KXR’”•RªUJ©R¡J‹,‹IJJTX¡b…)*T¥J””RQIbËeJJ)*(Y,‹%…’ÉEBŠURTT*),”Y(TRT©b‹%
+ŠJŠ…E%в¢ŠJ)(©),‘Rb¬–S&L¶¨‚«å™spéߦ®¿É‚Oá*T’’’’‰R¡P¢RPéÔëÍ5<Wþ_}ö}}¿zþ5ݶ[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[e¶[Ù÷ÙŸfgowNë-²Û-²Û-²Û-²Û-²Û-²Þû>ûìŸöžýRÑ>ÔϹ28_ãî@é#Unñš•”ÉY2dÊ•¤XP
+­USâTE_¤ý³ü T¯õþØTAPYe˜DXD at D@TAPYdPe–Xe‘…–F?YúÀ¨*ˆˆ‹0ª"""ˆ³",*ÂË ˆ" ,²ˆ€¨Ë,Œ" *
+Œ²ÈÂ"Ë ÈˆÂ"2"""0‚3,²Ì" *Ü3÷0?p4ÿDDEADdE‘DYQ–YD–YE•aeDEYVYDe–ADDA–YDW3˜`q þ¶ÛûƒtÝ8~¿¸a˜`Æ(  ‚‚‹0‚, "   ‚‚
+( Ë È€³(ËÈ  +2Ì,²21Ö?OîŒ33Á‚  "Ç€ˆ€ƒ,ƒ,Ê2Â,˰ƒ,ƒ  ‚ƒ0a2a0cI˜™˜Œ€‚‚2ŒŒ,Œ "²	ƒ2UŒb`ÆÁˆÆ#$˜bL‘“	ƒ0Ì>Uý'(¢¢¢¢²2Ȉˆ" Š***+#, ¢²" ¬Œ²È,ÏÝEADQTª–RÕU©e*•RÊU-,¥U¥¥”ª–R©TªUJ©J–RªéÃ_Ö5­Óöw÷B( ˆ Š Œ²Ì"°‚  ˆ Š ŠË È"
+2#"³#&HÃ&#ök¯àkwMn馵£MkFšÖfMºcZ4Ö´jkf“MnÉ­kc[»›6i5˜c[¦šÖM›4škZ4ÝÔÓfÍFšÖné¦î¦›6j4Ö´jlÙ¤ÓZѪ­kSMkFšÖMkQ²i¦¤ØÙ³I¦µ£[º}MD8H2g¿33UTYdDDDDUUUYe‘TE–YQe–Yg30ã¼ 
+ƒüŸ½þ¨" *
+‚ ‚È2‹ˆˆ
+‚ ¨*,ƒ"€¢2Ë#ˆ¬È²Ì,²0ýó÷Ïß ¨" " ",¨ˆˆ"¢2"2¬,²bˆ,ƒ" *2Ë#ˆ
+‚£,²0ˆ€²È2"0ˆŒˆ€ˆ€ˆŒ ‚3,²ˆÕZÖ«ù‚+áu¨}ú&C²…”–URôS!2™*©)D¤‘P¤
+…HŠ”’T¡*J”‘IR%Jˆ©P©AIQ”J…JJ‰R‰P©D©H¤¨*RT¤¤©%%JJ…B’¥I)*”…J…%DRT0É,•ÉY&%e2†S*™2†TÅL¦@ÉYIeLC%eJÊb¤Cà•"Aþ¸ÁH$H>²åªUªZZÕT­Ñ?Ç™±.ìÖÅùþÄ×R_O&§¤‘0ÉV*ʪ¤H~OŸl±Ë•ÉiY»³º—î,#’Dõ‘"e! 9ô²ÙhªõežÈžíÆ3ç½¼}áÒMñð´²Çʐß@ÉÂ<øUUUUUUUUUUUUUUUUUUUU}™™çÆåŠ.88¢',÷¾´77Ø›‡½ŽçÄEeñ­lÜó³–Å‹%‹+æñäç>I	ÈGÎ>n¦½Ç99­Ñ¼å¦·vlnšÔÄÃL>nzvªŽä¸cro..v¦\ø×`œN¦°ÄÆ&LŒLfF*b™˜lÛUa’DÒ$~I!Ÿ)ö²cãïÛò­¿u¾™ó(Š«qéY©nîŽîÏO¾!Öw®®k‹žû yE)©“7Î
+;»ÎéÎ"¸|‹†¡lg¬Îðç7vߣHh¸qW»Â›‹²IdpûÙ×ÓO|Þ7\›2ÏusÉcYèçÞrlË>7îæ¥ÓÊûÎyä¹¹æ×‰¬¦º¸p¹Ó¯¥Ï¢)jwxªq…5Ãpæoפû¼×cR™q'Ÿo-¸®ý?rQ¢tù9±µ|üúa¢u;±>À3<ÏgO|+컝ÎçNü+܃¦G0é‡s8§¼YYeí4ˆ¬“,fyDEGÍ•0É8Ž&›žÎ*p½í9[·N\çW«§®JåêÎvë´9lÇ‹pxϓ͜~؝gÛ]W;™ðû»”Býk¦‘Y&^Ïg³Ç~î]Îçs¯umôÁé=UTzØ`ʲшtñee—´Ò"²Læf©¯+™NF»¹ G³Ùìñß…úz§s¹Óî–ÞÌôôôóÝ[}0ô=VG‘é9kçÅ•–^ÓHŠÉ2`yTÃÆÌâç¼XÌ£zÕˆp8xè\4ÐÓ9q^О$¥ø¡;¼;v·»O9é›Î:qÓš¢¶í*ŠÛ´ª+nÒ¨­»J¢¶í*ŠÛ´ª+nÒ¨­»J¢¶í*ŠÛ´ª+nÒ¨­»J¢¶í*ŠÛ´ª+nÒ¨­»J¢¶í*ŠÛ´ª+nÒ¨­»J¢¶í*ŠÛ´ª+nÒ¨­»J¢¶í*ŠÛ´ª+nÒ¨­»J¢¶í*ŠÛ´ª+nÒ¨­½Ÿ}™öfyEÝÛJ¢¶í*ŠÛ´ª+nÒ¨­»J¢¶í*ŠÛÙ‚xÜt댰¼2Õ—ǍÜñ\.ú‡èR.T¸ãÆw©j±Kzò®)ytf$WNNB=×ë³÷QVØûûôÍVIW…RéquwÙÞÍ®ºÐ½R©*ËK#7¯Ü#ˆšç“f¸„tÈý{³÷b_Ì2þü¹/¶LÚéúÅdçµ3½Kz»ëj]‚o–ÔµÏ7Ÿ§×Ë×å8_ɉOÒI7í¶ÛUUUUUUUUUUUUVÛm¶Ûm¶Ûm¿§é>¶g×
+„ky21Ç!gëôïÔ?Tév·œ“#ôRñ„åK›¾ºÞ
+ïRḭ©n¶››RÜܶð›[Uº¼UOB5 ì:†A&HÉ„l#SÇS°Ùã¿mÙ‰ç‡ªªªªªªªªªªªªªªªªªªª«ñŽÑmjšKSŠê¥Äp§Îœ#†# ÈÈb×!‰Ød™ÞuòXGÓÉÎÛf,ûݶdý„u׿‡£àÎrdää™Ë»Ì™øü„oyé¹ÈE:±Ÿ-Å|ÅÌËHü@Î~ ûʪªªªªªªªªªªªªªªªª­¶ÛxÈGÅ„Y²ŸSaù*"¬‡•p¥¸miKUÃ93p0ªªªªªªªªªªªªªªªªªª÷7˜„a‰ˆGXE9!–øú«_ŸŠúþ/ê~¶êîï¹~>cn³$;šù™#WtÕIRguj.|‹¨û§½dºåš­e¨ê.xOnZª8q4sS63Î/NfóOƒ…ömæóhàŠ}Ç=äêYÏ{$¼y^pãs™ãÈyÂA3à÷}m;ìò”x8tëžlË4Õ•˜×2Ðê"ƒï9æÌ³Æäì¹§ÛÄFáÇÝ<ëoâ.§6×ar^|¹5ö›¢Km-Ï7ÍkQ·rÏ\æmÞ½çÇ;޺뜎U¶rO–ôt;Ü:ªŠ(+'.µÙTD»lê,âöÅáÞ ö>á_¦LñÏyç\çqÎIËK%[8ž¶ôxöÉË̲rrûÏ:ï8ãŽsŽ8ç#•mœ“Öôx÷“ÕOIë|<{þÈ„’sÏvi‰•$2¶émµü$‰Ö×SVOé$‰û÷íßßï;Ìîw¼ïÃMc
+5Œ4Ö0ÓXÃMc
+5Œ4ßK-Û¬a¦±†šÆki¬a¦±†šÆki¬a¦±†šÆki¬a¦±†šÆki¶YnݲËví–[·l²Ý»e–íÛ,·nÙe»vË-ÞϾÌû38•Û¦±†šÆki¬a¦±†šÆs>ûìø™ß	bÌ™®ä|ï#wñôªQRTKªU(X’”U(©(©>?JSä:É™‘ñS,É™"Ù…™G	üB0âs!°ŠlSll"å»2ŸÈrééÏ/âÙöÁªË.þ›	ÝÞÌee12•˜ÌeXL\AAïáUUUUUUUUUUUUUUUUUU[m»õÙ‰°$1Éb~œH1Ä–rWèž„c‘,ᰍIX·a±6<9ýqê<œù(«b8èìŽr"=øXG~ÞüU¥nDfÏl~zÙØ}C#$ž&Í­¥´•µm²mE[î.äì#ä:“½ˆi¤`9Ù"lF
 ˆü7Éæ[m•ù‘¹×ÏÕ´¥…±m´QUm)JxúXGÈ9ü„~„ԍHtä#’"#„0ˆVD,²Å•†n-¥m[Tdd²&,•„™YKÝ-Ãqo$[U°ÐÔ­#¾r¥Ô‘9ˆ›øo¢ÒÒÞÙ&~°y9ˆ"½UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUÜÃì0ûj[«i•ƒJZi]fÔ»8®'IÈGr<ä#‰œœ„rs“‡‡aHz„}|¾2[Uc¶Ev)o-N²–÷µÚuRæ‘ssÊ»N	%ÃŽ)Ê—
+ál´•£QÒ¸RáQ¸N›Š²÷ñ~øZsÿ¿†h˜s¦þùøP€y¹5/(ÓÝé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBá“Èj´Íé¢açL!éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<XõR­T³Èi‡M:ažBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€xdò­3zh˜yÓzy‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä <†«LÞš&tžBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ðÉä5ZfôÑ0ó¦ôò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃÎ
 ˜C§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„Ã'Õi›ÓDÃΘCÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„ŏVùF™½4L<é„:y‹­ò3zh˜yÓtò=[åfôÑ0ó¦éä ,z·Ê4Íé¢açL!ÓÈ@<Xõo”i›ÓDÃΘC§€x±êß(Ó7¦‰‡0‡O! ñcÕ¾Q¦oM:ažBâÇ«|£LÞš&tÂ<„Ã'Õi›ÓDÃΘCÓÈ@<Üš—”iîôÑ0ó¦éä <†«LÞš&tžBá“È{™¹±kU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôòžCU¦oM:aO! ðÉä5ZfôÑ0ó¦ôò7&¥å{½4L<é„:y†O!ªÓ7¦‰‡0‡§€xdò­3zh˜yÓzy†O!ªÓ7¦‰‡0‡§€xdò­3zh˜yÓzy†O!ªÓ7¦‰‡0‡§€xdò­3zh˜yÓzy†O!ªÓ7¦‰‡0‡§€xdò­3zh˜yÓzy†O!ªÓ7¦‰‡0‡§€xdò­3zh˜yÓzy†O!ªÓ7¦‰‡0‡§€xdò­3zh˜yÓzy†O!ªÓ7¦‰‡0‡§€xdò­3zh˜yÓzy†O!ªÓ7¦‰‡0‡§€xdò­3zh˜yÓzy†O!ªÓ7¦‰‡0‡§€xdò­3zh˜yÓzy†O!ªÓ7¦‰‡0‡§€xdòü÷߃>ûð}ù2}‰fe’zb¯EìÊ–”¸ŒN’MN–$ÔjL›,6#!±Q°Ô«‰Rî+‰º©–Õ‰68LMICf¢$g)\Iq'8AÆFªÕ¤NI#Ì?©Ç)]"äNV-Ò,Ä,Ä,ÉVE1"˜Z¶É„TȵF$S*–0Š“%“ ¦,^¡$å- ŸºÃÕØGI"=q–ϏÏÓÌůÁ-Xワd$R¹ãÉÄW)¾tÖ+'~T×EÕ>²u¹òv󊪊»¢§^sˆš"â#œeÈ
 ÂÜ>pGãϪ/¶åŽO&47Ú¤2Y¬KŸ<"žóÏ)GƒaØ´ò»wËžaMLÜ<o¼¢ÓªŸxóɍ;ñxÖñ¼ïÆáÁbεç™öläÙ–xæñÁX‚àqvц'^«<D©Ø¸ç=ºÛqçÑ©o8ó'yó½áóÇγ¬ËLj¡?t÷||}Ó׏ñãîø`ð3ÙáO(ý
+z¢ô(­žDGÒ"Š*±}óxû5œ–IlSw7z³t×®7œÓjm·s\EƒÇ{b}}g})xò¯TíOY†ûE¼xïŸ{Ëxñß>>÷–ìÈ #<xQ|§Èú(¨ò*}ŸŸ/Î*üÖ|â-ãǼsÃßy¯ñãÝðÞ<{Ǐ»áƒÀxÏg…<£ô)ê‹Ð¢°xìö/‘>W=MžEõ`˜A¡ã>?YºËuã^!=Á9ïéÓÃÏ~?>ݺõéÛ]·Û·n݈Ój©mU#Mª¤iµT6ª‘¦ÕR4ÚªF›UHÓj©mU#Mª¤iµT6ª‘¦ÕR4ÚªF›UHÓj©mU#Mª¤iµT6ª‘¦ÕR4ÚªF›UHÓj©mU#Mª¤iµT6ª‘¦ÕR4ÚªF›^üüûóïϾû»“«¯¹R4ÚªF›UHÓj©mU#Mª¤iµï¿???>ü~ï¾jßårVRGØ%„n!dË#"XeZ™"ÈÅLIJ™Z±²É’J£$¸±L›QË$Ž ?ß*Ùk&fI [	‰aßÓ#*#’ŸÀIJx#’(‹ Q(Š’"¢ˆòA’0E‘#I"dÏ_´çż’ê”ïRÒºT°¤eLI”±RÊX‚Ê–@(‹ Š"ÂQ\Y=YOVY>Õ¢|L„bG„XŠ$–T,ì‰„%‘œ`ÐŒ™2H+µ/Êz±n2=U@Ǹ€b€%UUUUUUUUUUUUUUUUUU[mØáö$L“HO»
+hF$ÆÉ&`ŒËrÈ)ŸlœTcîOЉâeB\~Ãûm‚Ù%¶Ûm¶Ûy$}²J‘Cd‘0Œ°PŠ…BKÈE@Ï‹ýŠ™_vÕ”YÑ3꥕uªeeCªî$ŠÊÀ‹D’ÐŽòÛm¶ÕUUUUUUUUUUUUUUUUUøƒðªªªªªªªªªªªªªªªªªªªª¿–uÏ6eåû?+ö~ü,ȯ•\[=†ˆ©±'QÓy,¨¯-vù5Dx|.uq¬ô¢(V½ˆ8‚ˆŠÀ¶fë‡\>÷%ׯ9Þq$‚4×–ógŸZ«óœlË8{>|Kž9÷O<˜ÒƒJÍwÈ«
+ã®/;àñY¡ß9Ô²<}òtv/Vޱ®)Â`ÝN"Ž÷õï+ÎmÆÃQ
+Ì­ä¿{äIó?nÛ®•rQ™:ë¿wM9ÍÔÖØ®òoDêk;«×—vã{"DçÆN»òü÷žžw×Þ:L;™òçA:ªw:
+¯j)‘Q0»š©ðñZŽ£¶2ª™šNšõCç:N¹ÜÍ\ø‚·Þzyß_{ÏO;ëïO['¡†G‡OÖÛnŒ4»Uo¼ôó¾î{ÏO9ëßyéç}}ãÃÈô¶x¯[kLJ‘áÓÅyUüÎ([d¶S0Ì3U™,²2Êf†a˜X²ÈË,U–FX1ŠU‚ªKE¨ªBªKQT*¡eˆªKd[ÊE²["ªTŠ¡T•Hª’ÔU%R*¡eHª’ÒÔ•BªX‹,‰eHª’ÔÏžwù¸qÀeˆËm¨rÛ'ñ$‰×]8éÀàpLáŸÇÞü^ÇO¹Þ﹯½îóÝÓ/ÀL%™~a,Ëð	f_€˜K2üÂY—à&Ì¿0–eø	„³/ÀL%™~a,Ëð	f_€˜K2üÂY—à&Ì¿0–eø	„³/ÀL%™~a,Ëð	f_€˜K2üÂY—à&Ì¿0–eø	„³/ÀL%™~a,Ëð	f_€˜K2üÂY—à&Ì¿0–eø	„³/ÀL%™~a,Ëð	f_€˜K2üÂY—à÷yî﹯½ïÀ{ì;áµ(ñqÌÈ3³0ÀÂÍÏÄddRªªªªªªªªªªªªªªªª«™™™™™œu‘òE]u
+:×lϳìºlñœ…'Ù”•VÈ’XG¤HëӅͶ¼™Él•l-W¥³E\UUUUUUUUUUUUUUUUUUUUè;—ÎE·ZôæØ¶¥µè*Û dgéÒªªªªªªªªªªªªªªªªªªª«ã0*Ø}»^|³6Õú6FÙm+‹E«-"Dƒ¨ˆ‰0„Ƈ㠀Œ¥UUUUUUUUUUUUUUUUUUU_æÉŠLT‚Ȫ“P"
+1e=õÈk}^ÕµgÛ˜ŒÇáUUUUUUUUUUUUUUUUUUUW¦æf¡„˜'^k’zšë]Ž9IËm³úfvÔ·7K at 0¯UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUwü‹ÇåÜ‹Žß“©Ólr­Z-œ™öêìA‚ó1ü*ªªªªªªªªªªªªªªªªªªªû,ÌDÌàççdRªªªªªªªªªªªªªªªªªª®fd—å”E_Ü*§+}¼3^9àíã­ZwOŽéͦ]r÷•8"lnä›7æ5™G,SYWî§\$Yp™Ï+Ú“çÛß±x€ââäf臨$8n>Rù6ï¾Þ,ÍñÏ9Ö̳‡{9%‘Üܝ˜Ð÷|‚¤X^¢œöuôÆç§¼ç=x<Vhov5)Ⱦ3‡ƒÅgƒaØ´ò¦œsƒ‘9.èæï9"ûuúæ¼x–ë»Î;BÛö©Åß­\Y¾Ck–Û}W+œæód€Ÿ7“Î9Î8àáÄäŽ['‹--”«Èå«j”NS¢â⊮g׋œ8pÈŒµlqÎqÇçpp¢œN#–­ŒL‘–ÉÇ9Í·xç&8ç8デŒÃЏ®'Æaë¡:Ü×[‰ºÇ˜²f<™Ÿ“Ÿo üO>ü 7Üpw¯¯>ïRî¬a@Í›«P3fêÆÙº±…6n¬a@Í›«P3fêÆÙº±…6n¬a@Í›«P3fêÆÙº±…6n¬a@Í›«P3fêÆÙº±…6n¬a@Í›«P3fêÆÙº±…6n¬a@Í›«P3fêÆÙº±…6n¬a@Í›«P3fêÆÙº±…6n¬a@Í›«P3fêÆÙº±…6n¬a@Í›«P3fêÆÙº±…6n¬a@Í›«P3fêÆ
+i¿~~~ŸÍûß{í;G,¶O·;–\Û‹2	
+‰¯êHWÉ$KÔ#î>ŠsáÄ¿xÅœ@ÕľW4ÌÐŒý’¿fªªªªªªªªªªªªªªªªªªªªªªªªªªªªª©À€áø³ ¬Ì0ŒˆÁÉpÇç‡ÜüÙòÍâvUÙž`µ'®k7nfTÐÇøØÃƒï$’.2Ac2$ŒLȈa™ ¸˜ˆ¥‘!K$‡ÈäŸ~âgÔp¬Ö;¬YlŽÛYxÖÕF°E’Ç¡Žáß9}àP¾ÂÂá7rp’2íëm†ˆü„}øåI,‹%„±ãÏŒ“´›iÛf(Êsy›f¸†9˜ dAú
+UUUUUUUUUUUUUUUUUUW33:,X,X`¬Y)•‘’Ôpës¦)œq£Ñ6ÌPåÊæ°E„å¶Ù©Ñ‘T…–$´B™î3;^¨Ö¯vjb•¶ZUÊÔœ’CŒ”HüI÷™Ä¼q^÷Ä4£ßd’‹ähw¼WÌ)ðÈ¢ªºæ›ñöÎ.¨Ë¬„É;Ï”S®#
+[«§„W7zœÄCˆ8„N.B‹¦ˆ¹Ÿsy»»EÊç2~%ζϗé\Ô¾:«ï7NùÍÔÔ²4Þ}ÜÏa¹—ÝÅ:?gÏ	sÇÞëžy1¼G9„‹‘9=}1¹A¥f…"䛸…:o¹l¨í	Û[±ÃNoÜ®)¾§Ž/RïܾEÖÞï6^%í-'o½ãÙÞ¯}ž÷g¼ú}ž€ög‘}
+"¥CÁžÏ¾ZaUL+ØkåõV黈—˜ÝcuÓÖŒ0îŽé¥;»B*.(>Qñ×µïrò¯³:Õ"*üÔç\{dzÞ_Ï{dzÞ_σÀA°=ê‘ôç‘S`q刨ãÉ.aïxö{Ï®Ýöxö{Ëß³Þñì÷ŸO³ÁàðÌò/¡DQô¨ysƒÀx+ñJWÌXøOç"H䜶–#–ÛSù[m‘ËjrÛ$ŒÃ“5ÄâkŸ~{ï³ï¿/ïËûã»}¿·™Ÿ­ÏÙ—1Yï$rÜV|‘ËqYòG-ÅgÉ·Ÿ$rÜV|‘ËqYòG-ÅgÉ·Ÿ$rÜV|‘ËqYòG-ÅgÉ·Ÿ$rÜV|‘ËqYòG-ÅgÉ·Ÿ$rÜV{É·Ÿ$rÜV|‘ËqYòG-ÅgÉ·Ÿ$rÜV|‘ËqYòG-ÅgÉ·Ÿ$rÜV|‘ËqYòG-ÅgÉ·Ÿ$rÜV|‘ËqYòGwY=äŽ[ŠÏy#–â³ÞH帬÷’9n+=äŽ[ŠÏy#–ã÷ï­ûóßyú~§gåÇßËVÎw&Md(ÎC¥ÌlNsù*ŸaÎv'*Gíe™Q’X©É#ñ³ó3Ÿ‹R©EáhhhBôtp{9ËartNÈÅ‘R¤©Q'ëãã×åù‹m•912,ø¢ôåu9šÉ:+hɰš‚ÒÅ2ºÙš‰–$¯žæ|÷ªÛe–϶<Ô©“›ì”ë¶ùm·,ä<¯æXG×$’ZÅ“*EŒRV%*Ë
+‹
+” WÇǹbß™'v>óƒbÉå,ߟ2Ìdât#pIU>œJ$(	aûD$c·k:ó™†S³Ní[·2qa“}ÙÑA$æ›ùªªªªªªªªªªªªªªªªªªª«~¸Kñ'Üúãå¶•ö¤³
+ÈÉc«7q“¶nÌäªì¥¤v²§]Dµ#%Iæ1ñU§Ê’äf*agº—#‹K^»zI5ûO°¾’I‰ò¤ÝŒC"©,YbYX«+ÁâªT®{s
+4?3Ãù×àwî‹ó./˜JßN4|š“2«)}ޤÆÖÉò²¤Î=çz¢z„Óm^:N#|ýÎ{–"f¨…„‘Y:iŽg»}öºæ¶eš6ö¹ôíŸ)Gïä¼u^ç%Ï¢)œéä<9‘º!¾ù:"›©}ÕN¶dxû½ÔòYæRq
+T²G
+§=©ä²=›“³”¹©cY°&FæúZ¸ë6ë»õqÝvÞVýœÛ•E׿×èç©Õ6Íuôóxñç}ãÇ>{z}ïx÷Ÿ^Ÿg—Ê({3Þ©òÊúT„=ž=•JÔÒ®({\×ܽµN%Cæ-¶jÛÛ5ÖÆík«dÉ&p÷ÏÍéöz‡èóËÆyú¨L¼™Y{Þ=ç×§Þ÷yõéöy|¢á#‹žÌ÷ªEÅ<²¾•$9™Ç–"
+s'‹ |(,0ø=++ÀŠ+Çáï÷Þð{3Þ©òÊúTðxðªÉòߊ[lù2¯ÅV)Çž8þGûï½÷¾üÏ¿3ï¿gÌcúßÖvö–&´Ç[SZc­©­1ÖÔÖ˜ëjkLuµ5¦:ÚšÓmMi޶¦´Ç[SZc­©­1ÖÔÖ˜ëjkLuµ5¦:ÚšÓmMi޶¦´Ç[SZc­©­1ÖÔÖ˜ëjkLuµ5¦:ÚšÓmMi޶¦´Ç[SZc­©­1ÖÔÖ˜ëjkLuµ5¦:ÚšÓmMi޶¦´Ç[SZc­©­1ÖÔÖ˜ëjkLuµ5¦:ÚšÓoïߝûŸ}÷ÑÛiò‘^³wjdS8¹.$÷j受¾	Ä8X•dUeRª['yÅ„ì¹Yc,p{LäímOÓø„r~êÙôêÏT,̇ÞK‘XNl¸ÉØ“øT¥ü¶Ûjªªªªªªªªªªªªªªªªª«øö{¿€\Ã?,(¿-üévä/SÙ$v®ÄœæH´ç3>-m̉QÄܰúúg >Û7†W70ø:‘Ð>3ôøUUUUUUUUUUUUUUUUU¶Ûm¶Û!"AñV–¥YT) &F*Ç“ñóqê“\ŒÌGÇü9tÌû?<LL
+ªªªªªªªªªªªªªªªªªªª¾ÄA1DÁîv‰óæ&ؼ™Žì/L:Ï[mµUUUUUUUUUUUUUUUUUUä|’àaúp#á±ilAüRÒQ#iil¿xü‰"u×NÓR«®}ôúûöVLý¯Û.aAº0 Ý˜Pn…Ì(7Bæ¡s
+
+й…è\ƒt.aAº0 Ý˜Pn…Ì(7Bæ¡s
+
+й…è\ƒt.aAº0 Ý˜Pn…Ì(7Bæ¡s
+
+й…è\ƒt.aAº0 Ý˜Pn…Ì(7Bæ¡s
+
+й…è\ƒt.aAº0 Ý˜Pn…Ì(7Bæ¡s
+
+й…è\Ã>|èOÒ”þ!‘ÁŒj”²–åWé”EZ®·„í;N+¾÷Þûï¯ïËûïÛ~·gí±Õ¢H±iUbҪťU‹J«•V-*¬ZUX´ª±iUbҪťU‹J«•V-*¬ZUX´ª±iUbҪťU‹J«•V-*¬ZUX´ª±iUbҪťU‹J«•V-*¬ZUX´ª±iUbҪťU‹J«•û÷ï¾ýÏ¿~ýû÷ß~çß¿~ýûïâ§ìÈGñ
+Ă
+ÍeUUUUUUUUUUUUUUUUUU\ÌÏ šRÒ–N+¸By!<hM!>y	úT'øÁ?2„÷A;Ô&HO©B~ T'PBe"¬d¨{•Wç	ú*>°œA?pM„ú”'*ˆ«ÿ'쐟`OÝ!>Ù	ÑBx*"­ÐO	DUøÔ*4ªT¬û*?úB`MIWr„ø¡>
+¤Ò%.N’ˆ«‰(O¹Bw™
+²ÌÌ˘Ë3UqÄEWUDqÅUDEQÄDqÄqDDqDEs030Ç0ÀUU\qQÄUU\qq0¬³1æ¡Qö„øÑK•	Nä&(O¹B{%V”'Ü¡:¨O|¢*÷J"¬Pžõ	òÐ ý¯ÛBÿ¸|•ÀUW夽å	è„øÂjQy…UW–J“ÙA6¥SÍBp¡Q¥	ë‚{‚nBpIW¶Q{àŸ:²Û(оY(LHNèL‚tše	Ø'½Byê¡>YDUà¡<è&A<Ôªt”EZPŸ2„ô”E\B~)DUʄثíB}°êÊBw'„¢*ôR©æ¡=ªU;¡=ªm½'PœÊ"¯‚„ï	êR©øeWT*Jꨊ½J„RûÐM¨M’"»Å*ò‚|òˆ«¾Qq(н’ˆ«ˆ&ä'¶Qy¨O%	”a1BiBzä'|„ô‚tTE]%WÇ	Ò”E] ŸD¢*êEDU¸'¤&ä&”ªnÅBwHM¨Ob%yÂw(OÕ(оåDUÔ‘ÖBuš’„õÈOE*ž*JÂQxÈO`MJ"®Ò„ûÊ…Eÿæ(+$Êk#²w€C\?ðßòÿûýÿü … @ýûþ    „_	3ãê³éT   (g¸©N¶²¢•€UM´O# Þ ïCƒ¾    aÐùÜp@³'
+¢è>ØÐ{¸; HA¨Ûª ô     @à
+!Ð#tx!£ÃЊˆ…!* ÃÀ`pl 9((QSÿ`IU$Ä4Ñ„ÄÐdd4a i£ª~¡UPИ&& Èѐa4M
+
+O=U%Oh™€Ñ„`¦@€i䐩5$ÄÐ   C 4   š•BQêmAé4iµ
+   @   )D„D™#F#&@І¦Fšhi²ŸÔQ ý …ýÂWýˆ2胊ÄÈ3…[W,”â¸[MfaýH?O”-)¥&¦‡tªÑ4ažº¨½„ù ¦*¤õÕ
+9Ê¡¥PÑZdQß$Wæóø+”R¤`ˆ_ÃüuÎgÜ"j8û†ÊÄË‘%Š/ º„¶÷57Úc9*øhÄ.B‹´Œ¸înûÞsž4`è:4hÁðÑ£]AÑmº+—Brh	ÍÉ '4æ‹ èrM‰ÍI¢94h¯@–èÑ|0{
+Ý£F½îŽó¾÷~,·à»´u—@®hŽMY£4)3mÑš.‹ïxk|:4G÷¡ï{ÂûÝ÷£”ÔŒ´·Hm;[FÆÚÛ¶€5šîÇ·›+W+6žÐ¶ ª´´JzB’C M‰\ÚdɐµN²kodµÔ¶f'wm¶Ô’šéi$ ®I»$¶Ûl’ !$“vÐ + I-m¢KÝNI	'´“»ní»m¶À¶Ü¶îÚI2I’D’¶É%m¶íI-V´Ø€’9cÖ”2ÆàR©›‚¸7Sv©l7µ:V	$ã"j8fEšòc„=T)P  S`¬›†·nÕ­Zˆ„ã!ê8fEšòc„=T)P „Ñ9šŽ‘f¼˜ÁaU
+T(68N"£ÆdY¯&0XAãÕB•
+M‰¨å–KVkͬÈ™`d+hÖ\JÕ‚MÜ…¥a!ãÝÃ.\•ã6MÒRÝ5m²X–#Ov"Pl&í@@2ᩪIÆCÔp:Ì‹5äÆ<zU.J͹vNB£ÆdY¯&0XAãÕB•
+
+Øæ ‚(œD=GŒÈ³^L`°ƒÇª…n¡A£%r6–ÞáPOp{©0ëK—[‡t	7xÞAˆï7+pn¾&§Íá&Äž»Q¬QS42]Fë8å’Õšók2&=T+hÖÜ„=G,²Z³^\`°ƒÇª…*uH$ÝÈZV=ԥ˕¼fɺJ[¢îÚ܉b1%wj%ÂnÔ-»àn^ÍÙ“·á¹Ô‹rÔ#Æ`
+¡,pnD™2È,Ãsmñ;ÉÞ¨G«XÕÎëïkI}֐ÌSpLѸ&l™nâx͍ã `dz"¡,	 ò(*À·á¸¨2Ápe¨[†e'£fZ@¹b2Ç©b 8ñb`E„¡n[›^[¸ž6Byha0†ÞÍÆôÍÆöÏ<yç[î\Uˆ²à¶KÈ)엝õ¤ôUû‡z™­pvfÜçUÉ¡sµ¾vx‰îðìñÊÑá=ÞEÐúì'3:é-œí¹wwfÛí›´W§€'< zZÍ%•¦XÞ;šî»
+%uü][ïJñm…ŽëUÚªå–Z‰onÓvзwc@!œÌé@À„ïÖÉ"‡*¹­²½“lèâ%À´“<³·2a mI5;Ã.A–]]Ñp‰«*Ûª>3<UÞ›½ä«;ƒRTîªË¯C¼ç&/*ªŽ_ºâ¡3;Ýѧ'dì#šÙ„ÔË«¸3N=n&í´9§E§ÝYC“0ªÎëÉÎV^¡¬i5¿792¼çšªD.0îÙD]në@¬mrÆ!0$»·s)Ð ¨˜ÆäSm˜ÉxÏÁìäfìõ]Û›ZBÎ9ÑU( z
+3ZÓ¶«"„¹Íª¯9¢ë4áÚ¸Bo´Må¦sFò±°ÎFö×'·eØ0Â3“¾¡ÎøÄ÷xvxxÒðžã#ys^èÚ;[;×ô}àøºá+£øïÙݾÔ'$d†zFª¬ç·w7}Í›»e²Ö5ÀÀÏO zOj w».“u]öÍÙB¸Ö@ñsÕ@:›N—ê­©UU2Ûí²Ùu­§Õî»N.¼mÒ5Ôt
+Tå÷°w[[¢1„!p @‡¶Ó£m´•¼æ‹+ZW‚Ý"(¤Ï6€Ù¬*r7Ê·vÃaŒ!''|Ë,8ºÔ}ÅÖY\$]à¤jsÎÁAÖôÝÏ‹¬²¸?Œ»3ns·&…ÎÖÎ.µx>.²Êàþ2ì͹ÎÜš>KŸuKAg/wswwfÛí›´WºOí @‡%•¦XÞ;šî»
+%+ë\Åov¶ÂÇuªíUrË-D··i»h[»±Š0Â9™ÐÏIh1œ½©k°–ú¶Û%00ÓЄç€ҐãIp–´H^7WnÝÀÄl}í¸lךаIU€>ì–Öt„a2~<˜goÀ%üfK“=‘q†dd˜ó½—’9:ÞQË'd‘ÊaÓ¨-"ì왲HĤFr0Žd¹“³y/)ËÉŒîö7½“f1¼£%“³Ýìo{&ÌcyFK'qÞÆòK'crvc9ÞÆ÷²lÆ7”d²vc;½ïdÙŒo(ÉdìÆw{ÞɳÞQ’ÉÙŒîö7½“f1¼£%“³Ýìo{&ÌcÎùšpñ<Ìtó1¸ÎnëËÂé$*³™pÆL²aÇ—³
+æËÞåÈÆí6áâםxÞ;8¼o9ÌÓ‡‹]ùÛxí,ÎÆÚ2Y;1œï#g$³;hÉdìµß·ŽÎ/Îs4áâ×~vÞ;8¼m´d²vc9ÞFÎIfv6ђɽ™cÞK9#3±¶Œ–NÌg{ÈÙÉ,ÎÆÚ2T¸¾ˆà¥BU}Å-®%Râú#‚•	UãyÎfœ<ZïÎÛÇgç9špò‘Îw”% .!rs&\É;q\¶[.Kɽù۝Û<Þs™·/O;·3—c‰å¹Ç76¹^+NÞ;·3“±Åy¸ÌÎ9rËc‘â×~vÞ;8¼o9ÌÓ‡‹]ùÛxìâñ¼ç3N-wçm㳋ÆóœÍ8xZïÎÛË9Æòìp¼mbÙa%’uåÞmæGì³˜äëm¹ÙŒïy9%™ØÛFK'fFs¯ÆÙlä’̝”•´d—3±²š7ÝäÝ䳸äëm²vFw¼ä–NË’çc²š;3g;ÈÙÉ,ÎÆÚ2Y;™àw€ç3vìrž79›¼ã8<ãd>d2å‚•ÀJRÀ„]Q8MJÓCMCµ5f©¦šj’ž
+öcú1ŒkÇçcïcŒ:cŒqŒcÆcÆ8Æ0û1ŒvÇLvÇÆ8Çã
+c¦1…"tÊÁ0†dì$ØaÂvlþ„                      Ñ@}ÐûF & $úÕ
+KP¦ & $}ª…1"M¨RmB˜€˜€˜€˜€‘&Ô)-B’Ô)6¡Ijˆ	>ÕB’Ô)œ¨S
+	–¡L at H($@L at Iµ
+KP¤@H€“ê•
+Dˆ	 $²¡H€‘"Dˆ	>9åUUUUUUvÚªªªª¶Úªªª­¶ªªªªªªª¬UUU²í¶×\6Ûk®Ûw º““ñBæH̐™ 2 at .d€\É ¹’s$æH̐™ 2 at .d€\É ¹’s$æH̐™ 2 at .d€\É ¹’s$æH̐™ 2 at .d€\É ¹’s$æH̐™ 2 at .d†•é0\É;™ 2 at .d€\É ¹’w2 at .d„
+Y 2 at .d÷ß:Î÷{üBüP@þ˜ l¢^D¾¹Ö¯"xTårœ§4®%]ªN–0¸º]®ˆŽ—J¸ŽË¤+¢è»]í.ÑN‹‹…ÅRÕÿ´_rðÃï}íq­´âûÌqÓMkXáÓšsN§?„’NI$êwrIgo0     ¦Vk¶+1FÔ   Ù  a†35 6À [
+¨0zó’sîNIÎݬ$Mþ,öü7ó‡øÃ?‘ÚÈ{ÒûñÙ—}ïÀ¾û}ñx—øƒå—Ó€¶üF$lùâ/¼Âžìž¤¦Ï è½8oŒHÙó[¥÷˜SݓԔÙà§mñ‰#~kt¾ó
+{²z’›<¢ôà-¾1#doÍn—ÞaOvORSg€t^œ·Æ$lù­ÒûÌ)îÉêJlð‹Ó€¶øÄ‘¿5º_y…=Ù=IMžÑzpß‘²7æ·Kï0§»'©)³À:/NÛã6FüÖé}æ÷dõ%6xEéÀ[|bFÈßšÝ/¼Âžìž¤¦ÏV^œ·Æ$lù­ÒûÌ)îÉêJlðueéÀ[|bFÈßšÝ/¼Âžìž¤¦ÏV^œ·Æ$lù­ÒûÌ)îÉêJlðueéÀ[|bFÈßšÝ/¼Âžìž¤¦ÏV^œ·Æ$lù­ÒûÌ)îÉêJlðueéÀ[|bFÈßšÝ/¼Âžìž¤¦Ï è½8oŒHÙó[¥÷˜SݓԔÙàêËÓ€¶øÄ‘¿5º_y…=Ù=IMž¬½8oŒHÙóÄ_y…=Ù=IMž¬½8oŒHÙó[¥÷˜SݓԔÙàêËÓ€¶øÄ‘¿5º_y…=Ù=IMž¬½8oŒHÙó[¥÷˜SݓԔÙàêËÓ€¶øÄ‘¿5º_y…=Ù=IMž¬½8oŒHÙóÄ_y…=Ù=IMž¬½8oŒHÙó[¥÷˜SݓԔÙàêËÓ€¶øÄ‘¿5º_y…=Ù=IMž¬½8o¢HYó[¥÷˜SݓԔÙàêËÓ€¶øÄ‘¿5º_y…=Ù=IMž¬½8oŒHÙó[¥÷˜SݓԔÙàêËÓ€¶ú$…‘¿5º_y…=Ù=IMž¬½8oŒHÙó[¥÷˜SݓԔÙàêËÓ€¶øÄ‘¿5º_y…=Ù=IMž¬½8oŒHÙó[¥÷˜SݓԔÙàêËÓ€¶ú$…‘¿5º_y…=Þ¶’I$’I$€  ÊÍvÅf(Ú€     0Æf    l6 1†Þ9ÎNIü¤’rþAö晴{÷ïß9Îsœ    ËQ6Ũ…¨€     f¥lÉ    mj¶[´ä      CB      ä’\Ì´„     ×9Ç,s¾rN€    
+ef»b³R³P     †ÌÔ    ­†Ôƒm‹m¶Ûm¶Ûm¡ €        $’ä’Z      s2æe åû`è<"ùó×®sé÷w϶÷öé~4à-¿&$…‘¿<E÷˜SݓԔÙàêËÓ€¶ú$…‘¿<E÷˜SݓԔÙàêËÓ€¶ú$…‘¿<E÷˜SݓԔÙàêËÓ€¶ú$…‘¿<E÷˜SݓԔÙàêËÓ€¶ú$…‘¿<E÷˜SݓԔÙàêËÓ€¶ú$…‘¿<E÷˜SݓԔÙàêËÓ€¶ú$…‘¿<E÷˜SÜÞîîîîîîè            w$“é’Ih      ÌË™…¶¸’€    2ÒݱiJÍh   
+²  ÃjZ    ZÃZ”’IÎNu9&ðï³O‡tufï v'zÒn÷gLyœ„žèÎs,¤x¤á×ם§k›äÝᾜ2ôïlcAôçF=á·žo£ÙÂw¤bÈRRç»=æ/:mÕä-#µ‰N!}·Yv!¼eWž]zPffw$“$’oyÞMÝÝÍ“dÝU‰3dÐ t5YUUUÌÙ-º-
+¬W&îîæîîæÉ²nªÄÈ W3wwswwswwsdÙ7@ÕbLÙ6MÐ5DaÉc&,F1c0Æ,bÆ,bÆ,YF2c°Å†,1a‹XbðŃ(Á“&,VXbÃ,,30Å‹Æc&°Å‹)–fÑB«õ‹·79·êÑvt,X,X±bèíÚã_×EÎ>_MÝç…¡hZ…¡hZ…¡hZ…¡hZ…¡hZ…¡hZ…¡hZ…¡hZsœç9ͺè´-Bд-§9'8ÊèŽ\×G…t[šˆ±EA֝âÒÂ1m&P¢«P~¬>¯Ìÿdníüà~bÝÌÓwFjȬŠÈãŽLW7íý¹‘Y‘Y‘Y‘Y‘YqÉŠâ²GdŠÈ¬ŠÈÆ9"¸¬ŠÉW1A‘c$~äϹ33îMþ&+ŠÅb±X¬V+˜ãŒVEdqÆ+ŠÈÆ1X¬ŠV+‘a¹¹]Aüm£øG9s‡Eòþfiºiºiºiºiºiºiºiºim¥¦éügÇñnšnšnšnšnšnšnšnšnšn›-¶[nÚ7kFÛnšnšnš5£s-ÛMÓFífiºi–曦¤c$öN@ù„͈1X‘"±X¬V.3XçÝ @ @Ì0	C HB	@LrtqüqÎmô^_ÆZÝ5ºktÖé­Ó[¦·Mnš¶ÒÜÍÛè篸ㄈ$A"	H‚D ‘ˆ$sŽ8äàq!âGÉH‚D$DIŽ ‘!L×M¤%$Hˆ’wÎwºœÌäÉ$ÜsÓéUXªªª®8â½Aù_ÌþQ»§ç¿™ÿfn黵»¦îš²+"²8ã&+'ÞûßzEdVEdVEdVEdVEdVGrb¸ÅÌcŽH¬ŠÈ¬Œc’+ŠÈÅÌÓrÜÝÓ[£?Ç~ò¿nHÿ
+¬(iV•¡^”ÔVš)–)‹ÂÅX,X«!‚Á1bÅŠbÄa,F,XXŒFaa±bÂLF*ÂʰF#1b¿nBî¯Ýä~@ÌæŒÛTÀºUû·½LÉ—\Ü»æü‰Ë«¦°ú"Ýeˆ@ø¼õæVaŒÍï×®®ŸèOP¼Ä,÷´…^»z½¬ÌÌÜǝz¦—]vuÀ¡9$™9’K7îgzàËs¾ÐuŽMÒ’vóȸÇ=íÝ–nÍ›õÍm–[o–ûkôœèÓi±4GöêI#;´ÖíŒY†î·wdž2&E9™&Y™’}$ÌÎ÷ÁîFïu'wáÝh@ç^N§œC)ÈeØ„¤#Q¶/@7rž¼…v¶ð=Ò3Ç:§T·)ð¸ºÔù¸ŽQçNŽ7ß§ZCeóä<E‚-–ßQöÍ©6¤Ö½ææ»ÇFšçž‰}&LлrÛdÍÆ t ,™6IØÉ8†€s–ÚÐµŠ y4›¼Ù9 	º -·-¶dœ“„œ’Às€ åÀ2­¶× ’u'nÒ%¶ÙÛµ¶ÚZÌe×Y™ŒÓ£·ƒŽ8×ãEôù/¾Köþù/©ÞþâÛl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¶Û-¶Ëm²Ûl¾ûï¾ø [m–Ûe¶ÙmÝÙ»»³wwg&d™ñó&|Šù&}RLŸÓ"N:ÌWѪ'}G¶YÉãÚ‡Üvú¶&â{tÆ'ßTª±ˆ±m…™z½ün{Û®°Ë3á<ù_;ælL|ž"Óã,ñî'/eŸ¯/…¾½ž¢kÓ=ßDí·=k}(¼ù½[¦dÓ+Ó~@ú[Tªºº­}"b..-ÚÔÙôw|»úGxg7éÎ[Òô^âqr=´ØêÙ±­6·m[­›­7Ï]̽}YôÉŸ@                   |gÇ3›5ÜN8ã2øg;»‰Î.™]HŸó3Y}±¹Óá6“Ș=‰ë™™Œù‚ÊÖ6äOˆÄNÖDÕ‘4ȝ¶'"i¶ÒdgÌ÷ˆÏŸŸ£t„àÏ ‡ÎÆ9ËjæÀb^p$aÙ;±<Å‹Xö„çyÍ¢ïs†s’é¸R1âñll{ï.ÂÒw{‡'ï¹Êwc=`ÍŽs;ßXÆ‚1cÉKHJxua
+m;îîã;¼z¸ó{¨²±à¡[dDŠI$3“ØCYªÛcuº&ePb¼Ûž>ʧ¢šÕ$’G‚„ŒkãﲍéÑI$ŒÕ¦ž‹HÜRF€  1F?²½‘I$‘¥’SD³;n³_òTWï½=¤Ìdû¨º:,&ϱ2Lø¿g‹F4hÑ£F2åË—.\¹råË—.\¹phÑ£F4hÑ£F4W.\¹råË—.\¹råË•£F;™™™šÝ4hÑ£F4hÑÙ™&|Îiõ!B                    ŸLúù&O­&d³¤Ž	—ÙºŸ9¬Ü³6˧—‘=užñ™O:õÕˆ½¾ØÌd¬–3ˆÁ†1™`íÎ-Þê×+ùuKe«Œm­jÖá3o•ó»Ù˜Êíååw·kƒÑç,ùÓ}ngxÏ_Ì0bbY™ŒXË1–0yÇŽ«âø‰Ó§Eè¹s•ÊW.8_ˆ:®GÁÈçÀr¶ScC}^¢ts1ï3™ss^>.Î:®ƒØ¶5R®'¨0ªÆ–eGåÂXÆ“M0ZYUihã)hÚ¶jÚ¾/r¹/>=Y™—™Œ­çÏ/UKÝÜÚòÉñkN¸®rç Öí»ªêñÈõƒ0ñ—YOhžå;vøqQÇ/…ÜN¥Q×SvÚäN#—g!râeòþœý;›Ïìý<ë¼ÞûþÝó·|?ý½Œš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜ÀˆW̏‘ÃváÀôàŠzùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒ…|Èù7nN§¯˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒ…|Èù7nN§¯˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±
 ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜ÀˆW̏‘ÃváÀôàŠzùŒš™ï;7nN§o˜À‰©žó±ÃváÀôàŠvùŒš™ï;7nN§o˜ÀˆWÌåpݸp=ÁÓÏ>…ó#Û‡Ó‚)Ûæ0"ÊæüìsnÜ8œNß1¯™#†íÁéÁõó
+ù‘ò8nÜ8œO_1¯™#†íÁéÁõó
+ù‘ò8nÜ8œO_1W7çc›váÀôàŠvùŒ…|Èù7nN§¯˜À‹Šæüù1pàzpE;|ÆB¾d|Ž·§S×Ì`D+æGÈá»pàzpE=|ÆB¾d|Ž·§S×Ì`Gn{Ï¥}/¥¦×àÈÜO¾&þ&GuM8ˇ\eräxÅÇ*º"“ެ®¹HMå‘ÇE³®«6tê	·:ŒÚéÐ0ܝäÌÜNÅø=v;Ë‘Í3k3±šfe¬Á°ÔÃL𙏯4dÜñM$“!                    ™’gÚ&ïÁðzóÁäò™Cš¢]›T.‡ŽÚA	ãl"‘©[ÚBvx½HΗM
+ì÷Çg÷Z7œè¶[}Iî÷³½#;Þú>†X&G™cîú>ÆÞÆ\°Í°E|ݺÙR¥Ýg6íÖWo<´»í}m‘Ä1É6å€"C†l¤vâymVI¶K"ÈÉvÚª²mÊeÃM?*‰Ùãò.ÜjûQ~J-ü¾ö+ŠÅb±X¬V+ŠÅb±X¬V+ŠÅb±X¬V+ŠÅb±X¬V+s330µŠÇu»­Ýnëwx¢õ}³xú`}×¼IâÇ™[X2eaŒ1c.–5†nnäû³¬/2;Q¦²&ÖÒ®ÌÇÑKòÄåÒ“*±‘4V-ª]Ø@à(§õ“ã,d÷…ìeؘ‹*²SȬ)&+1Þ.ñ¸w…ÚÜÌjv&ÊÖ*ÖÌa¬±™í]*}˜×½µäÛv‡8&íh˜“™ã=b»E»Œ|*äx&&	‰‚q¦àÊŒ–	“%6yßœ«´\‰”ìL`™’+\¤ï¯{ÌgÍ:úvv˜¼¦î B$6lé$–¥$ôbÜàAË7·‡¹³“mŒÞ‡·½#:Êg¯}<ãé}8g;ÏÞÊ³“_xò1ìzK	»,Ж°[Óa^Xç9u+BrI32}ñ÷wNh…#ï”H’)dyµ3’L@&r^yMÝ·wE®ë!¶é" C™“œwœa'#Â.ÛmÔn7÷˜ƈP1¢>û寒)!dͶ¢I¥cÍϤլßÑ$(©…4B÷Ê$*H¤-‘æÔoPï¼Î›šÞøÇY–´í˜™d3
+‹4­¦Õmƒ0fÁ˜3`Ì’Ã%cŒÁ˜3c2¬ÊÌLeY•˜3^»ú±xºK¦IÔÓ©/‡^Zl@ @ @ @ @$í<^üqÛ›©mäòu’[l
 ‰ØQ×”§ëA‚nf	óEéï޻Ͳ³ÚyH»tǾóŽxtqeâÌÌò*ã¿3sÇ‹ŒËÃq˜'aU\²ñ®å¬Æw[°@èg3¹TVrÁ[N!5޼ßWwoNù]Ü·>»Î
+¶”ï…™&¯:xáÓ.g:2õãÊèí›]äá–ã‘«71ÎÅ:øó±øŸMøœá 
+ƒ9ԁ
+ÙÅÞN¿Kèn“|é–IAé!­ÞöZF>ã;ÈÙïvÆu=ïÝöz¾‡}Ò3ž'¼F6lál	BZötÎù­öéºJ3[Ë·]#†¯CšW$—ß.sço77vKšd›&æåÈ dÃv„2hHnP’S,Ž]ÜÝÝÜÝÙ,˜Hi™6MÂC7w7ww7ww7vKšd›&æÉsL“dÜûL™õä²vg;öUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU~>g	>}Ä&BrI2I!à                   ±3>“$ÎГ2oI4p°oÝœk¦K,“0bÆ.ý]“™¸ç!˜í—2HO°HCä                   ÎIùrHÅ™29æA›fÑŒ“6Í»ª=ü|{Ã.³£6nIô‡#;è™ì›'²i|Yrîež77.„ȝÙaa“)›Î­®®øºæã™r
+t&Ÿ‰å¬XɄ̣°ëÇsÍÓ]Ü33¬©|¯˜žŽ$2L™$‡;ÜwÐx³Y²9ÀrÉ2ñ'²LŸ9›ñøøøsºJùñã†YË^`ó‡a…¯©â[B	„úoye:—[yîz>“Þ#ÙϰÄ;=j÷<‘ž°yï÷¬Ó-ÙtŒn›‰e(Ð^T.ÛÉí}Z}ëÛk#'n€šd
+º ¨ ɹMt 7j¬Œ„„›º 
+Úª¬Œ›t 6M“zë33>µGªï(úåÞf\ÄmŽqŬ‘–K,H¬V+ŠÅb±X¬V+ŠÅb±XX¬V++ŠÅb±X¬V+!:Üñ„ݲⱚÉèψ„ìN_[—yŒdÇ6²=9ç¦o®°ˆG³Y¯2ÉÉ&K’däÀÉ…ÌŒÀ’G˜s™ÀÍr‚Ïšö=„·btØÍE±5‰XÌÙwß®¼s[c&Ó3\Üë§—*²`¡Œª¦`‹	˜dÉ(󷏳3l›[æw–ç]ÔsêK¬                   ñœÌ“$ÂEY|K9ïßxËvÓæÉÏx|·	3™,é&aŒQÂFNóºkÉ&Mlc"c*ëUleCÖÚé”ï¬æqk.wÌÝèN>®üÊî«)¸®±¸7,Fû¨¾(zw™Ëô~‡‹9Ýøµpž´[ š ^pRCÒžÝÍÍ0 G§YÝNõï)®ØÆ•¶s÷½Ð<Eû½1ÎÎxŒyݱšïA½NÏEñHÊGˆ©Ãiæ<‹Ëíï/	Þñ(n[rÛn‚BBo|†„‘ñT‘kmVÉ$nEò¶á	m¼’Û` $$!¶òJ¥Umº5ð    		m½÷Ù,–Y¶÷ÃK«/ËKÊ/žG‡oÀ                   vý§t’Ù-‰yß¹<'kÝ/m¥™Y†2Y™Þôñ‰çxæçóZuÞ3!|õwë{³3¾›Ž®t'Öñéç©{Ï~³[g¾ø;fìOˆž»½;ʼǙÔ̽tÞ ;otnm˜»ÎÙæo•_G~© f}`¦îXò{Xuœ›Ë©¬±–0åÕ:Êã“™ï=ÈyÞaÛÃ0ÌUÌðÌ3À¹’¹€}"\4ã¡Çn¹õóéß}÷½…îü×Í|ãm¶Ûm
 ¶                                     Lú¦                   &fFI&ùÁåéѬ_Sž¾{ï¾wß}÷ß}ö                                                         å÷ß/Äi£ï’ú}'·ÄN”^Ô_*-Q~ÉEüè§r”ù(§‡JsÑME>ª%ÿt^Š/H½"ʦA–J—êÁùh¿™AŸô"ì‹ûqüÊ/ ÿÒ‹úÊ/ê¢þ‹ô^_t8"úæ–¢AýP‰iEˆ¸„¡ðQ~J/ð^~£Â/ª©é(¾™’L3$  @ †„  @É$2fC$ÀÌÌÌÌÌÌÌËŒaö„Kô"ýe#²‹¾XQ~’‹ñ‚”_¤¢ôQ~¼?"©Uj)âÑN ~ÕOÞUüU<I^t•|Rºª)ÓìÊpQíÆ"ÕR}J/´"ZQ~"/È‹…IUú€ª®ªSÉŠsÅ;
+¥UÚ¦$_XEáE¥¡Eí÷J/ª/E÷ ô(¾Â,"û*“À@Ò‹õÊ/ÂQœ;(¹EU~…è¢ù(¾¥À¢úAðT—E;K¼)ӸĮš%é`û…Ê/½TŸ¼Šz‚ÞQt¤~Á
+.JT>jªú‘~Ì>A @ü`Ñ
+/Ô‚Ø¢ú”X"â,(´¢üEÉEøyòÑx¿|=Ql"ü(¸Qj©9E÷_
+/ÆPCíEðQL?L=¨z(½œ)×¢0K½¢œ(§ED¸¢üh´=Š/Ø©%/ü]ÉáBBIO…¨
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2amd64-2n.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2amd64-2n.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2amd64-2n.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,25 @@
+Machine (P#0 total=4192952KB Backend=Linux)
+  NUMANode L#0 (P#0 local=2095800KB total=2095800KB)
+    Socket L#0 (P#0)
+      L2Cache L#0 (size=1024KB linesize=64 ways=16)
+        L1Cache L#0 (size=64KB linesize=64 ways=2)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+  NUMANode L#1 (P#1 local=2097152KB total=2097152KB)
+    Socket L#1 (P#1)
+      L2Cache L#1 (size=1024KB linesize=64 ways=16)
+        L1Cache L#1 (size=64KB linesize=64 ways=2)
+          Core L#1 (P#0)
+            PU L#1 (P#1)
+depth 0:	1 Machine (type #1)
+ depth 1:	2 NUMANodes (type #2)
+  depth 2:	2 Sockets (type #3)
+   depth 3:	2 Caches (type #4)
+    depth 4:	2 Caches (type #4)
+     depth 5:	2 Cores (type #5)
+      depth 6:	2 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1
+      0 1.000 2.000
+      1 2.000 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2amd64-2n.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2amd64-2n.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2amd64-2n.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,14 @@
+BZh91AY&SYÜ¡² Pÿ¥ÿðQÔsÿñ½;_€ÿïßð P  *ø`Þùè>íŠ@ÈP   q¡ hÓ#Md& €ÐdÈ8ÐÐ4i‘¦2 @h
+2d6%5@         Pié ¤Óħêš4         6©Qå=4#G¤ÄÐÓ Â4bb„Ði¦&0&
+’B&LšCjž§¦PdÞ¤ñ LŒÒ3)O'ªBGÿÚ,"¸‹¨_7ÚºÄ-dç>“IŪW³ÛþùñjGÀÒIE	ÔêI" ž„%"TE䀐ÓãøínU·ÄøóUþV¶µZ^…@‡b•h›
+C¼44 Á'e5®šÖºb±š½VºÖ¹ÒùÚÒHÙ$‹$ÄlÎÆUIK,HdõÈÖ©¦Ì°Ý}6av°Êô.YuÒŠRfh’GÁ¼–H*©REB%’H¤€¢Ê…(¨¥B*‰%§àz¾/™—ìéákg•€Ä™¶R[‘\p†ÙÅ,X˜
+(mê'ª:ǀРà@	€P^H;^.àp­몼E–uâ©UJ BAšÁ씣¢Õ*LšÔ9¥S™¥4ÂI4šˆˆRÆÎ׊PÏÃ%ªÖ              6µlfƨ4¤…­³bH½î$µª®›´$¨”L€Q,–]R”(ÆÁ­¢!^!D+*Ô ¨M!5£8ˆIc•Y…‰4󤑹…"Alß¾n^ö
+=¾‹z»±‹ì'o\Ie¥)BÑG2#tH9ð²$T’9¬üî{“ï¾ñ÷“¹î{žä÷&]<}‡¡©Mìê]éù=û?Oæü‹NŽž‰û8<@HôH‘èö&Í5&RH©l&—KÒ©¢¢ ¥¬M
+J–¢"¦%­­/Vª•8ZÏ^5¼ïp×­Z9§}ÀÓØ÷¹Ä–ZR”µ%Egäg^£ƒä\×ZÐ’9H‘•˜è߬Î]Yµ³ÃI1*£
+W¬çÛºI£m›3ª÷â÷øòËŽ\.p¤’4£÷í¶ô[Z®RÇËÑ(Õ9¥i­u»çlôkÒ›ªrµ“åpÝqÎ’£æ¬0ÄF¤«ß¯mM)Ù{)Ô©Æá¶m´ÒÉe›Z݄ͥ‘Q·“=%±–È©*¯³!K‚irƒ„A…IFÁŒ<¦\"œ áƒ
+e’Ń
+^²OUçLéLX­)JMgR¼<µV¿o†=kR-ôÆ„FdHóßÂŒR°™yÞ|gOo/OkR$nÙ®˜“ù4åVӍf˜a®b¨ÑFZ&Üs{V)$ŒíìŒEé¦׶i,à²kt’7†•MvH5¾sÒ˜åmØã­®àtˆÚûçfql^Üo§8Õ$‹c]î¾yöÎú/Õ‰i)=ßñhºœb5º¸[«N‚ŒkI×ÇYIJµA6̺((T¼’Z®]IÉùÒH×|çmËe®®ý»ñi¶k,ro—Ö×Ji‰®ÒfËé2¤’5ˆÖøÅ•Jöï-–uÖ[M8ªaxÑZ¸Ø¾›ÎNo¼Ë·
+ÔÓ6ͳêU¾š«?#°äd·‚ϝN
+]މt|@¦ÿš«Oü`þ
+hÝ»Gл\°þ‰ÙØŸ¯öªœSêò§r~¶ŠËy),Õ-Á8.9¤‘ÅÑ5RÏ¡ýDž/ÝÞàú^…N
+Ӎ”’.¸úVI#êNIO:hÃéx§7Öže™Nä’4ÂQüÄ”ŸB¥F—J54E¸Ø!IQè]ÿ˶M\H¤e¼I#)™7û¬¢”ígº«ÎCµkR–H”‰g%>Ã+>ÅÔõ¶JRSõŸöè÷Fé™<Sº`V:ž´¤Êû$‘Ð’:9Ò®”hC¸n×”a$Œ9¤‘#dò¸‰9°™,òC	˜	#Hðžóƒ½ïºŽÄ’:$JIÜ£Úê¦ÎóÁ¢u¥¤ì'‘í:“¤Oj燏3‚ÎÄñI#¹àL¯s‘#u'™,áª]Hâ¿ÜÕej’FÓí$‘gÔÝÁªjˆû-Î1'Ús¾‡Í•ÑÑMÆÞ§¥àŸ; s'jI#½=ˆè2âó¢ÚVõkð:ŸÕËÌ:…5s¼È¶W$‡–É$PÄ{ÎŒ'Ûa¢w¾·²ìW?RÉ$lîöi;	$xµòD‘P&Ë'¥Á$Ž)äMlh).—NN['Zí’H»i0ÔIh]f­T‚aR$avŒ'‘É(Õ0\“)–·zH…Õ,”¡»wÖ’G؁ÑH›œœRÚØ’,œRɱ9v"Î)IÒ$ÓÊ-"FäøRû‹¹"œ(HnPÙ€
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,11 @@
+Machine (P#0 local=280840KB total=280840KB Backend=Linux)
+  Socket L#0 (P#3)
+    Core L#0 (P#0)
+      PU L#0 (P#0)
+    Core L#1 (P#1)
+      PU L#1 (P#1)
+depth 0:	1 Machine (type #1)
+ depth 1:	1 Socket (type #3)
+  depth 2:	2 Cores (type #5)
+   depth 3:	2 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2arm-2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,46 @@
+BZh91AY&SYIûÎ šÿßÿÿûÿÿÿÿÿ?oßÀÿïÿà     ø`;»á0e‚%Âm«N¾ÇÜÓ øf²D(Úv•@PRºjŠ‘50M@!¥IŒ‡¨‰Bm@Þ©å7’ Œ£LÔÓMš"F¢4Õ4 Ð  hh       4Äi#SP   
+     4  õ14 §ê•%<¦“ 	“   #L&      0„#&§¢hÀ&Œ ˜C LÈ0bŒF at b`I&€Di ŒjSô¦ÔýSÔSFCeP€ h44=@Ф†;â?r'*†¨,Š„£X "D 0„P…€.û$@ *¦•*TÁ„¼IƒsïþÁò¾I/†ÎqÚ<ИæÅO"e©"(zG;Ap¥@:õ¤c§M•\O¹‘IýÚñ«’ÜJȹ°ˆŸk+qÅU³-yhúuAG²EX Ÿxó"A €Ab¡õTP¦
+Pîôç·ãÝߏMÕS«§_&M42rE‚ g/-Zxjå·nòòí<'&•c™UG&Ý©ÉjÕÊ•.pfšC3fô!Í:šux'-6å¶ïXÙ£™nòÅRÊœÉJåÝ[Jª°bœ¢®åQ˹trî]»—G.åÑu“tD·‰eÔÚ™Ê.îrŽ]Ë£—rèåܺ9w.‹»Ì–4–[!¤¬"ÕVXºÔ  DN ˆ–D´DÜ ¡ªH£,”BF@šPQÕ5$„—wwj„@QQ „—v—uqKº°*$´]KB"!	"€IwWJ$´—B¤µ
+P«.îÊŠ(„’¤ªª¦GÔÑ•UªÚÜ´	$’×–%°Kv•:Rm$’9Û&eX
+¬Q¦Vº…DoŠÉ*6Ž’ôgb¤Z,’H$'YQ`£Œbĉ¸ZS
+dÆÐ)΋Á¬èJ†w¤$²)ÒK•$„˜ª‘Üð"p! 
+¡@dE at HP1„bˆ‰BB
+H¬Š"@ªD*
+H$‚,j?rT8pu´Á ým×ÝÊÃ/؁Ïâu{Á¸ž1Œ7Yím³nËõúí¶Ûžß!Êì­j†æÆ¸‘žBGÒL¥U“†×Š›ÊÙ•Üžæ	¬À£¡"`˜M
+OªÈvÄBv œœyWdäƒ åc&Hº€©úª¢Ûg P€¬A+Íâ6¿8ˆ½áõñ=Ò	¤ÎÐCûÂJ6.xöòÎÉÏ» @âmóßç°W¢¿ÆÅ§qt´­@…EÈ’ %¡hæˆw at O,D¼KD<Ðr%âÚ(ÔrÅõ¸Z
+Løò!äùìë«€TmzTÎfñ£ÔÕ+­Šë×^ ¨[S芿L{¥O×é<ͦSŠ€„#^ŸŸQ
+µ™XÌÌ-ŒÛÌãÃ}Ú´aUˆ´ÙÅ(y9¥~Yrñõ7y-͹En†Â¥®JaÚÖ˜v†ÌðÉUKf.iÄíÿûDØË׿îôcÆ1çÊUo1œë³fÍø±¯{C¶Ã=ÿÏ5²…¬Ö½&ÊWùe•É$»™ð÷w½ï{I%¶y5­kZI%¦wε] Õo{ÚI-³×]zTPê"*yäyçžyI%Ë:Ì‘ÍVµ­$’Ó'¡ ƒÛ" ÙP‘Qaº¢H¬V S7X*¤’H«°        €   €         Á’b åb¹IßBÞüxñÆ1ŒcŽS°ø%º N²Us‚í´›m&Æ6“Ó]$œ ºë®ºãÆ1IºtVFµt<@É{ÞÒI-²{o0#Ð×3ÛXI' #°îÓT¤J”‰R‘*0‚0‚0‚34º€$®jªÉÄDªÆÅŒ\[cd̺^  I%ZIÊ|gj¬í/¦’n8°"%„@€o{>°ŠàÏʱØU2.s*M  "\ƒÁ…Qé"—ì\Ý·à
+{
+W/ªP†ÐEãˆˆÁ”P„#Òô±k<ï7·W5þåèØ`&`f2F"`6ï;AP°ª  Yd!A 
+³$ÝäorOB‰¨•^i¥åîõ?)à<­Í>§M¡GFF³¾/éÎ ïsÏÏÏíû~6Œ0ãÇRïçI€w³ˆÎƒ9Þ3çíssc}÷ßuÖÛoÙâæà?p®ÙïÔ¦[Óèœç9ÎrHôA
+|·öãC¥mD) À]T"JU•ðC²á:{u¸¡Þ>ýÔèÄo„qšœDSòÈBI>PDOj©˜ˆ‘EhÓDKúü{ ˆ•¿êoÌDL²ö|µ`A&¸¼d‘°‰‚A/ /jDФ%íhà-sÎø%´4̳‰{åV«Þb`Æ€ˆ”c<8_ë騈›ßÍ?:ûá]ŽûÇRÙ[h`½V
+—" ŸN4œ™ŸWù–Åó­ yƒ H at Aƒ Da¶xBu¦È*t¾ërÜú‘rz:ïî¦u3b0äŠ˜ÞäÉÕìDuµÝ?DŒíUW®Â×wMÄ·ÙµbByDD•gÊŽì«\¤ƒ B"èXχéàå
+O²k„¡t˜•Äh*–VZã B|bíú("v>f{÷‚"|×î9í8r¶—®0†¦PÆL±{Hbö±kcˆ'™Ò# '"¼§µ§MÙo8N"</z™ê"'눉®¶'ŽzJ‘¼´¼4‰hóªJÛ;@DK¹Û* ¶€ˆ”!|n–&´	|œË(–…àµa A5€Q€«ÊÅô»D$1@ˆ”¡|¸²ˆš`å•ìÄ´N°´k¦¼îZ;±M5ARb[M¤2çã ÙÇVl)„\Hë–XÊ#Ô¸
+I>¬úýxÿ@›ÅéW™åç4ÑÏûu¨ˆ¿/­ÖÌ1U~gæãˆmö6âxéD)^r¥¥båÄ6ÛÓˆm¶Ü@fTEDÌÉ}RÖ–´â{mÄ6Ê7s|*Q
+S\8†Û{q
+¶Û€(ʈ' ²
+\@œYÐvAG)³u¸6ñpÄãdÓx
+—VU[)–P¶uy^ö¼.Lfxƒ€GÖQíëጽ›|üÄp{ð9[ŸB$1ZÄê©7ÒS‘¢LŠëZÛ[bǶ+@ˆ˜Æeí
+΁Îàˆ”-çïÖrÆ2½ÈB„a!
+ïih!Åßv»ë­žâoaTê¦"	©šj‰“Ü C>Ó††ŸtMá!LÉh
+<·Ãdªª,U8¸! ©ív’’}EÙ¤Ru9•мB‰;nÔ‚Éß|t»ñ×S@ÏCÀèQ)û:¡S @ÂØ玚UÉ
+¼VÞ.šÃR¥ó”g¿^"¦äPϲê"LT˜Å¨Ò…‚Ë ÅÇR	K<SÙö¢¸@Xà÷t­lDXà Ι¹| 7JEÛ@Ù!4’$+V „Üe;KšV¼3¾ADAHDFöâUì"v‰Ð5ëÅ“Ÿ
+&WëŽvÛ˜*€*X/TríË^)ðç
+³Q¼’:.€ÊT—4qÐ ïY¹QD;ÔÊǬq§ÚÇ„VQCRÆ;¶U
+ÝM$eÖg|	3Þ< ßQ:U ™éá#vî.Œ]ï)=æ*¹ÖRð̝*2ˆ&7(KÃÓQ®S,ªúÕí•[-ÛU‰8‹R ˜F¹Ú¨›ÂNÊ©4Æ4±§%„.lÕžg‚ˆg’yp÷ãñC,kŒŽÀzÍ'#s½É¸7"®É‘ƒw32&$ÕI0aûOw•Dš€#‹Î¡ß³SKe¬·Ù½¸ÝN|©DMÖÕ»ñ–<cןÅ[÷†!0º©W~ªì¯ü^RU½']µ˜
+#*ææ
+§)tÒ"Aʘ±Üî-®¦lÚ«ú¾~åaɦX¦63ÍŽ{­W\VÈdh!”¢DOø¸‰¤vú-“Õú=A¨œP
+
+1¤ç>hF¿ÝÈe*J>8„#û’(zâšì‹þð™«1iIÛ7Õ1}Ç”‰ý½ÁE'í.´â`[(Í¿Ó-Õue\[Ͻ»]¨ºÐ¥7낐Ŝð…LjCu™–Öin.Gwwww"C‚™2° i'&kƒ3Ÿ€`9
+Ɛ£C2„!
+L††ãŠ"%°cKÆ{N¼˜€Q}…D	åÀ–îÐo4/?»zÔkp
+ K0„„:Aß6
+¿¹u¨‰Àôÿ-ôÁ<žMMÁäÜy夀€Ã´DÞ"&ëäõ‡Têw‰Û‡úò,q ¼0Q /£²	Q‘ˆÀŠ žºw@û¥0–.tÁkņ§½òzQ¨*¡Æ
+¡"ª¥A8„ŒÎÁ5÷ä’×@Ð6Ƈ‹:/z-z/iC¤¨À볞و`DK"Ü" %ó~ü ¨;—^^#°^À[ZC.-ÂÖ jôذ%â\?‚áH è ½°@Ó"³×0DO+¶FiFCF…„8„!$†Ð—‹ÂJã¯ÁÊrBB²ÂG¼%;{57†À ¾ùÔCuŽó¹…Í7a@ò{âÏ<¡eiUcŸàöýÈ|49ˆ‰Ý«ÈØÀoÝ@2ఐE€„϶êÛ.§¤½Üä£à.o#žþÓpë*0¹³2khªa"á ûšIÄ	XiCì‡=¼áè{L…6:ˆ^p˜õˆøÌq=ó´<D9‚ª~g¸;ÍÀVÒ!ۏ‘ôµÞs)={ÀÞs}íKj·N‡q@"ðuúÞŠc¿Ì9æ,‚÷Ù1Þ{„’Td
+N„3¶{FǾ2\l@ C À¦¯øqïvì·Ž,ª¡Ò3ï6°†Ãœ7ŽC ‚X)žÆ]‰‰Él3j£µ´'˜OÁD	«X:ÄÈ{\rË`„2È óüWTyιŒy©ðú€Ø<`u
+³
+aZð-y‰rÕ¡æÍŠ.Aò˜ ŒHÃÄó õ=A˜/yèרo3å³cw›}+p ú_:-äÕæJ0€X£ÚÞÇBÁc§S°s@=GCnàk߀m„¶†œÐ Òú† ”ä$³2£]h-ó¦òå¼;€xº »È$ˆ*¡<tض¡b‹Ža¼2r˜–Ð5øåÇ
+Bá +ÎVg0-é¯_–n£‚&bt6PøÈtéîqáßÐ7ìï"ˆ’Uõ×Ѐg;ý"«Æ°Ý€Á¸^IŸ>f@&+A-{š¥U
+acÉÀÌ
+ÔÔ€ý>°ˆš<À¸÷ Qžžíy…U$ ¼¬Ü8f—dSpÉ€S BÄâ@Px€rÔrñfd(	P ˆ£Tì÷bYåÜr»“
+¯)‡bÄ@ $!Ì6éäÀ $ÕÌ*@Ür [§ÁD ˆ’Æ{Nü²mlCMÅÊÇ2—¡¶vœ±”D'ÿË ¼ãJ(ýòêדöˆx"g+‰pn	Zé![áø»CCM­âXDâ75P¹	Þú2P9ýLÍDõ*$Ô:ΫœÆ‰<ZB8² 'p@ OŒPÿñw$S…	Ÿ¸Üà
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,44 @@
+BZh91AY&SYÃDHÁ ÆõÿÿkýïÿÿþïßÀÿïÿð €   €?ø`}רÊÔ‘{4%^#ÎÞ²àzñÖ·¹u=°        %)¢£4z1¦   @4m!     h Кi$ÓÔÑ  h          Ó I¤™Iè   hdÉ    4  ɵš …3SIè™OS4ž i¡“ Ñ    4                 È
+’   CDÑM£MOSÔÚ§©´ÓP=@ê
+ dÈõÆšQÔÿŸ˜>’`é…§LCª
+\`@2ê°>âÍâ¶Dv9AùÅÉô8!õ„$Á}9×¶%(h®H)˜Õ•L×Á D`,*TR9” Â"ZªH”‰RBƒ0ì0f
+Éäó0y|¸Y—©&aç™5aâ‹Ä
+/Aƒ6“ÄÕTÑ‹³B\‡‰¢	”öêÔÜÕH(‡yg8k»&¦&IEæ
+Eò2 ´„$´‚ ŒeV"FdÉ
+$XPìK+]йK)Å$ÅÁ²ˆ-*™æ¸‡@20,½ÈŒÀªPC¥qA	t® ×i_‚¯"%)$¤ˆZT	
+Áa@Œˆ…$¡D€È‚ÈH %¢ÑÚ½Íâó=
+|­jžZ-{ø=¬^l[WY¹f
+ÁŠ”{<<¹ÿûÌ‹ëç²Ï–öŽߣ…v2Ä›Ex9¶ÓùeHWC…ÊÕ­VÖ'¸H¨åxâjÈÒPÖ»{Šž*bÖ×]JZõïj´ÜÍmž¯=Ê’Ú8ûU* %$Hã*HŽi#¾Ï_ÅNŸ—¸øúbn‘ŠnQJŠad·à߻᜻…²Ãï¥ðÊõÅã²B¦„7RB‰(è”eŠÀf””
+IB…0“¢…V<~öñÛ¡§ï;4ÀÂÛíþE¹$˜¶)‹­YÓ–Þ/iÈÌÉèÅ’ìœv®Á‚ï‹íhòxûw¾×Û=tr}&FÁ¨ÚÞÝÖ‚›¶Þµ/z­%oE,ÚÕkK4uš›LÞ÷ÐÞîÉݳ˜»cµÜØ»©lZ»p÷V5/d»'zî­X/«ß·îü™2y<\ÓÊDìhÌÛéûßgeUiš­?±cCÏÌìÇ·®gy‹›Ö:øJU¤Ón˜x©L­l,`hjoæûŽ9£.ˆ>Ûé{vÂ~­Ã)™@ä‚Ôƒ—²7Ár,r›[V|ÎÊ—ãnSyÜælëkÊ6§m€ÌãÒúÕUUUUUUUUUiàj¸nIÄ$·^ZdáôUmó {Ýíp‰¾'t’lö㌓]½©/Ù{Fœ
+5ª²Î«èŠgµU
+†»d^_ŠFÍôš4*®Í
+Îú
+€¦òHâ¹…(ªª«Ûe*¸ÈBsMù¾ÞþÅL/…Q==ta ‰¦zH]öZZBe¶Ä’42ID
+mi7-ßt:5^‹±–ŽwKß+v69Hë¶v}nxJˆ²¨•
+;¯Ž`€‚*¥ø.ˆ	G) „9¹@ÀÖ–K3äøÎÏiNº“œZvÉ4šÖ€a“	š¨IBÙc^U3­— ¹=!AƒÑ‘ã68Ðõ¢xï
+îßDÞy"侐R³fPŽÉÿ¾ûIeB«ë¨AGëôœàgø}ü³k5P¨AL,½Ö¨KRUJ¢©#û4Á¾³¦¹²[M5và»Fqr†8¼BŠºH4y B¡ab8Æ“«¡‘»š9®7­™„­bÁ…r¡0 ¦`ÌÀ_’
+ÂÎMèiqzN!Ò*H"‚€ÀGÐüŸŒÖ͝qý¬ºnú®rá§V¨£.>eu¿Œ õiuCÄlƒc„€\VòE°3¦ð±–DìÎÀ‚mxòY6í3Àú{Xᇅ¯¹x%ñþǃ$¶8íÓDnœ$:[^yðïa7CsÊ<ãV•4ÓSºÓUòmM¬-nC@¤†L¡¶	¬L(e£ŒS*U™SoGجmÑŽöM›’Õ½ü~o›wYÞ;F»xCMá­†ͬH´ÒÒ¸’Ö@“%Ëâ\„6ó†‰Éa¿h1‚½pˆ´
+va-ÀÞ+)¸¦‡UZ·pL2JÝ N  pŠkžAªo_åßþÇžÿ·Ìézß×]ØAà./¢Xðt.«¡Ñ@QGM5SzF'‚îl$»¤Ê
+D©‡6bnîE„‚—t›‚-Ð þ(P%‰+$IXÕÑ,—ÃÛP#€ú¼élTv›bI (P7ÕÎ[RÍrM"XE œ¬¼<^»0PH`a…&DÁ&è>D£Ô¬ÐRCŒuÈÃ4Q¯â €ºs2TO	 @K5ú̓¤L]s+ÁØU" ",`˜ÁD:«"qp3Ìk©s5¶{qa³}¤iH’`åXoÞÒóLar"kK*޾P¾Êl+KÕ	ÇG' x
+Þûœ›Pä:õ=î3Kë®ÖÖ_dhSÛ³3(ڍ2˜¥DÀß;ªiXFe{BåÆ$ão¬‹æ½)VZ×¼\ËRª wÖycŽJTšiC7D
+ÛM®…Ø¥ò¾µhqŒ¹‹©ÜMä¬ç(a#«dXpA`Õ‡Åé•´ÖðØ-Ì\aK Àê¶L
+B4¦Û%ñ´gZ4¶5¡­†^&ƬÇ$ÎDL?gn¬vâÜr„3¶Ì°Ñj½p¾´Ë<šà‰Æ 	Îõ\iXê4§
+Y‡rà|	½ú¬'4Ú6>wÑ"­Vbb
+" 5/kÖq)ÍÒy~*wmC3neCMŽÓ0`
+dÐ'öj¯Î·•aÚãˆ^épFIjÃ-8wáîSŠÕP,U0 Q3œ1Sžhñ– ˜5$½µµe+îp”ÈXb\i¢Ž'ÉÙÅ`u«bvÕÜ
+Ï[­Ô4Ž8ìÇ7Èÿ>®7ÓU÷º|o­Laß¶p½ÙVÚV?¿oÞÃMuù&®Wƒï?)ØSÅNÕ˜²—o¢£^—?ñs
+Ü:X¬eÊwv‡,¯$03•˜§áþþ¿4‡@BeS­9G»)sÌQ¸tüüS¸g6å??-Þïãþ?Gɶ£âþ‡ç¼æÉó½\îÇó{ìý½‹»+Sæ[w1³þŽsãßÀÉð±Z‘ðÜh¯*áÖCú¥ ²ÓB-#ƒØ ¥ñÁN
+;sô0.`á_t¤µoNÖµ¥9:àç†@•,Uô×¹‘¢dÐÊø}+Zùï)’”•K³,½]­kÔµ­ð„toÇãöbðl«=v>;GÁÖö¼^šÏGCùš)OcG;¸{}[H.”ˆ:³ÑN†©Hì;¹-6
+,÷¼>WÂw»¾0ƒÚ}Qú3¸óv8<¸;`ti~Þý_[µ¥i8Ñ.MÆ~Νvùöµêkòô{_óqèÔù!éÀÙ²JGfĦå²`6˜÷näSV±aÝý¯¿‰ŒâÞÍM0lþÊáNìãMøœ–ÁEJmeÕ,YÞ»ûx`¡wFPƒi¬»Ã4Í$*U⬩7miÕOÃgÒ¥S]Y›Îffµ"£mKRr*Íî[¢£ã{eCK7—Y¯/GL‘áÁŒkF:-×ŠŽ™³û²»Xòr,ü1M‡ª7ç±7ÿ¨÷=,²–þ­¿
+îÃ+øßÙ¡f|,k÷m]à»VO•¼ô67t‰vJ²‹ØÍ…0ßémmjµ8mÆEN›ckbÚ°dÙ™bŒV^Ö2âäõŽ?‡„ ´Ï:v¾ö8éXlÇ+I¼²˜,§0’^´~¡1’CÎæ¶\Û“ed`¯±GéV-bDmw3ÒçÝ'U…§‰X9º›%’Oج~V0ƒárpFÖ÷ƒõÓ<br¢T’-Ý\(Ò‘1”ËÆ)bŒa’{,Hº>G½ý­3¦GУ'f,~;òó~«&[+¶)½¯g©ÒÕcuheRóFöŒ•n™©„^*$EHHà㤠³Ù,릱š“›´îSaBé‰É‡ÙÍ‚9·¢ðŸL úø£‚žð~AKy›üŠá##Úb·üYÊUÔ¼8©#.Ìpžï&÷'ÖàÁÉàçúøÂ<m7(gn-¸)3ðrÒ÷Û…$ò˜½>ã
+‹ugÍ£v†+4)©†¦lFeßáßçSŸ|ûü	ÀBપµ†Ø_¤ñ{êÉNê\¥`¤–L¬*“ßèÖA€wöü«R—–aiàW›†Ü)ë;7W1ª(hL¦®3ØlÈÏèè“çv7[ðéI!Q1´Ño3ÿ³“„rõ.dèQíkd•Cw^Æ÷ÕŒx Õ†íXò15I¹gÕ™ð0Sp&Ty?l2']^´ÞÇ„ ¤vQNå†ó´Yâ¿ã[ÛœônÑ7Â)*m)àëü»aÛ…®“‹æ”õ[1Ç'á}‡$èË‚ôß}nmœŠGu@,b±ØT1¡­Þš½]ýìÈ¡ðŒ0'¾JžE¤³Š0‹Ý3°ƒV©=
+|Þ	.õfû÷VÊ'DœœVœœY›š$õ9,ä]§y4&òmVÆ2n•œ›=Ég{ ÿ~ÆÅB
+ƒ•;]>†â~)^‡àhêl0nÛV›^lâDX±ðŠlïi½~<“tÚŸ­ªíïØfíIrx|Í›TŽ[¹¾1e[h[õ*XòÙÌÌôhk±¿Zùd¥A
+Pv“±×Gbv:Â8)ÜÉK®Šm,ð-#«X¥­™º\—k*•CàeÖbÄ~8äé$éðÈäÇkŸ&m
+ÚMÒÊçU!åóìˆëç㱂;ÇßNdîÕwsõR¥EÊe:Î5JMÜŽ ÖJÝ].á¿-ƒ6*S’“·‹Yò«ÍFP³Ýu¤½’{’òL/y$5TkÍoè±>Î.&ã¦7µ©fã«„®\Ô§i÷1ríl›a•K63†8žå#©„\ÄÐ×o½šÅ–^`垆–nw½Z5pbÖu¨Y´wÍ!ÝܤÞÖL±[‹É·/qH
+wÚI
+ŽBšçg‡,;ñz2úá0Åi+­­P
+,ïil_;×î­,ÜVÿ§µÜ˜Dƒ.¶7yújgq&¯j£rlSl÷kh”=‘X›˜·Ì\âžŽœù"œ’n[yà¨î+½bÚv+7U¬æÞì_z`ç©Ó&z²¢ѸéÜcŸÜψüé ª„¸<dµ¦Š£„镾KÁB¢go;:¹ú:þ˜AºæOÿB
+˜¼Ïæòb©<ZJLO¯ŒÜ{ŒŒ`|Ù”ïrmtx´`âÁ“!½Öyè\98œ=
+‚7•%釹ÖîkÎ_2Kêi’uÂ) \©äŠ’CÐîˆGä#ÿâîH§
+h‰ 
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.env
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.env	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.env	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,2 @@
+HWLOC_DEBUG_PAGESIZE=4096
+export HWLOC_DEBUG_PAGESIZE

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.options	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.options	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+-p -v --of xml

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" local_memory="409617181966336">
+    <page_type size="4096" count="100000000000"/>
+    <page_type size="2097152" count="1"/>
+    <page_type size="17179869184" count="1"/>
+    <info name="DMIProductName" value="PowerEdge 1850"/>
+    <info name="DMIProductVersion" value=""/>
+    <info name="DMIBoardVendor" value="Dell Computer Corporation"/>
+    <info name="DMIBoardName" value="0RC130"/>
+    <info name="DMIBoardVersion" value="A03"/>
+    <info name="DMIBoardAssetTag" value=""/>
+    <info name="DMIChassisVendor" value="Dell Computer Corporation"/>
+    <info name="DMIChassisType" value="23"/>
+    <info name="DMIChassisVersion" value=""/>
+    <info name="DMIChassisAssetTag" value=""/>
+    <info name="DMIBIOSVendor" value="Dell Computer Corporation"/>
+    <info name="DMIBIOSVersion" value="A06"/>
+    <info name="DMIBIOSDate" value="10/03/2006"/>
+    <info name="DMISysVendor" value="Dell Computer Corporation"/>
+    <info name="Backend" value="Linux"/>
+    <object type="Socket" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003">
+      <info name="CPUModel" value="Intel(R) Xeon(TM) CPU 3.00GHz"/>
+      <object type="Cache" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2" cache_linesize="64" cache_associativity="8">
+        <object type="Cache" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="16384" depth="1" cache_linesize="64" cache_associativity="8">
+          <object type="Core" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003">
+            <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+            <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2i386-2t-hugepagesizecount.xml.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+2i386-2t-hugepagesizecount.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,8 @@
+Machine (P#0 Backend=Linux)
+  Core L#0
+    PU L#0 (P#0)
+    PU L#1 (P#1)
+depth 0:	1 Machine (type #1)
+ depth 1:	1 Core (type #5)
+  depth 2:	2 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2ps3-2t.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,10 @@
+BZh91AY&SYߊ'4 ††ÿ° Äwÿü:FL@ÿïß°  0 (P{ÒVšJ€U  Ó@hƒM0&jh ˜0L at 0	‚hÈh`ba"M4 z&Òz'¨Ða14¢=OSÔòjhmC˜0L at 0	‚hÈh`bašjf¦©þ‰=SÔ6“õ!¡êhÓ@”ýSn„‘¬Ö»ŽÃ€ûUÀja”¬C¾’.<¬‚ †
+‚ˆƒŸ89Åø[³"¼í™‹ÒÕKDM‰2ªd6)"F’@eI¡!´‘¤ØjØyI¯Ä\ÆàIÈ™³·úFä:•/%ù"H	7dAê?bÒòâš|c)Ô©Èóŝ|x|9Çt H)”‚-h,:R€‰^	–Ûñ!;¼ùU-Î"!Ä»¼ó–&cV@$a!±Û®Þ
+§¢(a‡((ƒhY™S³°•%R5…<ùY¤åa±1ÇßÉ&'l*lÃ)“*
+PµRY˜.)*°ÇͯæY
+H°ŽAyº{<'{[FÞØ!¸J=ê˜cËØG¥S1MMûõ)¦”¨$I:×TCT‚	³;+*—£øšÙc9	•öPK)¸HˆLD]2C˜% ²”‚|PD•L¬Úa/­':Ƀæ‘DT4}ÏtÓôDQöþ	Bª•ià`EU#`À¿O‚â†Y™ƒ@’’¦söËl,a¶g4oühyhÿdˆaÒ8(aT(eX6ªj©D ÖÀè^»4,ÜÐõж
+”(Z^k&¦2gЦt
+……æcyÕ`‡;Z*T©@üˆI°­:^;N;U(;‡ÍßÖoÌ®
+…Æê“שG×_R¦ ‰ÁS°áÚàWȐµRNb¤ú BÕK
+7l·EMö…ç—Xeqir¥ÂÅâ…ÇyS“*›HΡ§"ƒ iä©ÑSi¹C*i&ñÛ€&¤t*sñw$S…	
+ø¢s@
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2s390-2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2s390-2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2s390-2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,8 @@
+Machine (P#0 local=1025408KB total=1025408KB Backend=Linux)
+  Socket L#0
+    PU L#0 (P#0)
+    PU L#1 (P#1)
+depth 0:	1 Machine (type #1)
+ depth 1:	1 Socket (type #3)
+  depth 2:	2 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2s390-2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2s390-2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/2s390-2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,13 @@
+BZh91AY&SYOwM Õÿ…ÿð@Jÿú}o_€ÿïßð € ”h`ž{ᮌ½,ñÀô ƒ@„5M4ý)é2   ¡ê
+
+  E=&2š 
+       s	 4Fƒ¦&LM d&A2iL  Ó@      "•Ci¤ôjM ¦	¦Ð4 ‘ š	¦“i6‘Q§©  4 4
+è—•ËíR¡ÿ:²B¡þ‰c
+Pî"Hs4R ˆaqzàD
+À,!8*«Z;A-š¢E»g˜Ì¡Õ4‘`BÂMÖNnD¤DÒA¤cH :T9ÎÉ\‰‚¤‹‹ÊL©rH,3“RI!‚I$ÐCÁ€ÐÁ6 Ö¨ÊݾbüfãÂæ†{ol¶‘{+YSǐš€_ƒ½PFí\+V
+—CY¦µ!î˜Ùoםl¦|ºrÀásÝàU.ݬE´ÐÎ8kt—#`1„;‹P IŤՐÙ	‚_x±-‰fT_)ñ™F}¤söoÏôo ú®¹¶ì$•€WR–@”›œD¢ 1¤À	Ͷù“9xA0Sþ×/g¹L£|vWV>?!Ë•ý…é w‚¥‚-B¢Ï¨Nzh-•Ȳpܵl±1&)Ùzõž~ncûdª*Ø—ð¨D¢Ê¨E…V‚¬¤3g\º+xËS|êayi@÷	NÍ·™B·¤Pæ„&÷b&ª– ·.PŒÖAx@´Ø$¤‚£6l½ù`ÅÒŽ*ysÄØBH3+	 õmbDå§å™­$ʱ¶™†Ð‘§6sî-µË9Wvv7ÅÛ0¢Ò T¬²¦ Tpk«5T­T2År Ȉt¥&dIwZØÀ" 9›çõ4kÓߏOÜ;§WŠÒ£¤êæÜ8Ç›M6³ynòÂ[~íÌž3ŽšH¬âDâ8qÎR3‹«q*_[S·ÝI¼©ŽXCüC('¨”âe«Ð×{™¬"
+\Hˆ"[§Iôš9^’6qÅÏ‹„dJ‘\¥|L@µ(ž) ԝ*:mì”é–yHi¤4YrC¦dµ:Òéá;aRsˆ¾òûîº5¤ªÂP‚ETT'jrh#iÄãG(ª!Uï›U›«™4È!
+&¤–PÉIRs¢Ã¸¢¬5Γ3ÓMì Sй‘–¦I²WU,:ƒ½TáÌ“Ózèéæ^Kn'"2"¯‹­Ôm6&¾=úm8PGHÃü£ /$*«A1ô
+sÂãÈ8àUw(ÒdvÀ\ˆ¥{°MÆP¥plÊ,(˜ÉÊç@ì@ׄÊÎdK–&í^؃Ô7ï<âµåâ¹gzƒò¢H=7	_2¦ËÿH9’A{L::?‘Œ
+l¿iq¹ 
+˜fŒž¢ÂÈå	%©‚l…ª—vS+ýT$\€-¾$úÍ(ö27á‹”FùyÐË,z7ózœþ.§WU¶@€Ã]¹ŒðëšH3©yŒô@цªɆ(ŸoÀÉ•dá±ËT.*"a•jÓïU')@3é3‚ÉCQ™%þõðŽ£ŽèÝ36p¼4-æç*Hè$Uœ0Ú!A »`è'·s5â’Ô9ÄÅkSÀZp *Ǒޯ’é¥Ò¸pzö’H$bÁ¾î6¢&4ÎIúÙ䋨2í§ æL6¤ƒl…â]…ÂϜ޻N¡uh„±éÎê“Ù]\QºuêÐà'Ót#±Q›µJ‰ ¸ÛŒ9“é&;”±Õ¼ýË&"¸$‚Me¯¥P™°Ú’nÏá îI&Ãe‡¾X=9FI ËXê’Ì…­¨6Ù$k 8wH@•Yzo'3€Iœò &:eÁÌ`*_9Á¦ô„º½Œ¹Rs_ngÊ¡P¦ÁvÙ”€SYž»8Åa ì›`‹ô.äŠp¡ žîš
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.env
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.env	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.env	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,4 @@
+HWLOC_PU_DISTANCES='0-31:16*2'
+export HWLOC_PU_DISTANCES
+HWLOC_NUMANode_DISTANCES='0-7:2*2*2'
+export HWLOC_NUMANode_DISTANCES

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,66 @@
+Machine (P#0 total=100661164KB DMIProductName=H8QG6 DMIProductVersion=1234567890 DMIBoardVendor=Supermicro DMIBoardName=H8QG6 DMIBoardVersion=1234567890 DMIBoardAssetTag=1234567890 DMIChassisVendor=Supermicro DMIChassisType=17 DMIChassisVersion=1234567890 DMIChassisAssetTag=1234567890 DMIBIOSVendor="American Megatrends Inc." DMIBIOSVersion="080016 " DMIBIOSDate=07/26/2011 DMISysVendor=Supermicro Backend=Linux LinuxCgroup=/uid_2008/job_15389/step_0)
+  Group1 L#0 (total=67106732KB)
+    Socket L#0 (P#0 total=33552300KB CPUModel="AMD Opteron(tm) Processor 6134")
+      NUMANode L#0 (P#0 local=16775084KB total=16775084KB)
+        L3Cache L#0 (size=5118KB linesize=64 ways=48)
+          Group3 L#0
+            L2Cache L#0 (size=512KB linesize=64 ways=16)
+              L1Cache L#0 (size=64KB linesize=64 ways=2)
+                Core L#0 (P#0)
+                  PU L#0 (P#0)
+            L2Cache L#1 (size=512KB linesize=64 ways=16)
+              L1Cache L#1 (size=64KB linesize=64 ways=2)
+                Core L#1 (P#1)
+                  PU L#1 (P#1)
+          Group3 L#1
+            L2Cache L#2 (size=512KB linesize=64 ways=16)
+              L1Cache L#2 (size=64KB linesize=64 ways=2)
+                Core L#2 (P#2)
+                  PU L#2 (P#2)
+            L2Cache L#3 (size=512KB linesize=64 ways=16)
+              L1Cache L#3 (size=64KB linesize=64 ways=2)
+                Core L#3 (P#3)
+                  PU L#3 (P#3)
+      NUMANode L#1 (P#1 local=16777216KB total=16777216KB)
+        L3Cache L#1 (size=5118KB linesize=64 ways=48)
+          L2Cache L#4 (size=512KB linesize=64 ways=16)
+            L1Cache L#4 (size=64KB linesize=64 ways=2)
+              Core L#4 (P#0)
+                PU L#4 (P#4)
+          L2Cache L#5 (size=512KB linesize=64 ways=16)
+            L1Cache L#5 (size=64KB linesize=64 ways=2)
+              Core L#5 (P#1)
+                PU L#5 (P#5)
+    Socket L#1 (P#1 total=33554432KB CPUModel="AMD Opteron(tm) Processor 6134")
+      NUMANode L#2 (P#2 local=16777216KB total=16777216KB)
+      NUMANode L#3 (P#3 local=16777216KB total=16777216KB)
+  Group1 L#1 (total=33554432KB)
+    Socket L#2 (P#2 total=33554432KB CPUModel="AMD Opteron(tm) Processor 6134")
+      NUMANode L#4 (P#4 local=16777216KB total=16777216KB)
+      NUMANode L#5 (P#5 local=16777216KB total=16777216KB)
+    Socket L#3 (P#3 CPUModel="AMD Opteron(tm) Processor 6134")
+      NUMANode L#6 (P#6)
+      NUMANode L#7 (P#7)
+depth 0:	1 Machine (type #1)
+ depth 1:	2 Groups (type #7)
+  depth 2:	4 Sockets (type #3)
+   depth 3:	8 NUMANodes (type #2)
+    depth 4:	2 Caches (type #4)
+     depth 5:	2 Groups (type #7)
+      depth 6:	6 Caches (type #4)
+       depth 7:	6 Caches (type #4)
+        depth 8:	6 Cores (type #5)
+         depth 9:	6 PUs (type #6)
+latency matrix between NUMANodes (depth 3) by logical indexes:
+  index     0     1     2     3     4     5     6     7
+      0 1.000 2.000 4.000 4.000 8.000 8.000 8.000 8.000
+      1 2.000 1.000 4.000 4.000 8.000 8.000 8.000 8.000
+      2 4.000 4.000 1.000 2.000 8.000 8.000 8.000 8.000
+      3 4.000 4.000 2.000 1.000 8.000 8.000 8.000 8.000
+      4 8.000 8.000 8.000 8.000 1.000 2.000 4.000 4.000
+      5 8.000 8.000 8.000 8.000 2.000 1.000 4.000 4.000
+      6 8.000 8.000 8.000 8.000 4.000 4.000 1.000 2.000
+      7 8.000 8.000 8.000 8.000 4.000 4.000 2.000 1.000
+26 processors not represented in topology: 0xffffffc0
+26 processors online but not allowed: 0xffffffc0
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,150 @@
+BZh91AY&SY|³D›ÿïÿÿÿÿÿÿÿ÷ÿÿÿÿÿÿðËÀ À" ¿ø`“þ}Aœ      5    
+ª‡Ö–˜½ÈÉ–Õ.ÞÌ  wÍ¢Ã@A÷¼ûï¸dñˆ&Û ‚;èÀx.>Ð   Ä  úî/Çs/¹á÷<°'³àuؤJªKÃböÝ™7féÒt5Ü3À{Ïl  ­ ]]pkÐt7f
+hŠÜ·§Ï]±[»      ´®½PœƒÅïg™! ¥ÂóN4Z³]­ fÞžÖ{@ݶÝ`¦Õ°6Ê_MÁ`4îpÒXó((H  
+ ((               5HØ{ÕJ©é6
+z€               5=eLŸª¥OMÔLša†AˆÂdÓÊi£	Ó@4a2b`L&€iê~¨56õRE5M§ªh~šPÓ@  C@          	O)"“TÉS                TM	ÉOji©µ™54mMi´@É õ šC! 4У@#@R@Ñ4F„õ(ýšji?TØ£#OMOPhÍ 2Q¢ @£j~¯í€=@?Lù˜DȤ[}L	ûà)µ,°Ã‘$>l¤¯àbŠJK"𑐥%¤jÂm}¾„²ÃÂs÷ªªªªªªªªªª¶
+Âê*õ@™ýÀßzªªªªÙÒ@†FU™d‘€7Cp2.B@‚R0)‹« ¦ýÐSè
+p1vTÀ‘É"",‹DeEõ@c*ØR|
+}OÞ€øm„Š@¡µ$‰þbGáb7¤iÊE»od&6FQkÚÖ—HŬ‚’ÏkÂ-Œ¤]w7Fâð¶;ÈÍ‘RFm$à¼/Jº7÷½ó꾫Ş›¶kœ®/®q5çIâȶúÅQ…èô²õ;ªó˜;Š|r¢¢$¨ª’’’’’†’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’€a"%¶PI*Z$DE¢
+& U TBQD<áQ ùÈ (&ê« Ç$Ö†€üõÇoòOÏ´AÖ9Yz¦!É/08­©¢EL²Ñxd¡•@jP.eVY·dR£“µPA³‚H–%fÄ;9 ƒ,̺³F7%J.Âî…<ŽLQÓs!Âigéöœ¸ãJÐ(‚È,‚ÍÜ
+¶Û»Ôu™â¶ßøGÂ>»G¿÷ßu#Ú=£Û7ŽŽºG¤z^¼;·ˆ¸Ž£àƒ
+º¸$¶K ²Ô†îáFˆ0Ñ¢ ‰f6˜eºtë$©R¥:”å+¹R¥e:rT©IÝÊÆªéT§NÔbÃ
+ÔwyWhŠTòâ	<¸­¥–ÐJeÅeSˈ$òâ	<¸’yr’§—)Ý«ƒ#—„Ü–ÒS.RTòâIåēˉ'—)*xe<µm%2âIåʹ&^[‘[IL¹r¶­^RTòâIåēˈ$òâ²ÊYªTS3$Fax^†a˜fH™iYæ†a™"3ÂóÌÃnË8ËÂðÌ3*ò–,&%§y•.›¬ÌL\Ëb…ÌP1TÛŽ©¦Á5G1¼m»-+¶ó¹’ŽL&IVØ%Ú‘¶ÝÛÈÛ†%w&dKMäb²ÙVeºj+2Ì·Qr±JJL¥#­½î¢ÊJK̺HÝ™jDe•ofeDðš‡-ÓFYVܼÖ^<Ç2à·—*;º”²8ÓQE¦¨U¹‰¨¥:q§Þ'XÛME(qÅJ¯u±´)›»˜ÙUq©¶Üt[o#n•ܐ9™¬Ì&fcƒñ0Óa³L^eÍ1v£lDZrS’IwRHËu•˜ÊbYHŠFñH•Ì‘·ÛÈÛ’[,"îòjÛ
+‰Qæ`DÔ‹)Ӎ5Q:JíȱE§N4¥ÜmÕfbj$T(U¬ÖrFÛqÑm¼¸bWr*Tm¶Û¢ÛypÄ®ä&³—i¶ÞÝÛͶöbWr9	„Â`˜L&	„Á&ffa0˜L&	‚Ba1·™„̘N„á0–L¶ÛÝI$ɲ⻑Ó6­‹ÍªªUU*©“%UJ«Å^*ñWм/÷ßg}÷WмUâ¯xª¦eJª•U$’I*ªFÝU:ªuTê©ÕTª ’ ‚$‰]ˆ †$‚
+æ^Æí„CaíÌÁs-‡uW
+Úm•K#ËË´Ün7Æã¼³–*ÖGÆã¼»QÆãMæbŒÝµ$n7Èžn㍸è¶ÞFÜ1+¹.îÛom·E¶ñ¶ì½«Þ÷WwÈÛn‹mãn\›Ì½ínó-lAI6®ÆÆÆÆÃA3.Äl ‚ÅÜ’6ã¢ÛypÄ®äux²Ùs*›ÈÛŽ‹mämûd²Tn­ËVA¸A¦(á½
+ª™Žæèæè‚ƒVn*"ò͵DÜ£qeÑRÕÅE&ŠjŠMÕ¢)ª)DSTRˆ¦¨¥MQJ"š¤E%(GfÚ¶ž"’£Š"’¢ÔE%E¨ŠJ‹Q•¢)*-;5rŒQ¶ŠŠ\EE¹fҍ(ŠÅF®"¢”ä£x¨›tmª&òµDÜ£qQ7(ÜTMÊ7
 fÌ™‚7 šØ hh`ÐÐИ  ‡*Œ$’¤B’Ê’À¤)"’Â2²H”3hˆfбFüÎûUåTªYÓ€j¨©£Xi±“&pkUYª•X::NƒS`.*íT­9΂éUUS£¥]ª•§0éÀë\
+s,Ì$ë¥^ª¥]ÇaMÝÝ4Û, ‚ ‚ ‚ ‚²Är*=6,ftt«ÕT­=%A¥tDLÌÁÌLAH9‡]QG[º‰¦î¢n›«±RìF”»K±´T‰R‘J‰R%QUQKE‘Jµ)B‚áÀáŽ.(sU›»Îs9ÎV…FNk›JŽš«µR´<܈Š#i)Q*©j¢jU*R$PãЭŽ#Y*òªVœàpÈxqWj¥iÎ ²C‡VD§7MUÚ©ZsŠgWU•Zª¦f©DDEÌÅqU@áÅæîíRʪŒnî­QQ-DTnîÓ©m-UnîÕ»º´KSŠ­KQ\wjÊXZZ+.nâê5KU»ªã´U­Í¥^gN@™;ÑÐÕ0¯B†¸;8)Ì\1CqUäÒ¤IÀ
+feÈ䥎9±DDADPA!DãŒË"4H¦.™»DVY¶Yã‘N9Ue‹D*•QŠ ฦŠæâ#Žsw74ÝÍÍ,²‚G"ˆ(²¢I
+Ýsa¡R$às18¯%Û›»³»µNëœtçvªVœàs3‡yU+Np8"8IÊ»U+»®­RÕR´ç€¨¦bpâ¯*¥Ù56ÝÝ4Û, ‚ ‚ ‚ ‚²Är¨PS38qW•R´ç33‚‹˜ÎQG7uJD©h…Z!jU¨©H¨¨
+75UWjªªUT‰\81À3‡yU+Np9†s”CŽr"""+,G*…3tÕ]ª•§8ÌáÅ^UJÒóô'âµò¾¼i›í… <ú0
+E9/‰Š©Nƒ ApÒp»¸§s5GPd9Üb"aAs¿qSÎ.ZnÀaBŠ!ÅUPa€Ü9\¸æ‡„Sº*ëv**+t¨ªE`ØÙÅdÐè…â#¡¡ás*¯kµ*©äÍÌŽ\Þo“:q.2DÄAN8šh¨Æb"œŽNTÄÑV
+àãqðN€ÊÃÀâÀáR€”¢ˆˆ¡ÅUcÁŒc	Š*Zp¼®@”^ŠfNVËlà!,¶ Kl¶Û8]ð4Tbª·Æ1ÝÚªUSÎf®gœ„Vðˆâ DM<!´ÓMWi¢ ÁA¼˜y]€0 À,B""™*ªªªg ì 5¬“Z×=Ny3'+e¶pb+1E»µ-u™Öc™™àÌÜ΃<..eUív­¥ÚÉš.s:qKÄDÄAPÕ!™¦š(¢Ê»M4TàÞ1KÊì.…X(ˆˆŠ(§UUT¸ÌÌægyžLºéÜ<£k×0/Ö5ã0)27jÑtÄ-lÛ{føT1DµLä	Âí6eÚ§T‘ÚŽ³:1$ðb&%™Ñ–‰q±v»mGU<†ª‡<˜v[åGÇɝ	Š*s3¤y¦F —#CÀá `’¡±Šªª‡œã·8Ž8Á­·ÕkFQ7˜Øé4HˆŠ£•”sÚø1IdB![]t/EÐP)$DE‰„p‚‚œ" ™‚‚R¤! •¡‚„6ÀdT€‘‚ZQ‚¤)JB	dU‰V$aIš JJB  @X at J¡ˆ ( †I’ & !™E†Q™EJ$&UHHFGà?Å@©$ùÔ0}A¨m•#÷Æðúþ ¸¼
 .û¢×ü{ÞÕT`MUUJbc*ªª«{ -€
+wà µ{ )UªÇس@ZÒI+ À.ÄËÐvÆÿoî¿ècåýÝ~?2߯áW.@‡”©Ø·ÉII^èÕ
+Jìw,d®i)))ÆøÚìëö;6ô{53׊³|_v¯µØÛÃØqõ¯ïgŠª¥ÿçÑ÷UEUEUUUQUªª^ÏTÑOØ¢Š(¢Š(¡EQEQEQEQJ(¢ˆóy€Øó؈ˆˆˆˆ„DDDDDDDDDDDDDDDDDDDDDDDDP°ù^Fši¸ÃÓ9ËßœåÆ0ã8oq—mº¸ãlhºËuàëË—Yrë/
+rð;ÞôÝÝÍÖέw±¬fƳÕbââçŠ×ß7Îkù»óË»ü.ï'33&feÝÝÝßÌÏX·»m·˜àl[yށÐ-¼ÀoÇo{¶÷¶; -²Û- ìï{Þòr’ÎÇÏjܵ]ÛUEQTUEQTUE]ÞoEQTUEQTUE^rÕEQVXea•†TU³QëÎx~>,×t”ÚØ:Õ9\¸ž8§UÕÒxâWWI¸q8ñ=*r¹q9ÅåÄóÅ*åĵNRq>uNVÜMÎ<á)µ°zÕ9\¸ž¸§UÕÒzâWWI¸q8ñ=*r¹q9ÅåÄõÅ*åĵNRq=jœ­¸›œyÂSk`õªr¹q78ó–k»f»¶k»f»¶k»Ÿíê1QsÄqp}³#^ìÈ×S]sQEÝ#U]Ò'QE´„u]Ò
+EtTQwHEÒÚ‘EÝ-E]ÒÑQEÝ-ÖUQÑÚ%]ÒÚ‘EÝ-E]ÒÑQEÝ-ÚEÒ«QEÝ)5[JÙEÒ‡QE´ªÔQwJWY‘¤Ñ¨µ[JÝÙ]ÒŽî3#[pvŸ{Ó25ÕÁÚ¼½3#]]×=òfFºº­õΙ‘­ºÞô̍uptX\ÃíƒàpEâz¢ÎÇfîËsÒžÃ`ö68	xÅ,åðM+åW]¬”Gæ&"jn&â'˜ˆÄˆ“ÌMÄOZÌNK;že‰ˆˆ›–YȈ‰ˆˆœäãN\¹r³—.\8p᳇
+pË,4Ãmøß, `j¶9o||——¼·®
+BÅ
+pp
+8ná¦i†[¸pݧ6næÍ›6lá»K0ÓK4Û•œ²Ç}œ´å‡-Õµ›,ùaÊË8]N7náÃgájæà¬Ál¡Â3u™$Fö¹Â6ù¾XbbLLLDg¹Üî%‰¸–$DDDDOˆˆˆ–:DDïÂ]¢w;žgˆ–YÏ-¶Ù§ï{ØNûó<xÌOÎ1Üî:DK3<D܉ˆˆˆš–npœqÆËºa»víØrá¦÷Ù³faËSS¹É¸ˆ‰˜‰¹d²Xžn÷[ºy€60ˆ<ÌuÜij;òÞµºMï{Þô@£®ûòdÄÄÄñ<LLDDLÄDLDDDÄDDLÄDNâ""&¢"yˆˆˆ‰¸‰â""""X‘1""b"5ן2ÍË=mNâ""rrjr"w31™â""f""w*xšˆ‰æ"""&â'ˆˆˆˆ‰bDDDDDLDˆˆ™ˆˆ–'ˆˆˆ˜˜˜˜˜‰Ú&³bn&¢"yˆ‰”MLÌÌDÈà°ÀcŒlPÀÅ
+Œ+‚n·7w¹[æUfùñ¬Ý<ØK7<ÌÏ3sÌÔ²ËQ;ˆˆˆ™ˆˆ˜ˆˆ‰ˆˆˆ™ˆˆÄDDMDDóqÄDDDD±"""s““““’rNNNNDDD±<DDó5111F‡Ø^b•Ø—¶ä—†	qC™&9’`C™&9’`C’Õ!Æ´å¶,]µë|uŒUéU›+tÀ4¨8È0ÐÀÅo«Þ÷½À  ø2I7$“”’LÉ$žw;ßÐù“ž[»|Ú©YœÀ {ÞùÆëÀO8óç!¼‘¼ÌKçÃÏŒëÎ:’K$“2I­mV¾3ž+ï­ðÆ×ãë ý€ãô’Nüt³u×]u×]u×]u×î
+¬vÏ:ß¶;cŽ8ãŒqŽ8ãŽ1Æ8ãŽ2i=ÈEH¨’(• •*!"
+D	&AñÔóœúQ÷×>¯7ŠžòéXÛR«ÁîÃÁœN²ëŽžîªà±³Ui
+y¸érVdÝÞĬœZ¶Õ°Õ¶³†ÙÛ9½q~7¬rÈ’~ÂDDR$ˆ?Z×jé#µ-\®¾bNÜ>•ßÅ!çÌyñôNwd>Ÿ©ãÌ;>_ ï,‘Ä÷yLXuEâH ûo1`ù¯>¼óÇSíÏ=ssß©™CyEEç‡Ï<LCp¨hçž|Þ±¾ç—ÌÒ5¡&qà5BüX”6¨k| ÷ZÛw¢uGQËBÊ^W.ñkͬÂtÉÆåÜGI%ߍ׶<E޹ìõsÎ'o}ÚõêÍC¸š
+põË÷Üt‡ó>›ßZn>Ó×¾fð£0;õº®¸*‹‚‚—ËžÎýÁåë¸×Ž¢ïV<÷§O§Ú¡â¡ÅÌ·(wâÎîoŸ[§YWŠíV™
+Q9U¾P"A: 
+í©¾
+îù•½œK3|§dî¯|Án¹\#wcn*W˜ª×É/IµJ®umýh`URæ °+ð X
+Rö@ùÿ‹þ÷Å?Ûö½)T©óD")'qP+ô´\~ªÛø?ImY𽝝¾¿?þ–¿úgëjÖµo³7Û]¯|gŽ2ü;ö®*·âË­mïn)"D9ïb;R$ïãkÂ4—¬›ˆmÌ,Öøs˜¡åŽfžòøUñÆ7Ú¬µmµ­ž5ŽI>'¬#øªÍd“|m-?òƒLÅ’ßP~@ RI☮öê¾{Ù½v§VÖc{3Åž”úST܁¯nÞ3ÖÛÛXó3™¥åå-RUJÛ¬Ìí›ÎA¸(ãlÊçÇ~r†Y¬eìöë·Ã³&e¦ë»5 ì@
+cŸsÇLâºòÅß=Úðšâú÷½¡ 9àÕVö÷ÉøÝïaùozó®ÖÙ¬9çß.޻ݷªþ·aN8ÞËZÖöbËq~×¶µm;ÚYSå€~ Ð2Ûk’mZ½âv¤“4ž•zÛÚ¹ýï­Z·µQãdôÁœ+\õ¥¯Ös×û^ùc]½ñ¿\r ‘ÒþI,¶û]Õ¬
+Ï›¯š–|)e<íïçmÍ«v	;qßopm½kxS^™ñ\g¬6fΉ+µ[çù+Íõš’Lâ
+_6³+ß¿ôêÛR±À7¿=u¿OkbÛm¶Ç’ZŠc› jó÷LŽ3v±Î  ¶·¹½‰$’6Ûnaw’E%ãL’Iô@ +q9¿ð@ +½íÍüƦ=î]äÇ%¹‘Ã1æHÛm¹úÐ m·7ü0 Kosm¸ãˆã˜åÕE.,nff6ä’I'ê È ~À}¦ «ëp~@üAùƒâÈêçÛõVàÐ6à <øþ`À;ƒ°í€}×Ú‚[ïqß»¼\ãg1¹Æno*»·y–éb3&nÕ¹÷ Ö"Y¶â°àœ9ÎÑ·kƒr¹¯7FݹZâãćR¶mÐu床hɧ7U8´È»Èç6îpø >àò |в@´€6 9 °8àä¸0lƒ øæp`¨óàþm‹PùTêy¥+ðÈ?p9 2€\ ØÁžþÛ?oØüAÀ6ĸ9?K[ÅxÛߐOለv€†2SPTҁ|`Ùƒ€eTDÊ’D{½¹ŒzQÖž20^Õ«äóz}[yªˆåb©ÅËy;ýÏHñ
+ûÔîNä€íOl0vÕUzi$UU`5dDHJª ¯S¸DNеҒ„þ%Þˆþ:!_x²=Ááçäs¹½w75½æíØ n´  SpʸbР -ÏËŽÔÔזɬֵ®¹×Qâu=çœçÀûÞ×¹½ï{Þ÷íÛm·ÖÞÌc qÇnß³ëŸËóöý¶øñú¿’ßOµ­û›ŒöžÓïö¸xoµ}¼ù÷»ïÞïÞóéçÓÏ·çÞóá@ Ûmof1€ ¶Û[ÙŒ` m¶Ööc  [mµ½˜Æ  Ûmof1€ ¶Û[ÙŒ` m¶Ööc  [mµ½˜Æ  Ûmof1€ ¶Û[ÙŒ` m¶Ööc  [mµ½˜Æ  Ûmof1€ ¶Û[ÙŒ` m¶Ööc  [mµ½˜Æ  Ûmof1€ ¶Û[ÙŒ` m¶Ööc  [mµ½˜Æ  Ûmof1€ ¶Û[ÙŒ` m¶Ööc  [mµ½˜Æ  Ûmof1€ ¶Û[ÙŒ` m¶Ööc  [mµ½˜Æ  Ûmof1€ ¶Û[ÙŒ` m¶µ¡œä m¶µ¡œä m¶µ¡œä m¶µ¡œä m¶µ¡œä m¶µ¡œä m¶µ¡œä m¶µ¡œä m¶µ¡œä m¶µ¡œä m¶Ööc  [m­hg9 ÷w$’s¼{¾ç³ï¼u:êOØê{Z“]Žë;«Ü\1h  ·Z  )ЏeÜ1h‚Ð çfOÝÉ$×nMMk®º“àú뮺uÔ–Ûìû>ϳïí¶ßgZÎ@9Îsœç9Ëm·šÐÎr  ¶ÛZÐÎr  ¶ÛZÐÎr  ¶ÛZÐÎr  ¶ÛZÐÎr  ¶ÛZÐÎrÎsœç9Î[m¼Ö†ssœç9ÎrÛmæ´3œ€sœç9Îs–Ûo5¡œäœç9Îsœ¶Ûy­ç ç9Îsœå¶ÛÍhg9 ç9Îsœç-¶ÞkC9È9Îsœç9m¶óZÎ@ ÛkZÎ@ ÛkZÎ@ ÛkZÎ@ ÛkZÎ@ ÛkZÎ@ ÛkZÎ@ ÛkZÎ@ ÛkZÎ@ ÛkZÎ@n÷–µnVæ³½áœÝî¼¼ï˜Þòo}÷’÷m 4ÛkZÎ@9×µíÉ$“ÓÓÓÓÓÓÓÓ{Þ÷½ïཧ«×÷=ÌcÆ1Œ$’I$’I’I$’I$’I%šÐêõz½^¯W«Ö¶Ûo¦öc ÷óÞ÷~_®§‰îõԝu"<xñãǏ7—ßÒïÓÊÉô“ò’?¹
 SSÉöµ­kžµ;¾:º³:§T31m ÜÈfbÚ «V™ˆ†fs!™‹hÃÐÜɾó]3MkZøü~?ÇáÛæ=ñéñ‰'ÀIçéðû}¾¬ù÷÷÷ö÷ømU©¦ªªªªiªªªªªi¦š©ìÌ7]ªªªªªª2{Ÿ	×]I×YÎsvz½pÐìßcÓǯ×]|zítôçMé¸bÐ n´  SpʸbР -ÎòI'G>¾½jIz;zÕϧÀ?içåö&6M zúúúüþ?Ÿ··¿ÙñðüM5UUUSMUUUUSM4ÕOÁ˜n»UUUUUUbj¸†-¶ŠR‹W!‹m¢”¢ÑV˜¸†2ÃÚ×wd·j­wuÝ×i>÷œUUUZªªªªªª­…6Îjªªªªªªèº?#oVþ@}ß·Ê$!UB½þ(H#ƾ¿oŸØ
+¿û{{}>ŸO§‹m·ØÖ†s ¶ÚÖ†s ¶ÚÖ†s ¶ÚÖ†s ¶ÚÖ†s ¶ÚÖ†s ¶ÚÓç9™œç9ÎsŸ@ öI$’I$’I$’MUUUWAN¡L檪ªª²&DîíQõ! ?)ÀÛñUUUTªªªªªª¾B*ªª"ªªªˆª¦êªªªªéª¢UUG𠈂!¥U׉îñs/)åÛ¾<qCG›$5¢°ÂUH¡BŒ«,‹Ž•ÕKËÌÐb†5&=7Zy–r‚±UbæRC2
+!&㩉i
+ˆ‹t‰‚ä8܆8	@È"6·¦t@/RÕ@Û4¬]Ý5j‰ÄÅP¢¡‚ï.éÍRvVatQú7QÂoTsÅ«Œñ¸(ˆ’
+J‚ä5¸‰ ”BXD %€Ø0¨ävj at HGõÆ}¹Á
+§Úº–­å«RÕ˜–®:ζí^ñÞÖæ·ÃR‘¢©Pž’ í¦Uî³MÝ§mSM4Ù³föÍ[|e]2(X±ƒ(Ð#`‚ Ä`haÌÄàÓg
+Û´Ç
+×nÝ–í۲ᦛ)µN4ÃfÍ8n§ÿ)B/ŪÛí‡4Ž5×öA«ßUœM•¡½
+©$íF±Î±×Æã̂Ђj†„æzº°bTk‹ã<mÔ4έ!c_e/]Ué ÀK¾,Hqºmî2sÒ¯‰ð¾&÷À?¶_¶‹öò›°ÿýÄ©?I½ãåImÖ9RAyT—ÙÉî¤É)¿7R?ÏêÅ
+~hÕ
+kZÿ4 '…òž—k¨                     8å$“Ž8à          @S”å­N8ãŒèª°5­\ Lç9Õï{Þ÷½ï{€I'=kZÖºúòvf»ÒXÉÓÑœL:S`ß1 
+	Ãès‚ÈbJJUY–V¥•{]Ç×m)½ìáVBp
+ëU9×\ñ«‹æI,&’´êº–®%«RÕ\ƒò獷šU¥•¼²·–UFOìŸÕ$B$é|_Íù¾’¿$BŠ=€ü0ÊØÈÿ{FFʼn-%¤´’€].—ˆÇø§Ó(þúGú#˜Q?Ñ,L,’‚‚ÙÀ˜"B›uù¨`Þ`XY}§¯Õåö}—ÙäG­<'ió°°ÉpÂàzŸÝÓz'¿ìãŠxûƒóÃʦ¦}¾È|Oôå?wƒ´×wNÎéê	á;ÉÇtÿ„ðOSÌ‘î<xz— È¼ð¼/
+¼/Âð´’mw“xŠü<¾?gÃÛõày·úžôõW¾SÛ	ë0>ÐOQ=?òãÉêü¿KÙ~.~YìžßlãÐô_/xw wõüpO£2GÐhŸCa°Ú#`Ñ&QÒét¡t«¥}-ÇqÝ]ÁÝÚð§ý_Ïòïö¼?(Ÿ¡E¤z–‚è¢É-ABát~™Ì“úŸñåý/ÙÞ>Ž‹Èì^zá;Ÿ5–ÊL%‚Ñi8ã·§å²66OMoØíÛè}†–f÷òŸJJ̝äí42
+..—K¡~¿ÇÜœ'#Èò<ƒåEìM0zf8X	zÎóÔÙ<Zyë{¿qúŸêÿWøöŽÏѤ~ãè~pyýÇ¡Ä{6M¤öÞHÙ'îÝ?
+äØl4I¡‘‘™3&d“K¥ýó¼çí¼ŸíOC݁äóücã;½¼{Ç·ÁñºÐ>çÖk¹Å븽w*¡ ` \ì\«‚×U)UPØ‘PF!&Q$̆‰Šœ€RHY ÅìÌ3tpÇ%UWDY‰f¨\Z	Š\x sgCÞCÖCÛ‚“AëÀRîmÜ[¸·qZ
+À‚Š•íBD?äˆJ!xE""TO–ïÞ.tNj”¹"";vÖ-/Hg£ÙÎõ¶Ä˜ˆTà8
+m”Ê: >덹ã-7ºrq¾¶Åi…VåŸÈ„Bˆ!à±þ´$QàtZ	Õ'´Fë5|õv1Ò®½»s«®Ó±«`
+¡b.tÖs`uXœá¡˜a†	qñÁ=#؝1WV¹Î3ÆÖi¦8Ë:³µk’v;"ӝ*ñ$¹Õ 9³œØ‘1€]@½’R 4"%Ù¹½¶ÉR”@(^N¬¨ ¸1­¶VHmqª›·Úºâñv²µ*¦¶Û9Ωd˜Ô¾«TËó³1™­ÚâI½!*)Ì(8†V&Ùz¹îëÛ r³:zyÁZ°Ö¯Xž-­_‘+NèÝE`A&V^¡¥õZª]Žvl³´Ö[Ö³ºn×C±„×ÖëoÖ£
+’oKK^ìÖ'T¶Üݶ/c×F™yçGCnXŠ/“uÜáªgƒ9éëÈL²@C,ÃÌhç§Cn†N¼ï¾Öt•b1E'םß^û»ë¯{²8H×ynns#°çoS€ù€ލáëÁä„Ý»áÙÀ	ˆhr¨2f±xÑ$N‹ÞQÖ@õyèÇNüùòGg§Òý?hsyðb™çÓ`M;Õ¬“íi¯|³^vë<"¥¯N†ëסÁNˆ{qÚ5ºÁ­hp€=õûà‡ž‡žgÏI׌7ô ƒrÂú#—Le6Gh¡€ÿ4ãjçWvç9¬ÛµêŒ™±f@Ê
+6hhƒBcÊšD *‰©bYŠåf]ÝÊy—+X[XD•¤¨U
+¤-èÝ¥wjK Ú/ÂM
+¡(cT`‡+	•UUS	n<zl0Hst°ƒ‰à;íz.û뺹vñ]Þ׸!&ò¬›Œ–ÜuDHl£.^8FX¸®­Ûïœì l£}þᆹçm×hŒäÍùÅ'	t즲d˦ìºkmm³0Ùf[6yµìò»®åºÜ76Yºìg
+Ùç9Î9nÙËví8n³víÛ·nᦖÓeí½óZná–lÙ§
+Ü,´¬#nj¥~
+ò‡_„$moÊWv¡•Eí¯ö}@×£o›MðúS~¿?ÍlØ×ç  ýR]ÝÝØ                    8’I½ï`           ÄÞ÷½ñ$“&I$ãŽ8Ü’N2I&¸ãŽ   7$’oÇ®‘DG4×´ãðuºu–F¼örف„‰ K@,°°¡@BC(ûàðkÄŸÚié^®îÏîåΙ´â§¦Õ$…F3n¿Ð;>?‰“”ÒÆÀ(úž/ØŽ«®YöÕÞ´óM†ûÝÞ›@¦dÍ8ã
+5ߟ⸓z[vþ9ÖÛ¶ÞLT·÷¡8|9ÿ•Ï3¶üÔ·2üŽfáé@B+zØüOƒç©ïçÎ
+‘òÅjˆ^¹Sq±xqÜc9ØÀc.»c>r”‰síSÚ
+ÝœÎt÷ž¾ïŽ*I4®o¡	Òþ®ÜƒI@ª«÷¼wõ[ÍLk³µU»c–¤—¨Ç;Mª»lÇfӍþÖô÷î©]:s×­¶­›5ûm[Mšó²Ùfe|WÄ‘¶•^»6lë¯u{{ümÛ;·Ö{X[}·Öêæ·yªU,¾1z®ö¶-¼×{ÚyÈ'ºaÝy³…”æÎ|¯·z{ÅoðÜþxþO1´’]ÝåîÖý{lÛf7÷¶YËÏ„DDpÕ/V¶±½¶lë}ªut½êkn)mÛëßo‡{|»ó9åÍ<ïç]é•»âîÿ-q¿çürÏžjê§Žö{\wùza´føcÓ¼½ÙKÝzžVک숟6œ¦]:áÕ´ÙNÞíóù¡RHyóNî*¯Šaë¾_3Mè»}æVÁ½>*¾f[½K¨^Ф÷Ï‚r>H\1Ó¿É'H9€àƒÅ	¨úÐÛz±µ+Åœ;uçÆÝv•_ÊË|^õÄ”[UXî~)|»,ãw×xøLÓkõîí9cãÕ€¸(v­L=seØõ¹Õ3¯[lÃÃ+/{5kÏbDDae5În¿,Ý{üüûkO·ñ·<÷n®õd{MFµÚ–k¥­‰j)jVj«c)³-Ü<cfùw÷g«O
 p‹¸sÕ“›àëNÚ]/KS&Vxµ¦)V³Ó¬]ŬªgiÅKvÃ8«*“ó’Mõ”®2׍gN)n¶s¾õç[7RÜ7^aW»½ÖïK©Å>¸´jŸ.Ý;õk§X§yƱ|Z-ŠVj«[£Ñ!»G;FÝ&Ü(ë8Æ^e)i¼];'·Í‡·ks÷19’C|s+¿‡×ÑËjë}›Êxài(t|vÁŒcÐÖ†††‚%¶ñ$ß-¶~qM÷o7Ãvö8£ëFÛO·l=ßíw}uwjYmürbýæô½âÚªªq&n¶ù9vžz®)¶ǽ·´’¼åÙ^—ôAçf›/òë~ûv£}Ú·Uó1—§i™“,±¶c9v$DGƒe\~xßsÝéÏ[¼xÿš­z¥Y·ÁÅníÓ*ôvŸ	Æxøp¶€°*y^O»kq·«¾^)3[RÝZmJ§á%ÝÙv·.ާ¥cϽB9xíë㎴œ³«¤|”Q#µ}êbÖ{S4½5×§ZË\fî°?ƒú  Å­ŽïñØüÌ7j«pÉ‘CÁZà§,ÝœPR:ÞˆžÓÆ$–AÛãÆÝUIs(Ý]jF˺7Z¨Å‹B†
+šVU«±%$BÌ8J5B‰†V
+ÑrÐHBÁ0<C  aCF̪©pÄ) ¥Q(ЋKT±¡™s
+ÙGÃÄ®Ǐ„nùÎùâêÌ Àûóí3*„-äáyç›ßŽxHK§ºD˜m†é»–æxÖÖnÙ»Óƒ‡î¾³-[eóÃu4Âí«,¬Ë³«0Õqœùk&\¶Yȉɹg‰e–Ye‰©½ÍÏ3¹¹›Žô–a†™lˇXz+ž/VÆtÇ;BúǃÀ’yÌj%xè7~qó|Ò%‹ÝO5w³œVÜÄg{|/ÓZÚ%RO at sÛ•UUŸ=ôÜå\¾ïáð7~ ó¿gÙUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUp ÝÚªªªªªªªªªªªªªªªªj¦¸nîð D ç9 9ÎUUUUV€ú=øÏ¯ÐO'Õ-£Ò÷÷û%ò»Ù²Ïg«Ú}6ªôí·½wŒÉ!hüïÌöö,¡ú^õÛÔ’98?·*K×ÇVZò0Sáëf•1(·ÛóLGl±IšöPæ½6‹3³™–\Y¼×7|þ^œrÇg¥š¾¯1rÎU+Xì—YÖœ:nå†]M¾S|mRHwÚpÛ–ŽAr•é錵­ãÙÐÈ Ô(ViÑwŠdƨºójulš¦–œÑù³l¥:lñ“YÁ勬ëэoæÌÁ:»µœdí-è˜k}wRºaáÄôP⤪•èÝ9­ÝÓ¶0Œ8ÏÊ»ÍjvÙšTê¯éÊ""/z'¿IÛ|ùö¯nºHÚ9Ï|eŽ“¦Îÿ}£Š“Ålmž3$]ÒÜ[-¹£{·ZÏZ8Se8ÙÇ{½ö³h²Î¨Z—‹TGÒᏍ8oÄ<8'ÕÅÓØ^<yά¸-/ZUœëå=ÓléSg,=ÝÛÖßÛöøñRHxðvuށ@Tw{[­÷3ß<=°ªµ â£~8šÝÇn9ªáǍúå¼7¦ÛM²ç›\PÔŠ©-ß~)~†é¼ÄH*1*Äo¹£³cz怢fî×Î4X1»ýU¡cÖoÑ i›â]uï{ò·„µÕ>5‡
+OW§w\[lë zé×~ñ1$‡/5Ýß}g„v­£gWUšmïÀcaÛqd1ƒB¸/ØES0æËsHˆµzTÛ—©­_߬ðìó)µqÍjõÕíjºÍ•Z¶é¶0ðÓ»ÑßÕ­øgÔ#¼ïãß×OHªÓ@ú‘м/®–a¯zfI!IDŠEy«^ñÎ÷ׇœn¾¯¾Ú¨jelÞHƪ«Î:ì¥-Ã5j¿ÅÚ½-kÖ5Òiç¸zp§o3*Úþ¬¤ñÎÕåeüª÷¥.Dx©'Š‘3
 ­4Ä	‰Ezâßs»`ÄvHà„C˜SY-õ<Ôˆ:¨Iýþ6Ù³¶„6¤Î8Ò°‰&1–V˜*uL]-REQ…ªý‹.²:b§­U:ÏMéªçil¬½ñóŽ“N™tû~„úwöϏjïѹ™ÈNÓ×uRË™Šb>\#~¯bhðÄR3®	ö£ˆ^¢Š&­u\*¤•¥¯†,¼D]|™QR»667ÿ'C6j%¦ìåÞû³TSM)‹¬³ŽéÃËYwÙ¼³ž7ëÃ|ãVÚ¼uéšÚýã2Hwvòë>Nû6óVfÞ+fÆújóç_
+Ÿ:›i«úSŽg囯ŒÒëÚËsžk·­škÍçUÅ­9¥«mz§œlöÝê´çÞMýóã…䐧nÔqL0Ö9ëbÞ7¿07~¹¶;ÙÈ?_¹""-û	ZõçnsœÛl}<w~:ñðxw¼íà»Ì™‘Ë
+<¬bÌ,êhZvó&<»¹w*®åˆK–ËÌ„e…(‘FU/å]S•jœ,Þ:¢É·TÑǨL§J^™‰2Hnj Á §€ðŒäñé¡:ëMz¸qñÜ]ª¡`à·BÍÁ‘¬‘œ#(ÙIu)o‹j¯VËkCßBЍJ)AP,0P,ª°°"BPÀÀÀ¬0`íÛëpkñŸ"Kð$Lnß©gMÜ:io\¸pá»LSy²Ê,XÝ]ÁsÅg$¬0AÁÁ±ìDäDˆˆ‰g&¥Üܳ}w”ÔMLLȃƒ‚º óÊåÝnó@n°y½Œ‡ã/‚ðL@Òt¦b5t.ü‘ìK—ápÊëØßmóë¯>:óè3;ü@ø›¯uUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUW ÝÚªªªªªªªªªªªªªªªª©¦¸nîð D ç9 9ÎUUUUZ×úÔ›µÖj*–ç7»[Yï Ÿ1ßÒHnݝÞ}Yéò-ãÐ#ÃÏ^ý~%@⁡bã‹"´	*‘}±Æ#µGœ5¬DÞ«^kž”“zã»[ßÚÁ‡`ÐdCZ*¡Aã¸x*ð[ºšzŒéÎ6ˇ›J ‡‹¼×tݾ›NÞv»¾}˜­ð¯`gŸcyéB÷jkXe½VÓfµ-²""36ƦV˜•L¾õ“9kVÁ‹>ž™Ö4¶*¤T¾º¶7ºæëæã»<	’]ž:ÛX)·4›g
+¥ä]M¹a»Ï£—áÓÒõìÏnλø¡ïõø±#à:¿¥ê€ù*¶]hÏ Â?ÞúÿŸÿs_ü¿úÿùÌâòç,9ùoøiªuª›¶gýry„ÛlGôýL|ûü?Û¦_ùúÑýù±Ÿ§þí±î4bo«äLjìæÁyøì,43ZÆm?Wáä”nI¿þrøÿýÞ Wÿ•ç÷ÿ.Ëóú¹²>WÙ=VÃBòXXhf:µŒÚ|¿‡Ü”nI¿ÑËãîñ»^w¸G;ó¹°GÊû'«âÊ4/&,£C1Õ¬fÓâùžâ£rG×{}[@®¯;Ü#úîx¾|E¿º4-f,£C3µk´ø¾g¸¨Ü‘õÞßVÐ+«Î÷ç~»ž/Ÿî%Ú4/,£C
 1Õ¬fÓâùžâ£rIø;¼êˆÕÎ÷çyÜðóψ•u÷F…¬Å”hfv­c6Ÿ‹™î*7$Ÿƒ»Î¨]\ïpŽwÏ<øq.Ñ¡xñeŽ­c6Ÿ‹™î*7$wyÕ+«îÎûîx¾|FÒ_th^f,£C3µk´ø¾g¸¨Ü’uÝçT@®®w¸G;ï¹à"ùñâ]£BñâÊ43ZÆm>/™î*7$Ÿ¢îóª WW;Ü#çsÀEóÚ=Ä»F…çqeŽ­c6Ÿ‹yî*7$Ÿƒ»Î¨]\ïpŽwÏÏhÚKîϼYF†gjÖ3iø·žâ£rI×wQº¹Þáï¾ç€^|G¸—hмÞ,£C1Õ¬fÓño=ÅFä“®ï:¢us½Â9ß}ϼørÇpм݅††c«Xͧåìû’É7ܾ>ï+µç{„s¿;›|¯²jý«£BÓÅ”hfv­c6ŸÌ÷’OÁÝçT@®®w¸G;Î瀋ç´{‰vÎâÊ43ZÆm?óÜTnI?wQº¹Þáï¾ç€^|G¸—hмÞ,£C1Õ¬fÓño=ÅFä“®ï:¢us½Â9ß}ϼøq.Ñ¡y¼YF†c«XͧâÞ{ŠÉ']ÞuD
+êç{„s¾ûž=yñâ]£Bóx²ÇV±›Oż÷’N»¼êˆÕÎ÷çyÜð|öq.Ñ¡yÜYF†c«XͧâÞ{ŠÉ'éÞuD
+êç{„s¾ûž=yñâ]£Bóx²ÇV±›Oż÷’OÁÝçT@®®w¸G;ï¹à#ןî%Ú4/7‹(ÐÌuk´ü[ÏqQ¹$ë»Î¨]\ïpŽwßsÀG¯>"ñ/º4/3Q¡™ÚµŒÚ~-縨ܒuÝçT@®®w¸G;Î瀋ç´{‰vÎâÊ43ZÆm?óÜTnI:îóª WW;Ü#çsÀEóÚ?2ÇÞ™aa¡™ÚµŒÚ~^Ϲ(Ü“}Ëãîñ»^w¸G;ó¹°GÊû'«âÊ4/&,£C1Õ¬fÓâùžâ£rI×wQº¹Þáï¾ç€^|D«¯º4-LYF†gjÖ3iø·žâ£rI×wQº¹Þáï¾ç€^|G¹c¸h^nÂÃC1Õ¬fÓòö}ÉFä›ý¾>ï+µç{„s»îlî¾Õa{4/;aa¡˜êÖ3iù|>ä£rMþ|}Þ WkÎ÷ç~w6ù_dõX_
+Éaa¡˜êÖ3iòþrQ¹&û—ÇÝâv¼ïpŽwçs`•öOU…ðм–Ž­c6Ÿ/á÷%’o¹|}Þ WkÎ÷ç~w6ù_dõX_
+Éaa¡˜êÖ3iòþrQ¹#üY{}Þ WkÎ÷çwÜØ#Ý|'ªÇ~ŽÂÃC1Õ¬fÓòø}ÉFäðËÛîñ»^w¸G;¾æÁëá=^ÔÑüµì‹U³†¿þ9ùÄϯï¶Û—ÆÛ—ãmË™™ž~VÛ|öÛmñ¶ÛWKÖø"}¬žúœûþ†'{çC‚6uïñ¥òñ|V”þ\?°ÝÆÊþÂÔ¿mÒÍ­6Î&íyMë¿Ô“öƒ™Ï^	óéŒ<Ú	žý½6k/ÛWwæóÎZ¨—Z;fÒ°ñjZTÄæ±$H0³¾Î[.ìá°<·¨­ñ8åË‹ÿFFp1ç®0ËCôô|LÁÇ€ìX
+M3–šmIÖé¼Ý³f·ÜÅBllÚgöx73šiãÞšE½{<Ûf¹Ò>‡¬ÊTÃzÁ"×Yã·rÒîûvŽZrìåǧ°êéêñ1âõÕ½Kž¬³ßyî[:²õ/yiºÒl©;TÊo¼›°ÝºÉÍA66ÚK´ÒÒC,If[Œå.ËÆšg]2¥<qÍtî½ÅìvÚÓ†auL;݉w}œ¶]Ý¿G| ³÷  ­×è]›¹ë>ží
+ DZUzå°¦rwº°ÍôÌYœµ0bc,¸õØÚlÖ…LÖ	¼Ì¯ô­‚#ºÛ-3®~q
+ó|)µNËjI‹µkág[8ew/1Y¾î
 gw~re–XÄc1‰0Ã
+ð‹®íéýN´ölâÕã(ÎVs˜[œ2ºë®´²Ë|>;e§Ž[½pðôJâí6ኺefnóuø´‡nXW@×Í¡SZÖ³lX"ǤúPàúGX¯¿«ºG=]ŽO|úÜ‰Êt?2‘ ðf}]ù}|ývë®ïŽÛ¯®™ë5—5‘i‰4ìë²z|;ã­58ØŒq<]wUeCLZÇ,Ùiâ.+x,Yc-ÞV<ʪ*éáÉÌx+©i"°LNʪ„Ó4®´à™U2ðh‚I¡‚À¢/R
+M*u„—MÕéÜ•YHØ»eK½[AãÁVaEÚ(…FÊ8FÌ,Ó—ŒkCZÖ”4ªŽ Ná7B $‚BE%dBVQÚ	Œ`dNΝ¡Æº Õ0	ŠŠ˜ì£;éÁƒ¨Üë9¯B1A‘1l$0XBRàˆ]A;šÎ1ß}÷,ñqËrÉfl²Îç¯[6loÌåg-4Òî\)„–”ÚñjºuZ çš:·â«yç‘Ø7÷x/y¿=x,"Ï’¹\Š¿31Lfô ·`k^.õtUÿ?§¦Þ´ënaa†}pûŸ<÷UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUV›»¹»»»µUUUUñýŸfuè\>{ÎÎyë%R_f¶óñ1ßv˯ËÕˆð7Þ·ÕVý{YŒq”¿ù†×tÕ¾E £üó«÷ÂqñáL Wz‚"fàðØÎàC04´*õ_›ë>éýø>º=xõž¥¤Ô:±KZ$š½c0»–›¯ßOY½+k£®zÆÛv9¨˜Ì¦o\©m^\ºÅ»÷Æje³¬c533¶x¾/ŸH]zsÁ–½YѪÇc.ê¾³Z$hcx5Œ²> àCš(?|å*Ó3_=5ò±°,`ŠO­ùÀíkD‰˜àT5¦2ó[aó›{؂֊GxDh„pPÜÝ…øô 6ï‰lUbî¹Íï{jíö*‘bK0S†[»³ÝUÛæÙÓg“9™›e¬h5hÔËLa0ö/”–kHÃLäQ1e–Q_CR5§nw’Lm´6‰w;¥wÂNxÛš¼å›8½±œ^÷¾y¾mUµÑbDDiˆ{¬Û}›ºoáâ}6­ûÚ·ÙÚK<9ç><ZM’m³¦#k
+Ã5µI©¤šqˆÅ$L$·}2‚_20Ö¬bËIŒI‡­ñ™…ïéyw]œuƒe3kZ¯‹ß™OKBÙ¾b]e0ÝÝoDãž6ÊlßRbƒI\»9ÆvÖ1|1$Ã]ŠŒf™ËÛ0ÿ:£jƒR;Jk@:Ö‰†
+Š
+ˆ·ä> 6}îÒFª¤fµ`]èi¡a~Å|Îxý×åçºI½í·‹ÛŹÖpç.ºß39mTÃäHÃÆ×
+Œd=0ÀvÄ”ß✒î©ÕW9UíK%f®Oî-.¦¶ôgÒ+×Å»<º™å­M54ËmiQ­›=tΪKaÓB PÞ«hÝàdCp1Àε@`â½óF[øê¸ç.i䮬¬³ñ`8í]WVøcwÙïN)~;.¯K6Õ–µ›ÚÎ};cÛ,sŽ-jMtÏK:nòÝ­¯ævÓ\ÑgkgÖØTvY—“¬ÊÎ Yeøºç€0¨?ó"#üï‰""0‚Fþ½Uz÷½ó7†ï­Îu½<9Î&Ü$…5$±$ÝãÓ¬>Í‚…e‹°-rU9tÔÇY4Ú¢rì^¬²(±¼vKvã‹É1Z)QŽ*¢1Ê„T´(¹C‰P)ˆ`­QÑ`zL’uePÐÈ„ªÕ>qnœcž:ê4ºž=¦Îøæºñ6vÞÖµսśð )€RÇžŽá2°Í)R¤2$°2Qš‘d¤RSÏûo¬ÀÌqPìÍ“”ù&ë·[S+»,ìé…[<´ÙuÛ.É¥AbÅô2ç‰`†°éÒiXàࡱÁ»fÓ†›·SvíÛ·pÙêÙ³fÎ\¹nÊ(Aà#cïæè©³Ë~¹@ 8ŽÆòaR¶…bÕ·F¬›+x<K)PÃ®b°|ÏÓ×>=Ã3ö8}ïŸjªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÓww7wwvªªªªŸ§¯ŸŒèOò÷έ‘°‹ÃÀfb>H›RW|¶Sg•°ðù3kñwiTZMœ~4çzÙ}–Q²*ØlÍØR¦Q–YÉšQ”e—:ÔÕ)¨e†0¢°˜]z.—+ò†Êó{Ÿ ƒ`樈*²Å½z-z¼ª+4º˜l·wgSµñŒÖûÕF£—bb,]ÎÏ€54ipNweºà·ÖœhnovÏÇn5²ºñÕ›²Í×_¶-¶YUâ«Ó[*z€YUa/ëµz¢éU D£‡££è{>çÔ;ç_gÞ¾}îšüg-EÚñ:ϺÙD+vFëUÕÞ½ü¿¬õˆA×-}s¾ìæF–jh¹B|‘Ãì>OŸ°Ï4^Ûªè§WZè§lý7Ôԁ
+v©a$
+‰e7Pâë«}þ÷¥¯{
+šÖµö
+¢À²ª“ÌÒwHéXª‹âë8Yw——w“ªÛg9óßtÚ©±ÚþŽv`Ú»ûvv
+¢Î2Îf¯Þt郀â
+Uî\½Nø'0fЦµ¶ÜâsMU1{ßn,¼•v¯‹ZÒÈ$c¦WSO,¸yMÎ8äàâ¢Ò’ÝUËËT¬c}³©F¾ïSÅc4+ëÄ€âÔ±‡
+ýœóc p‹fÝé"l!v(‡±èf½¢6wÆ=ÏW5¥¼Duk!”‡®Â0ÂKà#x6œìèÈ‚æíy»Z­-,­1UBªêÒ,}:vÕoS†‘×^÷GkÙ2©œbuJ©2¥pŠ#å ˆú }tˆ¸¸}Ø CƒŒ¡	:­úCæëH_w¦]âð!<ÁàdÏU´>¶¬T×߯yàð[²ÆÅï-7•TÞAtU\W`Ó"lè‚(0¦ X±ªªÂÒ.ÜX•ã„J¸*²˜-0‘ywU‚›Ì¤ÓÅTé”	º°Îf®«$$!ŠK6ÚE¹¦á%¡&¨4Ã-k5•Z¨ËC‘©—Ti]ÙB3*…Uج·TŠŒº°]tQ„]U6EѲÞ#”‹0ÙÎúñ$dL,«)ˆ@ÂÈb€“X† 5Ïkpÿ39ÕÒt‰²¨¢|œá•Ùi–9k^&ÎXaº
+„6..ppXbÆ%±Aðl=PÍiXÜMÎânn,MDDóÍMObrnw-׃À„x #Áà#Ÿ9F
+‹ t¯ÃÉžA³”?2¯áàÝoÔfèîªüÁˆlPŒß1÷z=méùË0O>
+Ýucãl-Þ<Ù:ï.q¡†À¾pϾ}{rjªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªš©­@-¶Ûm¶ÛmÎÇgrÙ
+s̝X|T\ë„u¸s‡GÔúü qëâ=vûE­kJëÄC¿Æ³;9Y˜·¼  –þ½; r’ޏj-Vƒt®èÝ+HvÀ°‡±õã·,Ú-Æ:¿XçzjµRJÕ¢1{`TƒŽg‡>Ð= côºïß¡ÝcÏU®;U.¼¦Y^™³.Ëtíµ½­Åu¯N`g‰AÕ ·\K6ÇÇj‘Tv¶™Á--oj—/æó·ñžÃÏmíÞ¯{õlNºŒ_=rÎTÓL¼+³Ó4jÛoIâ˜WVK%êY‚DDU…±›5ö“ŠÙÚââ/ÛLIRKÞKÖK#Ï5¦´Ç}ó‹o/ŒjÚÞÑvvˆ0ÆWŒ¼<;}*ªªªªª»ÀiážÝÿ¾Hˆ2v…ìX“½î½Qµ3Q%×tˆD/'z’uYÍ[ÒÞqBNÊõ¸í¶çlyÍ[›çYÕm
 SXÕVÑl-fb”ÃÕËǯ½]uc·¦34‡§Œb¶¬ëfí”Ú7—Ýò/¥ß`6³œóx²pc¦ƒúµt…½Ê– ¬æÀˆ¡õbô‡à^¯5¿•]¶¹6-iÝm_å{]Œ’þ7Ë|‹Ð:”fGi1¬™™0¼G†^ïÛîpãp3«#Ýgƒƒc\^bՍ¬#’
+Áh~h¬ÖTÒë—˜ytëüÅV5³ØãUÍN³ÖjT'Ù}æ r9çWzùŽµ·—!=xìß­LÓµ!œÚ1¨^Ò¤xûvyÆí˜ÝL½Ž|ú:؝|¾ýW´,‹rìŸdchÁì{=ý#­ß>õõîÿ3‚½y^þïé"Ç逽{úãó9™µwy»¼aVUŒ*¬^D‘V°¸Í€¡B€FìUÕÙ‰–óƒLFÎ:ÀJºo"WF2•J8q³…fœsF¬Y!ÉUU)Sn	˜š££=:Í` ŒÔaæP!Ù,ÕܪJª9tM«&åVETɦÙ(£½lÙ.¨Öa†Ê$\¨ZK	kDZÒkBðÖÛE}â8’éóK9g÷ËeÞt»M™[/vŒ6-ðŒ9`à‚((M1Àòõm!cƒmœ0Ù³uÛ6lÙvÍ›´Ó:{µÍ)Ë“±àà {Ê3Êã~g—œ7äñç9æP¼¦
+‘aCϰîå•FëÎeò^ýk÷ý÷×§®U½ž¾C3tüW¯ŒÝÚªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªi®»¹»»»µUUUUóž~Oœws¿\çuì7Å^g/…µ¢Ìåá»»¶¾MóÇW›sv;_œS
+¾-½]{Vö’]^i,hEºÆ%Ó;üÞWNUKï›ÍÝk‰•æÆ›]0ú켻aß̵úo
+Q×7¹m¹Æ)SU–¤êÝ\VsÀÇ5ÀABì`#ÙÖ	—Qfeµ2Ë»§vµgã7³l[\ÝgÉ{Ü}4'*OtTm!Ÿwî½üà¾ËvœTªÎ¸ÖX”ÍêÌ®4ÍkKË,ó´úxñb]ý|yö 
+ŸH±Ìú<q¤ø÷½—óo蟠0€Hže!{Õ"¡¡eÐÆ(P³]5âe‰¾›o*§Yk,Iuuâ8ÇX[zÛábÍlsL)&ªIßZÁͧ:ÊËe|ç7F¯kj²Î]w.î{¦v$DFÒI1âѽI‹[w\ÝXüx¾8íuÞè$}Œa†lõóf'{úûæ»<3aåNÕ¬¯…øb÷Âò0¾–«[JYfŽžÙ®÷Ù­ùái¹Uš––oØ|s8 ëb}´=9£ò'‡ì¸oϯ«(ýh£õ4F^ëWlæ´3SWš”,Xc—N;ã—-8Þíù“\ÃezV™Åö§ŒÉ|:[Æ,éÂÍÜ7_§iÖXwñÏYáÆ³œ)ß³=û¡L=hOBª1\ïÝïzõõëÀ¹ˆùò˜¾½vsà·Z·ÿ sÛÊ1*¥#™U)D˲¬ÂÎï
+œ6ÛYS•Û·vSG
+ηµiaH`B0íŠp,À’VCƒƒƒƒcÇ"w,²Ë,ı55ê1ÜóÌMMD‰ðx+_` ®yF¹^­¶¹á­ï~³ÊÊ¢+„Í~5‚yI3~
+òöÕù–ò®ø½LäõW
+9+Ì®ùßû ì©ÏV­˜^ËÞøÅ­1yÞÂÙSëï0Îaòûëwjªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª«wvªªªªªªªªªªªªªªªªªª­Ì7w@
+ÝÝݪªÖµ­kZÖµþG6]ÊÞ®ë3cÇäcÖI>'qæI"à¸7„8U$”‘y"‰P¢2~ñS
+­Ú©›ú÷¬]ß½õ¬±¬/Je–íŸ><öçjëÇ[c—¦,_¬ã=֝ܶ_vîç9Á>c׈â>ãQO\Ý>“ÑgÁàèô?‚Ú½x$š†…˱uBïÚÃ*"¹btËíšiÛ]o×3¬ñuÊ­Vf÷ºg«
+µe8jeu¦WiËgK:Ϋ}-LÓk,mśӎ·»ëF8Õça•×ðs†v,ëV}x±œ¬vŝóg]ì¾\sœ15–Z]ÙÎÕÎ2Æq½›õô»¶¬~ºsµœÓŠwÎ̯7Æ›,ÙÜ·oÕxÏóÛ•sÛmòÚ‹jÇYJv´³ÎÙÆ×M¸ËguÛ»íÙ­´cK%¬Å¬¢8çtmÕ†9è ÿ‰Ÿ¹ 4Ï\ñ[Q\Y,ŸáÓLuâüø_†˜]‡N˜ã+6Y£R·áK.»7^ÚW)fíÛ0ÖÛÆ1Žæs˜›˜‰feˆõe–Yf%‰©¡‹3ƒ‚‡€pp9F§â æë/<ub>o)Ù¼ªe~(ÉÊ;.ÍòSåp§?!Nw??'ŽuÝUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU»»UUUUUUUUUUUUUUUUUUVæ»»»¸îÕUUUVáÏeσÙC׃í><ô}ÞnžïNœ¡MϱÝ9C¬)¢{27<ïÁÙ–ïÓ†ø³7³³†l®sïãl×gjvíÙ¥/žÚêem¹Õðã8v¤¶ë"ÔNªZ†i«Y:³àXãaB!à(l|•|;½P'‡^oÈÃ[TåËUÛ{óÛ¶o›ó©Wãµíx¨YÛvUYÙÙ¬ö·n÷í~µÅ[µ7í‰Ùf[YegglóðÊç•ëÒÎþ·>´ ¾X‚(0XúïÞîs*ò—ä÷ô>ŸÞý–Á¡Åè`¡ì~rŸùÏŽ®ã-õwK:ݍë–ú󎻿êOÙÿÚÇþáÿK@þÏ#ŸŽoú>ù ):S8…ŠŽ¹wBêw@µÒ¡!†qS~óWýNgXI™øôQp<!×\ñ°ídÔž*ªªª¬%:ˆ*µ”0ÔÖ`Ê?»M—Ó—Ë²ÉÓÓ ­ºý ˆò
+ýwÿ7ÝÿÑó}ÖeK¬ü[OÚg¯¿ÃâÓ¦~·ãôÿïþè?Ëú˜Ô´áø&ryEEÿ@ê€,—u^ÝYéúþ>ÀÄÞUFïþ¿ã…Ǥ:ýp¸?þ§×—±ÖE(U
+w­ïRJª¡óh?ˆÒôÁ5j“ýð{}õ`015xwZêJ¡@“½jøÕER’‰,“ñßôzÎwB—(X€¥õPëz‡„4 u'Ú Ä>8}±Öõ' x†ðÖÃF…Pېpâ’OÎI2N¡‚ëü ?Æ£0°eÒ?ZE"‘Œ f2¥öŸÌÚª«ë· §ð¥ª†)%* †ÀP$0Âd í äÜFâÂý¿þ_zý;܃ñ@´}€P òè zÆ Z½=¨P¥–`‚u¹I Ö  %–`‚{€Ü î´€x^ZH:þh(€s Ôj}rH&#Äm½W8ð@°8£pl
+ž`t °.dZÛTµ­ó$DEáÁúÁñ”˜¢”Pha¿ë‡Øëÿs¸:$ñ7‡Ý¿W2'Àd‡ÁüÁ°;@×zåˆÿz¬ë0‰1+ØÔ!ñô¿Iú@øØŠš`|#ðì¨2ÄP6ŸÀHˆPz ü´‚kõI)Ìw’ÿЇè	p\AáæØ@P<ƒZ†ÈÑ"">	4´wíõ`üÀ|]øDòc¼'†b€w†A¸?ªH.
+d
+ÒHè ûÌ€þä?'³¸8A^PuêöÇ@íh|$“t+ˆÿp´‘Þwpp¨‘Łˆú ®\€À<ÚVcö’"#ï1¥&ASÄÌ	@ 0À pT¡Óx‘°,C?ˆ! @x›§í’B‚*$ˆGP-È$‘Ì‹èÀœÌÈ’‘]ÐÚ€vHù‚à}AEGïƒ ÿ7p`àýO at vßãÆà ЍP¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨R¨T’RHUI!üñ€D¸(ˆ^àQk+ð¨È(=¡ë'«æ©ûæ °,
+ðÅQJ¨¨ªP¨U([¿`,å¹Ðn  }Ò:H¤QjM{Õ0@XÀ¸>·’Z@&@ ”$댂ˆ‹/Ή?U`Y$Wà—Qp#`RdÄ^-h‚œùpX$ÁR$žm`NòBz‰@B.ºF@¸ÜâÂ}>ñÁ5ûðà^~€ðå'ãú[Ûýá#â¡HÎlÆ¯¢E©-Œëº[r¦Hjj)"¨˜Rç 6ŠJŠF¶bÖm¶Ô-ž’5PÓŒÕÜW³\‚X¸8CƇ˜IUÀ)"L‚àèòp2
+÷¸!ÙÀ-œÙeÀˆ¨IU$ðÉ(	`DÛÊWn ˜BIe:C,ÑÛ#´B€ÜäÀ²Àf؍ èÀózˆ 8¸H…â0‡OÕ‡ûð¨ü·¸8ûûºÌ=.¯hZL@ä€Ä‹€Tƒ`?†xǘ`P(¢.Ë„$ë
+‘)’ö¤‡Ó§È€©Î÷ÜL;ƒ Ðd° \D
+@ø¾€ªéÈü€[,`H9NEáí#û­ 7Aû7$DGÏ/ò¤MàAp&­'­%! ŠIJ
+¨ó ]Ô
+ 6@	t
+¤x`G¤MâñùKÈH#é DY÷`~ ý ?ý¾õUUQ]A÷É÷z¤ª½dõóUI-UIy“À øOÌÜjpr8Ø~??»øÛØdAòÀÈ=A@ûb¼X	ÜB%Ÿ
+ù?GáVŠ1ù~X{³Õ5{÷€÷Œ= wýHÚò	IùÁ¨äZ%o ¢"tAt
+"&ívï˜ý"G.ð7žÀÈ(ö°5$æ,Ã2I àkù¡P5vcxŸËpr	?h;‚‘-õ›ƒÒÛ¸
+ì‚8Àh›N |¤$Nah;ðà:(QB¡(U
+Š(‹‚y$x’>–I0fÓð@è¡ä@ vp7Cûàº@?õ7Ì
+É@j;ƒ D}™A@=ãžÔ	ü ßó<-‘P'Î`ÀþI‹ºá¨ÈЄ°·ï‡xŸd, l3È
+2$E P’è	âI>ëÿ -üµoºH“ùÒòb}xˆ_î÷ª¤LK@”½Át~•V"РP†£ô‡ìЁÊ޼Þ€}AR |P|úB¥¤K
+b'À[@T(àt¸¬Ð¡""=Áâ· À$üdÈ"àO¸¸Žtƒá?Óoã…½'Å:î”|¯ø×¾±û~Yùyñ@òځóûø,D’BÒTI9…D–‡QŸø'Ȥ„>@6P²	ú,Ú_BBDU æG (‰â­ÃustO°;ù74þ˜>ˆž!Ôx@›Ã§°;wô‡¿z˜2¾»ÇÜ˜Lýó•ÒxJvj;ƒp;žà5"ˆ?1¿Ñt%¤Ÿ¼Hˆ«îø0Ì0›`TTP.;ÿD‰KÃÀ1/:†@–’ÚHCd‹É
+A` ·1á†Ã&d‘Ø@Èb Õ@ð
+·¾ÁQw¾(wCíd‡ˆ@âÀ¼’Àâ> À(WÍx‡@ï@ P8áp=Aಐ-h†ÀäXÅê式ÀPèAè?¢*}AôY(¸ԐýQþI$új‘P¬ À8^àÛüPr Y`Z¥	(I,”
+’`¨û xì㏡"";À“ä³õÀû‚NÀücpkþ%WÌ‚ddKÌ|Áò¬“!¹ìÀ¶Ô\ƒ³˜žÀ°6ý·¼#Áî`_*òXÉ=.§H<Bx–1$ò´>„wð}E¢Ü”ø!åÛ#ðX}þ0ä@~"?Ì
+è‚ÓÈ3Òè‹Nм)i— xÈÁì
+EÉ,ÀÀ(Ö€|Áæ+#^³`qSÖ±lôx’|pdëèèH&׳þ3`wž‰öèyü°/©pzƒ¤|AÒ¶©8⤓ø"—?ô~ ì
+Àä ïý d.ƒæüÁP%¤$’BAGÍ 'Ò„HœÂ*ø’""ߍÁòì
+P3u
+EEp5
+ÁÜ^Zn^úÐ7>ß0UT¤ÌG°)9ÁkZõÔGPøÆ€?­!ìdp|Nèµ¥ÀzOwp"àão>àº_ˆGü(z³ãÍÍàRðù)"O?rˆþÐ*G°2¿§ååÓcç;ž$–ù|Aeb""•U”ƒÔáNvêwÍ$œB`HªG ¶âERIT‹|Ò;$bȲ=®,‘ßó²,ò[7ÆAœc«^õ¶1}ø$DFàô X鏵êOž1µ»î‚äª&ûAúð	P)‹Ä„"„¬Ý-"Ø]	P%¿¬Hˆ‹¢qUÊÄŸ/__o_@/Øuè
+m‹Z>	ÔËÈ%À4
+²*¢à·Ó¨öà6@¸¾~º{\¦I	èotAL;ܼ¨hÞ°$òb8È
+Àr	Çê°Fc1ãçÈô`zM‘ö÷€ø í	è —»â¨dƒ"0¡@õ$DF<ƒà àèH"ÁèòÁÙÈ$ z¦{ÿG ü›2$B/F€ž|'°-`{ýWÒ{•C¸4À Ü°ƒ;	¤‘Ã{âAð[ëY•ÁfÀñ€.ï
+’$.Á9"#ÌT"NnÀ*¡ßÈ>}n„‚(ÜhêxÀwÐ6#t~tFø3 ƒ Xöðp]"P
+ço€?ÊK'íû»z7)ê
+'€P=ÕCØÄûƒ`|@m× ¯ °6%nôÀÖ˜{Â=³ ¼+¸:AÕBBDxc`cþmý-„"|ÿ¶Iø!Vø`òM’E‰P¡/HxßýÀbw‡ÃöÞ $sïÀßà’ŸÆ˜…îñcñºHˆ¨0ˆ0ˆ‘?®À÷Ê=2
+Dí<¤ûúŠ# ¤‰P‹ê!¾ÄƒîŒB6ò
+ àÙØaw«úæI%ý ôüãç*À;$#ÔÀˆ?P>àöò8{€‘@ÔAi$hÃVÃð øÔ	BFÉ"‘ëôX{߸^xÔPr	„Å! ¤%! ÐÐHí(ÄI “ÿø»’)„ƒåš$Ø
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.env
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.env	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.env	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,4 @@
+HWLOC_PU_DISTANCES='0-31:16*2'
+export HWLOC_PU_DISTANCES
+HWLOC_NUMANode_DISTANCES='0-7:2*2*2'
+export HWLOC_NUMANode_DISTANCES

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.options
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.options	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.options	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+-v --of xml

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_index="0" cpuset="0x0000003f" complete_cpuset="0xffffffff" online_cpuset="0xffffffff" allowed_cpuset="0x0000003f" nodeset="0x000000ff" complete_nodeset="0x000000ff" allowed_nodeset="0x0000003f">
+    <info name="DMIProductName" value="H8QG6"/>
+    <info name="DMIProductVersion" value="1234567890"/>
+    <info name="DMIBoardVendor" value="Supermicro"/>
+    <info name="DMIBoardName" value="H8QG6"/>
+    <info name="DMIBoardVersion" value="1234567890"/>
+    <info name="DMIBoardAssetTag" value="1234567890"/>
+    <info name="DMIChassisVendor" value="Supermicro"/>
+    <info name="DMIChassisType" value="17"/>
+    <info name="DMIChassisVersion" value="1234567890"/>
+    <info name="DMIChassisAssetTag" value="1234567890"/>
+    <info name="DMIBIOSVendor" value="American Megatrends Inc."/>
+    <info name="DMIBIOSVersion" value="080016 "/>
+    <info name="DMIBIOSDate" value="07/26/2011"/>
+    <info name="DMISysVendor" value="Supermicro"/>
+    <info name="Backend" value="Linux"/>
+    <info name="LinuxCgroup" value="/uid_2008/job_15389/step_0"/>
+    <distances nbobjs="8" relative_depth="3" latency_base="1.000000">
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="4.000000"/>
+      <latency value="4.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="4.000000"/>
+      <latency value="4.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="4.000000"/>
+      <latency value="4.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="4.000000"/>
+      <latency value="4.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="4.000000"/>
+      <latency value="4.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="4.000000"/>
+      <latency value="4.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="4.000000"/>
+      <latency value="4.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="8.000000"/>
+      <latency value="4.000000"/>
+      <latency value="4.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+    </distances>
+    <object type="Group" cpuset="0x0000003f" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" allowed_cpuset="0x0000003f" nodeset="0x0000000f" complete_nodeset="0x0000000f" allowed_nodeset="0x0000000f" depth="1">
+      <object type="Socket" os_index="0" cpuset="0x0000003f" complete_cpuset="0x000000ff" online_cpuset="0x000000ff" allowed_cpuset="0x0000003f" nodeset="0x00000003" complete_nodeset="0x00000003" allowed_nodeset="0x00000003">
+        <info name="CPUModel" value="AMD Opteron(tm) Processor 6134"/>
+        <distances nbobjs="6" relative_depth="7" latency_base="1.000000">
+          <latency value="1.000000"/>
+          <latency value="4.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="4.000000"/>
+          <latency value="1.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="1.000000"/>
+          <latency value="4.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="4.000000"/>
+          <latency value="1.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="1.000000"/>
+          <latency value="4.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="8.000000"/>
+          <latency value="4.000000"/>
+          <latency value="1.000000"/>
+        </distances>
+        <object type="NUMANode" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="17177686016">
+          <object type="Cache" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="5240832" depth="3" cache_linesize="64" cache_associativity="48">
+            <object type="Group" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" depth="3">
+              <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="524288" depth="2" cache_linesize="64" cache_associativity="16">
+                <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+                  <object type="Core" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                    <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                  </object>
+                </object>
+              </object>
+              <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="524288" depth="2" cache_linesize="64" cache_associativity="16">
+                <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+                  <object type="Core" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                    <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                  </object>
+                </object>
+              </object>
+            </object>
+            <object type="Group" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" depth="3">
+              <object type="Cache" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="524288" depth="2" cache_linesize="64" cache_associativity="16">
+                <object type="Cache" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+                  <object type="Core" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                    <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                  </object>
+                </object>
+              </object>
+              <object type="Cache" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="524288" depth="2" cache_linesize="64" cache_associativity="16">
+                <object type="Cache" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+                  <object type="Core" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                    <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                  </object>
+                </object>
+              </object>
+            </object>
+          </object>
+        </object>
+        <object type="NUMANode" os_index="1" cpuset="0x00000030" complete_cpuset="0x000000f0" online_cpuset="0x000000f0" allowed_cpuset="0x00000030" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="17179869184">
+          <object type="Cache" cpuset="0x00000030" complete_cpuset="0x000000f0" online_cpuset="0x000000f0" allowed_cpuset="0x00000030" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="5240832" depth="3" cache_linesize="64" cache_associativity="48">
+            <object type="Cache" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="524288" depth="2" cache_linesize="64" cache_associativity="16">
+              <object type="Cache" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+                <object type="Core" os_index="0" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                  <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                </object>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="524288" depth="2" cache_linesize="64" cache_associativity="16">
+              <object type="Cache" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="64" cache_associativity="2">
+                <object type="Core" os_index="1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                  <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                </object>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="1" cpuset="0x0" complete_cpuset="0x0000ff00" online_cpuset="0x0000ff00" allowed_cpuset="0x0" nodeset="0x0000000c" complete_nodeset="0x0000000c" allowed_nodeset="0x0000000c">
+        <info name="CPUModel" value="AMD Opteron(tm) Processor 6134"/>
+        <object type="NUMANode" os_index="2" cpuset="0x0" complete_cpuset="0x00000f00" online_cpuset="0x00000f00" allowed_cpuset="0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="17179869184"/>
+        <object type="NUMANode" os_index="3" cpuset="0x0" complete_cpuset="0x0000f000" online_cpuset="0x0000f000" allowed_cpuset="0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="17179869184"/>
+      </object>
+    </object>
+    <object type="Group" cpuset="0x0" complete_cpuset="0xffff0000" online_cpuset="0xffff0000" allowed_cpuset="0x0" nodeset="0x000000f0" complete_nodeset="0x000000f0" allowed_nodeset="0x00000030" depth="1">
+      <object type="Socket" os_index="2" cpuset="0x0" complete_cpuset="0x00ff0000" online_cpuset="0x00ff0000" allowed_cpuset="0x0" nodeset="0x00000030" complete_nodeset="0x00000030" allowed_nodeset="0x00000030">
+        <info name="CPUModel" value="AMD Opteron(tm) Processor 6134"/>
+        <object type="NUMANode" os_index="4" cpuset="0x0" complete_cpuset="0x000f0000" online_cpuset="0x000f0000" allowed_cpuset="0x0" nodeset="0x00000010" complete_nodeset="0x00000010" allowed_nodeset="0x00000010" local_memory="17179869184"/>
+        <object type="NUMANode" os_index="5" cpuset="0x0" complete_cpuset="0x00f00000" online_cpuset="0x00f00000" allowed_cpuset="0x0" nodeset="0x00000020" complete_nodeset="0x00000020" allowed_nodeset="0x00000020" local_memory="17179869184"/>
+      </object>
+      <object type="Socket" os_index="3" cpuset="0x0" complete_cpuset="0xff000000" online_cpuset="0xff000000" allowed_cpuset="0x0" nodeset="0x000000c0" complete_nodeset="0x000000c0" allowed_nodeset="0x0">
+        <info name="CPUModel" value="AMD Opteron(tm) Processor 6134"/>
+        <object type="NUMANode" os_index="6" cpuset="0x0" complete_cpuset="0x0f000000" online_cpuset="0x0f000000" allowed_cpuset="0x0" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
+        <object type="NUMANode" os_index="7" cpuset="0x0" complete_cpuset="0xf0000000" online_cpuset="0xf0000000" allowed_cpuset="0x0" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32amd64-4s2n4c-cgroup.xml.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+32amd64-4s2n4c-cgroup.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32ppc-4n4c2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32ppc-4n4c2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32ppc-4n4c2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,147 @@
+Machine (P#0 total=129236992KB Backend=Linux)
+  NUMANode L#0 (P#0 local=31195136KB total=31195136KB)
+    L3Cache L#0 (size=32768KB linesize=128)
+      L2Cache L#0 (size=4096KB linesize=128 ways=8)
+        L1Cache L#0 (size=64KB linesize=128 ways=8)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+        L1Cache L#1 (size=64KB linesize=128 ways=8)
+          Core L#1 (P#2)
+            PU L#1 (P#2)
+    L3Cache L#1 (size=32768KB linesize=128)
+      L2Cache L#1 (size=4096KB linesize=128 ways=8)
+        L1Cache L#2 (size=64KB linesize=128 ways=8)
+          Core L#2 (P#4)
+            PU L#2 (P#4)
+        L1Cache L#3 (size=64KB linesize=128 ways=8)
+          Core L#3 (P#6)
+            PU L#3 (P#6)
+    L3Cache L#2 (size=32768KB linesize=128)
+      L2Cache L#2 (size=4096KB linesize=128 ways=8)
+        L1Cache L#4 (size=64KB linesize=128 ways=8)
+          Core L#4 (P#8)
+            PU L#4 (P#8)
+        L1Cache L#5 (size=64KB linesize=128 ways=8)
+          Core L#5 (P#10)
+            PU L#5 (P#10)
+    L3Cache L#3 (size=32768KB linesize=128)
+      L2Cache L#3 (size=4096KB linesize=128 ways=8)
+        L1Cache L#6 (size=64KB linesize=128 ways=8)
+          Core L#6 (P#12)
+            PU L#6 (P#12)
+        L1Cache L#7 (size=64KB linesize=128 ways=8)
+          Core L#7 (P#14)
+            PU L#7 (P#14)
+  NUMANode L#1 (P#1 local=32768000KB total=32768000KB)
+    L3Cache L#4 (size=32768KB linesize=128)
+      L2Cache L#4 (size=4096KB linesize=128 ways=8)
+        L1Cache L#8 (size=64KB linesize=128 ways=8)
+          Core L#8 (P#16)
+            PU L#8 (P#16)
+        L1Cache L#9 (size=64KB linesize=128 ways=8)
+          Core L#9 (P#18)
+            PU L#9 (P#18)
+    L3Cache L#5 (size=32768KB linesize=128)
+      L2Cache L#5 (size=4096KB linesize=128 ways=8)
+        L1Cache L#10 (size=64KB linesize=128 ways=8)
+          Core L#10 (P#20)
+            PU L#10 (P#20)
+        L1Cache L#11 (size=64KB linesize=128 ways=8)
+          Core L#11 (P#22)
+            PU L#11 (P#22)
+    L3Cache L#6 (size=32768KB linesize=128)
+      L2Cache L#6 (size=4096KB linesize=128 ways=8)
+        L1Cache L#12 (size=64KB linesize=128 ways=8)
+          Core L#12 (P#24)
+            PU L#12 (P#24)
+        L1Cache L#13 (size=64KB linesize=128 ways=8)
+          Core L#13 (P#26)
+            PU L#13 (P#26)
+    L3Cache L#7 (size=32768KB linesize=128)
+      L2Cache L#7 (size=4096KB linesize=128 ways=8)
+        L1Cache L#14 (size=64KB linesize=128 ways=8)
+          Core L#14 (P#28)
+            PU L#14 (P#28)
+        L1Cache L#15 (size=64KB linesize=128 ways=8)
+          Core L#15 (P#30)
+            PU L#15 (P#30)
+  NUMANode L#2 (P#2 local=32768000KB total=32768000KB)
+    L3Cache L#8 (size=32768KB linesize=128)
+      L2Cache L#8 (size=4096KB linesize=128 ways=8)
+        L1Cache L#16 (size=64KB linesize=128 ways=8)
+          Core L#16 (P#32)
+            PU L#16 (P#32)
+        L1Cache L#17 (size=64KB linesize=128 ways=8)
+          Core L#17 (P#34)
+            PU L#17 (P#34)
+    L3Cache L#9 (size=32768KB linesize=128)
+      L2Cache L#9 (size=4096KB linesize=128 ways=8)
+        L1Cache L#18 (size=64KB linesize=128 ways=8)
+          Core L#18 (P#36)
+            PU L#18 (P#36)
+        L1Cache L#19 (size=64KB linesize=128 ways=8)
+          Core L#19 (P#38)
+            PU L#19 (P#38)
+    L3Cache L#10 (size=32768KB linesize=128)
+      L2Cache L#10 (size=4096KB linesize=128 ways=8)
+        L1Cache L#20 (size=64KB linesize=128 ways=8)
+          Core L#20 (P#40)
+            PU L#20 (P#40)
+        L1Cache L#21 (size=64KB linesize=128 ways=8)
+          Core L#21 (P#42)
+            PU L#21 (P#42)
+    L3Cache L#11 (size=32768KB linesize=128)
+      L2Cache L#11 (size=4096KB linesize=128 ways=8)
+        L1Cache L#22 (size=64KB linesize=128 ways=8)
+          Core L#22 (P#44)
+            PU L#22 (P#44)
+        L1Cache L#23 (size=64KB linesize=128 ways=8)
+          Core L#23 (P#46)
+            PU L#23 (P#46)
+  NUMANode L#3 (P#3 local=32505856KB total=32505856KB)
+    L3Cache L#12 (size=32768KB linesize=128)
+      L2Cache L#12 (size=4096KB linesize=128 ways=8)
+        L1Cache L#24 (size=64KB linesize=128 ways=8)
+          Core L#24 (P#48)
+            PU L#24 (P#48)
+        L1Cache L#25 (size=64KB linesize=128 ways=8)
+          Core L#25 (P#50)
+            PU L#25 (P#50)
+    L3Cache L#13 (size=32768KB linesize=128)
+      L2Cache L#13 (size=4096KB linesize=128 ways=8)
+        L1Cache L#26 (size=64KB linesize=128 ways=8)
+          Core L#26 (P#52)
+            PU L#26 (P#52)
+        L1Cache L#27 (size=64KB linesize=128 ways=8)
+          Core L#27 (P#54)
+            PU L#27 (P#54)
+    L3Cache L#14 (size=32768KB linesize=128)
+      L2Cache L#14 (size=4096KB linesize=128 ways=8)
+        L1Cache L#28 (size=64KB linesize=128 ways=8)
+          Core L#28 (P#56)
+            PU L#28 (P#56)
+        L1Cache L#29 (size=64KB linesize=128 ways=8)
+          Core L#29 (P#58)
+            PU L#29 (P#58)
+    L3Cache L#15 (size=32768KB linesize=128)
+      L2Cache L#15 (size=4096KB linesize=128 ways=8)
+        L1Cache L#30 (size=64KB linesize=128 ways=8)
+          Core L#30 (P#60)
+            PU L#30 (P#60)
+        L1Cache L#31 (size=64KB linesize=128 ways=8)
+          Core L#31 (P#62)
+            PU L#31 (P#62)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 NUMANodes (type #2)
+  depth 2:	16 Caches (type #4)
+   depth 3:	16 Caches (type #4)
+    depth 4:	32 Caches (type #4)
+     depth 5:	32 Cores (type #5)
+      depth 6:	32 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1     2     3
+      0 1.000 2.000 2.000 2.000
+      1 2.000 1.000 2.000 2.000
+      2 2.000 2.000 1.000 2.000
+      3 2.000 2.000 2.000 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32ppc-4n4c2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32ppc-4n4c2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/32ppc-4n4c2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,176 @@
+BZh91AY&SY94²`ðMÿÿÿÿÿÿÿÿÿÿ÷ߨÿÿÿõÜ„bøBèÄbáûæG"ÿyàyà #íòèNû†ø ¾êŠl|       ¸©"Š	  -   Þ
+Ö©ÆkݺŠp¼ïCSozùu‘(€%AE>€º]G„óÞù°  ¬`fÍ{lö¸­zäm•Úp…βìZÀ€\
+“—ѹ´õ¤£æo„c×Õ•¡IÀfÖVÍ[»©¸ðÃzJÍë…ÒQƒ¶WS„XhwŸ«à{{8;PïL¹€/€h=€     €z ô   ( 
+ Ó@M#ÔD$jb4Ò4jhõ 4ÓÔ ôš             5<U(§¤ÚJe             42   
+TüýJ“SÔTõ6§êšÕP44ôõõAP        
+     M$"!bbFž¦Òz@P
+ 3P   ¡          %&¤ž)êi¡©”ö¦G“LžFM©¦¨ýÕDÚyÄ6P?ÕOA¦‚ Â1#5z™6“0Cš2zQHMÑêLM„Sž™¤Ôc)þ©µ&i
+=&žPišƒO$Óh  Ðh M¨ OI¥äñ  È ž0~`Ÿœ£@šÆ%’Å’©eK,[R¬ªˆÀ,IJRŰä%Q( Ì	õ„È``f˜ü‘(g&éab¢ÅE(±JÈQ0‘,¢•sþ˜š&a¸LÅ÷Âf3 È`%%ƒˆÆˆ¡£ŸüBM*¬H¢ŠŠ,dUF
+ªÆ
+ªÄ`ª¬HªŒUD20`„ƒˆb‘ŒD˜ª²”
+Ѝ±"¬‹TQQUQQTQTQUTQQQ–2 Á| Š*EE1dQDQDŠý¨`\¥U!ZÚ¶jT­´m(¢‹ªE¶¥Eˆ[m,U­m[)h
+*¢ÆTZÚ¶ZPQU2Ñ”*(ªŠ(X O×~×˰¡AhR‰h…–%…,cBÒÕ`mÛjÒJ‹ZÖÕª  zI$‘tšJRÜ	œ$L
+È«ReF Â‘7¤O¸–HÉ1©¸Ä‰ùFìGg$OÖ¨àQà÷…ˆÄj'Óë2BBŠ¢(¬EEQä8 sìß´kõnfV`]v
+€ÌÃ-ysvíÒ\¼¹†f  3e—ŽƒLX¢x‡Ÿ?§¢ª¯PëÏ›ç333332Ë,g,t¯U!rX¶-‹`°X,‚Á`°X,‚Á`°X,PX,‚Ábªªªªªªªªªªªªªªª²Œ’HùÄŒÒ$‰*	*	‚X€ö)"BqÁ÷ÿÅül£Ð
+È$ò!– emvÕéö›~£q¶Üõ9zìÍÖï7/;yŸ‡{¡¾Ã²Þì´7ÜêéR”¥)J$’I$’I$’I$’I$’I$’I%m¶Ûm¶Ûm¶Ûm¶Ûmú€Ö}ÂBBzg-úÛ~²ßšß–ߒߟoÇj?
+¿‡·ñþ*ß³·êÛøÛoßmû+~¥¿~·ò6þNßÊÛù{1o×Û÷~¥¿Rß½Û÷¯Â _íªªªªªªªªªªª²I$’I$’I`‡,ûzœõdÛ¼¹ºË»zhD¢£q¸Ù´üÑÝìý±I*7½ÆÍ§Ú½ìý±J*7
+tŸé7«?…)%EêáN“Á¿µ½œ)EFãq³i÷'w³õŠIQ½î6m>¿¡¾Ö)EG¸Ù´èîö~±I*7½ÆÍ§þÎïeJAQz}Oæ™Ö‰ü¹I*-î,é=MÝÔ’¢ÞâΓƒc½Ì¢£q¸Ù´õ;½ŸÌ”’£{ÜlÚ|ó¿›|Í¢£ˆÜlÚzÞÏæÊIQ½î6m>yßÔßó…(¨â76žÇw³÷e$¨Þ÷6Ÿ)ßÛïƒ÷%(¨â76žÇw³÷E$¨Þ÷6Ÿ)ßÕßîŠQQÄn6m=Žïgñå$¨Þ÷6Ÿ)ßä7ÁòRŠŽ#q³iêw{?)%F÷¸Ù´ùNþù¾çŠQQÄn6m=Žïgò¥$¨Þ÷6Ÿ)Ù½ŸªRJÅÅ–NêÏÚ’¢æâË'©±«$¤}F'&5£ôJIQqqgIï1øëÙøÊQQ¸ÜlÚ}»Ùø
+IQ½î6m=çgê
+ìk놃áþÐ6¿×
+‡ã¼†øÊÿ\7¡ù'WN}ó§Jmó§YN}÷IÒ§]|“®§Q|“¥N¶ù'{§y¾IÒ§W|“£N…òN•9o’vn§ªÌŸê³'Ÿ9s'`ræN°åÌžÄåÌŸÔåÌŸ<åÌžåÌœgC2qNdã;Ædã:ŒÉÆw\ÉÆw<ÉÆsó'¡ïUUUÎñ;ë³øÅ3+3+3+HVB™•‚™•‚™•‚™•‚™•‚™•‚²ÒÚ[K™†Z\Ì2ÒæaŸÙ$Üùý$OÃúˆ$²G³»²I>P(,ȈnA-‘ÐŒ
+@úzû ¼2܉dÀ‘{&y„>fLöN ÓA
+Ú°"cåäÏ1'ÌÉ€Ç<™æ’`ƒ‡aù7f	ó2`&y¹ƒäƒx7ƒŽà“v k=ë›C<Ä‘Õ`èe’{ÔI/ÐË(H:Aϐ0¤’6cܱ 4b‰5,±ȈÔ²Àèš–eO1 à@ú`ÉÚa$—Œ"
+hR€&´ Ãe‚.u(&î”Ë¥
+í)«Jjãþ?_}ûœ÷ñBB$wÀ< í=Hd²EÂI"ªÔ‘%U© ªµ!V‘%U©*­’A! HÄPHÄUc$J ZBHK)$YbBÊ",ýž P-‚Y`‘e„€bHH Æ1ŒAˆÆ1ŒFDŒ# ô@ˆ €däâÅ‹,\L¾‡Ãájõ½f,_7,X±iïô´t:m;m·O¥·¶ÛríÒ¶ÜÛm¶Ûm¶Ûm¶Ûmà(*»‹Ô6`@P³s%ï¯/Ìš¶Ê¿v³¢«÷~ÊõD®I¦§YUVòÈ–š§$–7´ƒ%l‘Ü3Í]Iî'q;‰'sm“»…WI:7´ƒ%l‘Ü3Èí¤–7´ƒ%l‘Ü38¥m’_i&m°Ý¸g¢åÝ{¶ÖØ·^åv[ºÛUQU	ÚÛvWeµ¼ˆ¢-¢Š·p¢Ì7pïs0Å0A:ސÃ	Š­“Ã{„a½Â0Þáopè$˜Z-´FÜ#
+î†÷Ã{‡A$Â0ÞáÌ0ð¬7¸FÜ#
+îîáo¸FÜ#
+î†÷‚I„a½Â0ÞáopŒ7¸FÜ6ÝÂ0ßpè$˜$ÓåKé{=6¶ÉŸa³ÚaÂó‚ìöÒu·9¶ojúñéÝ´ÝÝÂvá¶Ûd­Ý¬'Ez,Hwm7,¶•½¶î%`Ò¶á‰Í¾‰H}Û¶Øm†D†*vx\Ìkg²ÃI¦‰ÛYÛcËe¶ÙµÙD¥–gGlöÒu·9¶okÜæP$ýÝÚIc}¤+dŽáš=FêøAø’Fm†0Þč
+5ÎânÄ՝ùóåøÉ°jG΄ñãyü8¥‚í¶Ûk¬’Æöd­’;†uT¨©™K¸©Y[™Jâ¦$¼Êy³+³)\T¬¥Ø©Y[™[2¶elÊÙ•¸’4)æVÌ¢é]]™@¢¶elÊ](‚
+î$fØc
+ìHÖÑEØ‘›
+Œ7±#(çm{I¯´“6ØnÜ39(ÜI#6ÃobFEmÖH]{I3m†íÃ2:½Ë)ªª*Ý[w*¢ª[Ûm¶Ø¶ÄöÙ=e'¸ÄîÜÛm¶NáÍžšXÕhžÃ${n­õulΫJ]°£mFUu&bf&i›m¶É˜0ç¨äë·£œð溹'ÒÔo“å æº¼fN>ݲKl’Û$¶É$–ÚÛmImŠœV‘.ö‹º,À½¢Æ9v¶.è°/h°/h³o»-b½Ñ`^íÑn;h»¢Í·¢Ú-ë»q3‰˜™‰&fÛ&bäÝ$.¾ÒLÛa»pÍ¿1ÜÝ–4»H9+d
 ŽðÌÎáÉuéeö’fÝ’;±/ĈÞÚYc}¤+dŽá˜ggl²Æöd­’;†xa·˜·ÛÓK´²Æöd­’;†h[講K,o´ƒ%l‘Ü3ó
+úñWÔIîÞï~~~~ ÏOAÍgNŲټz÷q˜¶e-ŽÆÓØ´‰-–Ëeì©´¶e=‹dÙlðMÉ%í É[$wÕ˜wºàl”¯ºàl”ëÀ£0:º
+·ºàl”¯d Ýx׺àw\ëÝp4;ݪ`Íx×w0v¸×Ú`î¸×+Ö“8™‰šfÛm²fåÝÜLâf&bI™¶É›¶íd…×ÚI›l7nÀvîé!uí$Ͷ·Ñpó±QqÍõ{°ÛÇ^9Ž«\;c›ê÷a°j§L6ã˜ëÇ1Õk‡lsV¸vÇ1׎sÇ^9޼sxæ:ñÍõVÑoÇ^9ަ¨6Ç1׎c­¶‹xæ:ñÌuø½íðiò|’_Ï’LÛa§nš†n$‘›aŒ7±#=ÄAÒn—K§wYtº]Ö\-Öîâ•Ý.—K¯%wK¥Òîâ•Û&»ºÁðx{Þ÷šé‚aºIE‚KeH°¨•V!bF!`‘FDÂ
+É$†wˆ°5$¬F1Œb‚1¤¡a°Dˆ20VFDEDXˆ0A"ƒ#AEX)ËA½`÷tÕuŽê¥ãR¢1<Z7WÚˆå·3(¬¢ª¨±¢Š¢ˆˆªÄDQDUE"EXŠÄQUTXŒQ¨
+JŠª""ÛDEQUEÑÑÖ.­ÒèÌz¼JÑ‘Œ–XE…°9’mj„zÔU޵pͺ¢)ˆÎ"¤‘¨PgGC2Ih²
+öa´ÞI}_
+9š.D1#$AC	‘IH‘ëPÀùh²&¬³Z¹Öò`o«‚¥šÖV=d˜Š£Æ ˆ#ŠNº©Ñƒ
+éĐKdÅ=·‰$0$ræôIMÉ!Ѱ‚òDª¤°‘>7QáêLŠÔ—WLáÔÁX!†‰L+æJÖtV=]2µ4ãWU‹h-±33”¸–¤“L$•kâKhðàÅ×Þ¢Ò[&˜-]h°“`–üÒ:Câäa²ä$Ä‘ ¡oŪ=QÌ3%D¶©^d*¨"s#—2ê	"I­:›Œ™B%$LˆblCˆÄ‚ó NäMõ Â†Ÿ G4âæ+b¢¼â¡¦¨²A"ªÜir><-ó€´¡!Ç$	´’ˆÄJHØ}‚‘j5«n?*„Q‡*¸s¤ÉžöAA ’†mwJ®írå¦aZÜjÅ^‰Ü«Û’(&W ËjŠÏÀ"	 lCæKå=¤Jd¬J¸­ÊS4Ñ¡|¡†@¡1H„,£á iP…8˜„Fbp‡	G6&B(£w†8j”ºÅ)k˜\Kne2¸Ó.9tëVœ8oÅ1qÛWB%¨xñ-’Ù!’@ŒÀ¸d’Yä—µ ‘n´€J#D.÷| ˜rÉÌ<dÂdPDg8×n”bßsSºw.œÜ1¡ÄE«0›¢ç“d‚+2[$ˆ’H#]‚Hs“Ur…´IÒdX…p1
+d°ê•"®Ûmp¶‘º‰ÅëbmÙ$’&ŽC˜yH¤JI"e>Ør$.m$€X"æ—¯b $SsjŽ(`9䉿K¤°‘"
+5ƒ%Ž´€A‰"J3öÀL	¹¼Ò¤œ½'"`\m(ß4½[¨±ÀL	fóKÛ¼$ä`¥p©%[­/^ð“‘‚•¤•n´½[¨±ÀL	fóKÛ`-ÈÑÅ`Hª·Z at pe¤«xâI(0ä’æóÀÒ
+·6ë«l’nÀ‘W7Í ˆÔ[r1AHVì”MºÖIuÆrž-¢N £rNiyì¹8÷LAg¤š%:ç7¼neÍÜÌÚ¢ëWS¹÷I$ØM*Ü"Æ,0"@FAŠÞV•QQd–HÂM “Á% N!ÄQEXˆ‘ŒƒQ¡PDDjU9*(´#UDQEZ‹,QÈC9m+!-¨ª(²rÁÍd6ÃH.üd†G À¡ Ø6tšK&â_U!b2!!ڝP
+uJ¡Tºc&*«f4(3UŒ! È¨vv¡`‡aK"‹PâªŒ ª‡J¥¨¥À¤†*«anBøXX0ÐX
+Ô2v°ë";
+B˜$bÛe¤,ŒbªŒ„82£!ÑJ¦ŠÈ­-[2Pì(Pa¢‚2CPÈ3±N¦*‡sQ2$$íUŠ(dHÀa8¢Â
+‡JRŠ­2X*€d1U²Õ¹ÂÂÁ
+JDI
+;U:“¸jd at QBЍL‰,RHqF‚ª*––ÌŠ€``ªÙm0Pîh)! ÀaÜ:“°Ô,2$ìAV	 8,B°èRà „2"‹aBð¡`ÃAI&‰„C¸PèŒî
+	,íaÊ@¨«E$
+ª!*ª‡JªPÀ@00UV†
+‚…kŒ¢¨Q´©>_2A€BÂB OÐ""}ó›¾]ÝÝœ»»»»«º»»³J"""$ ”à’I$Š>èA{`¤H|/þï°"j¥±ƒô€ü >+¸p€f
+
+AºB£#l¹-2ÌÚë$`AƒV£,É$’H   ’jPTŠ-ž@:ÂÚ:*C!@Z*,U°@›†ÂH,PZ‰BË ª[G°à€„
+ȉ	† Ä’$Q0Š‹¢U Q•¢Ø A" åJþˆ?ð“ê“÷à¨ù@­(Äü¯¶õ‡Ñ>»èù>È~ÇŠ±V*ªÁV,X±`*Őø¿7m~ý'õïñ¾ÆÜ·»çwUU•}Vt¼R¿ÓYeÃû—^Ž–©`ezZÚÛ¯Ùöµ¥z_M
+uêWâO“Ô+  xŸÖüqÕÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÛ  ‹E¢Ü¬“Z-ŠËZ-‹xY&(´Z-P@_’ >/†LðßÙ{{/Ð:b‡…–Ø–§ž“1IŠò yäG½öý  >×òû×’I"‘I$»³çPÑçļ9#^LQ{¥6´*™•éŸô05ῃísû™$ݧõÁ—[°°?G¼€Êb–À
+,`˜@ŒÊ[E€üÕ‘^ Yνóý€hø€Ð`Poߐ2E®ºö+âW¦¶¯MzkݯMzkÓ^šôצ½5Û^šôצ½5é¯Mzkܯj½Ê÷+ݯO§G­=ªAŠª’jUYAEB”>_ï•êc À „{`²T‘îØ&* ±!îÜU^€3ÇÞBÙ"¤#:íŸjoo,’I$Œ‹!K$RÄ¥EÀŒ!) ‰)rËEUUd"vȉ÷xÇP< ÝD•ŸÅ>Iöý>O“Ãæ‘Ä’tƒ ûßÎ÷²#‡:õ¹bÞ;\¯˜p¤L­SÒ˜?XrUŒ¾¨*™{ž.ž4·“ú‹‡Åã
+l»µää
+w&Q½s«^5Ë[r%±hE!;‡¾r½·QÜËÖtñ­Óòñºìð4ñÓ—Ø6€ ÷qÅq;¾yâ7ÌëPDpÜ÷¥ç‹,üEÎÃgé1½,
+V·ÆôõM¸“×¥n5ε$íq” Ñ @U¼n„8pªv«ÔÓ×yˆÒõ‚óL7S|8~hN™maZ§Årü]diü6÷SjyÎa±!º¸ÓkžD++Í xˆb¬Y™™™ì¯$f0S˜ÀÀÆúªªó0n}0ÆãâìqõµŒÒ7W2–[J™NffaqšbÜ¥-¨ºÕs4Tm¹ïùàø=Ûå!ëPeYJ>à ØÁCgÄØ ¹RãBŠ-¨´…	&·)aV&ð`e/0yƒJÎa&%‘ŠÄÃtšÂçA"O BGðÁAAAl	&›åq—ÀT
+`Ì?¥¨"1Œb#¨ŒcЬcˆŒcˆÆ*#Åb±XÅb±X‚ Åcˆ* Æ1UˆŒc¬b"#Åb±XÅb±X‚ Åcˆ* Æ1UˆŒc¬b"#Åe´¥)m)bÅ)JX¶ÆA$Èzû´wðAùz ¢Q(£èƒx7‚ƒÊ’I$lÈ1f½`Þ€tp2÷A»P~€7p2ð ¢¥UE¶Å•¢ÅIEx”QÐ(PŒÁ5Hă"$b"DPh– 0D ‘ª$Pb±b¢ÂŠŠ,¤¡€`ùD’I$8 t u=ÑŠ¬DcÅcÆ+Œb«Æ1V0„!ÆHÉ`ªª—P½ À=Ðy¼.©†< ï_ø7{>ͺ뮵Ljªª™©ªª½à 'î‰×‚~¯â~®ÝWääžú'´òós33!lÁ¿I7É8$à63/m¯lÎc[5³[ZڝkU­kZ¾ý~O Ëäú{RÒ&<wÖ¶Û3¶Û7žÛmžÛ¶Û3¶Û7žÛ}=à ð÷ÏŸÏŸ>¶Û3¶Û7žÛ_©5êOC~¤ø²|ðO¦ž½ª®ó¸yÖɪªªcU®ºë–Zå®ºëØ#´	òã¿—’g¸Rac˜áqy^ÔލªÛ6­ÞÝÞÝíšÙ•MI9sï—çÏŸEùþßiöùöm¶‘m¶[=¶;i¶m¶‘m¶[=¶¿‘;ò'ëõü‰üÿH—áù‰üpœïµUã;‡lšªª¦5UULÔÕUQÙ5Ù=o²{·Uï‚{Âs¾ÕWŒîu²jªª˜ÕUU3SUUGd×dõ¾ÉîÝW¾	ï	ÎûU^3¸yÖɪ­³;m³yí¶Ùí±;m³;m³yí·{Þ÷€ö؝¶Ù¶Ù¼öÚþ$îÉë}“ݺ¯|ޝöª¾ˆ DÍ“(ü$A	„Á’H~ߟï6Ãm¶Ò-¶Ëg¶Çm6Ãm¶Ò-¶Ëg¶Ûg¶Äí¶Ò-¶Ëg¶Çm6Ãm¶Ò-¶ËgµTx&¼ÞüâÝWÇõ„ç}ª¯Ü<ëdÕUU1ªªªf¦ªªŽÉ®Éë}“ݺ¯|ޝöª¼gãg|ú“¶Û3¶Û7žÛ_ĝø“ùþ¿‰?Ò%øþbÀŸÃñüR_›ðülïŸRvÛfvÛfóÛm³ÛbvÛfvÛfóÛc¶›hvÛg–Ûe³Ûc¶›hvÛg–Ûe³Ûo¸çÏ—çϐí¶Ï7¶Çg¶Ûm¶Äí¶Ìí¶Íç¶Ûg¶Äí¶Ìí¶Íç¶Çm6Ðí¶Ï-¶Ëg¶Çm6Ðí¶Ï7¶Çg¶Ãm¶Ðí¶Ï7¶Çg¶Ãm¶Ðí¶Ï
 7¶Çm¶Çm6Ðí¶Ï7¶Çg¶Ûm¶Äí¶Ìí¶Íç¶Çm6Ðí¶Ï6ªª5UUU	¯÷¿ø·UñÁ>0œñÚªø×=xÝóëÛló{lv{l6ÛmÛlòÛl¶{lvÓmÛlòÛl¶{lvÓmÛlòÛl¶{lvÓmÛlòÛl¶{lvÓl6Ûm"Ûl¶{lvÓmÛló{lv{l6ÛmÛló{lv{l6ÛmÛló{lv{l6ÛmÛlòÛl¶{lvÓmÛló{lv{l6Ûl6Ûm"Ûl¶{lvÓmÛló{lv{l6ÛmÛlòÛl¶{lvÓmÛlòÛl¶{lvÓmÛló{ljšªª<WŽ÷ãÆ¼oÇ=xïÀ  D×x©ÖÜÕUU53UU¦ªªׂ|
+ø'Ɖñ²|sнxu_
+®þx<r?BD˜L&	$BaˆÂD˜L&	$BaˆÂD˜L&	$ƒíß}¶‡m¶y½¶;=¶¿rwÜŸ¸úýÉûü'ï²zçzíÕ|z AäñLIJ³5¶™šß‡eázfRnɵ¶eµ¶eµµ7dëZ­kZÕ¯^9~7cm¶Ò-¶Ëg¶Ãìj_fþÚM$ûIñ¿³j¦ìÚ®™­šÙ­šÚÖÔëZ­kZÕ¦‰£*`‘&	‚I$ÄLF „Â`‚I$ÄLF „Â`‚I$ÄLF „Â`‚I$ô„˜Œ$OA	‚	$¨,ˆžž‚A$’~^ðÀxê(&úúL&$’~‡á¶Ø¶Ù¶Ù¼öÚü&¼“½ù'›u\àž°œïµUã;‡lšªª¦5[lÞ{múÏŸ/ÏŸ!ÛmžomŽÏm¿Ešj4‘&	¶à@Lôô˜LI$ßͶÄí¶Ìí¶Íç¶×ò'~Dýþ¾Ión«ç‚|á9çµUè DƒÀ"ïÅN·É;m³;m³yí¶Ùí±;m³;m³yí¶Ùí±;m³;m³yí·¡&$’™–ÝfZ©­kZ×È }„ù~Cªlè_Ï?(Ô>ü¿*¢¶[Ü£_gÜ’A%o-×·CRÖn†&IæÂzDØ"¾$‚5X„
+QÆ´@—5|kë
+ž‚J0Ü»F¸“x]ÚC[ÛÐ0D¼˜.ðÒC*ùçÉ
+.­+7±‘<kK§[uå2<—2éîMÛO.€O;x6)ÂàÜC˜çÀŠDh”çW/Hòô¸„!
+À¬…
+‘EC”XÊ2IaKR`ȦA„ŒŠ,22H€Ä@(`!ŒŠÀ,22$H0Ëa22)‘‘(©Œ®YJ¹Éûã–…õ©o^8ßÞ}Œ‚Æ=8¶×/îtźF^ò™®ÙH¶#§vF`Ów>:óøèÆíP×­Ýݳ< ¤wßÑÀŸWÕï­$$Ǥ1®+Í…®4¹üÇÞ>åzüŸy0¢ªd,—wâ27Q
+  S7ßìm¾:ôÝF½vŠÏ¶f`ÌͶ—''Ó l—$K’%Èm¶ÚéÁ¶Ø€ Ù.H—$K      "\€     ™™™™ÝÝÚîî£W3333332U®Úîî£VU®ªž&¦fffffffffffffffffg»»»»»¸§¾ŽoçÏ’÷Îîîî)ïŽm¶Ê>|ù¾pÃâ{Þô D\-ŒÈ~CçÄôuÃYч8É €ëæôÌÌËŽp ß׬ֵ¡Ÿ\ˆ@MѺIÞùž~çéÞ*§C"òS…M^<rŽÜücÆŒ{E4Ú¥B¡%EªU*T„*-R¡V¬!QjJ…Au	¨kóJoí§,ú}*ª*}5:§Й™ç”Ë”IûÔœá„LDè5’E‹¬ÎIœ“HÄ'ã‰Ö=³€±QJ,TR‹íÚÛ+m¶¾¶F¯§$vÛ'Ô’>­¯§cñÏ(žQ²!±'’$øB!‚± b‚ÅŠÈã†/Öð$OÌØÄb10`Äb1ŒF#)—LÏÅ3Œ£ûtž"Äæç×ÌñMÎß
+-¶Ø©&?p}rSÌyâYV×§ŒòÄ~ðóy±´t¶6¶Ûjؤ:ˆ§Q´–ȶÛ*Ûl»!´m
+’mFÑ´lÚÊÙµ´¶Ø©¦ÂÅ‘m›
+ª¤²¬ÚCccdm$ØØÚ6¦Ë´ÚÛh¶Úê›¥:¦Å«Rʶ©jí!´m#d›Fѱ±Õ6VÓe¶Ô¶ÚlKuFIJËjе²FÆÃh›FÑ´l>ÛàWç;è(ü-EP°EQbφ©ðÕQUEGç'ÃTUUв©lª¿¢©ðüÑø•øªŠ§ÅTU®ßîóÎüZïNãºwËm¶ÒwU«J¶[-´;¢;Né%¶YmµÜNèwGqÜ;IÙ‘ÖmÔêuu=Etóæç9}nƒ¢RÅ‹)K¾;XKÁãÎtœ+]Æ‘¡¤hhhiF%¶Û¤iá¹°w
+ÃpØkj¢l6íNv§=öï¶oëµÃÃk¼ÔÕ.ãCM3Ï?¿ö$ö£j£ÉBĹÍÍÏÎâÝâØ7‘"D$	ô$(17°ž
+ª©„ ‹…:¦HPULs]="áq]%+Eh 
+êIc$M!d–Y%Â’J0ÚI>­²Léá&!oÆ-N´š>1¹×Wá¼3’N¥«@ œOz¬ í”=,{fdòxÐjj^¿çbó6%C3Z¶w‰ŠS¿Mõä¦N®¸v w$om$ò}Vë^<h“bRBjuD’¬D*‰'™ã0ÎA*‘ˆ™kžš$Ò	%±lg›5ªµU UdD²ä5ÕªŠ7ù³Dš€d‚0¤ž5„›ô¡=Èt™ç¥+:ÒhVù×\Ù­›s»{’i[œ$в%u	&y0$R¤…€d"0)½ÝI<\-p‚š¹Ö `æð¸&ÍÓÆƒnkšÔ†—~1 _/[ 4W¨z2—4ÎüCGG6<êðY¼79F>·­N·àð nHë½æBdg2æ±Ì™Ãd’I$7vo$ëZÑÆp›æ­éd\/”¼¨Â0äýï ¨]Óë³áï
+ C
+îÁJX˜êâéžjäºH‘6Hsš*pÖΰ2HèU¼- QEsù‡|Ëçy||ð($6Á=ïd†wp“‰•P)UTÅýß5:"jç*}¤DUQÖúÖ奘dDWTDÞ¦Ê">¶dU\©~\Šëê	|ÕQŠ1"d1õøöÃïBv?A*ÚzJŒÇT²'µ„¤‰…#‡a2@/ðÒÖõ\ß·¨:âF†6’)*YyxŒ6ëH(oY‘<¸¾u©9ç&"½á‡V;Î̓ıT§£èzú{œH)pjºkÖXuÍn=ÚË£²Kuð×-ä3ãÈöp੺	:ŒA²éàð^#»ÔØI%ø³]wžîºÎsŸ> %·ñÆømNø¢õ¸‹Ö¤GÖê/ëéµÖµ©$’tªI$UUfgQ­LÌÌΘ–y ð„´ÏÃÀhA
+âXÄ 7¼t\…×?]AdX at b¨DOoI^ Ó
+ö–eNþáEƒÞé€pTùÝ}Ç DDDDAˆüÞÈ|)çHü¿5ä´+m(w»àGÁTèˆùد V~ßu&1.HP1zÒI$‘œfÜÂtdÈ+wNçwK£ƒ›<kQŽ Š/	
+DžÀA|Äë¾w~®@&E„*€ÄAÂzMÇXdš
+{ƒ	’fòL7©¨j° kôh‡·×\„BÉ>BOw¾ô8ôÂ1Îíù8¥„DD>[zߐ.‘ý¸ 
+tê{pÁ•=¡Ä/¬w
+¼C¿,-Üsñ,°p`R1zYWAØ6{11±·wÚ[%±-´YT»óå³ñîÔ×Î
+ÙBœË„Jzá0õÃ$ÌG ½H(À,¦ P’¬±¤2:  /­ÀkÀ,XHš; ÀC£ð8yRPL„DD’C~98sL>
+Ma(=î“8šÅ+0zœZPdpå•jUŸÞýÜîÓÃ	D%Š 1|ž<¥`¾)˜-E=©†øõñ½­EóÔ>M6V=î5 ªøÌ%püMEZyìyß“ÞwC¦Œ¾s~6Ûžüi¦æ‘©°8mǤÞÕÄÏ¡ÌâÞh;ùP¬
+ôp9²m"21"‰
+£†!Ù¹.!C~K† Ä{_ÁŸF\û--’Ø…–Ú,ª^\×t¼ù›ï§‘`.üS'¿ÏZ=¾+ð"|S;^½7¶  4"sÏ=N{P@‰]B¥€ƒŽ}f  ~Cç£0ýÕ‡ÂÜ‚&‡ùsR“É)Ͳ¥³®I-„‘$s.šEk2$’T¨9Bz”	’qc—vè{³"(ú਱xÍ"©ìˆ8a64(äý'ƒz®rbÕÁøwUî©p&X¬Å¬±…ÃUr³$é·=™W¢‹),äs®v´s©!:ÂlP¾”P©G!u•Üë¦[q7Â!ö€Bv wåj´º­ø™ŸjªuVúù€ u5¦&±ø;ƒ¾©ßàÕà-&ôC+m˜–   ò€ ˆæ½ÐßWÕFº*ÖÌÌÌÍlåÞÚîæ¬Ëi†ÉrD¹"\€¶Ûm®œ^6 
+’ä‰rD¹      %È       I2mµÝN®ffffffd«ZÝÝÝN¬«]U<MLÌÏwwwwwwwwwwwwwwqîîî¶ÛÜSßG·óçÉ{çwww÷Ç¶Ûe?Ÿ>|œ
+³’÷ƒÒ•·×•Ôç6O¡ 'ɇ¾|O‚™ëe]z{½¹ejUV6…UI Ùm¨
+J5—Ýëæp==ÿ6w$òÀ	90øš‚&©gÛãí…5³3-õ×^ï<ùÝdÄ1㉑ø!“
+!J=¾ß‰$xGwÓi鱚—-æy½L`Ïlj¿9r1×b&üš'‰ã/Zðfro$öôç·Áݲµ*«Bª¤‹ l¶Ô¥ËÜÁ`ûê¶ýp’FU"³Xœ,ˆdË<€|R7[	¢8)]ÔZjB¨•’9˜h	;µG¹øßUH"aæ›÷R@Ñ… žY<ù¤Ø›š²¡6„‹fŒ€³V0¤’æ²e¸:ç»âëÉìO˜=û¼”еOzôd„!íé߻ϿƒÓvV¥UchUT‘`
+–Ú€Ô£Yw<•7G+"ÖfvòÎ3ª‘,²E”X„ˆk†ÍÈ`Œ
+ÃBŒÝ0‡ÅºN»è3•°!´$0ꐀc$3¤Ì²XK"Ä’¤¢(P±"}>Áñ¦•§‡±dˆYa 2
+Í8F@$umÃ^Þ.ÖÔUor]Ùqä‚…IFÄ 2yô2 É:èÕéç'	Œ"$
+$湐\9„¦ašIÇÙÀ›8'}uÎAd‘HEæõ­@ƒÊ0B0I4f÷²n0bŒ„öú>îsûO"z›9£†ƒŒÅB$Ç·^î|Y–V¥UchUT‘`
+–Ú€Ô£Y}<ž
+„œÑ­å“´˜˜zØJÂF2	®·9©°ƒ‘‚ÑÌh at d榰¨# dD–ËC"Y’Md¤!	¾yÍ÷Þù=k"¢µˆ0Ì$*Pšt` Aoffë[$ˆ#$ži$<¤8É&’‰FP'Y`À˜ÈLi%ö·è|g~ÞãÓ«ëíëïÞ¬­JªÆÐª©"À-µ©F²Þ{o׳á«N'£žç®Ï]·^;ò©NO|çW}ùeöþ'w£*¬PURE€*‹yôôÑ'·¿Û­1bªÅU$X¨±gy¿ww’NýÇxÅŠ«T‘`
+¢Å—Á„ž7®¿?Ø ž;Íï’Ï>ªÌ’¬¬K¹g,À««3±ÛCÊ›užIqÛd&q:cžB	;sduK€ž“Ê‚´ñÖ{hÃ…†Ê‹ÑZG‡]FŇP5‹B¹”ɪ¯:ƒéz„6F)IâÌÑ£ê¸Ã¡¡pfKLÊÐâi–RrfY„˜ {ª‰—0àÉÁ¦ÑEA‡=Žmu½ðލ
+.½I CℝQ ,ÏézùÝ•ZÖ«ŽÕÄ	*WŸMnG¤5¡µ¸-Mk Aò " ÷½G›GZï¾ûï¥UîÕUFÛ{ï¾÷ß|ç9Îs¼\ãOIè’—¾]çœ3fM=‰ÌB<¦)K)K)KyçË«žœyñðb–ÉlBËmU/7=M©8‚ýhš2xÈQJËËa`œÑ@.‹ ´ °,H, ±€°P„$pBC¨,‚’‰ְ"Äd“H"ÈKhûìÍû%)®ªš8erdè¼N°ÆóêeÒpâ®)$’H¦8éPõ™fášAC,eøÙ¡}þCÍPŽÎ>Hìö……‰ðÎà(aÍ3¦@ÇÝÕùáUî·Z[%±-´YT¹êÓYÝG/²nÏÍ–NDDièË(DŽö­,Ý£A$2HÛ&DDe7›ta¶XiÙžý3oË€ù¯°èÕ®øt¸Yљҽh’<øÉãÓc^\Z¿6L‚#ðÜÓHB77dÂHÏ2xÂH¡Œ!çõÀß
+	µH?+üg§0'«¶ó‰i •UIt‚Ïõ’@‡¯Ÿw“â¨,‹Uˆƒ¸wÙCÑÈ|……‘tî–jŸ6M`æc߀ù ûcÐ_T	"øL4Ecy‚CÇ·~¡ç¹Äž<'sªe³ÃÌ)‡]d2„8ÕMTèCÆŒ<Ç UÊÌc!H-íÎö/œævYªÓ†Ôó%9”N·˜,Ƙ”5”ÊÓׁÏMðxjB¸t”z>º›ºÔ0š’\ˆY:Íò„ì¶”Ùt!U2]…€{ªÉ ›ÞZ3“Aëé\ö6ëâõ÷¨,‹	$ P‚ôôë㯞8Ï×sè'É}BkÀ–,ß-¦â|y¼t·€;óÏ–ì „ž‚b©@AÆ@ ›è<qß·õ
+ª¾ª´4©(§1_à˜îm՝.sô2W—OV‡|B¯²åÄÎÕ?w-½Ÿhhû˜yÆŒl·æÂ·ƒ§DœèîJÌb6VO çc8©|`
+áQGˆê}¢UÜmÕsh†˜ìUìJ•$‡Mº«5|©d`-r’Ì!¨C‡*zÜLBî—|Ɇ;2		aE,DÅ‘$!+ ¡$IDR ,()”«d5„"€²Rˆ€5êõU‘í
+o;kˆ,VòuK[xW·åš¶*ÌÄ2Å@  ç×~œ}õ¯¾…<Ûm·œ2µÆ^m¼åÉä‰r D×]ó]1¨ j—$K’%È      .@       ’Ië£~ºi¦–Ûm¥=žÕö)îç/[m¦Ûm¶Ûm¶ÛmªÛl’ÛSìá‘¶örãm¶§ÙÃ#m¶ÙOmúŸ½øiõ01ðH5¶—tŠŸ €Qã½5_$„8qÀð@öä ƒð ç—FDBPÏ,ÒþdJtÖþTl(d 0ð’îd£¬½!kŽf'À
+5»<y°$¦µÎnH,Y Ö¬®Ùk˜Ïóþ5ÒÏ6Ä86	&YB I%ÜyusÕÊÚ‡Ž±*p¸ÂÚðäò\êV|úsƒ¦ÁÒ…òA™ª†¥G+	 Мéd``u¸B#åb$DÄ´n¦.,W“»›£š_N’¹àÙ¯4ø‹¦ÓF7„BC>Pö÷gÉïõôi)ïö°ô^÷‘LT¬«yÂìDˆ•”d¸JΙ7fÊb¶ÓNükç	_;¾/¿
+'ƒÇ^BÖž
+Hu
+ Ø”a$‚•ÉÈš\÷°°O|Ëz:§\	L2@³F†äàèѬÐÜ&a¯vÈT>4ÖÄ綃‰ÞŽ\=yÊt™”×GFú°åybòûzkÓÏ´€ù;	)O:Ï“tÙÖHi$!ïk$=þ}0GÛo  (¡EÅ£ª¤¼¸uEQ™–õÇUq¾€Ð¸ôð u¸`Èox`@ï3Έ@®÷†I7†@Õž0Gfòd“¿lù	=uéë|ì0 at 9GO»WY½Àúðd·
+Æ Aßa¹aMëÍzëà:çr Ê@ƒß„úr§Á^û%X·00‰,À£…"ÚEN‚1b†Î~mßÔ_qîë8ú¯BÁÁ"F”±ÇÈ1ƒÑR…	ãÐ/ftÚì"Ab<“
+N„U15A ÁD‹ ÝZø†°Û…Ã…“¹b'åx±%*2‰ÚÄ×R»wvD¸l*j©2:é¸ÁWЉ_M!ÌÜél<¯v"Âø]½u—yÐ…@6$ D# a&Àè@Ìï~mïœæ÷ë½ë๛·:íáøôáfÔˆàUÑÞêÚUŒÌÌÁ$’I$’A&ÛÓ­¶ÞDú‘?O!Ä B|
+RÒ„ ˜f3~#‹Öeòˆ"' Ò¢ˆv$…ÏL;ÔQûec²—Ù‹¬§ÀÉ¡8ë(Œ¯Md
+u|'|HÄ<ÓÁuȳœ¦GbäÉÍÇ^<zï~¡¾MJ’Þ¬’”iž”ïҁ¾P=Æ'Z—„4ÁÖ¤¸6 zÇÐÑiߨS‡«3š¸½	eëªrÌù@šõ=½pöpçÐSÏ a‚erÌ™„Û£N«íçgÊÏd“£®— bà¼Ô™¨è2\}Ú
+®=À‚G#C¥B„¤ˆ
+Ц©KrW¨z{üg=áßfvf°Âð’I$‚!‘ö¡Ã³P© 	(“:`US ={›î´&èl_ }|ÃÁJ(GÛԐ½ÌT*-õööÒ@ë¯>>|‘d-°’‰$’f²’ïŒìï›'z3<—ƒ†´s[\XÊ*(Ua¯ :¤ D8ør)κ-‘Ã¸}
+4HhÐhÀ5£S\Mm6BD„(žáô j %8D.
+‡ë<݁¡¾x|AÀà‰Ž‹¤ð@þŸ=zØCVG&¸îÁ·9nÍ
+iŒÌ°y×9N}uoGW5dº5r$ð’{4-ÆÄ†MG‚ 8iX’¦ÀTUXrÏ$åö÷oܧo”œpIw†
+Ÿ6a¤ÒŠ¥ðȺ:²!ŒÁÝë•—åBðõ\UžÕ`{‚†6Bß–Ï€b¾(¥ƒša¶î¾½ÚåØõ2¦Íxâpº¨?¨?…]ÏÒH~?ûòp´¡ŸŠê •¾‰Þ]/éö=†Š2V)¥BL>KƒO)PŠŸéH¤Ó¹4_@‘ûI!¸Pèê7B"*ûQŒUÀ”KÒø69_žl†5’lyº»‰èâB[_35îºÈ˹B!ÝeL:ÁtäŸ+ž£áÉ´¸\€NX'Z-ª D@>  ¿OJ˜^8ö1ìÜwùï  5YJNÝ×Á,UÛÝ_.-,…;Ä}V}Խµ j—%ã]uM7†©rD¹"\€5×|×Lj ¥Éä‰r      K     Ûm¶ÛnI$snšÛm¶Ûj{9·MSϺ^¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶§ÙÃ#m½¥ÖÛmO³†FÛm²žÛéæÝc†b}¢b¸4$‡™IÛ<?„i-cÝï÷ûužÇ”à8à;€áÃûùÆ+ÈlÙ ÈpÔÀÃ2d2a˜a€dO½À{
+ä.aIE€Ä:•6”	„w“¿»o qv€
+°î6¡P:*…€”F@°žÎýNlαèóqk°ÑѪt=&rpèTèõôôÒ@Õúwi!Ú xd6…[ÖxnkÏ;Á*4¸*äBp¯bM¨MôN޽ný‚ÎûžrHa’ÉÛ;òhò˜hQy€Ùá+IáC[ïG€.	 õ[¾Œw»¯Ï|>ì‹CRë`><=‚•mPH †=‡§Øgw€ÁúÃ5&ívÁ#Hž+:+]ÍùÞÌ8é¿(Ë\ǯ:äI¡Âc죉ˆ™;…ŒR
+µ²ƒù½I†ŠFØ™(`Ð"(gŒâŒJ(0ÖÓµ½pž0Û«¼fúo™É©y9ËßzÒÙ
+,7ClÂ`Ài
+Á3­©5¦Å2&´O‡_në¢Á­¸›åÁ åÕEA•QEÅ ¡CcAJ%ƒß™øF û'ãæaûäøà•êè<‡w0Di‚ªÔ	UØð	{VÙãÛ௛ßçé|ÚöÌù &‡¯·éýf½§~×é¡ð]n‚­dú/¡ôäåÝŰM]ÊtP.ì™l!2[ª$Ao4Áñ,Tù2AÍ¢ÒF„#¦!«¸%}Ì…ç*-à1jn
+ôòîS"o aR68Bóz±BM±•m*‹Z{¹ºA =ÎhM¨M.6Õw]–
+ÉÏEÞs…L"â &â¡©ôh÷eh² @2V«½Ä™™ãB#rg#Ír¬zM9¢¶÷/ñJ±™™˜$’I$’H$ÄGN¶ÛyÇÀpúŸ	§iC>óUã0©â¾/SÏÃÚ†
+@
+À )¸Ó„ì]M33xÜË{êüHDuд٠–`à‚$9”D±„âQxwO¤DˉӨ*îÑ
+
+ˆt„Ý
+AMë!‚‚³¤›OU¹á£´vš›™C%;ô绿=h•ð 9HSV—š6;Ü6C!€–)C+òîùÝàyEˆ™´BåxpÒÐÑÎø÷üúøz”äïRyfA¬³L¨QV”ÉM|9²L±0S¹wôjÐo¥ (Ц°†i‡@Õ!8í¼:5zd½á‡ŸnýM8ì‘КL™.¦ƒÓw·×/žHv‹
+çe1®²ôt9Dxi끄@"y…tp©ml:¢†‹Pî ,¸{ Œ0sX?>ØvÑ³tr浃£×/à>‘„’…ØŽ.½éôCða·j¡ãya¯uÙÆJo½@öøxqÍzdÐõ ý&¾³é‡€ü£e‘nŒ†l1…ôˆˆ‡Ý†A!;ÀÈ$†~B!¤@Ã޼yZ–ø:â÷[μó½éò£~æ5Ç»2{•ñƉ*OE;)äöGö©þ°÷½i…õíÙôóâ}}¶}„7Ãíw¿w>ïsûýó32T{2õâ•XËW!ÚLkTRþÏg^žã™œþ¿·g/ΟJžm¶ÛÎ
+{dÓxj—$K’%È]wÍtÆ ª\‘.H—       D¹       I$snšÛm¶Ûj{9·MSϺ^¶Ûm¶Ûm¶Ûm¶ÛU¶Ù%¶§ÙÃ#m½¥ÖÛmO³†FÛm²žØþ?o¿åóíú_¨nþa÷Ì3‹‡‹M5Ô 6áââæ_M¬î×UÓÕ >ËÇ7™ï{<ÖŸØ/+ðë³¹7¶î]3ˆôuñ|6×h¼Ëôv¯N†µàðêiWá
+¯*xurÞFTzw»Ù0G±ëxDï<ŠVpÒP\ù®<W'޵Ô/ýŸ¼wÜõκçÕj©«—wxzô’ã^iß]«2Yо×ö>L÷wN$’I$’|I¶ôëm´ñ?{^ª»myÉäƒÇ©û7Ý•ïÜ{÷<p‡®ÕAôéSÜ<`‘Ï™ÛN§ž¢À9kÌ·.7ç–'¾è8zåEÕôéÁÝqtÝwÈñÀìǡ˾Áà?/ŽfHb4h/^z;çÍ*ºµqàKpâZ¾/p ú}D—#fÈe¢È%Vª)l‰lµüö•Vߤɵ]Ñ”ÄÄ~í¾úß¿8Ç*ªZ«?Pü zâJ ,U2y{³€ßýÕ¨Mç!@QnV*Â*×µéhc€)1@pçò’¡­ÇNÏŽI$“óL}N§øH`Nà ¡HôôysÌ´ùþð2È´ûj5ËðH	'Øÿ÷ÍùÒ	|pj D›‰vlÎæ"˜ T” ¿ÃcàpSc•–qÑæó[m¶îóG¯àtcC|þä€V_¬à›Ïq¹Þ^Òîó=LäŸ0 Àà‚ÏZÙàÚÝ–ü¨=Ä’I$hUWG·tzþuUUnîUU×Ï	â¼\€.@—$K’%Èä —$K’%È      .@       ’Iä‰rK%ÈØózn&?a§c¿‹¡^™¿NkªJØÛyïŸÄÏlWÝ€ ô4â»yø‚{Ð}_ì üW·ñêèˆêßc‡ù÷šúìzžPyA=ØK¿£0rjFòçÂh™×@nƒí¦ïF‰$’Hþ@; f멤P~H<Ÿš’I$Ž ,f 
+@ùX> nÏÍÓífíy-¶Ûm¶Ûm«m¤üOê§öö@}ùLŸ¤ttOJž–£@¤¦M·Ôå[Wæáã]ÞùµŽr|t‚8D at 5­¸u	Ë( 6¨sßLAõCƒÛò ë†ý¯G§Ý™(oâˆ`' ŒÝ^üùi$’HñÀö€³wƒ³Ýå–ºfš h—&’H%Éä‰r›·nݺª·UI&‰r K’%Éä      —        I$4Í4Ñ.@‰r;»Ã9wffffvôQ¶
+`ù€ ,?½>( ­ù¼>-w‹Cs a—<2“~¹žJå¸ G´¬	 Öšu‚Gµ¨×¢F÷âB>  AäO (DÝž 9÷Í©Ûc³§{&}˜=¢d’m¹Ã8ÌØ„‰#´Ž…tóAÏ}@j
+A at eÈ í{PI
+’
+H) ¤‚’
+H)H’
+H) ¤‚2
+H) ¤‚ŠH)I$RAHE$RAI$€¤‚‹!*I †ðxA00jàïG
+€f
+À]»:úüitJÊ P ×̪ªªª¨ª¯×uàGáí·ð|I4}ਝ:i~¶y85?	ˆ›úEo‰xLÏwNOñÀ 
+£øB ‰Êª"{€Îñ$	ˆþ < ÌÍ偙¶`õêƒØyÁG®Qb¢•(±E¤‰GÀ±,X¥‹±bàbÛ$ÈP™L¥)mHÂX¢Å_lÄ’ÅB–BŐ±P¶HÂF%0˜Œ&=3
+#Ät¤MÕ,ÀË«ëtÄxÁb5²HÔZƒ  ä`@: `€! € ßÅðýmŸ,´Ë3334³—x·nÝU[ª¤4K’%Éä ‰r K’%Éä      —        I$‰rFú­Õ¦i h— KbðuôƒPGÑú;t< úRÿ%‹ѽ,üÏa~nÕ¦|³ãŒcL²ÝŽ^¦Áëdž,b3Žð‰3<¸ éå¶]]À8ž¤xàveÙÐ]¤yA¼°9`ƒÄ?1ßo«ã„’Aëã×-¼ºÀT9Àä$Hö’x#×÷Àf”w€ðîv$’I"È$IKÐÐ|n]A°&@àTH¢QD0æoçãײ$uOZ¶Ûdp¹@d w‰ LÁ`{9åõ€×ý‡Ò~åô¾Ëjªªªª+dŸD‰7{z8ü±§,ù]ÚhG-ø$o{ ƒuÇMÔòæ½éóÇZàuËÕYÀëÇCˆ‡ß ÞÚI$’4ø8Â{g£È;ÁÈì€ú æ\{@»’I$‘¼À:¤XõAŒDu#P)A¸\`zÈõ€ä€î@ì@	€c´P7|Ÿ{¢ö'åú¼,ŸûῲãÊÆ*–p>	x…iñRÿú§ÆYzõJÀ?Üó
+"Û¦éâåÒ\,Nfƒ)R5Ïþ05܇ aÈQØØî×’á`
+s4J‘¬Ì
+w!ÈrE¶6CµÃ¤8XœÍR¤k3]Èr…mŽíq).@§3A”©ÌÀ×r‡!D[cd;\:C…€P)ÌÐe*F³05܇ aÈQØØî×’á`
+s4J‘¬Ì
+w!ÈrE¶6CµÃ¤8XœÍR¤k3]Èr…mŽíq).@§3A”©ÌÀ×r‡!D[cc»\JK…€P)ÌÐe*³05܇ aÈQØÙאá`
+s4J‘¬Ì
+w!ÈrE¶6;µÄ¤¸XœÍR¤k3]Èr…mípé@§3A”©ÌÀ×r‡!D[cc»\JK…€P)ÌÐe*F³05܇ aÈQØÙאá`
+s4J‘¬Ì
+w!ÈrE¶6;µÄ¤¸XœÍR¤k3]Èr…mípé@§3A”©ÌÀ×r‡!D[cc»\JK…€P)ÌÐe*F³05܇ aÈQØÙאá`
+s4J‘¬Ì
+w!ÈrE¶6;µÄ¤¸XœÍR¤k3]Èr…mípé@§3A”©ÌÀ×r‡!D[cc»\JK…€P)ÌÐe*F³05܇ aÈQØÙאá`
+s4J‘¬Ì
+w!ÈrE¶6;µÄ¤¸XœÍR¤k3]Èr…mípé@§3A”©ÌÀ×r‡!D[cc·”‡  S™ ÊTf`k¹@Т-±²®!ÂÀ(æh2•#Y˜îC0ä(‹llwk‰Ip°
+9š¥HÖf»ä9
+"Û!ÚáÒ,Nfƒ)R5™®ä9Bˆ¶ÆÇv¸”—  S™ ÊTf`k¹@Т-±²®!ÂÀ(æh2•#Y˜îC0ä(‹llwk‰Ip°
+9š¥HÖf»ä9
+"Û?	æ?S¤S O®ÿ
+¡Ò®ÕF]v¨B4‚ëµB¤]ª ºíP„i×j„#H.»T!AuÚ¡Ò®ÕF]v¨B4‚ëµB¤]ª ºíP„i×j„#H.»T©Ÿ¿t’¦|²J™ðvÉ*gÁÛ$©Ÿl’¦|²J™ðvÉ*gÁÛ$©Ÿl’¦|²J™ðvÉ*gÁÛ$©Ÿl’¦|²J™ðvÉ*gÁÛ$4/þàïÿ9{~Ãö _É}÷eîO~Á¶—¾eîOsm/|ËÜðNžøÛKÏ/QÀª{›iyòõØ'ÇfÁ>ì½Ã©É{rõ
+§¹¶—Ÿ/QÀª{›iyòõ
+§¹¶—Ÿ/QÀª{›iyòõ
+§¹°’iyòõ
+§¹¶—¾eîùð'ÇfÚ^yzŽSÜÛKÏ—¨àU=Í´¼ùzŽSÜØ'Ë—¨àU<—»—·`_›iyåê8Osm/>^£T÷6Òóåê8Osm/>^£T÷6M/>^£T÷6Òóåê8Osm/>^£T÷6Òóåê8Osm/>^£T÷6	öËÜ0*œ—·/QÀª{›iyòõ
+£¹1ñ Ož^áTАý—õ/ÿ_´’I$‰–ÿl Ù”
+®@1$ö û‘$	óð@ø ø`¼Áø(ûSí¿æö(>p>$œ:(øúrêãïœ »à:Á5€ýîðr>Ié÷Ô3wFÔµC ä#ðyD
+ßFA>Xuƒ°OT(I(PI„H÷ãæz½@u`
+¶Ûm¶Ú«mTUTQUQEUEUOž OŽ ñ©Þa:ÀéΜäûÔ’I$x§Œì„h3jYÄ	7¤$Œ™7ëþÙ˜3 ìxA8Àdƒ¦>hp(ôµPj	£¬à<`ý€3òtˆrühâ0yêÀM d€°ˆ2!ðÍêq(aƼ07@áËóã ¢à=RœŒà=”ð$ŠªlUTÉPB,@\ QÅؤU"ď:I$’;Á : Þ>à}Û #ʐ2ÐI$’F`ä’@N@ æ éˆr´’I$¤‘¨g‹Ú5úR	]àü> ðŸiÿ>ìžåìœ
+	åäÌǨh‚7 7 vdéI & ðƒwŸP7Ç ƒ|‚áæ²I¸h{bj ›„¢‹"o‘,XÎI ‡íA@59M$K0„’I${@ón€Ì¤’I"ƒ@0"D”—ÀäX†ðz€í²I=HŽ 9:Àd
+ý€æpêÅ7ì
+„‚H{I$’Húi$’HäÝtÿj
+? >ҁõ
+X±JX±JUSÌRÛ)b–Ò”ª³”¶ÌJRÜ|(J(G€Q!âŠ<} ΃Hn®1å-Ä7â ‰,$H¢D˜$r¡½Ñâñ¬H
+<Àóƒ€6QGO€šÔx:A˜îြÕjÒI$‘€t3`à{(#„dv$’I#3t@‘#p4ä@?r$h@ªª˜ÀÔ ªª”sb|à `0Ÿ\j‘d‚	Ì`ë kÀ< È-D‰ÀäA¸@Ý$’I"Ð·£¬=БäÔàP(6I$’FI$‘€uPsË9$‚€“M@œ0˜ð»¡$‘X‚<À=ϐL¹’)NÈÔŽÀ w€Ô@¼€©$úé$’Há¼j
+ýHÈ ÈÁÖ$3 Ìp`揑,BD)$’HÔàùÿúþ—>ïúz 7»è!#QEH' { Î=µ€ÜôH‘Ô$xÞ‚C°¿ãú ø`ø¿ßüÇä =ð Ì¹Ì 	ñøü…x=¿7ßì¿'AvÞºÊ7Ÿæ }ŸÓùŸ«úg“—0côü˜óˆ!<_üÄ„
+Õ‰A?Laö~Ïêþ§ø>ŽãÑAÆÛ$œ1€_ô1¥$…°ˆÒ€?sáwüïK3X `€¢­è€¨-úU at l 9ÑVˆ™™ö€“ÿ‹¹"œ(HšY0 
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,232 @@
+Machine (P#0 total=100661148KB DMIProductName=DRACHMA DMIProductVersion="Rev 2" DMIProductSerial=0123456789 DMIProductUUID=008844D0-2214-DF11-B89F-F50F715B14E8 DMIBoardVendor=AMD DMIBoardName=DRACHMA DMIBoardVersion="Rev 2" DMIBoardSerial=0123456789 DMIBoardAssetTag= DMIChassisVendor=AMD DMIChassisType=23 DMIChassisVersion= DMIChassisSerial= DMIChassisAssetTag= DMIBIOSVendor="Phoenix Technologies Ltd." DMIBIOSVersion=PDPAX1-6 DMIBIOSDate=12/15/2009 DMISysVendor=AMD Backend=Linux)
+  Socket L#0 (P#0 total=25163676KB CPUModel="AMD Engineering Sample")
+    NUMANode L#0 (P#0 local=8386460KB total=8386460KB)
+      L3Cache L#0 (size=5118KB linesize=64 ways=48)
+        L2Cache L#0 (size=512KB linesize=64 ways=16)
+          L1Cache L#0 (size=64KB linesize=64 ways=2)
+            Core L#0 (P#0)
+              PU L#0 (P#0)
+        L2Cache L#1 (size=512KB linesize=64 ways=16)
+          L1Cache L#1 (size=64KB linesize=64 ways=2)
+            Core L#1 (P#1)
+              PU L#1 (P#1)
+        L2Cache L#2 (size=512KB linesize=64 ways=16)
+          L1Cache L#2 (size=64KB linesize=64 ways=2)
+            Core L#2 (P#2)
+              PU L#2 (P#2)
+        L2Cache L#3 (size=512KB linesize=64 ways=16)
+          L1Cache L#3 (size=64KB linesize=64 ways=2)
+            Core L#3 (P#3)
+              PU L#3 (P#3)
+        L2Cache L#4 (size=512KB linesize=64 ways=16)
+          L1Cache L#4 (size=64KB linesize=64 ways=2)
+            Core L#4 (P#4)
+              PU L#4 (P#4)
+        L2Cache L#5 (size=512KB linesize=64 ways=16)
+          L1Cache L#5 (size=64KB linesize=64 ways=2)
+            Core L#5 (P#5)
+              PU L#5 (P#5)
+    NUMANode L#1 (P#1 local=16777216KB total=16777216KB)
+      L3Cache L#1 (size=5118KB linesize=64 ways=48)
+        L2Cache L#6 (size=512KB linesize=64 ways=16)
+          L1Cache L#6 (size=64KB linesize=64 ways=2)
+            Core L#6 (P#0)
+              PU L#6 (P#6)
+        L2Cache L#7 (size=512KB linesize=64 ways=16)
+          L1Cache L#7 (size=64KB linesize=64 ways=2)
+            Core L#7 (P#1)
+              PU L#7 (P#7)
+        L2Cache L#8 (size=512KB linesize=64 ways=16)
+          L1Cache L#8 (size=64KB linesize=64 ways=2)
+            Core L#8 (P#2)
+              PU L#8 (P#8)
+        L2Cache L#9 (size=512KB linesize=64 ways=16)
+          L1Cache L#9 (size=64KB linesize=64 ways=2)
+            Core L#9 (P#3)
+              PU L#9 (P#9)
+        L2Cache L#10 (size=512KB linesize=64 ways=16)
+          L1Cache L#10 (size=64KB linesize=64 ways=2)
+            Core L#10 (P#4)
+              PU L#10 (P#10)
+        L2Cache L#11 (size=512KB linesize=64 ways=16)
+          L1Cache L#11 (size=64KB linesize=64 ways=2)
+            Core L#11 (P#5)
+              PU L#11 (P#11)
+  Socket L#1 (P#1 total=25165824KB CPUModel="AMD Engineering Sample")
+    NUMANode L#2 (P#2 local=8388608KB total=8388608KB)
+      L3Cache L#2 (size=5118KB linesize=64 ways=48)
+        L2Cache L#12 (size=512KB linesize=64 ways=16)
+          L1Cache L#12 (size=64KB linesize=64 ways=2)
+            Core L#12 (P#0)
+              PU L#12 (P#12)
+        L2Cache L#13 (size=512KB linesize=64 ways=16)
+          L1Cache L#13 (size=64KB linesize=64 ways=2)
+            Core L#13 (P#1)
+              PU L#13 (P#13)
+        L2Cache L#14 (size=512KB linesize=64 ways=16)
+          L1Cache L#14 (size=64KB linesize=64 ways=2)
+            Core L#14 (P#2)
+              PU L#14 (P#14)
+        L2Cache L#15 (size=512KB linesize=64 ways=16)
+          L1Cache L#15 (size=64KB linesize=64 ways=2)
+            Core L#15 (P#3)
+              PU L#15 (P#15)
+        L2Cache L#16 (size=512KB linesize=64 ways=16)
+          L1Cache L#16 (size=64KB linesize=64 ways=2)
+            Core L#16 (P#4)
+              PU L#16 (P#16)
+        L2Cache L#17 (size=512KB linesize=64 ways=16)
+          L1Cache L#17 (size=64KB linesize=64 ways=2)
+            Core L#17 (P#5)
+              PU L#17 (P#17)
+    NUMANode L#3 (P#33 local=16777216KB total=16777216KB)
+      L3Cache L#3 (size=5118KB linesize=64 ways=48)
+        L2Cache L#18 (size=512KB linesize=64 ways=16)
+          L1Cache L#18 (size=64KB linesize=64 ways=2)
+            Core L#18 (P#0)
+              PU L#18 (P#18)
+        L2Cache L#19 (size=512KB linesize=64 ways=16)
+          L1Cache L#19 (size=64KB linesize=64 ways=2)
+            Core L#19 (P#1)
+              PU L#19 (P#19)
+        L2Cache L#20 (size=512KB linesize=64 ways=16)
+          L1Cache L#20 (size=64KB linesize=64 ways=2)
+            Core L#20 (P#2)
+              PU L#20 (P#20)
+        L2Cache L#21 (size=512KB linesize=64 ways=16)
+          L1Cache L#21 (size=64KB linesize=64 ways=2)
+            Core L#21 (P#3)
+              PU L#21 (P#21)
+        L2Cache L#22 (size=512KB linesize=64 ways=16)
+          L1Cache L#22 (size=64KB linesize=64 ways=2)
+            Core L#22 (P#4)
+              PU L#22 (P#22)
+        L2Cache L#23 (size=512KB linesize=64 ways=16)
+          L1Cache L#23 (size=64KB linesize=64 ways=2)
+            Core L#23 (P#5)
+              PU L#23 (P#23)
+  Socket L#2 (P#2 total=25165824KB CPUModel="AMD Engineering Sample")
+    NUMANode L#4 (P#34 local=8388608KB total=8388608KB)
+      L3Cache L#4 (size=5118KB linesize=64 ways=48)
+        L2Cache L#24 (size=512KB linesize=64 ways=16)
+          L1Cache L#24 (size=64KB linesize=64 ways=2)
+            Core L#24 (P#0)
+              PU L#24 (P#24)
+        L2Cache L#25 (size=512KB linesize=64 ways=16)
+          L1Cache L#25 (size=64KB linesize=64 ways=2)
+            Core L#25 (P#1)
+              PU L#25 (P#25)
+        L2Cache L#26 (size=512KB linesize=64 ways=16)
+          L1Cache L#26 (size=64KB linesize=64 ways=2)
+            Core L#26 (P#2)
+              PU L#26 (P#26)
+        L2Cache L#27 (size=512KB linesize=64 ways=16)
+          L1Cache L#27 (size=64KB linesize=64 ways=2)
+            Core L#27 (P#3)
+              PU L#27 (P#27)
+        L2Cache L#28 (size=512KB linesize=64 ways=16)
+          L1Cache L#28 (size=64KB linesize=64 ways=2)
+            Core L#28 (P#4)
+              PU L#28 (P#28)
+        L2Cache L#29 (size=512KB linesize=64 ways=16)
+          L1Cache L#29 (size=64KB linesize=64 ways=2)
+            Core L#29 (P#5)
+              PU L#29 (P#29)
+    NUMANode L#5 (P#45 local=16777216KB total=16777216KB)
+      L3Cache L#5 (size=5118KB linesize=64 ways=48)
+        L2Cache L#30 (size=512KB linesize=64 ways=16)
+          L1Cache L#30 (size=64KB linesize=64 ways=2)
+            Core L#30 (P#0)
+              PU L#30 (P#30)
+        L2Cache L#31 (size=512KB linesize=64 ways=16)
+          L1Cache L#31 (size=64KB linesize=64 ways=2)
+            Core L#31 (P#1)
+              PU L#31 (P#31)
+        L2Cache L#32 (size=512KB linesize=64 ways=16)
+          L1Cache L#32 (size=64KB linesize=64 ways=2)
+            Core L#32 (P#2)
+              PU L#32 (P#32)
+        L2Cache L#33 (size=512KB linesize=64 ways=16)
+          L1Cache L#33 (size=64KB linesize=64 ways=2)
+            Core L#33 (P#3)
+              PU L#33 (P#33)
+        L2Cache L#34 (size=512KB linesize=64 ways=16)
+          L1Cache L#34 (size=64KB linesize=64 ways=2)
+            Core L#34 (P#4)
+              PU L#34 (P#34)
+        L2Cache L#35 (size=512KB linesize=64 ways=16)
+          L1Cache L#35 (size=64KB linesize=64 ways=2)
+            Core L#35 (P#5)
+              PU L#35 (P#35)
+  Socket L#3 (P#3 total=25165824KB CPUModel="AMD Engineering Sample")
+    NUMANode L#6 (P#72 local=8388608KB total=8388608KB)
+      L3Cache L#6 (size=5118KB linesize=64 ways=48)
+        L2Cache L#36 (size=512KB linesize=64 ways=16)
+          L1Cache L#36 (size=64KB linesize=64 ways=2)
+            Core L#36 (P#0)
+              PU L#36 (P#36)
+        L2Cache L#37 (size=512KB linesize=64 ways=16)
+          L1Cache L#37 (size=64KB linesize=64 ways=2)
+            Core L#37 (P#1)
+              PU L#37 (P#37)
+        L2Cache L#38 (size=512KB linesize=64 ways=16)
+          L1Cache L#38 (size=64KB linesize=64 ways=2)
+            Core L#38 (P#2)
+              PU L#38 (P#38)
+        L2Cache L#39 (size=512KB linesize=64 ways=16)
+          L1Cache L#39 (size=64KB linesize=64 ways=2)
+            Core L#39 (P#3)
+              PU L#39 (P#39)
+        L2Cache L#40 (size=512KB linesize=64 ways=16)
+          L1Cache L#40 (size=64KB linesize=64 ways=2)
+            Core L#40 (P#4)
+              PU L#40 (P#40)
+        L2Cache L#41 (size=512KB linesize=64 ways=16)
+          L1Cache L#41 (size=64KB linesize=64 ways=2)
+            Core L#41 (P#5)
+              PU L#41 (P#41)
+    NUMANode L#7 (P#73 local=16777216KB total=16777216KB)
+      L3Cache L#7 (size=5118KB linesize=64 ways=48)
+        L2Cache L#42 (size=512KB linesize=64 ways=16)
+          L1Cache L#42 (size=64KB linesize=64 ways=2)
+            Core L#42 (P#0)
+              PU L#42 (P#42)
+        L2Cache L#43 (size=512KB linesize=64 ways=16)
+          L1Cache L#43 (size=64KB linesize=64 ways=2)
+            Core L#43 (P#1)
+              PU L#43 (P#43)
+        L2Cache L#44 (size=512KB linesize=64 ways=16)
+          L1Cache L#44 (size=64KB linesize=64 ways=2)
+            Core L#44 (P#2)
+              PU L#44 (P#44)
+        L2Cache L#45 (size=512KB linesize=64 ways=16)
+          L1Cache L#45 (size=64KB linesize=64 ways=2)
+            Core L#45 (P#3)
+              PU L#45 (P#45)
+        L2Cache L#46 (size=512KB linesize=64 ways=16)
+          L1Cache L#46 (size=64KB linesize=64 ways=2)
+            Core L#46 (P#4)
+              PU L#46 (P#46)
+        L2Cache L#47 (size=512KB linesize=64 ways=16)
+          L1Cache L#47 (size=64KB linesize=64 ways=2)
+            Core L#47 (P#5)
+              PU L#47 (P#47)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Sockets (type #3)
+  depth 2:	8 NUMANodes (type #2)
+   depth 3:	8 Caches (type #4)
+    depth 4:	48 Caches (type #4)
+     depth 5:	48 Caches (type #4)
+      depth 6:	48 Cores (type #5)
+       depth 7:	48 PUs (type #6)
+latency matrix between NUMANodes (depth 2) by logical indexes:
+  index     0     1     2     3     4     5     6     7
+      0 1.000 1.600 1.600 2.200 1.600 2.200 1.600 2.200
+      1 1.600 1.000 2.200 1.600 1.600 2.200 2.200 1.600
+      2 1.600 2.200 1.000 1.600 1.600 1.600 1.600 1.600
+      3 2.200 1.600 1.600 1.000 1.600 1.600 2.200 2.200
+      4 1.600 1.600 1.600 1.600 1.000 1.600 1.600 2.200
+      5 2.200 2.200 1.600 1.600 1.600 1.000 2.200 1.600
+      6 1.600 2.200 1.600 2.200 1.600 2.200 1.000 1.600
+      7 2.200 1.600 1.600 2.200 2.200 1.600 1.600 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/48amd64-4d2n6c-sparse.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,118 @@
+BZh91AY&SY„Ÿò®ÿ÷ÿÿÿÿÿÿ÷ÿßÀÿïÿð€  "@
+ ¿ø`ßxñ‡J   "€ *¥rhH‚H豉I
+H  Ð  yšS^E {   9óï6ãž´
+<p@,ø}       ;¹	ïéò„Ýî`©@  /`4-dÕ!³uEÜÀ,€UQÇJçeÀ@Š(ˆçg ° th‘uTäåÀ]À¨Éôtð        ¸äs ÚÛEJ“ˆ8;8ÇYD	•Ò0
+Ê‘v^Àa<x TD€    H  Û             &‡¿ÓÕU)¦£õ5bi¦&hÄѐ 0L`™0 F˜hTñé5$eRH›@&&   ÔÀŒ¡€   i€F„O=T‰	êPd              $Ò!SQ"ž¦5O5ƒ˜€2h``LÄÐLA‰ ‰AB¤ô4™hiê
+44mA h  z¦†ƒ@) „ €†F¦ÔÓ)´šziª~¢zG¨zš4ÄôÓQêéyC hð¦'ýôâbŒüWñþÜ?ÜÿuUUUUUUUUUUUUUUUUUUpèÄd@Ùºªªªª¿Ù@é p'A’Ã,bêŠÆXe#q7MØÃcà(þ5ÛXdɆ2a†L˜dÉ–#bŽôAX&é½¹“dØ›(ÒŒLøñ?ǁ|gUÆ(Áܱ…-	ˆ—LN;(ãdZO!¬E2(G)Be:Ki‰Bß)m€4Á0(ECü´…	ú×ë‰àñ~›æjÚ­yëM
+ªø5çÃՏ¡ÀF¿Ø*–dXHõSœÑV¡ªHY”•’„µ+i‘TT~éûªÔ@UGJETïÕÏÑ»ç_~ë7¯¯½oUkh{·µ·³Y´^îBSÝݽ2ä»u«c’nÝ^¼­s^Âä–Ü+K›Þæf^ȦäÜɰµn±’lr],”ªR©L%]]*•[º•™&fìÝ*u#nI™J²«Qò>GÈù<ÝÍöÛäzÖ£ä}ª¥	#suÅ­Õ:U)VÕnÒ©J¥6ð†…*T¥[J¥*”Ã	ZÞ6÷Võ#ä|•§;}^ssx[Qò¾»Î^VåË—.I{3.á·.\¹%˪ªÙ·.\¹%Ë–®fܹrÜÛÛ¼»ËšîTÃk›FaH’<`kȼ‚3/a”^ÄäkÈ ×Íš !‹Aæ£MÍkÈ ×RÖ¼3Dä^K×’÷0Í<€kÈí·Ûoê·†hä^@5ä½Ì3@%…ëȼ“4Ü€GRõášy ×’ÂõäªÉ3@ ò"š¼€kÉazâ¹!ŽU at Z®èšEšòua4ËݍêÖï+E¡4Y¯S${’DIw$Ц:Û׺Üë[šÜÚ¦æ‘ÝÛÒ;“IIÐÌ­*ªòeBe@ÚØeCr¡¹PÔô2´2´%lÙRL¦¶PܨnT5=­­&T-lÌtóv¤2¡¹PܨjzZZL¨nT1սڐʆåCr¡¹PEÊdʃ•²e2eBª¯&Ty¸än:ÝÙÝÚÝ“^îÖì“[»¹$™$ÐA»5ó‹[æ·575¹»»$m§§2NkŽ·wdszmÍsv·vMnîäÍëV]ÍÕ.æíVÔÆö·(ÊuR
+™FI•2¢–Mêóe¦*fÜ6ÂGd°–™—w–BLo,6•2¦mÁYY‘åL©•1Ê•2¦eeO{q©wDÒ,njlÈÖG“­ÂC3ÓouÍÅ. ²<Õ5ÍY¯"Èòu²æM¸ëMÛ‘äÚ¬¦ú·™‘Ùé°v㆑2TlÇ´äÝêÃe]äk&ãYE‘äYE5ÍêcqUI$‘·‘‚Èò,"qìS^õiᏫ(zÅ‘æõ¹#zL‹5äNá«ÍU‘‘UdÜ›5Ç[»²9½6æ¹»[»&·wrQvãU-ïOMÜÝšã­ÝÙÞ›s_7kwdÖîï‘ÝÕ2J­ª×½_/—Ëã¾_öî®®žòù|¾=åòúÛm^ùòù|¾=åòù}™‹‡¼¾jUI%Tª€UETÝÜ’L’kŽ·wdszmÍsySwã»·µ¹rïaiènfeÝîì—w.î]IwrîåÝ˻ک.îUHÛå·–ß=¾¶úÛëo—Þ¶úÛìÌÌÌËoYrîåÝË»•R]Ü»¹wpîå;—w.î]ÜRK»—wnîÝÝ»»7oHžEBŠ-[º¤™‹H¢ŠH¢•UJH¢ŠH¢Š]«‘EÝZ·1bűÕh,Ö¯«šd“\u»»#›Ónk›µ»²kww"
+•2åìš1ÍÙº03„Ý›£ªªƒÝ›£ÝÌ›	7f—¶ÝËš,š
+f†nÆã­Ý‘½Ý­Ù5îínÉ5»»‘êË#›5·RÛ›Çε¾ksj›šGw|•­³y5ñï/w‘¾u­ó[›TÜÒ;¾l+”#œM6Ö¨¢’)&bÅQE»«Šrª”QEš¸¢—j(¢Š8µnbÅ‹c3H$n:ÝÙÝÚÝ“^îÖì“[»¹3I7`µä&îÈÛw+%¼«Öñìn:ÝÙ#›Ónk›µ»²kww"‘.éf]`¨\Ëטh:¥"Õs.’].sÉœˆâ·—K¹“VEfnZ"³.–Es.é{•3¥æTÏÙS<_eL÷o“Õ{—K½ÅŠj½ÊÔÅ{—K¹—Y5^åLé{•3ÅöTÏÙS=ÛäÃ:^åLâ½Ë¥‘\Ã’Ý6­«2ë«ÜºYª÷-3ÅöTÏÙS=ÛäÃ:^åLá{•3ÅöTÏÙÞ…îW;â÷*gKÜ©ž/²«"¹—K"¹™ŠÞ],Š÷.–Es+Sû*g쩞/²¦tîr¦t¼Ï³“Ó'm–ÖuJNK+*“)Xˆ+‘fAmQ,ÅN7Æu¥U-°¡ô{Túõ«åç3;»™Ì̯«=±aY­–ÙC!guOvÕò·™¡™›™uRé"º¾”ĵ]S©wjMÐ̾ÏfUífÆXRsÊ{¶žÛy—¹Ýܯ­µ˜AŠ!Ï)îÛën[Îfwsww™•}râi †Õ
+––ذ Páåæ_f–>¡Ï[»†ožÏs““bY¸Šέ@èH×)©©>†©´úiMëZjj[ÖôÓiôÒiZLèÖ+ꛘ–±–sÊ{¶žÛy—¹Ýܯ­µ˜
+‹¶”´£Æ Æ"1B‡ÊxÃ2àó5ÝOpÓœçM7Öjn¥³Vå-[©6¶ö]Æ®ÓÞŠjÖ[NnÁDQ2滽Õz·U-MS×{LS+iEuÜËŠæ—Ui§³&KjJ¢ZŠ"åˤËpŠšÔÔ¸·wnÌ4ZŒyMãÍ3Uµ«36í‰â«º.ñ]]]l­@ÙÏ/)ëyÏf¹•÷³pÝ¡mX‹ Ð8ˆž,´¼´OaqªX²ê•©4Ýí­[«J¦©¨Öfæ†ËQhÌ»¶­§vc©ŠËÛ¶5—T^,ml­I£,)Ï)îÚ{mæ_fwwr¾¶Ö`…9å=ÛOm¼ÌÎîægs*ú³D(YÏ)îÚ{mæfww3;™WÕš2Âʪ¼òžë_¼;›ÜÌÜܵ|œòžå«åç3=»™Ì«ê†‚ÅTUHP ŠZª*ªªB”U¤òÔËÊʺ¹¸kݬÅy3
+›SdÖïswY•­`fn0Ó/ ›Öi£aœp»»Æñb–ÖeÎ.\è09á»wwW/1ãÇŒ)´7˜·7^™Þê5î¶£#„d3V3Í6{ºf¦õƒzñ¶f7–Y‚ˬ¼Ë»ËN”»V¦Ý©»˜ÁÓy°ç{ç{/C¦ö[y[Ó¡Ó{
+½¬Ñ,/×0ËKî黹Ïa‡·yÉÛwB›îg9.¥+cZ
+
+Vˆ–ó0ö“tܘaîèAГi¨ÓM6š­¤ÓLO§ÖÒÝZµjCÕU«Vê[ÓI´t%„¥Mn©l¥"‘N¢[´·¦œ­KV­ëV­Þµ.ôïg
+àsfé³)hT›ˆ‹-”ãcì3†Yî÷w—¹;;Ó›Á99îÍoUÌëV£-µ‰ôÖC­Ëm5ŠË¼–¶V¤Ø‘b…QbÂRÊU,âžl§3'°Ì™0¦ä÷»Ã‡''8s‰§Ô}6ê¢Þ·­Z÷V­ëw_MMè-jnîº[zYÐÌF]ÝÝttåR›v¡vòægww+ëmLT(YÏ)îÚ¾å´ægws3¹žËkX!³žSݵ|¼ægws3¹•}Y¢,ç”÷m_/9™ÝÜÌîe_Vh*ITHqñcÊö¥•+Rk[©4Úm>šNoM55&ŸM6ŸL8sfàsfé³)hT›DQI(Q<R´y™‰í3Ã.5Å&ˆ{kVêÓnõV©©ˆ†ÁDHmÙªõ;1©‰îæîeê½-»j̼ºWv­¬4B…
+°)m§ëB û¹3)o—ÝÌæîfw2¯«4e•E“ˆ‹ÎP§°À¥,¡O{¼;ÐáÎáÉĜޚjjM>šm>šM3¡kI:År–…I³žSÝ´öÛ̾Ìîîå}m¬Á–œòží§¶Þeîgww+ëmf@Ÿ_ïóõ÷Ùªo´²} vEùWj6ŽRÛiÀ†D…š°û*™,*©¡Éà(@ê*l…YɁ€p‚Š’… ÉÙè, Nȧ­·–ÒÚ9Kim´à a¡„êªÐ«
+ª¸dÖ(®„¨´ä r@`¢ˆ°¡d‡aè‚ÁÓž8\8ŠTuuJŽ[TІA=˜pc6yie\,ÁÅ[(U\™8r*Xdé¤ÈLŠlN!Nd¡vM„Œa…ƒ4°Œì<C€ƒ$<E=m¼¶•G)m´àÀ`rO*©eXUU02²Ö(©˜¡ÀaÈ`E&ÂȐ`1QB‡Ç1)jŠá“I‡ˆd8<¨+J-¶Úr‡‘b*ÕH˜+ä0àÚ¦LÌ0ÃsTo9c!ôâ)ëm^G)m´á!â†ʪYVUL†CÂ„ëTÀ˜¡ÀaÈa ÁDRl,C¡à2*(CÁÏ^"&
+®W¨å´äÈx‡0UmFÒªà`r,Q!2@TÂb98$ca¡d
+‡aâCÓˆ§­µxTm¥¶Ó„†ˆd9'•T²¬*ª™‡„)$ëTÀ˜¡ÀaÈa ÁDRl,C¡à2
+£xë8•=W*6ŽRÛiÙ!è'•V…XUUÀÀä(°@0'QS	098$`¢¤Ð²ðñ‡’‡SÖÚ½*6ŽRÛiÒC!ÒC	åU[*¨UU\†Cá ÂuŠ*`LPärH0Q› Øv=ÌÉÍÍúáäŸW¹»¹=Œ@öÜŒ=;0Éè„9Ø+Õê•¶ž ÉÒ\œ–h}*ØdÀÅ]™=9t˜@Ü…¡n˜éµbI
+†;b&ÊÖìß\/I¡y t<
+Ò*ldR³YJ
+ÄAY(Ð*hde†1(ÀÔÑ¡PY ²A²…"‚±D˦¦†ŒÆdµj¥F°RbÈÁŒ,,UTÁŠIY€1€°Å%eM(Ãڏäð¼Â÷…ñ”è„Ê}ñÒ_”-†ÒÛ3ó K~ ¿¦32 ¶Úa+m¶Ûm¶Ûm¶Øa,m¶îfd’™m¶Ûm¨¶Ûm¶Ø[€Ø}À%ÅèµUUU]üÀ@&–ûékY µ°[°_0XÌ?…ÿ1ÿUýÊþo͇õùꪪªªªªªªªªªªªªªªªªªª¬’I$ú ÇésÉkñþ§ýÏ•¦®VBî’ª¡R)Š~ª5 ÖÂÛoâ›­ýŒÝã030=bf¤ÍIš“<MK.d²÷õÙ¹YÝe·½¨303YfjLÒ‘ONãp1"‘H¤R)ŠY˜Ø[am…¶ܼæŸ^ü¿£m¶­µm«m¶­¶Ú¶Ûm¶Ûm¶ÛVÚ¶Õ¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶ÉùÓàI:Š( ¢Š(¢Š(D’oê?Šg鎖Á#`Œ‚0FÁZX#`Œ‚0FÁ#ai`Œ‚0FÁ#`Œ…¥‚0FÁ#`Œ…¥‚0FÁ@Ÿþt?aú6Ûm¶Ûm¨¢"Š(ýÿcm¶Ûm¶Ú"Š(¢åå¶Ûm¥¶ÚŠ(¢Š0yÎs³¾}` PPfffc ÌÌÌÌÌÌ ã{ÞÀ  Îo{Øs½ï|ï{Ø    ÷½ì   {ÞÛ›ÞÛ›»šîîkÇù3ïÕ~5ZÕEQTUEQTUEQVµQTUEQTUEQTU­TUEQTUEQTUkUEQTUEQTU­TUE^b}ÿJ|9•¿j¦[–}±M·lúÅ6ݳ¸¦Û¶Xbc>•2ܳ1DrϬRÛ–5LµÅTËrË1ÍùŠm»gÌSmÛ>b›nÙóÛvËLgÅL·,ÌQ³ë¶åS-CåS-Ë,Ç>U2ܳæ)¶íŸ1M·lùŠm»e†&3â¦[–f(ŽYó¶åS-CåS-Ë,Ç>U2ܳæ)¶íŸ1M·lùŠm»e†&3â¦[–f(ŽYó¶å–cŒ­ek+YZîOŸ>5¨Ûò’˜ÅÄÅf"‹™^ÝEv¿.¢‹»Dq\ÊŠ.e1QEÌ¥q[”㨢îÓŽ¢‹»EÄQs,ÅUDr™*Š.e1QEÌ¥q[”㨢îÓŽ¢‹»rÚŠ.eÄQE̸*(¹—2ÔQn\娢îÜææ5¨ÚÍ­."‹rå-E2â(¢æ\\Ë
 ™j(·.rÔQwnrÔQwm·E̵1[–åQE¹iË­j6å7]EvݺŠ.m¼ºŠ.m¶â(¹–¦"‹rܪ(·-E强Š.m¼.µ¨Û”ÜiõœkQ·”æ5ùœkQ·”Ümøñ­FÞS˜ÝûmkQ·”få]Øð ~ÇÎ* =÷Z“xï¼÷YÎñ¼c{ÄǍÞì¾1£YÏ‹çšÎoŽ×êF22DdüiŒ• Q’¤
+2TFJ(ÉR*@£%d¿bTm¡÷J…µÆ•³Ið~ ñxrá}ap`·ÍqÇ—qÇqÇ6Ûm¶Ûm¶Ûm¶ÛmþQ$ºÔ’ê$—UI%ÕM߁ø¿¡>V­Ø¾÷7aŒœËï2NI×½»<8ãŽ:x]æsÏ\ð;»û;ûûûÎðç—<óÍžyç›»¼¡8çФ€ÍÍ9ºÜ˜Äò þ ßÚU&º6Yà²Ë,²Ë,²Ö,X±bÅ‹,Yø’Kªñîù<÷žòI$“¾5US5US7wqÇOœqèqÇ8ã§gqÓ±,e‰B¦H©^{ÂÕKêD’ïDÊ ¸úàxBÏ kÞ6/›6|ÇÌOH2(| |aòˆ¦añ¼oùnÙª3ãgå©o©\Õï[â´q³,ã„ãê:€Bqópçyϧž~v‰}×åç%q¼åË’<Ãd…”Vî쩝Vg'ÈÜDðPÝÇùÓ¯nÅsÕÇ=ÍÏP_ã}fÏNæÀqΐ¸ë=Õséã|ÛñÌâ¼Wu3…Ò䌖Ô`w„Çà)»ß¶[ÝsŒã3šõáÆ|[œk‰†é¼BRá¸ì¬~>LÞë-âí²kåÝÞ=lSÛœø°ñaÔî°ØP/|L ´ªy#lsM:£:0ÝÓE ?€À2G$—–µ™¹Y¾mˆ¿º´Ø/t’´‹¯\Ùâ¨õ¬X~ê
+|ÛŠ§¿Çžù…Ìö×Ã3wZÖwŠ¿ÅkfCŒ^'Øð<ñhÌ*Óà==ېYaº,ãÇÒ ×RºïK¯Ã3äü.ŠtÛLM¶ŠmêItØ=̬v¿>’]Ç®ñ1ff7—wæ7˜Þc¥¾›M·ÒK§IáoòÿI.£—tƒ±ºc¥V6™—æ7˜Þb¬ll¤`éQ™cüÊIt<ÝF˜­Ž¿a¯G¹™ÍÞswœÝç7” ý@°öÀ ?/¾Îò…èÝå‶p½á{ùôÞp_ 'ã ŸŸù`þKJ_ÈýÌvâk´Æš–Ú·lÝ2îfîâæí«lÛZ›‰•wmLbá¹¦Š¢5Ͳæ]£¢nåC6†îÛrn–W\CuÓs4ÕEc1sw7w4×Z\É—õ\ß°?8°õ…ÞØþazü{Bè ]ÁwÜò…¸]áw¸_h_€.¡pá{‚ø…îp\ü¡yûBÜ.ðº‚ìÁvóÞp^|¡rP½A`_0\…ÀGàHœ‘˜Ÿ…‹«Ø
 A|~éòŸAôÄqù(ÅM>9™3333ÉøÀ¤êªª¯¡1UUWšÉ$’I)±bðÆW÷~ØõÄøhíMªŸƒéÈ©¬Îê¿îîæcvì ¶h«b¨ ¶K‹b¨ ¶E -Š ØE¢ØE -„Z -	¼Ìðfµ¬ñ52k5¬ðó]8ã·³§N;½­»NÞ½zö÷÷øúÚóz fÀmƒžyç{Þ÷½ïžzúÿWÕðü?cæ›ùgÑø€<@/ÇãŸ7šóy«Íælت¨ ¨
+›m²ª  6l¶ʪ€
+€Ù°fØ*ª *fÁ›`lª¨ ¨
+›m²ª  6l¶ʪ€
+€Ù°fØ*ª *fÁ›`lª¨ ¨
+›m²ª  6l¶ʪ€
+€Ù°fØ*ª *fÁ›`lª¨ ¨
+›m²ª  6l¶ʪ€
+€Ù°fØ*ª *fÁ›`lª¨ ¨
+›m²ª  6l¶ʪ€
+€Ù°fØ*ª *fÁ›`lª¨  °`
+ª  6l¶ʪ€
+€Ù°fØ*ª *(²ª  6l¶ʪ€
+›¶ ªª (l ÙUP@3``ʪ€
+€Ù°fØ*ª *fÁ›`lª¨  °`
+ª €fÀm€*ª€
+›¶ ªª (lت¨  °`
+ª €fÀm€*ª€
+›¶ ªª (lت¨  °`
+ª €fÀm€*ª€
+›¶ ªª (lØ;Þ÷½ï|ó é={îwU›»»—wUwwva‹IjÂPØER[E°” ¶e´°” ¶h¶haÝÝÝÝÝÝUÝÜù !ðG䪨<óÏ—ËåçŸ/—Ê¶Û UU 9ä¶lUT ç¶Û UU 9äm¶ÀU@ Í€Û UU 6lUT PØ
+°UPž@`6ÀU@y›`m°UPž@fØlUT ç¶Û UU 9äm¶ÀU@y m€Û UU 6lUT PØ
+°UPž@fØlUT ç¶Û UU 9äm¶ÀU@y›`m°UQáÓÐô|qÇqÐxvù<½½ýý½½ýý½zõíïïòy*òyfÁ›`lª¨ô8ô}:qÇN:táãŽy¾ûÆ€~`8( ×jøâï9»În󛼿ï9»Înª¯9»ù*p *¾Üq$ÕUjBîE´dÂH±!#I [&0I$ÂHÙ0[$¶ÒÙ0’ ¶L$‹a$[KdÂH¶l˜ÙØqÃÆx~³YšîÌÌÍwÀúû}¾³íöË[m¶Ûm¶Ûmmm¶¶¶¶¶Ûm­­µm¶µ¶Ûmµ¶ÚÛm¶¶¶Ûm­­¶×	1Ëm¶¶¶Ûׯ^½zõìëׯo8ó»»»»¹çÇÆ¯Ù°fØvöövsÏ<óÏ={Þ6k¯YÖÞ ‚Ðl"Ñi-XJ [ªKh¶€Ál¶€¶€Â-Â-l"лª»»Ÿzö%Äæ  ë××›ï·qÛm¶Ûm¶Ùl¶Ûd¶Ym¶Ûkkm[m­m¶ÛmmVÛmµ­¶Ûm­­¶×I1Ëm¶¶¶Ûm¶ÖÚÍa1rÔ˜-¶€¶aÚÅ‹«E¬Â)bÛVb­´³²ÛmÌ QjÌ"ÛVa€¶mL· `ªªªªªªªªªªªªªªªªªª¸HHŠªª¹™™›&Éëêê^ª¸éçñÇqÓ³Ž8㧇‡‡‡Ÿçøø×ˆ3`6ÀU@ Í€Û UU 6lUT PØ
+°UP@3`6ÀU@ Í€Û UU 6lUTùö Ÿ_JªªªªŠŠªªŠ¨ªªŠªŠªª«ð>ā˜ªªªª¸C~–⪪ªªªªªªªªªªªªªªªªð∪¨Š¢*ªˆ¢¢ª¨ÅTUUS1UUUUpÆHBI$’€ü¤U r©xòy17æ«r˜wñ¼;ÏexŠ»x‚àÊᐬӼ
 ¾ON¼=¦k©Ã”Ç&R™»SÏ{ÃzÔݧUŽÕ§WJõ\ËWº<J(¥'ÓOS´¯.îÕ‰­+P™Å&æÒÈtœ»œÙO[g{¬î0ç©e{Þto:‹'M°fŒ:wÌÝ…Üï‹åë}™Ã{¢s¾ÉŽŒ*hóC˜Rí¸aܧ·ÕíxÞÞ[…­×[ÜïyÚÓ½«^·7;!$:D´j`°Ë&Ë,¦2Ë ŒE 0A$‹`*©"1ƒ1cd‚AQ‚ªÄ"$€0ˆD „c*1ŒeˆÂÄabe•ae–2ˆJÕ”2d0`2eV™U†&!“I«[JŸhì^Ü3(hìv·ÏKYŬ3°Z…Âê·_Œ¥Ôûó: 3óÜ{I$’I$œ ú :kŽ<’ºÊ®oÓXAD¸9€"¢í+	¬ÖC œK‚ñ!?3 úÔÜζ’I_Ÿ‘û?È_±üÛïã?üæ}Zÿu.GÛs—omWáGS]ÞÝÛy8xyÜã³´ÛÁËyÞÞuyÔÆ{Ç>ïã“¶‰–‰ÃDËDD‘$ID‘$ŸXÍø-#€÷`Üë­uóãÀ                                                    ’]6Û                      
+M¶ÚëRKªT’]nî‰%Ó¤’é&ÛÐ       i$ºtŸ>¦Wm¿Fq	M`1ƒJ*`BL!Jœž&èt5Ï9ÓÛŸ>ÃaËs–§-@$	4 ÁDS›Í-3¥¦t´Ì¦ùÂàààÜØØÚë›ÚÌžt©ùÂˆ+çüÿÞ¿½6õǃôÀý7ù‚ÙbZX…é¶óAÙ64F¦‘¨Ñ¤j54F#Q©¤j54Oö‡u½¹mÏCûé~ñ?x–¦1>^‡{uÐþåâjjhׁ³û–ïscF¦¦¦ššš4jjjhÑ£SSV­[›×üA£Qª4ÞØÝo<%¼Ú5FF‘©¨Ò4j4MF‘£Qª54š‡ïÞ齺ܽ·¤ú}>Ôüj;ïÕ²dÇ[OÉhÃ&L0É“2dÉ“,¾áëï×øOß=Áïýó÷Ïeà!úãÈ;§qÜNÇc´íGc²v£·øNç}Þ}2ðx<à¼gŒñzëÊ{¥äxÏ
+;gHæŽg'4s99NhäæsNg#˜s99£™ÉÊsG'3˜rs9ÙÉÍÎNSš99œÃ™ÌäsnnK;þ{Âv»]—bþýù§è¿n}£øÀ±”dy_~ðOฟÁ.o%ÐètWIÍ'‰Â¸8£ˆâq8—ˆq+ƒŠ8Ž'‰q8‡ÁÁ¸8£ˆâq8—ˆq\\GÂú=ƒîÄÒj­4ùkkdÔb±2¬X˜¬,L«ÛÇÙºÞ>îÿ{]Gaælš:0ØÙÖ¶o<šiÃÂâ6šš5šš4…%%	AA at RRs÷<~®‡Nž„·¬RXXP¡BÂÂÂ…
+(SSSS¯^¿dæææú	ôyþ?°×à>Û¼ôì\œN'q8{®~ýÑÒyÝgZ¿†ë:NNgpppq88G‰ÄàâpŽ'âq8œNÁÁÁÄàáN'‰ÄáOÞþ/ù¿Gìw_Òx…ùoòžW¾û³ü_ôÿ·çú|ÏÚ4~“ôžÐ« ·°,`\Ÿ‹*°þy8hœ4N$S ÔP ÐiüùÒÖdàäa˜…û€´ Wö
+"
+Ѫa†e×0ÃGƒH‚ºá¹†æê5MŒ6:¹†æ»[QµÁmáûŽËvæöíÁRŠÎZÆ‹h —‰ÀiTÆ3€Èρ@ø	¨¤œ2ýé´¾¥žúÀ²ê 1œs
+=\ms@Ù{³¯	¿´ÓãyÞ»mÁŽíÄlmio‚¦Î»J&¶c°[ ^¢ª2xaݪ ’
+ 2(²
+†rª†ï±D`ÎgÐø4ÓësJǶXL74ã^@|/-ñÊ ŽH€»Î¡Æ¸4ÚJ ŽôùÀäÎJ´¥)Îé7:d2eExŠkµ»Þ¬Ôè0`:Á„Åj‘qxÌ,È &}u“ßG^B€ð“íì2ZaJ¡X°úØóp,ÃC0;©ÄÎBâŽ}a9Îmòxï!L0²Ée:ºè!gÝ ™ÏRö<Ù‚Ls=&ÎÇO¯aî÷,ÓkÒ'WVõ0ÈÄçZYƒCq	øo;šÕlÂØ`ï¢ÁÒ´ožzÑ ¢t ?É ožŽ!R¯w1\MÍ›îLtãœq;K®&™¢ÉÃÉéß W:ÊÒ3)e^;»©!Z®)³qk‘·wpÕí®3ÆYî4ìÜçáÜÈeÚºªQD˜Õ¡c–T¥2õ*Ø-Áõ˘'½Ì÷”é6rzw¶ž¼:xFO0ÐÑž£äçszÎo¶u¼ÎM}äê{)™ïr¼M2ó|†ºƒm/»Söz^ÝkÇMÝ^SAE]…\¼,¬Ç›º¦L™”ý­gA‡æ5[EÙv[ÄE'¦1ëÖÃéAfwâJÍñ¤už3ƒ<ãXÈç©ü|c\ñ‰ÎAvÍ*Ÿ ïߍõÞ1Œ`                                                    5$ºm¶                      ›mµÖ¤—T©$ºÝÝÖ’]m$—Inîè       4’]~àPÖç<—Æ®sMT2ãä7”POÎIãúRéî‹{Ë
+òë6ŠÿtÃâphÖaûtä0-’ôòØîÏ­ÆEÏ®mK‹ª3ïÖ_xÖ~áç?*;[æöyÑžk#ŒnIòü…qù«ò‡åPzwÏqù ; ~|˜3«,«…Ën|A@° ¿–„›nËh¦`½è(©Î†LMjdq­ÖHüv ‡¸ý=ˆÙ w:ûÇÏʆ§é¨òú<—mÂwõð`Å>r85퇼øFéÍ' îf™X:s¾÷¸fÍ4fI&}ÕGÀç£Ñk¯ÇÜm//
+Tç1¾yf¼
+j¯¬3‡>M%cr5é¾5æÍÔ$2z '’éìw÷ù÷àŽ÷îã÷xåÛá´ØèËàˆg©~GÓÎL¦hóW¯ó³ï}±Þ²qñåÄ09Î
+I$5žÇ߼ɏsóب™ÁDøxŸ4ççwgÜÆë‚°jŽÍà“Š¦ñsA¬­qÎøôçš–<ì…å†Ù‘‘‘ãéëëå~µÎ<Jõû@€õ5=¸á,Ãæ¨âS%q8`0š…ß¾À9Ï“ØË‡NÎŽRõYİֲ«1>ÊüÉìO^¹¡;ÎBêyX‡<®oh¤	ëHW\%‰­¨ ëôañÍ6¥!$’I?µýŸäøO]ah;ï®ýý /Í9AŸßÇ_Gšøãõ;Ä ~o„ù¸ùîƒæ1Œc'tûr–œqU¨™ˆ“™l9;hyi˜bYÛŒ¥óÛëëœëãÉîç{zºZ·´¥j[ghózuC™iÃts½é¾æ]¢–TS£^ÛE¢USÕZ©¢mÉ:Xú3ss¾€i˽;žÊrt¶P™0aÆzwL›ÜõöV«Þç;ˆvÓ‰›ãšŠèN#­wÕ
+kÝ[.åm^¼Ê*˼™ˆººë}s½;½Ìåæç³¹H@‡ÞHy„‘Š©“aˆ2d2U“ a•)Æt›õ¼OGE#eÑr>DÆî€@j_[*ºÍä]^±‹Å5;ˈݲ†œßɽìâwʪ¢*"¢:-UQUUUü@Œü$&®èÍTÄ.ñ,¹}8_¬ ëŒuÎý                                                     ’]6Û                      	*·wwvªªª©TI.ªê­$º’HÒK©-$ºJI        4’]8„úïñtùò•UÒÖòó¥¯yÞϨ=ô|Nºêro°Ød´AÞhÖ¬ú.G‡ªÎ={˜Ù–²ù8öüàê9Ÿ_œÙÆ£__‡ÁÇÄÛ×+UR•›â²UØëZ‰uðôüPC”¿·AÜKP;è–"Õ,^ªÖZ(}m.‡Ý©$:?&ßG'<BBI=/8)îóŠqF5%rúK¡¸H³X
+P8äæï(Ùïv;‡ÄL[ˆ; ¡Aqã8\ÁØGŠ
+
+¥ÄY$Rxô÷×<1ä-ßæªIWD9˜ÐT][*µÚ‡•ôyôæ „wi2šP¨ˆQ¾mK/›Nâa1ÆÃd¢*Hƒ»rÁØ-Œ0!-d °ÃÜñD|L†éþ¡cÑ‚£™9uUš1Ä-1Mj[_#áÏž€±öþ~§[åC€ðãÐì	xÈgbÉê_2C)NT°P*A¸‹’@…IÔEj,Ã@5 ºBÒc‘ÖÛ"\&|΃–'/á7$fð’ƒÖ.tGVWcëшqçp:.F@B)…¤93|¼I}¹ˆÜÛ•Äd3ޤ‘¼æ%{&5!Äâñ.§Ä]:Ö0ïÇ!ß81ÏÕÅà,ˆŽ¢ƒLARDREEA$„‚„qø8X E$ ,€8ÒA!o²HVÏš2XlëSÞ}µ{ÌÔt¨JSnsÄÀìÃÐç“sª€!ªÑS‘$A‘…¡+ÏšùM:…DõºŽè
+j€JLjXȪ÷„¿K£ 	#/U"o¥öÌzžOMžÞ7çzõòç‰ß´ô>Kè>ºÏ~`z`õªÅü1$…z{`,û:Ô’Š €,ñòè²æï
+sŒy”ßÂÁTF¨ÂÑrÎLzž<îja^å&ì+,Ìó‘b«Þ¤HÀ–åQ1egUvSËUJ8jÌw‘>¯(Ä^â^îR©èZŽ»o%Éг}0RŒÉ9vŒéª®–Ô:ç¹Î%¶Ym
+ÒŠN0ï¼¼<çCžÚ³¶…îè¦ÃnúÏrš—¼z+¾MyêÜw—]q»]ºîÖãÖû7‹Ës¶õsmy!†€ÄĬ+	`ÁX˜S&©†&&ņÌ× ˜:QÝß?/öCš÷›~ûÈNÞ÷6Ÿ‡Ûõ.÷‡o¾éeùUETEUEEUDTDEUWý 	ky½€                                                    ©%ÒM¶À                     ö©¼nÝUUUUV¤—WuV’]n›­$ºÍ´’é-Ót   7wwwwwwwx K'FÛíë(˜Éi÷Pá3|ávcç>ƒç‰ãªÂØpuÌ×ÔÐ Ð	~ÔÔ rãÏXQLIÖ5¬dLc/¨Ìc…Û²Šó…o-€"O[½.ȆìŒ"”ž`œ8‹zÖ¯#Ç^PC¬õ—€Æ-,
+¸`˜?¡ö0¹ËDÊ[o#IT	ö BuoÏD’V€õ€sŒnš bSâ)–©f¸hÏÇØ}ƒÚqŸ~2,¤ŒCºy´ñX–³šd§æ»ë«¤<ÄÔãœc«¨$Êù‚hÍ-ÇG&fäzéó ·J¬$H½§ñaškwg‹»|€U¢ª«fµ¨®g‹ˆU#o<FyØPIäxä;Í-U„€IMª1év_Ž<ƒ(îÜòãpJ™[··Ù¶TÆÍ%ó|«Ù]%hÞ)d.¼qhTžÛMXWØP÷Cj`w‡®ykÚ¦Lã90âí²ðcŽßˆò
+ ,p8sœÃCr~ž“fðäü¼o“>¾Ž›µ*@j^)	é°Ý‘ϐó8‡ÄÅÍ•ÆÔ6¡ïN³,¹¦Òí--l±°´(hhnÒÖÒ’¤¯–Ÿwç
+ÈtwÏ?ŸAÕ	×D'Uô³¨_±?	Äû¨>€Ð¥	B´"¸­°XYw÷ ¸Æ¬5v‡]cèiêf€C'ÖñYóQ›uâŽ5€×ѪÔînT,¬¾Eû‹Oɪªªªªªª®Eô-žÛ/¨L_¿'®ýyÜòiŒÑª"q®ámž15*){]g[Œ)eæ+»êâD{q¤åNwݺá–ñz5¼J™Ç6W¶ûÇg¹ík]Þõ™ŒÊQÕ¼¡µ‹6d6ªJ`V^sÉÍœævòñîÀèp3rº;-VºÕ¢¥ÓOh×)Ô´,[›v¯-`}–c½zùÞ>n֙ˣ¶¸Ü·¼âñ̼¯2ñÛ§6Û¼’@ôtËœ
+6ôSÅe•ŠÅ0°YVTÉb˜¬S•#$D&0,”ï耜TV Cˆø¨¬@‡Ò¢± =Åê½÷« T8¾¤Æñ£RµÏµk—zšó®5¯}bÀ§s¾ëˆ·’ækrèÁ%†1ßç3™œyÎ+¡² @	>yË϶îîîè                                                                           ZI……€      nîåP·;ø_¥9XVN[ã 8?`ÍyÞóéÝ­Îe|ÆAÔÑ{Žºª§Ø¶ñG¥%b‡Ÿ/»ö|döø×ÄN¡ÏŒà¯ƒY\Í?+\ÂòԾ㮉>9€!¾¸Yj¨eJ#]{ÛÆ3,/¾-,ºÈmtk'‰5Á 5!¨^Ó±®É;–´&NxèÃpÁF1€¸á£Êã!ã˜ã,2õ›Ê,×·ËBcuRm‰³yʘ±r}p˜žs®—	ÄÐ`‚îöޏð5~^fü ‡X éì °i€‚a8L+œXŽN3˜,ÂäŠåÐ( µ•s)C
++Pˆ•bàZ†LE÷÷ 
+#&AW+¤J¡¿\û5GÉœï½Í$÷HvŠ ügŒóÍ¿^µ°¤qÐÈVɲ-]² 
+ ¡BÐÊMÀlJZ*âÁªP$û9/í{îÍ»õç‹õ5)ÕãV†5eDuרúù€¿f•XH‘y{y"Ld¢e‰1b„É”˜bDÓKR‚D‚ÁJóլĞîéYT ”T—ç޼ÓRhÉæ¤ÄÅn€½K$À׍NÜÍfqÝ“‰—/rƯo{¯h sœæs®wÏ+»Ö£2ª'vÕÔhl·WXipØ|qW—‹¾|Ü&o#zÔSæô_œzT&ȼ'/w†€˜c}Ò˜4cq‰ÆC8ŸHYÖ àl7` hMlU„
+ƒ€pX¨% ;äñÅØ 릾5>¯ýñúÿ±_¯ü³£ö?k?öü?Õãÿ_þšÏÿz»¥Ÿôÿ®ÿNU­ßÉÄ:´Ü¼Ö3ºù%ÖI9ÿDó”­ÿ×òyMy¥R—*‡‹¿•jlÄ:´Ü¼Ö3ÊòK¬’sÄó”­ùç)¯4¥J\ª?'éöêÔØÇui¹x=¬7‡¯Ø]d“}[™JÏ}”ם”©sœ(ô=º´=cº´Ü¼ÖÃ×ì.²I¾­Ì¥g¾ÊkÎÊT¹Îýn­MŒwV›—ƒÚÃxzý…ÖI'«s”­ûï)¯>©|ç
+¯rýºµ¯ëÕ¦ùx=¬7³·ì.²I=[œ¥oßyMyð¥Kç8Sô=ºµ7ëÕ¦åàö°ÞÎß°ºÉ$õnr•¿}å5ç•/œá]úÝZ›¬wV›åàö°ÞÎß°ºÉ$õnr•¿}å5ç•/œáOÐöêÔ߬wV›—ƒÚÃ{;~Âë$“Õ¹ÊVý÷”ן
+T¾s…?CÛ«S~±ÝZn^k
+ìíû¬’OVç)[÷ÞS^|)RùÎø~ø]Z›ãÕ¦û¼Öðøÿ]d’~s”­þ‡)¯>©|ç
+~‡·V¦ýcº´Ü¼ÖÙÛöY$ž­ÎR·ï¼¦¼øR¥óœ)î/Z›óêÓrð{XlÎW’]d“ž'œ¥oÏ9My¥*RåWÏk>ÝZ׬wV›—ƒÚÃxzý…ÖI'«s”­ûï)¯>©|ç
+~‡·V¦ýcº´Ü¼ÖÙÛöY$ž­ÎR·ï¼¦¼øR¥óœ)úÝZ›õŽêÓrð{XogoØ]d’z·9Jß¾òšóáJ—Îp§è{ujoÖ;«MËÁía½¿au’IêÜå+~ûÊkÏ…*_9Ÿ¡íÕ©¿Xî­7/µ†övý…ÖI'«s”­ûï)¯>©|ç
+~‡·V¦ýcº´Ü¼ÖÙÛöY$ž­ÎR·ï¼¦¼øR¥óœ)úÝZ›õŽêÓrð{XogoØ]d’z·9Jß¾òšóáJ—Îp§è{ujoÖ;«MËÁía½¿au’IêÜå+~ûÊkÏ…*_9»ô=ºµ7Xî­7ËÁía½¿au’IêÜå+~ûÊkÏ…*_9Ÿ¡íÕ©¿Xî­7/µ†övý…ÖI'«s”­ûï)¯>©|ç
+îbñÕ©»ˆui¾^k
+™ÊòK¬’sÄó”­ùç)¯4¥J\ª=ú}ºµ61ÝZn^k
+áëöY$ž­ÎR·ï¼¦¼øR¥óœ*½ËöêÖ¿¬wV›åàö°ÞÎß°ºÉ$õnr•¿}å5ç•/œáOÐöêÔ߬wV›—ƒÚÃ{;~Âë$“Õ¹ÊVý÷”ן
+T¾s…?CÛ«S~±ÝZn^k
+ìíû¬’OVç)[÷ÞS^|)RùÎýn­MúÇui¹x=¬7³·ì.²I=[œ¥oßyMyð¥Kç8Sô=ºµ7ëÕ¦åàö°ÞÎß°ºÉ$õnr•¿}å5ç•/œáOèyujoÖ;«MËÁía½¾áu’IâÜå+~yÊkÏ…*_9ŸÐòêÔ߬wV›—ƒÚÃ{;}Âë$“ŹÊVüó”ן
+T¾s…?¡åÕ©¿Xî­7/µ†övû…ÖI'‹s”­ùç)¯>©|ç
+CË«S~±ÝZn^k
+ìí÷¬’Oç)[óÎS^|)RùÎ÷Ž­Mùˆui¹x=¬6g+É.²IÏÎR·çœ¦¼Ò•)r¨ûôûujlcº´Ü¼ÖÃÇÜ.²I<[œ¥oÏ9Myð¥Kç8Sú]Z›õŽêÓrð{Xogo¸]d’x·9JßžršóáJ—Îp§ô<ºµ7ëÕ¦åàö°ÞÎßpºÉ$ñnr•¿<å5ç•/œáOèyujoÖ;«MËÁía½¾áu’IâÜå+~yÊkÏ…*_9ŸÐòêÔ߬wV›—ƒÚÃ{;}Âë$“ŹÊVüó”ן
+T¾s…?¡åÕ©¿Xî­7/µ†övû…ÖI'‹s”­ùç)¯>©|ç
+CË«S~±ÝZn^k
+ìí÷¬’Oç)[óÎS^|)RùÎþ‡—V¦ýcº´Ü¼ÖÙÛîY$ž-ÎR·çœ¦¼øR¥óœ)î/Z›óêÓrð{XlÎW’]d“ž'œ¥oÏ9My¥*RåQî/ŸjÔÙˆui¹x=¬7™í{%ÖI7Ôó)YﲚóJT¥Ê£Ü^ý«Sf!Õ¦åàö°Þgµì—Y$ßSÌ¥g¾ÊkÍ)R—*q{ö­M˜‡V›—ƒÚÃyž×²]d“}O2•žû)¯4¥J\ª=ÅïÚµ6bZn^k
+æ{^Éu’Mõ<ÊV{즼ҕ)r¨=´¬·YíoýóEU_“ú;Ýæjª­ÛÝülÕU[·»¹ªª·ú÷»¹ªª·owsUUnß{·¢I­Vµ«Ñ$Öª÷ø Ü?¾ïâ}¿­÷½Œ}Ú BüA~ª ¯Ñ´’¿‡OÃ×É™†8Ö±OÅxýøuàu5‹Js»šm™§8&¾|^a®&ËK5¨"SÇÞe=ï¦gqñÄëW…­9sÝÍóÞœDã콚±«7E˜®Zˆ}^ÊS-[e ,T·qŽ–fnåtéi="µ.ú´–õ©b2ô*x´²¦÷;îLöéînfy¯y·Ë×…¶e”±éë‰rÃqóïW•óÞ¹­ï3•ºï-ç3ÊÜŹV¸Üï+yÁœDDZÄJ€¢xD@
+¨vºFÇ#î.ñÇWØÎnë=çœçÓ·Ø’]YV‹ýMþ­áZÿ+Å{Ó}.ºÐÈ$                                                                             R
+I…€    ŒcÆ1Žo¬·ÆóÜk‡W™&™„ü°ü†÷Ë‹)6­"a²ˆØ¸´bo,ÌÞÌn­$M’ÆØÍ‹PaøZ:†ÀI ‡®âm‘ŽØÁJd”ÁKÇèu}ãeãg5ݯ7èΧ ûuc80!ø²Š‰‰^Am¬e Žý¾ù—o×÷nß1¿Zƪ̢ƒ××u‚ÏZô8³Y¬ãx­T™ª¡ür›Ï!Ÿ…1úÞŒ)¡õòéŽe>s’×NL”a—²ŒÇÄ–,AˆzÐÒ)&ú8¼BŽsÕY‡3©©&C~NÍäH‘H•J=r”Š /QYëCv--	@~rÌù¸snû¹‰°ßn#­j‘uÇ&vD @ EâŠe â®&
+ƒ?A Ì=ô|ÍK0ÎbÍS‰îvåUÃèíï‰e"s$¹´	oo¬˜íJVp…€ôó³Žx°¢õ®8SUöà|ëÕÄ_±Îþ“ˆLŒÙ(0ˆ1„b¡%­+¨w;Ƥ$’I'Þþ.ËéæW<äëç~¦<xÖl:ždÝräûîç×™|úq¼<÷ÔÆ)…ªû!‡4çç¸z¾z™Þd×fÙeæ`#‡bthj¼Õ©ÓËXîU
+®®®Í½t–9K]fV®•K¸­â‹n!]C6¥\d©ºÛ/©¶Í¼éj[ml®ª”êîúO]ÔÜÊlžË([[ÔãÒÛ2Ëž¾çTê:<ñÅ/ym£Zr…3ÜáÌå3›˜ÌÄ÷iSÍáåÚÞ¼7ÚÓ;Jñ¹kÊW;Ǎõê`Æ „ Æ@I‹ŠÈ Œ0ÊÁˆeF%™†*eSff,0ÀÊ02Œ&`²ÉæqKLƒ+ ÅeVKŠÊ¬–€É`0°jÔjL\í±ïÐZ‹£0A9$'$à8çÎ÷Þç¦ñЬw…®Þ÷~q¼ÍÎ;| 
+ ÀïF}r¢;Ãæ‹ºêãZîfåm@'ÞM/¯¾À                                                                                        ´ »Å×iljªn²©j¾·kqUUuëÆ0ì]`º¯\r;jnÀ]qºÀém9FaÒš÷¢bãÞæ¼ÎÛI@¼Ü„ͲJ‘-!e¤’…°d+#ó½—GhœÈ˜›Ã†<ÐçÏ@&FB74Û
+•Yký•i`22냀áÆÈX}­Ð9ðùlŸœÎ˜w¥µª9Ë^óÌS„"±ï!x‚q*	\Ý¡ÆÞaŒ	BÂím‰ò<W}°úFõ³ÅÙÛcPî'xm8Ó[ x@58îzëÂ@·»ónQ$	Õ"œÄÎ>”U }p¨ãu #Ä	“-@Ï—šâÝÆ£´p?§iF‰Ö[Æ<0³‰Qø½ôH"¯¨ZÒ®ý{xýPÛÌdÑŠÃCè÷´±òu"îNçƒxb‡ÑõÁì´ °,¶›†L …)`w
+€KÀÈJþWß>}v…CÌQ†÷g!ߣ¡Ì-K×Ì‹=g<5OÒ 'Û¦Niïm¢š:ªnîí«—hÕÝ‚Ñ3€ÁG§×Ñ®<oŽxñgSQxç]c5/ä~°„ ’ý|>bþ…3vüùÇ,í®å|ÙäÔÁ£¦Bœ®ðç½<™Ò˜ñäå12fa…[ºVyî»N÷¶—»‡3—1óW¦\¬z¯tl¤¬ºéôb¬VÛ&f§‹/TÆhŒU°Î¯*æïXë/5¢±K}-G“¥¥päÜfÀìå‰Ñí,¹†9}½{ê_r—¯KÌöN¯­4°¦QÛÎJå«VRµIJ–Ê…ÕãmS¼u{xÞqç-å×[´½ëä,0`ƒ3ŠdÉ‘31˜F!“!0`$ EUŠH	TY BA2A0Aƒ#!”d2¦L˜¦Lž#¢Á‰‰‰‰ƒ&&˜˜0bbbbÅÑtFaÝik¢ì´ºüeÕ~Í÷'†f|.‡vø%lºñézùVT                                                                                     »»»»»·X¤ðŒæC§O
+Ãåò¥;Ú`Ä•®x׿ûløÀN4ꨪ¢”ª
+¨ƒA©*Á²ùç²E쌐wºžÉÙÌ¡jÂs¡Ù†*á÷Üô¨~|8ôúkçÝb¼N—„ßŒÓáÁ£1²î9:3wð„—Ïé„i´£€•ƒ ŠAI#hTXŒ‚Œ"„ÙxNs‘ääÀiÌ%ÜF¢äÓ¦­ªåx
+ˆ›ï¬]qÒ"fÓ£M†xŒ¹t	Ytj°eõ†øÐe"¦ ±Ñ¯Y`ìç úI¦NÎéYÜY­¡ÁÏ<nm׿vøåVÆ;ÐUSö8ÁŒtFª"-–Xní´ñƒ¼ã8ÙÈ9-q„ÎW-²Á2™ñœ qâõÌçžC&ef'ÐFé¬UÂüUÆóLŸZñ!²ÇFÇ<B¬C!œ ‰AØ~ú³8 uߏ¯N¶kxÍÖüxß3«óôÝÉww$ H€÷Þ;3õkZÖwf20NÙ'†F+®=Þyõöyöë~qw|é›}Ì+'7?5-ÿáÈ5>ýýâIuIu´¡Yçî‡dâêÝ_'Åq87¼ÎÜÌwwÀ                                  Èf9ž+/LÏg™3<žf³W3&`ÀüàÃóÃëüÞš¯RxñSß~žöÙžfñ¬d1|ø:ºÅVñ\}Š®þañöúǍ•0c®õÃÑòÅs³ïû•Ƴ<uÜ3Ïm{}tgz¾>ÿ@ùÀ
+ç~&×C‘÷Ž•õ­g™U~f@×<o—KÆ7;ûãÉsϸîšÜég€                                  ×Áׯ^Y®÷už[œëÇ^î™×ºöÞ;»¥Ï3u³²ù¼zx“Y×f·¸xñÏr~ŽzŸ¡ÞzÜ_Èê¸Ç?½yÏâoxÅ}8øúv{|çøä~Çàöp–äûW_•TM"(ˆ²ÜæÀÀðÿÇö†á’`ä:ªªªªé¢xÂâdXÖ…q™.@÷û9ûÔ䙆%¡ª%pµ—XìéÓâWXð+ð¿‘ñ|­?‘š~Üü!{ýal|‡ô.ÜßÛð…ûKû¿þE»öpfÄÌ%ñ”¯þþ`´Çúx½«ë׎=T/ÖÅý|oSÔ`]ñíí ¾{{}¿Ñ|}qêü¿Î¸,ƒ°¾Ø33+Ð//ÖéÖÄ.r¿¤/àÛñ:Jâ%¸]üÚuÄÌa4Á€¯}¿äoÀüGÊe™†Æœ¯¿:÷WlYƒû1’ZË0~(â6¢ïÿqõÇóGÍõuè<AyGHã ääf¼ê{Êí°[gð0-›­_Ña†Lˆ Á‚0`ÁƒÆ0`‰˜ ·áÍúBýÙ{ì²Ã3,1b"1‚±b±b+V1Pb ‚ ‚ Æ1Ÿ¤c*ˆ”!ô?@.ÁvØ.ƒ}ƒ ÔÐ-ýMÔ/¸`¹âû ZÄòÜÀ\y^«&D`Á0AÄAOÔæLŒ ƒ Á‚1“,°Ã11¸^™éÈÊîþp°AVÁzD_
+·ó]vëäà‚êW¨.]Áx…ÜÁvàk]2Öµõ"
+Ø/ ¾ ¿èÁxFG(ê`Z~>`¼Bî	Cìq™…÷}){xû}À¹ø‚ìüqõ…Ø.Jg /âˆþo½}À°/X.â`¿h/—ðñp¥Åõ"
+ø…æ‹éï…Èä.áäGÞ°[¾ÛÒØ.à¾`^Aq¢
+ú§Ö÷¢R½šw…î‹«i€^¬tíA{°.€¾wlÔ¼Ì3ºÔôô?rçrö"
+û´^ð^.…+¯
+¼øèk±æÁy„`_¶ˆ+à|ò¹_Zà-ïH]Áx€·n0.Â¥÷¹È-Gê…ÅRæˆ]g(”:û. ¹ê‚⑉º9‹Öx_´åp/ŸÌ-Âä-Â4€]ÜûºtèP¥™P̘#0F`ŒÁ‚3f̘#0F`ŒÁ‚3f̘#0F`ŒÁ‚3f̘#0F`ŒÁ‚3f̘#0F`ŒÁ‚3f̘#0F`ŒÁ‚3lÀŠÐXIh@´{Úð¾£ÎA~+Â1ede2;»vu;zÐwÜA€»ÂØ/UµO±ú¨‚½È‚¿%ví÷2QÔ/fW!g`¶rþp¶AWˆY$ž!yÑU,UÀ-†ú}¿ #’_ ¾!u…÷‚ñ¼þ/P]Y$ ˆª0AUÁX‚1‰ $‘ Á‚¤?Pvª}Ö=œk\ò ¹Âö… ¶ÀW*|áe)°[ÞÖ¸. ¸¿ ]AnGdlo¾šl
+«¶„‚ñAhŒÖ´…ðžY4º°ÔjÈÉk´l;ä`.àŒÀàn€^!p<À¹Ü€°ÃÍŽÚ?ÖŒ¾°»‚ù~?Ty=†Ñ“ºPßT¶À-àÖ‡‚À°-Ó`º"ª^qö¥À^ ¶O¬.ä©/…å®AnñkmÂÜ.°]{BØÂø¢ê>è¶ôÜ(]¯`]‡ègH.¡rˆ+Ý ¶6‚ñ£Ü¡dñâ‚ü¡󰞘ET±ðņ,Ë-š+£0-áp﯊ê{¾{áET¾H`*­î þ8÷ íx‘’I$I÷”%I$‘YUUYUUYôÀ~Iò… .BþÕ}Úë]a|Áai}AzºBè]¾ ¿">л½À½É´zp XØ7yVßÀ/7X*õüa}Au+ˆ–Ab…Òä,Dæ%õ¢
+Ð]Ѝà¸6	>p¾€°x´)Cï
+ܐºõ#‹òÜ‚ôuûæ~ ^!bZöÝB÷wy¢®¡r€¶	>Ê*¥°FCÀ³è`ÁƒX2¦aeadab­‚À¶Ƨ¸-ö¾ ¸ïÞ`¹ ½€¹GìP[#Ò~lD¸/ ¼AUlŠ]án<s ½ñõ…È*õ`GØÍâí0#ä¢èx_շ죙öàWp‘¡¨_Xx§dh.À]Ð]À¸îáEÌ,âæ|üáeúùVÿ,¥XP{¾=Bù€µ`,À½Ah†£ ³"_L}Ð_@]Áv¤ä/˜-‚ö=ß ]Q«jZ"öAj<€ºØ„|È‚½UOlÜÔ*Ð#æQu`½/”h.$}ê$õð^uòæP¾@½¨ª—1”8Ì[G³ý ZÈ^`\†A`nÔJŠéÔ,çtsí°_gØÅ.à¹Ä{‚ðaÞÓ˜ÞÜÄ‚éíõãî¸.vعV|£û‚½kå{›ÆÎAh,¸^–ÞïB^øóh.tU±,B®ÉþˆämI'öÂÈUàà¾ê[¦¡y…¯ öÈ^!|o$~Ôlœ.p,à‚À[ÐyF‚èxXx[ÆÀ½Axâ‹Ü"è˜ÐY‡À|ƒ€‹À//¥"ú&¦™ïi+O0¾oÒ+ã…bÁX³e*´sã| ^»^ôA]áh$öw_ IÀ[~«ÚDqKõä|.Ap@¾ð]‚À“Ä-ÂùO ·AmÐØ0-hÐ.ï
+-<û„ì!{‡ö£¨^~p\íD`/EòÿT/0¾`¼âøÇ|jÜ-èÊ´/p^À¹£C&‚ȍ‘l°[…ZïÒ9Ÿ]ó…и,`«ÓÈ*ê^cöÝò	0.êì;ûÂà.èóذ.“¯L…£Ö!uÈ^мÜ/GÄ,„`YJŠX¢ólôÀ*à,…„¼‘{´Á{p§@¾¡êÞ:À‹µ® º§iâ _ at .±çpü”yp]¬.à/Gx\‚£€¹çàE#¼/ô£h[`½R‡ZW²~°´è4^ˆ‚°–‚Ð\ÓîÌ.ÇMPzÈŠ™F&óI–Þ4(‚µ6À¼ÐUîÐ]BØ.ð´p`X36ù¥°ZÌET°GLªy{û¼|ànà.9¸ÛZÀ0»Á°!dh/ ^Arˆ+Ah,ê/p]¯4^ ·æÜ*ܘ]à-Û‚ùBÀ^!'¼ìà\ww`. ºà]ýdA^A} ¿0/Pì”^!w„m³ÖÉAp$q0/DA[/0½ah#°^¤UKÔç°Góòâòu@­‚ÄUKÚò…â4:µm^™`À´ˆ_ X}rÅœ…š´Ç± ´à.Ѩ~8ö<ˆn+À,¥E]Bý‹`ºÁw#äãÞáuET°,à;‚øƒÔ°[…óìÀ^ » ¾Ÿ .ð·RÀ/h^u	:x…ßêò…È^°.uìKtp°/p\…Îáxá°£À§’.ì))^!w…þº}þB+ýr¾ ³Ý±Uw½Ñà9îÿÔ/W°/P/’44îöýÑ{‚Ð/õ"
+üx÷<‚ñGÄ‚ðÐ_°,RÁ¶áW'ÞGº!nl at W=ápÔ‚òiÙó¶cO6áwøBÀ¾>» »µäíÇÇçÞ *ü °z‚ÀApäÁrÒ騍Á1= ´õOìñzjí”
+ïÈ^a&"ª_@^P#`º€”þ.äŠp¡ %	?ä
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ia64-4s.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ia64-4s.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ia64-4s.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,33 @@
+Machine (P#0 Backend=Linux)
+  Socket L#0
+    L3Cache L#0 (size=4096KB linesize=128 ways=16)
+      L2Cache L#0 (size=256KB linesize=128 ways=8)
+        L1Cache L#0 (size=16KB linesize=64 ways=4)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+  Socket L#1
+    L3Cache L#1 (size=4096KB linesize=128 ways=16)
+      L2Cache L#1 (size=256KB linesize=128 ways=8)
+        L1Cache L#1 (size=16KB linesize=64 ways=4)
+          Core L#1 (P#0)
+            PU L#1 (P#1)
+  Socket L#2
+    L3Cache L#2 (size=4096KB linesize=128 ways=16)
+      L2Cache L#2 (size=256KB linesize=128 ways=8)
+        L1Cache L#2 (size=16KB linesize=64 ways=4)
+          Core L#2 (P#0)
+            PU L#2 (P#2)
+  Socket L#3
+    L3Cache L#3 (size=4096KB linesize=128 ways=16)
+      L2Cache L#3 (size=256KB linesize=128 ways=8)
+        L1Cache L#3 (size=16KB linesize=64 ways=4)
+          Core L#3 (P#0)
+            PU L#3 (P#3)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Sockets (type #3)
+  depth 2:	4 Caches (type #4)
+   depth 3:	4 Caches (type #4)
+    depth 4:	4 Caches (type #4)
+     depth 5:	4 Cores (type #5)
+      depth 6:	4 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ia64-4s.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ia64-4s.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ia64-4s.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,12 @@
+BZh91AY&SY[Vô¢ !¥ÿð(Î?ÿøõo^€ÿïßð  € jø`_ö„[ÆÚ€      ãC@ѦFš4ÈL 
+ 4È	56AIµQ‘ˆ1€ b@  
+?T"ž§þª¤  &É€  	€ Œ	OISÔi@ €   4  Ð 
+F™hÓ 10@ 4€Ó 0&@TžšCLQ‘‘”õ=@
+4ÐÐÑ z&4SÙüI$}!òÈzÃçüà Áî‡ô¿ÏsJ=ïÏèÁ=R	é!PNN‚I'rH””¨‡9$‚nÝê¹"	ØîJ%Ì\–cÀ$’,ÂDÉ,îÌR&ôÁÄSbh¸w$’fwf§²$‚Áª!˜@‰v`áÈ&p …,+F%“"äIŽkR9Z™ôc ª¢Âª¨Ì"2!‘¦(½‹–˜•ª•H«BÒŠ(¢­M ´ ´ª)KKJ¢Ò”ªJJ ¢ÐªJ5*Š…]dhP—$3•Zi«ERƒM–Ô€E¢ÀŠhšdÊQƒ=äY|“Z^“V/ieå´LÉ$l”D7BÌI"‘Jª-%(‘UE	T‚))üw&©²}ÔþgióÀï¥Ï$’ImHBBí!r	 ¸;]hg†…^AxhQ?¿kÖ¢Þ
+ÉÌf>‚I#ò‘r!ãêí±’ÖmˆãNštÚ¬ªµ^¹fH{ð&D’0`9ç{[•ïkUïW¿”à3Æ3kklýéŸ:ªäÝ­ÙwwwrK.ÀÓJ              Bffd™™™®ˆŠÊ"Š–²"ªDUHŠ©ZBH­‚ÅÊ9)vÝÍ †W€È4c$ÁM2ÌÌÊ!R(ˆ¢Š"ª"¥J•@îîäU[¡VâI,2Û… ÎfÃUz¹OµÜ•ä$‘s3ad„‡£n˜ôY#^ë_Upós¿ÎÅD(²QJ%¢†FS¢Ôܐµ$$:É$Zÿ”~AEø'"uÞ÷0|3á‘ðCkÞ/2O†|)yrì½yYªÊ„„¢SJººª®w‹o]j£Ã%?—ͱû²¤=èKIGq$GµLëqÙ–{yMg¢˜•T›H¶V\!zWÚŨI+Z	j„EU®Ú”÷,¶“}°¾êcýGÆŸ!Ð<Æú*!DTPýc|äãêU„‘Þ’$QŽŒoÆaÒ¶k±ii¼Z,¢¥*©3G¦Å¢DTûulYjå¼’FfüÊ$FHϸ¨Ý%†$çy‚£5­h±$Šœ*eärÍŸS.%ö˜½²ÅMôu$²h…¡U%–KMéÀïð:Ž4TBˆ¨¡³S%:ïÊ,c-Ãqt子ÈFiŸUó„Á‘™‚ˆÎŒ¹^ñΤK”‹*ªDب¢Æ‘U"“:‡OG=21yMÍ«•¬·17Òn¢¢EE
+éËvû¤â8±KË¢­%ª*	Ê2Tb8¯JeRœcLíji ˆ°’qL¥HªIt
+ËHÙ³v«Öe±Œ3Ú e•…’eKdI#qÞD0a‚‹+A¡³ú¸øl·2ý ž2S!LÿMoà%çü²š§ª¢YƒEÐQ¦òÍÍc€—œUæ©ê¨‚`ÑtE)¼…3sXà%çyªzª …˜4]Jo!LÜÖ8	yÅ^jžªˆ!˜Îhµ¬9€C±âvYiáž.Ë;3¹A;£)IU¡$íÄËR¡hDv±¸‘FÆX½ï™ZÈË9¨›¯¿Y=u›U4²¥MfÍ+„½\ÜyfÖÓµÔUU(®ý¤’.Ã^òÅ54,+ª«iR´U㌂Õ/{UÕ,Îòé$Žñ
+YT¢šfk‘ãN&CL´g¬¶Ï{Y™TõüTøåŸ-Oߏ¯ý•Å:Ú!qkò-õWûû>_^#3°5¼Ÿ)»Ü¦N/÷ïß¼búÜšs|_8s#„:ƒð…þn½‚ÁcPÔÔŽ’=gþ$‘Þš_ëùȇÐ=¯ìvo>¿FƱ[àúìI#´;Cý§ þá¿Û´ù$‹³êЈUŽJ„‘‚!p¨˜ˆ’7…v—ÿ:ƒr&
+aBHÈ!^Àï’¤R©G>ÄŽePBÛ³ÙeV]ñd±•lp
+2˼<|rˆÔ2GŠxpÁA–¤’(8ÂHâáLƒ½GÞêxrëëxaFH®‚I‹‘½7‡!ǹcÆwÏI$ŒÃAÌ(ðBHÔ{ƒ€ÿŸÂI#¸!AÙCÑÒ{˜íîr‰ÞÐä˜yУ ;¡çíîÝnî$‘ÖûˆÝ"Hö¦AHi{ìI##_vß÷ŽÚ†ˆûÍÒkêeÃÓYÁãåÝਊ#ˆ:‰$dG„=Ò8™ö¿Êtq=?c®ƒÔy„en	"E‰$x Àò1| õĶÚ$‘Õ‘áG"IwèóÔ$Š‘$Z$‘`îöÉ$saCƒ@ßÒ+hI"ú	#hIÉF}%$’/„‘–ŒÎ¤Ð,Gx48`èÌ:bD‹vã„ÅAo°’G²HŠ‚yCsBX4p„:¾Er
+H’5a$l,"IÿÅÜ‘N$Õ½(€
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ppc-4c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ppc-4c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ppc-4c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,8 @@
+Machine (P#0 Backend=Linux)
+  PU L#0 (P#0)
+  PU L#1 (P#1)
+  PU L#2 (P#2)
+  PU L#3 (P#3)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ppc-4c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ppc-4c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4ppc-4c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,9 @@
+BZh91AY&SY,v$˜ ±ÿ„å° @çÿôzfÜ@ÿïßp  P>Ñ•` €R™¦‘¨ýSÐCM4i„#FŒ¡‚P&¢„ 2    Ì`&F F&&	‚biÌ`&F F&&	‚bi€T¡˜ A2†ƒG¨i¡£#mC(x§Á<½¿Æþyú.ŽTïæ¬ê2u¢Žô4°¡
+kÇÎvò,j¦Wtëäl« D(BB^Å[bªâµcÏ&*-}c$/QBD“©
+"J¤r7ø‚Õë)HÓ‹GÔ}ž‚ëõáb´má/»Ä¶Ä6¡¥
+˜—ýYôèãêÌTÃâ „²Fk|ñxØ>EÅ­°®À¦‡ÊÖ+¨[¦D!f¢uOA„5ñ
+Á gpCÁÁ@SMVÿ-OJTÀºZè–ºKÓм•ÃQÑÅdIh(E­Žbì¼F"’¨A¨ˆÓ£F\³io¶Ÿ[¿5óY
+û¤-ÄÝèß*X¶1×Eæ1CmF¨ª'Huév­*“·ÈgN³u‰æì|Áš€ÿyàä‡H'%;K"ˆ ÚK˨xc…ŠzD€d[6Lº¢¨L.<w]„œš§YäZÈ}“É˹ºJ©wUMlG•X×7PC?…Ù(U33›Óª'nùÅEî·Ü8ý3Ö€ŽÊ‰,}°Ô¿x½hD4[!XÏS¦•¦vÚè&áQ@Ñ£wÑ™axúvÛÖ– Ì /]|ªˆËxQ烮îÂ7žÂt‰ž-ƒÛ:#NŒØƒXF¥¦[2¡ü$:¾ïyâu•¥tVEêMÖ§z<¼½E2ï3UԪ˚°¼"‰¾¨xk–ÒªN²¢DU”—A—‰Öƒ­ò«ÔC’6S<ë/:o·1¨˜–Z¦ÆKÕ¿:ÝíH#{DgÐ j8÷}}¦Ëôö–³áý‹9`dbr¾~?õ*‡¯×ìð§³>͏>]”¤¥x÷R%£ý¤b;{â´¥)JP²·óE¢\“^[v÷D§‘´ùЗÈb†93!Á
+_»Ñ7æs¡åíÏ¿##VFxãòB¦½w	›‰VhÓÆ%¼¸
+ÑF4¡n÷HæÑS¥
+ÓWM#tG‰‘µ&ŒèÞ†Fô,ïIBgfÔ†Ëö•0ŠÜ†ËÉØU<ˆÌP:ø˜ôjÛ–G’iº‰IFÓtœ:²IÙBzOJ$ÿÅÜ‘N$‰& 
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4qs22-2s2t.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4qs22-2s2t.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4qs22-2s2t.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,15 @@
+Machine (P#0 total=16777216KB Backend=Linux)
+  NUMANode L#0 (P#0 local=8388608KB total=8388608KB)
+    PU L#0 (P#0)
+    PU L#1 (P#1)
+  NUMANode L#1 (P#1 local=8388608KB total=8388608KB)
+    PU L#2 (P#2)
+    PU L#3 (P#3)
+depth 0:	1 Machine (type #1)
+ depth 1:	2 NUMANodes (type #2)
+  depth 2:	4 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1
+      0 1.000 2.000
+      1 2.000 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/4qs22-2s2t.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,18 @@
+BZh91AY&SYãxÝ 
+‡§ÿð @çÿó?ç€ÿïÿð    @ ¨`	<oµciE£@Û†(  øæFF††CÐÈi£@#&@0€`€šM52˜§¨M© Â  4h   ˜M#C!¦ Œ™ €I©d§Šz˜ÑM3ÀCÔÓ 	´ƒLdž 4ЭQ ÐF†Œ€
+11
+44Ð ˜
+”MÑ‘‰O
+yCÔò ôš m ='”ùþ€{ùƒñ
+CŒ÷óƒ…Eã
+®£ÕªëZÖµ­Tò^qÐ̤ˆ ,€°AÏ„~¢ÈÂ$ŒÜBCš)ÚO9–í¶û•QÍÒCCEšÓ/-4ÓabdyŠà¦,²Ã83ˆ0ˆ*¡ÅPRbŠF"Y,lo„ñ–‰|±´—YšŒozç|ځQ%‰IT 	# P°ˆ Œ,ˆ¸7yBÛ%ž¨täC.òiíûw<x»µ~ ×6ôÄVIý!)%$™º|ùï`öÒsçï²øogßá•Ïý–êˆ7ˆ9А‚Ó'^ß³gzÞG„†]ˆÕ¿·­ºD®=0îæ«´…wªAÞÛm§;ã†u
+y qÓ}zòçÚqÐ5~‚Ð­°*…Uxê•DTED{á¦Óc
+J…kµ¬—,Uê÷n5WB׫RÞפ¤ºp†Þ À(6ƒ¶O^0ƒŽ³”ma…³ïòôÛNÝ¡0	†Z4ÒÚ‘aVVfwww¤C$ËŽîîîîîïkh^÷¾«Z×Ï5$“¡Ô$Ã¥(RD‰_[V—>g¯£ç0Ë=ÝÚxŒÈü^®|¼ºÿu~¶¼‘QMZÑ@vöUQQU·ˆDÜ3‡(RD‰ß~Ë)ë~ÜݧÏ÷̈Û#	J}Z½3ùz=Gч¨ì=IåTAÆ ñoå1§>Õ¢`¢”)3ˆ*µXR+Pý­!À,³( :̸K,«Å!ðíñ˜jաפÇ}à ‡Õ²V0Öy4BÏU €Y&{ËÇšŠnÈ ©áh¾¾')YgÒˆ<$ïgÕµï–4êA fñ.™ƒv¹kÙlæù×z¶k»åd´""ųÉû!ͯÓ‚:NœóIZWuj­Wˆ0&9_£@Î Ö¨_V0Ž‚ÅÄJtƒz‚3—ÄoGg/‰AeÛ ÎêoÇ8ñ €l‚È"°­¶G: ˆmÇ•ºº¦ŸùŒ	P²¦kIEŒ¸Y˜n¥•ÅË5±,ªëznÒ—fi- FÁmWUmžÎ‚"%ÀNHÂéšbUEº.0NŒ?kžiØqøJè¨ %|CHV½3Õ(ÜkLưô˜dZ´fû7¿ö¾Iò@ù¾v4À¦˜+JÐøÓåúq½ï}±;ºº§¥xV׉ַ'QN°CºÕ<Õî)¯ØÕk¯sj²	FoO&ʱ[šîFHk87t|>—̪_ƒ`1
+ç´i1 %–þ8â&XÐeËš8Ñ‚¼
+²Èë«,&h¹1}‰°`ZWl×Aª4ˆØËXÍ–Â aaó‹^6¹/aÕÊ~ïVV¶L»6—âc†R¬S
+gªMëVà‚¡ËÁ[G§i®Ë:ÈwüIï¨ÈÞ…paAV6¥MÕKüƧ/›é„Ç&ñük>±3I$¿†÷"¿Cî±KX™OWü+ù:ù
+GØ¥‹5µk
+yºáE„âB‘ØØ·DFKómòóLŒƒ„Ù±WrlÞÓšVAœáú¤à”Ø}e2ª=ÍÇ<mÑ‰”¼ÿSÀ¿–ržóê’v擊e8fYÝ<rñ÷-7qvTã-8áY9röàp5…'ÚQÛ’IPÈÒÐ1Èԁ)¡"É2%°ž)†f‘¡O!‰”ÓT&[wˆÛBÅ">Í#Z‡d©S9gØŒqš¬TõkžG†^¼ä›O]$ž¤Û“ÃHƒÿT®ù$˜Î¥ ¬k’I°Ë÷ð;ZVÒr”¤NicœAWŽ ¶ÄÜmš”ÐáÄÀî’IsΝv§¿¶ å´æãMû<Sqÿ%ŒŠºJmF\dÓÍ$’»£¡vwq9΍ªÎ1ã)œàÐÆæX¤S„©¬:ɱ÷&S½k®O„^ ©½èV~ÔÙ(bNë¶â=acß2JŒžc´sŠE"h°œ";BÒm3œÀ’æÇ²yÓGtwÚu™P*qÂw0ãHñ$‰cà{¢ãaª ôlÆéA鉋YöÌì:äo.\å;:\êˆ9ªüÀQ$ŸƒÝTaI7³îã䛢
+v5›MYæPĺñß*Î Í–i$õ–É$—˜Ï•:¢
+=1²pIDBÓ¬éd’n`j£ïtâžs-¤ç"'O`®)EO^;LŒAòˆ-­:”:I$­MIì”ìÀ¤È
+eI´ÕBÈ  €]ÉáBCà?t
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,174 @@
+Machine (P#0 total=4194304KB Backend=Linux)
+  NUMANode L#0 (P#0 local=1048576KB total=1048576KB)
+    Socket L#0 (P#0)
+      L3Cache L#0 (size=8192KB linesize=64 ways=16)
+        L2Cache L#0 (size=256KB linesize=64 ways=8)
+          L1Cache L#0 (size=32KB linesize=64 ways=8)
+            Core L#0 (P#0)
+              PU L#0 (P#0)
+              PU L#1 (P#4)
+          L1Cache L#1 (size=32KB linesize=64 ways=8)
+            Core L#1 (P#2)
+              PU L#2 (P#2)
+              PU L#3 (P#6)
+        L2Cache L#1 (size=256KB linesize=64 ways=8)
+          L1Cache L#2 (size=32KB linesize=64 ways=8)
+            Core L#2 (P#1)
+              PU L#4 (P#1)
+              PU L#5 (P#5)
+          L1Cache L#3 (size=32KB linesize=64 ways=8)
+            Core L#3 (P#3)
+              PU L#6 (P#3)
+              PU L#7 (P#7)
+    Socket L#1 (P#1)
+      L3Cache L#1 (size=8192KB linesize=64 ways=16)
+        L2Cache L#2 (size=256KB linesize=64 ways=8)
+          L1Cache L#4 (size=32KB linesize=64 ways=8)
+            Core L#4 (P#0)
+              PU L#8 (P#8)
+              PU L#9 (P#12)
+          L1Cache L#5 (size=32KB linesize=64 ways=8)
+            Core L#5 (P#2)
+              PU L#10 (P#10)
+              PU L#11 (P#14)
+        L2Cache L#3 (size=256KB linesize=64 ways=8)
+          L1Cache L#6 (size=32KB linesize=64 ways=8)
+            Core L#6 (P#1)
+              PU L#12 (P#9)
+              PU L#13 (P#13)
+          L1Cache L#7 (size=32KB linesize=64 ways=8)
+            Core L#7 (P#3)
+              PU L#14 (P#11)
+              PU L#15 (P#15)
+  NUMANode L#1 (P#1 local=1048576KB total=1048576KB)
+    Socket L#2 (P#2)
+      L3Cache L#2 (size=8192KB linesize=64 ways=16)
+        L2Cache L#4 (size=256KB linesize=64 ways=8)
+          L1Cache L#8 (size=32KB linesize=64 ways=8)
+            Core L#8 (P#0)
+              PU L#16 (P#16)
+              PU L#17 (P#20)
+          L1Cache L#9 (size=32KB linesize=64 ways=8)
+            Core L#9 (P#2)
+              PU L#18 (P#18)
+              PU L#19 (P#22)
+        L2Cache L#5 (size=256KB linesize=64 ways=8)
+          L1Cache L#10 (size=32KB linesize=64 ways=8)
+            Core L#10 (P#1)
+              PU L#20 (P#17)
+              PU L#21 (P#21)
+          L1Cache L#11 (size=32KB linesize=64 ways=8)
+            Core L#11 (P#3)
+              PU L#22 (P#19)
+              PU L#23 (P#23)
+    Socket L#3 (P#3)
+      L3Cache L#3 (size=8192KB linesize=64 ways=16)
+        L2Cache L#6 (size=256KB linesize=64 ways=8)
+          L1Cache L#12 (size=32KB linesize=64 ways=8)
+            Core L#12 (P#0)
+              PU L#24 (P#24)
+              PU L#25 (P#28)
+          L1Cache L#13 (size=32KB linesize=64 ways=8)
+            Core L#13 (P#2)
+              PU L#26 (P#26)
+              PU L#27 (P#30)
+        L2Cache L#7 (size=256KB linesize=64 ways=8)
+          L1Cache L#14 (size=32KB linesize=64 ways=8)
+            Core L#14 (P#1)
+              PU L#28 (P#25)
+              PU L#29 (P#29)
+          L1Cache L#15 (size=32KB linesize=64 ways=8)
+            Core L#15 (P#3)
+              PU L#30 (P#27)
+              PU L#31 (P#31)
+  NUMANode L#2 (P#2 local=1048576KB total=1048576KB)
+    Socket L#4 (P#4)
+      L3Cache L#4 (size=8192KB linesize=64 ways=16)
+        L2Cache L#8 (size=256KB linesize=64 ways=8)
+          L1Cache L#16 (size=32KB linesize=64 ways=8)
+            Core L#16 (P#0)
+              PU L#32 (P#32)
+              PU L#33 (P#36)
+          L1Cache L#17 (size=32KB linesize=64 ways=8)
+            Core L#17 (P#2)
+              PU L#34 (P#34)
+              PU L#35 (P#38)
+        L2Cache L#9 (size=256KB linesize=64 ways=8)
+          L1Cache L#18 (size=32KB linesize=64 ways=8)
+            Core L#18 (P#1)
+              PU L#36 (P#33)
+              PU L#37 (P#37)
+          L1Cache L#19 (size=32KB linesize=64 ways=8)
+            Core L#19 (P#3)
+              PU L#38 (P#35)
+              PU L#39 (P#39)
+    Socket L#5 (P#5)
+      L3Cache L#5 (size=8192KB linesize=64 ways=16)
+        L2Cache L#10 (size=256KB linesize=64 ways=8)
+          L1Cache L#20 (size=32KB linesize=64 ways=8)
+            Core L#20 (P#0)
+              PU L#40 (P#40)
+              PU L#41 (P#44)
+          L1Cache L#21 (size=32KB linesize=64 ways=8)
+            Core L#21 (P#2)
+              PU L#42 (P#42)
+              PU L#43 (P#46)
+        L2Cache L#11 (size=256KB linesize=64 ways=8)
+          L1Cache L#22 (size=32KB linesize=64 ways=8)
+            Core L#22 (P#1)
+              PU L#44 (P#41)
+              PU L#45 (P#45)
+          L1Cache L#23 (size=32KB linesize=64 ways=8)
+            Core L#23 (P#3)
+              PU L#46 (P#43)
+              PU L#47 (P#47)
+  NUMANode L#3 (P#3 local=1048576KB total=1048576KB)
+    Socket L#6 (P#6)
+      L3Cache L#6 (size=8192KB linesize=64 ways=16)
+        L2Cache L#12 (size=256KB linesize=64 ways=8)
+          L1Cache L#24 (size=32KB linesize=64 ways=8)
+            Core L#24 (P#0)
+              PU L#48 (P#48)
+              PU L#49 (P#52)
+          L1Cache L#25 (size=32KB linesize=64 ways=8)
+            Core L#25 (P#2)
+              PU L#50 (P#50)
+              PU L#51 (P#54)
+        L2Cache L#13 (size=256KB linesize=64 ways=8)
+          L1Cache L#26 (size=32KB linesize=64 ways=8)
+            Core L#26 (P#1)
+              PU L#52 (P#49)
+              PU L#53 (P#53)
+          L1Cache L#27 (size=32KB linesize=64 ways=8)
+            Core L#27 (P#3)
+              PU L#54 (P#51)
+              PU L#55 (P#55)
+    Socket L#7 (P#7)
+      L3Cache L#7 (size=8192KB linesize=64 ways=16)
+        L2Cache L#14 (size=256KB linesize=64 ways=8)
+          L1Cache L#28 (size=32KB linesize=64 ways=8)
+            Core L#28 (P#0)
+              PU L#56 (P#56)
+              PU L#57 (P#60)
+          L1Cache L#29 (size=32KB linesize=64 ways=8)
+            Core L#29 (P#2)
+              PU L#58 (P#58)
+              PU L#59 (P#62)
+        L2Cache L#15 (size=256KB linesize=64 ways=8)
+          L1Cache L#30 (size=32KB linesize=64 ways=8)
+            Core L#30 (P#1)
+              PU L#60 (P#57)
+              PU L#61 (P#61)
+          L1Cache L#31 (size=32KB linesize=64 ways=8)
+            Core L#31 (P#3)
+              PU L#62 (P#59)
+              PU L#63 (P#63)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 NUMANodes (type #2)
+  depth 2:	8 Sockets (type #3)
+   depth 3:	8 Caches (type #4)
+    depth 4:	16 Caches (type #4)
+     depth 5:	32 Caches (type #4)
+      depth 6:	32 Cores (type #5)
+       depth 7:	64 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/64fake-4n2s2ca2c2t.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,67 @@
+BZh91AY&SY-È MÃ…×—çyìþÿð5kF ÿïßð "ø`PØð € $ дšÖTbE%*’*ˆ|Ü  .ix      8:+Уp9Àu7Þ{ï­Àu»\ 
+ð|ïy6Ú©´³èî÷Â{«Íi³`û|=Õ«L '‡(ú/ïR‹4ªêo       px
+;Yp4     dŸãOõRŸúªª„ߪš4À#&LLš0	‚`#ÚFj¦¦ßúUTýBP €  b€   ª‚jUTz†€        4i&Љ$Ähh †@@  ŒšdÓLJŸ©=CG¨M h š€  
+’’S	M´Iš¦G¨yCõF™
+zmCÔe?oô ~°÷ ~¡KùÔ¿QK„ÊX™Kú….“Â%S¡: þ‘KÂ	•IÜâRê2x2CüU_"µD>²%S¥õÔ)bÐ%€—Ê‘JÁFâƒúqýCîýß×~¯»¶§/=Ö»å·Þç}Îûö=cØö=›Þ÷½½cØö=cØö=›Þ÷½½cØö=cØö=›Þ÷½½cØö=cØö=›Þ÷½½cØö=cØö=›I%Úv£î}; äå[›lšŸMY\ø¼æÒØÛX#9§!©¶vCAËgz“c,a}ÓM4ÓGˆÛ,u'cÊQ ÕGnp£0Ï™*wÉ>+I3»­»»vî–-‡s0N'¬Ð@„né¤QeFV÷gÎÜÏ
+Àª×v(„Š8c;¶ãݹ&áUïŒb×wwnÜNíѝ‡iág^S„تJ‹–QCt,Æ*DÄ­¦5m1«iCi[Ld«*Æ(Ö2U$‚I ‰V6o ‰V2UŒ•c6ì*ÆJ±’¬h$‚I ‰V2UŒ•cFì.c%XÉV77Ðd¹Ž’A$D«7ÐD«*ÆJ±¹¾ƒ%ÌrUŒ•cu¶Š¤PD¹Œ•c%XÜßA’æ9*ÆJ±Š5Œ•cI ’H"UÍô.c³Øvm1«iŒ¹^,Àû»m½õ÷½ï{Þ÷×Þ÷½ï{ß_{Þ÷½ï}}ï{Þ÷½õ÷½½ìúÞ÷¾¾÷½ï{ÞúûÞ÷½ï{ëï{Þ÷½ï¯½ï{Þ÷¾m’]Á÷s]wk‚%ž»
+¾v;v;]ó,6ÝŽùØí†Øa×6ª½á;®Ûo›m¶ÛæÛm¶ù¶Ûm¾m¶Ûo›d—pí¶Ú‰n,²Ád9,š;]–â2×e»šì·c¶ íÍ2HĈ0Ã0ÃI#0Ã0ÃHÃ0Ã0Ä’0Ã0Ã1$Œ0Ã0ÃI#3a†Øom¶ß6Ûm·Íwm4ÓM4øÖÛm¾m¶Ûo›d—8nîÃ
+¶Ûmóm¶Û|Ûm¶ß6Ûm·Í¶Ûmól’­±†»iÝo:úI%uêëÕ׫¯W^®½]zºõué$’I+¯W^®½]zºõuêëÕ×
 «¯I$’I]zºõuêëÕ׫¯W^®½]zI$’JëÕ׫¯W^®½]zºõuêëÒI$’W^®½]zºõuêëÕ׫¯W^’I$’ºõuêëÏnÙ׫¯mhï{5žÖ»çžyçžyíkZyçžyçž{ZÖžyçžyçžÖµ§žyçžyçµ­iç»víÛ·nē۷kmµ¡Öݶß6Ûm·Í¶Ûmóm¶Û|Ûm¶ß6É!†Ûm¶ù¶Ûm¾m¶Ûo›m¶ÛæÛm¶ù¶I\çQé»m¾m¶Ûo›m¶ÛæÛm¶ù¶Ûm¾m’C
+¶Ûmóm¶Û|Ûm¶ß6Ûm·Í¶Ûmól’¡:­&i¦ši¦šbIši¦ši¦˜’fši¦ši¦$™¦ši¦ši‰&i¦ši¦šbIši­¶ÒEu¬²&¬²~> ´û<‰¼ý‘ótô|±Ù¥
+çËŸ*y¾Xör«×—ËQêùöW¼Îò®#åën¯TâqŠ“ŒPœR§±ŪV<¸Üy££Ó‹†®7DÊj&cˍĎ2i˜¥Lƪn$q˜¶ŽŒ8S1q¸ƒÆS—È4ÌrãYj•.7DÊj&c=t¶y1ˍŮ*œ¸Öj&cˍÆ.5i˜‘LÄ"y°áLµÅcˍf¢f=	|Ò㳫ϵpŸ€|ç·´.q©á©Ò–x„	;ìß\ œÆ Ӎ´:}”åHOM«‘¢ÌFvà¾^…ñ⦜QG)m-¥´¶Š(©@¬âQRªQDmU3
+ˆ™mª¹…L´¶Ú¹…--¥´¶Û˜Q2ÒÚ[Kir…Ê[Kim1G)m-¦$Är–Ð*6ÉXˆÄb1ŒEQTQ` ¡îe»—|wïÇrɦ-YZ0j`Å–É‹-¶´Í¶ËQU*ª¬ˆÀUU"„UYV at P¨w,N{½ÑA †,–'KQ¢&Iaò‡ŽŽaÞñáJÔÆ®e Xd!hÅ©©‹F-X´ÔÖ… Ðê³%QÛos-¹Šíæ\s7wvÙ#%¢I(Z@ä^*“X{¡Uä¸êâÀ‹Ð±yÐbR¶ùˆ –QĪŠC{ò*ªªªªª")O$å•1÷d¾6hqÜAŽ|22Zâ›kˆúžáTDã*ŒZŠQŒE
+˝¥í=”Uêž´Ô¨±A`°QN±Ë1ÙÖcˆu
+úCάÖËX̱¦²Ó,e–Zi–Yc,²ÖZešc-a™mZ¶ffffffÔ@*AT‚(¢°ETQETˆ(¢Š0Kf͘ÃfÍdÛ4lÀås333333jÁ´fm™›ÌÌÍ–ffffÂ"""""¢ˆˆˆˆ‘DY™†ÌÌɳ2l¶ffffffÕƒhͲkm²`UVUTŠªª‘UUƒUPH*±c@6ffffffÕƒhÌÚ1DDE"""""‚"""""¢ˆˆˆˆ‘DDÌÃffdÙ™6IÂû€l%E;iZÖÛm¶Ûm¶Õ J…˜¹Ë”ãpÑË95pל˜R2‘…#H’’’’Â’’……%”,)eK|€ðUUUUS[YiŒ´Ë,²Ë-2ÆšÆkjÀ¯m¶ïÎrÛm¶ÛUe%A2ÒP¥%…”””)),,))(RRYaIJ–ËAI€ l⪪ªÄŠ	¦²ÆZe–Yi–2Ö™‚‘ @ ÁUUUU±­1–™e–Ye¦XÓXF,@ è’@UUUUUUUUUUUUUUUUUUUUUUUUUUUUU]´ÜֵƀÉL–Q”`0
+‚î’ª<ᲩVRU0þ$J¦CŠ•Ubˆ[$WñŸwÁïñæôÿ‡9¼‘è>2¥€ü@CîœåK°Øç*X+ØâêX+Ñ»©`<›ºí©ðÀá í€Ãõ[m¶Ûm¶Ûm¶Ûm¶Ûm¶ÛRI$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’I$’úÿC?BŽbŽbŒ"Óp³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³p³qÇ—˜O´Á`°X,‚Á`°X,‚Á`°X,‚Á`°X,‚Á`°X,‚Á`°X,‚Á`°X,‚Á`°X,~¯¯äÔ½¿kKÄÔ»u˜œKËËLN%ËÁ18——›N&¥Û¬Äâ^XdBP$È„&¥nHMR‹"šˆ&D!5PŠBª ™„Ô­Â)	ªQdBQÈ„&§ÂÈ„(¥*HUBK"¢ˆ¦D!E>D!E)PŠ
 Bªa…UøY…E2!
+("„"R×HD*©†ˆQE!š‚(B!E-t„Bª˜a…QÂ	¨*„RVý.‘Ä.]ÜéBåÆ˜E!UUpŠBŠŠ¡…UîtŽ!rãL"ªª¸E!EG”"ª»#ˆ\¸ñ„RTñ„RUW¤(¨ªHU^çHâ.4Â)
+ª«„RTyB)
+«¹Ò8…ˍ0ŠBªªá…¡…U\á…îtŽ!rãL"ªª¸E!ENÞ&¥Û¢bq//6œMK·_½®@	'Ô‰TýH•Nñ2ƒ?c‰óyöö뮺ù‰á}pG‡Óöèø}²G¤~ÐT
+‘áR<*G…Hýzí{•t¤|Q*œâ¥ó)|ºRé:N“¤ýà (  œ­–“mýI$ú¶Û~·ww}~îîúܸ™œç7½Uòª¾ëî}ÏÇú¿ï¾ŸO·Û_mïíÎsí™™öï{ÞýöØ`ÌÌç9½ê¯•UZ·»œå™™w½ï`@fg9ÍïU|ªªÕ½Üç,Ì˽ï{339Îoz«åUV­îç9ff]ï{Ø A™™Îs{Õ_*ªµow9Ë32ï{ÞÀÌÎs›ÞªùUU«{¹ÎY™—{ÞöffsœÞõWʪ­[ÝÎrÌÌ»Þ÷° @ƒ33œæ÷ª¾UUjÞþ—9ôÕÌæìïs—LåÓ9tÎ]s|Ío›ÞªùUU«{¹ÎY™—{ÞöffsœÞõWʪ­[ÝÎrÌÌ»Þ÷° @ƒ33œæ÷ª¾UUjÞîs–feÞ÷½™œç7½Uòª«VíÛ·nªÕ½Üç,Ì®÷·{ÞÝïlÌç9½ê¯•UZ·»œå™™w½ï`@fg9ÍïU|ªªÕ½Üç,Ì˽ï{339Îoz«åUV­îç9ff]ï{Ø A™™Îs{Õ_*ªµow9Ë32ï{ÞÀÌÎs›ÞªùUU«{¹ÎY™—{ÞöffsœÞõWʪ­[·nݺ¯¥ô·«œÝ™¿—{Î]ï9w{³[æ÷ª¾UUjÞîs–feÞ÷½™œç7½Uòª«V÷sœ³3.÷½ì ÌÌç9½ê¯•UZ·»œå™™w½ï`@fg9ÍïU|ªªª7·9Æfc½ïo339Îoz«åUV­îç9ff]ï{Ø A™™Îs{Õ_*ªµow9Ë32ï{ÞÀÌÎs›ÞªùUU«{¹ÎY™—{ÞöffsœÞõWʪ­[ÝÎrÌÌ»Þ÷° @ƒ33œæ÷ª¾UUjÞîs–feÞ÷½™œç7½Uòª¾|2ªªªùóçÏŸ>|Ö¾UUUUv«*UÝw{¹ÎY™žï{Þø A™™Îs{Õ_*ªµow9Ë32ï{ÞÀÌÎs›ÞªùUU«{¹ÎY™—{ÞöffsœÞõWʪ­[ÝÎrÌÌ»Þ÷° @ƒ33œæ÷ª¾UUjÞîs–feÞ÷½™œç7½Uòª«V÷sœ³3.÷½ì ÌÌç9½ê¯•UZ·»œå™™w½ï`@fg9ÍïU|ªªÕ½Üç,Ì˽ï{339Îoz«åUVµn×9­rÎs3.w}šÖîöÍç_MÎëœÎsŸMꪪ«V÷ô¹Ï¦®g7g{œºg.™Ë¦rë›æk
 |ÞõWʪ­[ÝÎrÌÌ»Þ÷° @ƒ33œæ÷ª¾UUjÞîs–feÞ÷½™œç7½Uòª«V÷sœ³3.÷½ì ÌÌç9ºüüüü|üüüüüüü¢¨ª¢ª¨ªª¢ªªªªªªªªªªª±UTUQT_Ÿ”UTUUUTUUUUUUUUUUUV*ªŠª*‹˜ªªªª¹‹¶Ûm¶Ûmô ù@ª|àU<xï~À$û  7QTUQUTUUQUUUUUUUUUUUXªª*¨ª.Íb ÆËL²Ë,²Ó,i¬f¶ºÅUUUUÃUUULÌÏBh:t(èQУbX–%‰w	$TUUUTUUUUUUUUUUUV*ªŠª*‹˜Š¢ªŠª¢ªªŠªªªªªªªªªªªÅUQUEQsUUUW1UUUU~ œEQUEUQUUEUUUUUUUUUUUbª¨ªæÛ6ívÖcZc-2Ë,²ÈÁ"‚1fbªªªªá‹¶Ûm¶Û
+â—J])t'IÑ¢¨ª¢ª¨ªª¢ªªªªªªªªªªª±UTUQTZHL$&bªªªªá!ë "©Ê¨*› 
+ï{óóóóóó뮺뮺ꪪªªªªªª®ouUZª¹½ÕWËÞ÷½ê÷½ê÷½ê÷½ê÷½ê÷½í÷¹žõW½ï{½ï}W½^÷½^÷½ïUU{Þõw½ï½ïUW{UZ·»œå™™w½ï`@fg9ÍïU|ªªªªªªªªªªªªªªªæ÷U^Þ”½)qKÙK¤é:N©³5¬cM2Ë,²Ë,´ÓÓ		„„ÌUUUU\!„>Ø ‡ >~&vÊZQE$¡kD¶ª^â·>yŠ×2¢sOCéDÎ`XRÊKháÞ[ow¼Ë8ûYëiÞï{eNÜ/BiÝõ½càÌ·32Ø^XRУ)Ê”ª­árÙïvо´›”—oå*«mábû™“S1ÂɶЧ%—I¼Öõ¹–€ð ‹!Îð 3œÌÌæûÞßd'ˆ‚0H’ƒ"¸+qDLYJ€n³çãqbZ…̱ÔCpÀQC€v ÀEú³pÿ }üºëÏÏÝÕUUUUUUUUUU                  ;œ1Ð    UUUUUUUUUUW[m·\m¶Üq¶ÛvÝu×]u×zªUUUxñãÈx^SvםI¹È\ø8T@ø>?¿`ûv¿XÛ_¡¶½6צÚôÛ^Š‘b$X‰#¤xT
+‘áR<-Tá쁡ZE98ÕNNj¦ÍU
+‘áR<*G…Hð©¸Ãš8rG
+‘ñ¶½6צÚôÛ^›kïá'Ù% BI
+¸²ËéO½K&RÉ’>ò—æ'æ)~b~b—rw)wNê]ÉÜ¥úô)~r~r–&)yO*^ä÷)yO) ¥ÄâG
+]“²–L¥Ù;)t)|O‰÷§ÞKVÂþS§º{©dÊY2–™-1_Êð—IñR꺉þ±? £ùþ§({j²*}àö}^Dz'Ì}Á=ÁVL¥“)dÊ_§î_rÆ0 Óßö¯Ü?ñk÷
+µû†ÚôÛ^›kÓmz*G…Hð©#¤xT
+‘áR</9½/K,²ËË,c‚È/ï%*§ÏW•]—eòDªv‡dÙÙv^éÑ;VÍ¡¨XI"„)íC¡ÁtÈ¡,,vê]‰ƒCø{®ëÁƒáâ½£˜ónÎ`¤¹@?K‹KÂ$}è8O$Ô:¬$̵ÛÎÀD ¡(/¨ ‘D3€´E0ã \Š
+©Œ7h¨†@BATµÆ€QÄ@P$'{Ö
+tHuð¬$Ýå»iY8Ɂ…@ÀÂÀÁE``aH`¢ŠÀÉ…!‘ET˜RjŠ(¢²r^NÀPX¢Š$áÍëgXzgna
+˜s‰(((,QD7JN PPX£9y8r	*
+
+&d’ £“ 0&2J
+H€Ù0à/,±„3º›%‘‡
+Œ.‚—¤ère•
+vÔ-mI» T§0uÚ¸îÀUÚK§~píâÙyÊLG¼W.dLEè2t 3Cæ›ÄŽÙKJ(ԍ•¨©ËVž-Åèšœr÷:O`Ò‚ ËB–[w¹œ'e¾Ïs7mžð=·œÛ¸y/N–ØÓ¾½ÈÏC2å)€°¶Âò–…œÌ#”ªÞK–ž=ÛBúж“^a/)U·¼ÅvΦ^dS302äpÌŽS¾îûÕë·ÚÒ@É}xÈúõ5ŒçËÎuÃ{zÉä1pC€ Øôƒé(~ {UÛŽ¹ïío{ÞÀ                      Àc       *ªªªªªªªºÛmºãm¶ã¶Û¶ë®ºë®¹ª¢ªªªª¯FÛm¼õ”~-=~µD°Ò±bÉñó›3ù€{Õ;‹ä˜½¯‰ž1®¨ E° îØZ«
+ìNŒ³½ÈJÊnÔ‘4Ôd	¿¶eSaʽä_Bú@w;ÑïÇPRÃIÎ\^ðR:i3ƒ°X)
+¿L€`WZ|÷Š8—+¦ HÈ2µužð ;ªœ<ƒÍ%O]WS&¹Åsœ#¦“Ü÷·}óÜê1ÉÙPPPPX¦Y~$ÅW~܇|®à'\‚—9‡l³‘Ø;ãä ;h =ªž^¾dJ¦ö{9{òåàö&Åúe··âI
+Äê˜'›Êr(±AAAªý@ÕSS™
+bÕ&€Žå­4(‚l&S™UœW.eµ®Ž¹Ã		FÐ.ùÚ©h6ÊPËn!9¡¨©1–£
+‡
+ ˜"U8ä4 eds©õ ﻯÄñe-(Ö°µj¡·2<x}-y»C0£o^’üÒR–´(ƒ-ãM¤>ÝÈZ«¾Ë„wHþ;A*NÌ粜áÒgräд °¶Âö–Ìå+p.[³½´¨úضÐÊ[Ir”s
+Ú{.30°·\†\‰‘s—Ž{%åñ¹•,™Y­VÌÖ÷«õ  0°Y~p;ðú]—Ô×߯O—§ÜUUUUUUUUUUU@                 à1Ð     UUUUUUUUUUW[m·\m¶Üq¶ÛvÝu×]u×5TUUUU]ï€ ß¯9>%#Qb™Ù$<=%<'¢;Áòê^qÅ×Jç ñë6eE{s3I!¼tA(>{gŠ×n\ÍzßIõ—µSê/!÷Ãë‚Ø-Qò,|	ò¶÷2û*”aQ„È¢ºÜ܈å2Ë=é$B@)á%Iï|¢’ic¹†÷•G
+¥šr ŠÆ*Ñ)€JŒƒÐ8!ßËÖÛlÙ]¡œ•4 š•+Êï¥Sv¨©8’…êéF«â£#s!€'5‡2Hª¢’rJrÙ}$…
+p	œÙu,)iÓ\Z)y©ôèÚ‰Tÿ"%SùESø"©ßËÇ“â©
+ñMAWvÚF/Òó8=o-1S{7;d~ò’––… –Û*O;¶©¶ÝçIí»Ûzô7´¥´;1ß[—¤Í³&YBÒ‚ÂÛ´w˜rÐ/.AËÐïm…õ¢6Ù•Ki.Zç½¹ÏwÌ=ëžÈc_nÏ‚HA¹hŸ5}c³€Ûdš3\ Aæž¹ð ×ãžývñèÞ÷½ì                      sÆ:      ªªªªªªª®¶Ûn¸Ûm¸ãm¶íºë®ºë§…UÌ*ªªª½m¶ó>UUTṠÞÁðž·i	Ëd9ŠòªC léJºQ¨YÅàs$$‘UUQ~9`$˜¯h\î¼ïMa½‚´ ÀT V±âHÉ ªªª®Œ'Ã,Wiy×ÒHlã"ãë ï™åb¬UUUì`€|‰8ªùÀ>$ÀÍw³бV*Š«Ü–@±#ÉUwp Í\Ñ^*¼ 
+Þæ6ÚÛiV*–2Â5;òs}$…  |„ì¹ Ï:[®.±¶Ö’2HXã`ÁÀu|ªœPI“Ö6ÚÛg£6K
+7©ÇŸHºÔ%Û£ÍS·†ª;¥C„’¢Í¶õ¸©bãQ]æ	ÏŽQæ±\¢•~'vs¤æP—Ô”¶eŒ¶ÒÚM榦íöž%ýî^“{J[M˜õàûÄßzäÑŒ¶P´ °¶ž9˜§-“”™°÷mëXÛOwxªrØj]½Þ°÷½Ó½ìÖ½å…Î`W9™/ˆHIt¾î»ÜUUUUUQTUQUTUUQUUUUUUUUUUUXªª*¨ª/ŸwŒ“µîપª*¦R¢¬UUUEDUUmªªªªªªª¢¨¢¨ˆ»6|hÛF¢m«ZcZmQ€]—ÖÜ	ó÷;/ó×—˜                   Ïpîä         È9  yo>6ÞŽ6ãŽ8Þ³¶ÌÉhÆïsÚmlxªw/J°µDë%g}rÆ…¦/®/ç;/5’ɯ¿®zªt\õɁcœ¢¹c\õž“OK1¢ÔÏGjÇlñXlbDªT¥$Î6ªfœo S®½mºšô³.pœ/H•LØBÀS À#»í/j§ëí/Eð_ÝUß)Àsà9W=üìÙÕ¯yŒ¹ÈXë¿WÒI
+3Ô
+³qS”¤”
+À˲Ho€îŠö0IҐ¤»>jžnU;š©á©üè•!÷¤ IÞ¿>ïÈ¢ËhA—ظÔÌÌxòðYÎrÌÊ9™‘îƒ~¦JKiR½„Ã-nÐ̵m¡¼N8ŽoIí®#5À
+A(+Ñ :`À ü!Œ¶P´ ¥é·œU-°ãIž&ô¬-´Êª¥¶cZ<àRØ{›»¼Cm…íŠVYÀ$ÌžÓ»Þû;¼;Ísӝ=»²íÇ·WÏé  > >¨ ·iõ-¶Û@                  =û         €o9ÍÝÝÝÝÝÝߟ¤Wé¥Y(YSyñÇ<U:Žz i8戚¶åØ ¨ ª™Ø î±PÐÄCwÛm¼c½ÁNYg]¹U)TÚѸ„’.â5¢ŽÉ%êŽK
+»¼®wuF¹U)Á,=eÂŽr¶¶œ°Nr°9#'<YÍ¥Ì/ŽUN\4@
+‚òGŽl¤¢[Í‚ÖUSÌUN;€y‡€ä
+wMu„ïr’Þó5Ùi©çFÐh]›-Ž@ìãÇ–‚Xg+’C¥`"À¢5¡r˜A2„£ ‰/á†DòË,تgY£GD„„U'$¨CUDc/8|¼Û_fv•ªñÇ ö{–R[@¨>¢ÂÛ-¶9X<÷m¡œyC®p‡=GxqÞžå³3r´(Äc-”--Þîiªª[f½Âs|OšÂÛpªª¥·-±œá˜½É©ëíë°Þ–Ég;À Ýë’¨Ã'¹ë½Ù›õÀÀõò½ïÏÓt                   Ïpîä         nîîóœÝÝÝÝÝÝÝç~ŸBøA,<òvI+„(€h€)™Õ¢a™E¬"Ùyr–’ƒA™B‘“~U¡»Ëé23:U4¶š"0¦€¢)X{¨V3 ƒ”¶žøy«·<Õ<Ý)Ûà¸<å™lláïÞ·¾’CÚ0!yF	¼ºÝ79ž	&Å*iÙÛyfï;õ·n½Àž óà	°	ލÅ·°THqü¿çÿz¤÷J£3ÝÌšˆ[ÿ©ËÌNÿî—¾Á{dx“BBM!¥|œ¼ÄíÒ÷‹Û ƒÄši
+([äåæ'n—¼^Ù8АsHiBß'/1;t½âöÈ ñ&„„šCJù9y‰Û¥ï¶A‰4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò…¾N^bvé{ÅíAâM		4†”-òró·KÞ/l‚hHI¤4¡o“—˜º^ñ{dx“BBM!¥|œ¼ÄíÒ÷‹Û ƒÄši
+([äåæ'n—¼^Ù$А“HiBß'/1;t½âöÈ ñ&„„šCJù9y‰Û¥ï¶A‰4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò…¾N^bvé{ÅíAâM		4†”-òró·KÞ/l‚hHI¤4¡o“—˜º^ñ{dx“BBM!¥|œ¼ÄíÒ÷‹Û ƒÄši
+([äåæ'n—¼^Ù$А“HiBß'/1;t½âöÈ ñ&„„šCJù9y‰Û¥ï¶A‰4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò…¾N^bvé{ÅíAâM		4†”-òró·KÞ/l‚hHI¤4¡o“—˜º^ñ{dx“BBM!¥|œ¼ÄíÒ÷‹Û ƒÄši
+([äåæ'n—¼^Ù$А“HiBß'/1;t½âöÈ ñ&„
 „šCJù9y‰Û¥ï¶A‰4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò…¾N^bvé{ÅíAâM		4†”-òró·KÞ/l‚hHI¤4¡o“—˜º^ñ{dx“BBM!¥|œ¼ÄíÒ÷‹Û ƒÄši
+([äåæ'n—¼^Ù$А“HiBß'/1;t½âöÈ ñ&„„šCJù9y‰Û¥ï¶A‰4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò…¾N^bvé{ÅíAâM		4†”-òró·KÞ/l‚hHI¤4¡o“—˜º^ñ{dx“BBM!¥|œ¼ÄíÒ÷‹Û ƒÄši
+([äåæ'n—¼^Ù$А“HiBß'/1;t½âöÈ ñ&„„šCJù9y‰Û¥ï¶A‰4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò…¾N^bvé{ÅíAâM		4†”-òró·KÞ/l‚hHI¤4¡o“—˜º^ñ{dx“BBM!¥|œ¼ÄíÒ÷‹Û ƒÄši
+([äåæ'n—¼^Ù$А“HiBß'/1;t½âöÈ ñ&„„šCJù9y‰Û¥ï¶A‰4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò…¾N^bvé{ÅíAâM		4†”-òró·KÞ/l‚hHI¤4¡o“—˜º^ñ{dx“BBM!¥|œ¼ÄíÒ÷‹Û ƒÄši
+([äåæ'n—¼^Ù$А“HiBß'/1;t½âöÈ ñ&„„šCJù9y‰Û¥ï¶A‰4$$ÒP·ÉËÌNÝ/x½²<I¡!&Ò…¾N^bvé{ÅíAâM		4†”-òró·KÞ/l‚
+°ZIUUy/6>ˆO4¿Ez”È ú:àÇTåË·[.,,„4Å:½™pÒi!i)%JFI!P†Úã™Ê’'EëÓKܸa™Ñb‹&ôÄÜç ï÷ÞšZQE[{k‰Ul¢Ûæ4¼â.V·*-·t< ËB–SÈfXc…%g-£îoǹlï7X[À=Ý5SÓœ´Ã3!v–…Œe±9LÊUU-ã–‡7Äö)5#¼3”ªª×†¹¬áÀåÉÎÀÌ3r½ï{ÚnWÍê÷wš½ lTz»Z•½X(é
+½nô	›¬Íî`(¡émã¶ôxó׏¾                    9          ÀóÈ m³ËŽÜv¥TÓ+)Î`ˆ¬%Ë&¢Xeš¶Ü0¥
+-v½ê¯i§R4”Þb`Ù.Ò†¤²–6[ccv–4h  XÚŽnŠšJ
+i¢‘¶Ë³XÑM5IMdÆbáœ$4äFw¦¹ùa¤<{§¸IÆ™`-d¡M DH©t¡*¤ceäÐ
+é«4 RU ¡MTÜM¨^$$—2o0ÈhAYÆ3gÖ±Ÿ"±ÃX9 áÕgY$ç’p=cB–ʝ q×N<&êéÐíƪc LÃ-ÅÀÀ…mÈ— ¬­u•U™´6$¨¤ƒ`Ò% Þ©]U²r+•¼r8«K.ݸßvçm¶ôí¶ÛÃv»¼oH                   Ïpîä         àyäZÖµ­là H>ð¤t=û÷ç¿}h                   Ïpîä         ¸9ä ¶Ûo‹·íÛϽ·–ÛgþO읺àÒ×cú{í¶ÞÇé8øÊÿ0pÒô < @`;€y ò ŸJ§ðŸñü(•O¸vpûœîOúìö ýgÅ©ð<>²*Ÿý z ü öÿÀ°ÈЉTèâ"U>ð"p!/°Ÿ¬Ô/`>à?@€X	à0x	Tî Ÿ´ä„Å,¥ŠYV&LOÂ>ÔJ§Ò0a{°‡ãÐ `> 1û@>Ú¢©þsì; ~И÷Ñ*Ÿ„%Sæ8ûà •'â û •©Ãòñòòäçg]}€>ÓñŸŒ‡Ì‰Tú‘*€p	ó€>"pðø€ v¿p%S÷@|à= û*Ÿº ˜øLÜ	€0èüÜ’%Sñ€bØð¢U>   ú ž(•N }$G`©©€ýÄJ§@Eû w‹ù€Àaó€Xûbø >H•O°	ô€~ 'À	ö:û°è	ù@>@O¬	âAEÝ©õ t÷€èýgdJ. {>@?"%S·¼%SUOî"U1ÀÜDª|@>  & àØîô xDªxª*ŸX*ž =‘*ž@ùΠ•NÀz ú ø x ìîÀÀ@T€?aÃæ ÿ’%Sö¢U=¢ôè€	õ }@Oˆ >•OˆØåQTô =QU_þ.äŠp¡ [ $
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8amd64-4n2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8amd64-4n2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8amd64-4n2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,55 @@
+Machine (P#0 total=67108240KB Backend=Linux)
+  NUMANode L#0 (P#0 local=16776592KB total=16776592KB)
+    Socket L#0 (P#0 CPUModel="Dual-Core AMD Opteron(tm) Processor 8218")
+      L2Cache L#0 (size=1024KB linesize=64 ways=16)
+        L1Cache L#0 (size=64KB linesize=64 ways=2)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+      L2Cache L#1 (size=1024KB linesize=64 ways=16)
+        L1Cache L#1 (size=64KB linesize=64 ways=2)
+          Core L#1 (P#1)
+            PU L#1 (P#4)
+  NUMANode L#1 (P#1 local=16777216KB total=16777216KB)
+    Socket L#1 (P#1 CPUModel="Dual-Core AMD Opteron(tm) Processor 8218")
+      L2Cache L#2 (size=1024KB linesize=64 ways=16)
+        L1Cache L#2 (size=64KB linesize=64 ways=2)
+          Core L#2 (P#0)
+            PU L#2 (P#1)
+      L2Cache L#3 (size=1024KB linesize=64 ways=16)
+        L1Cache L#3 (size=64KB linesize=64 ways=2)
+          Core L#3 (P#1)
+            PU L#3 (P#5)
+  NUMANode L#2 (P#2 local=16777216KB total=16777216KB)
+    Socket L#2 (P#2 CPUModel="Dual-Core AMD Opteron(tm) Processor 8218")
+      L2Cache L#4 (size=1024KB linesize=64 ways=16)
+        L1Cache L#4 (size=64KB linesize=64 ways=2)
+          Core L#4 (P#0)
+            PU L#4 (P#2)
+      L2Cache L#5 (size=1024KB linesize=64 ways=16)
+        L1Cache L#5 (size=64KB linesize=64 ways=2)
+          Core L#5 (P#1)
+            PU L#5 (P#6)
+  NUMANode L#3 (P#3 local=16777216KB total=16777216KB)
+    Socket L#3 (P#3 CPUModel="Dual-Core AMD Opteron(tm) Processor 8218")
+      L2Cache L#6 (size=1024KB linesize=64 ways=16)
+        L1Cache L#6 (size=64KB linesize=64 ways=2)
+          Core L#6 (P#0)
+            PU L#6 (P#3)
+      L2Cache L#7 (size=1024KB linesize=64 ways=16)
+        L1Cache L#7 (size=64KB linesize=64 ways=2)
+          Core L#7 (P#1)
+            PU L#7 (P#7)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 NUMANodes (type #2)
+  depth 2:	4 Sockets (type #3)
+   depth 3:	8 Caches (type #4)
+    depth 4:	8 Caches (type #4)
+     depth 5:	8 Cores (type #5)
+      depth 6:	8 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1     2     3
+      0 1.000 2.000 2.000 2.000
+      1 2.000 1.000 2.000 2.000
+      2 2.000 2.000 1.000 2.000
+      3 2.000 2.000 2.000 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8amd64-4n2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,35 @@
+BZh91AY&SY†%)Ç D“­ÿøVQïÿö=oÞ€ÿïßð@B   "ø`ÿ>¾ñöä½#MÙ¡x-{€h %$¼        
+4ÓA¡¡¡‘  hh
+4d  ÂbB)‰·êª¦‡ú© @  @     
+S؉ª  ¦        õA)é"i&“"dÓL€        Ð"”HÐ    †@    *HA4 ÐB4§´§š§Šz™22mC&Qé=&LÔ`Ÿž$#ô‰øÄþ_ÀŸP¤L‚[àô>¢ãB‡Åíù>?—åþŸ›Y&Ô|Ãh‚3TXE±l/¤E •PGz	M¶Ï“XÞÆ1Xµ•ŠÊAÒm#§iHé‘Ërõ‚I¬I5‰*ε«<«Z³ŠÖ¬âµ«8¤ÊfffU­Azç|ï2Z÷½É³;ÖeKÚ¶‰„#8˜˜BÖµ)jQJ)E(¥¢f&&&&&€3UU‚N1Œb°flÉÀQBm…,81ƒv0ÇFèÃc£ÓSZÞŠ h‰â$,RL¤I¦šÕV¹BŠ‚L&ㆥµ—òeJE3!$ÍÜ»»»»»’I$Sj °(”Z(¢Š*XM
+(¢Š-(Lò¨TD‡Ã°U‚Ib¢
+„‘BFEˆ€…ˆ†!Š¢¨¥U!E¨Pª%J‚AU";‡êXîXÌ÷]‹- ñ1¸È¡›=–\U
+ô
+Bù‹H òûŸwÏÇ´«GH´e1F(ÅÆ-¨Á°{€};ªªª®­UUUUUUUga¥¥¥¥¥¥¥/g…bÐÆ¥:òèmYBªÐ­4+l¡_¬©^Í3£ì¢Z‹Q-E¨–¢Õ&i¹¸x‹ƒ`ו_8À`P¹Ã_[Ö3ÝÝlö×NÐ:I¦yíkÞýoËv{iÃ!ÏÝQUK¤Ed"Qly…§¡I,‡)`ΤC³ÒV$R¤^½W߯’%fƒ9…'%G¡ÉÎ7zåà’ð‹Â‚’Iµ 
+àLÌ$¢‚”´ 	o®^øµ¯u^ö«ß¼`Pîàæ6¡õŽ ÀÀïcõŽÑÈh=—*ªéóͪå¸Ä:.{™µ£±Ë޾ ;bBvu6-šÙ勏x{ä¤s!Ì3øýBàýcaÐ7|\pǘö
+Gæ2a¨ô	넏|l,'`ûDHtˆ°ñ ë;ª©ØnI$’I$’Hô€çÇukZڝÆëQ®Ñ×í©MŒ±ŒcÆ                           
++ZÉ$’I$’<À¥ށ@e(¥Ôƒƒƒƒƒ†Ye—$Æ1ÌQX¸’I$’I$I&7¢«!Uœç7jªª«`HÉ$’I$’I#À
+ÎË™$„„„’IUUVœe–Qe1{ÝŒc  ­kZÖµ­kY`5@ª¢ª¤€PUVµœœ­÷LIo	90Þ-LgTQTfʪª‚P¦
+pÀ	qÖpV+1&CVC8tù,öòÆ4cÅíkpÁßÙXX¡J¢ƒM{3’I$.*I$ðˆù‹€r€O´~Eœ|â|ãüCð	øD°Ì5
+(~Zü^¡Ú>œ¾£¼îO§êÜ>üžU	E°‘hD‡œD‡ÉðÏŠ’ áîWÁ;u[%­Jª¥PÖ"B‹¯¾ðCùÄ (ZÁݝZgRD^Æ´i}؁tYƒ¾ßYÁƒ[¸KQ¬Vlî¦6ÕmïN)#\ëJj=ãuD—÷dzŒIab…(Š¶?ÐPè5œ!AB¸ñ4ã3žÒG2D2¾e÷Aí¨’v;6ÙÌ=·¾VêîáÅjF©­iîÅ^ªD‚ÒÔ®;àÏ=ÄîÏ]N1Óª¬0^gŒkGXÎí¸çø­mùIv
+'h×ohÝ•T‘»„¯Œ­íøIqR¢$)kKWUós“§~8SŽÕF-RÒ¥×™åjËZ¦Ê ŽÓY˜u¢sMÖˆð<*´¬¬ÈgÚ4ê‰,,P¥ÑA¡Ç°Ò7Ôª®®Ì4áÀ7kˆ·nQ0”2ì– Ò8Nü[·¦8Úéq/kÛ\|ôÒ…ÒÖªGã©T‰Œ	ZÕÓ4ë½øŠ¶rEU(KDeS*·}ueáŸõÄHtì¾é7xnŽÛ)¬—XÎoiȳ¬ uLg¡Eûøñ‰)*2¹µHlðãl°U¤/k^;±žXʦþY1Q|¯”ºËÞ^^Dƒ!S†'VñlL-,†/Ç]¹-÷ÝY^Û5-ynYy…ã<oª’Xë
+ß´¦ƒ1ï¸b°áuU¢$8 Ï[Ά£F°Î+~sÔßÊÕ[Y¿¥°‘pk6½VXbvá![•B
+¥xc:î	&ÖEâÑCÅ`Q$“Ìra¥§´•z’ƒ:¬]uëÖ;7댵¸Ð4š"CºÒ$×»=*×¶­K^ô߉fL˜Îת[+È“\çÈ,.8í[Ðmº"Bµ…iÔW@¸ÄÖS±ÂV1*
+#HÒ@•)́œJ9dH(^’S}¸iÝ”×ZÏ)j98a,¥«bg“[k}U
+T„¨4Ö·«±½È]m%bJ\”§FùmÉÍ6ËÍð7¼JÍâçÃ%dµS:Å’ à(jË>
+üô¾kVìZõC‚
+ݾbÛvåhv•Ž[Af³RÙh²ª‹¬ÖIv¼öS»l×S5¶’k˜a׏숐ÜNM8Ô‘¨g7G(6ËZ‘¦s£ÚŒKáQYJ=7ÉË«ž¸Ð]Ž~
+bKÔ+¦sAµ`ã7(¼ˆdÞaÅ5Ê’šÍ7u(’¥ u{‹Æ*”‰í0ç"Kg|•Ÿ6Æu2¬®8ÞÓ=ùn;³çÔÖûo½«-ÅL‡¤f8qú/n
+:†î'@~ôx#µã—nn}ùiäκ~°/l)ü¿-væ[Î\˜3?Òª³N³ …º‚Þ%Ƀ3eUZud²P[Ĺ0flª«N¬‚Bêx—&Í•UiՐBÈ]AoäÁ™²ª­:²Y¨-â\˜36UU§VA!u¼K“fʪ´êÈ!d. ·‰r`ÌÙUVY @ÿEç9Ã
+¤à6Td–––Ó,´ô
+%¶TFˆ5[œ«ø hø÷ëÄhºl«dFRŸðvjþ˜/+â˜PŸúÄ&à>‘û϶?hz…Éö°Þ¸ÌQ˜ó‡øœ,I÷D4°ª;'ÞU(X~â‡þ”e˜Èâq8
+K—4<†ÇòÌO¼?Q‚Џ=Ñú¬OtMÃQ7n5™•¼J†Âz¯¨š²"CÝ޲jT¹^Ië:‡ûaà0?)ïÅÅÀ£`¡ÄX‡ˆ¡Ò"CQØ:ÆePñ¢ÑXœDØLÌ°à‡—ëÐ\ÔO(‰!‚h'A¼Xn>ÏmQ¡˜üà’…ÄdPÌv™Š?Ìb	ƒ`’ga,N#€Ü(6‚Ã1q.ˆƒ˜–Œ¤öUK…ƒ€›Äl(N1€à˜¨Ct	”,=cÞ`žAB‡¤¡8‚2±Àd<ÇpPµ	‘’‡¹:Å´lZ5&ƒ†áÄJ%"Çï;†ó¬À›PÐ(ØN"…
+Á!î€ë31`Ôl4‡¨`÷ĵ„Á2ˆÔv‡À&è$-9U*UC!pÌL” =#xõ1æ'!BX;‡¨nÜ\d(P\x‡€õ2FѤD…†`P°Ž±à’t%ÄÈqðšÔK†BÁ<`Ð4
+Ǽ‡#¬|G˜ä/!î	‚\ÝÈ\6¡ÚuÌ`1cÄè<ŒÄè	`wwàPìÌ(r$Ÿ	Þ3‡‰Àðâf3
+ÃÑ!˜LĸÈ\wB7†ñÄ9ŽaÖ(ž±°ØK‚¬âI
+Qä5pë@ÈNÊ؉
+?y¼h(ê8	¨‘(RDyà6‡\$ö€ÈpƒqC™ñ”jIÈxG“Ä ô	ò$OHRI<˜Nȉ@ÔGâ09ˆÞ7‡ ïÀl'QCå§î9ãª=žÁ¨ñCAÔ:	CàbÀ¡â
+áqîÈi‘°Ñ甝¡¨ú†ƒ´u	B‘P¨†Ñ0:C!‚KŠÔ\øî5à3‡þ%ÎÔ|ÂÃÀTD†¢s%Á郮"Bƒ ÐP:Œ‚…x!!DBx\XxXd3({Çh÷â$5ƒA,#pK	q2¢<ÇÄGu‰`è`á!ƒ!¼$8ÅÆô$(PHd\hnP¸ä<Bã‰ÐQ˜¨С$24fၘ™Ü%
+„à?øj#¸v#°LÆð¡â(oDà„Ü=£þÆ!ÔJ(“¬þ1ÀþQ yJTRIí#¸æ!PHs¡;E†c°JƒAÜ9
+Á‚„(P¸õ…„ï¬d¡,&ñ,'$9	CЂC¼u„}´‰	ÿâîH§
+Ä¥8à
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,38 @@
+Machine (P#0 local=16468292KB total=16468292KB DMIProductName="PowerEdge 2950" DMIProductVersion= DMIBoardVendor="Dell Inc." DMIBoardName=0NR282 DMIBoardVersion=A00 DMIBoardAssetTag= DMIChassisVendor="Dell Inc." DMIChassisType=23 DMIChassisVersion= DMIChassisAssetTag= DMIBIOSVendor="Dell Inc." DMIBIOSVersion=2.3.1 DMIBIOSDate=04/29/2008 DMISysVendor="Dell Inc." Backend=Linux)
+  Socket L#0 (P#0 CPUModel="Intel(R) Xeon(R) CPU           E5345  @ 2.33GHz")
+    L2Cache L#0 (size=4096KB linesize=64 ways=16)
+      L1Cache L#0 (size=32KB linesize=64 ways=8)
+        Core L#0 (P#0)
+          PU L#0 (P#0)
+      L1Cache L#1 (size=32KB linesize=64 ways=8)
+        Core L#1 (P#1)
+          PU L#1 (P#4)
+    L2Cache L#1 (size=4096KB linesize=64 ways=16)
+      L1Cache L#2 (size=32KB linesize=64 ways=8)
+        Core L#2 (P#2)
+          PU L#2 (P#2)
+      L1Cache L#3 (size=32KB linesize=64 ways=8)
+        Core L#3 (P#3)
+          PU L#3 (P#6)
+  Socket L#1 (P#1 CPUModel="Intel(R) Xeon(R) CPU           E5345  @ 2.33GHz")
+    L2Cache L#2 (size=4096KB linesize=64 ways=16)
+      L1Cache L#4 (size=32KB linesize=64 ways=8)
+        Core L#4 (P#0)
+          PU L#4 (P#1)
+      L1Cache L#5 (size=32KB linesize=64 ways=8)
+        Core L#5 (P#1)
+          PU L#5 (P#5)
+    L2Cache L#3 (size=4096KB linesize=64 ways=16)
+      L1Cache L#6 (size=32KB linesize=64 ways=8)
+        Core L#6 (P#2)
+          PU L#6 (P#3)
+      L1Cache L#7 (size=32KB linesize=64 ways=8)
+        Core L#7 (P#3)
+          PU L#7 (P#7)
+depth 0:	1 Machine (type #1)
+ depth 1:	2 Sockets (type #3)
+  depth 2:	4 Caches (type #4)
+   depth 3:	8 Caches (type #4)
+    depth 4:	8 Cores (type #5)
+     depth 5:	8 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s2ca2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,38 @@
+BZh91AY&SY+Xw? oæçÿô*zÎÿóïÿÀÿïßô  @  !;ø`þûßwp :uC¬:ôƒÝð{ƒÝ»ïô÷‡˜ªˆ´®±k+,›h¼à/{À @       hCDhSÊhd›S=Hi£#i‰ M È14j= ÿõT£@#A 4 š      iˆÒš”Òhš 4Ð4 õÒ†€É   ™ h$ҁ$i¤j&š™¨ô€ †CÔ     A M&©ˆz™2 Ð Ð ™¤ hh   $@&†FMFL“ÑêOÕM4ÁBoT™4ÄÂhý$òö°°¼@  Nü,\üâb%Aaüßöüô1 ~ Ù *ÀgJÀýTÀúÍ÷¿rï\‰ÅÂ/¿ºØŽøé‡q+?H@?
+Ь‹"¬‹"Ȳ,€ÁWDˍÑA‹!‘H
+€u‰	$}TJ…ó>oŠùÀÕØ~,>#®G¶wV7#¥«Dˆ‹ˆŒ+vDÝVҺ겴ËËšÝÄ­&žãoqinf–ÔÅ©53vîö,g,#y“7e¶w»¹¬äVë@ƈ4A½‘É&É$‘+IÞÍԐÜIjIjIjID’Ô’Ôæe4`‚	7·d•$’LV-XšL'IÒt'vI$†Ý»Ý݁b³³1<—aî!È™˜™12714æµpœÖ®šÕÞµÍtÑ Bd!+B‚0RDˆ Í£Õ*¬U¨+-´«KJVDIR¤#Aˆ,‹$D‚ÈÆE‘XÂ"Aˆ¤bE‘dA „B”ÏMWT–cœ1¨i2ç3äÆLæ™(h:LbÈö½9]6Me“™ëà"Ž­ªëÆ1‹m¶Õ7!7&d b²dÒ(¢³2eQY™)&B(¢Š*!
+ãÕë:Þq™²@„üÈ’X ¤ˆ0ÒR at E(#Q3EH²‚ ±HB@`¢‰0@‚$‚RZ´I<ÀTþ¡RtCÌdŸuQñÒ¨^€Á8HVð	Œcã g9·äùŒ‡°Ë,l0ƒ—§Yç^ù+Êeü¹—†õfõfófó§ê”ù¼/ ú¡ë¯•ùZÖµ­ñëûYãjªª«ô;ó^ô÷¦Üªe2™L¯OÒÜ4Á`°X,œÿHSž¨§|ðeÎlyŒe¹-:¹A!ÚÞ^H»
+ÏG$f!fj„$.u{;E7ºgXÎ({ò LEI'vHàÖ8l.8ßl+
+¨PÓ‡o{ßÞ0ñT0DZÏMtg¦™åž™­‹dÜl/ç&Û^ÕUU_môÛ³ß1ÍòIîHD¡X'ýI;]¨Ê…û÷$!—FU)ÖÄ—ñ²‹*‚*ªÔAhˆ'}$C•#wÔ-QŸ$MύF+Mlfˆê¨dÊq€1QV…¢s{Åg¾$ž0²88ékUV¼Ûç—	ŬWVæÂDÚ‡j¹þȯƒ	§-/"¨:T‹`ÑŸ
+Æ1û™ŠObÃ1æ0‰ˆñ1ÿq˜¸ÀX|Ãú†£€ò<ôé~! îƒ˜õåÔéKø^þ7½Â·–í"ÑL]–í®ÍݶG³»ò@P¸G ê5#ïŽc(d?¬v!C¼pŽÂãaqä.;†caC ÔXb<‡à<„ö“Àf?”(¹‚0ªHHy"œ‹=Çbï‘v}Éží 79!ò<¿=ZÛm¶Ûm¶×ð@É ÐÖ¾i/å…Œ,+X–…&v §% UUU:ªª{Þ÷¼                               ÝÝÝÝÝÔŠI$’I$’=Pî *ìÚI%m¶Ûmµö{î$‡±H{¹9Ï<xñæzI 'd	O|@€óæùÚ¶Ûm¶Ûj^þ¾rL›UUU]Ë|xñãÇn»v{[m¶Ûm¶Û_P5®ãè9‡Šªª«À-m¶ÒÒÒÛm­ªªª­Xb‚&<ÒÇxñãÇŽyçžyçŸÓM4Ò      Ͱ8—µÂªªªä¥ $1×]n¢k­§Ûd$€5o[¤Émé†^…k¤d®… @‹+¤@y557¦ñ¦y}ù#êôŸVúFb’$5¯Ã{óÊI6úÿ×Ý]ÚÖWǽoóc]èûÃÛºA`²ÕaJ
+¡-
+ÝzíÅ$ü—ët“8PG»àáQ«n~––ˆv©ZVMI,Ç·73&°)ÓÉ¢S ¹‰Á¨êƒbØ	um±ű-p9–âìõn£têÚYfÛbâeЍ]™P‘1 dV}A’ $KxifjJO·ss2$TÄŠ$QDÃ_6¶ë‰½‰ ¤Œ€€‡¡¶ø ŒG<ÅÅÞgV]o˜”IÁB7Ík$‘d‘dHH>Ü0@€ BOºó†È–BB¨
+Þ8>‘ÝæŽ…×G»œíÙ3€•YfXÞÜÚ•(Š (V)¥p ¢íõ:Ä;:àˆáNò¬ªÈ/
+à{
+¶Y˜_†‡š!=Äw *¾uPðô9˜+Â1PUP*xqWØ\Ïxk^¸SøíjÃòZÕ+im÷ÙÞíŒaºB%4ÊÏDžYÎ|üçG»­CË8›$FJ"Gªü(÷᝝ƒ·Zën¼¹ØWG]tíåܐ!;}G¼|Ï9ç;yìڏ–í)¼ç=	£È²Î:Ĭ´Õj]«ƒÏ¨Òdxòߦ3{KF×]xãéŒjPPÛ:Îyé:ßô÷YîΓ+o¼"%4[÷Ëüîûgµ:ç†÷ìßN;Ùj³9ÇZ7s—Jip3]èóºÎð¼rÀç“,%)!2³›­ü"r,¯
+y[n<¶Ã
+Âõ‚°úÇìy¼ÿSqè8H(*‚¨
+
+æÝyÇ["=%z&0ú'­¤ëLjÚö½T0¯2@„øYpÎüëçlÚ0Mï WRò©‚MÖ]zØžp!ÖúÞ¶˜hгWX•C6P–Ë$×Åïá­i”çÁÖ
+Û°	Ìz`¬à	mÍÆ_˜í†áô žzÏ^»sžÞ· 
+ at 5±ì	£ L E‹žf.µbsWžšèêÐ"DÍ ÌlMŒÐˆÌ¡Ñ®ØyÒ›ö›ïוòå TXÙÓëŠô…mÅ1álôµîy'ƒN0f¦œÖKp:uŠãܤ€Â¢E«?ÌgÌÖª×ÛÚ°ßè÷›>3¢Hsã<>·ä‡Œoúz©Ñ…뚐D™ID’8 }­yìooZ÷ç@|Æè^Þ _zÕ¾t<°lŸu˸k–µikFU3æ¶ÃáKÉÂà“l©¯C›à8mÖ7邨
+ž®—;f{¥ÜNõ×lÐ@<}u¼#6ó–çVäI™œêïzµËÉ ÚLõ,’ÒZ"ÃàÆ«³Qò‡ACe¤k•°Ã¶ÛÕéË;Õ®½e
+Œð•0g5ܶ}‡ÀPÍ›«ZãRøY‡e¼jùuµÕ~	œ ‡¡«îôø9Ôš‘o bw~l´7«çŠ
+# öÛæ	TDQ0Ò 6îÞk9‡Ñá Br
+gÚï8zM:Î…ÅÂY­jÆüí”AâmQ,x:Íwf+1§‡,·é–Æã4‘¦Y!M¸çá
+—ªsŦO]›9Õ£Œzx˜9Êi÷¾Y4¿LĽHîÆùÌö×9†L¶²ô¦Ä'Axæ6;uC
+ù˾‘£Ö» ¦]’G€„`œÐá¾”E•§š PtˆŠål-•eŽèï7Ät™íÁ¥B­~þ7çÇã½.0bHv³ã®s /’=YÓ2Vá˜fÎuˆBÆ&˜fñÛœÁ¶xg–W8lʱ´ÏˆŒC]}†ü Há©÷R7Ó,
+Ü1㺲Ï5ZÐp©4ÒŒ2••Úª€¡H`WÍäêhܤ rÆf0]uÖ+¡*[¬gSvåãÍæûýáó„OtÔã#>î¼·ä0IãÆa)Ý…ÙáŠB%+0˜¥°3>ùãX5;@žY×»¯¿]ßlæv B\ã4˜`i8Á­ÈÔ8ëÑÁ Bt÷„×kåÕÈ/gJHŽ>^^~¼°á¾š³rªß a®Õš÷­rÇî†UZKid¯Š•€S at F„:v†)¸8ÍÂúcˆWÁè¨$3þ¬§ìÀä¸_Ë­?©r÷+ —˜èÄE3ºÖÑyªãV0Iÿ”½ÞýÞo®Ã¤™%›&q‹Î®a‰8¥îòï7Ž$É,Ù3Œ^uslIÅ/w—y¼té&O-á;l^uslIÅ/w—y¼té&IfÉœbó«˜cbN){¼»Íã§I2rÞ8Åήa‰8¥îõw›ÇN’d–l™Æ/:¹†6$◻˼Þ:t“$³dÎ1yÕÌ1±'½Þ]æñÓ¤™%÷]v	×®×^ŵ]}â1¦-—G¶µõmrÀ5¬y0 1‡%
+Q3¶\í…ëÔÓ0Œ-AÆ¹å‡ ãÊ·F¶©.´`>#ì}<&Òím0ŒÉö
+9“=¿	!ñNçó>³ÍïYe<ÏW†¾¢¾?¿óÿïý¹©U]a'÷]­…½?ñgÛÀŸº.ʳŸ²9Oµ˜™r|\4ì1­•UO˜}ƒø/‚ª¨÷ÇÀ\}Ô,6ýÿ½l0àÖõW©e|%‘8ýƒïÙRgf߯3àíͶÕ_jÖÁSw½w›ÏÝùFzt2Ó#*¨}?£&n×ÿà–E‚UÄòýÑù9‹ázý€Ÿ€MF¢PÜXL7­v¾¸gý¢„¸—Â`;°Æ³¶{	€°ÌP bÐ(eíkcKU«Ù!s²D‰ß?pÕ˜—c‰þ,Đø?Lð‡¦iÐ<Ç€Ènõ{ÆEt#íõž‚‡@Õ(Nµ
+/p¸¼Ý¢÷|Š„ù›ÏÔP»„KËá;„çg¼u„è¼Pœ5f?먝¡=³è'½ÿ6£>)Ÿdꉲ PŽXG€ØVCc€f<ÉáôÒŠ¨*q‡At„MFá
+1PÒh)ù@˜Ã°Î9¢Hi€˜…ÉiÈÆÜq…Å„°¡”d3k©RDRARARARRHªII"©$\%…’hèÕî7”>ób”¦š37‚i	5CaRGÉð¡ÝPJp
+eËQØb0$¸©	 MIJf%ø'øõÈšŽñžÂl~Q>q
+6²`§¦6·Ã °ÇiÕöè.:‹Ž"Âb>CØy
+Cb`+E, P`4P`òáRʦg!|á¨1°Üaˆ–
+ƒð	~gAƒþª`'˜úy¸,ͦa0¤à'ACaC‡Ý%’úÒ>ˆè;O16br¬êýAùÆ#žÃÄiôÄéè%¬'Q¬Îáßž	Ÿ£cl‡¨à?™ñ’Äe<Õ&UCu"o>÷œ'œ¡â9üDî&Âÿ‹L=ÃðHË€tgFⅸ¼…8É‚D␉Ɖ–CH1%ĝDï$ú;`%C5Ä~A6>•Ý2wŠ#A=¤,7î©TªRQTR\\s’-ià8Ÿqsçæ;Ž«’B&â#aA2µsàèO$j'qAã4;1LcÌL4„[Ùwcq°”66cBk~¿fžP’Ñ;»û	R„¡Ì °°ê,.’ℵ"~7ÐitDëìs¡K¥ë¥"q1˜mŠB'1½z„ÐEóæf(TÔ`:O<þ‡¼I¸tC¨°à%…$"~š#£”³¬šsÄÅT%X:#/AàǼl>ÿdMÝFZû.ÜmØ<ÆžõcQ¨›$"QtG{g«žâ¡,:7%ü‰¸D¤
+¿úÂñQqãq¸Æ¡Ä[ƒ¾Csñ·Ã”75†£‘‹‡ááÚ¸Ân8xÏtXö*-,ä;x~²%`Àï	¿ŠB&ÃQ' žBLÐï$l;ǰÚÇÀIî;……†xƒ­i´à¸žä¡ãÔ?3A ã¸Õå•ë	íøGx»v«K!ê*Ô%„ý(J®,9ЁÎ	°ú˜p“&bšhØy¾¡cÈj
+üÅBP ’E
+I'øt„Mì.=!Ü,.ù…LEBUb5DÀx	B}!êæÄ'ߌuƒ ¸ßÐc#ó–¶ÊvÊCˆruÆDDâ'$`3ÐÖâ{ê3䐉qp¡¸°õù‹
+·¤”%’úÒ*&•'á϶Âc”Æöµ	Ï€`<ÜG1ACçqñNô„L¥„°qÁ`õî0‹‰ˆš´0¸}cž¼%ƒ!{º*$°Àc°õZ‡$„Lvâ'!ˆýo6("l) N1ZËPÙLj˜Aý$„NÍ‹,§E…™Šd®­RðH˜fvÌ0I¬G˜® Ð3´'˜Üy	Dà' î
+D™ŽáqÇÈsè3…cAnÌrž]ÈLúC•B:C/¹ù‡¦r4©U	Å·Ž·Üü.oðHDý ÿòB&ÚÝäðÜžál2Àº ˜ö‰AäàÕÍuÝWl;t”%’qù‡€ä6$P¡ób„áÞ>BK³-	Ý&âT;¤<ÃÁ8Š¢ÿrE8P+Xw?
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,34 @@
+Machine (P#0 local=16468292KB total=16468292KB DMIProductName="PowerEdge 2950" DMIProductVersion= DMIBoardVendor="Dell Inc." DMIBoardName=0NR282 DMIBoardVersion=A00 DMIBoardAssetTag= DMIChassisVendor="Dell Inc." DMIChassisType=23 DMIChassisVersion= DMIChassisAssetTag= DMIBIOSVendor="Dell Inc." DMIBIOSVersion=2.3.1 DMIBIOSDate=04/29/2008 DMISysVendor="Dell Inc." Backend=Linux)
+  Socket L#0 (P#0 CPUModel="Intel(R) Xeon(R) CPU           E5345  @ 2.33GHz")
+    L1Cache L#0 (size=32KB linesize=64 ways=8)
+      Core L#0 (P#0)
+        PU L#0 (P#0)
+    L2Cache L#0 (size=4096KB linesize=64 ways=16)
+      Core L#1 (P#2)
+        PU L#1 (P#2)
+      L1Cache L#1 (size=32KB linesize=64 ways=8)
+        Core L#2 (P#3)
+          PU L#2 (P#6)
+    L1Cache L#2 (size=32KB linesize=64 ways=8)
+      Core L#3 (P#1)
+        PU L#3 (P#4)
+  Socket L#1 (P#1 CPUModel="Intel(R) Xeon(R) CPU           E5345  @ 2.33GHz")
+    L2Cache L#1 (size=4096KB linesize=64 ways=16)
+      Core L#4 (P#0)
+        PU L#4 (P#1)
+      Core L#5 (P#1)
+        PU L#5 (P#5)
+    L2Cache L#2 (size=4096KB linesize=64 ways=16)
+      L1Cache L#3 (size=32KB linesize=64 ways=8)
+        Core L#6 (P#2)
+          PU L#6 (P#3)
+      L1Cache L#4 (size=32KB linesize=64 ways=8)
+        Core L#7 (P#3)
+          PU L#7 (P#7)
+depth 0:	1 Machine (type #1)
+ depth 1:	2 Sockets (type #3)
+  depth 2:	3 Caches (type #4)
+   depth 3:	5 Caches (type #4)
+    depth 4:	8 Cores (type #5)
+     depth 5:	8 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-2s4c-heterogeneous.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,53 @@
+BZh91AY&SYÅP“ ];ÿçÿ÷Ör÷ÿÿöïßÀÿïßô  @  !;ø`7Ÿ``‘ìë´9
+|çwŽŸw¶«uãÇM·c®æ®Ø
+u×U»œ÷          ‰ŠxÒ˜š Ðh6‘ˆÈj3H  @Ð=A©²i¨¢(OSÔ24£A  Â4d
+2
+€õÿÕU¡  h  š h       j at HL¤Í"d   
+=@      J™SóU=ªmGê§”h
+
+¡‘¡ ?T ò€A£F4 
+’"`44SM!‰6˜¦G¤Ð 2 4 b@3SG¤þàûÁý÷Qý4*JO¶>è`‡Üü¹¤„}ÀÜŸåQ•D}A¨ÚÀX£èl×ÕzÒ zý—W×Ö=¢aXyBûcÀKm‡A)žþHB|H**¤X,E"ÁdP‰$<éÙ¢H@’R*#
+ƒƒ† >mÎnq5©çê:úµb—R–Pàµ
+xm]xmb17nÁ‡,¤ðÊK&]Ba·XÌTìw“!()™x­ŠÃ"ÀãblÝ˼»‰%“$¹PÂI€á„“
+Æí`¶Ã…UËÄÞf®ÒeeÕeUºuY.Ò¥eLx
+™[™…d±{o1á½Õ•C1•f®Åêɬ⬚Æ+8Ʊ°€h’- BAR	:G4R¬U¤
+ŠÊª¢–Š¢®²Õ%’’‘"$P‘E‘Œ‹"¢H²"H‰"$‹"Ȳ"H‰"$žBÜ4—¨Q–ÒÉ–÷-2\¤¡	kT¶ë†¦	’¤Õ÷`…X4¨âšSÚ–Š3fKÉ@X’¡Ì*±——Uc/%\‘QV*$˜*­aÝnøÍíyhÜ’ñµY$"¶‹¬‘I!HFKDT@PDU I#H‘#"€!@Tˆ¥BK;“¸Tü¤æ<ˆÜŸ=Qãeª‹f.‹Õé«d%ï€Ã-oA¸z†íØØ`.=@À5oí›çÎ÷¦ý%7a7I¤áRqõz¤9€FP×”;y3äiªªi®½¾¼Y×"ª¯¡ÓXBjÓèøau`°X,kùBvE ÁìGU
+@‘³”*‚²-'n…R¨Z#u’´Šg%_[(¦sEñjCԝá/¤”¤áRG ü#†¢ãö°ª…û;ZIw  î *€Þ9¾ls{™7ÐÜØj/å&ºÞÕUU^Ám³×rÛ!ÉÌ’		è’BOï$ëvƒtyyni
+z­ßxû<+Ë—k·<)I$˜)%ª	ÛIãHƝµTeÅ“xå´Q€î¾ˆ®š¥•^6Ž9Ö+]UÕ“²Ã½váf¬½°/º€R–Ä6îÔaeqY!åB5HW±Ö†Ž_dWlI0™ñÎò*ƒH¶ÙoØcº)¤õ„LGxî󌇸? Ðoâ‡pûãïŽàø†c°XoŽCϏ@=µîRðR@Úv¬šFŠt•š&î®í*pôzÆñÐoƒAÞ>ä1
+‡áE‡°PíÆC¨¸Ô\xŽÁÀXPÜG€Þ;‡€ž©Ä`2l00-#_Ÿ$‰'ì8”ô:—{²ìIôÌïB#
+ÃtÊG ÄqmªÖµ­kDCæ4';1»jûv÷wvr6Ù¢ïJ g–ZS^š “‚            wwwwym¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶Ûm¶æa¢I$’kzt°ÃU­kZÖµ­]è9À‡DH9å2ˇóÏ$’\ÀPh’F3ÁáâBWNÝBjK™UUÉ5Uׯ^½xßqMUUUUSØc ö
+
+YÒª®‰UT44ÕU5Jª´N¹I!Çwwwwvµ­kZ×p½ï{Þ÷$’I$’I$’I$’I$’I­kZÖµ‚f‡/
+YUVäô`ïh¼šÒf­|,Å›Ysɽ°6µ@ƒ•‚Þ†Ð,,S0ŠªeÎÏ'fÛ%M%LË®eR ØÑ`HI žæ2ž×T’¿¡æt4z\ë*m–úø×h÷£ÕØ%‘eªÑJET’ФrÎW´¹5ÁTÁ‰‰0ŠªnEA20vmc_çYgPíÉ)%$—TM'ÅÅÏìùÔD¸@;0ÎÁ×ë•ˬºÞ1Ì-,…¥k’²Y!k,/×s½@!¬¶Þ-£ÀÌTl/­·¸‰_ˆäïÆ‹x{^WËë[]Ž;RÔ-KãàpíÒ›Ç@¤D@‚/ÂB1}ŽP·Á4|?N|82e“6UC ãZÅÊ`Iï’
+$Æ&ïžúÈÝB”PWÅ`Å”cFZåX½
+Píò‚•Âj¹¤¹ªç:±ÛZÖ‰Ð0ašr;€æåîóW¹½MÁqh
+¡qÝ!°4(!Óí‡J\&r¸Aštô(ºlÙ»¬¦¼}’ÆãÌHàÀÆ”(„Ä6!°C@ÄMgŒg‘Úé+±Äù¹CwàËÙ¹!*½ÔÚ!Y„ñ‚2ƒ
+Ö·`Ñm“EúåˆÄ Ep+Q7|ãY5UO>ýÃŽ|BmÄüùb¯Àl€Á™5ay;§JÙ¨W=bÙ´å™ß¥ÐÙFJ¥iL®:õÊê_	±$«š[ÜùCÀ2Pð%õ^ëØúôÙ陞âìRt4W¬_TÝI!ç’É jŒöy÷Àê=ìÞ‹óÎùÍÎNcŸDLP`º† o‹&	²U	P¢k´âƒÊ»=’¼ºÙÏìîV8iä¶¾|[³kÒS^m­³Yh®‡8\³vÚ)ˆ¨1‚9ñø8´ÉáÖ€¾mkR
+¨
+sG”¬óÀ8ç¾;um¾u²jÔ k'N»2òÍQ  IU at h’ ±l=næÞó¨n†ÔPjK˜½@H1ÅÝË×Vm*ãmû
+À-ÃÓ@ŒµjvÅï
+t‰ÅîZ°˜ÕcøÛ@õª«ØØnàiUkëãXmÓ˜ó5zLÒFþ\½|F
+ãPµAú»7(½ˆgÏ⫌Û8͏3Ì«ªr}!"ØrFƒ¿TmS…+ÜqìÇ–û×%g[ìu|:…N\õ+;¼Kk¯ CV¾èê߇hvf÷Øö(ÄNÊ&f²·	D#Xo+/y$ˆc!Ñ/‚бd–“Jͤ@ìHo{øøäÙ;µf¬YÌ45x
+ku»NxN: 	3¼®ûsÜœÕCÑ’ðñ¯~äãn‹‰bê_à’/ €t-]±•îðسNUÇw8qžX`fZËUOHfäbA/³i~1SgZ¤Á‚ת5}Û:³ŒRHô6I„“]8.í,îÂãŠ[Œ©MUí˳–î3›ÞNö4‹Îܶj+!Ÿw-Ûû7jl2<'—M\’8ç›yø…]œÑim¾¶aœ70z±~X”–V)j®WÔ¿\•^ëUbîmJïð=.¬…{„
+‚MÝiš¸½	-ÐêÌÁf(³“fêæfñk„ITê³x+– Áïè[¸®Zæpš[½Ìv
+¥/j©¢Öµ²åÍü@xƒ™dðMë¡¶köï¿,xl8Á\wÙkÜh’3ËFìó´Ê˜ Á*š¢¢g7–¾lr«kqÏŒªô!,kÞ-Cº3³Z©ó’B,׏mguWé½!~yԐ8ƒ !L‰‚×Þ¸ÍäèdVœ•xSQ!U+£±2“UÏMpc5ª,’1Ók±bH–YCndVh BÕ]<ëÕ÷'$5m絸€qoîAä눕ªÌÜæÒ7p©Dˆ•~—±$^BLøa$¹–s7Z-Ê¡)lï;±ÆÐ„SrøùÝ›
+ùë£'­¹£
+5«	IÝZwÀT
+·j‹w–¥®¶—ó"dÓ)’«¡FèjÅàVËlŠÁqÐË·²?VÏq~ßäÍ¿Þ;œì¨[rÕDåWü´/¾ïºÌBóÿ µÞ7UHC½÷×o"ÒÑ*ª³$»y–‰U\´ê¥¡owޱ!™Ã—'.ÜâÒÑ*ª•]Vq{9u˜…ç–¶n«–7|ã»y–‰UTªê³ˆ[Ýã¬HfpåÉË·8´´Jªå§U-{¼u‰ι9vç–‰UTºôKˆ®ò;ïØßsÝ÷{¾öü5t<M{îêE—e÷y±dqMW¿ÒUë­ÞU`ÔØé|¤î.çœô¾©ñ³€ç8?ŽÛŠPnœ|eYn “™ÆAò'w8‘º´>c¢QÅ6ÅâF-à7Pj~ÖRAh/È	M9 Eße§Ë¾`]º¿hqš|¬ƒw¶ßÔa
+UUOp~!òßUQí
+cÖ.=ÔóE‡ð{׸Ývwª½K+×,‰¿ñŒ/¯UI•ŸÎÓÖïâÓFûDƯ9Dã{“ýeº…‰i[jm‰â¥a¼Zÿˆ,‹®~Èÿ~Bø^ƒØ>´ h4
+VšßL2ÿaAp¸ÚfÖVËPÀXd(P˜³
+¼ílijµ|ôŒ#PíŸ`ѐ]Œh‘‘=oŒîG–IÌ<GpÜ6y½C!…Ñ\Èü~sÈPæ%J…‡ ¸¼Ùb÷½…Aî6Ã ¡v)!,vƒ°9Y퐜׊
+ú2tÐ:Áê˘{L¶ÐbÚHGڝ ÕP”#ŽÜ5¸jo‡È’äNù8C˜Ðl$ŠÃ,…?ˆa$ˆc£(ä‰<¹-8˜Âq
+âÂáBâÂXPÝPõâ&!T‚¨J¡*’ET‚¨J¤‘T’.$ÍÍ£ÐÚT{ÍJR™æÈØ9†p“I"†¢¤bÿõC² SxSwQˆÀ’â¤ä‘
+‚GÚ™÷”'üôÜMhËQ5>Põ‡	EE'¹¤˜)卭ëÜë"Z¿bã ¸à,`õCÀjLcH¥‚E5
+õ,ªdoqÊ	†ÃBÁAAðùÆìS ñO“zÌ™ä)7‡1CaCÏ%’D>ºHG»ÇY↤Á$#±ùÃæÒB7F[ñ§¿ŸZÁÐi2¸våtŒB?2æ¸1¼|BeÂIÄnž*“uP£szHEü„÷¼d‘’‚G¶9ûa  Ô_âÏDø|nÞÇ	¿°¡Cç0‡N`‡‹X–Iá$‹
+aœŠâN‚vŠî¬	:àÖ’Ípq!
+Ú%t›‡nðâˆÄPI$BÁS`齺•J¥%E%ÅÇ9"֝éÁ=Ý…Ïwì9|›’B6	Eu«Û åBx£@ì*'Y˜÷Y
+cA†p-軩°Ô(jj
+!'ÃÕŸ„$´NÎÞ¡R„¡È °°è,.’â‚Ô‰õ1œIÍž‡!jº^¹Ò!kbHG!µyƒ1FB…MœñËÞzÄ›1¸q†ô‘
+IøÐb´q–tƒÿ§!È1UX9£wîcÚ5TLÅÝí=K¶õáqŸpú«‡! Ð5I¨<hŽÖ"Ï7-ƒôÒÛar_¹ˆl(”„ÖÉ!‘†Atï¸ØcPà-½Û!±õ[ðâ64cAčÃzðîë\ Øoïž‘cÔT=°´³ˆëÝò"QÐmdŽôF‚O ð`=×l
+GhÞ–C1õ‰=Áaa– éBÙë7®‰C¿°>ó1É$#AÇxÕZWœ¯ˆf.Ù¢ÒãÀyе„ø`¡¢âСÔNPÌMÂÃäb=›™
+g›QàF>ÕBÇ€Ð7
+¼EBP !B’Fõ÷“d¬.<‡Ø,.÷LEAUˆÐgÜ'¾nLAô£{˜¸ÛÈc#æ-l(;ëºBÉ!‹ ¥ä"8afipõª2â’qp¡°°µ¸{Å‚…ÛË…E„´HEÒD?E$"¢iRqïì8ñlî˜ÞÖ çÀ0.#˜ ¡ô;Æs±$#t°X8Á‚Áæ(5ØaC0Ò†z®9`1BX7ÝÍQ`Xy­CŠHF:ðIâ1­âōE$ˆo#;Yj¸pÜ>šHGVc5–SšÂÌ¢›•Ñ¢^#޹	šHFáâ+€4ǝˆßDà°4d;ÇÎ9‡1â(r‹sCˆrÀ.âs‡„Ìo7Fïó,¤f)Rª
+{ô¸ìÞ“™$#è‡åI××´Û	‰è-†ì¡!QˆPx7´r]wEÚŽ¼å’px‡pâ’&¢(Pú» ßÚ=‚K²D´„l¢)$CÄ;¡'Å$„OÿrE8PÅP“
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,31 @@
+Machine (P#0 local=1016272KB total=1016272KB Backend=Linux)
+  Socket L#0 (P#1 CPUModel="Genuine Intel(R) CPU           @ 0000 @ 2.93GHz")
+    L3Cache L#0 (size=8192KB linesize=64 ways=16)
+      L2Cache L#0 (size=256KB linesize=64 ways=8)
+        L1Cache L#0 (size=32KB linesize=64 ways=8)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+            PU L#1 (P#4)
+      L2Cache L#1 (size=256KB linesize=64 ways=8)
+        L1Cache L#1 (size=32KB linesize=64 ways=8)
+          Core L#1 (P#1)
+            PU L#2 (P#1)
+            PU L#3 (P#5)
+      L2Cache L#2 (size=256KB linesize=64 ways=8)
+        L1Cache L#2 (size=32KB linesize=64 ways=8)
+          Core L#2 (P#2)
+            PU L#4 (P#2)
+            PU L#5 (P#6)
+      L2Cache L#3 (size=256KB linesize=64 ways=8)
+        L1Cache L#3 (size=32KB linesize=64 ways=8)
+          Core L#3 (P#3)
+            PU L#6 (P#3)
+            PU L#7 (P#7)
+depth 0:	1 Machine (type #1)
+ depth 1:	1 Socket (type #3)
+  depth 2:	1 Cache (type #4)
+   depth 3:	4 Caches (type #4)
+    depth 4:	4 Caches (type #4)
+     depth 5:	4 Cores (type #5)
+      depth 6:	8 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8em64t-4c2t.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,163 @@
+BZh91AY&SYLEˆ± Û4¯ÿöþ_ÿÿ÷ïÿþÿÿÿô ‚  
+ ÿø`bþûé–ø    ê…W¯ Ç É‹»På/` ‚’”’ÛJ6ÞÙDN­•^¶Áôøûk€ï¼àÎu\Mö_E|;:4tnî·ºÍl:ÝÁ븛v.×sÑç·§TmÞìãÝïpk{ÜõÞ^ÜN÷s½mÇ—=íïöï-žÞî÷nõ§x
+U[×»ºsŒîÛ£l±È
+·9lj“èJƒ¡GA«³@jE4W@»€s5¶Tèt
+4NØ( £±”Ðh ´­)ÒîàZ[  6ÀÔ„  ! &ÈКi“MI꟪zy	”õ?SQê
+=@õ6¦Ô E5SÞ£ÿÕJ2(õ               jx"Š
+SÔPõ¤            ò “Iˆ!2jy&ž§µ4ž˜(üŠ< iê¨z€  õê   @‚hMDÊi°DÉ´)íM=!¦ž ÉôšSjhõ0™¢ hhiêI ÓMÔðM?§¦©ú5CõG©“M2êÊhõ €4Óð'Æ L§ËDDò'å %>â|@Ò#ûEâP?çiIR” þÈOí†á€Xu7‚(õh°Q…Š•R©P?¬þÀa`‚[퉨 i@×mq¶¢m˜Éa÷}ÿ‡èú>wégòF‘´Ì	ׯL~
+?QN å…UìsŽ”DDeˆA‚Š0‘êDt©$„à‡ø€ž¼ö9ëê»Úñ}ñ¼\™½»™Ü…«3bÞ,'vnd²îË^šòBæ—0¹¥Ìhy	1E£7V‹µGXÖ5än5Vá“+0ëÚÜ2mn5Va×µ¹‡0ndÌÛ¶…«ÌX4‘A¢‹iÍÇ$ׯ1¼[æQm¶Ô.äÍÖ®ªÆnLÇ2ܵB¶,¹·u•EPÚÝÝǹ˜ôæƒ,Ñnn[BÕƒFîºò-ÜqKmz^»veÌXSw«½,ë[nÖ+1àÔ´$´$³ZZ[©-!î5\jª75h¦5­Ùwh·mÚ4e8±G›¶Ü˹h»nÚÞ<Ý¢í¶ÑrÝ´]·mmܶI&ÓnÙ¶›%£FîÇLau\Idëœɵõ×]N
+¡¶ÓnÍÒFfÝ†ášw6„eÓqâÜ'1n=9¤æ.±î¾ŽôNcÌ8ºðñÇxx¼ðñÎÎ5° HŸ¾°„ª"AaT²ŠÙLb™µ¤Ë8.êa¥À’è¸¬,²ÂÂ]"ÀÅ™!T…P,
+™Kib1Ë-lQ­Ë´¬Ée-)d*e-¤ÄTÉBÙ%EŠˆÁIX*#¢’¬QimQ0ÀÄX£¶
+‹,…RdÌÃJXTQEj(+JYe,¡s&LEBË
+°¥VÕÈTÊ[dÅS TËQ´©ˆªÙ
+™kP1fK)e”´¥–RÒ–bÀ¹iP1fR”%\m²b©…
+å¥@Å™JZSé†FoGÎÁäzJf]Cz;j&ƒˆÆdáðSJŽ[MͤŒïÊŽXŒDêÚ^TS\L—•£’îÚ,àâhņµ5Ûà ààPác âeœf (©Æa'ÔÈ’N!Êœ)QËi¹±‡¨åˆ‚'VÙLbnfLs¢œÅ´YĘU†MÕädœ,8Œ“‰…œ`D‚§ƒ¦gsxáζ\ѱƒ“z¼º¼½rk…œ
+ri…yqÁÅ&K¬ÉuÊŠÉuÌ—iÉMd„î$mBFHE’  'ŒÊBrÊEZê¼DñK]at’@# ¤˜*ˆ°)ˆ(Œ`)’-„FX‹l±d„!A$A"‚ÁDa$„D£”USÄÿ¨R=ÈxŒß3ÓL‚òŠªûÀMeUYÐ
+ƒÒ-â=ØC!æ(8_õÿ<8CñÏXûe|£ù¥J:”u(êQx‡ OâïC­(´X­W•YyWñ¼ÛVŸ6S¬èøÆqs¡Ñ™{æk¬<yåÃÊÓ¤,‚0ÊXqßÃÏæ?;çÁ‡Ì¢Ç’C´†¤/ñ¼½í´6߈d‘¶Ûy$ž²Hü¤=ªí¥5Þ±å¥5Þ±å¥4©Š±!@í1Wm)­ÃV<´¦·
+XòÒšTÅX 7ƒ½Ÿ‚ÙM¼Êmà¶So¢So¢So¢So¢S}dè!bÊ8‰„RV€€„RV€ƒ0ŠBjÐFHUIA 0M!ª¾X	HÂ,ë 1¤a
+,î"¨8s!÷—$á°‡ETÏù|ûn¾„.á·J6d„€†Í›#ʼnGêgR&rÛe–9ÎwèüȝŸ§4Uò…Lk¹þ wÿo0ìP?}ý¤Q,{øo£ù´Ó7W+È©Þô-z¯–
+Ãèð“¦,|SÙ¼c²ÐH黊—6ÓLð·ÓqGd¾uÑ•öê¼PŠ#E•ðíî…–¹›l Íh3Af‰0	 )Z:—V¸KJVÌ:ÎåAUŽ QCÝŸÉ;;õªõ.Ç3÷ã4œ[÷LŠ"X½œlЍR““Øè9aÚ±ßa–íu9¯âÁ¸­Ù$2?¡@ò}¿É¦^zxÄÉRÀ±t½—ü¬ÑÉŽYè{ƒ{ÂuvuÝ|&RV½è¶Þü&øC–/gZØ®½-ãÍeðD¸¨”ìBÕ,³€d†*t ð5£sCùó†2°»Šøº½Ñ²ï\7Ýr¶Ùë»_=@ÂYÚìÕUUUUUUjý‹†jÇnu¶BßqƐ»&Ã<olæf«npZ¶2ÑU”#d³tœ¹µU
+;'TÏ=9!QEæcP£•-eKÅ‹µ8Âæõ1ì=SF©Š‰Ñ•Ðz_àÆ3YéO{3ÕìÏG›M'ØåUUUUUVóUUUUUU~À×ȧé“ÀþÛÖå以Uzx¬ÖXL¾-h
+rx *®”N}’xê9Ö¿ï‹ä÷äøäþXŽ,výëŒeŽ6ãŽ=ˆ^‹£ëtž±*ˆ Š-™$`^„DT;O(wþ(¨gªS»OÇ	ˆX…ƒ/à
+Ÿxà?¸ô¤Æé3’"ü=À/Ö¯¿s¼ø¬Dfˆº¹9¹¹¹šŠÉ¤¨)ˆx†ãÝWué’?/!Î$<1Îzú#ûü» -¢Š(…>\ùOšþUUVæ6ý;çÕÎtdz-ÛP9mÄvØ•`½UUUUUUUUUWòŸäß÷òü>O»±÷O/¯<&O½>Cì}ƒU³œç¼¥)ÖNJʱ‹Fµ\JÚ2¬^1í0ää_	Ô“cíôûvôzg®R”©HB¥#ŽZ]dç¯[놅¸a…~Î`:,þJŽ5f2m>á„aPÜ£qq9ÿ‘‚1Va at HüŽ×mn·oiª'³Þª§;+u9U„M@‰)ÃWGFÍ|žžµPÒïø]pQ8!÷rœíiׇük
++"M¥D—”Àò‡HM"	WAP½‹Ûí÷¢#CL]âX8ƒ€pŸGóàyLJé üg¾B	þy<ר6EhùL’®
+‘Z6EhÙ£†IWÈ­"´lŠÑ¦¨#`‰DŸE,š]–J´²U¦‚0Fš$¾°Óa‘‚Pl(~	‚DBΈx*ªªªªªþ+ª¾wâü>ó:²Îß²Cî}l߈|z»Þz €@DZ\
+Ù8¡Þ
+
+ßO7[çotž÷½È#å0eÆª©Fs„e)‡Z5@Äh']umìvÜÈìü	•’
+¬ú×äõœŸ›;â{MÿŽ™Û=+þ±˜µòTô.ô®ÑÔµ7:~Ö!Ú¼®@Ü­­@³µ0駇0•/;‹88ÃÀõ0ïO‡¡úü„c½B ^mTÅ݆;úÎNêP‰½x* BÎHNŸDÊú¶z»Ä/";06cè j›âªpMµ~]çÒU'4 ›ßG¥
+EÜB"‘Gž(fÜË*\¢ÞÓÓpí·v‘x’êà#Œ£Öˆu—Ô¾À·Í=Büyý>ºk߬䠷ŽÖ‡ ¤%Ù!`sLº(BË'Ù¿ZèQnj¨•µª ÷ùèôùïsž‡€ï©2ËCjðyDNþlÄyaÌy™ÖòÙ™™äNr¯‰ŽUª€kIKR#ÅAu,[Ïsø¾_.ûýíô®ÔðW(/bïdFå‡ðœÜܧ/U9®ö9ëNc«©ÕΫ_m»»‘Dîg)j'i³a®1¸·* "ˆª½J”Ö¥–ãDò–'
+ ª€…·;ᳯ&¶;ÅQLa»;¦4³¾ 4,ˆˆŸµP‚èrŠ¡ç!?Ÿdsn?]†ª™yìïü¤/—`ÑDœ×ÐéúD{¤¿s’$,pÞ{œŸÕkÐYýhËê—8‹è•½=æ²Ò¦#€VÏÕÇÇÄt‡cöUUUUUUh-Ç—VúIðý»z|më¸ýBªµ×ó‚t;0ìÔQ7¢1NÀň
+΂5¬Î]™Ã«á…Õ䧉ðYׯézÇ9èý»„úÝ{òíò¿©
+¤}ÙlºÓö,–”pà?¯;ßòLÏ@á֜{Éc¤QÖ÷+öÄ›?E?æ×Ç¥ºé,ÛçÜIµ—~R¼uñvóPOšºC	ô§^ëú¸I:Fþ#S/ºª¼^#ff¿BóŠOÒ=¾^òÆUJ ’9 at K;d†#¾<PÊÅgϸÉÏ'¨xçþWî廫¼lJ‘%_w¥³ªHaõ¸ä“ž^­Ú.)ÝOÝwW«Úª{ð›tð¸ï:5AÐCí0E˜Cé¯v´r’Zlåçx8‰£¡:áÛ‰Œ²Äër=Nŝ¹ùœÃp|Õ'7ƒQŸË¦Žšª>)š?ÂÇ4û]ÅÑà	TÎd&âö=CP,5;1Aù»×5ï^Uô­:züŸÕ $IªªûKYÌÌÊÎfs™Ï¸6¢jXýÿ˜[µRf—‡ßx`ú¹_ÆwèÉqʼ7âO¾÷y…¿Í›®ŒÜ ž1»Çur¬}@CŽÂ XÏô@¦òÐ/Öû.Áš÷Ûñ£Âr꿯¢RYú¹ñÐ#õZ</	Û›¢¸!ÊÞWó|=ÛyI¯Ô“püé<GÐ2c½éVyFûוsçvÝ61Á´y¤S·ƒS9 šì–ñð#ht¾«s tønëÝMÇàkŸMÓw/¬»+€Ý}üv'çä;0¨f+jýCBÝAçEQù¢ynŸ_³Õ¯¯wÀôwâ‘TX±TX±bÄb¿€5𢡊 ;ÐJpËݺgÐðK¹mÜ›Ó1¹¼aCSõ
+QÑ5<‡Ë™ß¹ü=cÁ7‰€$ }Ùñgì‰Ñw¹?›Ót5ü àjÐ(Ñ@±!™´‘3‹vz¹À7XäQ,Áø)â£sÔ7ÙôtuüÃAæ=P»ª‚¹tqÚøâ»8¼y|ÿ?¿ÛæÛ»Û㎫,²Ë+ZÖµ¾û¯¾ûï¾ûï­÷ßmÍuϺë¥u×]u×jîëîäC[ù~ô ô|åOÒ8p8Ô*ˆmnMûøKY4œØfd©ž£³mĆÁÔJðnaÅî~îÓn°µËJÑÖž§^_WÇãòí {ÈBÓú¸æ6‡^ûÞ÷¿çƒs'àhPÓ9pðæàè	ëà6¨—†v€y
+e“#
+ïâs›
+¶Ûm¶Ém¶Ûm’Ûm¶Û÷Р“wÒ7ëó=_ñhÈnbÓæãfÑÜÐ:îÕˆD¹x÷عqzfw•ÀÏZŒäxâ9ý™r|Jäs& vòé¯ÔëtÛUÓDûÀñÛÀõ2-ÄwõwŽ<6þL†­+Ö;•Êè›Sót1L²ò¾BºÚ¬Q?…·	í`: úÐÁ´Opð18 ‚wçæì³¥¾þB&Ð>
+G™	ŠßŸV¯t#3Î\‘3üÿ	cÅc”éúùOœÌèÛLÀÀACæ–Ë¢;ru}hªC½ßù¼6	òÉõáÖ.5‡`À_çVîçØËÄj>ùùw=”ÿGòé:ý’r~ÐãyXzFWª“r"ېù¹¢)Ñ=޽æè€ã¤ì.ÜIYÙÉãvOØf´í3ŒØpúýÐLl›b#˽Ä,UØÚ¾¾©ÀÊ'±Íêãî²wvö@úà{sSóŸ”õE¶ÒÕ¶ÚU¶ÒÚÌÌÌGWœê>o 4õj1øðãìú ˆ'w¼DÎ:	YUUUU”	îø¾O“5$†RÒÂÎõOº„í"¢$r)'<«
+ÕKŸW åìCIðDìëõ©Åh ȈïhŠ*ãn|žM¿‰Ÿ}‚ض{¨â+žJ2.×Ty
+ ð[º×Ãm}á÷Ñý¿¯ßâÓÙÓ±ÇÑì,kÌzÿ4ÿ
+$É 7ðTPal±Žn~/¿§ŒH-dl<¾Ì!oä,ÝíjÐ{™—º—(âûü{úúïWÆøt?éóá ;©Ël¿~Bˆ˜±gú¾äDBdÁÄ7ˆoéô練@AéÄ)$eü§œøt€¦j%víÛ±ÅVR”£)¢'Îrš#Ô˜þ5U¿ªïÊþ­áReP­è°u÷aÏ7êþK(•÷0ªò”ð?g‹Û|¸>Þå6îÏ’8Ö
+åuOOãÞÁ áú§Ô[s‘Ó—WðjÙŠ!…	Þ®v×"zô>Õ!Æ¿ckT„¦[á&H”a´ìæ'õݳÑgŒ9bWŠß¬Š÷½£)K8¼}—ê¾ÊÖµ¾r¾–ÐUsÒ1£‡–3¬²Ë.ºÛ/‰U(Ð1h«(9ѶVÛm¶Ù,²Ë,²Ë,¥Zµ­iJYdÀ½ïÇì²”¶¸/ß¿råëׯ]»víü×]u×]uÖÁeû,·e–Ye–,²Éà¿EºW]u×]e«j­×Þ—ß}÷ß}÷Ý}kZÖµ­kU¾Ò뮺뮺뭺µ­kZÖµ¥)JR”¥+h$”•УíºáÎŽdÈ@ª/©
+Ø•—
+$ƒí.tâN«‰‡ƒ<t3’î®»¤©<3»šO«ôT/BÀæÞú&=­žRHá#ÀPß­UëÈ’àŠªªªèØ\~ôE5òÑÖÇO€›ú¿*àôQAE•VlÕs™•ÎV“m"Ùi¢Ùi6Ûm&Ëm¶Ò-·ð ?2
+1Ž»óÂgo
+«§‘ÀB at aâ{ïˉ‡†˜iJh"”¢›M,Uœ}Q:îÒË+¬                                       yùá×OVõ™™™k˜å¹™k™™îz€ú’D’2î!*Š¤"©ªˆJ¨à'ƒ€pžÍÝžžžž’I$’I$’I$’I$’I$’I$’I$’I$’I$“œç9Îsœç9Îsœç9Î`)U)JR”            šØ- ·0    .\¸ 	€    <óÏ<óîà[”6
+•JUR”áÜHïV #Â1ZÕ)UJR÷W-¹–©˜®WÌÌѯÚív¦¹mÅ30õHnͪˆ¨»Çœ 6ý½½½»÷|»=¥Ûm¶‘l´›iÛ÷€qÀÚªªªð¦ô”3í’
+ËïOivÛm¤[-&ÚE¶Û-$“m"3¶Ü©™™˜ªªª¸êð $ðª*ª""¬]UEQ8p€aˆˆBR”¥*¥„DR"-JV­R”      »r”¥)JR”¥)\ˆ„Dbª‹Q@ÃLEˆ–­¶ÛKVÛKnèöI ØO]δcR½8íËÝõ…Î0ÉDFà:6ÆIÃ,¨7ƒ`§Mm3X)‰Â"u		ÄXD¬’	¢I!uøÞºUUU_ppãµv`6Ûm¶Ûm¶ÛoÏôª¯á_Íãž›§£Œ	[û^{¬R•úÖ¼tÆP„(¤ÎÌ:¶¹_º	ét>hslÛt¥@CñQ bÃñɶ½7ÒBHDì€H3ŸVuµDîª(!¨,w'Ž}¦P­í*Þ’­Ø&µš›z—ªy”0Éy—šs3H
+ñã‚ÐÀpÉÄt§Ÿ	&·‹7kxƒ(µUX[éöãò7–³«5w®‘Mˆß¸ŸkìoQ>fÞ9M þ±É%ö="Èôuå'8ªB„±/]ö›ê*¢J¨øÒ0ÅWüò~|Ç´W·?*´#€´¤,)(K,*K
+‡š£QHNHÝMô<inåc>uEiА"%x_n+˜z²3ßéQ÷ŸÔ¡$ QTþ‹0C0CБ6Ô
+{lœCÁ×|§ldè=!>
+½$ˆ¹ð~T¶À R´BhM	 ôäœdÙ%"˜œ¶Öºi¶Ù×MÇ“?~…ÌLç»ZÖ""""3Ÿ;²N
+pê(eÔˆ€÷ŠÚü'ÚpÈ²Ë õС@íÿ:~ø‰?—
+F
+ÈÆ§é²ÊR”ÖL…Œb €¦¨àûÇÈÐ[98‘À˜ÄÔÉrrC z»ý|wc`ØØ66v6v_Öd
+Ú4ÁTjÕ¨5jµ+P¯‡"Ù’:ŽCU¨°ü†ÉŠ`˜’¦3·&FF,ŠdéÈe&’ÂY%™	4–Y&I1ºÃðý¸û‡l>IüŽY$™$âŸ"xìÌÞÝõþŸO|ÉÇm¢?À³bÍ‘°6É~î‡§ù½N CÒzP(˜I!÷PUYUH
+ªþ½Ï?}}¹³È³³dƒ=œ@U—”Ýéò°…,*ÎöÀ¸?Š—XS\¨¼Ïöp9YŵUm5Ú2Φ‚‚I²£q¨„ˆVa $7­\켁
+‹ÕT²Nuèå|ãÔ¾n¾3r¹—Þ¾¥×±­Se$ÌΛ¨êÜœ¨€NNuÉÁ¡Ëé(p#Ô'×ãÐ@VuÍüI;a‡Œ"|›×°ŠÞØE„XE’RÂ[a-°Œ€”¤–E‘dPŠ
+H¡"ÀYE¤UYßIÜóšÏ|Ñçì†ÏP¾æ3I¤	 i™”wik$ºÆM,‹â°Z4܈%1ҝ(ãHÛÎ_n®R·k\98läÙWȨְµ[¼QmYEsP)IDV´Þ÷/ä‚Ø-¢"Íò›(—I$×QZ2kÁr “€ú'•ù>ÚZˆI™ªZÉË´rKÍTIûóG9ê(]uïŒKíPåX„kœW$	Ž1\WˆN‘4s¦2„®ëͬµPJ"UV ¬¤:ÄjÒl5\ÖÚÃØ1ÝQ/®bÃ)%ŠIºpÂÍjcN\MÕ7 µëTQ!@HhÞnlë]JâµÔ%ÝÚºêÔ­u@µ¦Ó!B ºœ`zÈ
+6kf')°Eu„v¨•ÞbZ¿vŽ[F5œÎ°Ž”°oÒ–3c¤û—@êÞi²,ˆ s0OÏC¤	+!D;VG$²>Ç×¢-€‡t3ª¬IÌ(„pd—rT‰N«U=*s/Ût¨ór­Û,½PKflF ÛÕT‰­”Ù³z±UUUM	­CXª«¡Ö^G}<Ÿd0“°1÷°9Wô!&ˆAE‘Ë ´`|‰DØB}¤Ù™†*ªªª€€ŒšT€±UFÚ­T*¢¿›±ðñ÷üÞ·{Óëf“äÞÃzãL À±2ÅÛ%6!µTOaã<% ¦ï
+5Å›! Ù-”…)@ªËÙÇKÿò@pŸ’¶÷Õ¹R0ñ¶¬*É[kÖû§ö’@Šà:AäzàÞ¶ÏU&ˆF6lŽÇ¼ñ?0]–þͦ uo~©\$ö¹á±Ãðý@7æ|X…ÿÞ¥rŸ8
+"e}Š®BHÉ@(Ra…Wú…t©:´8óÁP‹
+I.(Z……	e…IaaCÑÒ?ÏõQ$c ‘‰ˆIܧ*ž¯Ð©õŠA•P"äA
+ùªÈü¬vøŠìPooªhwr4Ò§àD`´žOŠ»ÔÉ*¨ÚTÜ6È@UÒw¤á«[ãP@¨2‚ïs'*q«ˆÅÐßôéRG‚	ÇBx*\û€L ¼<ø9S%Ë„F›µñؾå€
+¤F)<)KÚPI¥”á‘ÍìœhåÙ)œGEwˆ§v¡ u‘ÏšX“~t[w$wÛ¬µF â°1ې˜ +h†QÈzŠ“ÉŸf at bí6lI	KXÐ/G#Õ†”´½¦©~ëÌBIåwnX]UÎÛŸ.n[b÷ôÂwg«¯6;}>ÛU{š|¾–‡¦¨\¬Ë\^š ‚ Šé4Q6,\Iyc¦ŽŒ¥ãDžˆ6RÍ@lå%§%O[—<5åìpDEB†ÓKYS:–¢æ…  a!Ím•€8Ï5UUUU^Àxwë‹ß²¾û7ä¿+'fBùšßÙ6ßëî»#ivM)MÚÑlg¸L±\å$º*,s«8Us§ 4­Ž3|Õ@& DÐoÅaú;ƒË×4”ùÅe¨žïjƒR\»i_ãçâ5¡kÓ¤+çûmɺB¨U
+¨J[¸af0‹¡0Ã0‚€ ,&éÒJlõëBÁEÓÐl8ûþß~¾¦ò?r¾|cð84S¤bÜÊ„up™!p† jÝR^&ùàÅåƒÂÍ’B××*BrFBDŒ¢HJ	RC`f÷ÇÊm' qìUUU_¬CØyø÷ûøkú~Ûêž“βnA“ÊÞxt¾HiXq½÷CJM\n¬'v¶ôÿŒø&ÐÏ®àñ¼ÏM> =ÝöÈ4¸¾…""Kà"tò`®»•ßìñÕéN¬°^FÝ,«J‰c†Z/øÐlÞ=£ËB,)$¸XP¡j%–%……
+E8YÂ7¯·rØ[„gMRs²áô`ï±&÷÷˜ÑÿZ"”Å/vù>êÂ<íljõʾêè`©-ÎòƒÁ~Ìguúì´Û&¬µ•q·BñHç|/aìz:­bYcÙáQU&¦ž8[Ï…¨
+Ë£>œ 8%òH‹™,£A‰I‹ã~ê:m˜Þ-µhw2r’€3D ‘*s„¨\|ü(r윞c™M\„:[@BkÕ@
+ÂN56^ÀÖ©Ý®²²kÒ›;÷jË>¬©A‚0ë«1!Õ5Ä€Á $‡°—5^ª_dÕ†…+Tׇ–¨Ö±Ï'ªÂÃ!õ.$8I
+" 2 3 ‡ƒËûoo\
+òál^CËé¹Î½ž}C¼_(3–îR)êMø—d×h;ó|o ßßUVu¹7IM§yi¨%„LJ`ç&Ob0VþO¯×ïoB…Ÿ×óýc^ºCIG”ܵ"z 	ÜØmc]
+ó…ª’{…"±„^®|˜ŠËÐ[å˜f"F–1ÄWVÓ‰–p—ŠÅkOeX`P†`/^ÍÇ ;êæ®ž®ç¦&/7Í!¸ãŠC›- „ƤfVÕåö{~U»<y@˜h!}72	ÜX÷ka·  ˜œðú³ÙTÊ•IjªKnìùïψôŽÌ°¤’áaB…¨XP–XT–;{·ì¼Y[£vCžÂûëtÏ#Å돫×wÎpðí;QŸwѬ¿®Â™}Þy¤ëï[AtBzæ2¿RCäw3‹dÝæ—Ml$R–ªVC ožs…òH!„€FF%Ï×Ž‘^åÔa_häÝj¬øØw‹FvY6WwƒÞµJ†+è`3·Ÿ*ucM›Þ9¿ð‰'†P
+Þ>m_ž„ÄȄ釃“—–,}›ñÛ»ÇhÃ^yïàáOŽ¡=žšªªº¬îͤãe¸’ªª¹¥Ý*ªïŠ!®Æñ­½¶k`ydIÇ£¦AÏu'}
+:ã
+I5wêÆš >Ëís‚ö@íï弡“ÒšB&
+”íåx¾_[<svxxÝaÔ ^ÃAe~ÛrÐQR´ièj¬Y^WMwñŠÒÕofK^yT†Å8HéÁðÐÈ7ˆ$ñm¤fõ€KHÍCq&=Ó¤™$¿)+4XˆˆˆˆˆˆˆŒ@´¥iÙ0Š=HÀû^~³ßÕö{|î·§É©®QœºµFJ9­ÙI AM¯qй"Ç“xN&†Ý¸µãTÛš¼h BA@û¡¦•)(…T©HXczñËö
+DwˆW[ÌíàùwÕ€ˆ
+‚Z¦ÁJÜÂ	ãàÄ”4R'Ê.ù–5U’2â&ǁʱÚÒDVo†«ôÁ¶ŠNN
+vVÎ62Û⹯¶pªª%1”`åu6¬eŠR`ÚTP<	¯{]3“:£M¨žnŽâvóÒÛYBÛXÜ(
+ˆî»¯Áf
+&J±³¦fB@)3Î'ÍáÞÒNyÌ\Íêè}¸O!$
+ýÎ7©ÂÇŽ÷7o¥©ãdz >‚“ÇÁ(¼yg]o³ÁÎÍkD4ZLõf@$DÊ
+kʇŽS|¤;
+½öbÛ@&JĐ` ÀA ²"Ddƒ$Aˆ ˆŒ€ A	„,ˆÁ NŠM™WP‚6ÉÕ”‚ÕZL:Ï-îCêsx¡Ðb N4ãªZ:ÖÊ@6e§·9“X˜SUèF—2¢3 ‚ëÙ‡@¦½÷º±‰œ<gOÍ­""s°b7È}¢—/WxkrÑN®xO¶¢ žÛÈ’lvamÖ÷‰Ÿ´üèÒÕÍW
+om.DQk+
+…3{¹s¡y☥tœ'HI5÷ ¢"Š‹`Eî›vÈfÅ×fÏÕ{¯¥ÍkÒ)äý·´àÎñ3“ÄüKÂXYpP|KíæS¤.|ê’_zOòqÍD%Ý9×=iKó¡|kWW'…·àæih ªG]ljV÷ݶÿh¾Ih™c°s›±·66–Mq×ÕNy\Ë,¥‘
+0‘RN¶NwÎt£*œˆ+¥#7¾2¥&æT·HS„랎rL(­KâÂ4RP®’Ö¸ä:²òñœË.°2j…„ÀÈ’X‘,6“h¸‰ÉáÓ!Ó;Ž:뮳¸lâm„—>9áî¤}§qXÏ>f–÷ûóÁçèˆdŸÉœ#g2鐤oJÙ-·„éÂA“ËHÝÙ9Å6œ'ÊM "2ˆ]<<ü€p°òÃÕòZ‰I]Y)&Àa\ÃŒ†Gé7>d°’ÎáX üµV#u°.°	ƒ3¦­{Ÿhÿ²5´üú²ÃF^,-UWÇ*O×GS£
+ùn8A3®@ZÖÕ[,JGÎ#¯¡”árC²àœk‡ƒÄF[õää@|ZôU3å ‘sw4poª~ð@„køè€yÒÓ´9€q ç&`dƒRÂÆ6Ñcc|5¾xˆÃZã^¾Û× ÒÆFKÆd¶f9Õ¼ÜtØ·¬âQ%ÙÜv!&Zm¾XS+ME)mjT‚(ˆ/FÀK®v¡Å-ôÑNÕÙ¨_)Ÿ‹=‰Ž Š1;Ìλgm<¡Ì×Bàë%uB9&q9áÍ€#ç†."O{AÔ¸Xăš.ãrµ5Ú™¢›ß"ð©VTä–`ˆ­Øïɋ٭±ì–´¨Œ±RCÖO|^*³Ó®8H‰œ¡’4‹vˆA$AjÓ›^ž\M;æÈpp’KðÔŒ]s®¿ZO„E#U5e[9¢‰3T,G߃’¦©É
+}ÃD~qÄI†§Û;)£êáI…¾ÒðL*WkQ ^¾8(„Ão]r-¿
+%­‰xûËåˆöŒÕ¸è
+†¶ö݇½¦´Ns»ÌÏ~z°Ÿ7º†¥P$+®zº·»ŠZ­yàKÛºPI›bé ƒÒI£”.Y×¢0}cPªF©
+,&c-YÝ~DA1ÃêñÕ¼ë‘$£vÝ—6¬Úߘx| ôg9¤ SÆxB‹w+|¾p3e#8€¿9¦®)iÎuÎõEädÈvÓTQT¢N—L1¾´ì¯<“„¡ÓiÀgc< 5 CHJ¤^ÁœçPT~©sH„E£·FwÍûÀ`o»Ç\ò
+õÕê¸sPœ)&DFµ›¶FÉï¦H,·aT’‹ÊZ!œ=غØsmI'lφœtW1¡C]¿fÖ½#û[l}k¥ñÖöxÓ‘ÅxšMÄÔDDŒ)6Ö6 :pr^`Ò I¨E[0iºéÞ»eÝô$>˜}ñüߟüþ.çßû³çƒû?ù”™)þ¿-k‰-oÑ4­±‰ŸKŸ$½Ýߐ‡Ã»Ð=æoý¨yQ	]y_O†Sñ[ñndöôÌÌò\cÙŸ}‡BBÞä4¡oiËŒLòÉsؽÝÙðVK׉O‹åëÖg^ž33<Âã¬øaА·¹
+([Úrã<ò\ó/wvB<’õâSãÇŸŽó:õÜÌÏ0¸Ç«=0èH[d4¡oIËŒLôÉsȽÝÙõ+'Ÿ^²Ÿ_‘ò}Îó<{žy™žqqŸf	{Ò…½§.13Û%Ž
+éJR±¡¤šbÏF–“‚£ÙM§\²Ñð],»JF9g¹™žqyŸ”aА·¹
+([Úrã=²\±])JV44“LYèÒÒpT{)¢´ëÙ¾—gHÆyK33Ì.1î²Øp$êCJôœ¸ÄÏ.y+¥)J­¤Óy4²œÊd­:ÂÜ_ƶãHÆxÊ9™æöd `HIÔ†”-é9q‰ž™.yJR•Zɦ,ñic8*=”ÅZu•1|3ΑŽYÙÞû‰hr¤E4--X~X¼Vþi<Þ¯Ž’#Ç>?y':°¶ë>ñÓ?:¿±Û£:þ¥Ö´I?y{þ¿â‘ÀóÔÆ¾Ôiìîå]èÜ—!^x°•¿ÚçÎ2¾yÄuÅñÁ[¹'N:îÂȾÅû­iÆ.£í[ƒ¸ù82÷¯û"íþ0? þÇ÷@ãú—ôþ$»unè9þ¾X®Õá™CGsúFÏíxú¤=žúfA™žI½žŸo„øž>2í	3@„?97:UUUUi£Ñ«5¾Ä;HYÉÿâÐØÙψbNFBá›íNæïÜÐÒ¥¦êÀ;9ÿ»ní×~—øméauAY3¸]Uk
+]ÛTŠG]DTíõC	ÔmÒ¥y¿S%ê\Áü”aÛv»¤Rà!—VYg×IqÈ-†J‰ªë¿cõ HP ±±rQ)þ+|žûÿkžYÏ(\sÁ[Üu1I¥åKÁkR€Äsœý˜ÄN× 0¢š²3ðµœçH¿}ˆënÂS¥qÕl¥&fpú@
+¤Y²Ü PQ?R‹
+Kr “cþ£¼ƒ6ªÅ×RúãŒeå*– óÕÚˆµ\$^È…¶ðaþ½OF±•ο ‹‡Â,̬síDæ7Ãv4Ù翏`!+»4°AÅEFTCe¬ˆ3d®{™™†€dF3ªÛý:úg¸íw·Ï×ñy0Ç(‹iBZDóØÙÁ'RD`°‘KJH‰	h‘hI¥$La
+¥„Döõ „÷É—#B©º\¾É7ÊZ5 Tz7H$Díèûi©÷Ï_•úý^ŠÇÊÌj?¨x³1Ä’ÉU÷p}o«ß×Uöþl¤`õ{å< 	PËú}/xÕ$¿?Àà‘¯ì¿œâ>:I~4‹k>/ÒÝ	`©ç7; ~F>úµm¥˜}ëùö×ü½còðñU
+ß¾Ûî储¤Ÿ<$4‡ûƒ!=¤§‰›û¿Z_™ƒmýBùíöì“áH¡UU6Ø¡–rvy©…gãkqµ¤©[³ž±­ì(X?›ž»_[)ÂoI¼ŸåFJ"Jª!RÐx	¯Å á’r•( Fõ…lYm‹-±e¶,§Â= }mÏûóì<NÚ
+ŸÞ¡¢¾Z²”Ve‘-D“…:)mÛ«ûXb)…=cß0ê£½ICUº<~QŠSôbÚÀ-ÒW TöSœB±è³øÒÏ:ù)áìÇÇo˜»l¥*¨ª¥G´j=…žG4‡²îù¯ïS]RY=ròœã`rã‰.:‹µ÷†+…i)ëu1‰KÚˆ½cÀNt 	}é¨ýÑ: h‹rÝ›ø
+sŸyõ=uÆ­ÃÕØsÍêÙ$}.
+‚v$õJ'‹ÁÙJŠRdöw[©Nå'œ7ÙøÒ=´2ªªU=¡¤YC¦X=<ÔKTEÄaŒ’–ß’^ Ô%2Ò•‰„,˜àÂIFI‘`.›'!òµj`‡…HéÙîwoZ p­j	'¸ŠüøÃ\b»ÜDØÅ†”T*¾Q礤Oˆø
+ËE»q2¢­èGNáhNò´b‚Ϲ¥ÁrT2»Ó€Ü°ô‹aåÀ²UHâéÖ.çß±Ý]»/~»h“µŸ1¯8*‰ß½d…Nu#g
+h¤…Ò|ŠGXg—ôC”ÅDœ;Ì{ü³â¨ ‘<_Œ~1_+?4~¹ðÙ’Z°ÀSÌu|èÝ—hK•
+¢B
+ÿ–bDð8)'Àaí!õ5ÏãQR ‰µÔ¢åß¿mó'ô”2t9‹;C”"ñ;ˆ¾\¢Âvˆ±¯±{òo¤µ="åËÌj
+D*¤—åazê^HIZHƒ…Ùû»'ÚŒ	Γ‘ΖTI}uèx*“Ùñt0…l#ÅÓ·Û|{Þ¡¨µ}ŽŸÑØ‡£é¡§CØï;@¤¡¯4l°÷ &Œ€‡|dé?V"›ˆ¾OSú઩ÉàñƒtÈ¿:<;¸«ù±Ž¡êI)ÛQ:”ìlõQ§MœW·ÆÇò³¥˜^Ò•	TœÊf¼·<…m¥q²ÛÉ9õŒqù06º±L‹Ñ
+(.äÍ@Ër6ð[ÒâÕÏ!<½—"«¢’z~F—Üû~×ᇉyЩÁkŠQ(¦að@B‡¬$£HG¶FâºkŠŒwYÍâÂþÖõ¥ç-6oXÁU]]-›X*>0Ç\ñg$©¯ÙiûQ¡ù‚Ñ’˜Qn¿8P=@,¯00 @0/é=ïQ|ïsÍô©õºWçÑRü>½ñéÄïÅðmz8”kIFñ`«lÕ:¶û/ôz,陿w×òþÝIþd ŒºAàû¿“ç~ªÏ$*ÊR”¥Kwoti*N•¶Û¿&ìz¯•Ò¶VJû/¶û¯ÃŠñÔ Æú€Îƒév7cøÛ÷Þ_ï¿>¹0“wÏÝò¼Ðû¤·ÿR{V|iüÏŸ°0$ÒÂ3ñT?‡4C$:2Oî"z3ýû¬²Ë,²ª”¥2MãXÖñ JÒÖ
+邊(¢Š)Îþ?ÇXûð…ÁCˆÆ.
+ٍ“ú#tr×,cÆ7á„oÊ´ÛÀ¸À¿ªÎE¸k$¶zSx0ÃQB„zíÊ7£W¾Fôú–D	€ökèµörøû¬ýF­8t
+
+†ÜÞ‡xb
+
+ˆ± =×èëôv—õû¡äRÊ%,”Cí´{†$,ó™!ë?!]i;"Þ¹1Gø;bT”‘*ª¥UUTA@Á=? ྯl€Øù:LFcöÇîZmqäõÇëß$™sQ?*?`©’L[‡n(ź+ÛNÀe;i¹û‡$^/)RV\ å#¶Æ9ÿ|ÿò¹þÏœg±âåQ>"¡“â¸ÏÒ¼X…+fø[ÌWˆ¡l¨Œ×‡=eäN¯;kù½í½"òW¨vó…þ}PÝl$
+-2©a†$ìÉnw–f“Áä,3b4ˆ‚tîÄuóóêc½&Wõ³F옲Ù¤¸6I7rŒ£l(eVw
+²¢Z¯<±&èÙ&ƒˆ.Ë%¶˜Í*LÅ]¯ê	
+aæ,¼õ!4mΣ ÐIꉍÁy¦åflYHþêIRQkÐ
+6oß\»‘0^t#º:©Á#vô{’‹vƒËñÓßé¬0ú|¢bL•EY§ÈèÞ;ÏöƒXÃ0Ã
+LñANT…QEOQt‘nÓäiø+Áê³)¬VWz…KT6GŒ_¯£¢úý‘JnuI²Ê-_c¾[âÅ$"™Ý>ßp³½óæŒ0‡ÏI;–3²ð<1‘%¤pT:éì¯[§ÃsèrÐv|¼v˜PñæÓq#¼×M§êL~…yü1F¸C.`ˆ”D<p¹î[”osLÊrGt;;j”î`„X…†¬ÒIT/:€~„T^p|‘ó[¾ªb#¹ª!	 ChOž )Pê&̤û`3*‰Wst„ñÙ×¥2…¤èt
+RPºs2C·|•CJÚ
+á"­RëJäH$­¡Й¨žå
+G~—õŒÁxzä0¶6k­Š‡8¶‚R(rø¤ŽûòPÌI$UD%T„UHET„U$%RBU$%TBaSÂ(„¸©%TK£8¶£‚IÌR`w±ÐÊØÈËoÓ¶0Ü®–¡Ö
+Ò‘ê£H¸Ê(%az¬‹Òª"…JT›b‹X  ªª(/Á–ª¤¥•H¾Y{p<G$yšŒ6T­–P÷8 ³ÆÑÊ^’CFY¾ ðd9ˆ…‚wd	Óˆñì2	P¥
+J‰i&Ê"ß4Æ{<0ôÃ=²¾ŠŽzÞÛ^a{ò^)	À——$,qíäQHòñڔŸÏÏ„ÞÙ`“ä5d"$ŒK0'ŸÛ¯Öà,1‰¢[ó:ÂõÊð“tô’Ù"IýÔª|ø·Âvmõa pƒJ7U{aiàÂ˜ŒÁcxÓJ’196nm¶"¥b±1.ÙõƒÝðq¼L¨©R¥UÝò{¸b/û}xŠò­›:¶Ýµz‡¦‘6Tzm}=ß	œ
+sjš(Bh0%¸MQŠ_6¶I8‡²°qÒd“;Ãjø^ìgF>ÚÇÍ–ì šO¦¤ˆ4B/I0@IÙãÛ™œcjÙ¬‰ˆÓFù¸]—mr:1TÂb»J1×v©2»9S*çVÙ&<b‡½1³…"–(,	5³ˆ©*…PªÚ—‡éñ~wåæõü™ìl[¬XIò¯qq%PTóÛí‚Î.ì'’ë,ÉœJít‰…_½žr¯ü^k0…²F®ù Ù&1΢÷6ÅyóF´
+ä÷Z~D Î¸×ُDŽÀ•°Èfý/iŸì2“¢ou$úéÉ71)¬)‚Ìönhœ}èz~°òCµ¿“.m€çAfPªˆ	³#•À1Ýla<"âpl‘­0sç÷ ‚2ÒµKÂÕ´•¦“p ªçk°È[)3ç0hÄ_$Ì
+F+mXÍùð"•¹…ÝðØ¼»kûû=žÙ	Í)JU;|
+Á´PçJ)AWr/Pà[(ýÙ5Ï4|T¡Q Mß4Dð"G®>ŠaSXp‡_@>ˆÜˆW ]æ6Ì=5Ø*˜e{‹]ûO0–ÍL6ñnúõ"h¾A„ˆ<	DãVþ¤QIj{QEQEQIï`¢M§Çç'ìêûžÍàú9
+w!\ÀÆ,´J޳29³Ó¸ ¹„©Pº<Ç?q«`IÃà†® Ö¹¬D¡Â¸zòá'òRg³X’vÇXðÓ×yê¾I¾åë4¢´(Š ÁH"jb°ÐÉ>0±	èaŸIftRH²		è'@ü*ÄÃs­Û9­7Þïô‹[€ô©¦üZž>€Ô©²¢ÑQ7%MH7¢Œo¬¢;Bªnþ‚šÕEÊ 7 ßçå$¶ƒé·ßŸlc‚«ðûü±¾-2UI*³z°x ‹{g¬oõâ4}6]!ë<gi’åðŠpÀP;¡¶I•y-Ÿíiý¿h¨µURòIÊ
+)µS…Ù^ùýàñ>~Ú}>¹ÙóÃujÒU~£ÝZ¤œåWJ-ËßÓ±†ï)#Ö>‡À›”>89_ځñk"í»kõgd‰­(Pð³HO"D¨²IÝòð~Μ_R‡ÓºHl¤¥U”¡ZÐc¹ŸS§–¸:Ç„fC&G€’hè)sÓ¬å‚ÂhÕ=ŒF؉hˆ&+nÉ#sˆ‚PÖ&TšãsôЉª
+Af³4IÛ$êÚ-ÎÙt)H¤ß¤Â¡Ú¨rÇ€M’LÅI(VÌ5Ѝ>úÙUR`ÄZCˆæÝÿmA˜Ü.B¥IC¼¡6¥{+
+Å*ºH5W¶!CïGm*h]hëÀPÃË"ìXD©ª—‘ b1”‘÷rŒAèÍHôáRh4R´²$«²„Ko‹Ë´Ÿ§wXtœJQH@ }ôà
+eÀ'×E$4_¦8¯‚Uá1»2D–~?ÔØC¤*I8wµá'4?To‰Â½ƒ z£vðë‘é‘álŠó½ª±lûó;Ð(ûûÑ& s•Fõ†X#sp7¢4‡`àšIKB€ÒÕHÏd1§¥‡g³f*Èo\»ñ&ÂëV7tCfBc]t„ºŒZe¦v
+FÌUiÛ™I!ä¡8;¡Q:ÑuQ~¤RuÜ1’^…b/ÑQz¾J.ª®ò  åo¬ÇƒgâW‰=ª)é[¤~¼×FrD±s6&š@iè"3ÓØw«”9´ÄóÃ4ò.’kÔDjï14¬¡2ºÛ+®‹…ï‘•äÆ"-
+N ^l<²5Bb¯.7òX»Ñ9¸¢žo	ó­„'Û‚
+T¢"~lG}d½ŒÐÔ¯Õñ 8€ ŽÛ(Ĺx'eZ]aT-
+²/.öÖ	„*˜^
+°°°²ØöŒ.FUˆ¢J¡RT¬jÙU‰'ìmï‘ûùk
+
+íXsÙ03D}[øå–16dVz^Ås©1R1ãXÞ,Ä^)—1˜PNOjUJȯ9¯‹vð˜".8 Î	™&Þ€èØŽ=ÑN¸sÔ÷Ã¤g$ÐQd•DfÅHtaƒ@œðç$Å"ö–&¤”ÞªÐf8ÔH¼
+™¬ªëÇ0VÝ,útE¹yÀߎ‚x@¥*býÐé2IÙÝÙ[{	PÙ{HUêÖq
+ÄR;h&7ˆ‚h¨Àß/3’'Ï0è…ã8÷¨Gp1Ù’%Þ™V6[-IH¸F·À;ŽÓ¼ÖI9‚¨W¼VMü’Öîl¼®¡ãÑ
+$‰ÕµšˆÚEÉ[œ]ÀS•à©Ï˜+) k°(ǰl¼JK|“v˜ŽªƦêFR`›ÁÅ	Ñd>qJR•¶çMèVB¬¤,,´°²Ç2lÀ›¶@5ž¨,?pM©IâHMD–gºP‘9®Ä"ûåÄä=`:¬Øwžúä ´J#¤’Œ@L,„(5VaªŠ¤'p¡(©U%J‘’t¯ãÂ2ÒZsëÉÖ
+¤æ,ˆìôŽˆÿY;™Dt¢«E	9^‹D
+PF('0ySjïy£t1v ]õŸ+nŒm­™Ê¹7×	Rq™c‹Ä^&Q="­HÈ)˜¥ØÀ! 2Y()N3{°&5 *DëøWFÑ@Ï8\pôOi#úÛ¶ë]-·a-‚ÊÉcŽ/–è“®¢òtÍáBÓí¨ž`ùoh«ïE6:†œÅ(Š~‡^ÖÁV‚Á§šÆçByM'Âè“·p6CŒæ^UŸRªξ…÷ €
+x u§!‡ãy$Fë#q)$TºªÂÖU-nº½MÌäžHòYþ|¿D\5‡)3‡ÇâVå-DÊÉ%§!åØêÀwóþŸ.ÈZO%wµ	8šÎ#¸l©#ÑØ°´P©ALjÒõà0Ùú³¤¦£”*RLbƒZ
+ßB`yedÎ	hɺ¼ä܁U „»µTpåƒý98HY™m+êÛI„=”‹#E"t;\¤’ÃÑÁŒ'w9þ$x¬2ó'|ÃD“Å]`ìT‘n²`¤Ÿ,Ó×óW¿ÎKYY"u‹ß-.×+ã7¹­wnûÆÁ¬Y'Z{ÇD†Y`%ínö ÂIðrX]³ÉiúHR'1ѽù¤GÙ ÒNÉIõÞóp²sßwàâ‡Ì#µ$fHÊF
+ß]C!„òIê]Ð$¨wA)ª•ɁtKö¢Y1^DµD¤pA˜ùã·”f0ÁM]€Ð´ƒÞÚê*·­i(R”>;ÇÏ7‰€TaS«ä‚…DI$P¨IÓTç”$eb÷^É&§íö[8Á!Bëˆ‚!+
+{†UöÚªª;¤YP)x€Ò ô„ª„8¸0	ŧºCÜXëÍ…½ÔÙ—áo-ä´çá$é†Ôl	KU±áÚ«ªÐì2_,„Ô
+¸I2r™Ø´Ilg¢¬JæÉ6#J‘J’3ïèŽå4j5 ï¡mÞ1°lèX{öÈ€pŒ£Ö„qH;UëV“eRuö¤¤Û:‡Æƒ°cÏ¢ÿÞ‡fà<ê¥ Šá9å,(
+ ‘¾àœ˜"œø¹¶*ª$¡)ãN:¢N©2tå›:•&0>P™“
+î0Nb8âÀLbˆHD,„d1ŠOpÒC%%¡3†4ÎrˉNi$îÁ—SbMn²Œ£H¼`½Â"	CÀ`È//wg÷í2‘d
+›Ú3qYiy.Q…¹D©';Mo…_ü»€çpl/ËJX_-›aéiqœ+;´1š,¸´€Œ@ƒÑ|×@ƒÐN…UÍŠi¤ßÑ9M@A@ÂcŠ”QzkFå˜ÅUE£·^ãTdù¹ÓÜî|@
+é9È
+û$•+Ä›¸1 ðQqä´¢°²?ÅyOá
+7Šœ‡@¼½Â⃭„L¤1IÔ僺e†öhKɈ[:³”B¤FíÀ6#€leô£©µ´0	Ç	7U#ªFÊ+–9ƒx7‘¾†Nµ“n€Î5“"^	ŒÙˆ˜÷­'lUܝ#â;±ÃG’KІèì²á¼Pa%ðXc@¼x'F(ÛX‘’òÌl1ˆ‚e&=”	(<°ëD‚m
+"&¤Ô^õz„¼uõÛJ“dH¡¢+ËF N5íkz,:ï¿®ÁÖþÍâfºL‡Ìés×òòBÈ›œ§i¬¼ŒÛ4’ìZMIŸf6lÄ–ÑKÖ¬Eå¯9h†€ãZÔGSS-€Ü齬:dkõA7ïÏDKlÏ÷´Š‚UÔ`6et¤µób_F…7aŽK÷ß±ñǬR”ñˆO–‚k"ŠÑ0h™6„56ƒê™!*B!ØñZN|ÝÙ<ÆBʰ‹Æ‘Š$ȇ\°^hèyÝ0DT)BT7Ù½¤”•T3WfÿeÉifXÇcdãɳðýs%ƒTEMÉ&Õå»0yãšDÃt*u×]áÆãKt‹"(å&Yb܁‚4©DŒhKTpÈa0LRl„ä¶àÛ*BR5ÄÆ›¤gB¦-4ÑÖ6_:*ÐŽáÆÚ
+é:…C9Žcu†<æ½#pØ6ÇÔj5¹NGøß.¶ZÛá—L–Ö/kuÌ–´uƒ‚§­ÍÓPŸèRI ™¦°ƒñŠÝêá×În÷øwu’𣧑"`y+„<wu$š}Ðp¢D›<á-#öøúv¹Œ~½]•	—ã[',íìlÇº¯Ola"÷ì”xSÑÇËŒ÷Ћ‰¡­]1ù¢^l—¹šÎ(Åã;jÄ^¤’}G pðE"¢•Se4٨첨pýÂ$=´
+R¤ª©$“£6ø6½5!ÎÝ.ƒŒ=A2¼~?mëâÉMŒRc®£ZŠ\Ty•
+@’É	²M!!
+„	¬àEØ‚Áòp{qÒO¥mi õû&»ü繉8¼¢$Í$UIèØŽq̼’¤¢GÏt¬_¿“h]ÉØ2Ó?á"Á‘Hê$X"’PEDqSx¦IÛ¾FXÇÕd‹"pð_plÿPëÙŒJº`Ç
+õc„“Ï/E¯l^lÖøQ,±B“pæ#8.ÀØ ¶[1Ñ&É3‘ýQ6eŒHPùEì…Pzž5š=±QĹ;¿çEPÿÅÜ‘N$b,@
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2n2s2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2n2s2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2n2s2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,60 @@
+Machine (P#0 total=33331648KB Backend=Linux)
+  NUMANode L#0 (P#0 local=16554432KB total=16554432KB)
+    Socket L#0 (P#0)
+      L3Cache L#0 (size=9216KB linesize=128 ways=9)
+        L2Cache L#0 (size=256KB linesize=128 ways=8)
+          L1Cache L#0 (size=16KB linesize=64 ways=4)
+            Core L#0 (P#0)
+              PU L#0 (P#0)
+      L3Cache L#1 (size=9216KB linesize=128 ways=9)
+        L2Cache L#1 (size=256KB linesize=128 ways=8)
+          L1Cache L#1 (size=16KB linesize=64 ways=4)
+            Core L#1 (P#1)
+              PU L#1 (P#2)
+    Socket L#1 (P#196611)
+      L3Cache L#2 (size=9216KB linesize=128 ways=9)
+        L2Cache L#2 (size=256KB linesize=128 ways=8)
+          L1Cache L#2 (size=16KB linesize=64 ways=4)
+            Core L#2 (P#0)
+              PU L#2 (P#1)
+      L3Cache L#3 (size=9216KB linesize=128 ways=9)
+        L2Cache L#3 (size=256KB linesize=128 ways=8)
+          L1Cache L#3 (size=16KB linesize=64 ways=4)
+            Core L#3 (P#1)
+              PU L#3 (P#3)
+  NUMANode L#1 (P#1 local=16777216KB total=16777216KB)
+    Socket L#2 (P#256)
+      L3Cache L#4 (size=9216KB linesize=128 ways=9)
+        L2Cache L#4 (size=256KB linesize=128 ways=8)
+          L1Cache L#4 (size=16KB linesize=64 ways=4)
+            Core L#4 (P#0)
+              PU L#4 (P#4)
+      L3Cache L#5 (size=9216KB linesize=128 ways=9)
+        L2Cache L#5 (size=256KB linesize=128 ways=8)
+          L1Cache L#5 (size=16KB linesize=64 ways=4)
+            Core L#5 (P#1)
+              PU L#5 (P#6)
+    Socket L#3 (P#196867)
+      L3Cache L#6 (size=9216KB linesize=128 ways=9)
+        L2Cache L#6 (size=256KB linesize=128 ways=8)
+          L1Cache L#6 (size=16KB linesize=64 ways=4)
+            Core L#6 (P#0)
+              PU L#6 (P#5)
+      L3Cache L#7 (size=9216KB linesize=128 ways=9)
+        L2Cache L#7 (size=256KB linesize=128 ways=8)
+          L1Cache L#7 (size=16KB linesize=64 ways=4)
+            Core L#7 (P#1)
+              PU L#7 (P#7)
+depth 0:	1 Machine (type #1)
+ depth 1:	2 NUMANodes (type #2)
+  depth 2:	4 Sockets (type #3)
+   depth 3:	8 Caches (type #4)
+    depth 4:	8 Caches (type #4)
+     depth 5:	8 Caches (type #4)
+      depth 6:	8 Cores (type #5)
+       depth 7:	8 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1
+      0 1.000 1.500
+      1 1.500 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2n2s2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2n2s2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2n2s2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,24 @@
+BZh91AY&SYã;މ Xi¥ÿØŒã—ÿþuï΀ÿïßð   kø`7¨A´Ì¶àw:× [
+P) R
+œº€   ™4ÐÈ b2€`ˆ4 d
+ SñõT¤üªž¦˜€†™4##!“„d0M©™	)µô€=       z “I	©’OL¦€   4    ™4ÐÈ b2€`ˆ4 d
+ )Ah™ “hž¦§”ñM=Aâ†LšM2i¡¦PÍOÖ'抗äòÎ'èíÁ_œLÜ&ãàý¿KQɃÝ÷¾/àøþOáùy»òåˏ\Ž!ÈF"w(©e*½ŠªÀe%‰/AMººúiÕ§=:®©HL£z¶´‹ÝÅ®ê©wWvÔZâ×uT»¨ÕêôÓM4Ò…N\î©^îÖ™™˜Öµ3©L¦S)”ÊT¥)JR§7¨Ôj¸FBÞ÷™›k{Þ´ÅÝØMU)JR”•̵2ÔËS-Lµ2ÔËD!„!wvÞ^ðËÕïxÞ·ºÝn”¥#
+R²”¤ÕW­V©JR<Ü`ÒUU^‰ŠŠ£éEgJ(Ã:QFÒŠ0ΔQ†t¢Œ3¥S¥{  ±°-Ћa5râÕ6\L!1Š"$Dˆ‘,(°²&A˜Ìc1˜Ì	°!Ⱥu9(à:ª¯Kj½Zæ\LÌÃÌ0ÌÃ¥-)mà„‡Q
+ªª†u"ŽéKJZRÚ[Jа°Ú)––Ò–”¶•–cc,eŒ³#Q7oÑrŠ–©‚S›0`N Òª—ÝŠ–RHÈÔɃ2¬ÃLÉFXÌIfH¬Å&9õp½LéÒÕŸáÂÕ›|ö¬Û•«&2c&1ù³óP~€õŒã¼ ß1m=G,K–%Ëå‰rĹb\±$õü¥-”¶RØÑ²–ƍ”¶h úÐ \憹cž*&K™h˜i,eL:h,aD:h,bf&K™‰†’ÆTæ‚ÆêŽÕ­v\ð´Å¦MóÑÛÇ—_?*J2
+¿TT°'Ò&±)àõ½òj&ÃÛÙ®€qZžB*ªªªªª¢*«èóà'›3Ñn&8ânS9€H{”¬8EK€û‚úA²pç›é§]uã¶Û$’I$’I$‘%ݸ€
+0Ë4Ìêc¸¾ÆÆqïòyÏUUSÄÅUUT·Y¯ø                                            3333332Jªªªªªªªªª³Ä‰%öK2K2K2KŽIfIfIfIi§mÙ„³	fÌ%˜K0–a,Áëâši™Z>‘$$’I$’I"K»»°µ€‘`	feUUW€88UUU;ÛƒjŽ­­¶Ú¬âpªª³@P4€Ð@NÝ£·z;víÛ´vâ";ýþø 7 kóÇ<àUUU99UUUV×$’RI$’I$‘%Ý݆a¹°°|¥êt+5­mÑ‚L7&M§^5HMz¨§ÆÐבïq5òšü=êøÝ¦¸OGsæÓ§Å¦û´o·ÏþãÓæÐb¦
+`´˜ÌÆ3:û<ª¨§²*^Çô¾¡ãûéHúDØ>±õ‰õ¾¡7¬:†ÌE ´¶ÇÁø;Ç€ø]ãú„ü¿ÛøÿːüqzÄ• T½QRëc²cÌÓe´T±6¶cžÍꥴÁè{ve½ò7ÚØÓlU/æÝËâŸ7Î€àx›7mšÙìö8×ÁL9V`.!¬‘C&,Bfi´D²ar ð hŸˆÇi:½¤÷½Û ÅL,Ái09_Œ}ó‡.ï h|Üz's€RîÌÑD³A–Ð.Öu†Úuéâwö|½¢ã·k®yY6¨—>°åÙ-x¹p“ãÐûð8ôäé¿?Ë3¾\6P´ß¬ä¨™Âf¸háÅÌr:ü<ο&xYÜ×çÙ»t`“o38Ëšœ&ÏPBeÈ4
+í<`rê³°yGnTÁ2`uty~};•K\újïØ8]£v¢otðJÛ`Zw4k8l9à›0o§
+Fž=kƒŒÎჽ0°aZ¬›å•bdÅY–£}ZYVY¢*^è©}8Bz9çêu^´óvÞwœ^voWfF.ɾ
+µÛ]­óVð/(;;FÞ¦TÁ2`r—&EÖÍ2:wk­1ÇAßÃM±;µO7C{Ù
+Ín:Õ=‚ÔPõ#½ì£
+Ãd	Ó¯s“Ÿ;ůÐ¼Í^¦²Ý&36\xfº³]mñ¸ì
 ª]Ã@Äœ»â|µå‘Rñ˜1SɁ®ÛN“Ìsó`œ8ñÙŽ3A¯n›µnÞimšmëllmqŠ–¡N*išhÝÅ“¼Jgeœ\‡{y¶ôk‰°ÅM–šN}|uó`írÑÇlÎ]®w3NxMÞ8íÆíp/âho	«†èï!ÞÑÖK‰¿©v;]#WERζ8ôË–­ö¸HZ´ÚßG
+8ƒ˜ó0¹Ý2sh59N®÷ɘA¡1PÖ`I|MëO2ðey7½lÞt¢3…ÍÙªp›ºÔ:0‡¶:ò‹Ø!8†e†ó±Ú†uÀTQŒF1’ÜfH	É«!@D@ÕiY‹Ko7ú"¥Ã„vs朹¹k¶ª!ÃÀä0¾¹„ê…´å•(Ê”JÕÑGS§&Ýè¹Á׎]¥àÕO¡Öe;7­Ã™»8MÝpÉâäéÔ!,ç5Òp2ä
+CÖg«¦™k!,¸dÑ,´a®°+UÄFFÚ壚m†´o“­D³yŒc7‡£ƒ~wœE܏.ó[^]5à;¹oœ†
+<š°îŸÎ@¯ÖFudŸã×öâTÁË*fæ¯Tª¶\8#&ŒqfæqfqzÍq*`さ3sW4uQQq瘽íyÎEæsN÷šÍß=ךÌâÜ9¨¨¸êw×Qyœ^u‘ySž#5›¾»¯5™Å¸4uQQq©žy‹Þלä^g4ïq¬ÝóÝy¬Î-Á£šŠ‹Ž§}u™ÅçY™Õ9â3Y»ëºóYœ[ƒGU™ç˜½íyÎEæsN÷šÍß=ךÌâÜ9¨¨¸êw×Qyœ^u‘ySž#5›¼p2¦njõJ«{˜_‡²{$à
+4§O¤Ô3ô“Ùù‚~VÛa6—üæ‹ø(û㉎ÀÇìcì~ÿË™ú\÷N!÷¼™˜ªª¬	„Ÿnž¨C?‰£w;÷^Žƒf­Áä>§æÀOãuã!à'ßWèô3˜˜&ƒüôæ'1Ì,ñ—ÌàC÷EK½u6}Ò?P{ïÖ=nÑö>ƒ˜ä˜ëIö4Š—°O`›5~Ðîõ‰Öô{âzš¹	犖§_TT¹OØÔx̪¥¸TêØMÝ]‚cÞ
+_µÈNAЖÃ9Bqª¥¸”ÇÚ'˜X¦ff+Áïð‚Sä¾ßc-¼Á³íZ
+Ú€:	ƒvïò;‰Ó˜œRô¯;a7{ôè'8©`µT»{1™6A;ª"öû|¡;ǍézOB0lo,wEK„5¡t²;[	Ôh=£Ì?T¸	Ä<Á窥È>Ðáê|o<T½á)‚zØþGx|-Þ·°îKˆœ
+wïGÆFÑ=høÞ§­ÔÑÞ'®*^q5Ö'Q
+ö-ÄœZµvõEK€s}Ø©{š¿õâuº„åB_¸u$|M\ƒwkåc‚O}ìw‰üB{bt	䊖âyÄøDè¡6§ÝHù_¸êó¤í8š¼cÒ&ÛºVEKÑI°{F¢{†­„î÷¥£€È©y
+òDÈ¯ˆT±U/¹,MíñzÞôTµQ06&‚g:ÝÂz8ÅKWT¶*Tµn{´.ñ’©l–*¥ÁÈMœGœDÐNá8‡`›	ÌO€ž |GPè¶bMõ/µ(}¸CË=Âun•f‚q:	›	NÑ<Âc¸L¸T¹	ç*¥Ì'º$ÿrE8Pã;މ
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2s2c2t.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2s2c2t.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2s2c2t.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,35 @@
+Machine (P#0 local=16591312KB total=16591312KB Backend=Linux)
+  Socket L#0 (P#0)
+    L3Cache L#0 (size=9216KB linesize=128 ways=9)
+      L2Cache L#0 (size=256KB linesize=128 ways=8)
+        L1Cache L#0 (size=16KB linesize=64 ways=4)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+            PU L#1 (P#1)
+    L3Cache L#1 (size=9216KB linesize=128 ways=9)
+      L2Cache L#1 (size=256KB linesize=128 ways=8)
+        L1Cache L#1 (size=16KB linesize=64 ways=4)
+          Core L#1 (P#1)
+            PU L#2 (P#2)
+            PU L#3 (P#3)
+  Socket L#1 (P#1)
+    L3Cache L#2 (size=9216KB linesize=128 ways=9)
+      L2Cache L#2 (size=256KB linesize=128 ways=8)
+        L1Cache L#2 (size=16KB linesize=64 ways=4)
+          Core L#2 (P#0)
+            PU L#4 (P#4)
+            PU L#5 (P#5)
+    L3Cache L#3 (size=9216KB linesize=128 ways=9)
+      L2Cache L#3 (size=256KB linesize=128 ways=8)
+        L1Cache L#3 (size=16KB linesize=64 ways=4)
+          Core L#3 (P#1)
+            PU L#6 (P#6)
+            PU L#7 (P#7)
+depth 0:	1 Machine (type #1)
+ depth 1:	2 Sockets (type #3)
+  depth 2:	4 Caches (type #4)
+   depth 3:	4 Caches (type #4)
+    depth 4:	4 Caches (type #4)
+     depth 5:	4 Cores (type #5)
+      depth 6:	8 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2s2c2t.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2s2c2t.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-2s2c2t.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,49 @@
+BZh91AY&SY§ž˜± ’ÿ§ÿÐüó—ÿü}ÿ߀ÿïÿð   nø`_ÏU$€B×mÀvÔëÀr&­ƒ D P*ˆ…R”Š’ï@Ü
+        5OOJ~ˆ™ª©¡êh4  ¦€     ÕƒOßê©M
+¨            Õ<É¥)¨ i“&€         šPjˆTòj=@ Ѓ&€    @pÐ
+ €Ð  ¦4  ѦA‚¢ˆ  #&¦C$ÙMG©æ©êj¡íSÔ=@Úšzž Ú!é©ÿPýƒùÄ,CýÃýâ5`~±GóÒC%,¶‰ÿ`Ÿ¬`%0‹¸Gß
+##}?^4¨ÐR4],ú¢?‘IøN!ØI€´$)T•YxˆH\b	 ŸÞ°’I
+BÀ„Ÿ•‹¿£~•êߣ~‘Þæ›šÕÊ÷¶õι‹xlïqæRÔqºÕÕÌÆµG5T¡`X±s72Œ«©WSVÉ*jí—e„˜«Ã3Ìnó¦
+ѾlÞöo¶Ûjââå³qÑ&®êÝÕ’Kº·unêÔÄJ§»¼Þtï
+÷½Å0ÃÃLÛ†)†ûܳbîð»±v‚H+V.iÄ9ræ¦\™l6î’¤Q$Ä%J!¢Iˆµi·( Ôé–Ü33‡8sœ™˜f#˜fj®µrâܹÞ/{yz··4™˜g\Ë—åΝïJpU#4¤ƒCÇbîÍ€0«–5Si±)©¥P
+b¦Õ@4ÔÚ¨›7NmM*Ms7s|Ms»¹»®ø$	2$
+BI 舤À²”,´,¶P²ÊU*Ûm([BŒb1Ij’ÚQ­[JˆÕjµ)hTm•QX°´«BÕ–ÙD­UP¥”--¥jRÙQUU%¥YiV[-µUEUe¶ªËj¨[(ZU–¨¡R¥ËÕ•Òˆ–•Il¡l ‚Ê ‚¨,¶Ê[(ÄDR …ª-²‰Z"ª( ‘U%²…²‡@>`5;"NžV‡V–Ú)Àà2A]¢ª	4R8­ÒÔ¦¦L™3´bC¦ÕN…`“€„1z«¶ëT¶”¶Šrp!Ò+»JЬá!¨’¢î«rh,ÀÐjDX	Ój§e˜gw¢u¾n÷Û¨'psUè6\Û¢f§
+t]nVb4ÖÂ$>—<AŠ$WPÈ1!$,"BÄ‘	DȰ¢ÂÉŠZ,€IVÔBRÈ!TI*?Wä-
+[üóF¨RÞM‚0Dýâpú~zªª£¯¶QEQOë ùÿvªªª®È¤R)ŠE"“öxˆˆˆˆˆˆ‰ýøþ;§Zºu«§Zºu©0L˜&LF_7
+^Z	`’	`àAá›™³{›ÞÍîlÑ­MOê‚‚‚‚‚‚€ÜïÐ pXñèÎÉ‚¶ì‹A‚¶ì‹˜NaÄ`¶Ä¹‡Á¦Å135Áml.^¹§Y=r\½sN³:z䢪¯Æ|¦
+2¶Äµ:ÔŸ0Ør×Ú½¼`;da@ïïêÔií“—…íw¶ÜfÕ·¦þi¯.žˆ'ŒDHù†Ã>ä"B¢Hü¯èÑý!‘¨ûÃõR>þƒÚ&z~Þ‡:dbQ)G|;ôØ=ž^>YÇ¡¨îöwf5ÝÌŽ‚4ç±=zÿ·Ûž|ôç¯$j:ÑñkþàéÏ~ÐÜŰSóuu—· s‘‰¼68WØ
+¹ƒç« m°Þ¶÷ÛáñÛsàúúëÜꇼ!7Šõ `u
+=cⵝ—­gÏ.’›Õc­i5*Z.·¿@= òÈP„õŠ>‰!$Jæå³¸°YÖÝ(ý£dy1®¦gAŸ]çŒiœòÎfa(S(’’D™˜I%  Û 4àÍÉ™“&L——ÅîôߏÊ㣝ª¶Ú·˜êëj­¶­Ž8ä§                                        	 „!fffffffffUUU]íݶ¶¶Ûm­·â{ˆH@÷!^žžž|ùôÌÌÌÌÀ  $      !  I@  ü‰&&¤EQEî{ä@~ | „…Årå\©½«»w­[»mMï{Þý½Òa4bªªªàŠª¶Ûoa'nÝ·ß}øï‡‰Dè$ðוóm¾<êÕw·v–í»Õµw½ë{Úªª¶Ý-U¶Õ½üˆHx èK—.T©SÀ    330
+šQQtmDUE÷v®®êò¦ö®íÞµníµ7½ïk € ñÏ—LyLävkÀëÁÍÝhMoE¥S{é9{6nuãyf@ˆ1µ`ÉÉHdü4Ý*÷¾¿Ø%<‰˜ü:®$“‹ì3ç玷XÅø=ÿ{Ï?L3<2ð“Ñø‡Ç݁RECp*ŒP²Pì,ï¦'~s HBKñPFBš«b¬UбV*ÅY˜
+þÁUUU~hD‡çý/³ó˜üÁ‰‰‰Éœæ?åùæD¥¶”²—ÞÜš%(µ‰¹K-þAùFCÂ}‡Ù$û°ÿYþ£ºI¹¼Üæóssr7òã„㍣Å>Ãó¦+Á1&LÃ#2fdž­4Òf’’ÉeTû
+Œ0ý^Ï„ïžÓ¡ú$›šššÍf¤j'êý?§ôóúútéÒ(ù"4+ÔBDûð“HH|é÷>ˆD†	Ó?G:¾‚˜™g·[%„HQÆ»i²˜gY!%Bq¾›M˜Uší Ml×ZÎoÇŠlèõ8j}&3ŽàøÍ²RÐ@©«…¡ç gMw/™|x6xM8¬ÖÍÍ<l©zYÞ^ØÂº˜ˆlë{£}f÷m¤’IøSƒbq–só;@û©'=7ú»uîú†”T‘E"…¡d¡–·i߃ô‰8׿¨ñ
+v¸
+ÃyŽNY˜^AŒ9^!íÎ&6œfb^þAžë¦ÿ£—l¶ì'Mô©ÍÊaV·ÝukœMÆñ®ìS~qÙÆ¸F_‹Nœi½ó½Ð‰
+³­ã¿=Љ£ë6Øw¦Ïð4½uß.7™ÃÀNQÆûñÀé[:}n×ezŽ¡Ö7Û«\3žY;±M!(§hD…kõ»l.ÞxבÝåÏ!¶úvæÚ™¾=°­4g{fŽsv–iu1¢Jô˜îs“:cÀ$ìˆN‘%U=ƃú»1Ëy¯MÞ¡Å$QH¡hY(m6Õκn;³¯<‡M8¬fC|az
+ò¶îç
+wã<p	­’qÇMg&r3¦™Dt©Î£5$šP—z4fàn2À´W;€½˜ÄHãyÑ‘a÷äIÉ	ÖôBMJØg¦ÀèÐ&Ûßc/VñB$=‰ÉêëÃUם{nhèk×&Œ)´52ʝ&úföÚÝŒ¡B=¢xC^ï>}ºuÍžcZ*H¢‘BвPÒo=c×éï𓘊‡^6Ã$’IíæO*•PÄHÃ…à ïäç7Â9«šæùã¥÷·­*®è“…+_FÉäóàÕð¸»jy5|y4tzÚ:Éš(èc†³][¥›íº$Yæ•)¢Š‘mª©‘¨<`æ0,7ñ×|ã¶ygtD‡	â8¢¤Š)-%
+¶¼°–Qk	ƒ(K4À=4Sg“Fµ½hˆÍ”—o' ¼®ûnívhåቪÉáэÛÅ„HX ´&¤ˆP,6m&»«.fV3.'Å„H[‘¡­N4ÆzéÓ[no‹ÕžlŽZŽBFóžÛsa³swÇ
+ž£#nWTg\%åªñ¬í<a´–BÉdÖÌ+ÐòãŸO.þ;4‘öN¶c‰ëã–ºw<~Üé'¡ãzÄdœá8Èϝš޴¾–Ï#€wç“L”»ÌB$;¼]›
+îòØl›é¦³0ÍMd’0ŒT¾m'&tã	£a Îšfç,fp@¦^ì72O[Â
+3Û¯ªz7¹ãÓ|.Õv:txNñ£¦´šÕš;Jv9Óºkm©ì  |5éž9ðæøïǾžìÛqÉÈwäC´äÝÑ“”sÒã;®ûMòt=Ðã„$
+^69ǧ`B at y{6:´Ök»!mÛ[6ê!Ûý°‰
+Éç¹²Yb•9v圹öi²k9d {RY4RPÀ´¤¥¤ñ¢‡aG¡ ”Ö¨¥•]Ÿ(]žãÒúkážx
+Å
+ðÛ›¥™½5—FœîZ2á4šfäÍ3YnÎÉÝÑUÓS½÷Iïöóß? 0õ©Ã^ð7½Å Œúšã½Äc!á.ˆß±MVÁPö-3žþ÷¶èïBë~œ9²¦ù7¸›º		¡$}@²T6
+á¤ÜžÎòpeðjáêÏ•
+“™<ï`OxÀÂoŠña«oµˆ³uä’I¸ Ìȳî jÃYZÛô7Ƙ $ÄeÈw:è°.ÛÃQ¢Œý }#ïâþ×ø×"®Jm9	Öç•Êt¤ÄÄ<G#Ëþ;eðrNÁÅ…ÅËV‹œ–J¤
+Sh©	ÖçW)Ò“ñQÛ/€ÐÊ“°qaqrÕ¢ç ¥’©”Ú*Bu¹ÕÊt¤ÄÄ<GTvËà42¤ìX\\µh¹À)dª@¥6Аnur)11ÁÕ²ø
+©;-Z.p
+Y*)M¢¤'[\§JLLCÄpuGl¾C*NÁÅ…ÅËV‹œ–J¤
+Sh©	ÖçW)Ò“ñQÛ/€ÐÊ“°qaqrÕ¢ç ¥’©”Ú*Bu¹ÕÊt¤ÄÄ<GTvËà42¤ìX\\³e`²U R›EHN·:¹N”˜˜‡ˆàêŽÙ|†Tƒ‹‹–§·¶ÿE€þfççœìÜà Í*U© ¨°ßÊ ^"4Ê a•9û)õžÚç~Ú—öÒ?¼Š*PR‡öí€ÛêWøáÞpQ÷Ib`úLóç‘”QHûÃðŠ03?ô?~ão#°b¯éü{ÃL#ðþ_࿱Úl8¶¬·úËŽaÔdkñ|-¶Ûm¶ØOVúÛþEÂñ[çŒygî¹§ö
+ÿgîoÁº<øyùÛæô÷XÓ‰ ——Çð{þâ? ;†š„È|€‚£òOÓYþ!eYBË(Ye–·
+E†´>àŽAþajr,²Ü,²Ý²7û~ÀŒˆÈ÷p&šwî
+(Kë"C€ý°‰Tèʇÿ[`I¹ýAüMÆ=Hïô•ô
+7þ ê;Ñ`<' z„Ó#Ô(†„|³èf!ò‡Æ#Ø70Ž6Xh&¢>Øòæ8Н„wƒV=ð‰
+Æ„sŽc¿">Áõ‘ì?Œ}p‰§ñé<ÂHØb1'Ü$<i"$5‡¨h„‘¶£#A"cq≑ðÈ™Dˆ["È…²!lˆ["È…²!lˆyñ‘FÏHùÇÒãpæ#AóŽàÈà`.ƒ cácA`šø’#a²	
+"E£ýÂ=cå)EªýE˜}ØzFƒí
+(‰›ö“Áâ¬6pÆ¿zL†Bäs
+Cl"‰à7сä>çµÜðmÀŠ3„:ˆÈï‡ÛŒx½ƒaù‰#ç菹G]C´"CÃaà5	ÈgÎA!Òy,h.a ŒxH$0(‰¾cæ> pü‚a§¼z{ǶD÷u&€Š3	Ql(Ô琰£ÕØ6ƒãMžCÈSÈ&$$=nÈÐh¾>ÿ°O®!Ôj#q=ÃØ|R	¡ô	é
+Gö_0õ÷z?þ`|‰
+‘íFX„çNú'Æà<GÔÔq´•—Ò‰„sÍÎòCODHÄ<„žR'á|ïÖ(t¯@’!Ð|B9	=Âl#!ëÒ`z§£^¢OHì8òBBÏß;ÆD9ˆÑD¡5ïp:DÙuõ5u	èÖ	! ž?ƒ‡âmª:¢ˆj"FE"0,$ï†û«º'Òð…N¢tuÿÇyûEò΂‰ëJXyˆÆ_ß"¤ô Ž!ˆn$÷öŒIïuè£Ì<Dœ…	<†£í!Ô2(yÃçEŸHñyÛ<¡ï${‡Qê߯#gˆê<Ljö‰ò	9h:©·®ÃQºI"GA"`Q´"CêÈî
+ˆùFØ›†â>10#îøiÀ`‘9Ã¨Ðuý¨ŸÏ‡”“q‘”I!înÙÑÞ4죰¸Â$9Œ†G®½d$*	ǐ±µFÁ¨ŒzÄÔuÄ$ù] ’ôØj#˜ÈyŠü`F¢5Æá9tàEƒÜ¼áqɆ¡ý¹H$9¶ïù/„"B½Ú¯B/ÛDHj4ÀW§Ìv ½Â9CÈw÷pG@š	8æ#˜yë°Mð#ÍÀT‰$†ÿÃídô§€ì2‰ÀÄÅ‚eñqÈsá¸ý‰€þ‰!#Ä<»ÌC"=#¼3 ÒŒˆÉôÎᆣQ(v„|ãà$ÃÀEЄ†¢<ƒ$;@v‚>ù$Bü]ÉáBBžzbÄ
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-4s2c.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-4s2c.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-4s2c.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,53 @@
+Machine (P#0 Backend=Linux)
+  Socket L#0 (P#6147)
+    L3Cache L#0 (size=9216KB linesize=128 ways=9)
+      L2Cache L#0 (size=256KB linesize=128 ways=8)
+        L1Cache L#0 (size=16KB linesize=64 ways=4)
+          Core L#0 (P#0)
+            PU L#0 (P#0)
+    L3Cache L#1 (size=9216KB linesize=128 ways=9)
+      L2Cache L#1 (size=256KB linesize=128 ways=8)
+        L1Cache L#1 (size=16KB linesize=64 ways=4)
+          Core L#1 (P#1)
+            PU L#1 (P#4)
+  Socket L#1 (P#6144)
+    L3Cache L#2 (size=9216KB linesize=128 ways=9)
+      L2Cache L#2 (size=256KB linesize=128 ways=8)
+        L1Cache L#2 (size=16KB linesize=64 ways=4)
+          Core L#2 (P#1)
+            PU L#2 (P#1)
+    L3Cache L#3 (size=9216KB linesize=128 ways=9)
+      L2Cache L#3 (size=256KB linesize=128 ways=8)
+        L1Cache L#3 (size=16KB linesize=64 ways=4)
+          Core L#3 (P#0)
+            PU L#3 (P#5)
+  Socket L#2 (P#6145)
+    L3Cache L#4 (size=9216KB linesize=128 ways=9)
+      L2Cache L#4 (size=256KB linesize=128 ways=8)
+        L1Cache L#4 (size=16KB linesize=64 ways=4)
+          Core L#4 (P#1)
+            PU L#4 (P#2)
+    L3Cache L#5 (size=9216KB linesize=128 ways=9)
+      L2Cache L#5 (size=256KB linesize=128 ways=8)
+        L1Cache L#5 (size=16KB linesize=64 ways=4)
+          Core L#5 (P#0)
+            PU L#5 (P#6)
+  Socket L#3 (P#6146)
+    L3Cache L#6 (size=9216KB linesize=128 ways=9)
+      L2Cache L#6 (size=256KB linesize=128 ways=8)
+        L1Cache L#6 (size=16KB linesize=64 ways=4)
+          Core L#6 (P#1)
+            PU L#6 (P#3)
+    L3Cache L#7 (size=9216KB linesize=128 ways=9)
+      L2Cache L#7 (size=256KB linesize=128 ways=8)
+        L1Cache L#7 (size=16KB linesize=64 ways=4)
+          Core L#7 (P#0)
+            PU L#7 (P#7)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 Sockets (type #3)
+  depth 2:	8 Caches (type #4)
+   depth 3:	8 Caches (type #4)
+    depth 4:	8 Caches (type #4)
+     depth 5:	8 Cores (type #5)
+      depth 6:	8 PUs (type #6)
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/8ia64-4s2c.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,18 @@
+BZh91AY&SY?NÍ– UË¥ÿУxçÿó5on€ÿïßð   jø`>½à[à	5=ÍÞñÛÞÌ#Ðt$¨„” >øè   Pý(         §¨ESóG½U(ýUGê˜M†C&&`CF@ÓF 5OÂ%Q=OQ¦ƒ@  ѐ  	4’OR	¨Ó@ `4` ™j20”¨h
+=@`	€ #&d1 R"š	‘£M#Dz4ž©ê ~¦£2šê?R2SÔgª|ȉöˆýB?PÿA O¼Ed##çúñðÀÚ‡³èú}¿Wæ÷èÆ3¾»í¾ñ DE@ˆ	xT£UÅQV	H‰P‰å‘"3·¯¡Ã£ž×µëU‹ÀV*í!VÂµÄ:yR³NbVYe™R™Âð¼/”Æ’H’M1ïßfèÆÃVeJR•œÖiR”¥7½ëDo{ÞË»°Æs–a–Yg›H\Ö1½cÓMc
+c
+c
+c
+aJ*JR“ZÓF“W7.j÷³zÞó¼ï,²Ê¡–Y™e–3jµzÕ*fg	$›ÌK»´šÒÔf)ÝK£S.‹xb¬Ç‡JÔ˜t­I‡K[ÎvÆ—­ã7¼‚L‘"Y%¢I Ø
+oy@´ &äEQ`î*®5­kZÅ
+E A²,QDX²LÈ*)–Ô­ATUSFˆŠ,F(¤5 2""*‹$Ë ¨ˆÄb’]øÐ'0ÚªêÚ¯C\ˉ™˜a™†˜a”¥¥-¢›BÅ¹f YÀs†—‹j²s‡ŠK
+°0“ÐòÉ!¨l2GvÛJФ7EÊ©,*U)UIÕr$Nh\BEÔ’‚Ð$ü„H”ˆ!Q‚¨"À¬dAdZjx¢nQ9Ê'«(œJ<2£Ã(ñõp<P° 8`  gô££º)”ó¸dà8d·…2æk–iÖ°×\¥²–Ê[)l¥²–Ê[” ­ö š2ô³b®²îU(i—R©CLº•JeÔªPÓ.®êèÛ.ìJ†™uU¥÷ÉiÖ%,erü¬Ø£ò1‘ëóz¬š³$…ðGZŽÎÎÜæîî'¦jD‰ò‰ï5óV‰p[J"L†$’¹$m¤y€
+ØÅÝÞ~¿Ÿw»ßw`¶tõÆ1U; ì;1U-Ök¿¿¼                                           Þ÷½ï{Þ÷½ï{UUU^7µmV•¶ÛJRT\DFµÊ#"#"#"#"#"#"#"#.Z𐐐‘@)P¤¶’[% ÛoBI$’I$‘¶’DMÈË+Èd…’JªªòŽQQS¤žG
+Ž­­¶îêªk­*QUS"ÆFFG\„‰Ë²«³³²»:ª¡ýýà   ox#…UUSfÕUUM]+—U])­+«mºÌ·VڝGƒÙ¾3ž’·otÓ,ÌfïK¸Ó,Ê©ª´©ÄD‰i ‘õqƒCcÊx§ÕªG~}®þŸøýÖ)$P´P¥	qAÜéìꘞC	 ‘T’	H•éüãúB‚‡¼{ǾI<õ‡Ø>Áø8©#DüéH¤rRå¢âââXŸ`ÀXkú>`Ò 8P2â§Óíͯ×jd\œ‚ÐQÃTà ¥À" *H"|o`ÀHõi=5#H•m1­ÍLF‘"Lh,’(ZÍh%ÊS54–ˆ.eE%AQ¢–¬ëxÒøh¥9\šêÞ	`DC&X¤²Ü$‘q®3­LPHûdÖ¡¤?IN’>qÎ…$ŠQAº>Ñî;+ó8s]ᢑ״ˆ‰EQh"X©Âø§:kXàN­¼šê‚&YÜ6à‰faMEDi´ìÓ[Üj‡»{ßsVøc#\hÓ6Ða	‰Ü¶wëçÓ¤yÍVfLpâ•0bªS~0ÒšQ!‘AÜ"4»ZTXU\.'YoHé8èfû‡”uP¤‘B*(4:j¹÷n¡Åhf«8™–iUK턚µ¦•*v^]WvXA"F‡’¸V qÁ;Y#Èr’(Ñ@…æ¬íPßZ«\fãQ#¬(e¥­UB7ã*•bs{¹ýdHŽ|¹]Jß^mk
+`´ê²ÃR\™Õ­%åÁ¦ò°€°‚w¤yE
+I"¢ƒsJR¼ xtjQ'\Áæ#0Ez´90S
+1”	
+D¡F"0CÀ¡H0d`‡hµ4r³ ÊJ©*„Ût.:{vsnËn/ݍñj\ª[6\«“j­nq¶Zk˜H'PÐ(G˜ÃJ¢ªp°»"DëèRH¡9tšÌŠ•9ݳE€‹'i`ŒUˆ½|kZDØ=–Å‹$F		M Ù†tÐ$\é©!ÖBEoZÈíPã|ï—vg2E»låcû‘:òA¼ætöS¤ìèË0¬ÎZÀÁrNÚã%ºÜ/˶%IQC"&ú"h_		(¥ÈÐT¬ÞQUé\†.æâ¦n4®)‘‰ å旅zÒK”QETÒŠŽç&úñvnÚ÷Ó³u4ÂæUZi¤œUVµ8¨èj:2äD߀å
+•Rª®Í{GN#xÀæçpØò$N]½2D!B$¦·/Š’wæävso‘Ô(:Ü6i¦-ÓM\¦­rË7w­®hÎd½ïjÖŒPÑŒ7"o°è»Ò†˜c
+p3Y™[ѝôL4”™ÎSÌ2D‰ŠÚH.ñ¤aƦc9¤)¦1Vc›«1[§˜æä'XkÜaÑ‘|Úh¢eDSïi à€´ Õ‡Q‰+ at J"€:rœéÍf®·ó•rKœ•rs.îªjnùÛsRunÍf®·ó•rKœ•rs.îªjnùÛsRunÍf®·ó•rKœ•rs.îªjnùÛsRunÍf®·ó•rKœ•rs.îªjnùÛsRunÍf®·ó•rKœ•rs.îªjnùÛsRunÍf®·ó•rKœ•rs.îªjnùÛsRunÍf®·ó•rKœ•rs.îªjnùÛzç]wÆÛí¶vÛ¢ÖÂããX£uG1Ú<ÿFƒÊx=/›ÑŸ«ïŸGõ}®/ü3øýÚ;Qíj…à1ØüËõú?ƃ›°߈ªªª°&Iô¯mûsˆsçÏžÜÆ™±6î~¬G˜Gò9Áåüb1ðôp"ÄXÿ[àG€•ÖH‰ ~â$N¹¾?€I¤>OØ<9ÇÖ(àÞÑül‰Ò#Ò#8ü°GÀGGÈ#эÄyˆ‘0ØIô"nGý`v©DÐ$ŽYpš!	:DWˆcðÜFáÍ	‘[Á6D‘4"¾";Ä¤ŠªªIAåñHòŠ¡)ª×Zw†~2Æ–=aÌE
+4ëÝ:çQÀa$O	çȍ=B<,F¼"PޤI«¦¦DXŽÄž¿(GÛä¾DJjD‰]„HšÁÑÌGLGVDrXù‡xûˆ‘5°yDPó¢H›‡süðö÷‘"z„H¡š>¯ |úz|]›ÕØäƒÚ…¡1=¾ŸWäâD‰ç€íñÈ’DõMR#lc«‘&¡Çå¿¿«—6Aï'³†>êÖòøöù„Š$æÚD‰ Žñ8Ža¯€Œ‡/Ètú»÷9yáCëŽÑà#:sQ'¡õŒü¦2#°GE"wdIæH](àØT £TuÁbPêëñù‘0#(2(Eˆ­„tvô^ÄH˜ÚDÈlH‘1£Ùa·¤‰0•	"k¸Œì;ØEˆì°tˆÈŽuê#Ê€’Ãéræj¼‰ã$Aû(‚¤¨#Ø#“£š	%XœÄVDHêÞ"»P
 ŽÉ	qqp’'ÈAÿrE8P?NÍ–
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.env
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.env	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.env	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,2 @@
+HWLOC_LINUX_USE_CPUINFO=1
+export HWLOC_LINUX_USE_CPUINFO

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,225 @@
+Machine (P#0 total=528473984KB Backend=Linux)
+  NUMANode L#0 (P#0 local=132101504KB total=132101504KB)
+    Socket L#0 (P#1 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#0 (P#0)
+        PU L#0 (P#0)
+      Core L#1 (P#1)
+        PU L#1 (P#4)
+      Core L#2 (P#2)
+        PU L#2 (P#8)
+      Core L#3 (P#3)
+        PU L#3 (P#12)
+      Core L#4 (P#4)
+        PU L#4 (P#16)
+      Core L#5 (P#5)
+        PU L#5 (P#20)
+    Socket L#1 (P#0 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#6 (P#0)
+        PU L#6 (P#1)
+      Core L#7 (P#1)
+        PU L#7 (P#5)
+      Core L#8 (P#2)
+        PU L#8 (P#9)
+      Core L#9 (P#3)
+        PU L#9 (P#13)
+      Core L#10 (P#4)
+        PU L#10 (P#17)
+      Core L#11 (P#5)
+        PU L#11 (P#21)
+    Socket L#2 (P#2 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#12 (P#0)
+        PU L#12 (P#2)
+      Core L#13 (P#1)
+        PU L#13 (P#6)
+      Core L#14 (P#2)
+        PU L#14 (P#10)
+      Core L#15 (P#3)
+        PU L#15 (P#14)
+      Core L#16 (P#4)
+        PU L#16 (P#18)
+      Core L#17 (P#5)
+        PU L#17 (P#22)
+    Socket L#3 (P#3 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#18 (P#0)
+        PU L#18 (P#3)
+      Core L#19 (P#1)
+        PU L#19 (P#7)
+      Core L#20 (P#2)
+        PU L#20 (P#11)
+      Core L#21 (P#3)
+        PU L#21 (P#15)
+      Core L#22 (P#4)
+        PU L#22 (P#19)
+      Core L#23 (P#5)
+        PU L#23 (P#23)
+  NUMANode L#1 (P#1 local=132124160KB total=132124160KB)
+    Socket L#4 (P#4 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#24 (P#0)
+        PU L#24 (P#24)
+      Core L#25 (P#1)
+        PU L#25 (P#28)
+      Core L#26 (P#2)
+        PU L#26 (P#32)
+      Core L#27 (P#3)
+        PU L#27 (P#36)
+      Core L#28 (P#4)
+        PU L#28 (P#40)
+      Core L#29 (P#5)
+        PU L#29 (P#44)
+    Socket L#5 (P#5 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#30 (P#0)
+        PU L#30 (P#25)
+      Core L#31 (P#1)
+        PU L#31 (P#29)
+      Core L#32 (P#2)
+        PU L#32 (P#33)
+      Core L#33 (P#3)
+        PU L#33 (P#37)
+      Core L#34 (P#4)
+        PU L#34 (P#41)
+      Core L#35 (P#5)
+        PU L#35 (P#45)
+    Socket L#6 (P#6 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#36 (P#0)
+        PU L#36 (P#26)
+      Core L#37 (P#1)
+        PU L#37 (P#30)
+      Core L#38 (P#2)
+        PU L#38 (P#34)
+      Core L#39 (P#3)
+        PU L#39 (P#38)
+      Core L#40 (P#4)
+        PU L#40 (P#42)
+      Core L#41 (P#5)
+        PU L#41 (P#46)
+    Socket L#7 (P#7 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#42 (P#0)
+        PU L#42 (P#27)
+      Core L#43 (P#1)
+        PU L#43 (P#31)
+      Core L#44 (P#2)
+        PU L#44 (P#35)
+      Core L#45 (P#3)
+        PU L#45 (P#39)
+      Core L#46 (P#4)
+        PU L#46 (P#43)
+      Core L#47 (P#5)
+        PU L#47 (P#47)
+  NUMANode L#2 (P#2 local=132124160KB total=132124160KB)
+    Socket L#8 (P#8 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#48 (P#0)
+        PU L#48 (P#48)
+      Core L#49 (P#1)
+        PU L#49 (P#52)
+      Core L#50 (P#2)
+        PU L#50 (P#56)
+      Core L#51 (P#3)
+        PU L#51 (P#60)
+      Core L#52 (P#4)
+        PU L#52 (P#64)
+      Core L#53 (P#5)
+        PU L#53 (P#68)
+    Socket L#9 (P#9 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#54 (P#0)
+        PU L#54 (P#49)
+      Core L#55 (P#1)
+        PU L#55 (P#53)
+      Core L#56 (P#2)
+        PU L#56 (P#57)
+      Core L#57 (P#3)
+        PU L#57 (P#61)
+      Core L#58 (P#4)
+        PU L#58 (P#65)
+      Core L#59 (P#5)
+        PU L#59 (P#69)
+    Socket L#10 (P#10 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#60 (P#0)
+        PU L#60 (P#50)
+      Core L#61 (P#1)
+        PU L#61 (P#54)
+      Core L#62 (P#2)
+        PU L#62 (P#58)
+      Core L#63 (P#3)
+        PU L#63 (P#62)
+      Core L#64 (P#4)
+        PU L#64 (P#66)
+      Core L#65 (P#5)
+        PU L#65 (P#70)
+    Socket L#11 (P#11 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#66 (P#0)
+        PU L#66 (P#51)
+      Core L#67 (P#1)
+        PU L#67 (P#55)
+      Core L#68 (P#2)
+        PU L#68 (P#59)
+      Core L#69 (P#3)
+        PU L#69 (P#63)
+      Core L#70 (P#4)
+        PU L#70 (P#67)
+      Core L#71 (P#5)
+        PU L#71 (P#71)
+  NUMANode L#3 (P#3 local=132124160KB total=132124160KB)
+    Socket L#12 (P#12 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#72 (P#0)
+        PU L#72 (P#72)
+      Core L#73 (P#1)
+        PU L#73 (P#76)
+      Core L#74 (P#2)
+        PU L#74 (P#80)
+      Core L#75 (P#3)
+        PU L#75 (P#84)
+      Core L#76 (P#4)
+        PU L#76 (P#88)
+      Core L#77 (P#5)
+        PU L#77 (P#92)
+    Socket L#13 (P#13 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#78 (P#0)
+        PU L#78 (P#73)
+      Core L#79 (P#1)
+        PU L#79 (P#77)
+      Core L#80 (P#2)
+        PU L#80 (P#81)
+      Core L#81 (P#3)
+        PU L#81 (P#85)
+      Core L#82 (P#4)
+        PU L#82 (P#89)
+      Core L#83 (P#5)
+        PU L#83 (P#93)
+    Socket L#14 (P#14 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#84 (P#0)
+        PU L#84 (P#74)
+      Core L#85 (P#1)
+        PU L#85 (P#78)
+      Core L#86 (P#2)
+        PU L#86 (P#82)
+      Core L#87 (P#3)
+        PU L#87 (P#86)
+      Core L#88 (P#4)
+        PU L#88 (P#90)
+      Core L#89 (P#5)
+        PU L#89 (P#94)
+    Socket L#15 (P#15 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      Core L#90 (P#0)
+        PU L#90 (P#75)
+      Core L#91 (P#1)
+        PU L#91 (P#79)
+      Core L#92 (P#2)
+        PU L#92 (P#83)
+      Core L#93 (P#3)
+        PU L#93 (P#87)
+      Core L#94 (P#4)
+        PU L#94 (P#91)
+      Core L#95 (P#5)
+        PU L#95 (P#95)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 NUMANodes (type #2)
+  depth 2:	16 Sockets (type #3)
+   depth 3:	96 Cores (type #5)
+    depth 4:	96 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1     2     3
+      0 1.000 2.600 2.600 2.600
+      1 2.600 1.000 2.600 2.600
+      2 2.600 2.600 1.000 2.600
+      3 2.600 2.600 2.600 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.source
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.source	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co-forcecpuinfo.source	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1 @@
+96em64t-4n4d3ca2co.tar.bz2

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,388 @@
+Machine (P#0 total=528473984KB Backend=Linux)
+  NUMANode L#0 (P#0 local=132101504KB total=132101504KB)
+    Socket L#0 (P#1 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#0 (size=16384KB linesize=64 ways=16)
+        L2Cache L#0 (size=3072KB linesize=64 ways=12)
+          L1Cache L#0 (size=32KB linesize=64 ways=8)
+            Core L#0 (P#0)
+              PU L#0 (P#0)
+          L1Cache L#1 (size=32KB linesize=64 ways=8)
+            Core L#1 (P#1)
+              PU L#1 (P#4)
+        L2Cache L#1 (size=3072KB linesize=64 ways=12)
+          L1Cache L#2 (size=32KB linesize=64 ways=8)
+            Core L#2 (P#2)
+              PU L#2 (P#8)
+          L1Cache L#3 (size=32KB linesize=64 ways=8)
+            Core L#3 (P#3)
+              PU L#3 (P#12)
+        L2Cache L#2 (size=3072KB linesize=64 ways=12)
+          L1Cache L#4 (size=32KB linesize=64 ways=8)
+            Core L#4 (P#4)
+              PU L#4 (P#16)
+          L1Cache L#5 (size=32KB linesize=64 ways=8)
+            Core L#5 (P#5)
+              PU L#5 (P#20)
+    Socket L#1 (P#0 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#1 (size=16384KB linesize=64 ways=16)
+        L2Cache L#3 (size=3072KB linesize=64 ways=12)
+          L1Cache L#6 (size=32KB linesize=64 ways=8)
+            Core L#6 (P#0)
+              PU L#6 (P#1)
+          L1Cache L#7 (size=32KB linesize=64 ways=8)
+            Core L#7 (P#1)
+              PU L#7 (P#5)
+        L2Cache L#4 (size=3072KB linesize=64 ways=12)
+          L1Cache L#8 (size=32KB linesize=64 ways=8)
+            Core L#8 (P#2)
+              PU L#8 (P#9)
+          L1Cache L#9 (size=32KB linesize=64 ways=8)
+            Core L#9 (P#3)
+              PU L#9 (P#13)
+        L2Cache L#5 (size=3072KB linesize=64 ways=12)
+          L1Cache L#10 (size=32KB linesize=64 ways=8)
+            Core L#10 (P#4)
+              PU L#10 (P#17)
+          L1Cache L#11 (size=32KB linesize=64 ways=8)
+            Core L#11 (P#5)
+              PU L#11 (P#21)
+    Socket L#2 (P#2 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#2 (size=16384KB linesize=64 ways=16)
+        L2Cache L#6 (size=3072KB linesize=64 ways=12)
+          L1Cache L#12 (size=32KB linesize=64 ways=8)
+            Core L#12 (P#0)
+              PU L#12 (P#2)
+          L1Cache L#13 (size=32KB linesize=64 ways=8)
+            Core L#13 (P#1)
+              PU L#13 (P#6)
+        L2Cache L#7 (size=3072KB linesize=64 ways=12)
+          L1Cache L#14 (size=32KB linesize=64 ways=8)
+            Core L#14 (P#2)
+              PU L#14 (P#10)
+          L1Cache L#15 (size=32KB linesize=64 ways=8)
+            Core L#15 (P#3)
+              PU L#15 (P#14)
+        L2Cache L#8 (size=3072KB linesize=64 ways=12)
+          L1Cache L#16 (size=32KB linesize=64 ways=8)
+            Core L#16 (P#4)
+              PU L#16 (P#18)
+          L1Cache L#17 (size=32KB linesize=64 ways=8)
+            Core L#17 (P#5)
+              PU L#17 (P#22)
+    Socket L#3 (P#3 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#3 (size=16384KB linesize=64 ways=16)
+        L2Cache L#9 (size=3072KB linesize=64 ways=12)
+          L1Cache L#18 (size=32KB linesize=64 ways=8)
+            Core L#18 (P#0)
+              PU L#18 (P#3)
+          L1Cache L#19 (size=32KB linesize=64 ways=8)
+            Core L#19 (P#1)
+              PU L#19 (P#7)
+        L2Cache L#10 (size=3072KB linesize=64 ways=12)
+          L1Cache L#20 (size=32KB linesize=64 ways=8)
+            Core L#20 (P#2)
+              PU L#20 (P#11)
+          L1Cache L#21 (size=32KB linesize=64 ways=8)
+            Core L#21 (P#3)
+              PU L#21 (P#15)
+        L2Cache L#11 (size=3072KB linesize=64 ways=12)
+          L1Cache L#22 (size=32KB linesize=64 ways=8)
+            Core L#22 (P#4)
+              PU L#22 (P#19)
+          L1Cache L#23 (size=32KB linesize=64 ways=8)
+            Core L#23 (P#5)
+              PU L#23 (P#23)
+  NUMANode L#1 (P#1 local=132124160KB total=132124160KB)
+    Socket L#4 (P#4 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#4 (size=16384KB linesize=64 ways=16)
+        L2Cache L#12 (size=3072KB linesize=64 ways=12)
+          L1Cache L#24 (size=32KB linesize=64 ways=8)
+            Core L#24 (P#0)
+              PU L#24 (P#24)
+          L1Cache L#25 (size=32KB linesize=64 ways=8)
+            Core L#25 (P#1)
+              PU L#25 (P#28)
+        L2Cache L#13 (size=3072KB linesize=64 ways=12)
+          L1Cache L#26 (size=32KB linesize=64 ways=8)
+            Core L#26 (P#2)
+              PU L#26 (P#32)
+          L1Cache L#27 (size=32KB linesize=64 ways=8)
+            Core L#27 (P#3)
+              PU L#27 (P#36)
+        L2Cache L#14 (size=3072KB linesize=64 ways=12)
+          L1Cache L#28 (size=32KB linesize=64 ways=8)
+            Core L#28 (P#4)
+              PU L#28 (P#40)
+          L1Cache L#29 (size=32KB linesize=64 ways=8)
+            Core L#29 (P#5)
+              PU L#29 (P#44)
+    Socket L#5 (P#5 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#5 (size=16384KB linesize=64 ways=16)
+        L2Cache L#15 (size=3072KB linesize=64 ways=12)
+          L1Cache L#30 (size=32KB linesize=64 ways=8)
+            Core L#30 (P#0)
+              PU L#30 (P#25)
+          L1Cache L#31 (size=32KB linesize=64 ways=8)
+            Core L#31 (P#1)
+              PU L#31 (P#29)
+        L2Cache L#16 (size=3072KB linesize=64 ways=12)
+          L1Cache L#32 (size=32KB linesize=64 ways=8)
+            Core L#32 (P#2)
+              PU L#32 (P#33)
+          L1Cache L#33 (size=32KB linesize=64 ways=8)
+            Core L#33 (P#3)
+              PU L#33 (P#37)
+        L2Cache L#17 (size=3072KB linesize=64 ways=12)
+          L1Cache L#34 (size=32KB linesize=64 ways=8)
+            Core L#34 (P#4)
+              PU L#34 (P#41)
+          L1Cache L#35 (size=32KB linesize=64 ways=8)
+            Core L#35 (P#5)
+              PU L#35 (P#45)
+    Socket L#6 (P#6 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#6 (size=16384KB linesize=64 ways=16)
+        L2Cache L#18 (size=3072KB linesize=64 ways=12)
+          L1Cache L#36 (size=32KB linesize=64 ways=8)
+            Core L#36 (P#0)
+              PU L#36 (P#26)
+          L1Cache L#37 (size=32KB linesize=64 ways=8)
+            Core L#37 (P#1)
+              PU L#37 (P#30)
+        L2Cache L#19 (size=3072KB linesize=64 ways=12)
+          L1Cache L#38 (size=32KB linesize=64 ways=8)
+            Core L#38 (P#2)
+              PU L#38 (P#34)
+          L1Cache L#39 (size=32KB linesize=64 ways=8)
+            Core L#39 (P#3)
+              PU L#39 (P#38)
+        L2Cache L#20 (size=3072KB linesize=64 ways=12)
+          L1Cache L#40 (size=32KB linesize=64 ways=8)
+            Core L#40 (P#4)
+              PU L#40 (P#42)
+          L1Cache L#41 (size=32KB linesize=64 ways=8)
+            Core L#41 (P#5)
+              PU L#41 (P#46)
+    Socket L#7 (P#7 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#7 (size=16384KB linesize=64 ways=16)
+        L2Cache L#21 (size=3072KB linesize=64 ways=12)
+          L1Cache L#42 (size=32KB linesize=64 ways=8)
+            Core L#42 (P#0)
+              PU L#42 (P#27)
+          L1Cache L#43 (size=32KB linesize=64 ways=8)
+            Core L#43 (P#1)
+              PU L#43 (P#31)
+        L2Cache L#22 (size=3072KB linesize=64 ways=12)
+          L1Cache L#44 (size=32KB linesize=64 ways=8)
+            Core L#44 (P#2)
+              PU L#44 (P#35)
+          L1Cache L#45 (size=32KB linesize=64 ways=8)
+            Core L#45 (P#3)
+              PU L#45 (P#39)
+        L2Cache L#23 (size=3072KB linesize=64 ways=12)
+          L1Cache L#46 (size=32KB linesize=64 ways=8)
+            Core L#46 (P#4)
+              PU L#46 (P#43)
+          L1Cache L#47 (size=32KB linesize=64 ways=8)
+            Core L#47 (P#5)
+              PU L#47 (P#47)
+  NUMANode L#2 (P#2 local=132124160KB total=132124160KB)
+    Socket L#8 (P#8 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#8 (size=16384KB linesize=64 ways=16)
+        L2Cache L#24 (size=3072KB linesize=64 ways=12)
+          L1Cache L#48 (size=32KB linesize=64 ways=8)
+            Core L#48 (P#0)
+              PU L#48 (P#48)
+          L1Cache L#49 (size=32KB linesize=64 ways=8)
+            Core L#49 (P#1)
+              PU L#49 (P#52)
+        L2Cache L#25 (size=3072KB linesize=64 ways=12)
+          L1Cache L#50 (size=32KB linesize=64 ways=8)
+            Core L#50 (P#2)
+              PU L#50 (P#56)
+          L1Cache L#51 (size=32KB linesize=64 ways=8)
+            Core L#51 (P#3)
+              PU L#51 (P#60)
+        L2Cache L#26 (size=3072KB linesize=64 ways=12)
+          L1Cache L#52 (size=32KB linesize=64 ways=8)
+            Core L#52 (P#4)
+              PU L#52 (P#64)
+          L1Cache L#53 (size=32KB linesize=64 ways=8)
+            Core L#53 (P#5)
+              PU L#53 (P#68)
+    Socket L#9 (P#9 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#9 (size=16384KB linesize=64 ways=16)
+        L2Cache L#27 (size=3072KB linesize=64 ways=12)
+          L1Cache L#54 (size=32KB linesize=64 ways=8)
+            Core L#54 (P#0)
+              PU L#54 (P#49)
+          L1Cache L#55 (size=32KB linesize=64 ways=8)
+            Core L#55 (P#1)
+              PU L#55 (P#53)
+        L2Cache L#28 (size=3072KB linesize=64 ways=12)
+          L1Cache L#56 (size=32KB linesize=64 ways=8)
+            Core L#56 (P#2)
+              PU L#56 (P#57)
+          L1Cache L#57 (size=32KB linesize=64 ways=8)
+            Core L#57 (P#3)
+              PU L#57 (P#61)
+        L2Cache L#29 (size=3072KB linesize=64 ways=12)
+          L1Cache L#58 (size=32KB linesize=64 ways=8)
+            Core L#58 (P#4)
+              PU L#58 (P#65)
+          L1Cache L#59 (size=32KB linesize=64 ways=8)
+            Core L#59 (P#5)
+              PU L#59 (P#69)
+    Socket L#10 (P#10 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#10 (size=16384KB linesize=64 ways=16)
+        L2Cache L#30 (size=3072KB linesize=64 ways=12)
+          L1Cache L#60 (size=32KB linesize=64 ways=8)
+            Core L#60 (P#0)
+              PU L#60 (P#50)
+          L1Cache L#61 (size=32KB linesize=64 ways=8)
+            Core L#61 (P#1)
+              PU L#61 (P#54)
+        L2Cache L#31 (size=3072KB linesize=64 ways=12)
+          L1Cache L#62 (size=32KB linesize=64 ways=8)
+            Core L#62 (P#2)
+              PU L#62 (P#58)
+          L1Cache L#63 (size=32KB linesize=64 ways=8)
+            Core L#63 (P#3)
+              PU L#63 (P#62)
+        L2Cache L#32 (size=3072KB linesize=64 ways=12)
+          L1Cache L#64 (size=32KB linesize=64 ways=8)
+            Core L#64 (P#4)
+              PU L#64 (P#66)
+          L1Cache L#65 (size=32KB linesize=64 ways=8)
+            Core L#65 (P#5)
+              PU L#65 (P#70)
+    Socket L#11 (P#11 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#11 (size=16384KB linesize=64 ways=16)
+        L2Cache L#33 (size=3072KB linesize=64 ways=12)
+          L1Cache L#66 (size=32KB linesize=64 ways=8)
+            Core L#66 (P#0)
+              PU L#66 (P#51)
+          L1Cache L#67 (size=32KB linesize=64 ways=8)
+            Core L#67 (P#1)
+              PU L#67 (P#55)
+        L2Cache L#34 (size=3072KB linesize=64 ways=12)
+          L1Cache L#68 (size=32KB linesize=64 ways=8)
+            Core L#68 (P#2)
+              PU L#68 (P#59)
+          L1Cache L#69 (size=32KB linesize=64 ways=8)
+            Core L#69 (P#3)
+              PU L#69 (P#63)
+        L2Cache L#35 (size=3072KB linesize=64 ways=12)
+          L1Cache L#70 (size=32KB linesize=64 ways=8)
+            Core L#70 (P#4)
+              PU L#70 (P#67)
+          L1Cache L#71 (size=32KB linesize=64 ways=8)
+            Core L#71 (P#5)
+              PU L#71 (P#71)
+  NUMANode L#3 (P#3 local=132124160KB total=132124160KB)
+    Socket L#12 (P#12 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#12 (size=16384KB linesize=64 ways=16)
+        L2Cache L#36 (size=3072KB linesize=64 ways=12)
+          L1Cache L#72 (size=32KB linesize=64 ways=8)
+            Core L#72 (P#0)
+              PU L#72 (P#72)
+          L1Cache L#73 (size=32KB linesize=64 ways=8)
+            Core L#73 (P#1)
+              PU L#73 (P#76)
+        L2Cache L#37 (size=3072KB linesize=64 ways=12)
+          L1Cache L#74 (size=32KB linesize=64 ways=8)
+            Core L#74 (P#2)
+              PU L#74 (P#80)
+          L1Cache L#75 (size=32KB linesize=64 ways=8)
+            Core L#75 (P#3)
+              PU L#75 (P#84)
+        L2Cache L#38 (size=3072KB linesize=64 ways=12)
+          L1Cache L#76 (size=32KB linesize=64 ways=8)
+            Core L#76 (P#4)
+              PU L#76 (P#88)
+          L1Cache L#77 (size=32KB linesize=64 ways=8)
+            Core L#77 (P#5)
+              PU L#77 (P#92)
+    Socket L#13 (P#13 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#13 (size=16384KB linesize=64 ways=16)
+        L2Cache L#39 (size=3072KB linesize=64 ways=12)
+          L1Cache L#78 (size=32KB linesize=64 ways=8)
+            Core L#78 (P#0)
+              PU L#78 (P#73)
+          L1Cache L#79 (size=32KB linesize=64 ways=8)
+            Core L#79 (P#1)
+              PU L#79 (P#77)
+        L2Cache L#40 (size=3072KB linesize=64 ways=12)
+          L1Cache L#80 (size=32KB linesize=64 ways=8)
+            Core L#80 (P#2)
+              PU L#80 (P#81)
+          L1Cache L#81 (size=32KB linesize=64 ways=8)
+            Core L#81 (P#3)
+              PU L#81 (P#85)
+        L2Cache L#41 (size=3072KB linesize=64 ways=12)
+          L1Cache L#82 (size=32KB linesize=64 ways=8)
+            Core L#82 (P#4)
+              PU L#82 (P#89)
+          L1Cache L#83 (size=32KB linesize=64 ways=8)
+            Core L#83 (P#5)
+              PU L#83 (P#93)
+    Socket L#14 (P#14 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#14 (size=16384KB linesize=64 ways=16)
+        L2Cache L#42 (size=3072KB linesize=64 ways=12)
+          L1Cache L#84 (size=32KB linesize=64 ways=8)
+            Core L#84 (P#0)
+              PU L#84 (P#74)
+          L1Cache L#85 (size=32KB linesize=64 ways=8)
+            Core L#85 (P#1)
+              PU L#85 (P#78)
+        L2Cache L#43 (size=3072KB linesize=64 ways=12)
+          L1Cache L#86 (size=32KB linesize=64 ways=8)
+            Core L#86 (P#2)
+              PU L#86 (P#82)
+          L1Cache L#87 (size=32KB linesize=64 ways=8)
+            Core L#87 (P#3)
+              PU L#87 (P#86)
+        L2Cache L#44 (size=3072KB linesize=64 ways=12)
+          L1Cache L#88 (size=32KB linesize=64 ways=8)
+            Core L#88 (P#4)
+              PU L#88 (P#90)
+          L1Cache L#89 (size=32KB linesize=64 ways=8)
+            Core L#89 (P#5)
+              PU L#89 (P#94)
+    Socket L#15 (P#15 CPUModel="Genuine Intel(R) CPU                  @ 2.66GHz")
+      L3Cache L#15 (size=16384KB linesize=64 ways=16)
+        L2Cache L#45 (size=3072KB linesize=64 ways=12)
+          L1Cache L#90 (size=32KB linesize=64 ways=8)
+            Core L#90 (P#0)
+              PU L#90 (P#75)
+          L1Cache L#91 (size=32KB linesize=64 ways=8)
+            Core L#91 (P#1)
+              PU L#91 (P#79)
+        L2Cache L#46 (size=3072KB linesize=64 ways=12)
+          L1Cache L#92 (size=32KB linesize=64 ways=8)
+            Core L#92 (P#2)
+              PU L#92 (P#83)
+          L1Cache L#93 (size=32KB linesize=64 ways=8)
+            Core L#93 (P#3)
+              PU L#93 (P#87)
+        L2Cache L#47 (size=3072KB linesize=64 ways=12)
+          L1Cache L#94 (size=32KB linesize=64 ways=8)
+            Core L#94 (P#4)
+              PU L#94 (P#91)
+          L1Cache L#95 (size=32KB linesize=64 ways=8)
+            Core L#95 (P#5)
+              PU L#95 (P#95)
+depth 0:	1 Machine (type #1)
+ depth 1:	4 NUMANodes (type #2)
+  depth 2:	16 Sockets (type #3)
+   depth 3:	16 Caches (type #4)
+    depth 4:	48 Caches (type #4)
+     depth 5:	96 Caches (type #4)
+      depth 6:	96 Cores (type #5)
+       depth 7:	96 PUs (type #6)
+latency matrix between NUMANodes (depth 1) by logical indexes:
+  index     0     1     2     3
+      0 1.000 2.600 2.600 2.600
+      1 2.600 1.000 2.600 2.600
+      2 2.600 2.600 1.000 2.600
+      3 2.600 2.600 2.600 1.000
+Topology not from this system

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.bz2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.bz2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/96em64t-4n4d3ca2co.tar.bz2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,142 @@
+BZh91AY&SYšYd 3­ÿÿçyìÿÿð}ï_€ÿÿßð
+    #ø`|Ÿîñ@ P_l€ @ (ÞáÇ ð^«"RjǼÞ<Z÷G$’ID’AA@  À wŠ_3ƒß1@À¾Üà           ßx¢à ëß 6ã
+b‰…‡—(.,Àuž ¼äÀSë< ”‹æxòOë”ç€[£
+€õÇxèÀ=s஘6ÚÌz-àµhàu\@         s@           =£T½USÔ¨~©©†‚¦ ¦ dÀ˜ ˜˜jž=R©JzP           
+3I5R”
+4    C@      I¢‘ªjP	6£Ñ=A
+ ¡ =@     "PÔd	5#Mú 4Ð6‚4 h4  hÕ”Dh™4G¨ “Ô4z“Ô=@@~¦)ê0€zLž£Ô4z™©§õÈÿpñ ¿‰Iü‚“ùE'¨
+„Еù…'
++…&"Äþ¸ù)?”ÄèeBÓÂP÷©$Åà=p„v•@kBT²Š#%HaRÈ„Jý8"¢¢Ð$E EŸ7ÔÏÕ>·Ö¾ÅZ›Ž©Í[®®ŸUÔ•uÒ®º«ª¥Sª›ÚÏ{Ç‹ÖW¤ãNëöëÓ{ÁÛE}+¦÷ƒ¶Š_k¾g3Ìݯ—¡Ðö“e½äáí&Ë{ÐO¥)â[Þ‚})EãÎڝN]Å:rë®Rë“{Ôú›®uÕÛ—]U
+ðîð×yÆÜqóùÕ9¶û“o¸î¾÷Ÿ‡GGâH¼^ÓÄ$ñáYzoeó*¯Þºoºµ´C»tô¼É½®›êý¯´áêà=G/{‡Ý$~ç½t}¾>î¿]¼Î’mn·GíÑ᝝œF¯F·£[Ñç&×y½gUɐUtÕɐUa«“ô%<«ÓË“ qïEî÷‡³ÔÙ¦€m@:§P¥¶ö€u êÔ©ï¾ õ êÔ¨GxêÔ©¶ÞÓÓŽÓ¯_möž¶ö€u õ êׯ^ @:m)Þ=|êêÔ¨P GÓ¨P¤Ón€m êu´§[Ju´§[JÑÞ:€u ê-šhР@:€u êÔ¨úu+¶60 @:€u êÔ¨€ê :ˆ¢a:•Û@:€u êÔ¨P @:€u6i£“§€êÔ¨RŽm›ÏÞº]>rI%WwI$u/»›mÕ>îî’UI'I%T“»ºJ­’ã}ÝUÝ:»§WWrîí©•¯¤rwwwvʶ«»u®ç½}Ùokcš#§¹ÎtWÛÕ‡·”»Þ”·S¾¯Üºynô—³6û1ºÞî’IUÝÒIKîæÛuO»»¤•RIÒIU$îî’ªI'wrîîîîî®îînTo¤“ª»ºI#©}ÜÛn©÷wt’ªI:I*¤Ý$ª’Nîî]ÝÝÝÝÕÝÝɾ™9Ìë퓲êg_I#©}Ý}}rIUîé%T’r××}•ÝÝ;§ÒI'wvUvóéÝ÷m÷võWIÒúd¸®]G*«§T’Dê_w9.\¹u;»ºIU$$•—“fÎu&ÉÝÜ»»·ŸNèö³»ººêt’I*»ºI#©}ÜÛn©÷wt’ªI:I*¤ÝÒUI$îî]ÝÝÝÝÕÝÝÙ™—j×/w.\¹råÒ(¹råÝË—.î!råˤQE.Õ¨¢åË—w.]v­råË—(¡éí¥===:téÞõTéÓ§N:téÕ\¹råË—.\ºIË—.\»»g¯Kê­½9:wMÉ$’«»ºIKÜÛuM÷wI*¤“¤’ªIÝÝ%T’NîåÝÝÝÝ
 Ý]ÝÝÞîë6´iÜ´÷jèÛt¤ôðIJE(E<N	Ó‚)ÁàŠpE8"œN	)H¥§S‚)Áàäú‘N§S‚tà†Ý"šM§S‚)Áàò=ÄS‚)Áà’”ŠPŠpE8"œN§S‚qÁàŠpIJE(E8"ž§S‚)Ááò¼N§”¤R„S‚)ÁàŠpE8"œN	Ó‚2;i¡àŠpE8"œN§S‚)ÁàŒàŠpE8"œN§S‚)ÁàŠpIJE:lS‚)ÁàŠx'¯6Ëj$éÓ»§N=:)'N:{ºté¼§N7ÞžžŠI³Ó§N»§E$œtôé8ééé²°žž†:t4÷6ßM:ztéÓ§FútéÓ§N:tS޾¾¾ºwÛJmM$’«»ºIKÜÛuM÷wI*¤“ºIU$Ý>’I;»—wwwwuwwsr¤}$’«»ºIKÜÛuM÷wI*¤“¤’ªIÝÝ>’I;»—wwwwuwwr»¾»V¢Š(¢Š(ºíZåË»—.\»»1bÅË—H¢Š)v­EË—.]ܹuڵ˗.]ܹrëµk—.\¹rŠ)v­EQråË—U.\¹råË—.]w|¹råÍÂ|,ınž‘qðÞõÖ·~Ä{ÂÜ!àå}ëj¾õµ^õµ^õµ^õµ^õµ^ö­[¾¶«ï[Uï[Uï[Uï[owmªõõªúúÕzúÕzøwkåïvÚ¯_Z¯_Z¯_Z¯_Z¯_[ݻ֫wÖ«îõªû½j¾ïw—½zÕ{½j¾äÞ@Žäî@ŽäîR.÷ Fû­WݽåïvÚ¯tÝ[:n­7VΛ«gMÕ³¦â™Ïun7j§ºÕN~Õ»íµSÝj§uªÖªwZ©Ýj§uªÖ«îsT÷´Ý›«JÁMó;˜)ÜÁNæ
+w0S¹‚Ìî`§s;¥ª[Žè4wA£º
+ÐhîƒGt; ÑÝŽè4wÕ7ÑEîáßFøB;„#¸»»ÇÂؐº
+\ƒ~¸?s`”QE.\¹ræ1ŒcÆ1ŒcÂI ÂI r¤ÄE.´’k]sžýqœë¯=:.÷6ßN :ÛUªÞÕº·wVêÝÞ÷·wVêÝÝ[ª«AP"’HÖtîîî^æÛéÀÇUmV«{VêÝÝÝÝÞ÷–îêÝ[«wv«zÕm E$‘¬Æ±âI¼qˆ1ƒ"E„ˆªö÷m¯ovÚöÚVv¬êˆÎÙÜÁŒw““´QIE%;ÐÓKAAEAKÁÁÅÓšäæs999¹œÎnNNNNNkžnW'3§K¥ræ¹9œ¹s9årrssÍÁÄààݾóss}¦ÆÖ­kVžto¹“¯K§áC}KwÝvïwnðRûÞ=»²ƒ"ÑDÜm¼i<æšx×Lá	ˆQ¨êájÕ5›šŒ®<ߦļ„…åå꛳Á¢^W*«Ë¯&¶pN×*·*åÙښ輤žUojܪª»;¶F¹D/ª¶«U½«Rµ*¹r÷x\`¹Uj··ww{ÞÊ•Uvow­¶%ÈHZ»VêÝÝÕmåP„.^Þîݶ‰j©jÕɶÛéi½¿­r‹ywsm½ûVý«S]"m´Þ­Þ¿­Ziòîæ›M¶ŸÍ¦šï¤M¦÷g]«‰÷wtR)#M-[ö©óz·{s2“ؤi§ÒIù´škžîí«ºIm¶›Z–­Qn,Ë»zšm¶¤^õ@…åŽÕKíZ·v‰RF*ç9e(ѼÛZV¶–²µ¶Ò½ÔæYZ½7bO®Õ¯w{FÝZm7Sº¬W[mbª‘Q‘I¨‰ÖˆDM
+!u	\*µnÚHf£«½{»¶”X–&¢m·îâMoÚµEÑH¤´Þý«wíMO¢‘Im6ÚoÚµDšrI"‘Iinýª&Ûm7$’Oµ-Z¹6¤R6›mjÅ‹Q¦›m©›y‘U·Û«wfE ªÛ"‘I at j;KRµ‘"H±XŠÅF"°D‹!HÀˆ10c"$ZÅœß9N§F5:<óm®m÷2uétíôWÐÞ¶ñö4ñ®‰Lá	&g:®>¹«§±o›KÊ籿/,ºz…=žÏm£ìâ	䏓‡}6¢{<=“Àç³ÙsSžz*P|CÙ}zÏA•_gtO
+óRö<ÜòôO
+ósÉä[ž^ÛfSž%òy<¶†áÉž
+¥t¥‹D­gj"vÆb˜ï3øðð¾&棫½_¦Ä¼„…ååëgƒD¼®UW—w{Óƒ®UnU˳»Þðº«{Våʪ䛊M[«v4ÒÝûTM8¤6Û’}©UW-[Ë»·m¼ª…ËÛÝÝÞòÝ[¶d\¦©$M­[²þµiµ"“qfKµq´ÛæÙ7nRךëm-kY$QT‘,$ê¯ovÚö÷m¯m¥C¡êΨŒíÁŒÁ§y9;àPQE%”ï¶Ã³°ìÅ-GNk“™ÉÉÉÍÊæss999œœ®y¹œœÎnk‡ÁÄèåÊç•ÉÉÌ÷ÙàyÀáÐàp9ƒ–P¥²¹Ñ¾ ëx´ëb§F¼Ómsi¦¹Åщ¡D.¡#«…V­ÛYÕpZ»ÞÝ×
+Òò«W–î­×%ÅQ•U«¼¤RJyªÝ}JóíMO¢‘I1¶ñ»Oæšj|Ü’J¸šs%z“QtŠI>®‘Ìϱ&¢äÚ‘I™®µ;Z­b‰¶›r÷\¡™W‘UµÃn—5U@–Ûb‘HØ \ÒÒÚªö÷m¯ovÚöÚVv®si§3„„$!#:åÎÔµ-Z·­J
+wÛaÙØv
+ƒb–‚–‚‚ö]ƒiÌääææs9¹œœœœœ×<ÜÎNgN—JåÍrs9råsÊääæç›ƒ‰ÁÀpáÈp8ÁƒK(RÙYØDÎ0îæØŽ
+ºÔp#Ý)»»»Ãç=EÇËi|£ÊZ§„ `’O£žà
+&\ªp™(Å‚ Æ"(ŠC¡ zs¹uÄ«I´¬™AB­U[]J«mJÚ­Ëjªª!)$‹Ù‰`—+î$† ¡­–”´¥)iURÈ‚0Xˆ"1b"Á N¤±/+ܺ¤«Må‘*­V«]U[nUm©[mÊ @„)‘y$°GN{¡!¤È³ZÙm--(Š¥ œ‚ˆˆÄAŒA°`¢ÌKÊ÷.©*ÓjÉ”„Z­Vº­VÕUVܪÛR¨E“=‰,§=АÒdS[-¡m–ÛDDYH‚0Qˆ1ˆ(v,Ìò½ËªJ´Ú²*j¶×U¶Õmµ[mT ¢’Eå‹—+áf“"šÒÛ-²ÛjªXàŒDDDF""Á!È@ôçzw€V›VE at H@%j¶ªêµ[UªÚªáÎrpÛÛ)iCÒÁÓžèHi2)­-²ÚÒÑDD)pF
+""""ƒ€'B@ô9ܹ\J´Ú²*j¶åuZWU¶Õj¶ª­µT@’g³Ág%}АÒdSZ[Kl¶Ëmª+,8ÁDDDDDb1:,ļªîo:¬U¦š²* F ­Ëj©ÕiZªÛj¶Ú­¶ª RI–"btáé‚Cȉ­)im-¥¶ÕT¤	ÁEŒDDDDDX$	Ù ôçzw€q—–ÒÞc^cm‹m§²CN{‚™UT²C‚ɘÆ1™0]6g?±”»Ø¡X©Tµ”˜F¦FLÈÉ‘ÞåÜìÙŒcƦ8I$8 8pᏻäzN==1ŒcÆ1ŒcÍ›6lÙÏ4¹K22d¦b¦f&21‘˜•J²`ˆÄÂ#:a e”‰2€“ôËÔD½| ¿8._z/Ïü€¶†ËmikQ¥® ¶­–Ú¥%H¤kú µU€bZ¬UV EXIeUUV0
+K_€µUV*°KUUÀJª­ 	û p›ŠÏÊ O@	²ªªðŒªªªÆ’ÕUUb«I­fffe†À¶ _8,ù7áÇù?@ý?П¤¾E}бV*ÅX«ý„UбV+ú1_Ò5ª[T¶©m`OÓQòÅhŠˆ¿"¬UбV*ÅX«éò×EX«b¬UбV*„§Í\J|ÕÁ$§uÍŠµk3EZµ™¢33È…¿˜ö úUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU_óøªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª¸ #²**E
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•
+•í2îS!’¡R¡yL†å2**”ÈnS!’¡R¡R¡yL†å2**”ÈnS!’¡R¡R¡yL†å2ÑBþ
+d3*ö´ÈkEÊd3*”Èd¨[EÊd3*”ÈkEÊd3*”ÈkEÊd2T+*”ÈkEÊd3*”Èo>óÅd÷ Åd¶ÛŠIF‰T1Y*É1	LjöÛ‹dݶâ’ZжÜRK°x¬—¶Ü[&í·’Ö¬…õ¸¶M÷­Å²nõ¸¶Mß³·É»ñn-“_Á1Y+rb$=ñn-“_Á1Y+ø&+%>-ÄIN·%:ÜD”ëqUÁŠÉW+%\¬•8ñ‰ŠÉo[‹dÝëql›½n-“u+%䬖õ¸¶MÞ·ɺ#’ü~•¸¶MÔ¬•Lj¡ŠÉhŒVJô˜¬•Ljqâ$O [qP1I 1I) âx‰C’©1
+LD‚Šb$>M·ɺ¬–†+%¢1Y/zÜ[&ëVALj¡ŠÉhb²^VKC’ÐÅd´1Y+ ãÄH8ñ
+GˆRb$˜‰&"AIˆàÅd·mŲh¤††+%¡ŠÉ|¬¼æÐ弿Ðå¼çæ 'ìäüd>
+Â)?ì‹Xµ…¬ZÂÖ-b»Áx‚ÿ°/ pÛšî‹óñlmão
+_Ö+kZØÞÛ÷²üýGUÔa;ÙàÌûs:x™w·Ùvž°žÎ÷“¤’_jI/Šžöîù»mãtÛzÓmÓmënÛxÝ6Þ¶í·¶Ûm¶ÛmÑUUUEUUUWÐ   µ67ßUn9ÅmSòcüž®È{Ó5k<½„‡TôôñÊJ½½}» ^mùW³³=«Æ{{ð’Ká)òI/¸ ¾mÅ» €ç*¦q·\Þ÷ã¾¼üÚXæ÷°Šhs9΁g9œàw(Ûœæp0ç9Ì=ÕUUv׎<s¸ü~5nîë÷½íîï{{»ÞÞî÷·»½í ö€{{»ÞÞî÷·»½íîï{{»ÞÞî÷¶ÒI}ú¿V’”ÀY%	dA¢Uˆ‹Þ’ÿˆ,Önˆ¥øÏyªúIº‰¡V‰ç¡Œs‰
+²¾¬¬°‰øÁi8zi«Y›ì9ÒªÑ0Qœéû౶ٝi$ØÖ+@=ü_óóv»~`sš„5$’Ëm ’’IgÓ¤’Én§¸I%–•¸'  B |¤’W€XÈÐæÜ¨.À_ /æÿ€\ò ^ ¹ó‚ðñ¼õ¯fÚðùwã|k~7Ö$ä!U-£mV
+(JñÈ›–*¬ßnÓ3m÷Ù­÷Ý»Ž<A}`»Ð.ð/ÎùÁ} ¼@¸ú`/ \èâ Zî¸/h.AnÞ pÞ¼¸¼ñ©U°/ÌDZ÷Ѝ|‡‰ùõáù3Œã8À Ÿ¨"¢*"¢/ï"¬Uб_Ô-ª[T¶©m~EX«b¬UбV*Èà|ð>gÆq€Ob¬Uб_…µKj–Õ-¯È«b¬WámRÚ¥µKj| 	x)>I
+*aÜX¦™‰‡qbšf&Ł·åÛÕ@s$€È„Œ‰$Š{À€| "d‚‡íܰ3Ëy¶ÛZH€    H $`É    	  ‘ƒ$   @@  $’6Ð2@    Ø"(Á’    6$ I#l      a lŠ0h‘„ À@    #H  Œ       À>ý$–}BI,ÝÝ èoÄúiý^»  °’I€4°Ǐf`y{/WÕöÚøÞ«ÓÓÓÓ{ß§=/ÓÓÓЀXI$‚Ö hÐI™˜½íŬ X °  X£@	$ff`÷·°`Ö ’I °F–xñàÌÌ ÞöâÖ , X  , Ñ¥€ž<x33 7½¸µ€    4i`'ÌÀ
+ïn-`À€ À
+ I#33 7½¸µ€E 
+ @P £@	$ff`÷·°`À ` $‘™™€ÞÜZÀ€  €4 ’Fff o{qk  ,   hÐI™˜½íŬ X °’I¬ Ñ ’330{Û‹X °`  °F€HÌÌÀ
+ïn-`À€ À
+ I#33 7½¸µ€    4h$ŒÌÌ ÞöâÖ , X  , Ñ ’330{Û‹XP   E 
+4 ’Fff o{qk  ,$’Ak 4h$ŒÌÌ ÞöâÖ , XI$‚Ö hÐI™˜½íŬ X °’I¬ Ñ ’330{Û‹  -`	$’X£@	$ff`÷·°`ÀI$°F€HÌÌÀ
+ïn-`À€$’H-` $‘™™€ÞÜZÀ€ I$ZÀ
+ I#33 7½¸°k  ’I µ€4 ’Fff o{q`J  ’I$ŠP £@	$ff`÷· , ZÀI$°F€HÌÌÀ
+ïn, X µ€$’H-` $‘™™€ÞÜX °k I$ZÀ
+ I#33 ]¶µ€ °’I€Ñ ’330{Û‹  -`	$’X£@	$ff`÷· , ZÀI$°F€HÌÌÀ
+ïn, X µ€$’H-` $‘™™€ÞÜX °k I$ZÀ
+ I#33 7½¹ , ZÀI$ /F€HÌÌÀm­`À¬$’A`ôh$ŒÌÌvÚÖ , ZÀI$ /F€HÌÌÀmé@X5 ’I °JPI#33 ÒçÈ 0dˆ°	   @ $`É  `  I l‘ƒ$   @
+€  #m$     l⌠    ’ $‘¶’      ƒ"Œ$l     8  #      B 0–’IgÊÄ’Ä’KÌ}:téæ*}÷ßÚ–ûãvII@ÛpÀB€„ HÚÙ$  À b"FÐ6É   ؤQ7€Û$€  	#hd   ƒ l@¢‰¦6É     Š7€Óm’D      FÔ$€#h       € =ñ‹’Åï{ÀÕUTUUUEUUTUUEUUTUUEUUTUEUUTUTUUUTTUEUUUUEU\HCÙUUUVر2@ $`É`@  $€€F  I   ’ Ù#H   €  I#m$    @
+€ÜQƒ$    @@ $’6Ð2@     ÂdQƒDŒ!     	2@  $`      È Fò$’Ï—›­lRk$h" lH$$  HÛˆ0 !‚Dd2F €@6bÁŠ0m€  „$a$l  À`€€`R5`Ñ 
 €Á 0’6ðlŠA„   6
+±H  ‘€      A m¶ÛiUUUUUQUUUUQUUUUQUUUUUUQUUUQQUUUUUUq!HCeUUUUÄ1
+â ;ªP‚çœçZçm¶óß}ü÷ßóf~lÏÍ™ù³.ëÞõû3=»»æÛ~’Ié$ž’wîïß¿~ù™™Îrï@€j—MîœåéV«UªÕzM*ÛÖ¶åÝó‹Öf/YŽíï¿~ëïß¿}ffkœ«Ð )¥Þ›«oZUª×¯*òºò<ªü³=µ¾m½ô“7Û'¶nÏI6s33|殁JZïnsnq½·µí»»ÔK6m{mzM.ãœäç9¬Úï#7Žs™½r Òî›Ýiº].—K¥Ö¨z׳³6½ºÝ眛žrnyɹç&æ·™­~|ùóç×ÏŸ>wª¨ªªª¨ªªªŠª¨ªªªŠªª¨ªªªˆªªªŠªªªªªªªŠ¨¨ªªªªª«ôHCá!
+•UUUWÒ
+ªª¢ªªª*ªª¢ªª*ªª¢ªª*ªª¢ªªªªªª¢ªªª¢¢ª**ªªªªªã*¢¨ˆŠ*¨Šª(Š*ˆªª(ˆ‹UUUQUTQˆªªª¢,b¢ªªªˆª©²ªªªªìªªªˆ¿¸ @œ}yÌϳê"[Ç%´¶QûraæÜÉQych••­GíéÓŒÀÆfˆ#{¡E(ˆ#݉gKtU2vúéÏ,-d«:q쏖׫¯´â+§§¬<hzQAJ|êzfsÛå<âÎl¡”B«.ÙC.Ø2š•b¬UJ0m9¤ò¨úØ[b¨{±„¥%<Û_õ+¼ØÔžCÐUÛE fºFÖuï<ò¼|§^/$,$ (+T°d¥P=L®·kp0¿”)î܁]õΰv®múë;gt3$’I$¾ÝÖv×» L è~o»èÛéÞÆKã0bcæª0TòÚ¨ÅLmߟNž\8 0áÇ	ÙÚ«µeUUvõ|xçS¯SËÔöÀ                                             UUUÛªÕUUvÕjªªª»u×]u×]uÐ   @yUUUvóí]«½kUªïRªªûvk,Ë2M¦j
+ á§l»eˆâ`0ˆ
+
+
+1GÄÃñÉL’•|ŠøyjžZ§–©å© B:‹õh @ÎÎNÍ4ÓM4ÓL0`ÛoËȯ"¼Šò+Äâq8
+ÍÍÍͶÛo¶—¨RþÊgõ¸û÷p6[)l¶Rû¸0ÅL2S”Ãa’˜²SÃ	ùO©øëS¦0XÄ`Éd‚	 ‰
+‚„Yr3LÊfOÈhŸŒ-ÍÔ¿ p¸Gâ~!øÄN•N‚…J
+(¡J
+E()¢…() ¡BŠP ¡B‚…J)R‚…JZ((R†JJE(¡J.
+pqGƒ‚vuHü‡ä¦Wc`
+U(¥J(R‚J(RŠ ¡RŠ¢()¢„(¡J
+(¥J
+¥ RŠT¢•8œJpp§#ƒŠ8p†0XÅ1Šc(ÆTÃÆ)ŒLC½
+‚li
+¤6ÚCb@ÚC`˜ÒHm!!´6†Á°m!´†ÒHl`›@ÚÁ6	´†ÒÒÒChm"È(E€´Ì,e3'ü=ÿßúÿ!ñà}OÔð®T?h>Ò»îû©AJ¥R•JPP)T
+P4*U!T…"JUAB¥¥R”4ŠUE)C@¥PU%?ô~._{ï}íÛ·nÝ»vî÷Å3VjÍY«0Ã!B„!B¿2¥R©T€„„„€7bË—.VíÛ·nÝ»wlD~f „`"@b‚21#1#I1‘#I1HŒ`Æ`Æ1„1„1„,FHÆ1ŒcÆ"1ˆŒb#ˆÆ1Œc„ƒÆ1ŒcˆÉˆÉˆÉˆ€1ŒcÆ1ŒDcÄDŒHÄŒHÄŒAD€Ä 1T#0c0c0 °c†+XeX!” ÈÉT¥Áí°Ìý¨yÆô²U×w8-ÿG4·¸ÉÂed‹xÞ––̨«ðe¬"®Ø‘\G#è¢yÉ#dQERJƒþj‚•º9¶ˆ[#\ìU+¶J•ŒmhÞU˜èfòãU˜ÌÆf'vո؝#™K
+ôZRRé”’¹Á%–PvÀw@ûêÁX¨˜8Ä’c r†f˜nÙ¼lQtõ³‰[#º4RRd%„ž°>W¼yÉ>¹`˜Ü“IIî䛨bk ©ïžYœnÃ3fãd*ç…\Å`2ŒmC¨¾m¡½±Æô¸QæûÐ Æ[%i
+ñqÄ{î 7î»ÅyµW"Û“¯YMl¬²¥Vµ>Þûðšk(VŒ[k±ˆ"”—»N¼W†Œ½NhQa[;'‹=¯<O\•gžO×bÚX•(°==ô¶…FÙ{²†RØ*ÅP¦ÙCʱV*Îzi™/)­¤ÜëQPUØ  T¢‘‹Ñ™¶î¨÷ÔÊ뛑Ú*¬vоóšq*WÝEΧxùæ|O} Oç‹àQ­2æ|g?<k»c}¹Í¶É	$’M·ë[m®8¸ è¢ÒBHŽú@ñwçÉæóóóø                                              UUUÛªÕUUvÕjªªª»u×]u×]uÐ  ­gZÖµÀ 8Òlh׊K˜ ¢ò
+ÇPȱ!bY	‰2,…‘e%ˆ°°_†ü?ˆ‰“îÈCŸª/‰Uüp>Ѝª+HY
+(DUüp>ÿ¬S_½ú´ü†›7æyy¶1£¿¸Y°^Ç’ø]Â['øGšê¼ÑçÞå±n0Ý@5	á:ìð’ÁT_ƒáÏ>Û,ôÞÞJ&ƒ`U L[ϱÎ1§rvI~Ä{óÍY{Q7èg¨±xWŽÇ¶NàJã(¨¾ÀAð><r¾O$ 
+ûžhª áñIâ3¿p{Îô½¨”íêÏ»\$dHAŒÁsã ès©íöïí %C×x. °„yd½üiìÌc)—w‹­¼:ñ9Q2ydˆª s£êèÉ•m«Wã}ÍÔLðüœ‡}bì¹hsKZÅ¡hÈ}¸c^8EšØ•+nûÞú}C…DÊR]´4Ô,D…æ0W"³ÅáUq™Þž0õ³—Ðãâ+λƧ¶s“ÛB¶¥6”
+á务לœÑT)j‚ÄV*ËÍ”1¶¦¥Xª ¤õ©I¼YÖÆµƒiIîÓ[Í1«v•º[Ž›•Ú+*]´ÊýÚkZõ¡ç]‹nãà“ÉôB€œüò²…ÌQfsc 	ìµøç­{2o$’BI5XÕm¾µ€O° <\3,ÛAî Î$„‘®Òªª»{ªªíÏë¯/Yåë<ýx                                             ÕUUvêµUU]µZªªª®Ýu×]u×]t    åUUUÙYÚµZªí®Ëšìϕ碑ŽTMý¤Œ’O‘ai!$„’)	„’Or湸$ (FH‰½Ä—öóÔåD¢¡É{,6D—MF)0mÕ™™˜¦ZÑf‚ðuë ëIÅx.«Áw]ti`[΂Ña{¸œÛûr›X)Œç¹Tp?&;¼	c#]ô¢nª¥â
+¦Ë"‰ ¬ñ,H"¢"+ÌAѬüs…³"ÛÉÝÆtï²NLé“h‰a0ÞÚ2=ôÔ$¨&+×Xœ(™àMíkA‹1V˜™ŠLïÛjŒÌbm”eFLÆÑ
+‰Ì +xíŒ“•}”›ØJ—ˆ‰¿ºa nŠ¡=6˜Ìí–°ºa˜G7}ÑÛ¾“zƒ$‡\)n¤ìÊÒoÜÚÙ,aÃM
+Nq)8ÞlçzNïÚÐ-Àû(ª œñ:£ŸµíbBñ–³bKX)¼ÕÏ.Ö*ʼnR±_¯Â÷bhø°ÜƆ5…–Ê…C­CÆäJm*<e´+Îγ®¾ø¶ú̧–qœ^yï±T=²²d¶Ù9çµF´›Ëeµb©lª«B–¨Uí•b* ¡™.¶{ämŠÊÐb¥ÏÑ$Î&Å-C)‘õ-z\®ÒÜŽÓ*±Úe Ðõ¡Œ"$+X’Ìv~p ƒ[`}E[Êg®93ä{ÖÜëZ¶¡©$’I%³Š­µ­`ÿ( û¹ßïÏ<sé­h                                             UUUÛªÕUUvÕjªªª»u×]u×]uÐ    •UUhMä$‚Ú*ȁä>¾0 ›¨œmÑŒUʤË ^ì;ÞÍkˆÛ$Æ]“µÛ‚íIÊ:áÔÁÉ̼¼"Ä„й2¢_囁¯O>d1{9ì ÂÒ&Ѻ½@@^;ìÇj&]Ä,æÂ8ɆìÔ®®"Ø"®…2eD¥N g|·eí`́ˆ-ÈH dGŒšQ6:2
+X2j,‚«¥]:= Ë£¥ŵÅõ Œ"DX€ÌK†8በ\–bÞqÁ¥'u°™‹#×)&’Â
+*Á‚³Ô²­˜‹ðoº‰ñW \wÖr¢kh}”U ëÄÇ]›–…¶-b“}ÎnZW%TX¢¦j±áÙŸ{ÃD”B÷››…¬¢‡,œm‰î2‚–*†ï³ÛB¼ï¥j½¶[´m
+¯¾+ë`‚m)<âøŠ†Éi¥X«-«o¸4EEYÛT8mƒ)¬¦¤´³Äêxž$c#í¡ÚKJL˜}aëŽB8ò¦Wz™]¢²¡ÐËÎn'òœxõ—P!$„œB Â"XªÃ2–e™™•L’,#k0aŒÁac1L¢) È"ÈY „AARc2LÌLf&M…ñ33ڐ¥¾1V`³f0½Ê`brm< TÎ:Æs¿PÔ¾¤’I$/œzÖxãÀ8/r}{\‡eI	"9¾oιãŸ=kZÐ                                                 	­kZÖµ¬ëZÖ¨ ºl—Œ,A· ȏ‚ôòBÒëIÊ^+Ç3™ŒÌÑ|pøeEQVA"*ŠþÆá
+,YQVX…XÄŠéSM%*4N0^Ýô2…†
+XÉ^à^o#3ƒlƍT×BÌfCÍæy(•ϧ­ÐT /ÐÙç×ÖÇL{mL±a-vȲwÙÚ‰Ù×\ô–ä-Ìm`,@œ’$’2Ï'*&ŽLž!ÏV¤¿P´²ÂZ0!"´Ú*€ÈŠZGƒZ
+OEÑz#³7À8ÀÀpzèÚ_˰»'r0‘Ék¤ŽTM÷‘ñk9µ‚@‘ÄψI	-d± ›ñ‰G[d˜Žc$„…HH>yʉ³«š(°€ìê'yçt.Ž)3Ã.A~YTûeP¢¨ aDD™ðqhù…­iPø~“”¨¿—rÔÖŠ£­5ªo}ì´¤¥ 1ˆÂ÷¼90x”žûN0õ³F‘ò«[
+ßb¨tñ|mo¨mb­jcÏ_QX ¡ÖK­=Yëe5§xb"¬Sl¡eUX«/vP˶ðæ4-(êM˺!ÖuȤgKJ,——¾ó/:Ù›2&áûfÇŒ¯Ú[‘ÚUc²µXÌçÞY¹hHBâ* A«	ƒUf1ŒfPÅY•™Y‹0YFXa–fU„ÀÊ002Œ0ʰ˜a‚|€ ÁöŠLz[qÈïÅø®wñ›m$’I­W—;ùgw“µUWns|™âO\                                                  ß9͵%X´‘©,Š ɺ‰ÏÅöš©Usñ}RûÞ?`©òÚ%\Èëµ­,X/4äÁÌßJ$Þ,Š‚º´I¹`×´ßkì¼F&/%¡kHœœœ(šVÑbªD"Íò¡­´´,ÙÑléDÐ7‚d$k:
+A‘j›˜´e¤qeZÒ‰Ÿv„-ÈÂ-âK—ÑÄq1hhòáDÐfU„-$f-h¥ÍHºÛZÉ~NL êJ“žîºi°jÕª‰£F”Ž$ ŸZšBxüùóçŒ>Å¥Š[F¥^:\m|å3¹LÊ5-ihù÷¸…¥–…–”-,)ï9Âsޏ01=ÖfxîuŨ¨wÕ}lÞ_-*‚«[YëçˆzÐí%¥“&jù%Yê=ÊMJ±V]”2íƒDV*ÅPÇvSÎc
+ÚP8óÔí°ª…g\b‹´ gÛÏ}ògz`ÀPÈá0}ºeÛnWÅfW³[uÉÜÇ>òÍÌ@$Ÿˆ '>¹ìø 7 Aè |\6Ús|ZÓ~· oÖÛu¾·È ÞöÚúÆúç‹!pÉĶXUвo§¿(                                                                                              Mûò*¥õ%T¢%	mÝãy%íã£~'$Â‰°p”ž‘lm0Á†²1•ŒexwšB	H©pzém$äÒ‰r†@?>ë×{äúœ¨‚ ¢@ÛNð/;ß…jña9áàB$#	ˆ,T¿yn6ã…UÕ‚Ä#«$Ѧš4ïѧ²ζøc,ÄÆÆ.ÖRÚìç #²µ&çsF­Zµ4i¥©¦–—’"–ÖÕ×q³jÐÖ–j¾™TÝ«³*Ì3,f˜U´ç²ïr¾ç’|2"²…”³ÌK߬. „BC–F
+]´HÏþ¹ßIÑ:wêK»sŠ®€»ÉP ŒE=šJA’ñûÞýŽ;é7Uܦ*ÄeS¦CXïÔ. Þévâ﹜øÒ‰±¶ÅÔM¹ $U ¹çG1êÖ´ZÅíiibfé¯5Ù+P¢êT¨-m¯§¡ô¥š”-…K…÷›[/¾»N[3ÞZÊž7ʨVÎwÔVsv³Ç8‹×ÖYr%s+ij˜¤Q6²ziÞ3
+Ù•7x³.Ø2ÄVÕ
+m–e5•EX«/lébT¢Þö*ÎÚkB´m(•( y½|Þ{ìñóÚ`S	‚Ø÷Là3_‰ƒ']ØÕ{6bؼŋÌLC‚ ¾€æ> Füfqé_†³sœ“ò¯¯»ñ§¿‹âÛl?(                                                                                              ^}õWÉ/ÉIR¥]òÏ’´•|”²›œl¢`Ë¥ˆîêb F0ƒ~®¥–E‹ ø3’h(!!I>yóä„9º‹m¶VÄ”¥!BÒJKÔŠ,“éš#Ô:;ûfwRu‡ŠbbXX«€È±V*ÅXG¦•hMu׸̆é¤ÛÛ*¶7{­'T·¼5&¤´¦ƒD´ÔµE‘’Y10¦¥kR5*gŒº6µ•Ù[ÄÅ‘èáãÙ·~Ý©9ƒjK
+ÉTBÌ"Ξ?VÙ Xd@¤˜~ºvDèv•@`éË»c®MwmmzRIaFD'¶'d–RP
+'m'S•a,‹€^Âf-ù°Þ ˆˆVLÀ±Qˆ0”‚1P,!!õH hŒEPQ#‰0&‡$”…`°I0?>$!Ž  >Ê‚"ÀF"“³J2:J0Š
+$±‘ÉP‚ÄP¢*ˆ¥Y± È‘ Âup¸Á.£hÙ°AŒ,#£9ʉãg‚ª”NÊ7Üö’OA at oZæ×æZýwŸ÷x»[Zß®3óÀÈÎq6¾/Œ^Zý’ª•U|¾4ŸŽüwçÀ                                                                                          8 €?S÷æŸ|ó’üãÕEQ_΁ø
+¨ª*ÈB at a$„“܇;<º8Q-bÊ'–«ÅRwù=<Ýýð]z´÷º÷RytôÎAt)DÚù1…ŒqÐ Õ(wåÀêm©§ÉçÀwÒy®õèõçØ.‚ܰ¼ÎL¨Ÿï·~\yúzzfþηÍoÆúÊ åwßZ®7üfÖï9ßž                                                                                           à  ü¿…|¾^Ëñ0¢qb­u5Œ’Æû›(”ZÊ&7!¨mT¢qÐ ã>ÿÁþÿvÇÝø}Æc
+Ä*Õ_ü¼“ó³gÿ±küì’ZµŽ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×’{6µû$–­e×ÍzóG´·ëÉ=›Zý’KV±×Ô½{£ÚNÛõäžÍ†-~É%«Xëê^½Ñí'múòOfÿd’Õ¬uõ/^èö“¶ýy'³a‹_²IjÖ:ú—¯t{IÛ~¼“ٰůÙ$µk}K׺=¤í¿^IìØb×ì’ZµŽ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×’{6µû$–­c¯©z÷G´·ëÉ=›Zý’KV±×Ô½{£ÚNÛõäžÍ†-~É%«Xëê^½Ñí'múòOfÿd’Õ¬uõ/^èö“¶ýy'³a‹_²IjÖ:ú—¯t{IÛ~¼“ٰůÙ$µk}K׺=¤í¿^IìØb×ì’ZµŽ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×’{6µû$–­c¯©z÷G´·ëÉ=›Zý’KV±×Ô½{£ÚNÛõäžÍ†-~É%«Xëê^½Ñí'múòOfÿd’Õ¬uõ/^èö“¶ýy'³a‹_²IjÖ:ú—¯t{IÛ~¼“ٰůÙ$µk}K׺=¤í¿^IìØb×ì’ZµŽ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×’{6µû$–­c¯©z÷G´·ëÉ=›Zý’KV±×Ô½{£ÚNÛõäžÍ†-~É%«Xëê^½Ñí'múòOfÿd’Õ¬uõ/^èö“¶ýy'³a‹_²IjÖ:ú—¯t{IÛ~¼“ٰůÙ$µk}K׺=¤í¿^IìØb×ì’ZµŽ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×’{6µû$–­c¯©z÷G´·ëÉ=›Zý’KV±×Ô½{£ÚNÛõäžÍ†-~É%«Xëê^½Ñí'múòOfÿd’Õ¬uõ/^èö“¶ýy'³a‹_²IjÖ:ú—¯t{IÛ~¼“ٰůÙ$µk}K׺=¤í¿^IìØb×ì’ZµŽ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×’{6µû$–­c¯©z÷G´·ëÉ=›Zý’KV±×Ô½{£ÚNÛõäžÍ†-~É%«Xëê^½Ñí'múòOfÿd’Õ¬j•/^èö“¶ýy'³a‹_²IjÖ5J—¯t{IÛ~¼“ٰůÙ$µk}K׺=¤í¿^IìØb×ì’ZµŽ¾¥ëÝÒv߯$öl1köI-ZÆ©Rõîi;o×’{6µû$–­cT©z÷G´·ëÉ=›Z
 ý’KV±×Ô½{£ÚNÛõäžÍ†-~É%«Xëê^½Ñí'múòOfÿd’Õ¬j•/^èö“¶ýy'³a‹_²IjÖ5J—¯t{IÛ~¼“ٰůÙ$µk}K׺=¤í¿^IìØb×ì’ZµŽ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×’{6µû$–­cT©z÷G´·ëÉ=›Zý’KV±ªT½{£ÚNÛõäžÍ†-~É%«Xëê^½Ñí'múòOfÿd’Õ¬uõ/^èö“¶ýy'³a‹_²IjÖ5J—¯t{IÛ~¼“ٰůÙ$µk¥K׺=¤í¿^IìØb×ì’ZµŽ¾¥ëÝÒv߯$öl1köI-ZÇ_Rõîi;o×’{6µû$–­c¯©z÷G´·ëÉ=›Zý’KV±ªT½{£ÚNÛõäžÍ†-~É%«XÕ*^½Ñí'múòOfÿd’Õ¬j•/^èö“¶ýy'³a‹_²IjÖ5J—¯t{IÛ~¼“ٰůÙ$µk¥K׺=¤í¿^IìØb×ì’ZµR¥ëÝÒv߯$öl1köI-ZÆ©Rõîi;o×’{6µû$–­cT©z÷G´·ëÉ=›Zý’KV±ªT½{£ÚNÛõäžÍ†-~É%«XÕ*^½Ñí'múòOfÿd’Õ¬uõ/^èö“¶ýy'³a‹_²IjÖ5J—¯t{IÛ~¼“ٰůÙ$µk¥K׺=¤í¿^IìØb×ì’ZµR¥ëÝÒv߯$öl1köI-ZÆ©Rõîi;o×’{6µû$–­cT©z÷G´·ëÉ=›Zý’KV±ªT½{£ÚNÛõäžÍ†-~É%«XÕ*^½Ñí'múòOfÿd’Õ¬j•/^èö“¶ýy'³a‹_²IjÖ5J—¯t{IÛ~¼“ٰůÙ$µk¥K׺=¤í¿^IìØb×ì’ZµŽ¾¥ëÝÒv߯$öl1köI-ZÆ©Rõîi;o×’{6µû$–­cT©z÷G´·ëÉ=›Zý’KV±ªT½{£ÚNÛõäžÍ†-~É%«XÕ*^½Ñí'múòOfÿd’Õ¬j•/^èö“¶ýy'³a‹_²IjÖ5J—¯t{IÛ~¼“ٰůÙ$µk,|&¾Ý|1ýÆ1ŒcÆ=~Ot·Ä|e¿” ~ÛíÌŒ]©…BÂØ%ŠU±?ø÷ÅU]
+›æ5?Ý?O_Û"N½tTSïþø,¿Wîa™t¡~€[lfÏæüÚ|@·Ö_¦ e>RI3kûÓé À ÷«€Fÿ /Ò}÷ËÀÂ@¾P_ÙhÇ8gM
 Ak+0醰ÀŸû¦±ÔýÙ”ü`½?/éœôË.gÓÝ™™™ïÖ½óáþ€^@]&ÜÇyôýtúgˆ/¸°-À_Ý÷`èúÀ/°Ô .N.êÀtrê@«äòJ 0”¨ƒÈºM§ôÍÁ%|¯ØŸ/@_4ìÞp^³ìÀ-o /x.À^*az‚À^WP^€´‚, ¾KØÄ×8•@| /`Ss`_ÐùÀ^‡`É5: ½eP [§ _ åtûÒ¨*–ààÀ\‚÷dýð[Š€àrV ´R.ð]A`/ו@w€´`ZÐ-Ázܼ
+ ´SÔçØÌ¹ìî<À°ìJ 5üøPºxŠt‘+¼TP°À_X-À¿HÕ…&)0¤ÅXLL'Ì`¸œ‚ÜÀ¿Xôì_0/P,¬Kh&îòyLÃS´ð¹ÞÀ¹4°. X Xƒçžà.ιg”ߘ¢îx‚À[Ð,©}²¨¥^ ½³  -} ]qԐ/¤‰ö °¹Ìªï{ÁxýGp¨óÜÆ1™-ÁlÔP «ÐT¥} »×Èñ€.€¶Ÿ‹ñ};fßéÏ”ïñù׉°.À°ØÎµ>™2N©ì•@aÅ*€Ð.@·€´
+½ ¾À½	+â7rÄlÀíx€]຀»ÀIóŠ€Ð. ]Œ•‘•‘‘0{{Àº
+}g¸à> _Ó´ªìK¸@æ³ÄÀSÐܘ/Ûš>ƒè}3˜/~ -ÒÃEë:zдÞ	>0,æÚ@¶ÓªüâÔ²|癩ð€·àÔÏ*€ù@.AP´€^ËÔùÁW€€-À½À¼êP)>2ýWp.ð€»øAyÏ€P[‚Éâ©áêÙÜÈzÀ.À¸À™Tz~U©ÿ9à¨,<§ˆ¨
+X$øHP\w‚òØŸlærÀx`Zìlí?	‡qìê½Ò¨Žø«|À/í‰ña1„ÅOP/pï•@| º‚®à¨*ÜØô;§p.A|À«Àúlò0ö”÷ªuö'°ÆA~à/Œ¯x/P[h _h™ ]à°Æ
+¼Auànæ\‚âwö‚ë|¼UO€P.Azï`,€²E]à»åP°.{Á| °à¶ °úà¹~Ì›€°¨/ÿMŽê´•P ^ÉÀ«åð•@`.rh<`,€°½ÑPp;ÁlÜp ,€¾©í÷¥P ¾€¾ ]A&€[ ¸퀻WÆð‚ó7À,ö€´óÍÌá*€ÜíR€ð¸/ÕáÜ*P›‚ê4Ôˆ/ו@p†àóÕL‘ Þ{¸Ú¤A†çP\ ½À¾0_¸àÈ*ä /p.À½À/„ ]| µØ ²w ¼ yØÑö–འY…†^Ùîÿ¬ªõ€¿ªU¸/oŠ{Ï@UñÁP€·`)öÞ€-äÀìÔ
+^ °
+X}@»| / _@*Ôä¸#@/(¨ ô™R€÷{`ƒ÷$R“ÿâîH§
+K,€ 
\ No newline at end of file

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/Makefile.am	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,149 @@
+# Copyright © 2009-2010 inria.  All rights reserved.
+# Copyright © 2009-2011 Université Bordeaux 1
+# Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+
+AM_CFLAGS = $(HWLOC_CFLAGS)
+AM_CPPFLAGS = $(HWLOC_CPPFLAGS)
+AM_LDFLAGS = $(HWLOC_LDFLAGS)
+
+# Add your expected output file here.
+# By default, it shows the output of `lstopo - -v'.
+sysfs_outputs = \
+		2amd64-2n.output \
+		2i386-2t-hugepagesizecount.xml.output \
+		2ps3-2t.output \
+		4ia64-4s.output \
+		4ppc-4c.output \
+		256ppc-8n8s4t.output \
+		256ppc-8n8s4t-nocache.output \
+		256ppc-8n8s4t-nosys.output \
+		32amd64-4s2n4c-cgroup.output \
+		32amd64-4s2n4c-cgroup.xml.output \
+		32ppc-4n4c2c.output \
+		8amd64-4n2c.output  \
+		8em64t-4c2t.output \
+		8em64t-2s2ca2c.output \
+		8em64t-2s4c-heterogeneous.output \
+		8ia64-2n2s2c.output \
+		8ia64-2s2c2t.output \
+		8ia64-4s2c.output \
+		16amd64-8n2c.output \
+		16amd64-8n2c-cpusets.output \
+		16amd64-8n2c-cpusets.xml.output \
+		16amd64-8n2c-cpusets_noadmin.output \
+		16em64t-4s2cu2c.output \
+		16em64t-4s2c2t.output \
+		16em64t-4s2c2t-offlines.output \
+		16em64t-4s2c2t-offlines.xml.output \
+		16em64t-4s2c2t-offlines_noadmin.output \
+		16em64t-4s2c2t_ncaches.output \
+		16em64t-4s2c2t_merge.output \
+		16em64t-4s2c2t.xml.output \
+		16em64t-2m4c2t.output \
+		16ia64-8n2s.output \
+		48amd64-4d2n6c-sparse.output \
+		64fake-4n2s2ca2c2t.output \
+		96em64t-4n4d3ca2co.output \
+		96em64t-4n4d3ca2co-forcecpuinfo.output \
+		128ia64-17n4s2c.output \
+		256ia64-64n2s2c.output \
+		4qs22-2s2t.output \
+		2s390-2c.output \
+		20s390-2g6s4c.output \
+		1alpha.output \
+		2arm-2c.output
+
+# Each output `xyz.output' must have a corresponding tarball `xyz.tar.bz2'
+# or a corresponding `xyz.source' specifying which tarball to use
+sysfs_tarballs = \
+		2amd64-2n.tar.bz2 \
+		2i386-2t-hugepagesizecount.tar.bz2 \
+		2i386-2t-hugepagesizecount.xml.source \
+		2ps3-2t.tar.bz2 \
+		4ia64-4s.tar.bz2 \
+		4ppc-4c.tar.bz2 \
+		256ppc-8n8s4t.tar.bz2 \
+		256ppc-8n8s4t-nocache.source \
+		256ppc-8n8s4t-nosys.source \
+		32amd64-4s2n4c-cgroup.tar.bz2 \
+		32amd64-4s2n4c-cgroup.xml.source \
+		32ppc-4n4c2c.tar.bz2 \
+		8amd64-4n2c.tar.bz2  \
+		8em64t-4c2t.tar.bz2 \
+		8em64t-2s2ca2c.tar.bz2 \
+		8em64t-2s4c-heterogeneous.tar.bz2 \
+		8ia64-2n2s2c.tar.bz2 \
+		8ia64-2s2c2t.tar.bz2 \
+		8ia64-4s2c.tar.bz2 \
+		16amd64-8n2c.tar.bz2 \
+		16amd64-8n2c-cpusets.tar.bz2 \
+		16amd64-8n2c-cpusets.xml.source \
+		16amd64-8n2c-cpusets_noadmin.source \
+		16em64t-4s2cu2c.tar.bz2 \
+		16em64t-4s2c2t.tar.bz2 \
+		16em64t-4s2c2t-offlines.tar.bz2 \
+		16em64t-4s2c2t-offlines.xml.source \
+		16em64t-4s2c2t-offlines_noadmin.source \
+		16em64t-2m4c2t.tar.bz2 \
+		16em64t-4s2c2t_merge.source \
+		16em64t-4s2c2t_ncaches.source \
+		16em64t-4s2c2t.xml.source \
+		16ia64-8n2s.tar.bz2 \
+		48amd64-4d2n6c-sparse.tar.bz2 \
+		64fake-4n2s2ca2c2t.tar.bz2 \
+		96em64t-4n4d3ca2co.tar.bz2 \
+		96em64t-4n4d3ca2co-forcecpuinfo.source \
+		128ia64-17n4s2c.tar.bz2 \
+		256ia64-64n2s2c.tar.bz2 \
+		4qs22-2s2t.tar.bz2 \
+		2s390-2c.tar.bz2 \
+		20s390-2g6s4c.tar.bz2 \
+		1alpha.tar.bz2 \
+		2arm-2c.tar.bz2
+
+# Each output `xyz.output' may have a corresponding exclude `xyz.exclude'
+sysfs_excludes = \
+		256ppc-8n8s4t-nocache.exclude \
+		256ppc-8n8s4t-nosys.exclude
+
+# Each output `xyz.output' may have a corresponding `xyz.options'
+# file modifying the behavior of lstopo
+sysfs_options = \
+		2i386-2t-hugepagesizecount.xml.options \
+		16amd64-8n2c-cpusets.xml.options \
+		16amd64-8n2c-cpusets_noadmin.options \
+		16em64t-4s2c2t-offlines.xml.options \
+		16em64t-4s2c2t-offlines_noadmin.options \
+		16em64t-4s2c2t_ncaches.options \
+		16em64t-4s2c2t_merge.options \
+		16em64t-4s2c2t.xml.options \
+		32amd64-4s2n4c-cgroup.xml.options
+
+# Each output `xyz.output' may have a corresponding `xyz.env'
+# modifying the environment of lsopo
+sysfs_envs = \
+		2i386-2t-hugepagesizecount.xml.env \
+		32amd64-4s2n4c-cgroup.env \
+		32amd64-4s2n4c-cgroup.xml.env \
+		96em64t-4n4d3ca2co-forcecpuinfo.env
+
+if HWLOC_BUILD_TESTS
+if HWLOC_HAVE_OPENAT
+if HWLOC_HAVE_BUNZIPP
+TESTS = $(sysfs_outputs)
+endif HWLOC_HAVE_BUNZIPP
+endif HWLOC_HAVE_OPENAT
+endif HWLOC_BUILD_TESTS
+
+EXTRA_DIST = $(sysfs_outputs) $(sysfs_tarballs) $(sysfs_excludes) $(sysfs_options) $(sysfs_envs)
+
+TESTS_ENVIRONMENT = $(builddir)/test-topology.sh
+
+
+bin_SCRIPTS = hwloc-gather-topology
+
+install-exec-hook:
+	$(SED) -e 's/abs_top_builddir\/utils/bindir/' -e '/abs_top_builddir/d' $(DESTDIR)$(bindir)/hwloc-gather-topology > $(DESTDIR)$(bindir)/hwloc-gather-topology.tmp && mv -f $(DESTDIR)$(bindir)/hwloc-gather-topology.tmp $(DESTDIR)$(bindir)/hwloc-gather-topology
+
+SUBDIRS = gather

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/Makefile.am	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,13 @@
+# Copyright © 2010 inria.  All rights reserved.
+# Copyright © 2010 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+
+if HWLOC_BUILD_TESTS
+if HWLOC_HAVE_LINUX
+if HWLOC_HAVE_OPENAT
+if HWLOC_HAVE_BUNZIPP
+TESTS = test-gather-topology.sh
+endif HWLOC_HAVE_BUNZIPP
+endif HWLOC_HAVE_OPENAT
+endif HWLOC_HAVE_LINUX
+endif HWLOC_BUILD_TESTS

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,83 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2010 inria.  All rights reserved.
+# Copyright © 2010 Cisco Systems, Inc.  All rights reserved.
+# Copyright © 2011 Université Bordeaux 1
+# See COPYING in top-level directory.
+#
+
+abs_top_builddir="@abs_top_builddir@"
+lstopo="$abs_top_builddir/utils/lstopo"
+gather="$abs_top_builddir/tests/linux/hwloc-gather-topology"
+
+# make sure we use default numeric formats
+LANG=C
+LC_ALL=C
+export LANG LC_ALL
+
+# Ensure we're running on linux.  If not, then just exit with status
+# code 77 (the GNU standard for a skipped test)
+
+case `uname -a` in
+*[Ll]inux*) good=1 ;;
+*)
+    echo "Not running on linux; skipped"
+    exit 77 ;;
+esac 
+
+error()
+{
+    echo $@ 2>&1
+}
+
+if [ ! -x "$lstopo" ]
+then
+    error "Could not find executable file \`$lstopo'."
+    exit 1
+fi
+if [ ! -x "$gather" ]
+then
+    error "Could not find executable script \`$gather'."
+    exit 1
+fi
+
+tmpdir=`mktemp -d`
+
+# make sure we compare things that are comparable
+# (the tarball cannot be "this system")
+export HWLOC_THISSYSTEM=0
+
+echo "Saving current system topology to XML..."
+if ! "$lstopo" "$tmpdir/save.xml" ; then
+    error "Failed"
+    exit 1
+fi
+
+echo "Saving current system topology to a tarball..."
+if ! "$gather" "$tmpdir/save" ; then
+    error "Failed"
+    exit 1
+fi
+
+echo "Extracting tarball..."
+if ! ( cd "$tmpdir" && tar xfj save.tar.bz2 ) ; then
+     error "Failed"
+     exit 1
+fi
+export HWLOC_FSROOT="$tmpdir/save"
+
+echo "Saving tarball topology to XML..."
+if ! "$lstopo" "$tmpdir/save2.xml" ; then
+    error "Failed"
+    exit 1
+fi
+
+echo "Comparing XML outputs..."
+( cd $tmpdir && diff -u save.xml save2.xml )
+result=$?
+
+rm -rf "$tmpdir"
+
+exit $result


Property changes on: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/gather/test-gather-topology.sh.in
___________________________________________________________________
Added: svn:executable
   + *

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/hwloc-gather-topology.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/hwloc-gather-topology.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/hwloc-gather-topology.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,138 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2009 CNRS
+# Copyright © 2009-2010 inria.  All rights reserved.
+# Copyright © 2009-2012 Université Bordeaux 1
+# See COPYING in top-level directory.
+#
+
+abs_top_builddir="@abs_top_builddir@"
+prefix="@prefix@"
+exec_prefix="@exec_prefix@"
+bindir="@bindir@"
+# this will be changed into $bindir/lstopo during make install
+lstopo="$abs_top_builddir/utils/lstopo"
+
+# make sure we use default numeric formats
+LANG=C
+LC_ALL=C
+export LANG LC_ALL
+
+error()
+{
+    echo $@ 2>&1
+}
+
+usage()
+{
+   echo "$0 <savepath>"
+   echo "  Saves the Linux topology files (/sys, /proc, ...) under <savepath>.tar.bz2"
+   echo "  and the corresponding lstopo verbose output under <savepath>.output"
+   echo "Example:"
+   echo "  $0 /tmp/\$(uname -n)"
+}
+
+name="$1"; shift
+if [ -z "$name" -o x`echo $name | cut -c1` = x- ] ; then
+  [ x$name != x -a x$name != x-h -a x$name != x--help ] && echo "Unrecognized option: $name"
+  usage
+  exit 1
+fi
+basename=`basename "$name"`
+dirname=`dirname "$name"`
+
+if ! mkdir -p "$dirname" ; then
+    error "Failed to create directory $dirname."
+    exit 1
+fi
+
+if [ ! -w  "$dirname" ] ; then
+    echo "$dirname is not writable."
+    exit 1
+fi
+
+destdir=`mktemp -d`
+
+# Use cat so that we properly get proc/sys files even if their
+# file length is wrong
+savefile() {
+  local dest="$1"
+  local file="$2"
+  dir=`dirname "$file"`
+  mkdir -p "$dest/$dir" 2>/dev/null
+  cat "$file" > "$dest/$file" 2>/dev/null
+}
+
+# Gather the following list of files
+cat << EOF | while read -r path ; do savefile "$destdir/$basename" "$path" ; done
+/proc/cpuinfo
+/proc/meminfo
+/proc/mounts
+/proc/stat
+/proc/self/cpuset
+EOF
+
+# Get all files from the given directory
+# Ignore errors since some files may be missing, and some may be
+# restricted to root (but we don't need them).
+savedir() {
+  local dest="$1"
+  local path="$2"
+  # gather all directories, including empty ones
+  find "$path" -type d 2>/dev/null | while read -r dir ; do
+    mkdir -p "$dest/$dir" 2>/dev/null
+  done
+  # gather all files now
+  find "$path" -type f 2>/dev/null | while read -r file ; do
+    savefile "$dest" "$file"
+  done
+}
+
+# Gather the following list of directories
+cat << EOF | while read -r path ; do savedir "$destdir/$basename" "$path" ; done
+/sys/devices/system/cpu/
+/sys/devices/system/node/
+/sys/bus/cpu/devices/
+/sys/bus/node/devices/
+/sys/class/dmi/id/
+/sys/kernel/mm/hugepages/
+/proc/device-tree/cpus/
+EOF
+
+# Get an entire mount point, after decoding its path
+# we don't support path with \n since it would break in 'find ... | while read ..." above
+savemntpnt() {
+  local encodedpath=$1
+  if echo "$1" | grep "\\012" ; then
+    echo "Ignoring mount point whose filename contains an end of line."
+    return
+  fi
+  local path=$(echo "$1" | sed -e 's@\\134@\\@g' -e 's@\\040@ @g' -e 's@\\011@	@g')
+  savedir "$destdir/$basename" "${path}/"
+}
+
+# Gather cgroup/cpuset mntpnts
+cat /proc/mounts | while read -r dummy1 mntpath mnttype mntopts dummy2 ; do
+  [ x$mnttype = xcpuset ] && savemntpnt "$mntpath"
+  [ x$mnttype = xcgroup ] && echo $mntopts | grep -w cpuset >/dev/null && savemntpnt "$mntpath"
+done
+
+# Create the archive and keep the tree in /tmp for testing
+( cd "$destdir/" && tar cfj "$basename.tar.bz2" "$basename" )
+mv "$destdir/$basename.tar.bz2" "$dirname/$basename.tar.bz2"
+echo "Hierarchy gathered in $dirname/$basename.tar.bz2 and kept in $destdir/$basename/"
+
+# Generate the output as well
+if [ ! -x "$lstopo" ]
+then
+    error "Could not find lstopo executable in the install or build dir."
+    exit 1
+fi
+# we need "Topology not from this system" in the output so as to make test-topology.sh happy
+export HWLOC_THISSYSTEM=0
+"$lstopo" - -v > "$dirname/$basename.output"
+echo "Expected topology output stored in $dirname/$basename.output"
+
+exit 0


Property changes on: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/hwloc-gather-topology.in
___________________________________________________________________
Added: svn:executable
   + *

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/test-topology.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/test-topology.sh.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux/test-topology.sh.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,139 @@
+#!@BASH@
+#-*-sh-*-
+
+#
+# Copyright © 2009 CNRS
+# Copyright © 2009-2010 inria.  All rights reserved.
+# Copyright © 2009-2011 Université Bordeaux 1
+# Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+#
+
+# Check the conformance of `lstopo' for all the Linux sysfs
+# hierarchies available here.  Return true on success.
+
+HWLOC_top_srcdir="@HWLOC_top_srcdir@"
+HWLOC_top_builddir="@HWLOC_top_builddir@"
+lstopo="$HWLOC_top_builddir/utils/lstopo"
+
+actual_output="$1"
+
+# make sure we use default numeric formats
+LANG=C
+LC_ALL=C
+export LANG LC_ALL
+
+error()
+{
+    echo $@ 2>&1
+}
+
+# test_topology NAME TOPOLOGY-DIR
+#
+# Test the topology under TOPOLOGY-DIR.  Return true on success.
+test_topology ()
+{
+    local name="$1"
+    local dir="$2"
+    local expected_output="$3"
+    local options="$4"
+
+    local output="`mktemp`"
+
+    export HWLOC_FSROOT="$dir"
+    export HWLOC_DEBUG_CHECK=1
+
+    opts="-v -"
+    [ -r "$options" ] && opts=`cat $options`
+
+    if ! "$lstopo" $opts > "$output"
+    then
+	result=1
+    else
+	if [ "$HWLOC_UPDATE_TEST_TOPOLOGY_OUTPUT" != 1 ]
+	then
+	    diff -uBb "$expected_output" "$output"
+	    result=$?
+	else
+	    if ! diff "$expected_output" "$output" >/dev/null
+	    then
+		cp -f "$output" "$expected_output"
+		echo "Updated $expected_output"
+	    fi
+	    result=0
+	fi
+    fi
+
+    rm "$output"
+
+    return $result
+}
+
+# test_eligible TOPOLOGY-DIR
+#
+# Return true if the topology under TOPOLOGY-DIR is eligible for
+# testing with the current flavor.
+test_eligible()
+{
+    local dir="$1"
+    local output="$2"
+
+    [ -d "$dir" -a -f "$output" ]
+}
+
+
+if [ ! -x "$lstopo" ]
+then
+    error "Could not find executable file \`$lstopo'."
+    exit 1
+fi
+
+topology="${actual_output%.output}"
+if [ "$topology" = "$actual_output" ] ;
+then
+    error "Input file \`$1' should end with .output"
+    exit 1
+fi
+actual_options="$topology".options
+
+# if there's a .source file, use the tarball name it contains instead of $topology
+if [ -f "$topology".source ] ; then
+    actual_source="$HWLOC_top_srcdir"/tests/linux/`cat "$topology".source`
+else
+    actual_source="$topology".tar.bz2
+fi
+
+# if there's a .env file, source it
+if [ -f "$topology".env ] ; then
+    source "$topology".env
+fi
+
+# use an absolute path for tar options because tar is invoked from the temp directory
+actual_exclude="$HWLOC_top_srcdir/tests/linux/`basename $topology`".exclude
+[ -f "$actual_exclude" ] && tar_options="--exclude-from=$actual_exclude"
+
+result=1
+
+dir="`mktemp -d`"
+
+if ! ( bunzip2 -c "$actual_source" | ( cd "$dir" && tar xf - $tar_options ) )
+then
+    error "failed to extract topology \`$topology'"
+else
+    actual_dir="`echo "$dir"/*`"
+
+    if test_eligible "$actual_dir" "$actual_output"
+    then
+	test_count="`expr $test_count + 1`"
+
+	test_topology "`basename $topology`" "$actual_dir" "$actual_output" "$actual_options"
+	result=$?
+    else
+	# Skip this test.
+	result=77
+    fi
+fi
+
+rm -rf "$dir"
+
+exit $result

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux-libnuma.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux-libnuma.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/linux-libnuma.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,244 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+#include <assert.h>
+#define NUMA_VERSION1_COMPATIBILITY
+#include <hwloc/linux-libnuma.h>
+
+/* check the linux libnuma helpers */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  hwloc_bitmap_t set, set2, nocpunomemnodeset, nocpubutmemnodeset, nomembutcpunodeset, nomembutcpucpuset;
+  hwloc_obj_t node;
+  struct bitmask *bitmask, *bitmask2;
+  unsigned long mask;
+  unsigned long maxnode;
+  int i;
+
+  if (numa_available() < 0)
+    /* libnuma has inconsistent behavior when the kernel isn't NUMA-aware.
+     * don't try to check everything precisely.
+     */
+    exit(77);
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+
+  /* convert full stuff between cpuset and libnuma */
+  set = hwloc_bitmap_alloc();
+  nocpunomemnodeset = hwloc_bitmap_alloc();
+  nocpubutmemnodeset = hwloc_bitmap_alloc();
+  nomembutcpunodeset = hwloc_bitmap_alloc();
+  nomembutcpucpuset = hwloc_bitmap_alloc();
+  /* gather all nodes if any, or the whole system if no nodes */
+  if (hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE)) {
+    node = NULL;
+    while ((node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, node)) != NULL) {
+      hwloc_bitmap_or(set, set, node->cpuset);
+      if (hwloc_bitmap_iszero(node->cpuset)) {
+	if (node->memory.local_memory)
+	  hwloc_bitmap_set(nocpubutmemnodeset, node->os_index);
+	else
+	  hwloc_bitmap_set(nocpunomemnodeset, node->os_index);
+      } else if (!node->memory.local_memory) {
+	hwloc_bitmap_set(nomembutcpunodeset, node->os_index);
+	hwloc_bitmap_or(nomembutcpucpuset, nomembutcpucpuset, node->cpuset);
+      }
+    }
+  } else {
+    hwloc_bitmap_or(set, set, hwloc_topology_get_complete_cpuset(topology));
+  }
+
+  set2 = hwloc_bitmap_alloc();
+  hwloc_cpuset_from_linux_libnuma_bitmask(topology, set2, numa_all_nodes_ptr);
+  /* numa_all_nodes_ptr doesn't contain NODES with CPU but no memory */
+  hwloc_bitmap_or(set2, set2, nomembutcpucpuset);
+  assert(hwloc_bitmap_isequal(set, set2));
+  hwloc_bitmap_free(set2);
+
+  bitmask = hwloc_cpuset_to_linux_libnuma_bitmask(topology, set);
+  /* numa_all_nodes_ptr contains NODES with no CPU but with memory */
+  hwloc_bitmap_foreach_begin(i, nocpubutmemnodeset) { numa_bitmask_setbit(bitmask, i); } hwloc_bitmap_foreach_end();
+  assert(numa_bitmask_equal(bitmask, numa_all_nodes_ptr));
+  numa_bitmask_free(bitmask);
+
+  hwloc_bitmap_free(set);
+
+  /* convert full stuff between nodeset and libnuma */
+  if (hwloc_get_nbobjs_by_type(topology, HWLOC_OBJ_NODE)) {
+    set = hwloc_bitmap_dup(hwloc_get_root_obj(topology)->complete_nodeset);
+  } else {
+    set = hwloc_bitmap_alloc();
+    hwloc_bitmap_fill(set);
+  }
+
+  set2 = hwloc_bitmap_alloc();
+  hwloc_nodeset_from_linux_libnuma_bitmask(topology, set2, numa_all_nodes_ptr);
+  /* numa_all_nodes_ptr doesn't contain NODES with no CPU and no memory */
+  hwloc_bitmap_foreach_begin(i, nocpunomemnodeset) { hwloc_bitmap_set(set2, i); } hwloc_bitmap_foreach_end();
+  /* numa_all_nodes_ptr doesn't contain NODES with CPU but no memory */
+  hwloc_bitmap_or(set2, set2, nomembutcpunodeset);
+  assert(hwloc_bitmap_isequal(set, set2));
+  hwloc_bitmap_free(set2);
+
+  bitmask = hwloc_nodeset_to_linux_libnuma_bitmask(topology, set);
+  assert(numa_bitmask_equal(bitmask, numa_all_nodes_ptr));
+  numa_bitmask_free(bitmask);
+
+  hwloc_bitmap_free(set);
+
+  /* convert empty stuff between cpuset and libnuma */
+  bitmask = numa_bitmask_alloc(1);
+  set = hwloc_bitmap_alloc();
+  hwloc_cpuset_from_linux_libnuma_bitmask(topology, set, bitmask);
+  numa_bitmask_free(bitmask);
+  assert(hwloc_bitmap_iszero(set));
+  hwloc_bitmap_free(set);
+
+  mask=0;
+  set = hwloc_bitmap_alloc();
+  hwloc_cpuset_from_linux_libnuma_ulongs(topology, set, &mask, sizeof(mask)*8);
+  assert(hwloc_bitmap_iszero(set));
+  hwloc_bitmap_free(set);
+
+  set = hwloc_bitmap_alloc();
+  bitmask = hwloc_cpuset_to_linux_libnuma_bitmask(topology, set);
+  bitmask2 = numa_bitmask_alloc(1);
+  assert(numa_bitmask_equal(bitmask, bitmask2));
+  numa_bitmask_free(bitmask);
+  numa_bitmask_free(bitmask2);
+  hwloc_bitmap_free(set);
+
+  set = hwloc_bitmap_alloc();
+  maxnode = sizeof(mask)*8;
+  hwloc_cpuset_to_linux_libnuma_ulongs(topology, set, &mask, &maxnode);
+  assert(!mask);
+  assert(!maxnode);
+  hwloc_bitmap_free(set);
+
+  /* convert empty stuff between nodeset and libnuma */
+  bitmask = numa_bitmask_alloc(1);
+  set = hwloc_bitmap_alloc();
+  hwloc_nodeset_from_linux_libnuma_bitmask(topology, set, bitmask);
+  numa_bitmask_free(bitmask);
+  assert(hwloc_bitmap_iszero(set));
+  hwloc_bitmap_free(set);
+
+  mask=0;
+  set = hwloc_bitmap_alloc();
+  hwloc_nodeset_from_linux_libnuma_ulongs(topology, set, &mask, sizeof(mask)*8);
+  assert(hwloc_bitmap_iszero(set));
+  hwloc_bitmap_free(set);
+
+  set = hwloc_bitmap_alloc();
+  bitmask = hwloc_nodeset_to_linux_libnuma_bitmask(topology, set);
+  bitmask2 = numa_bitmask_alloc(1);
+  assert(numa_bitmask_equal(bitmask, bitmask2));
+  numa_bitmask_free(bitmask);
+  numa_bitmask_free(bitmask2);
+  hwloc_bitmap_free(set);
+
+  set = hwloc_bitmap_alloc();
+  maxnode = sizeof(mask)*8;
+  hwloc_nodeset_to_linux_libnuma_ulongs(topology, set, &mask, &maxnode);
+  assert(!mask);
+  assert(!maxnode);
+  hwloc_bitmap_free(set);
+
+  /* convert first node (with CPU and memory) between cpuset/nodeset and libnuma */
+  node = hwloc_get_next_obj_by_type(topology, HWLOC_OBJ_NODE, NULL);
+  while (node && (!node->memory.local_memory || hwloc_bitmap_iszero(node->cpuset)))
+    /* skip nodes with no cpus or no memory to avoid strange libnuma behaviors */
+    node = node->next_sibling;
+  if (node) {
+    /* convert first node between cpuset and libnuma */
+    bitmask = hwloc_cpuset_to_linux_libnuma_bitmask(topology, node->cpuset);
+    assert(numa_bitmask_isbitset(bitmask, node->os_index));
+    numa_bitmask_clearbit(bitmask, node->os_index);
+    bitmask2 = numa_bitmask_alloc(node->os_index + 1);
+    assert(numa_bitmask_equal(bitmask, bitmask2));
+    numa_bitmask_free(bitmask);
+    numa_bitmask_free(bitmask2);
+
+    maxnode = sizeof(mask)*8;
+    hwloc_cpuset_to_linux_libnuma_ulongs(topology, node->cpuset, &mask, &maxnode);
+    if (node->os_index >= sizeof(mask)*8) {
+      assert(!maxnode);
+      assert(!mask);
+    } else {
+      assert(maxnode = node->os_index + 1);
+      assert(mask == (1UL << node->os_index));
+    }
+
+    set = hwloc_bitmap_alloc();
+    bitmask = numa_bitmask_alloc(node->os_index + 1);
+    numa_bitmask_setbit(bitmask, node->os_index);
+    hwloc_cpuset_from_linux_libnuma_bitmask(topology, set, bitmask);
+    numa_bitmask_free(bitmask);
+    assert(hwloc_bitmap_isequal(set, node->cpuset));
+    hwloc_bitmap_free(set);
+
+    set = hwloc_bitmap_alloc();
+    if (node->os_index >= sizeof(mask)*8) {
+      mask = 0;
+    } else {
+      mask = 1UL << node->os_index;
+    }
+    hwloc_cpuset_from_linux_libnuma_ulongs(topology, set, &mask, node->os_index + 1);
+    assert(hwloc_bitmap_isequal(set, node->cpuset));
+    hwloc_bitmap_free(set);
+
+    /* convert first node between nodeset and libnuma */
+    bitmask = hwloc_nodeset_to_linux_libnuma_bitmask(topology, node->nodeset);
+    assert(numa_bitmask_isbitset(bitmask, node->os_index));
+    numa_bitmask_clearbit(bitmask, node->os_index);
+    bitmask2 = numa_bitmask_alloc(node->os_index + 1);
+    assert(numa_bitmask_equal(bitmask, bitmask2));
+    numa_bitmask_free(bitmask);
+    numa_bitmask_free(bitmask2);
+
+    maxnode = sizeof(mask)*8;
+    hwloc_nodeset_to_linux_libnuma_ulongs(topology, node->nodeset, &mask, &maxnode);
+    if (node->os_index >= sizeof(mask)*8) {
+      assert(!maxnode);
+      assert(!mask);
+    } else {
+      assert(maxnode = node->os_index + 1);
+      assert(mask == (1UL << node->os_index));
+    }
+
+    set = hwloc_bitmap_alloc();
+    bitmask = numa_bitmask_alloc(node->os_index + 1);
+    numa_bitmask_setbit(bitmask, node->os_index);
+    hwloc_nodeset_from_linux_libnuma_bitmask(topology, set, bitmask);
+    numa_bitmask_free(bitmask);
+    assert(hwloc_bitmap_isequal(set, node->nodeset));
+    hwloc_bitmap_free(set);
+
+    set = hwloc_bitmap_alloc();
+    if (node->os_index >= sizeof(mask)*8) {
+      mask = 0;
+    } else {
+      mask = 1UL << node->os_index;
+    }
+    hwloc_nodeset_from_linux_libnuma_ulongs(topology, set, &mask, node->os_index + 1);
+    assert(hwloc_bitmap_isequal(set, node->nodeset));
+    hwloc_bitmap_free(set);
+  }
+
+  hwloc_bitmap_free(nomembutcpucpuset);
+  hwloc_bitmap_free(nomembutcpunodeset);
+  hwloc_bitmap_free(nocpubutmemnodeset);
+  hwloc_bitmap_free(nocpunomemnodeset);
+
+  hwloc_topology_destroy(topology);
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/myriexpress.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/myriexpress.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/myriexpress.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,77 @@
+/*
+ * Copyright © 2010 inria.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <myriexpress.h>
+#include <hwloc.h>
+#include <hwloc/myriexpress.h>
+
+/* check the myriexpress helpers */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  mx_return_t ret;
+  unsigned i, count;
+  int err;
+
+  putenv("MX_ERRORS_ARE_FATAL=0");
+
+  ret = mx_init();
+  if (ret != MX_SUCCESS) {
+    fprintf(stderr, "mx_init failed, %s\n", mx_strerror(ret));
+    return 0;
+  }
+
+  mx_get_info(NULL, MX_NIC_COUNT, NULL, 0, &count, sizeof(count));
+  if (ret != MX_SUCCESS) {
+    fprintf(stderr, "mx_get_info MX_NIC_COUNT failed, %s\n", mx_strerror(ret));
+    return 0;
+  }
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+
+  for(i=0; i<count; i++) {
+    mx_endpoint_t ep;
+    char *cpuset_string;
+    hwloc_bitmap_t set;
+
+    ret = mx_open_endpoint(i, MX_ANY_ENDPOINT, 0, NULL, 0, &ep);
+    if (ret != MX_SUCCESS)
+      continue;
+    set = hwloc_bitmap_alloc();
+    err = hwloc_mx_endpoint_get_device_cpuset(topology, ep, set);
+    if (err < 0) {
+      perror("hwloc_mx_endpoint_get_device_cpuset failed");
+      return -1;
+    }
+    hwloc_bitmap_asprintf(&cpuset_string, set);
+    printf("got cpuset %s for endpoint on board #%d\n",
+	   cpuset_string, i);
+    free(cpuset_string);
+    hwloc_bitmap_free(set);
+    mx_close_endpoint(ep);
+
+    set = hwloc_bitmap_alloc();
+    err = hwloc_mx_board_get_device_cpuset(topology, i, set);
+    if (err < 0) {
+      perror("hwloc_mx_board_get_device_cpuset failed");
+      return -1;
+    }
+    hwloc_bitmap_asprintf(&cpuset_string, set);
+    printf("got cpuset %s for board #%d\n",
+           cpuset_string, i);
+    free(cpuset_string);
+    hwloc_bitmap_free(set);
+  }
+
+  hwloc_topology_destroy(topology);
+
+  mx_finalize();
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/openfabrics-verbs.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/openfabrics-verbs.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/openfabrics-verbs.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,58 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <assert.h>
+#include <infiniband/verbs.h>
+#include <hwloc.h>
+#include <hwloc/openfabrics-verbs.h>
+
+/* check the ibverbs helpers */
+
+int main(void)
+{
+  hwloc_topology_t topology;
+  struct ibv_device **dev_list, *dev;
+  int count, i;
+  int err;
+
+  dev_list = ibv_get_device_list(&count);
+  if (!dev_list) {
+    fprintf(stderr, "ibv_get_device_list failed\n");
+    return 0;
+  }
+  printf("ibv_get_device_list found %d devices\n", count);
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_load(topology);
+
+  for(i=0; i<count; i++) {
+    hwloc_bitmap_t set;
+    dev = dev_list[i];
+
+    set = hwloc_bitmap_alloc();
+    err = hwloc_ibv_get_device_cpuset(topology, dev, set);
+    if (err < 0) {
+      printf("failed to get cpuset for device %d (%s)\n",
+	     i, ibv_get_device_name(dev));
+    } else {
+      char *cpuset_string = NULL;
+      hwloc_bitmap_asprintf(&cpuset_string, set);
+      printf("got cpuset %s for device %d (%s)\n",
+	     cpuset_string, i, ibv_get_device_name(dev));
+      free(cpuset_string);
+    }
+    hwloc_bitmap_free(set);
+  }
+
+  hwloc_topology_destroy(topology);
+
+  ibv_free_device_list(dev_list);
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/Makefile.am	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,70 @@
+# Copyright © 2009-2010 inria.  All rights reserved.
+# Copyright © 2009, 2011-2012 Université Bordeaux 1
+# Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+
+AM_CFLAGS = $(HWLOC_CFLAGS)
+AM_CPPFLAGS = $(HWLOC_CPPFLAGS)
+AM_LDFLAGS = $(HWLOC_LDFLAGS)
+
+SRC = $(HWLOC_top_srcdir)/src
+
+if HWLOC_BUILD_TESTS
+if HWLOC_HAVE_LINUX
+check_LTLIBRARIES = libhwloc-ports.la
+endif HWLOC_HAVE_LINUX
+endif HWLOC_BUILD_TESTS
+
+# Note that AC_CONFIG_LINKS sets up the sym links for the files in
+# this directory (back to the $top_srcdir/src directory).  So if you
+# need more sym-linked files in here, go edit configure.ac.  Note that
+# we have to use sym links in here rather than just directly
+# referencing the files via $HWLOC_top_srcdir/src/foo.c because of
+# dependencies issues when using the Automake option "subdir-objects".
+# We nodist these because they're created by configure.
+nodist_libhwloc_ports_la_SOURCES = \
+        topology.c \
+        traversal.c \
+        topology-synthetic.c \
+        topology-solaris.c \
+        topology-solaris-chiptype.c \
+        topology-aix.c \
+        topology-osf.c \
+        topology-windows.c \
+        topology-darwin.c \
+        topology-freebsd.c \
+        topology-hpux.c
+
+libhwloc_ports_la_SOURCES = \
+        include/windows.h \
+        include/kstat.h \
+        include/picl.h \
+        include/sys/rset.h \
+        include/sys/lgrp_user.h \
+        include/sys/sysctl.h \
+        include/sys/procset.h \
+        include/sys/processor.h \
+        include/sys/thread.h \
+        include/sys/mpctl.h \
+        include/sys/cpuset.h \
+        include/sys/systemcfg.h \
+        include/sys/systeminfo.h \
+        include/radset.h \
+        include/cpuset.h \
+        include/numa.h \
+        include/pthread_np.h
+
+libhwloc_ports_la_CPPFLAGS = \
+        $(HWLOC_CPPFLAGS) \
+        -I$(HWLOC_top_srcdir)/include \
+        -I$(HWLOC_top_srcdir)/tests/ports/include \
+        -DHWLOC_COMPILE_PORTS \
+        -DHWLOC_SOLARIS_SYS -DHAVE_LIBLGRP -DHAVE_LIBKSTAT -DHAVE_LGRP_LATENCY_COOKIE \
+        -DHWLOC_AIX_SYS \
+        -DHWLOC_OSF_SYS \
+        -DHWLOC_WIN_SYS \
+        -DHWLOC_DARWIN_SYS \
+        -DHWLOC_FREEBSD_SYS -DHAVE_SYS_CPUSET_H \
+        -DHWLOC_HPUX_SYS \
+        -DHWLOC_INSIDE_LIBHWLOC
+

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/cpuset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/cpuset.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/cpuset.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,24 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_CPUSET_H
+#define HWLOC_PORT_CPUSET_H
+
+typedef int cpu_cursor_t;
+#define SET_CURSOR_INIT -1
+typedef int cpuid_t;
+#define CPU_NONE -1
+typedef int cpuset_t;
+
+int cpusetcreate(cpuset_t *set);
+int cpuemptyset(cpuset_t set);
+int cpuxorset(cpuset_t set1, cpuset_t set2, cpuset_t res);
+int cpucountset(cpuset_t set);
+int cpuaddset(cpuset_t set, cpuid_t cpuid );
+cpuid_t cpu_foreach(cpuset_t cpuset, int flags, cpu_cursor_t *cursor);
+int cpusetdestroy(cpuset_t *set);
+
+#endif /* HWLOC_PORT_CPUSET_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/kstat.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/kstat.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/kstat.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,46 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_KSTAT_H
+#define HWLOC_PORT_KSTAT_H
+
+#include <inttypes.h>
+
+typedef long kid_t;
+
+#define KSTAT_STRLEN 31
+
+typedef struct kstat {
+  char ks_module[KSTAT_STRLEN];
+  int ks_instance;
+  struct kstat *ks_next;
+} kstat_t;
+
+typedef struct kstat_named {
+  unsigned char data_type;
+  union {
+    char c[16];
+    int32_t i32;
+    uint32_t ui32;
+  } value;
+} kstat_named_t;
+
+typedef struct kstat_ctl {
+  kstat_t *kc_chain;
+} kstat_ctl_t;
+
+#define KSTAT_DATA_CHAR 1
+#define KSTAT_DATA_INT32 1
+#define KSTAT_DATA_UINT32 2
+#define KSTAT_DATA_INT64 3
+#define KSTAT_DATA_UINT64 4
+
+kstat_ctl_t *kstat_open(void);
+kid_t kstat_read(kstat_ctl_t *, kstat_t *, void *);
+void *kstat_data_lookup(kstat_t *, char *);
+int kstat_close(kstat_ctl_t *);
+
+#endif /* HWLOC_PORT_KSTAT_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/numa.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/numa.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/numa.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,29 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_NUMA_H
+#define HWLOC_PORT_NUMA_H
+
+#include "sys/types.h"
+#include "radset.h"
+#include "cpuset.h"
+
+int rad_get_num(void);
+int rad_get_cpus(radid_t rad, cpuset_t cpuset);
+ssize_t rad_get_physmem(radid_t rad);
+
+typedef struct {
+  unsigned long mattr_policy;
+  radid_t mattr_rad;
+  radset_t mattr_radset;
+} memalloc_attr_t;
+
+void *nmmap(void *addr, size_t len, int prot, unsigned long flags, int filedes, off_t off, memalloc_attr_t *attr );
+int nmadvise(const void *addr, long len, int behavior, memalloc_attr_t *attr);
+
+
+
+#endif /* HWLOC_PORT_NUMA_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/picl.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/picl.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/picl.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,49 @@
+/*
+ * Copyright © 2011 inria.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_PICL_H
+#define HWLOC_PORT_PICL_H
+
+#include <stdint.h>
+#include <string.h>
+
+#define PICL_PROPNAMELEN_MAX    256
+
+typedef uint64_t picl_nodehdl_t;
+typedef uint64_t picl_prophdl_t;
+
+typedef enum {
+  PICL_PTYPE_UNKNOWN,
+  PICL_PTYPE_INT,
+  PICL_PTYPE_UNSIGNED_INT,
+  PICL_PTYPE_TABLE,
+  PICL_PTYPE_CHARSTRING
+} picl_prop_type_t;
+
+typedef struct {
+  picl_prop_type_t type;
+  size_t size;
+  char name[PICL_PROPNAMELEN_MAX];
+} picl_propinfo_t;
+
+typedef enum {
+  PICL_SUCCESS,
+  PICL_WALK_TERMINATE,
+  PICL_ENDOFLIST
+} picl_errno_t;
+
+extern int picl_initialize(void);
+extern int picl_shutdown(void);
+extern int picl_get_root(picl_nodehdl_t *nodehandle);
+extern int picl_get_first_prop(picl_nodehdl_t nodeh, picl_prophdl_t *proph);
+extern int picl_get_next_prop(picl_prophdl_t proph, picl_prophdl_t *nexth);
+extern int picl_get_propinfo(picl_prophdl_t proph, picl_propinfo_t *pi);
+extern int picl_get_propval(picl_prophdl_t proph, void *valbuf, size_t sz);
+extern int picl_get_next_by_row(picl_prophdl_t thish, picl_prophdl_t *proph);
+extern int picl_get_next_by_col(picl_prophdl_t thish, picl_prophdl_t *proph);
+extern int picl_walk_tree_by_class(picl_nodehdl_t rooth, const char *classname, void *c_args, int (*callback_fn)(picl_nodehdl_t hdl, void *args));
+
+#endif /* HWLOC_PORT_PICL_H */
+

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/pthread_np.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/pthread_np.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/pthread_np.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,15 @@
+/*
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_PTHREAD_NP_H
+#define HWLOC_PORT_PTHREAD_NP_H
+
+#if 0
+/* Conflict with Linux' */
+int pthread_getaffinity_np(pthread_t, size_t, cpuset_t *);
+int pthread_setaffinity_np(pthread_t, size_t, const cpuset_t *);
+#endif
+
+#endif /* HWLOC_PORT_PTHREAD_NP_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/radset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/radset.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/radset.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,81 @@
+/*
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_RADSET_H
+#define HWLOC_PORT_RADSET_H
+
+#include <limits.h>
+
+typedef int radset_cursor_t;
+typedef int radid_t;
+#define RAD_NONE -1
+typedef struct {
+  int foo;
+} radset_t;
+typedef unsigned int nsgid_t;
+#define NSG_NONE -1
+
+extern int radsetcreate(radset_t *set);
+
+extern int rademptyset(radset_t set);
+extern int radaddset(radset_t set, radid_t radid);
+extern int radismember(radset_t set, radid_t radid);
+extern int rad_foreach(radset_t radset, int flags, radset_cursor_t *cursor);
+
+
+extern int radsetdestroy(radset_t *set);
+
+
+int rad_attach_pid(pid_t pid, radset_t radset, unsigned long flags);
+int pthread_rad_attach(pthread_t thread, radset_t radset, unsigned long flags);
+int rad_detach_pid(pid_t pid);
+int pthread_rad_detach(pthread_t thread);
+
+
+/* (strict) */
+#define RAD_INSIST 0x01
+#define RAD_WAIT 0x08
+int rad_bind_pid(pid_t pid, radset_t radset, unsigned long flags);
+int pthread_rad_bind(pthread_t thread, radset_t radset, unsigned long flags);
+
+typedef union rsrcdescr {
+  radset_t rd_radset;
+  int rd_fd;
+  char *rd_pathname;
+  int rd_shmid;
+  pid_t rd_pid;
+  void *rd_addr;
+  nsgid_t rd_nsg;
+} rsrcdescr_t;
+
+typedef struct numa_attr {
+  unsigned nattr_type;
+#define R_RAD 0
+
+  rsrcdescr_t nattr_descr;
+
+  unsigned long nattr_distance;
+#define RAD_DIST_LOCAL 100
+#define RAD_DIST_REMOTE INT_MAX
+
+  unsigned long nattr_flags;
+} numa_attr_t;
+
+typedef enum memalloc_policy {
+  MPOL_DIRECTED,
+  MPOL_THREAD,
+  MPOL_REPLICATED,
+  MPOL_STRIPPED,
+  MPOL_INVALID
+} memalloc_policy_t;
+#define MPOL_NO_MIGRATE 0x100
+
+#define MADV_CURRENT 1
+#define MADV_INSIST 2
+
+int nloc(numa_attr_t *numa_attr, radset_t radset);
+
+#endif /* HWLOC_PORT_RADSET_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/cpuset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/cpuset.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/cpuset.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,31 @@
+/*
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_SYS_CPUSET_H
+#define HWLOC_PORT_SYS_CPUSET_H
+
+#include <limits.h>
+
+typedef long cpuset_t;
+typedef int cpulevel_t;
+typedef int cpuwhich_t;
+
+#define CPU_LEVEL_WHICH 3
+#define CPU_WHICH_TID 1
+#define CPU_WHICH_PID 2
+
+#undef CPU_SETSIZE
+#define CPU_SETSIZE (sizeof(cpuset_t) * CHAR_BIT)
+#undef CPU_ZERO
+#define CPU_ZERO(cpuset) (*(cpuset) = 0)
+#undef CPU_SET
+#define CPU_SET(cpu, cpuset) (*(cpuset) |= (1<<(cpu)))
+#undef CPU_ISSET
+#define CPU_ISSET(cpu, cpuset) (*(cpuset) & (1<<(cpu)))
+
+int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t size, cpuset_t *cpuset);
+int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t size, const cpuset_t *cpuset);
+
+#endif /* HWLOC_PORT_SYS_CPUSET_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/lgrp_user.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/lgrp_user.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/lgrp_user.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,61 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_SYS_LGRP_USER_H
+#define HWLOC_PORT_SYS_LGRP_USER_H
+
+#include <sys/processor.h>
+
+typedef int lgrp_cookie_t;
+#define LGRP_COOKIE_NONE 0
+typedef long lgrp_id_t;
+typedef long long lgrp_mem_size_t;
+
+typedef enum lgrp_content {
+	LGRP_CONTENT_ALL,
+	LGRP_CONTENT_HIERARCHY = LGRP_CONTENT_ALL,
+	LGRP_CONTENT_DIRECT
+} lgrp_content_t;
+
+typedef enum lgrp_view {
+	LGRP_VIEW_CALLER,
+	LGRP_VIEW_OS
+} lgrp_view_t;
+
+typedef enum lgrp_mem_size_flag {
+	LGRP_MEM_SZ_FREE,
+	LGRP_MEM_SZ_INSTALLED
+} lgrp_mem_size_flag_t;
+
+typedef enum lgrp_lat_between {
+	LGRP_LAT_CPU_TO_MEM
+} lgrp_lat_between_t;
+
+typedef enum lgrp_affinity {
+	LGRP_AFF_NONE,
+	LGRP_AFF_WEAK,
+	LGRP_AFF_STRONG
+} lgrp_affinity_t;
+
+lgrp_cookie_t lgrp_init(lgrp_view_t view);
+
+int lgrp_nlgrps(lgrp_cookie_t cookie);
+lgrp_id_t lgrp_root(lgrp_cookie_t cookie);
+int lgrp_cpus(lgrp_cookie_t cookie, lgrp_id_t lgrp, processorid_t *cpuids, unsigned int count, int content);
+int lgrp_children(lgrp_cookie_t cookie, lgrp_id_t parent, lgrp_id_t *lgrp_array, unsigned int lgrp_array_size);
+lgrp_mem_size_t lgrp_mem_size(lgrp_cookie_t cookie, lgrp_id_t lgrp, lgrp_mem_size_flag_t type, lgrp_content_t content);
+int lgrp_latency_cookie(lgrp_cookie_t cookie, lgrp_id_t from, lgrp_id_t to, lgrp_lat_between_t between);
+int lgrp_affinity_set(idtype_t idtype, id_t id, lgrp_id_t lgrp, lgrp_affinity_t aff);
+lgrp_affinity_t lgrp_affinity_get(idtype_t idtype, id_t id, lgrp_id_t lgrp);
+
+int lgrp_fini(lgrp_cookie_t cookie);
+
+/* Should actually be in sys/mman.h, but don't want to interfere with the system one */
+#define MADV_ACCESS_DEFAULT 6
+#define MADV_ACCESS_LWP     7
+#define MADV_ACCESS_MANY    8
+
+#endif /* HWLOC_PORT_SYS_LGRP_USER_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/mpctl.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/mpctl.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/mpctl.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,67 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_SYS_MPCTL_H
+#define HWLOC_PORT_SYS_MPCTL_H
+
+typedef int spu_t, ldom_t, pthread_spu_t, pthread_ldom_t;
+
+typedef enum mpc_request {
+  MPC_GETNUMSPUS,
+  MPC_GETFIRSTSPU,
+  MPC_GETNEXTSPU,
+
+  MPC_GETNUMSPUS_SYS,
+  MPC_GETFIRSTSPU_SYS,
+  MPC_GETNEXTSPU_SYS,
+
+  MPC_GETCURRENTSTSPU,
+  MPC_SETPROCESS,
+  MPC_SETPROCESS_FORCE,
+  MPC_SETLWP,
+  MPC_SETLWP_FORCE,
+  MPC_SETLWP_UP,
+
+  MPC_SETLDOM,
+  MPC_SETLWPLDOM,
+
+  MPC_GETNUMLDOMS,
+  MPC_GETFIRSTLDOM,
+  MPC_GETNEXTLDOM,
+  MPC_GETNUMLDOMS_SYS,
+  MPC_GETFIRSTLDOM_SYS,
+  MPC_GETNEXTLDOM_SYS,
+
+  MPC_SPUTOLDOM,
+  MPC_LDOMSPUS,
+  MPC_LDOMSPUS_SYS,
+
+  MPC_GETPROCESS_BINDVALUE,
+  MPC_GETLWP_BINDVALUE
+} mpc_request_t;
+
+#define MPC_SPUFLOAT 0
+#define MPC_LDOMFLOAT 1
+#define MPC_SELFPID 2
+#define MPC_SELFLWPPID 3
+
+extern int mpctl(mpc_request_t, spu_t, ...);
+
+#define _SC_CCNUMA_SUPPORT 0
+#define _SC_PSET_SUPPORT 1
+
+int pthread_processor_bind_np(int request, pthread_spu_t *answer, pthread_spu_t spu, pthread_t tid);
+
+int pthread_ldom_bind_np(pthread_ldom_t *answer, pthread_ldom_t ldom, pthread_t tid);
+
+#define PTHREAD_SELFTID_NP 0
+#define PTHREAD_LDOMFLOAT_NP 0
+#define PTHREAD_SPUFLOAT_NP 0
+
+#define PTHREAD_BIND_ADVISORY_NP 0
+#define PTHREAD_BIND_FORCED_NP 1
+
+#endif /* HWLOC_PORT_SYS_MPCTL_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/processor.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/processor.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/processor.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,24 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_SYS_PROCESSOR_H
+#define HWLOC_PORT_SYS_PROCESSOR_H
+
+/* Solaris */
+#include <sys/procset.h>
+typedef int processorid_t;
+#define PBIND_NONE -1
+
+extern int processor_bind(idtype_t idtype, id_t id, processorid_t processorid, processorid_t *obind);
+
+/* AIX */
+typedef short cpu_t;
+#define BINDPROCESS 1
+#define BINDTHREAD 2
+#define PROCESSOR_CLASS_ANY ((cpu_t)(-1))
+extern int bindprocessor(int What, int Who, cpu_t Where); 
+
+#endif /* HWLOC_PORT_SYS_PROCESSOR_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/procset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/procset.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/procset.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,16 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_SYS_PROCSET_H
+#define HWLOC_PORT_SYS_PROCSET_H
+
+typedef enum idtype {
+  P_PID,
+  P_LWPID,
+  P_MYID
+} idtype_t;
+
+#endif /* HWLOC_PORT_SYS_PROCSET_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/rset.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/rset.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/rset.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,95 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_SYS_RSET_H
+#define HWLOC_PORT_SYS_RSET_H
+
+#include <stdint.h>
+
+#include "thread.h"
+
+typedef unsigned int uint_t;
+typedef void *rsethandle_t;
+
+#define RS_EMPTY 3
+#define RS_ALL 2
+#define RS_PARTITION 3
+
+#define RS_UNION 1
+#define RS_INTERSECTION 2
+#define RS_EXCLUSION 3
+#define RS_COPY 4
+#define RS_FIRST 5
+#define RS_NEXT 6
+#define RS_NEXT_WRAP 7
+#define RS_ISEMPTY 8
+#define RS_ISEQUAL 9
+#define RS_ISCONTAINED 10
+#define RS_TESTRESOURCE 11
+#define RS_ADDRESOURCE 12
+#define RS_DELRESOURCE 13
+
+typedef int rsinfo_t;
+#define R_NUMPROCS 0
+#define R_MAXSDL 3
+#define R_SMPSDL 4
+#define R_MCMSDL 5
+#define R_MAXPROCS 6
+#define R_L2CSDL 11
+#define R_CORESDL 12
+#define R_REF1SDL 13
+
+#define R_PROCS 6
+
+#define R_NADA 0
+#define R_PROCESS 1
+#define R_RSET 2
+#define R_SUBRANGE 3
+#define R_SHM 4
+#define R_FILDES 5
+#define R_THREAD 6
+
+#define P_DEFAULT 0
+#define P_FIRST_TOUCH 1
+#define P_BALANCED 2	/* This is the default */
+
+rsethandle_t rs_alloc (unsigned int flags);
+int rs_numrads(rsethandle_t rset, unsigned int sdl, unsigned int flags);
+int rs_getrad (rsethandle_t rset, rsethandle_t rad, unsigned int sdl, unsigned int index, unsigned int flags);
+int rs_getinfo(rsethandle_t rseth, rsinfo_t info_type, unsigned int flags);
+int rs_op(unsigned int command, rsethandle_t rseth1, rsethandle_t rseth2, unsigned int flags, unsigned int id);
+void rs_free(rsethandle_t rseth);
+
+typedef int rstype_t;
+typedef struct subrange subrange_t;
+
+typedef union {
+  pid_t at_pid;
+  tid_t at_tid;
+  int at_shmid;
+  int at_fd;
+  rsethandle_t at_rset;
+  subrange_t *at_subrange;
+} rsid_t;
+
+struct subrange {
+  uint64_t su_offset;
+  uint64_t su_length;
+  rstype_t su_rstype;
+  unsigned int su_policy;
+  rsid_t su_rsid;
+  uint64_t su_rsoffset;
+  uint64_t su_rslength;
+};
+
+int ra_attachrset (rstype_t rstype, rsid_t rsid, rsethandle_t rset, unsigned int flags);
+int ra_detachrset (rstype_t rstype, rsid_t rsid, unsigned int flags);
+int ra_getrset (rstype_t rstype, rsid_t rsid, unsigned int flags, rsethandle_t rset);
+
+void * ra_mmap(void *addr, off64_t len, int prot, int flags, int fildes, off64_t off, rstype_t rstype, rsid_t rsid, unsigned int att_flags);
+
+
+#endif /* HWLOC_PORT_SYS_RSET_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/sysctl.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/sysctl.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/sysctl.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,13 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_SYS_SYSCTL_H
+#define HWLOC_PORT_SYS_SYSCTL_H
+
+extern int sysctl(int *name, int name_len, void *oldp, size_t *oldlenp, void *newp, size_t newlen);
+extern int sysctlbyname(const char *name, void *oldp, size_t *oldlenp, void *newp, size_t newlen);
+
+#endif /* HWLOC_PORT_SYS_SYSCTL_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/systemcfg.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/systemcfg.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/systemcfg.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,17 @@
+/*
+ * Copyright © 2011 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_SYS_SYSTEMCFG_H
+#define HWLOC_PORT_SYS_SYSTEMCFG_H
+
+struct {
+  int dcache_size;
+  int dcache_asc;
+  int dcache_line;
+  int L2_cache_size;
+  int L2_cache_asc;
+} _system_configuration;
+
+#endif /* HWLOC_PORT_SYS_SYSTEMCFG_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/systeminfo.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/systeminfo.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/systeminfo.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,14 @@
+/*
+ * Copyright © 2011 inria.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_SYS_SYSTEMINFO_H
+#define HWLOC_PORT_SYS_SYSTEMINFO_H
+
+#define SI_HW_PROVIDER 8
+#define SI_PLATFORM 513
+
+extern int sysinfo(int, char *, long);
+
+#endif /* HWLOC_PORT_SYS_SYSTEMINFO_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/thread.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/thread.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/sys/thread.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,18 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_SYS_THREAD_H
+#define HWLOC_PORT_SYS_THREAD_H
+
+typedef long tid_t;
+tid_t thread_self(void);
+struct __pthrdsinfo {
+  tid_t __pi_tid;
+};
+#define PTHRDSINFO_QUERY_TID 0x10
+int pthread_getthrds_np (pthread_t * thread, int mode, struct __pthrdsinfo * buf, int bufsize, void * regbuf, int * regbufsize);
+
+#endif /* HWLOC_PORT_SYS_THREAD_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/windows.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/windows.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/ports/include/windows.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,72 @@
+/*
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_PORT_WINDOWS_H
+#define HWLOC_PORT_WINDOWS_H
+
+#include <inttypes.h>
+
+#define DECLARE_HANDLE(n) typedef struct n##__ {int i;} *n
+DECLARE_HANDLE(HINSTANCE);
+typedef HINSTANCE HMODULE;
+typedef int WINBOOL, BOOL;
+typedef int64_t LONGLONG;
+typedef uint64_t DWORDLONG;
+typedef DWORDLONG ULONGLONG, *PULONGLONG;
+typedef unsigned char BYTE, UCHAR;
+typedef unsigned short WORD, USHORT;
+typedef unsigned long ULONG_PTR, DWORD_PTR, DWORD, *PDWORD, *PDWORD_PTR;
+typedef const char *LPCSTR;
+typedef int (*FARPROC)();
+typedef void *PVOID,*LPVOID;
+typedef ULONG_PTR SIZE_T;
+
+/* This is to cope with linux using integers for hwloc_pid_t and hwloc_thread_t
+typedef PVOID HANDLE; */
+typedef int HANDLE;
+
+#ifdef __GNUC__
+#define _ANONYMOUS_UNION __extension__
+#define _ANONYMOUS_STRUCT __extension__
+#else
+#define _ANONYMOUS_UNION
+#define _ANONYMOUS_STRUCT
+#endif /* __GNUC__ */
+#define DUMMYUNIONNAME
+#define WINAPI
+
+#define ANYSIZE_ARRAY 1
+
+#define ERROR_INSUFFICIENT_BUFFER 122L
+
+#define MEM_COMMIT	0x1000
+#define MEM_RESERVE	0x2000
+#define MEM_RELEASE	0x8000
+
+#define PAGE_EXECUTE_READWRITE	0x0040
+
+WINAPI HINSTANCE LoadLibrary(LPCSTR);
+WINAPI void *GetProcAddress(HINSTANCE, LPCSTR);
+WINAPI DWORD GetLastError(void);
+
+DWORD_PTR WINAPI SetThreadAffinityMask(HANDLE hThread, DWORD_PTR dwThreadAffinityMask);
+BOOL WINAPI SetProcessAffinityMask(HANDLE hProcess, DWORD_PTR dwProcessAffinityMask);
+BOOL WINAPI GetProcessAffinityMask(HANDLE hProcess, PDWORD_PTR lpProcessAffinityMask, PDWORD_PTR lpSystemAffinityMask);
+
+HANDLE WINAPI GetCurrentThread(void);
+HANDLE WINAPI GetCurrentProcess(void);
+
+PVOID WINAPI VirtualAlloc(PVOID,DWORD,DWORD,DWORD);
+
+BOOL GetNumaAvailableMemoryNode(UCHAR Node, PULONGLONG AvailableBytes);
+
+typedef struct _SYSTEM_INFO {
+  DWORD dwPageSize;
+} SYSTEM_INFO, *LPSYSTEM_INFO;
+
+void WINAPI GetSystemInfo(LPSYSTEM_INFO lpSystemInfo);
+
+#endif /* HWLOC_PORT_WINDOWS_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/Makefile.am	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,36 @@
+all-local:
+	@echo Existing targets: 'needed' and 'useless'
+
+prepare:
+	@echo
+	@echo "###############################"
+	@echo Enabling renaming in headers...
+	@echo
+	sed	-e '/^#define HWLOC_SYM_TRANSFORM 0/s/0/1/'			\
+		-e '/^#define HWLOC_SYM_PREFIX hwloc_/s/hwloc_/foobar_/1'	\
+		-e '/^#define HWLOC_SYM_PREFIX_CAPS HWLOC_/s/HWLOC_/FOOBAR_/2'	\
+		-i $(abs_top_builddir)/include/hwloc/autogen/config.h $(abs_top_builddir)/include/private/autogen/config.h
+
+needed: prepare
+	@echo
+	@echo "###########################"
+	@echo Finding missing renaming...
+	@echo
+	cpp $(srcdir)/main.c -I $(abs_top_srcdir)/include -I $(abs_top_builddir)/include \
+		| egrep -i '(^| |\*)hwloc_'
+
+useless: prepare
+	@echo
+	@echo "###########################"
+	@echo Finding useless renaming...
+	@echo
+	grep '^#define' $(abs_top_srcdir)/include/hwloc/rename.h \
+		| awk '{print $$2}' \
+		| egrep -v '(HWLOC_RENAME_H|HWLOC_MUNGE_NAME|HWLOC_NAME)' \
+		| while read name ; do \
+			grep $$name -rwH $(abs_top_srcdir)/include/ \
+			| grep -v rename.h: | grep -v .svn >/dev/null \
+			|| echo $$name; \
+			done
+
+EXTRA_DIST	=	main.c

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/main.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/main.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/rename/main.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,19 @@
+#define _GNU_SOURCE 1
+#include "sched.h"
+
+#include "hwloc.h"
+
+/* enable those that have the right dependencies on your machine */
+#include "hwloc/glibc-sched.h"
+#include "hwloc/linux-libnuma.h"
+#include "hwloc/linux.h"
+//#include "hwloc/cuda.h"
+//#include "hwloc/cudart.h"
+//#include "hwloc/myriexpress.h"
+#include "hwloc/openfabrics-verbs.h"
+
+#include "private/autogen/config.h"
+#include "private/cpuid.h"
+#include "private/debug.h"
+#include "private/misc.h"
+#include "private/private.h"

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16amd64-8n2c-cpusets.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16amd64-8n2c-cpusets.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16amd64-8n2c-cpusets.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_index="0" cpuset="0x0000f06f" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffef" allowed_cpuset="0x0000f07f" nodeset="0x000000ff" complete_nodeset="0x000000ff" allowed_nodeset="0x0000003e">
+    <info name="DMIBoardVendor" value="TYAN Computer Corp"/>
+    <info name="DMIBoardName" value="S4881 "/>
+    <distances nbobjs="8" relative_depth="1" latency_base="10.000000">
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+    </distances>
+    <object type="NUMANode" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+      <object type="Socket" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+        <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+              <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0">
+              <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="8589934592">
+      <object type="Socket" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="65536" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="2" cpuset="0x00000020" complete_cpuset="0x00000030" online_cpuset="0x00000020" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="8589934592">
+      <object type="Socket" os_index="2" cpuset="0x00000020" complete_cpuset="0x00000030" online_cpuset="0x00000020" allowed_cpuset="0x00000030" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <object type="Cache" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="65536" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+              <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="3" cpuset="0x00000040" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="8589934592">
+      <object type="Socket" os_index="3" cpuset="0x00000040" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <object type="Cache" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="65536" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+              <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="4" cpuset="0x0" complete_cpuset="0x00000300" online_cpuset="0x00000300" allowed_cpuset="0x0" nodeset="0x00000010" complete_nodeset="0x00000010" allowed_nodeset="0x00000010" local_memory="8589934592"/>
+    <object type="NUMANode" os_index="5" cpuset="0x0" complete_cpuset="0x00000c00" online_cpuset="0x00000c00" allowed_cpuset="0x0" nodeset="0x00000020" complete_nodeset="0x00000020" allowed_nodeset="0x00000020" local_memory="8589934592"/>
+    <object type="NUMANode" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+      <object type="Socket" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+        <object type="Cache" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+              <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0">
+              <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000040" complete_nodeset="0x00000040" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+      <object type="Socket" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+        <object type="Cache" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+              <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0" cache_size="65536" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0">
+              <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000080" complete_nodeset="0x00000080" allowed_nodeset="0x0"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16em64t-4s2c2t-offlines.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16em64t-4s2c2t-offlines.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16em64t-4s2c2t-offlines.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_index="0" cpuset="0x0000905b" complete_cpuset="0x0001915b" online_cpuset="0x0000905b" allowed_cpuset="0x0000915b">
+    <object type="Socket" os_index="0" cpuset="0x00001011" complete_cpuset="0x00001011" online_cpuset="0x00001011" allowed_cpuset="0x00001011">
+      <object type="Cache" cpuset="0x00001011" complete_cpuset="0x00001011" online_cpuset="0x00001011" allowed_cpuset="0x00001011" cache_size="4194304" depth="3" cache_linesize="0" cache_associativity="0">
+        <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
+              <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
+              <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
+              <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
+      <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="4194304" depth="3" cache_linesize="0" cache_associativity="0">
+        <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
+              <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="3" cpuset="0x00008008" complete_cpuset="0x00008008" online_cpuset="0x00008008" allowed_cpuset="0x00008008">
+      <object type="Cache" cpuset="0x00008008" complete_cpuset="0x00008008" online_cpuset="0x00008008" allowed_cpuset="0x00008008" cache_size="4194304" depth="3" cache_linesize="0" cache_associativity="0">
+        <object type="Cache" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008">
+              <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000">
+              <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="2" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040">
+      <object type="Cache" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="4194304" depth="3" cache_linesize="0" cache_associativity="0">
+        <object type="Cache" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040">
+              <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16em64t-4s2c2t.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16em64t-4s2c2t.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/16em64t-4s2c2t.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_index="0" cpuset="0x0000ffff" complete_cpuset="0x0000ffff" online_cpuset="0x0000ffff" allowed_cpuset="0x0000ffff">
+    <page_type size="4096" count="8589934592"/>
+    <page_type size="8192" count="0"/>
+    <page_type size="17179869184" count="1"/>
+    <info name="infowithvalue" value="value"/>
+    <info name="infowithoutvalue" value=""/>
+    <object type="Socket" os_index="0" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111">
+      <object type="Cache" cpuset="0x00001111" complete_cpuset="0x00001111" online_cpuset="0x00001111" allowed_cpuset="0x00001111" cache_size="4194304" depth="3" cache_linesize="0" cache_associativity="0">
+        <object type="Cache" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00000101" complete_cpuset="0x00000101" online_cpuset="0x00000101" allowed_cpuset="0x00000101">
+              <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+              <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00001010" complete_cpuset="0x00001010" online_cpuset="0x00001010" allowed_cpuset="0x00001010">
+              <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010"/>
+              <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="1" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222">
+      <object type="Cache" cpuset="0x00002222" complete_cpuset="0x00002222" online_cpuset="0x00002222" allowed_cpuset="0x00002222" cache_size="4194304" depth="3" cache_linesize="0" cache_associativity="0">
+        <object type="Cache" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00000202" complete_cpuset="0x00000202" online_cpuset="0x00000202" allowed_cpuset="0x00000202">
+              <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+              <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00002020" complete_cpuset="0x00002020" online_cpuset="0x00002020" allowed_cpuset="0x00002020">
+              <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020"/>
+              <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="2" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444">
+      <object type="Cache" cpuset="0x00004444" complete_cpuset="0x00004444" online_cpuset="0x00004444" allowed_cpuset="0x00004444" cache_size="4194304" depth="3" cache_linesize="0" cache_associativity="0">
+        <object type="Cache" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00000404" complete_cpuset="0x00000404" online_cpuset="0x00000404" allowed_cpuset="0x00000404">
+              <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004"/>
+              <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00004040" complete_cpuset="0x00004040" online_cpuset="0x00004040" allowed_cpuset="0x00004040">
+              <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040"/>
+              <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Socket" os_index="3" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888">
+      <object type="Cache" cpuset="0x00008888" complete_cpuset="0x00008888" online_cpuset="0x00008888" allowed_cpuset="0x00008888" cache_size="4194304" depth="3" cache_linesize="0" cache_associativity="0">
+        <object type="Cache" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="0" cpuset="0x00000808" complete_cpuset="0x00000808" online_cpuset="0x00000808" allowed_cpuset="0x00000808">
+              <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+              <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="1048576" depth="2" cache_linesize="0" cache_associativity="0">
+          <object type="Cache" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080" cache_size="16384" depth="1" cache_linesize="0" cache_associativity="0">
+            <object type="Core" os_index="1" cpuset="0x00008080" complete_cpuset="0x00008080" online_cpuset="0x00008080" allowed_cpuset="0x00008080">
+              <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080"/>
+              <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/24em64t-2n6c2t-pci.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/24em64t-2n6c2t-pci.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/24em64t-2n6c2t-pci.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_index="0" cpuset="0x00ffffff" complete_cpuset="0x00ffffff" online_cpuset="0x00ffffff" allowed_cpuset="0x00ffffff" nodeset="0x00000003" complete_nodeset="0x00000003" allowed_nodeset="0x00000003">
+    <page_type size="4096" count="0"/>
+    <page_type size="2097152" count="0"/>
+    <info name="DMIProductName" value="ProLiant SL390s G7"/>
+    <info name="DMIProductVersion" value=""/>
+    <info name="DMIBoardVendor" value="HP"/>
+    <info name="DMIBoardName" value=""/>
+    <info name="DMIBoardVersion" value=""/>
+    <info name="DMIBoardAssetTag" value="        "/>
+    <info name="DMIChassisVendor" value="HP"/>
+    <info name="DMIChassisType" value="25"/>
+    <info name="DMIChassisVersion" value=""/>
+    <info name="DMIChassisAssetTag" value="        "/>
+    <info name="DMIBIOSVendor" value="HP"/>
+    <info name="DMIBIOSVersion" value="P69"/>
+    <info name="DMIBIOSDate" value="10/21/2010"/>
+    <info name="DMISysVendor" value="HP"/>
+    <info name="Backend" value="Linux"/>
+    <info name="OSName" value="Linux"/>
+    <info name="OSRelease" value="2.6.27.39-0.3-perfctr"/>
+    <info name="OSVersion" value="#1 SMP 2009-11-23 12:57:38 +0100"/>
+    <info name="HostName" value="mirage004"/>
+    <info name="Architecture" value="x86_64"/>
+    <distances nbobjs="2" relative_depth="1" latency_base="10.000000">
+      <latency value="1.000000"/>
+      <latency value="2.000000"/>
+      <latency value="2.000000"/>
+      <latency value="1.000000"/>
+    </distances>
+    <object type="NUMANode" os_index="0" cpuset="0x00555555" complete_cpuset="0x00555555" online_cpuset="0x00555555" allowed_cpuset="0x00555555" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="19316633600">
+      <page_type size="4096" count="4715975"/>
+      <page_type size="2097152" count="0"/>
+      <object type="Socket" os_index="0" cpuset="0x00555555" complete_cpuset="0x00555555" online_cpuset="0x00555555" allowed_cpuset="0x00555555" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" cpuset="0x00555555" complete_cpuset="0x00555555" online_cpuset="0x00555555" allowed_cpuset="0x00555555" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="12582912" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00001001" complete_cpuset="0x00001001" online_cpuset="0x00001001" allowed_cpuset="0x00001001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00001001" complete_cpuset="0x00001001" online_cpuset="0x00001001" allowed_cpuset="0x00001001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00001001" complete_cpuset="0x00001001" online_cpuset="0x00001001" allowed_cpuset="0x00001001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00004004" complete_cpuset="0x00004004" online_cpuset="0x00004004" allowed_cpuset="0x00004004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00004004" complete_cpuset="0x00004004" online_cpuset="0x00004004" allowed_cpuset="0x00004004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="8" cpuset="0x00004004" complete_cpuset="0x00004004" online_cpuset="0x00004004" allowed_cpuset="0x00004004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00010010" complete_cpuset="0x00010010" online_cpuset="0x00010010" allowed_cpuset="0x00010010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00010010" complete_cpuset="0x00010010" online_cpuset="0x00010010" allowed_cpuset="0x00010010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00010010" complete_cpuset="0x00010010" online_cpuset="0x00010010" allowed_cpuset="0x00010010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00040040" complete_cpuset="0x00040040" online_cpuset="0x00040040" allowed_cpuset="0x00040040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00040040" complete_cpuset="0x00040040" online_cpuset="0x00040040" allowed_cpuset="0x00040040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="10" cpuset="0x00040040" complete_cpuset="0x00040040" online_cpuset="0x00040040" allowed_cpuset="0x00040040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00100100" complete_cpuset="0x00100100" online_cpuset="0x00100100" allowed_cpuset="0x00100100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00100100" complete_cpuset="0x00100100" online_cpuset="0x00100100" allowed_cpuset="0x00100100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00100100" complete_cpuset="0x00100100" online_cpuset="0x00100100" allowed_cpuset="0x00100100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00400400" complete_cpuset="0x00400400" online_cpuset="0x00400400" allowed_cpuset="0x00400400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00400400" complete_cpuset="0x00400400" online_cpuset="0x00400400" allowed_cpuset="0x00400400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="9" cpuset="0x00400400" complete_cpuset="0x00400400" online_cpuset="0x00400400" allowed_cpuset="0x00400400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+                <object type="PU" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Bridge" os_index="0" bridge_type="0-1" depth="0" bridge_pci="0000:[00-0f]">
+        <object type="Bridge" os_index="16" name="Intel Corporation X58 I/O Hub PCI Express Root Port 1" bridge_type="1-1" depth="0" bridge_pci="0000:[04-04]" pci_busid="0000:00:01.0" pci_type="0604 [8086:3408] [0000:0000] 13" pci_link_speed="0.400000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="X58 I/O Hub PCI Express Root Port 1"/>
+          <object type="PCIDev" os_index="16384" name="Intel Corporation 82576 Gigabit Network Connection" pci_busid="0000:04:00.0" pci_type="0200 [8086:10c9] [003c:003f] 01" pci_link_speed="0.200000">
+            <info name="PCIVendor" value="Intel Corporation"/>
+            <info name="PCIDevice" value="82576 Gigabit Network Connection"/>
+            <object type="OSDev" name="eth0" osdev_type="2">
+              <info name="Address" value="78:e7:d1:21:55:30"/>
+            </object>
+          </object>
+          <object type="PCIDev" os_index="16385" name="Intel Corporation 82576 Gigabit Network Connection" pci_busid="0000:04:00.1" pci_type="0200 [8086:10c9] [003c:003f] 01" pci_link_speed="0.200000">
+            <info name="PCIVendor" value="Intel Corporation"/>
+            <info name="PCIDevice" value="82576 Gigabit Network Connection"/>
+            <object type="OSDev" name="eth1" osdev_type="2">
+              <info name="Address" value="78:e7:d1:21:55:31"/>
+            </object>
+          </object>
+        </object>
+        <object type="Bridge" os_index="80" name="Intel Corporation X58 I/O Hub PCI Express Root Port 5" bridge_type="1-1" depth="0" bridge_pci="0000:[05-05]" pci_busid="0000:00:05.0" pci_type="0604 [8086:340c] [0000:0000] 13" pci_link_speed="2.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="X58 I/O Hub PCI Express Root Port 5"/>
+          <object type="PCIDev" os_index="20480" pci_busid="0000:05:00.0" pci_type="0c06 [15b3:6746] [003c:0049] b0" pci_link_speed="2.000000">
+            <info name="PCIVendor" value="Mellanox Technologies"/>
+            <object type="OSDev" name="eth2" osdev_type="2">
+              <info name="Address" value="78:e7:d1:21:55:35"/>
+            </object>
+            <object type="OSDev" name="ib0" osdev_type="2">
+              <info name="Address" value="80:00:00:48:fe:80:00:00:00:00:00:00:78:e7:d1:03:00:21:55:35"/>
+            </object>
+            <object type="OSDev" name="mlx4_0" osdev_type="3"/>
+          </object>
+        </object>
+        <object type="Bridge" os_index="112" name="Intel Corporation X58 I/O Hub PCI Express Root Port 7" bridge_type="1-1" depth="0" bridge_pci="0000:[06-08]" pci_busid="0000:00:07.0" pci_type="0604 [8086:340e] [0000:0000] 13" pci_link_speed="4.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="X58 I/O Hub PCI Express Root Port 7"/>
+          <object type="PCIDev" os_index="24576" pci_busid="0000:06:00.0" pci_type="0302 [10de:06d2] [00de:0030] a3" pci_link_speed="4.000000">
+            <info name="PCIVendor" value="nVidia Corporation"/>
+          </object>
+        </object>
+        <object type="Bridge" os_index="480" name="Intel Corporation 82801 PCI Bridge" bridge_type="1-1" depth="0" bridge_pci="0000:[01-01]" pci_busid="0000:00:1e.0" pci_type="0604 [8086:244e] [0000:0000] 90" pci_link_speed="0.200000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="82801 PCI Bridge"/>
+          <object type="PCIDev" os_index="4144" name="ATI Technologies Inc ES1000" pci_busid="0000:01:03.0" pci_type="0300 [1002:515e] [003c:00fb] 02" pci_link_speed="0.200000">
+            <info name="PCIVendor" value="ATI Technologies Inc"/>
+            <info name="PCIDevice" value="ES1000"/>
+          </object>
+        </object>
+        <object type="PCIDev" os_index="498" name="Intel Corporation 82801JI (ICH10 Family) 4 port SATA IDE Controller" pci_busid="0000:00:1f.2" pci_type="0101 [8086:3a20] [003c:000d] 00" pci_link_speed="0.100000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="82801JI (ICH10 Family) 4 port SATA IDE Controller"/>
+          <object type="OSDev" name="sda" osdev_type="0"/>
+        </object>
+        <object type="PCIDev" os_index="501" name="Intel Corporation 82801JI (ICH10 Family) 2 port SATA IDE Controller" pci_busid="0000:00:1f.5" pci_type="0101 [8086:3a26] [003c:000d] 00" pci_link_speed="0.100000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="82801JI (ICH10 Family) 2 port SATA IDE Controller"/>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="1" cpuset="0x00aaaaaa" complete_cpuset="0x00aaaaaa" online_cpuset="0x00aaaaaa" allowed_cpuset="0x00aaaaaa" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="19327348736">
+      <page_type size="4096" count="4718591"/>
+      <page_type size="2097152" count="0"/>
+      <object type="Socket" os_index="1" cpuset="0x00aaaaaa" complete_cpuset="0x00aaaaaa" online_cpuset="0x00aaaaaa" allowed_cpuset="0x00aaaaaa" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" cpuset="0x00aaaaaa" complete_cpuset="0x00aaaaaa" online_cpuset="0x00aaaaaa" allowed_cpuset="0x00aaaaaa" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="12582912" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00002002" complete_cpuset="0x00002002" online_cpuset="0x00002002" allowed_cpuset="0x00002002" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00002002" complete_cpuset="0x00002002" online_cpuset="0x00002002" allowed_cpuset="0x00002002" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00002002" complete_cpuset="0x00002002" online_cpuset="0x00002002" allowed_cpuset="0x00002002" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00008008" complete_cpuset="0x00008008" online_cpuset="0x00008008" allowed_cpuset="0x00008008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00008008" complete_cpuset="0x00008008" online_cpuset="0x00008008" allowed_cpuset="0x00008008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="8" cpuset="0x00008008" complete_cpuset="0x00008008" online_cpuset="0x00008008" allowed_cpuset="0x00008008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00020020" complete_cpuset="0x00020020" online_cpuset="0x00020020" allowed_cpuset="0x00020020" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00020020" complete_cpuset="0x00020020" online_cpuset="0x00020020" allowed_cpuset="0x00020020" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00020020" complete_cpuset="0x00020020" online_cpuset="0x00020020" allowed_cpuset="0x00020020" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00080080" complete_cpuset="0x00080080" online_cpuset="0x00080080" allowed_cpuset="0x00080080" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00080080" complete_cpuset="0x00080080" online_cpuset="0x00080080" allowed_cpuset="0x00080080" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="10" cpuset="0x00080080" complete_cpuset="0x00080080" online_cpuset="0x00080080" allowed_cpuset="0x00080080" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00200200" complete_cpuset="0x00200200" online_cpuset="0x00200200" allowed_cpuset="0x00200200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00200200" complete_cpuset="0x00200200" online_cpuset="0x00200200" allowed_cpuset="0x00200200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00200200" complete_cpuset="0x00200200" online_cpuset="0x00200200" allowed_cpuset="0x00200200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00800800" complete_cpuset="0x00800800" online_cpuset="0x00800800" allowed_cpuset="0x00800800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00800800" complete_cpuset="0x00800800" online_cpuset="0x00800800" allowed_cpuset="0x00800800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="9" cpuset="0x00800800" complete_cpuset="0x00800800" online_cpuset="0x00800800" allowed_cpuset="0x00800800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+                <object type="PU" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Bridge" os_index="1" bridge_type="0-1" depth="0" bridge_pci="0000:[10-1f]">
+        <object type="Bridge" os_index="65584" name="Intel Corporation X58 I/O Hub PCI Express Root Port 3" bridge_type="1-1" depth="0" bridge_pci="0000:[14-16]" pci_busid="0000:10:03.0" pci_type="0604 [8086:340a] [0000:0000] 13" pci_link_speed="4.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="X58 I/O Hub PCI Express Root Port 3"/>
+          <object type="PCIDev" os_index="81920" pci_busid="0000:14:00.0" pci_type="0302 [10de:06d2] [00de:0030] a3" pci_link_speed="4.000000">
+            <info name="PCIVendor" value="nVidia Corporation"/>
+          </object>
+        </object>
+        <object type="Bridge" os_index="65648" name="Intel Corporation X58 I/O Hub PCI Express Root Port 7" bridge_type="1-1" depth="0" bridge_pci="0000:[11-13]" pci_busid="0000:10:07.0" pci_type="0604 [8086:340e] [0000:0000] 13" pci_link_speed="4.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="X58 I/O Hub PCI Express Root Port 7"/>
+          <object type="PCIDev" os_index="69632" pci_busid="0000:11:00.0" pci_type="0302 [10de:06d2] [00de:0030] a3" pci_link_speed="4.000000">
+            <info name="PCIVendor" value="nVidia Corporation"/>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/8em64t-2mi2ma2c.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/8em64t-2mi2ma2c.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/8em64t-2mi2ma2c.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="System" os_index="0">
+    <object type="Group" depth="0">
+      <object type="Machine" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" local_memory="1016368">
+        <page_type size="4096" count="65536"/>
+        <page_type size="1048576" count="1024"/>
+        <object type="Socket" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003">
+          <object type="Cache" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2" cache_linesize="0" cache_associativity="0">
+            <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1" cache_linesize="0" cache_associativity="0">
+              <object type="Core" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
+                <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1" cache_linesize="0" cache_associativity="0">
+              <object type="Core" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
+                <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Machine" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" local_memory="1016368">
+        <page_type size="8192" count="1048576"/>
+        <info name="DMIBoardVendor" value="Dell Inc."/>
+        <info name="DMIBoardName" value="0F331C"/>
+        <object type="Socket" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003">
+          <object type="Cache" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2" cache_linesize="0" cache_associativity="0">
+            <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1" cache_linesize="0" cache_associativity="0">
+              <object type="Core" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
+                <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1" cache_linesize="0" cache_associativity="0">
+              <object type="Core" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
+                <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Group" depth="0">
+      <object type="Machine" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" local_memory="1016368">
+        <page_type size="2048" count="1"/>
+        <info name="DMIBoardVendor" value="Dell Inc."/>
+        <info name="DMIBoardName" value="0F331C"/>
+        <object type="Socket" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003">
+          <object type="Cache" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2" cache_linesize="0" cache_associativity="0">
+            <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1" cache_linesize="0" cache_associativity="0">
+              <object type="Core" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
+                <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1" cache_linesize="0" cache_associativity="0">
+              <object type="Core" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
+                <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Machine" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" local_memory="1016368">
+        <page_type size="2048" count="2"/>
+        <page_type size="4096" count="65536"/>
+        <page_type size="1048576" count="2048"/>
+        <info name="DMIBoardVendor" value="Dell Inc."/>
+        <info name="DMIBoardName" value="0F331C"/>
+        <object type="Socket" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003">
+          <object type="Cache" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" cache_size="2097152" depth="2" cache_linesize="0" cache_associativity="0">
+            <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" cache_size="32768" depth="1" cache_linesize="0" cache_associativity="0">
+              <object type="Core" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001">
+                <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" cache_size="32768" depth="1" cache_linesize="0" cache_associativity="0">
+              <object type="Core" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002">
+                <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/96em64t-4n4d3ca2co-pci.xml
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/96em64t-4n4d3ca2co-pci.xml	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/96em64t-4n4d3ca2co-pci.xml	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,845 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_index="0" cpuset="0xffffffff,0xffffffff,0xffffffff" complete_cpuset="0xffffffff,0xffffffff,0xffffffff" online_cpuset="0xffffffff,0xffffffff,0xffffffff" allowed_cpuset="0xffffffff,0xffffffff,0xffffffff" nodeset="0x0000000f" complete_nodeset="0x0000000f" allowed_nodeset="0x0000000f">
+    <page_type size="4096" count="0"/>
+    <page_type size="2097152" count="0"/>
+    <info name="DMIProductName" value="IBM 3850 M2 / x3950 M2 -[72336SG]-"/>
+    <info name="DMIProductVersion" value=""/>
+    <info name="DMIBoardVendor" value="IBM"/>
+    <info name="DMIBoardName" value="Node1 Processor Card"/>
+    <info name="DMIBoardVersion" value=""/>
+    <info name="DMIBoardAssetTag" value=""/>
+    <info name="DMIChassisVendor" value="IBM"/>
+    <info name="DMIChassisType" value="17"/>
+    <info name="DMIChassisVersion" value=""/>
+    <info name="DMIChassisAssetTag" value="        "/>
+    <info name="DMIBIOSVendor" value="IBM"/>
+    <info name="DMIBIOSVersion" value="-[A3E164AUS-1.11]-"/>
+    <info name="DMIBIOSDate" value="04/01/2009"/>
+    <info name="DMISysVendor" value="IBM"/>
+    <info name="Backend" value="Linux"/>
+    <info name="OSName" value="Linux"/>
+    <info name="OSRelease" value="2.6.32-5-amd64"/>
+    <info name="OSVersion" value="#1 SMP Tue Jun 14 09:42:28 UTC 2011"/>
+    <info name="HostName" value="bertha"/>
+    <info name="Architecture" value="x86_64"/>
+    <distances nbobjs="4" relative_depth="1" latency_base="10.000000">
+      <latency value="1.000000"/>
+      <latency value="2.600000"/>
+      <latency value="2.600000"/>
+      <latency value="2.600000"/>
+      <latency value="2.600000"/>
+      <latency value="1.000000"/>
+      <latency value="2.600000"/>
+      <latency value="2.600000"/>
+      <latency value="2.600000"/>
+      <latency value="2.600000"/>
+      <latency value="1.000000"/>
+      <latency value="2.600000"/>
+      <latency value="2.600000"/>
+      <latency value="2.600000"/>
+      <latency value="2.600000"/>
+      <latency value="1.000000"/>
+    </distances>
+    <object type="NUMANode" os_index="0" cpuset="0x00ffffff" complete_cpuset="0x00ffffff" online_cpuset="0x00ffffff" allowed_cpuset="0x00ffffff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="51269931008">
+      <page_type size="4096" count="12517073"/>
+      <page_type size="2097152" count="0"/>
+      <object type="Socket" os_index="1" cpuset="0x00111111" complete_cpuset="0x00111111" online_cpuset="0x00111111" allowed_cpuset="0x00111111" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" cpuset="0x00111111" complete_cpuset="0x00111111" online_cpuset="0x00111111" allowed_cpuset="0x00111111" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00000011" complete_cpuset="0x00000011" online_cpuset="0x00000011" allowed_cpuset="0x00000011" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00001100" complete_cpuset="0x00001100" online_cpuset="0x00001100" allowed_cpuset="0x00001100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00110000" complete_cpuset="0x00110000" online_cpuset="0x00110000" allowed_cpuset="0x00110000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="0" cpuset="0x00222222" complete_cpuset="0x00222222" online_cpuset="0x00222222" allowed_cpuset="0x00222222" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" cpuset="0x00222222" complete_cpuset="0x00222222" online_cpuset="0x00222222" allowed_cpuset="0x00222222" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00000022" complete_cpuset="0x00000022" online_cpuset="0x00000022" allowed_cpuset="0x00000022" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00002200" complete_cpuset="0x00002200" online_cpuset="0x00002200" allowed_cpuset="0x00002200" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00220000" complete_cpuset="0x00220000" online_cpuset="0x00220000" allowed_cpuset="0x00220000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="2" cpuset="0x00444444" complete_cpuset="0x00444444" online_cpuset="0x00444444" allowed_cpuset="0x00444444" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" cpuset="0x00444444" complete_cpuset="0x00444444" online_cpuset="0x00444444" allowed_cpuset="0x00444444" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00000044" complete_cpuset="0x00000044" online_cpuset="0x00000044" allowed_cpuset="0x00000044" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00004400" complete_cpuset="0x00004400" online_cpuset="0x00004400" allowed_cpuset="0x00004400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00440000" complete_cpuset="0x00440000" online_cpuset="0x00440000" allowed_cpuset="0x00440000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="3" cpuset="0x00888888" complete_cpuset="0x00888888" online_cpuset="0x00888888" allowed_cpuset="0x00888888" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" cpuset="0x00888888" complete_cpuset="0x00888888" online_cpuset="0x00888888" allowed_cpuset="0x00888888" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00000088" complete_cpuset="0x00000088" online_cpuset="0x00000088" allowed_cpuset="0x00000088" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00008800" complete_cpuset="0x00008800" online_cpuset="0x00008800" allowed_cpuset="0x00008800" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00880000" complete_cpuset="0x00880000" online_cpuset="0x00880000" allowed_cpuset="0x00880000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+                <object type="PU" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Bridge" os_index="0" bridge_type="0-1" depth="0" bridge_pci="0000:[00-02]">
+        <object type="Bridge" os_index="448" name="Intel Corporation N10/ICH 7 Family PCI Express Port 1" bridge_type="1-1" depth="0" bridge_pci="0000:[02-02]" pci_busid="0000:00:1c.0" pci_type="0604 [8086:27d0] [0000:0000] 01" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="N10/ICH 7 Family PCI Express Port 1"/>
+          <object type="PCIDev" os_index="8192" name="Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet" pci_busid="0000:02:00.0" pci_type="0200 [14e4:1639] [0014:007c] 20" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="Broadcom Corporation"/>
+            <info name="PCIDevice" value="NetXtreme II BCM5709 Gigabit Ethernet"/>
+            <object type="OSDev" name="eth0" osdev_type="2">
+              <info name="Address" value="00:21:5e:c4:8e:04"/>
+            </object>
+          </object>
+          <object type="PCIDev" os_index="8193" name="Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet" pci_busid="0000:02:00.1" pci_type="0200 [14e4:1639] [0014:007c] 20" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="Broadcom Corporation"/>
+            <info name="PCIDevice" value="NetXtreme II BCM5709 Gigabit Ethernet"/>
+            <object type="OSDev" name="eth1" osdev_type="2">
+              <info name="Address" value="00:21:5e:c4:8e:06"/>
+            </object>
+          </object>
+        </object>
+        <object type="Bridge" os_index="480" name="Intel Corporation 82801 PCI Bridge" bridge_type="1-1" depth="0" bridge_pci="0000:[01-01]" pci_busid="0000:00:1e.0" pci_type="0604 [8086:244e] [0000:0000] e1" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="82801 PCI Bridge"/>
+          <object type="PCIDev" os_index="4096" name="ATI Technologies Inc ES1000" pci_busid="0000:01:00.0" pci_type="0300 [1002:515e] [0014:0019] 02" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="ATI Technologies Inc"/>
+            <info name="PCIDevice" value="ES1000"/>
+            <object type="OSDev" name="card0" osdev_type="1"/>
+          </object>
+        </object>
+        <object type="PCIDev" os_index="498" name="Intel Corporation N10/ICH7 Family SATA IDE Controller" pci_busid="0000:00:1f.2" pci_type="0101 [8086:27c0] [0014:0081] 01" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="N10/ICH7 Family SATA IDE Controller"/>
+          <object type="OSDev" name="sr0" osdev_type="0"/>
+        </object>
+      </object>
+      <object type="Bridge" os_index="1" bridge_type="0-1" depth="0" bridge_pci="0000:[03-04]">
+        <object type="Bridge" os_index="12288" name="IBM CalIOC2 PCI-E Root Port" bridge_type="1-1" depth="0" bridge_pci="0000:[04-04]" pci_busid="0000:03:00.0" pci_type="0604 [1014:0308] [0000:0000] 01" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="IBM"/>
+          <info name="PCIDevice" value="CalIOC2 PCI-E Root Port"/>
+          <object type="PCIDev" os_index="16384" name="LSI Logic / Symbios Logic SAS1078 PCI-Express Fusion-MPT SAS" pci_busid="0000:04:00.0" pci_type="0100 [1000:0062] [0014:0066] 04" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="LSI Logic / Symbios Logic"/>
+            <info name="PCIDevice" value="SAS1078 PCI-Express Fusion-MPT SAS"/>
+            <object type="OSDev" name="sda" osdev_type="0"/>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="1" cpuset="0x0000ffff,0xff000000" complete_cpuset="0x0000ffff,0xff000000" online_cpuset="0x0000ffff,0xff000000" allowed_cpuset="0x0000ffff,0xff000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="51271172096">
+      <page_type size="4096" count="12517376"/>
+      <page_type size="2097152" count="0"/>
+      <object type="Socket" os_index="4" cpuset="0x00001111,0x11000000" complete_cpuset="0x00001111,0x11000000" online_cpuset="0x00001111,0x11000000" allowed_cpuset="0x00001111,0x11000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" cpuset="0x00001111,0x11000000" complete_cpuset="0x00001111,0x11000000" online_cpuset="0x00001111,0x11000000" allowed_cpuset="0x00001111,0x11000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x11000000" complete_cpuset="0x11000000" online_cpuset="0x11000000" allowed_cpuset="0x11000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="24" cpuset="0x01000000" complete_cpuset="0x01000000" online_cpuset="0x01000000" allowed_cpuset="0x01000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="28" cpuset="0x10000000" complete_cpuset="0x10000000" online_cpuset="0x10000000" allowed_cpuset="0x10000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00000011,0x0" complete_cpuset="0x00000011,0x0" online_cpuset="0x00000011,0x0" allowed_cpuset="0x00000011,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000001,0x0" complete_cpuset="0x00000001,0x0" online_cpuset="0x00000001,0x0" allowed_cpuset="0x00000001,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00000001,0x0" complete_cpuset="0x00000001,0x0" online_cpuset="0x00000001,0x0" allowed_cpuset="0x00000001,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="32" cpuset="0x00000001,0x0" complete_cpuset="0x00000001,0x0" online_cpuset="0x00000001,0x0" allowed_cpuset="0x00000001,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000010,0x0" complete_cpuset="0x00000010,0x0" online_cpuset="0x00000010,0x0" allowed_cpuset="0x00000010,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00000010,0x0" complete_cpuset="0x00000010,0x0" online_cpuset="0x00000010,0x0" allowed_cpuset="0x00000010,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="36" cpuset="0x00000010,0x0" complete_cpuset="0x00000010,0x0" online_cpuset="0x00000010,0x0" allowed_cpuset="0x00000010,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00001100,0x0" complete_cpuset="0x00001100,0x0" online_cpuset="0x00001100,0x0" allowed_cpuset="0x00001100,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000100,0x0" complete_cpuset="0x00000100,0x0" online_cpuset="0x00000100,0x0" allowed_cpuset="0x00000100,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00000100,0x0" complete_cpuset="0x00000100,0x0" online_cpuset="0x00000100,0x0" allowed_cpuset="0x00000100,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="40" cpuset="0x00000100,0x0" complete_cpuset="0x00000100,0x0" online_cpuset="0x00000100,0x0" allowed_cpuset="0x00000100,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00001000,0x0" complete_cpuset="0x00001000,0x0" online_cpuset="0x00001000,0x0" allowed_cpuset="0x00001000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00001000,0x0" complete_cpuset="0x00001000,0x0" online_cpuset="0x00001000,0x0" allowed_cpuset="0x00001000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="44" cpuset="0x00001000,0x0" complete_cpuset="0x00001000,0x0" online_cpuset="0x00001000,0x0" allowed_cpuset="0x00001000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="5" cpuset="0x00002222,0x22000000" complete_cpuset="0x00002222,0x22000000" online_cpuset="0x00002222,0x22000000" allowed_cpuset="0x00002222,0x22000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" cpuset="0x00002222,0x22000000" complete_cpuset="0x00002222,0x22000000" online_cpuset="0x00002222,0x22000000" allowed_cpuset="0x00002222,0x22000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x22000000" complete_cpuset="0x22000000" online_cpuset="0x22000000" allowed_cpuset="0x22000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="25" cpuset="0x02000000" complete_cpuset="0x02000000" online_cpuset="0x02000000" allowed_cpuset="0x02000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="29" cpuset="0x20000000" complete_cpuset="0x20000000" online_cpuset="0x20000000" allowed_cpuset="0x20000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00000022,0x0" complete_cpuset="0x00000022,0x0" online_cpuset="0x00000022,0x0" allowed_cpuset="0x00000022,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000002,0x0" complete_cpuset="0x00000002,0x0" online_cpuset="0x00000002,0x0" allowed_cpuset="0x00000002,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00000002,0x0" complete_cpuset="0x00000002,0x0" online_cpuset="0x00000002,0x0" allowed_cpuset="0x00000002,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="33" cpuset="0x00000002,0x0" complete_cpuset="0x00000002,0x0" online_cpuset="0x00000002,0x0" allowed_cpuset="0x00000002,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000020,0x0" complete_cpuset="0x00000020,0x0" online_cpuset="0x00000020,0x0" allowed_cpuset="0x00000020,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00000020,0x0" complete_cpuset="0x00000020,0x0" online_cpuset="0x00000020,0x0" allowed_cpuset="0x00000020,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="37" cpuset="0x00000020,0x0" complete_cpuset="0x00000020,0x0" online_cpuset="0x00000020,0x0" allowed_cpuset="0x00000020,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00002200,0x0" complete_cpuset="0x00002200,0x0" online_cpuset="0x00002200,0x0" allowed_cpuset="0x00002200,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000200,0x0" complete_cpuset="0x00000200,0x0" online_cpuset="0x00000200,0x0" allowed_cpuset="0x00000200,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00000200,0x0" complete_cpuset="0x00000200,0x0" online_cpuset="0x00000200,0x0" allowed_cpuset="0x00000200,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="41" cpuset="0x00000200,0x0" complete_cpuset="0x00000200,0x0" online_cpuset="0x00000200,0x0" allowed_cpuset="0x00000200,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00002000,0x0" complete_cpuset="0x00002000,0x0" online_cpuset="0x00002000,0x0" allowed_cpuset="0x00002000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00002000,0x0" complete_cpuset="0x00002000,0x0" online_cpuset="0x00002000,0x0" allowed_cpuset="0x00002000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="45" cpuset="0x00002000,0x0" complete_cpuset="0x00002000,0x0" online_cpuset="0x00002000,0x0" allowed_cpuset="0x00002000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="6" cpuset="0x00004444,0x44000000" complete_cpuset="0x00004444,0x44000000" online_cpuset="0x00004444,0x44000000" allowed_cpuset="0x00004444,0x44000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" cpuset="0x00004444,0x44000000" complete_cpuset="0x00004444,0x44000000" online_cpuset="0x00004444,0x44000000" allowed_cpuset="0x00004444,0x44000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x44000000" complete_cpuset="0x44000000" online_cpuset="0x44000000" allowed_cpuset="0x44000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="26" cpuset="0x04000000" complete_cpuset="0x04000000" online_cpuset="0x04000000" allowed_cpuset="0x04000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="30" cpuset="0x40000000" complete_cpuset="0x40000000" online_cpuset="0x40000000" allowed_cpuset="0x40000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00000044,0x0" complete_cpuset="0x00000044,0x0" online_cpuset="0x00000044,0x0" allowed_cpuset="0x00000044,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000004,0x0" complete_cpuset="0x00000004,0x0" online_cpuset="0x00000004,0x0" allowed_cpuset="0x00000004,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00000004,0x0" complete_cpuset="0x00000004,0x0" online_cpuset="0x00000004,0x0" allowed_cpuset="0x00000004,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="34" cpuset="0x00000004,0x0" complete_cpuset="0x00000004,0x0" online_cpuset="0x00000004,0x0" allowed_cpuset="0x00000004,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000040,0x0" complete_cpuset="0x00000040,0x0" online_cpuset="0x00000040,0x0" allowed_cpuset="0x00000040,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00000040,0x0" complete_cpuset="0x00000040,0x0" online_cpuset="0x00000040,0x0" allowed_cpuset="0x00000040,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="38" cpuset="0x00000040,0x0" complete_cpuset="0x00000040,0x0" online_cpuset="0x00000040,0x0" allowed_cpuset="0x00000040,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00004400,0x0" complete_cpuset="0x00004400,0x0" online_cpuset="0x00004400,0x0" allowed_cpuset="0x00004400,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000400,0x0" complete_cpuset="0x00000400,0x0" online_cpuset="0x00000400,0x0" allowed_cpuset="0x00000400,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00000400,0x0" complete_cpuset="0x00000400,0x0" online_cpuset="0x00000400,0x0" allowed_cpuset="0x00000400,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="42" cpuset="0x00000400,0x0" complete_cpuset="0x00000400,0x0" online_cpuset="0x00000400,0x0" allowed_cpuset="0x00000400,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00004000,0x0" complete_cpuset="0x00004000,0x0" online_cpuset="0x00004000,0x0" allowed_cpuset="0x00004000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00004000,0x0" complete_cpuset="0x00004000,0x0" online_cpuset="0x00004000,0x0" allowed_cpuset="0x00004000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="46" cpuset="0x00004000,0x0" complete_cpuset="0x00004000,0x0" online_cpuset="0x00004000,0x0" allowed_cpuset="0x00004000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="7" cpuset="0x00008888,0x88000000" complete_cpuset="0x00008888,0x88000000" online_cpuset="0x00008888,0x88000000" allowed_cpuset="0x00008888,0x88000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" cpuset="0x00008888,0x88000000" complete_cpuset="0x00008888,0x88000000" online_cpuset="0x00008888,0x88000000" allowed_cpuset="0x00008888,0x88000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x88000000" complete_cpuset="0x88000000" online_cpuset="0x88000000" allowed_cpuset="0x88000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="27" cpuset="0x08000000" complete_cpuset="0x08000000" online_cpuset="0x08000000" allowed_cpuset="0x08000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="31" cpuset="0x80000000" complete_cpuset="0x80000000" online_cpuset="0x80000000" allowed_cpuset="0x80000000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00000088,0x0" complete_cpuset="0x00000088,0x0" online_cpuset="0x00000088,0x0" allowed_cpuset="0x00000088,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000008,0x0" complete_cpuset="0x00000008,0x0" online_cpuset="0x00000008,0x0" allowed_cpuset="0x00000008,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00000008,0x0" complete_cpuset="0x00000008,0x0" online_cpuset="0x00000008,0x0" allowed_cpuset="0x00000008,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="35" cpuset="0x00000008,0x0" complete_cpuset="0x00000008,0x0" online_cpuset="0x00000008,0x0" allowed_cpuset="0x00000008,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000080,0x0" complete_cpuset="0x00000080,0x0" online_cpuset="0x00000080,0x0" allowed_cpuset="0x00000080,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00000080,0x0" complete_cpuset="0x00000080,0x0" online_cpuset="0x00000080,0x0" allowed_cpuset="0x00000080,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="39" cpuset="0x00000080,0x0" complete_cpuset="0x00000080,0x0" online_cpuset="0x00000080,0x0" allowed_cpuset="0x00000080,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00008800,0x0" complete_cpuset="0x00008800,0x0" online_cpuset="0x00008800,0x0" allowed_cpuset="0x00008800,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000800,0x0" complete_cpuset="0x00000800,0x0" online_cpuset="0x00000800,0x0" allowed_cpuset="0x00000800,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00000800,0x0" complete_cpuset="0x00000800,0x0" online_cpuset="0x00000800,0x0" allowed_cpuset="0x00000800,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="43" cpuset="0x00000800,0x0" complete_cpuset="0x00000800,0x0" online_cpuset="0x00000800,0x0" allowed_cpuset="0x00000800,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00008000,0x0" complete_cpuset="0x00008000,0x0" online_cpuset="0x00008000,0x0" allowed_cpuset="0x00008000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00008000,0x0" complete_cpuset="0x00008000,0x0" online_cpuset="0x00008000,0x0" allowed_cpuset="0x00008000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+                <object type="PU" os_index="47" cpuset="0x00008000,0x0" complete_cpuset="0x00008000,0x0" online_cpuset="0x00008000,0x0" allowed_cpuset="0x00008000,0x0" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Bridge" os_index="9" bridge_type="0-1" depth="0" bridge_pci="0000:[30-34]">
+        <object type="Bridge" os_index="197056" name="Intel Corporation N10/ICH 7 Family PCI Express Port 1" bridge_type="1-1" depth="0" bridge_pci="0000:[32-32]" pci_busid="0000:30:1c.0" pci_type="0604 [8086:27d0] [0000:0000] 01" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="N10/ICH 7 Family PCI Express Port 1"/>
+          <object type="PCIDev" os_index="204800" name="Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet" pci_busid="0000:32:00.0" pci_type="0200 [14e4:1639] [0014:007c] 20" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="Broadcom Corporation"/>
+            <info name="PCIDevice" value="NetXtreme II BCM5709 Gigabit Ethernet"/>
+            <object type="OSDev" name="eth2" osdev_type="2">
+              <info name="Address" value="00:21:5e:c4:88:dc"/>
+            </object>
+          </object>
+          <object type="PCIDev" os_index="204801" name="Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet" pci_busid="0000:32:00.1" pci_type="0200 [14e4:1639] [0014:007c] 20" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="Broadcom Corporation"/>
+            <info name="PCIDevice" value="NetXtreme II BCM5709 Gigabit Ethernet"/>
+            <object type="OSDev" name="eth3" osdev_type="2">
+              <info name="Address" value="00:21:5e:c4:88:de"/>
+            </object>
+          </object>
+        </object>
+        <object type="Bridge" os_index="197088" name="Intel Corporation 82801 PCI Bridge" bridge_type="1-1" depth="0" bridge_pci="0000:[33-34]" pci_busid="0000:30:1e.0" pci_type="0604 [8086:244e] [0000:0000] e1" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="82801 PCI Bridge"/>
+          <object type="Bridge" os_index="208896" name="IBM CalIOC2 PCI-E Root Port" bridge_type="1-1" depth="1" bridge_pci="0000:[34-34]" pci_busid="0000:33:00.0" pci_type="0604 [1014:0308] [0000:0000] 01" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="IBM"/>
+            <info name="PCIDevice" value="CalIOC2 PCI-E Root Port"/>
+            <object type="PCIDev" os_index="212992" name="LSI Logic / Symbios Logic SAS1078 PCI-Express Fusion-MPT SAS" pci_busid="0000:34:00.0" pci_type="0100 [1000:0062] [0014:0066] 04" pci_link_speed="0.000000">
+              <info name="PCIVendor" value="LSI Logic / Symbios Logic"/>
+              <info name="PCIDevice" value="SAS1078 PCI-Express Fusion-MPT SAS"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="2" cpuset="0x000000ff,0xffff0000,0x0" complete_cpuset="0x000000ff,0xffff0000,0x0" online_cpuset="0x000000ff,0xffff0000,0x0" allowed_cpuset="0x000000ff,0xffff0000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" local_memory="51271172096">
+      <page_type size="4096" count="12517376"/>
+      <page_type size="2097152" count="0"/>
+      <object type="Socket" os_index="8" cpuset="0x00000011,0x11110000,0x0" complete_cpuset="0x00000011,0x11110000,0x0" online_cpuset="0x00000011,0x11110000,0x0" allowed_cpuset="0x00000011,0x11110000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <object type="Cache" cpuset="0x00000011,0x11110000,0x0" complete_cpuset="0x00000011,0x11110000,0x0" online_cpuset="0x00000011,0x11110000,0x0" allowed_cpuset="0x00000011,0x11110000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00110000,0x0" complete_cpuset="0x00110000,0x0" online_cpuset="0x00110000,0x0" allowed_cpuset="0x00110000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00010000,0x0" complete_cpuset="0x00010000,0x0" online_cpuset="0x00010000,0x0" allowed_cpuset="0x00010000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00010000,0x0" complete_cpuset="0x00010000,0x0" online_cpuset="0x00010000,0x0" allowed_cpuset="0x00010000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="48" cpuset="0x00010000,0x0" complete_cpuset="0x00010000,0x0" online_cpuset="0x00010000,0x0" allowed_cpuset="0x00010000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00100000,0x0" complete_cpuset="0x00100000,0x0" online_cpuset="0x00100000,0x0" allowed_cpuset="0x00100000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00100000,0x0" complete_cpuset="0x00100000,0x0" online_cpuset="0x00100000,0x0" allowed_cpuset="0x00100000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="52" cpuset="0x00100000,0x0" complete_cpuset="0x00100000,0x0" online_cpuset="0x00100000,0x0" allowed_cpuset="0x00100000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x11000000,0x0" complete_cpuset="0x11000000,0x0" online_cpuset="0x11000000,0x0" allowed_cpuset="0x11000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x01000000,0x0" complete_cpuset="0x01000000,0x0" online_cpuset="0x01000000,0x0" allowed_cpuset="0x01000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x01000000,0x0" complete_cpuset="0x01000000,0x0" online_cpuset="0x01000000,0x0" allowed_cpuset="0x01000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="56" cpuset="0x01000000,0x0" complete_cpuset="0x01000000,0x0" online_cpuset="0x01000000,0x0" allowed_cpuset="0x01000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x10000000,0x0" complete_cpuset="0x10000000,0x0" online_cpuset="0x10000000,0x0" allowed_cpuset="0x10000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x10000000,0x0" complete_cpuset="0x10000000,0x0" online_cpuset="0x10000000,0x0" allowed_cpuset="0x10000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="60" cpuset="0x10000000,0x0" complete_cpuset="0x10000000,0x0" online_cpuset="0x10000000,0x0" allowed_cpuset="0x10000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00000011,,0x0" complete_cpuset="0x00000011,,0x0" online_cpuset="0x00000011,,0x0" allowed_cpuset="0x00000011,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000001,,0x0" complete_cpuset="0x00000001,,0x0" online_cpuset="0x00000001,,0x0" allowed_cpuset="0x00000001,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00000001,,0x0" complete_cpuset="0x00000001,,0x0" online_cpuset="0x00000001,,0x0" allowed_cpuset="0x00000001,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="64" cpuset="0x00000001,,0x0" complete_cpuset="0x00000001,,0x0" online_cpuset="0x00000001,,0x0" allowed_cpuset="0x00000001,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000010,,0x0" complete_cpuset="0x00000010,,0x0" online_cpuset="0x00000010,,0x0" allowed_cpuset="0x00000010,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00000010,,0x0" complete_cpuset="0x00000010,,0x0" online_cpuset="0x00000010,,0x0" allowed_cpuset="0x00000010,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="68" cpuset="0x00000010,,0x0" complete_cpuset="0x00000010,,0x0" online_cpuset="0x00000010,,0x0" allowed_cpuset="0x00000010,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="9" cpuset="0x00000022,0x22220000,0x0" complete_cpuset="0x00000022,0x22220000,0x0" online_cpuset="0x00000022,0x22220000,0x0" allowed_cpuset="0x00000022,0x22220000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <object type="Cache" cpuset="0x00000022,0x22220000,0x0" complete_cpuset="0x00000022,0x22220000,0x0" online_cpuset="0x00000022,0x22220000,0x0" allowed_cpuset="0x00000022,0x22220000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00220000,0x0" complete_cpuset="0x00220000,0x0" online_cpuset="0x00220000,0x0" allowed_cpuset="0x00220000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00020000,0x0" complete_cpuset="0x00020000,0x0" online_cpuset="0x00020000,0x0" allowed_cpuset="0x00020000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00020000,0x0" complete_cpuset="0x00020000,0x0" online_cpuset="0x00020000,0x0" allowed_cpuset="0x00020000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="49" cpuset="0x00020000,0x0" complete_cpuset="0x00020000,0x0" online_cpuset="0x00020000,0x0" allowed_cpuset="0x00020000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00200000,0x0" complete_cpuset="0x00200000,0x0" online_cpuset="0x00200000,0x0" allowed_cpuset="0x00200000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00200000,0x0" complete_cpuset="0x00200000,0x0" online_cpuset="0x00200000,0x0" allowed_cpuset="0x00200000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="53" cpuset="0x00200000,0x0" complete_cpuset="0x00200000,0x0" online_cpuset="0x00200000,0x0" allowed_cpuset="0x00200000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x22000000,0x0" complete_cpuset="0x22000000,0x0" online_cpuset="0x22000000,0x0" allowed_cpuset="0x22000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x02000000,0x0" complete_cpuset="0x02000000,0x0" online_cpuset="0x02000000,0x0" allowed_cpuset="0x02000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x02000000,0x0" complete_cpuset="0x02000000,0x0" online_cpuset="0x02000000,0x0" allowed_cpuset="0x02000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="57" cpuset="0x02000000,0x0" complete_cpuset="0x02000000,0x0" online_cpuset="0x02000000,0x0" allowed_cpuset="0x02000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x20000000,0x0" complete_cpuset="0x20000000,0x0" online_cpuset="0x20000000,0x0" allowed_cpuset="0x20000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x20000000,0x0" complete_cpuset="0x20000000,0x0" online_cpuset="0x20000000,0x0" allowed_cpuset="0x20000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="61" cpuset="0x20000000,0x0" complete_cpuset="0x20000000,0x0" online_cpuset="0x20000000,0x0" allowed_cpuset="0x20000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00000022,,0x0" complete_cpuset="0x00000022,,0x0" online_cpuset="0x00000022,,0x0" allowed_cpuset="0x00000022,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000002,,0x0" complete_cpuset="0x00000002,,0x0" online_cpuset="0x00000002,,0x0" allowed_cpuset="0x00000002,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00000002,,0x0" complete_cpuset="0x00000002,,0x0" online_cpuset="0x00000002,,0x0" allowed_cpuset="0x00000002,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="65" cpuset="0x00000002,,0x0" complete_cpuset="0x00000002,,0x0" online_cpuset="0x00000002,,0x0" allowed_cpuset="0x00000002,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000020,,0x0" complete_cpuset="0x00000020,,0x0" online_cpuset="0x00000020,,0x0" allowed_cpuset="0x00000020,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00000020,,0x0" complete_cpuset="0x00000020,,0x0" online_cpuset="0x00000020,,0x0" allowed_cpuset="0x00000020,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="69" cpuset="0x00000020,,0x0" complete_cpuset="0x00000020,,0x0" online_cpuset="0x00000020,,0x0" allowed_cpuset="0x00000020,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="10" cpuset="0x00000044,0x44440000,0x0" complete_cpuset="0x00000044,0x44440000,0x0" online_cpuset="0x00000044,0x44440000,0x0" allowed_cpuset="0x00000044,0x44440000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <object type="Cache" cpuset="0x00000044,0x44440000,0x0" complete_cpuset="0x00000044,0x44440000,0x0" online_cpuset="0x00000044,0x44440000,0x0" allowed_cpuset="0x00000044,0x44440000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00440000,0x0" complete_cpuset="0x00440000,0x0" online_cpuset="0x00440000,0x0" allowed_cpuset="0x00440000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00040000,0x0" complete_cpuset="0x00040000,0x0" online_cpuset="0x00040000,0x0" allowed_cpuset="0x00040000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00040000,0x0" complete_cpuset="0x00040000,0x0" online_cpuset="0x00040000,0x0" allowed_cpuset="0x00040000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="50" cpuset="0x00040000,0x0" complete_cpuset="0x00040000,0x0" online_cpuset="0x00040000,0x0" allowed_cpuset="0x00040000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00400000,0x0" complete_cpuset="0x00400000,0x0" online_cpuset="0x00400000,0x0" allowed_cpuset="0x00400000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00400000,0x0" complete_cpuset="0x00400000,0x0" online_cpuset="0x00400000,0x0" allowed_cpuset="0x00400000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="54" cpuset="0x00400000,0x0" complete_cpuset="0x00400000,0x0" online_cpuset="0x00400000,0x0" allowed_cpuset="0x00400000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x44000000,0x0" complete_cpuset="0x44000000,0x0" online_cpuset="0x44000000,0x0" allowed_cpuset="0x44000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x04000000,0x0" complete_cpuset="0x04000000,0x0" online_cpuset="0x04000000,0x0" allowed_cpuset="0x04000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x04000000,0x0" complete_cpuset="0x04000000,0x0" online_cpuset="0x04000000,0x0" allowed_cpuset="0x04000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="58" cpuset="0x04000000,0x0" complete_cpuset="0x04000000,0x0" online_cpuset="0x04000000,0x0" allowed_cpuset="0x04000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x40000000,0x0" complete_cpuset="0x40000000,0x0" online_cpuset="0x40000000,0x0" allowed_cpuset="0x40000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x40000000,0x0" complete_cpuset="0x40000000,0x0" online_cpuset="0x40000000,0x0" allowed_cpuset="0x40000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="62" cpuset="0x40000000,0x0" complete_cpuset="0x40000000,0x0" online_cpuset="0x40000000,0x0" allowed_cpuset="0x40000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00000044,,0x0" complete_cpuset="0x00000044,,0x0" online_cpuset="0x00000044,,0x0" allowed_cpuset="0x00000044,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000004,,0x0" complete_cpuset="0x00000004,,0x0" online_cpuset="0x00000004,,0x0" allowed_cpuset="0x00000004,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00000004,,0x0" complete_cpuset="0x00000004,,0x0" online_cpuset="0x00000004,,0x0" allowed_cpuset="0x00000004,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="66" cpuset="0x00000004,,0x0" complete_cpuset="0x00000004,,0x0" online_cpuset="0x00000004,,0x0" allowed_cpuset="0x00000004,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000040,,0x0" complete_cpuset="0x00000040,,0x0" online_cpuset="0x00000040,,0x0" allowed_cpuset="0x00000040,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00000040,,0x0" complete_cpuset="0x00000040,,0x0" online_cpuset="0x00000040,,0x0" allowed_cpuset="0x00000040,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="70" cpuset="0x00000040,,0x0" complete_cpuset="0x00000040,,0x0" online_cpuset="0x00000040,,0x0" allowed_cpuset="0x00000040,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="11" cpuset="0x00000088,0x88880000,0x0" complete_cpuset="0x00000088,0x88880000,0x0" online_cpuset="0x00000088,0x88880000,0x0" allowed_cpuset="0x00000088,0x88880000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+        <object type="Cache" cpuset="0x00000088,0x88880000,0x0" complete_cpuset="0x00000088,0x88880000,0x0" online_cpuset="0x00000088,0x88880000,0x0" allowed_cpuset="0x00000088,0x88880000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00880000,0x0" complete_cpuset="0x00880000,0x0" online_cpuset="0x00880000,0x0" allowed_cpuset="0x00880000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00080000,0x0" complete_cpuset="0x00080000,0x0" online_cpuset="0x00080000,0x0" allowed_cpuset="0x00080000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00080000,0x0" complete_cpuset="0x00080000,0x0" online_cpuset="0x00080000,0x0" allowed_cpuset="0x00080000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="51" cpuset="0x00080000,0x0" complete_cpuset="0x00080000,0x0" online_cpuset="0x00080000,0x0" allowed_cpuset="0x00080000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00800000,0x0" complete_cpuset="0x00800000,0x0" online_cpuset="0x00800000,0x0" allowed_cpuset="0x00800000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00800000,0x0" complete_cpuset="0x00800000,0x0" online_cpuset="0x00800000,0x0" allowed_cpuset="0x00800000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="55" cpuset="0x00800000,0x0" complete_cpuset="0x00800000,0x0" online_cpuset="0x00800000,0x0" allowed_cpuset="0x00800000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x88000000,0x0" complete_cpuset="0x88000000,0x0" online_cpuset="0x88000000,0x0" allowed_cpuset="0x88000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x08000000,0x0" complete_cpuset="0x08000000,0x0" online_cpuset="0x08000000,0x0" allowed_cpuset="0x08000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x08000000,0x0" complete_cpuset="0x08000000,0x0" online_cpuset="0x08000000,0x0" allowed_cpuset="0x08000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="59" cpuset="0x08000000,0x0" complete_cpuset="0x08000000,0x0" online_cpuset="0x08000000,0x0" allowed_cpuset="0x08000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x80000000,0x0" complete_cpuset="0x80000000,0x0" online_cpuset="0x80000000,0x0" allowed_cpuset="0x80000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x80000000,0x0" complete_cpuset="0x80000000,0x0" online_cpuset="0x80000000,0x0" allowed_cpuset="0x80000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="63" cpuset="0x80000000,0x0" complete_cpuset="0x80000000,0x0" online_cpuset="0x80000000,0x0" allowed_cpuset="0x80000000,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00000088,,0x0" complete_cpuset="0x00000088,,0x0" online_cpuset="0x00000088,,0x0" allowed_cpuset="0x00000088,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000008,,0x0" complete_cpuset="0x00000008,,0x0" online_cpuset="0x00000008,,0x0" allowed_cpuset="0x00000008,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x00000008,,0x0" complete_cpuset="0x00000008,,0x0" online_cpuset="0x00000008,,0x0" allowed_cpuset="0x00000008,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="67" cpuset="0x00000008,,0x0" complete_cpuset="0x00000008,,0x0" online_cpuset="0x00000008,,0x0" allowed_cpuset="0x00000008,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00000080,,0x0" complete_cpuset="0x00000080,,0x0" online_cpuset="0x00000080,,0x0" allowed_cpuset="0x00000080,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x00000080,,0x0" complete_cpuset="0x00000080,,0x0" online_cpuset="0x00000080,,0x0" allowed_cpuset="0x00000080,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004">
+                <object type="PU" os_index="71" cpuset="0x00000080,,0x0" complete_cpuset="0x00000080,,0x0" online_cpuset="0x00000080,,0x0" allowed_cpuset="0x00000080,,0x0" nodeset="0x00000004" complete_nodeset="0x00000004" allowed_nodeset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Bridge" os_index="17" bridge_type="0-1" depth="0" bridge_pci="0000:[60-64]">
+        <object type="Bridge" os_index="393664" name="Intel Corporation N10/ICH 7 Family PCI Express Port 1" bridge_type="1-1" depth="0" bridge_pci="0000:[62-62]" pci_busid="0000:60:1c.0" pci_type="0604 [8086:27d0] [0000:0000] 01" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="N10/ICH 7 Family PCI Express Port 1"/>
+          <object type="PCIDev" os_index="401408" name="Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet" pci_busid="0000:62:00.0" pci_type="0200 [14e4:1639] [0014:007c] 20" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="Broadcom Corporation"/>
+            <info name="PCIDevice" value="NetXtreme II BCM5709 Gigabit Ethernet"/>
+            <object type="OSDev" name="eth4" osdev_type="2">
+              <info name="Address" value="00:21:5e:c4:8a:18"/>
+            </object>
+          </object>
+          <object type="PCIDev" os_index="401409" name="Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet" pci_busid="0000:62:00.1" pci_type="0200 [14e4:1639] [0014:007c] 20" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="Broadcom Corporation"/>
+            <info name="PCIDevice" value="NetXtreme II BCM5709 Gigabit Ethernet"/>
+            <object type="OSDev" name="eth5" osdev_type="2">
+              <info name="Address" value="00:21:5e:c4:8a:1a"/>
+            </object>
+          </object>
+        </object>
+        <object type="Bridge" os_index="393696" name="Intel Corporation 82801 PCI Bridge" bridge_type="1-1" depth="0" bridge_pci="0000:[63-64]" pci_busid="0000:60:1e.0" pci_type="0604 [8086:244e] [0000:0000] e1" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="82801 PCI Bridge"/>
+          <object type="Bridge" os_index="405504" name="IBM CalIOC2 PCI-E Root Port" bridge_type="1-1" depth="1" bridge_pci="0000:[64-64]" pci_busid="0000:63:00.0" pci_type="0604 [1014:0308] [0000:0000] 01" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="IBM"/>
+            <info name="PCIDevice" value="CalIOC2 PCI-E Root Port"/>
+            <object type="PCIDev" os_index="409600" name="LSI Logic / Symbios Logic SAS1078 PCI-Express Fusion-MPT SAS" pci_busid="0000:64:00.0" pci_type="0100 [1000:0062] [0014:0066] 04" pci_link_speed="0.000000">
+              <info name="PCIVendor" value="LSI Logic / Symbios Logic"/>
+              <info name="PCIDevice" value="SAS1078 PCI-Express Fusion-MPT SAS"/>
+              <object type="OSDev" name="sdb" osdev_type="0"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_index="3" cpuset="0xffffff00,,0x0" complete_cpuset="0xffffff00,,0x0" online_cpuset="0xffffff00,,0x0" allowed_cpuset="0xffffff00,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" local_memory="51271172096">
+      <page_type size="4096" count="12517376"/>
+      <page_type size="2097152" count="0"/>
+      <object type="Socket" os_index="12" cpuset="0x11111100,,0x0" complete_cpuset="0x11111100,,0x0" online_cpuset="0x11111100,,0x0" allowed_cpuset="0x11111100,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <object type="Cache" cpuset="0x11111100,,0x0" complete_cpuset="0x11111100,,0x0" online_cpuset="0x11111100,,0x0" allowed_cpuset="0x11111100,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00001100,,0x0" complete_cpuset="0x00001100,,0x0" online_cpuset="0x00001100,,0x0" allowed_cpuset="0x00001100,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000100,,0x0" complete_cpuset="0x00000100,,0x0" online_cpuset="0x00000100,,0x0" allowed_cpuset="0x00000100,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00000100,,0x0" complete_cpuset="0x00000100,,0x0" online_cpuset="0x00000100,,0x0" allowed_cpuset="0x00000100,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="72" cpuset="0x00000100,,0x0" complete_cpuset="0x00000100,,0x0" online_cpuset="0x00000100,,0x0" allowed_cpuset="0x00000100,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00001000,,0x0" complete_cpuset="0x00001000,,0x0" online_cpuset="0x00001000,,0x0" allowed_cpuset="0x00001000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00001000,,0x0" complete_cpuset="0x00001000,,0x0" online_cpuset="0x00001000,,0x0" allowed_cpuset="0x00001000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="76" cpuset="0x00001000,,0x0" complete_cpuset="0x00001000,,0x0" online_cpuset="0x00001000,,0x0" allowed_cpuset="0x00001000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00110000,,0x0" complete_cpuset="0x00110000,,0x0" online_cpuset="0x00110000,,0x0" allowed_cpuset="0x00110000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00010000,,0x0" complete_cpuset="0x00010000,,0x0" online_cpuset="0x00010000,,0x0" allowed_cpuset="0x00010000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00010000,,0x0" complete_cpuset="0x00010000,,0x0" online_cpuset="0x00010000,,0x0" allowed_cpuset="0x00010000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="80" cpuset="0x00010000,,0x0" complete_cpuset="0x00010000,,0x0" online_cpuset="0x00010000,,0x0" allowed_cpuset="0x00010000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00100000,,0x0" complete_cpuset="0x00100000,,0x0" online_cpuset="0x00100000,,0x0" allowed_cpuset="0x00100000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00100000,,0x0" complete_cpuset="0x00100000,,0x0" online_cpuset="0x00100000,,0x0" allowed_cpuset="0x00100000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="84" cpuset="0x00100000,,0x0" complete_cpuset="0x00100000,,0x0" online_cpuset="0x00100000,,0x0" allowed_cpuset="0x00100000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x11000000,,0x0" complete_cpuset="0x11000000,,0x0" online_cpuset="0x11000000,,0x0" allowed_cpuset="0x11000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x01000000,,0x0" complete_cpuset="0x01000000,,0x0" online_cpuset="0x01000000,,0x0" allowed_cpuset="0x01000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x01000000,,0x0" complete_cpuset="0x01000000,,0x0" online_cpuset="0x01000000,,0x0" allowed_cpuset="0x01000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="88" cpuset="0x01000000,,0x0" complete_cpuset="0x01000000,,0x0" online_cpuset="0x01000000,,0x0" allowed_cpuset="0x01000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x10000000,,0x0" complete_cpuset="0x10000000,,0x0" online_cpuset="0x10000000,,0x0" allowed_cpuset="0x10000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x10000000,,0x0" complete_cpuset="0x10000000,,0x0" online_cpuset="0x10000000,,0x0" allowed_cpuset="0x10000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="92" cpuset="0x10000000,,0x0" complete_cpuset="0x10000000,,0x0" online_cpuset="0x10000000,,0x0" allowed_cpuset="0x10000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="13" cpuset="0x22222200,,0x0" complete_cpuset="0x22222200,,0x0" online_cpuset="0x22222200,,0x0" allowed_cpuset="0x22222200,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <object type="Cache" cpuset="0x22222200,,0x0" complete_cpuset="0x22222200,,0x0" online_cpuset="0x22222200,,0x0" allowed_cpuset="0x22222200,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00002200,,0x0" complete_cpuset="0x00002200,,0x0" online_cpuset="0x00002200,,0x0" allowed_cpuset="0x00002200,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000200,,0x0" complete_cpuset="0x00000200,,0x0" online_cpuset="0x00000200,,0x0" allowed_cpuset="0x00000200,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00000200,,0x0" complete_cpuset="0x00000200,,0x0" online_cpuset="0x00000200,,0x0" allowed_cpuset="0x00000200,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="73" cpuset="0x00000200,,0x0" complete_cpuset="0x00000200,,0x0" online_cpuset="0x00000200,,0x0" allowed_cpuset="0x00000200,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00002000,,0x0" complete_cpuset="0x00002000,,0x0" online_cpuset="0x00002000,,0x0" allowed_cpuset="0x00002000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00002000,,0x0" complete_cpuset="0x00002000,,0x0" online_cpuset="0x00002000,,0x0" allowed_cpuset="0x00002000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="77" cpuset="0x00002000,,0x0" complete_cpuset="0x00002000,,0x0" online_cpuset="0x00002000,,0x0" allowed_cpuset="0x00002000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00220000,,0x0" complete_cpuset="0x00220000,,0x0" online_cpuset="0x00220000,,0x0" allowed_cpuset="0x00220000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00020000,,0x0" complete_cpuset="0x00020000,,0x0" online_cpuset="0x00020000,,0x0" allowed_cpuset="0x00020000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00020000,,0x0" complete_cpuset="0x00020000,,0x0" online_cpuset="0x00020000,,0x0" allowed_cpuset="0x00020000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="81" cpuset="0x00020000,,0x0" complete_cpuset="0x00020000,,0x0" online_cpuset="0x00020000,,0x0" allowed_cpuset="0x00020000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00200000,,0x0" complete_cpuset="0x00200000,,0x0" online_cpuset="0x00200000,,0x0" allowed_cpuset="0x00200000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00200000,,0x0" complete_cpuset="0x00200000,,0x0" online_cpuset="0x00200000,,0x0" allowed_cpuset="0x00200000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="85" cpuset="0x00200000,,0x0" complete_cpuset="0x00200000,,0x0" online_cpuset="0x00200000,,0x0" allowed_cpuset="0x00200000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x22000000,,0x0" complete_cpuset="0x22000000,,0x0" online_cpuset="0x22000000,,0x0" allowed_cpuset="0x22000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x02000000,,0x0" complete_cpuset="0x02000000,,0x0" online_cpuset="0x02000000,,0x0" allowed_cpuset="0x02000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x02000000,,0x0" complete_cpuset="0x02000000,,0x0" online_cpuset="0x02000000,,0x0" allowed_cpuset="0x02000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="89" cpuset="0x02000000,,0x0" complete_cpuset="0x02000000,,0x0" online_cpuset="0x02000000,,0x0" allowed_cpuset="0x02000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x20000000,,0x0" complete_cpuset="0x20000000,,0x0" online_cpuset="0x20000000,,0x0" allowed_cpuset="0x20000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x20000000,,0x0" complete_cpuset="0x20000000,,0x0" online_cpuset="0x20000000,,0x0" allowed_cpuset="0x20000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="93" cpuset="0x20000000,,0x0" complete_cpuset="0x20000000,,0x0" online_cpuset="0x20000000,,0x0" allowed_cpuset="0x20000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="14" cpuset="0x44444400,,0x0" complete_cpuset="0x44444400,,0x0" online_cpuset="0x44444400,,0x0" allowed_cpuset="0x44444400,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <object type="Cache" cpuset="0x44444400,,0x0" complete_cpuset="0x44444400,,0x0" online_cpuset="0x44444400,,0x0" allowed_cpuset="0x44444400,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00004400,,0x0" complete_cpuset="0x00004400,,0x0" online_cpuset="0x00004400,,0x0" allowed_cpuset="0x00004400,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000400,,0x0" complete_cpuset="0x00000400,,0x0" online_cpuset="0x00000400,,0x0" allowed_cpuset="0x00000400,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00000400,,0x0" complete_cpuset="0x00000400,,0x0" online_cpuset="0x00000400,,0x0" allowed_cpuset="0x00000400,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="74" cpuset="0x00000400,,0x0" complete_cpuset="0x00000400,,0x0" online_cpuset="0x00000400,,0x0" allowed_cpuset="0x00000400,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00004000,,0x0" complete_cpuset="0x00004000,,0x0" online_cpuset="0x00004000,,0x0" allowed_cpuset="0x00004000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00004000,,0x0" complete_cpuset="0x00004000,,0x0" online_cpuset="0x00004000,,0x0" allowed_cpuset="0x00004000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="78" cpuset="0x00004000,,0x0" complete_cpuset="0x00004000,,0x0" online_cpuset="0x00004000,,0x0" allowed_cpuset="0x00004000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00440000,,0x0" complete_cpuset="0x00440000,,0x0" online_cpuset="0x00440000,,0x0" allowed_cpuset="0x00440000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00040000,,0x0" complete_cpuset="0x00040000,,0x0" online_cpuset="0x00040000,,0x0" allowed_cpuset="0x00040000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00040000,,0x0" complete_cpuset="0x00040000,,0x0" online_cpuset="0x00040000,,0x0" allowed_cpuset="0x00040000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="82" cpuset="0x00040000,,0x0" complete_cpuset="0x00040000,,0x0" online_cpuset="0x00040000,,0x0" allowed_cpuset="0x00040000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00400000,,0x0" complete_cpuset="0x00400000,,0x0" online_cpuset="0x00400000,,0x0" allowed_cpuset="0x00400000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00400000,,0x0" complete_cpuset="0x00400000,,0x0" online_cpuset="0x00400000,,0x0" allowed_cpuset="0x00400000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="86" cpuset="0x00400000,,0x0" complete_cpuset="0x00400000,,0x0" online_cpuset="0x00400000,,0x0" allowed_cpuset="0x00400000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x44000000,,0x0" complete_cpuset="0x44000000,,0x0" online_cpuset="0x44000000,,0x0" allowed_cpuset="0x44000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x04000000,,0x0" complete_cpuset="0x04000000,,0x0" online_cpuset="0x04000000,,0x0" allowed_cpuset="0x04000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x04000000,,0x0" complete_cpuset="0x04000000,,0x0" online_cpuset="0x04000000,,0x0" allowed_cpuset="0x04000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="90" cpuset="0x04000000,,0x0" complete_cpuset="0x04000000,,0x0" online_cpuset="0x04000000,,0x0" allowed_cpuset="0x04000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x40000000,,0x0" complete_cpuset="0x40000000,,0x0" online_cpuset="0x40000000,,0x0" allowed_cpuset="0x40000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x40000000,,0x0" complete_cpuset="0x40000000,,0x0" online_cpuset="0x40000000,,0x0" allowed_cpuset="0x40000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="94" cpuset="0x40000000,,0x0" complete_cpuset="0x40000000,,0x0" online_cpuset="0x40000000,,0x0" allowed_cpuset="0x40000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_index="15" cpuset="0x88888800,,0x0" complete_cpuset="0x88888800,,0x0" online_cpuset="0x88888800,,0x0" allowed_cpuset="0x88888800,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+        <object type="Cache" cpuset="0x88888800,,0x0" complete_cpuset="0x88888800,,0x0" online_cpuset="0x88888800,,0x0" allowed_cpuset="0x88888800,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="16777216" depth="3" cache_linesize="64" cache_associativity="16">
+          <object type="Cache" cpuset="0x00008800,,0x0" complete_cpuset="0x00008800,,0x0" online_cpuset="0x00008800,,0x0" allowed_cpuset="0x00008800,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00000800,,0x0" complete_cpuset="0x00000800,,0x0" online_cpuset="0x00000800,,0x0" allowed_cpuset="0x00000800,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00000800,,0x0" complete_cpuset="0x00000800,,0x0" online_cpuset="0x00000800,,0x0" allowed_cpuset="0x00000800,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="75" cpuset="0x00000800,,0x0" complete_cpuset="0x00000800,,0x0" online_cpuset="0x00000800,,0x0" allowed_cpuset="0x00000800,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00008000,,0x0" complete_cpuset="0x00008000,,0x0" online_cpuset="0x00008000,,0x0" allowed_cpuset="0x00008000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="1" cpuset="0x00008000,,0x0" complete_cpuset="0x00008000,,0x0" online_cpuset="0x00008000,,0x0" allowed_cpuset="0x00008000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="79" cpuset="0x00008000,,0x0" complete_cpuset="0x00008000,,0x0" online_cpuset="0x00008000,,0x0" allowed_cpuset="0x00008000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x00880000,,0x0" complete_cpuset="0x00880000,,0x0" online_cpuset="0x00880000,,0x0" allowed_cpuset="0x00880000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x00080000,,0x0" complete_cpuset="0x00080000,,0x0" online_cpuset="0x00080000,,0x0" allowed_cpuset="0x00080000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x00080000,,0x0" complete_cpuset="0x00080000,,0x0" online_cpuset="0x00080000,,0x0" allowed_cpuset="0x00080000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="83" cpuset="0x00080000,,0x0" complete_cpuset="0x00080000,,0x0" online_cpuset="0x00080000,,0x0" allowed_cpuset="0x00080000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x00800000,,0x0" complete_cpuset="0x00800000,,0x0" online_cpuset="0x00800000,,0x0" allowed_cpuset="0x00800000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="3" cpuset="0x00800000,,0x0" complete_cpuset="0x00800000,,0x0" online_cpuset="0x00800000,,0x0" allowed_cpuset="0x00800000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="87" cpuset="0x00800000,,0x0" complete_cpuset="0x00800000,,0x0" online_cpuset="0x00800000,,0x0" allowed_cpuset="0x00800000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x88000000,,0x0" complete_cpuset="0x88000000,,0x0" online_cpuset="0x88000000,,0x0" allowed_cpuset="0x88000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="3145728" depth="2" cache_linesize="64" cache_associativity="12">
+            <object type="Cache" cpuset="0x08000000,,0x0" complete_cpuset="0x08000000,,0x0" online_cpuset="0x08000000,,0x0" allowed_cpuset="0x08000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="4" cpuset="0x08000000,,0x0" complete_cpuset="0x08000000,,0x0" online_cpuset="0x08000000,,0x0" allowed_cpuset="0x08000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="91" cpuset="0x08000000,,0x0" complete_cpuset="0x08000000,,0x0" online_cpuset="0x08000000,,0x0" allowed_cpuset="0x08000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+            <object type="Cache" cpuset="0x80000000,,0x0" complete_cpuset="0x80000000,,0x0" online_cpuset="0x80000000,,0x0" allowed_cpuset="0x80000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="5" cpuset="0x80000000,,0x0" complete_cpuset="0x80000000,,0x0" online_cpuset="0x80000000,,0x0" allowed_cpuset="0x80000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008">
+                <object type="PU" os_index="95" cpuset="0x80000000,,0x0" complete_cpuset="0x80000000,,0x0" online_cpuset="0x80000000,,0x0" allowed_cpuset="0x80000000,,0x0" nodeset="0x00000008" complete_nodeset="0x00000008" allowed_nodeset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Bridge" os_index="25" bridge_type="0-1" depth="0" bridge_pci="0000:[90-94]">
+        <object type="Bridge" os_index="590272" name="Intel Corporation N10/ICH 7 Family PCI Express Port 1" bridge_type="1-1" depth="0" bridge_pci="0000:[92-92]" pci_busid="0000:90:1c.0" pci_type="0604 [8086:27d0] [0000:0000] 01" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="N10/ICH 7 Family PCI Express Port 1"/>
+          <object type="PCIDev" os_index="598016" name="Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet" pci_busid="0000:92:00.0" pci_type="0200 [14e4:1639] [0014:007c] 20" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="Broadcom Corporation"/>
+            <info name="PCIDevice" value="NetXtreme II BCM5709 Gigabit Ethernet"/>
+            <object type="OSDev" name="eth6" osdev_type="2">
+              <info name="Address" value="00:21:5e:c4:86:18"/>
+            </object>
+          </object>
+          <object type="PCIDev" os_index="598017" name="Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet" pci_busid="0000:92:00.1" pci_type="0200 [14e4:1639] [0014:007c] 20" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="Broadcom Corporation"/>
+            <info name="PCIDevice" value="NetXtreme II BCM5709 Gigabit Ethernet"/>
+            <object type="OSDev" name="eth7" osdev_type="2">
+              <info name="Address" value="00:21:5e:c4:86:1a"/>
+            </object>
+          </object>
+        </object>
+        <object type="Bridge" os_index="590304" name="Intel Corporation 82801 PCI Bridge" bridge_type="1-1" depth="0" bridge_pci="0000:[93-94]" pci_busid="0000:90:1e.0" pci_type="0604 [8086:244e] [0000:0000] e1" pci_link_speed="0.000000">
+          <info name="PCIVendor" value="Intel Corporation"/>
+          <info name="PCIDevice" value="82801 PCI Bridge"/>
+          <object type="Bridge" os_index="602112" name="IBM CalIOC2 PCI-E Root Port" bridge_type="1-1" depth="1" bridge_pci="0000:[94-94]" pci_busid="0000:93:00.0" pci_type="0604 [1014:0308] [0000:0000] 01" pci_link_speed="0.000000">
+            <info name="PCIVendor" value="IBM"/>
+            <info name="PCIDevice" value="CalIOC2 PCI-E Root Port"/>
+            <object type="PCIDev" os_index="606208" name="LSI Logic / Symbios Logic SAS1078 PCI-Express Fusion-MPT SAS" pci_busid="0000:94:00.0" pci_type="0100 [1000:0062] [0014:0066] 04" pci_link_speed="0.000000">
+              <info name="PCIVendor" value="LSI Logic / Symbios Logic"/>
+              <info name="PCIDevice" value="SAS1078 PCI-Express Fusion-MPT SAS"/>
+              <object type="OSDev" name="sdc" osdev_type="0"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/Makefile.am	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,27 @@
+# Copyright © 2009 inria.  All rights reserved.
+# Copyright © 2009-2010 Université Bordeaux 1
+# Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+
+AM_CFLAGS = $(HWLOC_CFLAGS)
+AM_CPPFLAGS = $(HWLOC_CPPFLAGS)
+AM_LDFLAGS = $(HWLOC_LDFLAGS)
+
+# Add your XML input files here.
+xml_inputs = \
+	16amd64-8n2c-cpusets.xml \
+	16em64t-4s2c2t.xml \
+	16em64t-4s2c2t-offlines.xml \
+	24em64t-2n6c2t-pci.xml \
+	8em64t-2mi2ma2c.xml \
+	96em64t-4n4d3ca2co-pci.xml
+
+# Only run the tests if we're building standalone, because the tests
+# call hwloc executables.
+if HWLOC_BUILD_TESTS
+TESTS = $(xml_inputs)
+endif HWLOC_BUILD_TESTS
+
+EXTRA_DIST = $(xml_inputs)
+
+TESTS_ENVIRONMENT = $(HWLOC_top_builddir)/tests/xml/test-topology.sh

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/test-topology.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/test-topology.sh.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/test-topology.sh.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,86 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2009 CNRS
+# Copyright © 2009-2010 inria.  All rights reserved.
+# Copyright © 2009-2011 Université Bordeaux 1
+# Copyright © 2010 Cisco Systems, Inc.  All rights reserved.
+# See COPYING in top-level directory.
+#
+
+# Check the conformance of `lstopo' for all the XML
+# hierarchies available here.  Return true on success.
+
+HWLOC_top_builddir="@HWLOC_top_builddir@"
+HWLOC_top_srcdir="@HWLOC_top_srcdir@"
+lstopo="@HWLOC_top_builddir@/utils/lstopo"
+
+# make sure we use default numeric formats
+LANG=C
+LC_ALL=C
+export LANG LC_ALL
+
+error()
+{
+    echo $@ 2>&1
+}
+
+if [ ! -x "$lstopo" ]
+then
+    error "Could not find executable file \`$lstopo'."
+    exit 1
+fi
+
+
+: ${TMPDIR=/tmp}
+{
+  tmp=`
+    (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
+  ` &&
+  test -n "$tmp" && test -d "$tmp"
+} || {
+  tmp=$TMPDIR/foo$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || exit $?
+file="$tmp/lstopo_xml.output.xml"
+
+set -e
+
+do_run()
+{
+  $lstopo --if xml --input "$1" --of xml "$file"
+
+  if [ "$HWLOC_UPDATE_TEST_TOPOLOGY_OUTPUT" != 1 ]
+  then
+    diff @HWLOC_DIFF_U@ @HWLOC_DIFF_W@ "$1" "$file"
+  else
+    if ! diff "$1" "$file" >/dev/null
+    then
+	cp -f "$file" "$1"
+	echo "Updated $1"
+    fi
+  fi
+
+  if [ -n "@XMLLINT@" ]
+  then
+    cp -f "$HWLOC_top_srcdir"/src/hwloc.dtd "$tmp/"
+    @XMLLINT@ --valid "$file" > /dev/null
+  fi
+
+  rm "$file"
+}
+
+export HWLOC_NO_LIBXML_IMPORT
+export HWLOC_NO_LIBXML_EXPORT
+
+echo "Importing with default parser and reexporting with minimalistic implementation..."
+HWLOC_NO_LIBXML_IMPORT=0
+HWLOC_NO_LIBXML_EXPORT=1
+do_run "$1"
+echo "Importing with minimalistic parser and reexporting with default implementation..."
+HWLOC_NO_LIBXML_IMPORT=1
+HWLOC_NO_LIBXML_EXPORT=0
+do_run "$1"
+
+rm -rf "$tmp"


Property changes on: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xml/test-topology.sh.in
___________________________________________________________________
Added: svn:executable
   + *

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xmlbuffer.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xmlbuffer.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/tests/xmlbuffer.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,84 @@
+/*
+ * Copyright © 2010 inria.  All rights reserved.
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <hwloc.h>
+
+static int one_test(void)
+{
+  hwloc_topology_t topology;
+  int size1, size2;
+  char *buf1, *buf2;
+  int err = 0;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_WHOLE_IO);
+  hwloc_topology_load(topology);
+  assert(hwloc_topology_is_thissystem(topology));
+  hwloc_topology_export_xmlbuffer(topology, &buf1, &size1);
+  hwloc_topology_destroy(topology);
+  printf("exported to buffer %p length %d\n", buf1, size1);
+
+  hwloc_topology_init(&topology);
+  assert(!hwloc_topology_set_xmlbuffer(topology, buf1, size1));
+  hwloc_topology_load(topology);
+  assert(!hwloc_topology_is_thissystem(topology));
+  hwloc_topology_export_xmlbuffer(topology, &buf2, &size2);
+  hwloc_topology_destroy(topology);
+  printf("re-exported to buffer %p length %d\n", buf2, size2);
+
+  if (strcmp(buf1, buf2)) {
+    printf("### First exported buffer is:\n");
+    printf("%s", buf1);
+    printf("### End of first export buffer\n");
+    printf("### Second exported buffer is:\n");
+    printf("%s", buf2);
+    printf("### End of second export buffer\n");
+    err = 1;
+  }
+
+  hwloc_free_xmlbuffer(topology, buf1);
+  hwloc_free_xmlbuffer(topology, buf2);
+
+  return err;
+}
+
+int main(void)
+{
+  int err;
+
+  printf("using default import and export\n");
+  putenv("HWLOC_NO_LIBXML_IMPORT=0");
+  putenv("HWLOC_NO_LIBXML_EXPORT=0");
+  err = one_test();
+  if (err < 0)
+    return err;
+
+  printf("using minimalistic import and default export\n");
+  putenv("HWLOC_NO_LIBXML_IMPORT=1");
+  putenv("HWLOC_NO_LIBXML_EXPORT=0");
+  err = one_test();
+  if (err < 0)
+    return err;
+
+  printf("using default import and minimalistic export\n");
+  putenv("HWLOC_NO_LIBXML_IMPORT=0");
+  putenv("HWLOC_NO_LIBXML_EXPORT=1");
+  err = one_test();
+  if (err < 0)
+    return err;
+
+  printf("using minimalistic import and export\n");
+  putenv("HWLOC_NO_LIBXML_IMPORT=1");
+  putenv("HWLOC_NO_LIBXML_EXPORT=1");
+  err = one_test();
+  if (err < 0)
+    return err;
+
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/Makefile.am
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/Makefile.am	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/Makefile.am	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,105 @@
+# Copyright © 2009-2010 inria.  All rights reserved.
+# Copyright © 2009-2011 Université Bordeaux 1
+# Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+#
+# See COPYING in top-level directory.
+
+AM_CFLAGS = $(HWLOC_CFLAGS)
+AM_CPPFLAGS = $(HWLOC_CPPFLAGS)
+AM_LDFLAGS = $(HWLOC_LDFLAGS)
+
+LDADD = $(HWLOC_top_builddir)/src/libhwloc.la
+
+EXTRA_DIST = test-hwloc-assembler.input1 test-hwloc-assembler.input2 test-hwloc-assembler.output test-hwloc-calc.output test-hwloc-distances.output test-hwloc-distrib.output test-hwloc-ls.output
+
+noinst_HEADERS = misc.h
+
+# Only build the utilities if we're building in standalone mode
+if HWLOC_BUILD_UTILS
+bin_PROGRAMS = lstopo hwloc-assembler hwloc-calc hwloc-bind hwloc-distances hwloc-distrib hwloc-ps
+endif
+
+lstopo_SOURCES = lstopo.h lstopo.c lstopo-color.c lstopo-text.c lstopo-draw.c lstopo-fig.c lstopo-xml.c
+if HWLOC_HAVE_CAIRO
+lstopo_SOURCES += lstopo-cairo.c
+endif
+if HWLOC_HAVE_WINDOWS
+lstopo_SOURCES += lstopo-windows.c
+endif
+lstopo_CFLAGS = $(HWLOC_CAIRO_CFLAGS) $(HWLOC_LIBXML2_CFLAGS) $(HWLOC_PCI_CFLAGS)
+lstopo_LDADD = $(LDADD) $(HWLOC_CAIRO_LIBS) -lm $(HWLOC_TERMCAP_LIBS) $(HWLOC_X11_LIBS)
+if HWLOC_BUILD_UTILS
+if HWLOC_HAVE_WINDOWS
+bin_PROGRAMS += lstopo-win
+lstopo_win_SOURCES = $(lstopo_SOURCES)
+lstopo_win_CFLAGS = $(lstopo_CFLAGS) -mwindows
+lstopo_win_LDADD = $(lstopo_LDADD)
+endif
+endif
+
+hwloc_calc_SOURCES = hwloc-calc.c hwloc-calc.h
+
+bin_SCRIPTS = hwloc-assembler-remote
+
+# Only run the tests if we're building standalone, because the tests
+# call hwloc executables.
+if HWLOC_BUILD_TESTS
+if !HWLOC_HAVE_MINGW32
+TESTS = test-hwloc-assembler.sh test-hwloc-calc.sh test-hwloc-distances.sh test-hwloc-distrib.sh test-hwloc-ls.sh
+endif !HWLOC_HAVE_MINGW32
+endif HWLOC_BUILD_TESTS
+
+# Only install man pages if we're building in standalone mode
+if HWLOC_BUILD_UTILS
+man7_pages = hwloc.7
+EXTRA_DIST += $(man7_pages:.7=.7in)
+nodist_man_MANS = $(man7_pages)
+
+man1_pages = lstopo.1 hwloc-bind.1 hwloc-calc.1 hwloc-distances.1 hwloc-distrib.1 hwloc-ps.1 hwloc-assembler.1 hwloc-assembler-remote.1
+EXTRA_DIST += $(man1_pages:.1=.1in)
+nodist_man_MANS += $(man1_pages)
+
+# Only install the gather-topology page if we're on Linux, but we need
+# to include it in the tarball, regardless of what OS we're building
+# on.
+hgt_page = hwloc-gather-topology.1
+EXTRA_DIST += $(hgt_page:.1=.1in)
+if HWLOC_HAVE_LINUX
+nodist_man_MANS += $(hgt_page)
+endif HWLOC_HAVE_LINUX
+
+.1in.1:
+	@ echo Creating $@ man page...
+	@ $(SED) -e 's/#PACKAGE_NAME#/@PACKAGE_NAME@/g' \
+	  -e 's/#PACKAGE_VERSION#/@PACKAGE_VERSION@/g' \
+	  -e 's/#HWLOC_DATE#/@HWLOC_RELEASE_DATE@/g' \
+	  > $@ < $<
+
+.3in.3:
+	@ echo Creating $@ man page...
+	@ $(SED) -e 's/#PACKAGE_NAME#/@PACKAGE_NAME@/g' \
+	  -e 's/#PACKAGE_VERSION#/@PACKAGE_VERSION@/g' \
+	  -e 's/#HWLOC_DATE#/@HWLOC_RELEASE_DATE@/g' \
+	  > $@ < $<
+
+.7in.7:
+	@ echo Creating $@ man page...
+	@ $(SED) -e 's/#PACKAGE_NAME#/@PACKAGE_NAME@/g' \
+	  -e 's/#PACKAGE_VERSION#/@PACKAGE_VERSION@/g' \
+	  -e 's/#HWLOC_DATE#/@HWLOC_RELEASE_DATE@/g' \
+	  > $@ < $<
+
+install-exec-hook: install-man
+	rm -f $(DESTDIR)$(bindir)/hwloc-ls$(EXEEXT) $(DESTDIR)$(bindir)/hwloc-info$(EXEEXT) $(DESTDIR)$(bindir)/hwloc-mask$(EXEEXT)
+	cd $(DESTDIR)$(bindir) && $(LN_S) lstopo$(EXEEXT) hwloc-ls$(EXEEXT) && $(LN_S) lstopo$(EXEEXT) hwloc-info$(EXEEXT) && $(LN_S) hwloc-calc$(EXEEXT) hwloc-mask$(EXEEXT)
+	rm -f $(DESTDIR)$(man1dir)/hwloc-ls.1 $(DESTDIR)$(man1dir)/hwloc-info.1 $(DESTDIR)$(man1dir)/hwloc-mask.1
+	cd $(DESTDIR)$(man1dir) && $(LN_S) lstopo.1 hwloc-ls.1 && $(LN_S) lstopo.1 hwloc-info.1 && $(LN_S) hwloc-calc.1 hwloc-mask.1
+	$(SED) -e 's/abs_top_builddir\/utils/bindir/' -e '/abs_top_builddir/d' $(DESTDIR)$(bindir)/hwloc-assembler-remote > $(DESTDIR)$(bindir)/hwloc-assembler-remote.tmp && mv -f $(DESTDIR)$(bindir)/hwloc-assembler-remote.tmp $(DESTDIR)$(bindir)/hwloc-assembler-remote
+
+uninstall-local:
+	rm -f $(DESTDIR)$(bindir)/hwloc-ls$(EXEEXT) $(DESTDIR)$(bindir)/hwloc-info$(EXEEXT) $(DESTDIR)$(bindir)/hwloc-mask$(EXEEXT)
+	rm -f $(DESTDIR)$(man1dir)/hwloc-ls.1 $(DESTDIR)$(man1dir)/hwloc-info.1 $(DESTDIR)$(man1dir)/hwloc-mask.1
+
+distclean-local:
+	rm -f $(nodist_man_MANS)
+endif

Deleted: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/README
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/README	2012-02-25 00:51:02 UTC (rev 9526)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/README	2012-02-25 00:52:55 UTC (rev 9527)
@@ -1,4 +0,0 @@
-The contents of this directory have been deleted from the MPICH2 repository.
-Because we build hwloc in "embedded" mode, these directories cause problems with
-the tarballs resulting from "make dist".  The directory itself is left in place
-to keep automake happy and hold this README.

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler-remote.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler-remote.1in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler-remote.1in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,80 @@
+.\" -*- nroff -*-
+.\" Copyright © 2011 inria.  All rights reserved.
+.\" See COPYING in top-level directory.
+.TH HWLOC-ASSEMBLER-REMOTE "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+hwloc-assembler-remote \- Assemble multiple remote host topologies
+.
+.\" **************************
+.\"    Synopsis Section
+.\" **************************
+.SH SYNOPSIS
+.B hwloc-assembler-remote
+[\fIoptions\fR]
+output.xml
+host1 host2
+\fR...
+.
+.\" **************************
+.\"    Options Section
+.\" **************************
+.SH OPTIONS
+.TP
+\fB\-\-ssh <ssh>\fR
+Use the given ssh command (and options) to connect to remote hosts.
+.TP
+\fB\-\-lstopo\-path <path>\fR
+Use the given path as the remote lstopo command when gathering remote topologies.
+By default, lstopo is taken from the PATH environment variable.
+.TP
+\fB\-\-lstopo\-opts <opts>\fR
+Pass the given lstopo options when gathering remote topologies.
+.TP
+\fB\-\-show\fR
+Display the resulting topology before exit.
+.TP
+\fB\-v \-\-verbose\fR
+Verbose messages.
+.
+.\" **************************
+.\"    Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+hwloc-assembler-remote is a frontend to hwloc-assembler.
+It takes care of retrieving the remote nodes' topologies
+before assembling them with hwloc-assembler.
+.
+.\" **************************
+.\"    Examples Section
+.\" **************************
+.SH EXAMPLES
+.PP
+To assemble three nodes topologies:
+
+    $ hwloc-assembler-remote output.xml host1 host2 host3
+
+.PP
+To assemble the topology of a multi-process MPI job defined
+as a machinefile:
+
+    $ hwloc-assembler-remote output.xml `cat machinefile | sort | uniq`
+.
+.\" **************************
+.\"    Return value section
+.\" **************************
+.SH RETURN VALUE
+Upon successful execution, hwloc-assembler-remote returns 0.
+.
+.PP
+hwloc-assembler-remote will return nonzero if any kind of error occurs, such as
+(but not limited to) failure to parse the command line.
+.
+.\" **************************
+.\"    See also section
+.\" **************************
+.SH SEE ALSO
+.
+.ft R
+hwloc(7), lstopo(1), hwloc-assembler(1)
+.sp

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler-remote.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler-remote.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler-remote.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,121 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2011 inria.  All rights reserved.
+# See COPYING in top-level directory.
+#
+
+abs_top_builddir="@abs_top_builddir@"
+prefix="@prefix@"
+exec_prefix="@exec_prefix@"
+bindir="@bindir@"
+# this will be changed into $bindir/lstopo during make install
+locallstopo="$abs_top_builddir/utils/lstopo"
+assembler="$abs_top_builddir/utils/hwloc-assembler"
+
+force=0
+show=0
+ssh=ssh
+remotelstopo=lstopo
+remotelstopoopts=
+inputs=
+inputopts=
+failedhosts=
+output=
+
+error()
+{
+	echo $@ 2>&1
+}
+
+usage()
+{
+	echo "$0 |options] <output> <host1> <host2> ..."
+	echo "  Gathers the topology of remote hosts and assembles them into the"
+	echo "  <output> XML topology."
+	echo "Options:"
+	echo "  --ssh <ssh>		Use the given ssh command (and options) to connect to remote hosts"
+	echo "  --lstopo-path <path>	Use the given path as the remote lstopo command"
+	echo "  --lstopo-opts <opts>	Pass the given lstopo options when gathering remote topologies"
+	echo "  --show			Display the resulting topology before exit"
+	echo "  -f --force		Ignore failure to load a remote host topology"
+}
+
+while test $# -gt 0 ; do
+	case "$1" in
+	--ssh)
+		ssh="$2"
+		shift
+		;;
+	--lstopo-path)
+		remotelstopo="$2"
+		shift
+		;;
+	--lstopo-opts)
+		remotelstopoopts="$2"
+		shift
+		;;
+	-s|--show)
+		show=1
+		;;
+	-f|--force)
+		force=1
+		;;
+	-h)
+		usage
+		exit 0
+		;;
+	--*)
+		error "Unrecognized option: $1"
+		usage
+		exit 1
+		;;
+	*)
+		if test -z "$output" ; then
+			output="$1"
+		else
+			file=`mktemp --tmpdir hwloc-assembler-remote.$1.XXXXXXXX.xml`
+			echo -n "Exporting host $1 topology to $file ..."
+			if "$ssh" "$1" "$remotelstopo" "$remotelstopoopts" -.xml > $file ; then
+				echo "done"
+				inputs="$inputs $file"
+				inputopts="$inputopts --name $1 $file"
+			else
+				echo "failed!"
+				rm "$file"
+				failedhosts="$failedhosts $1"
+				test $force -eq 0 && exit -1;
+			fi
+		fi
+		;;
+	esac
+	shift
+done
+
+if test -z "$output" ; then
+	error "Missing output filename"
+	rm -f $inputs
+	usage
+	exit 1
+fi
+
+test $force -eq 1 && assembleropts="$assembleropts -f"
+
+echo "$assembler" $assembleropts "$output" $inputopts
+"$assembler" $assembleropts "$output" $inputopts
+ret=$?
+
+rm -f $inputs
+
+if test $ret -eq 0 ; then
+	echo "Assembled into $output"
+else
+	echo "Failed to assemble into $output"
+fi
+
+if test -n "$failedhosts" ; then
+	error "Failed to contact hosts:$failedhosts"
+fi
+
+if test $ret -eq 0 -a $show -eq 1 ; then "$locallstopo" -i "$output" ; fi

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler.1in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler.1in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,79 @@
+.\" -*- nroff -*-
+.\" Copyright © 2011 inria.  All rights reserved.
+.\" See COPYING in top-level directory.
+.TH HWLOC-ASSEMBLER "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+hwloc-assembler \- Assemble multiple XML topologies
+.
+.\" **************************
+.\"    Synopsis Section
+.\" **************************
+.SH SYNOPSIS
+.B hwloc-assembler
+[\fIoptions\fR]
+output.xml
+[--name <name1>] input1.xml
+[--name <name2>] input2.xml
+\fR...
+.
+.\" **************************
+.\"    Options Section
+.\" **************************
+.SH OPTIONS
+.TP
+\fB\-n \-\-name <name>\fR
+Set <name> in the \fIAssemblerName\fR info attribute of the next
+input topology root to ease identification within the final global
+topology.
+.TP
+\fB\-f \-\-force\fR
+Ignore errors while reading input files.
+.TP
+\fB\-v \-\-verbose\fR
+Verbose messages.
+.
+.\" **************************
+.\"    Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+hwloc-assembler combines the input XML topologies and exports the
+resulting global topologies to a new XML file.
+All inputs are inserting as children of the global root object.
+.
+Each input topology root is annotated with info attributes
+before insertion.
+\fIAssemblerIndex\fR is set to the index within the list of inputs.
+\fIAssemblerName\fR is set to the name given with \fB--name\fR if any.
+.
+hwloc-assembler-remote offers a frontend for assembling remote nodes
+topologies without having to manually gather and transfer each of them.
+.
+.\" **************************
+.\"    Examples Section
+.\" **************************
+.SH EXAMPLES
+.PP
+To assemble two nodes topologies:
+
+    $ hwloc-assembler output.xml --name host1 host1.xml --name host2 host2.xml
+.
+.
+.\" **************************
+.\"    Return value section
+.\" **************************
+.SH RETURN VALUE
+Upon successful execution, hwloc-assembler returns 0.
+.
+.PP
+hwloc-assembler will return nonzero if any kind of error occurs, such as
+(but not limited to) failure to parse the command line.
+.
+.\" **************************
+.\"    See also section
+.\" **************************
+.SH SEE ALSO
+.
+.ft R
+hwloc(7), lstopo(1), hwloc-assembler-remote(1)
+.sp

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-assembler.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,128 @@
+/*
+ * Copyright © 2011 inria.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/autogen/config.h>
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+static void usage(char *name, FILE *where)
+{
+  fprintf (where, "Usage: %s [options] <output>.xml [-n <name1] <input1>.xml [-n name2] <input2>.xml ...\n", name);
+  fprintf (where, "Options:\n");
+  fprintf (where, "  -v --verbose      Show verbose messages\n");
+  fprintf (where, "  -f --force        Ignore errors while reading input files\n");
+  fprintf (where, "  -n --name <name>  Set the name of the next input topology\n");
+}
+
+int main(int argc, char *argv[])
+{
+  hwloc_topology_t topology;
+  char *callname;
+  char *output;
+  int verbose = 0;
+  int force = 0;
+  int opt;
+  int i, j;
+
+  callname = strrchr(argv[0], '/');
+  if (!callname)
+    callname = argv[0];
+  else
+    callname++;
+  argc--;
+  argv++;
+
+  while (argc >= 1) {
+    opt = 0;
+    if (!strcmp(argv[0], "-v") || !strcmp(argv[0], "--verbose")) {
+      verbose++;
+    } else if (!strcmp(argv[0], "-f") || !strcmp(argv[0], "--force")) {
+      force = 1;
+    } else if (!strcmp(argv[0], "-h") || !strcmp(argv[0], "--help")) {
+      usage(callname, stdout);
+      exit(EXIT_SUCCESS);
+    } else if (!strcmp(argv[0], "--")) {
+      argc--;
+      argv++;
+      break;
+    } else if (*argv[0] == '-') {
+      fprintf(stderr, "Unrecognized option: %s\n", argv[0]);
+      usage(callname, stderr);
+      exit(EXIT_FAILURE);
+    } else
+      break;
+    argc -= opt+1;
+    argv += opt+1;
+  }
+
+  if (!argc) {
+    fprintf(stderr, "Missing output file name\n");
+    usage(callname, stderr);
+    exit(EXIT_FAILURE);
+  }
+  output = argv[0];
+  argc--;
+  argv++;
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_custom(topology);
+
+  for(i=0, j=0; i<argc; i++, j++) {
+    hwloc_topology_t input;
+    hwloc_obj_t root;
+    char index[10];
+    char *name = NULL;
+
+    if (!strcmp(argv[i], "-n") || !strcmp(argv[i], "--name")) {
+      if (i+2 >= argc) {
+	usage(callname, stderr);
+	exit(EXIT_FAILURE);
+      }
+      name = argv[i+1];
+      i+=2;
+    }
+
+    if (verbose) {
+      if (name)
+	printf("Importing XML topology %s with name %s ...\n", argv[i], name);
+      else
+	printf("Importing XML topology %s ...\n", argv[i]);
+    }
+
+    hwloc_topology_init(&input);
+    if (hwloc_topology_set_xml(input, argv[i])) {
+      fprintf(stderr, "Failed to set source XML file %s (%s)\n", argv[i], strerror(errno));
+      hwloc_topology_destroy(input);
+      if (force)
+	continue;
+      else
+	return EXIT_FAILURE;
+    }
+    hwloc_topology_load(input);
+
+    root = hwloc_get_root_obj(input);
+    hwloc_obj_add_info(root, "AssemblerName", name ? name : argv[i]);
+    snprintf(index, sizeof(index), "%d", j);
+    hwloc_obj_add_info(root, "AssemblerIndex", index);
+
+    hwloc_custom_insert_topology(topology, hwloc_get_root_obj(topology), input, NULL);
+    hwloc_topology_destroy(input);
+  }
+
+  if (verbose)
+    printf("Assembling global topology...\n");
+  hwloc_topology_load(topology);
+  if (hwloc_topology_export_xml(topology, output) < 0) {
+    fprintf(stderr, "Failed to export XML to %s (%s)\n", output, strerror(errno));
+    return EXIT_FAILURE;
+  }
+  hwloc_topology_destroy(topology);
+  if (verbose)
+    printf("Exported topology to XML file %s\n", output);
+  return 0;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.1in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.1in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,219 @@
+.\" -*- nroff -*-
+.\" Copyright © 2009-2010 inria.  All rights reserved.
+.\" Copyright © 2010 Université of Bordeaux
+.\" Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+.\" See COPYING in top-level directory.
+.TH HWLOC-BIND "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+hwloc-bind \- Launch a command that is bound to specific processors
+and/or memory.
+.
+.\" **************************
+.\"    Synopsis Section
+.\" **************************
+.SH SYNOPSIS
+.
+.B hwloc-bind
+[\fIoptions\fR] \fI<location1> [<location2> [...] ] [--] <command> \fR...
+.
+.\" **************************
+.\"    Options Section
+.\" **************************
+.SH OPTIONS
+.
+See below for a description of valid <location> formats.
+.TP 10
+\fB\-\-cpubind\fR
+Use following arguments for CPU binding (default).
+.TP
+\fB\-\-membind\fR
+Use following arguments for memory binding.
+If \fB\-\-mempolicy\fR is not also given,
+the default policy is bind.
+.TP
+\fB\-\-mempolicy\fR <policy>
+Change the memory binding policy.
+The available policies are default, firsttouch, bind, interleave
+replicate and nexttouch.
+This option is only meaningful when an actual binding is also given
+with \fB\-\-membind\fR.
+If \fB\-\-membind\fR is given without \fB\-\-mempolicy\fR,
+the default policy is bind.
+.TP
+\fB\-\-get\fR
+Report the current bindings.
+When combined with \fB\-\-membind\fR, report the memory binding
+instead of CPU binding.
+.TP
+\fB\-\-get-last-cpu-location\fR
+Report the last processors where the process ran.
+Note that the result may already be outdated when reported since
+the operating system may move the process to other processors
+at any time according to the binding.
+This option cannot be combined with \fB\-\-membind\fR.
+.TP
+\fB\-\-single\fR
+Bind on a single CPU to prevent migration.
+.TP
+\fB\-\-strict\fR
+Require strict binding.
+.TP
+\fB\-\-get\fR
+Retrieve the current process binding
+.TP
+\fB\-\-pid\fR <pid>
+Operate on pid <pid>
+.TP
+\fB\-p\fR \fB\-\-physical\fR
+take OS/physical indexes instead of logical indexes
+.TP
+\fB\-l\fR \fB\-\-logical\fR
+take logical indexes instead of physical/OS indexes (default)
+.TP
+\fB\-\-taskset\fR
+Display CPU set strings in the format recognized by the taskset command-line
+program instead of hwloc-specific CPU set string format.
+This option has no impact on the format of input CPU set strings,
+both formats are always accepted.
+.TP
+\fB\-v\fR
+Verbose output.
+.TP
+\fB\-\-version\fR
+Report version and exit.
+.
+.\" **************************
+.\"    Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+hwloc-bind execs an executable (with optional command line arguments)
+that is bound to the specified location (or list of locations).  Upon
+successful execution, hwloc-bind simply sets bindings and then execs
+the executable over itself.
+.
+.PP
+.B NOTE:
+It is highly recommended that you read the hwloc(7) overview page
+before reading this man page.  Most of the concepts described in
+hwloc(7) directly apply to the hwloc-bind utility.
+.
+.
+.\" **************************
+.\"    Examples Section
+.\" **************************
+.SH EXAMPLES
+.PP
+hwloc-bind's operation is best described through several examples.
+More details about how locations are specified on the hwloc-bind
+command line are described in hwloc(7).
+.
+.PP
+To run the echo command on the first logical processor of the second
+socket:
+
+    hwloc-bind socket:1.pu:0 -- echo hello
+
+which is exactly equivalent to
+
+    hwloc-bind socket:1.pu:0 echo hello
+
+To bind the "echo" command to the first core of the second socket and
+the second core of the first socket:
+
+    hwloc-bind socket:1.core:0 socket:0.core:1 echo hello
+
+Note that binding the "echo" command to multiple processors is
+probably meaningless (because "echo" is likely implemented as a
+single-threaded application); these examples just serve to show what
+hwloc-bind can do.
+.
+.PP
+To run on the first three sockets on the second and third nodes:
+
+    hwloc-bind node:1-2.socket:0:3 echo hello
+
+which is also equivalent to:
+
+    hwloc-bind node:1-2.socket:0-2 echo hello
+
+Note that if you attempt to bind to objects that do not exist,
+hwloc-bind will not warn unless 
+.I -v 
+was specified.
+
+To run on processor with physical index 2 in socket with physical index 1:
+
+    hwloc-bind --physical socket:1.core:2 echo hello
+
+To run on odd cores within even sockets:
+
+    hwloc-bind socket:even.core:odd echo hello
+
+To run on the first socket, except on its second and fifth cores:
+
+    hwloc-bind socket:0 ~socket:0.core:1 ~socket:0.core:4 echo hello
+
+To run anywhere except on the first socket:
+
+    hwloc-bind all ~socket:0 echo hello
+
+To run on a core near the network interface named eth0:
+
+    hwloc-bind os=eth0 echo hello
+
+To run on a core near the PCI device whose bus ID is 0000:01:02.0:
+
+    hwloc-bind pci=0000:01:02.0 echo hello
+
+To bind memory on second memory node and run on first node (when supported by the OS):
+
+    hwloc-bind --cpubind node:1 --membind node:0 echo hello
+
+The --get option can report current bindings.  This example shows
+nesting hwloc-bind invocations to set a binding and then report it:
+
+    hwloc-bind node:1.socket:2 hwloc-bind --get
+
+On one of the hwloc developer's machines, this example
+.
+reports "0x00004444,0x44000000".  The mask reported on your machine
+may be different.
+.
+.PP
+Locations may also be specified as a hex bit mask (typically generated
+by hwloc-calc).  For example:
+
+    hwloc-bind 0x00004444,0x44000000 echo hello
+    hwloc-bind `hwloc-calc node:1.socket:2` echo hello
+
+Memory binding may also be reported:
+
+    hwloc-bind --membind node:1 --mempolicy interleave -- hwloc-bind --get --membind
+
+This returns a string describing the memory binding, such as "0x000000f0
+(interleave)".  Note that if the system does not contain any NUMA
+nodes, the reported string will indicate that the process is bound to
+the entire system memory (e.g., "0xf...f").
+.
+.\" **************************
+.\"    Return value section
+.\" **************************
+.SH RETURN VALUE
+Upon successful execution, hwloc-bind execs the command over itself.
+The return value is therefore whatever the return value of the command
+is.
+.
+.PP
+hwloc-bind will return nonzero if any kind of error occurs, such as
+(but not limited to): failure to parse the command line, failure to
+retrieve process bindings, or lack of a command to execute.
+.
+.\" **************************
+.\"    See also section
+.\" **************************
+.SH SEE ALSO
+.
+.ft R
+hwloc(7), lstopo(1), hwloc-calc(1), hwloc-distrib(1)
+.sp

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-bind.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,317 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/private.h>
+#include <hwloc-calc.h>
+#include <hwloc.h>
+
+#include <unistd.h>
+#include <errno.h>
+
+static void usage(FILE *where)
+{
+  fprintf(where, "Usage: hwloc-bind [options] <location> -- command ...\n");
+  fprintf(where, " <location> may be a space-separated list of cpusets or objects\n");
+  fprintf(where, "            as supported by the hwloc-calc utility, e.g:\n");
+  hwloc_calc_locations_usage(where);
+  fprintf(where, "Options:\n");
+  fprintf(where, "  --cpubind      Use following arguments for cpu binding (default)\n");
+  fprintf(where, "  --membind      Use following arguments for memory binding\n");
+  fprintf(where, "  --mempolicy <default|firsttouch|bind|interleave|replicate|nexttouch>\n"
+		 "                 Change policy that --membind applies (default is bind)\n");
+  fprintf(where, "  -l --logical   Take logical object indexes (default)\n");
+  fprintf(where, "  -p --physical  Take physical object indexes\n");
+  fprintf(where, "  --single       Bind on a single CPU to prevent migration\n");
+  fprintf(where, "  --strict       Require strict binding\n");
+  fprintf(where, "  --get          Retrieve current process binding\n");
+  fprintf(where, "  --get-last-cpu-location\n"
+		 "                 Retrieve the last processors where the current process ran\n");
+  fprintf(where, "  --pid <pid>    Operate on process <pid>\n");
+  fprintf(where, "  --taskset      Use taskset-specific format when displaying cpuset strings\n");
+  fprintf(where, "  -v             Show verbose messages\n");
+  fprintf(where, "  --version      Report version and exit\n");
+}
+
+int main(int argc, char *argv[])
+{
+  hwloc_topology_t topology;
+  unsigned depth;
+  hwloc_bitmap_t cpubind_set, membind_set;
+  int cpubind = 1; /* membind if 0 */
+  int get_binding = 0;
+  int get_last_cpu_location = 0;
+  int single = 0;
+  int verbose = 0;
+  int logical = 1;
+  int taskset = 0;
+  int cpubind_flags = 0;
+  hwloc_membind_policy_t membind_policy = HWLOC_MEMBIND_BIND;
+  int membind_flags = 0;
+  int opt;
+  int ret;
+  hwloc_pid_t pid = 0;
+  char **orig_argv = argv;
+
+  cpubind_set = hwloc_bitmap_alloc();
+  membind_set = hwloc_bitmap_alloc();
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_WHOLE_IO);
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+
+  /* skip argv[0], handle options */
+  argv++;
+  argc--;
+
+  while (argc >= 1) {
+    if (!strcmp(argv[0], "--")) {
+      argc--;
+      argv++;
+      break;
+    }
+
+    opt = 0;
+
+    if (*argv[0] == '-') {
+      if (!strcmp(argv[0], "-v")) {
+	verbose = 1;
+	goto next;
+      }
+      else if (!strcmp(argv[0], "--help")) {
+	usage(stdout);
+	return EXIT_SUCCESS;
+      }
+      else if (!strcmp(argv[0], "--single")) {
+	single = 1;
+	goto next;
+      }
+      else if (!strcmp(argv[0], "--strict")) {
+	cpubind_flags |= HWLOC_CPUBIND_STRICT;
+	membind_flags |= HWLOC_MEMBIND_STRICT;
+	goto next;
+      }
+      else if (!strcmp(argv[0], "--pid")) {
+        if (argc < 2) {
+          usage (stderr);
+          exit(EXIT_FAILURE);
+        }
+        pid = atoi(argv[1]);
+        opt = 1;
+        goto next;
+      }
+      else if (!strcmp (argv[0], "--version")) {
+          printf("%s %s\n", orig_argv[0], VERSION);
+          exit(EXIT_SUCCESS);
+      }
+      if (!strcmp(argv[0], "-l") || !strcmp(argv[0], "--logical")) {
+        logical = 1;
+        goto next;
+      }
+      if (!strcmp(argv[0], "-p") || !strcmp(argv[0], "--physical")) {
+        logical = 0;
+        goto next;
+      }
+      if (!strcmp(argv[0], "--taskset")) {
+        taskset = 1;
+        goto next;
+      }
+      else if (!strncmp (argv[0], "--get-last-cpu-location", 10)) {
+	get_last_cpu_location = 1;
+	goto next;
+      }
+      else if (!strcmp (argv[0], "--get")) {
+	get_binding = 1;
+	goto next;
+      }
+      else if (!strcmp (argv[0], "--cpubind")) {
+	  cpubind = 1;
+	  goto next;
+      }
+      else if (!strcmp (argv[0], "--membind")) {
+	  cpubind = 0;
+	  goto next;
+      }
+      else if (!strcmp (argv[0], "--mempolicy")) {
+	if (!strncmp(argv[1], "default", 2))
+	  membind_policy = HWLOC_MEMBIND_DEFAULT;
+	else if (!strncmp(argv[1], "firsttouch", 2))
+	  membind_policy = HWLOC_MEMBIND_FIRSTTOUCH;
+	else if (!strncmp(argv[1], "bind", 2))
+	  membind_policy = HWLOC_MEMBIND_BIND;
+	else if (!strncmp(argv[1], "interleave", 2))
+	  membind_policy = HWLOC_MEMBIND_INTERLEAVE;
+	else if (!strncmp(argv[1], "replicate", 2))
+	  membind_policy = HWLOC_MEMBIND_REPLICATE;
+	else if (!strncmp(argv[1], "nexttouch", 2))
+	  membind_policy = HWLOC_MEMBIND_NEXTTOUCH;
+	else {
+	  fprintf(stderr, "Unrecognized memory binding policy %s\n", argv[1]);
+          usage (stderr);
+          exit(EXIT_FAILURE);
+	}
+	opt = 1;
+	goto next;
+      }
+
+      fprintf (stderr, "Unrecognized option: %s\n", argv[0]);
+      usage(stderr);
+      return EXIT_FAILURE;
+    }
+
+    ret = hwloc_calc_process_arg(topology, depth, argv[0], logical,
+				 cpubind ? cpubind_set : membind_set,
+				 verbose);
+    if (ret < 0) {
+      if (verbose)
+	fprintf(stderr, "assuming the command starts at %s\n", argv[0]);
+      break;
+    }
+
+  next:
+    argc -= opt+1;
+    argv += opt+1;
+  }
+
+  if (get_binding || get_last_cpu_location) {
+    char *s;
+    const char *policystr = NULL;
+    int err;
+    if (cpubind) {
+      if (get_last_cpu_location) {
+	if (pid)
+	  err = hwloc_get_proc_last_cpu_location(topology, pid, cpubind_set, 0);
+	else
+	  err = hwloc_get_last_cpu_location(topology, cpubind_set, 0);
+      } else {
+	if (pid)
+	  err = hwloc_get_proc_cpubind(topology, pid, cpubind_set, 0);
+	else
+	  err = hwloc_get_cpubind(topology, cpubind_set, 0);
+      }
+      if (err) {
+	const char *errmsg = strerror(errno);
+	if (pid)
+	  fprintf(stderr, "hwloc_get_proc_%s %ld failed (errno %d %s)\n", get_last_cpu_location ? "last_cpu_location" : "cpubind", (long) pid, errno, errmsg);
+	else
+	  fprintf(stderr, "hwloc_get_%s failed (errno %d %s)\n", get_last_cpu_location ? "last_cpu_location" : "cpubind", errno, errmsg);
+	return EXIT_FAILURE;
+      }
+      if (taskset)
+	hwloc_bitmap_taskset_asprintf(&s, cpubind_set);
+      else
+	hwloc_bitmap_asprintf(&s, cpubind_set);
+    } else {
+      hwloc_membind_policy_t policy;
+      if (pid)
+	err = hwloc_get_proc_membind(topology, pid, membind_set, &policy, 0);
+      else
+	err = hwloc_get_membind(topology, membind_set, &policy, 0);
+      if (err) {
+	const char *errmsg = strerror(errno);
+        if (pid)
+          fprintf(stderr, "hwloc_get_proc_membind %ld failed (errno %d %s)\n", (long) pid, errno, errmsg);
+        else
+	  fprintf(stderr, "hwloc_get_membind failed (errno %d %s)\n", errno, errmsg);
+	return EXIT_FAILURE;
+      }
+      if (taskset)
+	hwloc_bitmap_taskset_asprintf(&s, membind_set);
+      else
+	hwloc_bitmap_asprintf(&s, membind_set);
+      switch (policy) {
+      case HWLOC_MEMBIND_DEFAULT: policystr = "default"; break;
+      case HWLOC_MEMBIND_FIRSTTOUCH: policystr = "firsttouch"; break;
+      case HWLOC_MEMBIND_BIND: policystr = "bind"; break;
+      case HWLOC_MEMBIND_INTERLEAVE: policystr = "interleave"; break;
+      case HWLOC_MEMBIND_REPLICATE: policystr = "replicate"; break;
+      case HWLOC_MEMBIND_NEXTTOUCH: policystr = "nexttouch"; break;
+      default: fprintf(stderr, "unknown memory policy %d\n", policy); assert(0); break;
+      }
+    }
+    if (policystr)
+      printf("%s (%s)\n", s, policystr);
+    else
+      printf("%s\n", s);
+    free(s);
+    return EXIT_SUCCESS;
+  }
+
+  if (!hwloc_bitmap_iszero(membind_set)) {
+    if (verbose) {
+      char *s;
+      hwloc_bitmap_asprintf(&s, membind_set);
+      fprintf(stderr, "binding on memory set %s\n", s);
+      free(s);
+    }
+    if (single)
+      hwloc_bitmap_singlify(membind_set);
+    if (pid)
+      ret = hwloc_set_proc_membind(topology, pid, membind_set, membind_policy, membind_flags);
+    else
+      ret = hwloc_set_membind(topology, membind_set, membind_policy, membind_flags);
+    if (ret) {
+      int bind_errno = errno;
+      const char *errmsg = strerror(bind_errno);
+      char *s;
+      hwloc_bitmap_asprintf(&s, membind_set);
+      if (pid)
+        fprintf(stderr, "hwloc_set_proc_membind %s %ld failed (errno %d %s)\n", s, (long) pid, bind_errno, errmsg);
+      else
+        fprintf(stderr, "hwloc_set_membind %s failed (errno %d %s)\n", s, bind_errno, errmsg);
+      free(s);
+    }
+  }
+
+  if (!hwloc_bitmap_iszero(cpubind_set)) {
+    if (verbose) {
+      char *s;
+      hwloc_bitmap_asprintf(&s, cpubind_set);
+      fprintf(stderr, "binding on cpu set %s\n", s);
+      free(s);
+    }
+    if (single)
+      hwloc_bitmap_singlify(cpubind_set);
+    if (pid)
+      ret = hwloc_set_proc_cpubind(topology, pid, cpubind_set, cpubind_flags);
+    else
+      ret = hwloc_set_cpubind(topology, cpubind_set, cpubind_flags);
+    if (ret) {
+      int bind_errno = errno;
+      const char *errmsg = strerror(bind_errno);
+      char *s;
+      hwloc_bitmap_asprintf(&s, cpubind_set);
+      if (pid)
+        fprintf(stderr, "hwloc_set_proc_cpubind %s %ld failed (errno %d %s)\n", s, (long) pid, bind_errno, errmsg);
+      else
+        fprintf(stderr, "hwloc_set_cpubind %s failed (errno %d %s)\n", s, bind_errno, errmsg);
+      free(s);
+    }
+  }
+
+  hwloc_bitmap_free(cpubind_set);
+  hwloc_bitmap_free(membind_set);
+
+  hwloc_topology_destroy(topology);
+
+  if (pid)
+    return EXIT_SUCCESS;
+
+  if (0 == argc) {
+    fprintf(stderr, "%s: nothing to do!\n", orig_argv[0]);
+    return EXIT_FAILURE;
+  }
+
+  ret = execvp(argv[0], argv);
+  if (ret) {
+      fprintf(stderr, "%s: Failed to launch executable \"%s\"\n", 
+              orig_argv[0], argv[0]);
+      perror("execvp");
+  }
+  return EXIT_FAILURE;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.1in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.1in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,265 @@
+.\" -*- nroff -*-
+.\" Copyright © 2010 inria.  All rights reserved.
+.\" Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
+.\" See COPYING in top-level directory.
+.TH HWLOC-CALC "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+hwloc-calc \- Operate on cpu mask strings and objects
+.
+.\" **************************
+.\"    Synopsis Section
+.\" **************************
+.SH SYNOPSIS
+.
+.B hwloc-calc
+[\fIoptions\fR] \fI<location1> [<location2> [...] ]
+.
+.\" **************************
+.\"    Options Section
+.\" **************************
+.SH OPTIONS
+.
+.TP 10
+\fB\-p\fR \fB\-\-physical\fR
+Use OS/physical indexes instead of logical indexes for both input and output.
+.TP
+\fB\-l\fR \fB\-\-logical\fR
+Use logical indexes instead of physical/OS indexes for both input and output (default).
+.TP
+\fB\-\-pi\fR \fB\-\-physical\-input\fR
+Use OS/physical indexes instead of logical indexes for input.
+.TP
+\fB\-\-li\fR \fB\-\-logical\-input\fR
+Use logical indexes instead of physical/OS indexes for input (default).
+.TP
+\fB\-\-po\fR \fB\-\-physical\-input\fR
+Use OS/physical indexes instead of logical indexes for output.
+.TP
+\fB\-\-lo\fR \fB\-\-logical\-output\fR
+Use logical indexes instead of physical/OS indexes for output (default).
+.TP
+\fB\-N \-\-number-of <type|depth>\fR
+Report the number of objects of the given type or depth that intersect the CPU set.
+This is convenient for finding how many cores, NUMA nodes or PUs are available
+in a machine.
+.TP
+\fB\-I \-\-intersect <type|depth>\fR
+Find the list of objects of the given type or depth that intersect the CPU set and
+report the comma-separated list of their indexes instead of the cpu mask string.
+This may be used for determining the list of objects above or below the input
+objects.
+When combined with \fB\-\-physical\fR, the list is convenient to pass to external
+tools such as taskset or numactl \fB\-\-physcpubind\fR or \fB\-\-membind\fR.
+This is different from \-\-largest since the latter requires that all reported
+objects are strictly included inside the input objects.
+.TP
+\fB\-H \-\-hierarchical <type1>.<type2>...\fR
+Find the list of objects of type <type2> that intersect the CPU set and
+report the space-separated list of their hierarchical indexes with respect
+to <type1>, <type2>, etc.
+For instance, if \fIsocket.core\fR is given, the output would be
+\fISocket:1.Core:2 Socket:2.Core:3\fR if the input contains the third
+core of the second socket and the fourth core of the third socket.
+.TP
+\fB\-\-largest\fR
+Report (in a human readable format) the list of largest objects which exactly
+include all input objects.
+None of these output objects intersect each other, and the sum of them is
+exactly equivalent to the input. No largest object is included in the input
+This is different from \-\-intersect where reported objects may not be
+strictly included in the input.
+.TP
+\fB\-\-sep <sep>\fR
+Change the field separator in the output.
+By default, a space is used to separate output objects
+(for instance when \fB\-\-hierarchical\fR or \fB\-\-largest\fR is given)
+while a comma is used to separate indexes
+(for instance when \fB\-\-intersect\fR is given).
+.TP
+\fB\-\-single\fR
+Singlify the output to a single CPU.
+.TP
+\fB\-\-taskset\fR
+Display CPU set strings in the format recognized by the taskset command-line
+program instead of hwloc-specific CPU set string format.
+This option has no impact on the format of input CPU set strings,
+both formats are always accepted.
+.TP
+\fB\-\-restrict\fR <cpuset>
+Restrict the topology to the given cpuset.
+.TP
+\fB\-i\fR <file>, \fB\-\-input\fR <file>
+Read topology from XML file <file> (instead of discovering the
+topology on the local machine).  If <file> is "\-", the standard input
+is used.  XML support must have been compiled in to hwloc for this
+option to be usable.
+.TP
+\fB\-i\fR <directory>, \fB\-\-input\fR <directory>
+Read topology from the chroot specified by <directory> (instead of
+discovering the topology on the local machine).  This option is
+generally only available on Linux.  The chroot was usually created
+by gathering another machine topology with hwloc-gather-topology.
+.TP
+\fB\-i\fR <specification>, \fB\-\-input\fR <specification>
+Simulate a fake hierarchy (instead of discovering the topology on the
+local machine). If <specification> is "node:2 pu:3", the topology will
+contain two NUMA nodes with 3 processing units in each of them.
+The <specification> string must end with a number of PUs.
+.TP
+\fB\-\-if\fR <format>, \fB\-\-input\-format\fR <format>
+Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR
+and \fBsynthetic\fR.
+.TP
+\fB\-v\fR
+Verbose output.
+.TP
+\fB\-\-version\fR
+Report version and exit.
+.
+.
+.\" **************************
+.\"    Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+hwloc-calc generates and manipulates CPU mask strings or objects.
+Both input and output may be either objects (with physical or logical
+indexes), CPU lists (with physical or logical indexes), or CPU mask strings
+(always physically indexed).
+.
+.PP
+If objects or CPU mask strings are given on the command-line,
+they are combined and a single output is printed.
+If no object or CPU mask strings are given on the command-line,
+the program will read the standard input.
+It will combine multiple objects or CPU mask strings that are
+given on the same line of the standard input line with spaces
+as separators.
+Different input lines will be processed separately.
+.
+.PP
+Command-line arguments and options are processed in order.
+For instance, it means that changing the type of input indexes
+with \fB\-\-li\fR or changing the input topology with \fB\-i\fR
+only affects the processing the following arguments.
+.
+.PP
+.B NOTE:
+It is highly recommended that you read the hwloc(7) overview page
+before reading this man page.  Most of the concepts described in
+hwloc(7) directly apply to the hwloc-calc utility.
+.
+.
+.\" **************************
+.\"    Examples Section
+.\" **************************
+.SH EXAMPLES
+.PP
+hwloc-calc's operation is best described through several examples.
+.
+.PP
+To display the (physical) CPU mask corresponding to the second socket:
+
+    $ hwloc-calc socket:1
+    0x000000f0
+
+To display the (physical) CPU mask corresponding to the third socket, excluding
+its even numbered logical processors:
+
+    $ hwloc-calc socket:2 ~PU:even
+    0x00000c00
+
+To combine two (physical) CPU masks:
+
+    $ hwloc-calc 0x0000ffff 0xff000000
+    0xff00ffff
+
+To display the list of logical numbers of processors included in the second
+socket:
+
+    $ hwloc-calc --intersect PU socket:1
+    4,5,6,7
+
+To bind GNU OpenMP threads logically over the whole machine, we need to use
+physical number output instead:
+
+    $ export GOMP_CPU_AFFINITY=`hwloc-calc --physical --intersect PU machine:0`
+    $ echo $GOMP_CPU_AFFINITY
+    0,2,1,3
+
+To display the list of NUMA nodes, by physical indexes, that intersect a given (physical) CPU mask:
+
+    $ hwloc-calc --physical --intersect NUMAnode 0xf0f0f0f0
+    0,2
+
+To display the physical index of a processor given by its logical index:
+
+    $ hwloc-calc PU:2 --physical-output --intersect PU
+    3
+
+To display the set of CPUs near network interface eth0:
+
+    $ hwloc-calc os=eth0
+    0x00005555
+
+To display the indexes of sockets near PCI device whose bus ID is 0000:01:02.0:
+
+    $ hwloc-calc pci=0000:01:02.0 --intersect Socket
+    1
+
+To display the list of per-socket cores that intersect the input:
+
+    $ hwloc-calc 0x00003c00 --hierarchical socket.core
+    Socket:2.Core:1 Socket:3.Core:0
+
+To display the (physical) CPU mask of the entire topology except the third socket:
+
+    $ hwloc-calc all ~socket:3
+    0x0000f0ff
+
+To combine both physical and logical indexes as input:
+
+    $ hwloc-calc PU:2 --physical-input PU:3
+    0x0000000c
+
+To synthetize a set of cores into largest objects on a 2-node 2-socket 2-core machine:
+
+    $ hwloc-calc core:0 --largest
+    Core:0
+    $ hwloc-calc core:0-1 --largest
+    Socket:0
+    $ hwloc-calc core:4-7 --largest
+    NUMANode:1
+    $ hwloc-calc core:2-6 --largest
+    Socket:1 Socket:2 Core:6
+    $ hwloc-calc socket:2 --largest
+    Socket:2
+    $ hwloc-calc socket:2-3 --largest
+    NUMANode:1
+
+To get the set of first threads of all cores:
+
+    $ hwloc-calc core:all.pu:0
+
+.
+.\" **************************
+.\"    Return value section
+.\" **************************
+.SH RETURN VALUE
+Upon successful execution, hwloc-calc displays the (physical) CPU mask string,
+(physical or logical) object list, or (physical or logical) object number list.
+The return value is 0.
+.
+.
+.PP
+hwloc-calc will return nonzero if any kind of error occurs, such as
+(but not limited to): failure to parse the command line.
+.
+.\" **************************
+.\"    See also section
+.\" **************************
+.SH SEE ALSO
+.
+.ft R
+hwloc(7), hwloc-gather-topology(1)
+.sp

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,474 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/private.h>
+#include <hwloc-calc.h>
+#include <hwloc.h>
+
+#include "misc.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+void usage(const char *callname __hwloc_attribute_unused, FILE *where)
+{
+  fprintf(where, "Usage: hwloc-calc [options] <location> ...\n");
+  fprintf(where, " <location> may be a space-separated list of cpusets or objects\n");
+  fprintf(where, "            as supported by the hwloc-bind utility, e.g:\n");
+  hwloc_calc_locations_usage(where);
+  fprintf(where, "Conversion options:\n");
+  fprintf(where, "  [default]                 Report the combined input locations as a CPU set\n");
+  fprintf(where, "  --number-of <type|depth>\n"
+                 "  -N <type|depth>           Report the number of objects intersecting the CPU set\n");
+  fprintf(where, "  --intersect <type|depth>\n"
+		 "  -I <type|depth>           Report the indexes of object intersecting the CPU set\n");
+  fprintf(where, "  --hierarchical <type1>.<type2>...\n"
+		 "  -H <type1>.<type2>...     Find the list of objects intersecting the CPU set and\n"
+		 "                            display them as hierarchical combinations such as\n"
+		 "                            type1:index1.type2:index2...\n");
+  fprintf(where, "  --largest                 Report the list of largest objects in the CPU set\n");
+  fprintf(where, "Formatting options:\n");
+  fprintf(where, "  -l --logical              Use logical object indexes (default)\n");
+  fprintf(where, "  -p --physical             Use physical object indexes\n");
+  fprintf(where, "  --li --logical-input      Use logical indexes for input (default)\n");
+  fprintf(where, "  --lo --logical-output     Use logical indexes for output (default)\n");
+  fprintf(where, "  --pi --physical-input     Use physical indexes for input\n");
+  fprintf(where, "  --po --physical-output    Use physical indexes for output\n");
+  fprintf(where, "  --sep <sep>               Use separator <sep> in the output\n");
+  fprintf(where, "  --taskset                 Use taskset-specific format when displaying cpuset strings\n");
+  fprintf(where, "  --single                  Singlify the output to a single CPU\n");
+  fprintf(where, "Input topology options:\n");
+  fprintf(where, "  --restrict <cpuset>       Restrict the topology to processors listed in <cpuset>\n");
+  hwloc_utils_input_format_usage(where, 10);
+  fprintf(where, "Miscellaneous options:\n");
+  fprintf(where, "  -v                        Show verbose messages\n");
+  fprintf(where, "  --version                 Report version and exit\n");
+}
+
+static int verbose = 0;
+static int logicali = 1;
+static int logicalo = 1;
+static int numberofdepth = -1;
+static int intersectdepth = -1;
+static int hiernblevels = 0;
+static int *hierdepth = NULL;
+static int showobjs = 0;
+static int singlify = 0;
+static int taskset = 0;
+
+static void
+hwloc_calc_hierarch_output(hwloc_topology_t topology, const char *prefix, const char *sep, hwloc_bitmap_t set, int level)
+{
+  hwloc_obj_t obj, prev = NULL;
+  unsigned logi = 0;
+  while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, hierdepth[level], prev)) != NULL) {
+    char string[256];
+    char type[32];
+    hwloc_obj_type_snprintf(type, sizeof(type), obj, 1);
+    snprintf(string, sizeof(string), "%s%s%s:%u", prefix, level ? "." : "", type, logicalo ? logi : obj->os_index);
+    if (prev)
+      printf("%s", sep);
+    if (level != hiernblevels - 1) {
+      hwloc_bitmap_t new = hwloc_bitmap_dup(set);
+      hwloc_bitmap_and(new, new, obj->cpuset);
+      hwloc_calc_hierarch_output(topology, string, sep, new, level+1);
+      hwloc_bitmap_free(new);
+    } else {
+      printf("%s", string);
+    }
+    prev = obj;
+    logi++;
+  }
+}
+
+static int
+hwloc_calc_output(hwloc_topology_t topology, const char *sep, hwloc_bitmap_t set)
+{
+  if (singlify)
+    hwloc_bitmap_singlify(set);
+
+  if (showobjs) {
+    hwloc_bitmap_t remaining = hwloc_bitmap_dup(set);
+    int first = 1;
+    if (!sep)
+      sep = " ";
+    while (!hwloc_bitmap_iszero(remaining)) {
+      char type[64];
+      unsigned idx;
+      hwloc_obj_t obj = hwloc_get_first_largest_obj_inside_cpuset(topology, remaining);
+      if (!obj) {
+        fprintf(stderr, "No object included in this cpuset\n");
+        return EXIT_FAILURE;
+      }
+      hwloc_obj_type_snprintf(type, sizeof(type), obj, 1);
+      idx = logicalo ? obj->logical_index : obj->os_index;
+      if (idx == (unsigned) -1)
+        printf("%s%s", first ? "" : sep, type);
+      else
+        printf("%s%s:%u", first ? "" : sep, type, idx);
+      hwloc_bitmap_andnot(remaining, remaining, obj->cpuset);
+      first = 0;
+    }
+    printf("\n");
+    hwloc_bitmap_free(remaining);
+  } else if (numberofdepth != -1) {
+    unsigned nb = 0;
+    hwloc_obj_t obj = NULL;
+    while ((obj = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, numberofdepth, obj)) != NULL)
+      nb++;
+    printf("%u\n", nb);
+  } else if (intersectdepth != -1) {
+    hwloc_obj_t proc, prev = NULL;
+    if (!sep)
+      sep = ",";
+    while ((proc = hwloc_get_next_obj_covering_cpuset_by_depth(topology, set, intersectdepth, prev)) != NULL) {
+      if (prev)
+	printf("%s", sep);
+      printf("%u", logicalo ? proc->logical_index : proc->os_index);
+      prev = proc;
+    }
+    printf("\n");
+  } else if (hiernblevels) {
+    if (!sep)
+      sep = " ";
+    hwloc_calc_hierarch_output(topology, "", sep, set, 0);
+    printf("\n");
+  } else {
+    char *string = NULL;
+    if (taskset)
+      hwloc_bitmap_taskset_asprintf(&string, set);
+    else
+      hwloc_bitmap_asprintf(&string, set);
+    printf("%s\n", string);
+    free(string);
+  }
+  return EXIT_SUCCESS;
+}
+
+static int hwloc_calc_type_depth(const char *string, hwloc_obj_type_t *typep, int *depthp)
+{
+  hwloc_obj_type_t type = hwloc_obj_type_of_string(string);
+  int depth = -1;
+  if (type == (hwloc_obj_type_t) -1) {
+    char *endptr;
+    depth = strtoul(string, &endptr, 0);
+    if (*endptr)
+      return -1;
+  }
+  *depthp = depth;
+  *typep = type;
+  return 0;
+}
+
+static int hwloc_calc_check_type_depth(hwloc_topology_t topology, hwloc_obj_type_t type, int *depthp, const char *caller)
+{
+  if (type != (hwloc_obj_type_t) -1) {
+    int depth = hwloc_get_type_depth(topology, type);
+    if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+      fprintf(stderr, "unavailable %s type %s\n", caller, hwloc_obj_type_string(type));
+      return -1;
+    } else  if (depth == HWLOC_TYPE_DEPTH_MULTIPLE) {
+      fprintf(stderr, "cannot use %s type %s with multiple depth, please use the relevant depth directly\n", caller, hwloc_obj_type_string(type));
+      return -1;
+    }
+    *depthp = depth;
+  }
+  return 0;
+}
+
+int main(int argc, char *argv[])
+{
+  hwloc_topology_t topology;
+  char *input = NULL;
+  enum hwloc_utils_input_format input_format = HWLOC_UTILS_INPUT_DEFAULT;
+  int input_changed = 0;
+  unsigned depth;
+  hwloc_bitmap_t set;
+  int cmdline_args = 0;
+  char **orig_argv = argv;
+  hwloc_obj_type_t numberoftype = (hwloc_obj_type_t) -1;
+  hwloc_obj_type_t intersecttype = (hwloc_obj_type_t) -1;
+  hwloc_obj_type_t *hiertype = NULL;
+  char *callname;
+  char *outsep = NULL;
+  int opt;
+  int i;
+  int err;
+  int ret = EXIT_SUCCESS;
+
+  /* enable verbose backends */
+  putenv("HWLOC_XML_VERBOSE=1");
+  putenv("HWLOC_SYNTHETIC_VERBOSE=1");
+
+  callname = argv[0];
+
+  set = hwloc_bitmap_alloc();
+
+  hwloc_topology_init(&topology);
+  hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_WHOLE_IO);
+  hwloc_topology_load(topology);
+  depth = hwloc_topology_get_depth(topology);
+
+  while (argc >= 2) {
+    if (*argv[1] == '-') {
+      if (!strcmp(argv[1], "-v")) {
+        verbose = 1;
+        goto next;
+      }
+      if (!strcmp(argv[1], "--help")) {
+	usage(callname, stdout);
+	return EXIT_SUCCESS;
+      }
+      if (!strcmp (argv[1], "--restrict")) {
+	hwloc_bitmap_t restrictset;
+	if (argc <= 2) {
+	  usage (callname, stderr);
+	  exit(EXIT_FAILURE);
+	}
+	restrictset = hwloc_bitmap_alloc();
+	hwloc_bitmap_sscanf(restrictset, argv[2]);
+	err = hwloc_topology_restrict (topology, restrictset, 0);
+	if (err) {
+	  perror("Restricting the topology");
+	  /* fallthrough */
+	}
+	hwloc_bitmap_free(restrictset);
+	argv++;
+	argc--;
+	goto next;
+      }
+      if (!strcmp(argv[1], "--number-of") || !strcmp(argv[1], "-N")) {
+	if (argc <= 2) {
+	  usage(callname, stderr);
+	  return EXIT_SUCCESS;
+	}
+	if (hwloc_calc_type_depth(argv[2], &numberoftype, &numberofdepth) < 0) {
+	  fprintf(stderr, "unrecognized --number-of type or depth %s\n", argv[2]);
+	  usage(callname, stderr);
+	  return EXIT_SUCCESS;
+	}
+	argv++;
+	argc--;
+	goto next;
+      }
+      if (!strcmp(argv[1], "--intersect") || !strcmp(argv[1], "-I")) {
+	if (argc <= 2) {
+	  usage(callname, stderr);
+	  return EXIT_SUCCESS;
+	}
+	if (hwloc_calc_type_depth(argv[2], &intersecttype, &intersectdepth) < 0) {
+	  fprintf(stderr, "unrecognized --intersect type or depth %s\n", argv[2]);
+	  usage(callname, stderr);
+	  return EXIT_SUCCESS;
+	}
+	argv++;
+	argc--;
+	goto next;
+      }
+      if (!strcmp(argv[1], "--hierarchical") || !strcmp(argv[1], "-H")) {
+	char *tmp, *next;
+	if (argc <= 2) {
+	  usage(callname, stderr);
+	  return EXIT_SUCCESS;
+	}
+	hiernblevels = 1;
+	tmp = argv[2];
+        while (1) {
+	  tmp = strchr(tmp, '.');
+	  if (!tmp)
+	    break;
+	  tmp++;
+	  hiernblevels++;
+        }
+	hiertype = malloc(hiernblevels * sizeof(hwloc_obj_type_t));
+	hierdepth = malloc(hiernblevels * sizeof(int));
+	tmp = argv[2];
+	for(i=0; i<hiernblevels; i++) {
+	  next = strchr(tmp, '.');
+	  if (next)
+	    *next = '\0';
+	  if (hwloc_calc_type_depth(tmp, &hiertype[i], &hierdepth[i]) < 0) {
+	    fprintf(stderr, "unrecognized --hierarchical type or depth %s\n", tmp);
+	    usage(callname, stderr);
+	    return EXIT_SUCCESS;
+	  }
+	  tmp = next+1;
+	}
+	argv++;
+	argc--;
+	goto next;
+      }
+      if (!strcasecmp(argv[1], "--pulist") || !strcmp(argv[1], "--proclist")) {
+	/* backward compat with 1.0 */
+	intersecttype = HWLOC_OBJ_PU;
+        goto next;
+      }
+      if (!strcmp(argv[1], "--nodelist")) {
+	/* backward compat with 1.0 */
+	intersecttype = HWLOC_OBJ_NODE;
+        goto next;
+      }
+      if (!strcmp(argv[1], "--largest")  || !strcmp(argv[1], "--objects") /* backward compat with 1.0 */) {
+	showobjs = 1;
+        goto next;
+      }
+      if (!strcmp(argv[1], "--version")) {
+        printf("%s %s\n", orig_argv[0], VERSION);
+        exit(EXIT_SUCCESS);
+      }
+      if (!strcmp(argv[1], "-l") || !strcmp(argv[1], "--logical")) {
+	logicali = 1;
+	logicalo = 1;
+	goto next;
+      }
+      if (!strcmp(argv[1], "--li") || !strcmp(argv[1], "--logical-input")) {
+	logicali = 1;
+	goto next;
+      }
+      if (!strcmp(argv[1], "--lo") || !strcmp(argv[1], "--logical-output")) {
+	logicalo = 1;
+	goto next;
+      }
+      if (!strcmp(argv[1], "-p") || !strcmp(argv[1], "--physical")) {
+	logicali = 0;
+	logicalo = 0;
+	goto next;
+      }
+      if (!strcmp(argv[1], "--pi") || !strcmp(argv[1], "--physical-input")) {
+	logicali = 0;
+	goto next;
+      }
+      if (!strcmp(argv[1], "--po") || !strcmp(argv[1], "--physical-output")) {
+	logicalo = 0;
+	goto next;
+      }
+      if (!strcmp(argv[1], "--sep")) {
+	if (argc <= 2) {
+	  usage (callname, stderr);
+	  exit(EXIT_FAILURE);
+	}
+	outsep = argv[2];
+	argv++;
+	argc--;
+	goto next;
+      }
+      if (!strcmp(argv[1], "--single")) {
+	singlify = 1;
+	goto next;
+      }
+      if (!strcmp(argv[1], "--taskset")) {
+	taskset = 1;
+	goto next;
+      }
+      if (hwloc_utils_lookup_input_option(argv+1, argc, &opt,
+					  &input, &input_format,
+					  callname)) {
+	argv += opt;
+	argc -= opt;
+	input_changed = 1;
+	goto next;
+      }
+
+      fprintf (stderr, "Unrecognized option: %s\n", argv[1]);
+      usage(callname, stderr);
+      return EXIT_FAILURE;
+    }
+
+    if (input_changed && input) {
+      /* only update the input when actually using it */
+      err = hwloc_utils_enable_input_format(topology, input, input_format, verbose, callname);
+      if (err)
+	return err;
+      hwloc_topology_load(topology);
+      depth = hwloc_topology_get_depth(topology);
+      input_changed = 0;
+    }
+
+    cmdline_args++;
+    if (hwloc_calc_process_arg(topology, depth, argv[1], logicali, set, verbose) < 0)
+      fprintf(stderr, "ignored unrecognized argument %s\n", argv[1]);
+
+ next:
+    argc--;
+    argv++;
+  }
+
+  if (hwloc_calc_check_type_depth(topology, numberoftype, &numberofdepth, "--number-of") < 0)
+    goto out;
+
+  if (hwloc_calc_check_type_depth(topology, intersecttype, &intersectdepth, "--intersect") < 0)
+    goto out;
+
+  for(i=0; i<hiernblevels; i++)
+    if (hwloc_calc_check_type_depth(topology, hiertype[i], &hierdepth[i], "--hierarchical") < 0)
+      goto out;
+
+  if (cmdline_args) {
+    /* process command-line arguments */
+    ret = hwloc_calc_output(topology, outsep, set);
+
+  } else {
+    /* process stdin arguments line-by-line */
+#define HWLOC_CALC_LINE_LEN 64
+    size_t len = HWLOC_CALC_LINE_LEN;
+    char * line = malloc(len);
+
+    if (input_changed && input) {
+      /* only update the input when actually using it */
+      err = hwloc_utils_enable_input_format(topology, input, input_format, verbose, callname);
+      if (err)
+        return err;
+      hwloc_topology_load(topology);
+      depth = hwloc_topology_get_depth(topology);
+      input_changed = 0;
+    }
+
+    while (1) {
+      char *current, *tmpline;
+
+      /* stop if line is empty */
+      if (!fgets(line, len, stdin))
+	break;
+
+      /* keep reading until we get EOL */
+      tmpline = line;
+      while (!strchr(tmpline, '\n')) {
+	line = realloc(line, len*2);
+	tmpline = line + len-1;
+	if (!fgets(tmpline, len+1, stdin))
+	  break;
+	len *= 2;
+      }
+
+      /* parse now that we got everything */
+      current = line;
+      hwloc_bitmap_zero(set);
+      while (1) {
+	char *token = strtok(current, " \n");
+	if (!token)
+	  break;
+	current = NULL;
+	if (hwloc_calc_process_arg(topology, depth, token, logicali, set, verbose) < 0)
+	  fprintf(stderr, "ignored unrecognized argument %s\n", argv[1]);
+      }
+      hwloc_calc_output(topology, outsep, set);
+    }
+    free(line);
+  }
+
+ out:
+  hwloc_topology_destroy(topology);
+
+  hwloc_bitmap_free(set);
+
+  free(hierdepth);
+  free(hiertype);
+
+  return ret;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-calc.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,618 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2012 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#ifndef HWLOC_CALC_H
+#define HWLOC_CALC_H
+
+#include <private/private.h>
+#include <private/misc.h>
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <ctype.h>
+#include <assert.h>
+
+typedef enum hwloc_calc_append_mode_e {
+  HWLOC_CALC_APPEND_ADD,
+  HWLOC_CALC_APPEND_CLR,
+  HWLOC_CALC_APPEND_AND,
+  HWLOC_CALC_APPEND_XOR
+} hwloc_calc_append_mode_t;
+
+static __hwloc_inline int
+hwloc_calc_append_cpuset(hwloc_bitmap_t set, hwloc_const_bitmap_t newset,
+		       hwloc_calc_append_mode_t mode, int verbose)
+{
+  char *s1, *s2;
+  hwloc_bitmap_asprintf(&s1, newset);
+  hwloc_bitmap_asprintf(&s2, set);
+  switch (mode) {
+  case HWLOC_CALC_APPEND_ADD:
+    if (verbose)
+      fprintf(stderr, "adding %s to %s\n",
+          s1, s2);
+    hwloc_bitmap_or(set, set, newset);
+    break;
+  case HWLOC_CALC_APPEND_CLR:
+    if (verbose)
+      fprintf(stderr, "clearing %s from %s\n",
+          s1, s2);
+    hwloc_bitmap_andnot(set, set, newset);
+    break;
+  case HWLOC_CALC_APPEND_AND:
+    if (verbose)
+      fprintf(stderr, "and'ing %s from %s\n",
+          s1, s2);
+    hwloc_bitmap_and(set, set, newset);
+    break;
+  case HWLOC_CALC_APPEND_XOR:
+    if (verbose)
+      fprintf(stderr, "xor'ing %s from %s\n",
+          s1, s2);
+    hwloc_bitmap_xor(set, set, newset);
+    break;
+  default:
+    assert(0);
+  }
+  free(s1);
+  free(s2);
+  return 0;
+}
+
+static __hwloc_inline hwloc_obj_t __hwloc_attribute_pure
+hwloc_calc_get_obj_inside_cpuset_by_depth(hwloc_topology_t topology, hwloc_const_bitmap_t rootset,
+					 unsigned depth, unsigned i, int logical)
+{
+  if (logical) {
+    return hwloc_get_obj_inside_cpuset_by_depth(topology, rootset, depth, i);
+  } else {
+    hwloc_obj_t obj = NULL;
+    while ((obj = hwloc_get_next_obj_inside_cpuset_by_depth(topology, rootset, depth, obj)) != NULL) {
+      if (obj->os_index == i)
+        return obj;
+    }
+    return NULL;
+  }
+}
+
+/* extended version of hwloc_obj_type_of_string()
+ *
+ * matches L2, L3Cache and Group4, and return the corresponding depth attribute if depthattrp isn't NULL.
+ * only looks at the beginning of the string to allow truncated type names.
+ */
+static __hwloc_inline int
+hwloc_obj_type_sscanf(const char *string, hwloc_obj_type_t *typep, int *depthattrp)
+{
+  hwloc_obj_type_t type = (hwloc_obj_type_t) -1;
+  int depthattr = -1;
+
+  /* types without depthattr */
+  if (!strncasecmp(string, "system", 2)) {
+    type = HWLOC_OBJ_SYSTEM;
+  } else if (!hwloc_strncasecmp(string, "machine", 2)) {
+    type = HWLOC_OBJ_MACHINE;
+  } else if (!hwloc_strncasecmp(string, "node", 1)) {
+    type = HWLOC_OBJ_NODE;
+  } else if (!hwloc_strncasecmp(string, "socket", 2)) {
+    type = HWLOC_OBJ_SOCKET;
+  } else if (!hwloc_strncasecmp(string, "core", 2)) {
+    type = HWLOC_OBJ_CORE;
+  } else if (!hwloc_strncasecmp(string, "pu", 2) || !hwloc_strncasecmp(string, "proc", 2) /* backward compat with 0.9 */) {
+    type = HWLOC_OBJ_PU;
+  } else if (!hwloc_strncasecmp(string, "misc", 2)) {
+    type = HWLOC_OBJ_MISC;
+  } else if (!hwloc_strncasecmp(string, "pci", 2)) {
+    type = HWLOC_OBJ_PCI_DEVICE;
+  } else if (!hwloc_strncasecmp(string, "os", 2)) {
+    type = HWLOC_OBJ_OS_DEVICE;
+
+  /* types with depthattr */
+  } else if (!hwloc_strncasecmp(string, "cache", 2)) {
+    type = HWLOC_OBJ_CACHE;
+  } else if ((string[0] == 'l' || string[0] == 'L') && string[1] >= '0' && string[1] <= '9') {
+    type = HWLOC_OBJ_CACHE;
+    depthattr = atoi(string+1);
+  } else if (!hwloc_strncasecmp(string, "group", 1)) {
+    int length;
+    type = HWLOC_OBJ_GROUP;
+    length = strcspn(string, "0123456789");
+    if (string[length] != '\0')
+      depthattr = atoi(string+length);
+  } else
+    return -1;
+
+  *typep = type;
+  if (depthattrp)
+    *depthattrp = depthattr;
+
+  return 0;
+}
+
+static __hwloc_inline int
+hwloc_calc_depth_of_type(hwloc_topology_t topology, hwloc_obj_type_t type, int depthattr, int verbose)
+{
+  int depth;
+  int i;
+
+  if (depthattr == -1) {
+    hwloc_obj_type_t realtype;
+    /* matched a type without depth attribute, try to get the depth from the type if it exists and is unique */
+    if (type == HWLOC_OBJ_PCI_DEVICE || type == HWLOC_OBJ_OS_DEVICE || type == HWLOC_OBJ_BRIDGE)
+      return -1;
+    depth = hwloc_get_type_or_above_depth(topology, type);
+    if (depth == HWLOC_TYPE_DEPTH_MULTIPLE) {
+      fprintf(stderr, "type %s has multiple possible depths\n", hwloc_obj_type_string(type));
+      return -1;
+    } else if (depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+      fprintf(stderr, "type %s isn't available\n", hwloc_obj_type_string(type));
+      return -1;
+    }
+    realtype = hwloc_get_depth_type(topology, depth);
+    if (type != realtype && verbose)
+      fprintf(stderr, "using type %s (depth %d) instead of %s\n",
+	      hwloc_obj_type_string(realtype), depth, hwloc_obj_type_string(type));
+    return depth;
+
+  } else {
+    /* matched a type with a depth attribute, look at the first object of each level to find the depth */
+    assert(type == HWLOC_OBJ_CACHE || type == HWLOC_OBJ_GROUP);
+    for(i=0; ; i++) {
+      hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, i, 0);
+      if (!obj) {
+	fprintf(stderr, "type %s with custom depth %d does not exists\n", hwloc_obj_type_string(type), depthattr);
+	return -1;
+      }
+      if (obj->type == type
+	  && ((type == HWLOC_OBJ_CACHE && (unsigned) depthattr == obj->attr->cache.depth)
+	      || (type == HWLOC_OBJ_GROUP && (unsigned) depthattr == obj->attr->group.depth))) {
+	return i;
+      }
+    }
+  }
+
+  /* cannot come here, we'll exit above first */
+  return -1;
+}
+
+static __hwloc_inline int
+hwloc_calc_parse_depth_prefix(hwloc_topology_t topology, unsigned topodepth,
+			      const char *string, size_t typelen,
+			      hwloc_obj_type_t *typep,
+			      int verbose)
+{
+  char typestring[20+1]; /* large enough to store all type names, even with a depth attribute */
+  hwloc_obj_type_t type;
+  int depthattr;
+  int depth;
+  char *end;
+  int err;
+
+  if (typelen >= sizeof(typestring)) {
+    fprintf(stderr, "invalid type name %s\n", string);
+    return -1;
+  }
+  strncpy(typestring, string, typelen);
+  typestring[typelen] = '\0';
+
+  /* try to match a type name */
+  err = hwloc_obj_type_sscanf(typestring, &type, &depthattr);
+  if (!err) {
+    *typep = type;
+    return hwloc_calc_depth_of_type(topology, type, depthattr, verbose);
+  }
+
+  /* try to match a numeric depth */
+  depth = strtol(string, &end, 0);
+  if (end != &string[typelen]) {
+    fprintf(stderr, "invalid type name %s\n", string);
+    return -1;
+  }
+  if ((unsigned) depth >= topodepth) {
+    fprintf(stderr, "ignoring invalid depth %u\n", depth);
+    return -1;
+  }
+  *typep = (hwloc_obj_type_t) -1;
+  return depth;
+}
+
+static __hwloc_inline int
+hwloc_calc_parse_range(const char *string,
+		       int *firstp, int *amountp, int *stepp, int *wrapp,
+		       const char **dotp)
+{
+  const char *dash, *dot, *colon;
+  int first, amount, step, wrap;
+
+  dot = strchr(string, '.');
+  *dotp = dot;
+
+  if (!isdigit(*string)) {
+    if (!strncmp(string, "all", 3)) {
+      *firstp = 0;
+      *amountp = -1;
+      *stepp = 1;
+      *wrapp = 0;
+      return 0;
+    } else if (!strncmp(string, "odd", 3)) {
+      *firstp = 1;
+      *amountp = -1;
+      *stepp = 2;
+      *wrapp = 0;
+      return 0;
+    } else if (!strncmp(string, "even", 4)) {
+      *firstp = 0;
+      *amountp = -1;
+      *stepp = 2;
+      *wrapp = 0;
+      return 0;
+    } else
+      return -1;
+  }
+
+  first = atoi(string);
+  amount = 1;
+  step = 1;
+  wrap = 0;
+
+  dash = strchr(string, '-');
+  if (dash && (dash < dot || !dot)) {
+    if (*(dash+1) == '\0')
+      amount = -1;
+    else
+      amount = atoi(dash+1)-first+1;
+  } else {
+    colon = strchr(string, ':');
+    if (colon && (colon < dot || !dot)) {
+      amount = atoi(colon+1);
+      wrap = 1;
+    }
+  }
+
+  *firstp = first;
+  *amountp = amount;
+  *stepp = step;
+  *wrapp = wrap;
+  return 0;
+}
+
+static __hwloc_inline int
+hwloc_calc_append_object_range(hwloc_topology_t topology, unsigned topodepth,
+			       hwloc_const_bitmap_t rootset, int depth,
+			       const char *string, /* starts with indexes following the colon */
+			       int logical, hwloc_bitmap_t set, int verbose)
+{
+  hwloc_obj_t obj;
+  unsigned width;
+  const char *dot, *nextsep;
+  int nextdepth;
+  int first, wrap, amount, step;
+  unsigned i,j;
+  int err;
+
+  err = hwloc_calc_parse_range(string,
+			       &first, &amount, &step, &wrap,
+			       &dot);
+  if (err < 0)
+    return -1;
+  assert(amount != -1 || !wrap);
+
+  if (dot) {
+    /* parse the next string before calling ourself recursively */
+    size_t typelen;
+    hwloc_obj_type_t type;
+    const char *nextstring = dot+1;
+    typelen = strspn(nextstring, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
+    if (!typelen || nextstring[typelen] != ':')
+      return -1;
+    nextsep = &nextstring[typelen];
+
+    nextdepth = hwloc_calc_parse_depth_prefix(topology, topodepth,
+					      nextstring, typelen,
+					      &type,
+					      verbose);
+    if (nextdepth < 0)
+      return -1;
+  }
+
+  width = hwloc_get_nbobjs_inside_cpuset_by_depth(topology, rootset, depth);
+  if (amount == -1)
+    amount = (width-first+step-1)/step;
+
+  for(i=first, j=0; j<(unsigned)amount; i+=step, j++) {
+    if (wrap && i>=width)
+      i = 0;
+
+    obj = hwloc_calc_get_obj_inside_cpuset_by_depth(topology, rootset, depth, i, logical);
+    if (verbose || !obj) {
+      char *s;
+      hwloc_bitmap_asprintf(&s, rootset);
+      if (obj)
+	printf("using object #%u depth %u below cpuset %s\n",
+	       i, depth, s);
+      else
+	fprintf(stderr, "object #%u depth %u below cpuset %s does not exist\n",
+		i, depth, s);
+      free(s);
+    }
+    if (obj) {
+      if (dot) {
+	hwloc_calc_append_object_range(topology, topodepth, obj->cpuset, nextdepth, nextsep+1, logical, set, verbose);
+      } else {
+	/* add to the temporary cpuset
+	 * and let the caller add/clear/and/xor for the actual final cpuset depending on cmdline options
+	 */
+        hwloc_calc_append_cpuset(set, obj->cpuset, HWLOC_CALC_APPEND_ADD, verbose);
+      }
+    }
+  }
+
+  return 0;
+}
+
+static __hwloc_inline int
+hwloc_calc_append_iodev(hwloc_bitmap_t set, hwloc_obj_t obj,
+			hwloc_calc_append_mode_t mode, int verbose)
+{
+  while (obj && !obj->cpuset)
+    obj = obj->parent;
+  if (!obj)
+    /* do nothing */
+    return 0;
+  hwloc_calc_append_cpuset(set, obj->cpuset, mode, verbose);
+  return 0;
+}
+
+static __hwloc_inline hwloc_obj_t
+hwloc_calc_find_next_pci_object(hwloc_topology_t topology, int vendor, int device,
+				hwloc_obj_t prev, unsigned index_, int wrap)
+{
+  unsigned i = 0;
+  hwloc_obj_t obj = prev;
+  while (1) {
+    obj = hwloc_get_next_pcidev(topology, obj);
+    if (obj == prev)
+      break; /* don't reuse the same object, even if wrap==1 */
+    if (!obj) {
+      if (!wrap)
+	break;
+      wrap = 0; /* wrap only once per call, to avoid infinite loops */
+      obj = hwloc_get_next_pcidev(topology, NULL);
+      if (!obj)
+	break;
+    }
+    if ((vendor == -1 || (int) obj->attr->pcidev.vendor_id == vendor)
+	&& (device == -1 || (int) obj->attr->pcidev.device_id == device))
+      if (++i == index_)
+        return obj;
+  }
+  return NULL;
+}
+
+static __hwloc_inline int
+hwloc_calc_append_pci_object_range(hwloc_topology_t topology, const char *string, hwloc_bitmap_t set, int verbose)
+{
+  hwloc_obj_t obj;
+  int vendor, device;
+  const char *current, *dot;
+  char *endp;
+  int first, wrap, amount, step;
+  int err, i, oldi, j;
+
+  current = string;
+
+  /* try to match by vendor:device */
+  vendor = strtoul(current, &endp, 16);
+  if (*endp != ':')
+    goto failedvendordevice;
+  if (endp == current)
+    vendor = -1;
+  current = endp+1;
+
+  device = strtoul(current, &endp, 16);
+  if (*endp != ':' && *endp != '\0')
+    goto failedvendordevice;
+  if (endp == current)
+    device = -1;
+
+  if (*endp == '\0') {
+    /* assume it's :0 */
+    first = 0;
+    step = 1;
+    amount = 1;
+    wrap = 0;
+  } else {
+    current = endp+1;
+    err = hwloc_calc_parse_range(current,
+				 &first, &amount, &step, &wrap,
+				 &dot);
+    if (err < 0 || dot)
+      goto failedvendordevice;
+  }
+
+  obj = NULL;
+  for(oldi=-1, i=first, j=0; j<amount || amount == -1; oldi=i, i+=step, j++) {
+    obj = hwloc_calc_find_next_pci_object(topology, vendor, device, obj, i-oldi, wrap);
+    if (obj) {
+      if (verbose)
+	printf("using matching PCI object #%d bus id %04x:%02x:%02x.%01x\n", i,
+	       obj->attr->pcidev.domain, obj->attr->pcidev.bus, obj->attr->pcidev.dev, obj->attr->pcidev.func);
+      hwloc_calc_append_iodev(set, obj, HWLOC_CALC_APPEND_ADD, verbose);
+    } else {
+      if (amount != -1)
+	fprintf(stderr, "no matching PCI object #%d\n", i);
+      break;
+    }
+  }
+  return 0;
+
+ failedvendordevice:
+  /* TODO: more matching variants? vendor/device names? class?
+   * but we don't want some ugly and unmaintainable code
+   */
+
+  fprintf(stderr, "invalid PCI device %s\n", string);
+  return -1;
+}
+
+static __hwloc_inline int
+hwloc_calc_process_arg(hwloc_topology_t topology, unsigned topodepth,
+		       const char *arg, int logical, hwloc_bitmap_t set,
+		       int verbose)
+{
+  hwloc_calc_append_mode_t mode = HWLOC_CALC_APPEND_ADD;
+  size_t typelen;
+  int err;
+
+  if (*arg == '~') {
+    mode = HWLOC_CALC_APPEND_CLR;
+    arg++;
+  } else if (*arg == 'x') {
+    mode = HWLOC_CALC_APPEND_AND;
+    arg++;
+  } else if (*arg == '^') {
+    mode = HWLOC_CALC_APPEND_XOR;
+    arg++;
+  }
+
+  if (!strcmp(arg, "all") || !strcmp(arg, "root"))
+    return hwloc_calc_append_cpuset(set, hwloc_topology_get_topology_cpuset(topology), mode, verbose);
+
+  /* try to match a type/depth followed by a special character */
+  typelen = strspn(arg, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789");
+  if (typelen && (arg[typelen] == ':' || arg[typelen] == '=')) {
+    const char *sep = &arg[typelen];
+    hwloc_obj_type_t type;
+    int depth;
+    hwloc_bitmap_t newset;
+
+    depth = hwloc_calc_parse_depth_prefix(topology, topodepth,
+					  arg, typelen,
+					  &type,
+					  verbose);
+    if (depth < 0) {
+      /* if we didn't find a depth but found a type, handle special cases */
+      hwloc_obj_t obj = NULL;
+      if (*sep == ':' && type == HWLOC_OBJ_PCI_DEVICE) {
+	/* FIXME: change to another syntax? */
+	/* agregate the whole range in newset before applying it to set */
+	newset = hwloc_bitmap_alloc();
+	err = hwloc_calc_append_pci_object_range(topology, sep+1, newset, verbose);
+	if (!err)
+	  err = hwloc_calc_append_cpuset(set, newset, mode, verbose);
+	hwloc_bitmap_free(newset);
+	return err;
+      } else if (*sep == '=' && type == HWLOC_OBJ_PCI_DEVICE) {
+	/* try to match a busid */
+	obj = hwloc_get_pcidev_by_busidstring(topology, sep+1);
+	if (obj)
+	  return hwloc_calc_append_iodev(set, obj, mode, verbose);
+	fprintf(stderr, "invalid PCI device %s\n", sep+1);
+	return -1;
+      } else if (*sep == '=' && type == HWLOC_OBJ_OS_DEVICE) {
+	/* try to match a OS device name */
+	while ((obj = hwloc_get_next_osdev(topology, obj)) != NULL) {
+	  if (!strcmp(obj->name, sep+1))
+	    return hwloc_calc_append_iodev(set, obj, mode, verbose);
+	}
+	fprintf(stderr, "invalid OS device %s\n", sep+1);
+	return -1;
+      } else
+	return -1;
+    }
+
+    /* look at indexes following this type/depth */
+    /* agregate the whole range in newset before applying it to set */
+    newset = hwloc_bitmap_alloc();
+    err = hwloc_calc_append_object_range(topology, topodepth, hwloc_topology_get_complete_cpuset(topology), depth, sep+1, logical, newset, verbose);
+    if (!err)
+      err = hwloc_calc_append_cpuset(set, newset, mode, verbose);
+    hwloc_bitmap_free(newset);
+
+  } else {
+    /* try to match a cpuset */
+    char *tmp = (char*) arg;
+    hwloc_bitmap_t newset;
+    int taskset = ( strchr(tmp, ',') == NULL );
+
+    /* check the infinite prefix */
+    if (strncasecmp(tmp, "0xf...f,", 7+!taskset) == 0) {
+      tmp += 7+!taskset;
+      if (0 == *tmp) {
+        err = -1;
+        goto out;
+      }
+    }
+
+    if (taskset) {
+      /* check that the remaining is 0x followed by a huge hexadecimal number */
+      if (strncasecmp(tmp, "0x", 2) != 0) {
+        err = -1;
+        goto out;
+      }
+      tmp += 2;
+      if (0 == *tmp) {
+        err = -1;
+        goto out;
+      }
+      if (strlen(tmp) != strspn(tmp, "0123456789abcdefABCDEF")) {
+        err = -1;
+        goto out;
+      }
+
+    } else {
+      /* check that the remaining is a comma-separated list of hexadecimal integer with 0x as an optional prefix */
+      while (1) {
+	char *next = strchr(tmp, ',');
+	size_t len;
+	if (strncasecmp(tmp, "0x", 2) == 0) {
+	  tmp += 2;
+	  if (',' == *tmp || 0 == *tmp) {
+	    err = -1;
+	    goto out;
+	  }
+	}
+	len = next ? (size_t) (next-tmp) : strlen(tmp);
+	if (len != strspn(tmp, "0123456789abcdefABCDEF")) {
+	  err = -1;
+	  goto out;
+	}
+	if (!next)
+	  break;
+	tmp = next+1;
+      }
+    }
+
+    newset = hwloc_bitmap_alloc();
+    if (taskset)
+      hwloc_bitmap_taskset_sscanf(newset, arg);
+    else
+      hwloc_bitmap_sscanf(newset, arg);
+    err = hwloc_calc_append_cpuset(set, newset, mode, verbose);
+    hwloc_bitmap_free(newset);
+  }
+
+ out:
+  return err;
+}
+
+static __hwloc_inline void
+hwloc_calc_locations_usage(FILE *where)
+{
+  fprintf (where, "    core:2-3        for the second and third core\n");
+  fprintf (where, "    node:1.pu:2       the third PU of the second NUMA node\n");
+  fprintf (where, "    0x12345678        a CPU set given a bitmask string\n");
+  fprintf (where, "    os=eth0           the operating system device named eth0\n");
+  fprintf (where, "    pci=0000:01:02.0  the PCI device with the given bus ID\n");
+  fprintf (where, "  with prefix ~ to remove, ^ for xor and x for intersection\n");
+  fprintf (where, "  (see Location Specification in hwloc(7) for details).\n");
+}
+
+#endif /* HWLOC_CALC_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distances.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distances.1in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distances.1in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,106 @@
+.\" -*- nroff -*-
+.\" Copyright © 2011 inria.  All rights reserved.
+.\" Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+.\" See COPYING in top-level directory.
+.TH HWLOC-DISTANCES "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+hwloc-distances \- Displays distance matrices
+.
+.\" **************************
+.\"    Synopsis Section
+.\" **************************
+.SH SYNOPSIS
+.B hwloc-distances
+[\fIoptions\fR]
+.
+.\" **************************
+.\"    Options Section
+.\" **************************
+.SH OPTIONS
+.TP
+\fB\-l\fR \fB\-\-logical\fR
+Display hwloc logical indexes (default) instead of physical/OS indexes.
+.TP
+\fB\-p\fR \fB\-\-physical\fR
+Display OS/physical indexes instead of hwloc logical indexes.
+.TP
+\fB\-i\fR <file>, \fB\-\-input\fR <file>
+Read topology from XML file <file> (instead of discovering the
+topology on the local machine).  If <file> is "\-", the standard input
+is used.  XML support must have been compiled in to hwloc for this
+option to be usable.
+.TP
+\fB\-i\fR <directory>, \fB\-\-input\fR <directory>
+Read topology from the chroot specified by <directory> (instead of
+discovering the topology on the local machine).  This option is
+generally only available on Linux.  The chroot was usually created
+by gathering another machine topology with hwloc-gather-topology.
+.TP
+\fB\-i\fR <specification>, \fB\-\-input\fR <specification>
+Simulate a fake hierarchy (instead of discovering the topology on the
+local machine). If <specification> is "node:2 pu:3", the topology will
+contain two NUMA nodes with 3 processing units in each of them.
+The <specification> string must end with a number of PUs.
+.TP
+\fB\-\-if\fR <format>, \fB\-\-input\-format\fR <format>
+Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR
+and \fBsynthetic\fR.
+.TP
+\fB\-\-restrict\fR <cpuset>
+Restrict the topology to the given cpuset.
+.TP
+\fB\-v\fR
+Verbose messages.
+.TP
+\fB\-\-version\fR
+Report version and exit.
+.
+.\" **************************
+.\"    Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+hwloc-distances displays also distance matrices attached to the topology.
+A breadth-first traversal of the topology is performed starting from
+the root to find all distance matrices.
+.
+.PP
+.B NOTE:
+lstopo may also display distance matrices in its verbose textual output.
+However lstopo only prints matrices that cover the entire topology while
+hwloc-distances also displays matrices that ignore part of the topology.
+.
+.\" **************************
+.\"    Examples Section
+.\" **************************
+.SH EXAMPLES
+.PP
+On a quad-socket opteron machine:
+
+    $ hwloc-distances
+    Latency matrix between 4 NUMANodes (depth 2) by logical indexes:
+      index     0     1     2     3
+          0 1.000 1.600 2.200 2.200
+          1 1.600 1.000 2.200 2.200
+          2 2.200 2.200 1.000 1.600
+          3 2.200 2.200 1.600 1.000
+.
+.
+.\" **************************
+.\"    Return value section
+.\" **************************
+.SH RETURN VALUE
+Upon successful execution, hwloc-distances returns 0.
+.
+.PP
+hwloc-distances will return nonzero if any kind of error occurs, such as
+(but not limited to) failure to parse the command line.
+.
+.\" **************************
+.\"    See also section
+.\" **************************
+.SH SEE ALSO
+.
+.ft R
+hwloc(7), lstopo(1)
+.sp

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distances.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distances.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distances.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,159 @@
+/*
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/private.h>
+#include <hwloc.h>
+
+#include "misc.h"
+
+#include <unistd.h>
+
+void usage(const char *callname __hwloc_attribute_unused, FILE *where)
+{
+  fprintf(where, "Usage: hwloc-distances [options] number\n");
+  fprintf (where, "\nFormatting options:\n");
+  fprintf (where, "  -l --logical          Display hwloc logical object indexes\n");
+  fprintf (where, "                        (default for console output)\n");
+  fprintf (where, "  -p --physical         Display physical object indexes\n");
+  fprintf (where, "                        (default for graphical output)\n");
+  fprintf(where, "Input topology options:\n");
+  fprintf(where, "  --restrict <set> Restrict the topology to processors listed in <set>\n");
+  hwloc_utils_input_format_usage(where, 0);
+  fprintf(where, "Miscellaneous options:\n");
+  fprintf(where, "  -v               Show verbose messages\n");
+  fprintf(where, "  --version        Report version and exit\n");
+}
+
+int main(int argc, char *argv[])
+{
+  char *callname;
+  char *input = NULL;
+  enum hwloc_utils_input_format input_format = HWLOC_UTILS_INPUT_DEFAULT;
+  char *restrictstring = NULL;
+  hwloc_topology_t topology;
+  unsigned i, depth;
+  int logical = 1;
+  int verbose = 0;
+  int opt;
+  int err;
+
+  /* enable verbose backends */
+  putenv("HWLOC_XML_VERBOSE=1");
+  putenv("HWLOC_SYNTHETIC_VERBOSE=1");
+
+  hwloc_topology_init(&topology);
+
+  /* skip argv[0], handle options */
+  callname = argv[0];
+  argv++;
+  argc--;
+
+  while (argc >= 1) {
+    if (!strcmp(argv[0], "--")) {
+      argc--;
+      argv++;
+      break;
+    }
+
+    if (*argv[0] == '-') {
+      if (!strcmp(argv[0], "--help")) {
+	usage(callname, stdout);
+	return EXIT_SUCCESS;
+      }
+      if (!strcmp(argv[0], "-v")) {
+	verbose++;
+	goto next;
+      }
+      if (!strcmp (argv[0], "-l") || !strcmp (argv[0], "--logical")) {
+	logical = 1;
+	goto next;
+      }
+      if (!strcmp (argv[0], "-p") || !strcmp (argv[0], "--physical")) {
+	logical = 0;
+	goto next;
+      }
+      if (hwloc_utils_lookup_input_option(argv, argc, &opt,
+					  &input, &input_format,
+					  callname)) {
+	argv += opt;
+	argc -= opt;
+	goto next;
+      }
+      else if (!strcmp (argv[0], "--restrict")) {
+	if (argc <= 2) {
+	  usage (callname, stdout);
+	  exit(EXIT_FAILURE);
+	}
+	restrictstring = strdup(argv[1]);
+	argc--;
+	argv++;
+	goto next;
+      }
+      else if (!strcmp (argv[0], "--version")) {
+          printf("%s %s\n", callname, VERSION);
+          exit(EXIT_SUCCESS);
+      }
+
+      fprintf (stderr, "Unrecognized option: %s\n", argv[0]);
+      usage(callname, stderr);
+      return EXIT_FAILURE;
+    }
+
+  next:
+    argc--;
+    argv++;
+  }
+
+  if (input) {
+    err = hwloc_utils_enable_input_format(topology, input, input_format, verbose, callname);
+    if (err)
+      return err;
+  }
+  hwloc_topology_load(topology);
+
+  if (restrictstring) {
+    hwloc_bitmap_t restrictset = hwloc_bitmap_alloc();
+    hwloc_bitmap_sscanf(restrictset, restrictstring);
+    err = hwloc_topology_restrict (topology, restrictset, 0);
+    if (err) {
+      perror("Restricting the topology");
+      /* fallthrough */
+    }
+    hwloc_bitmap_free(restrictset);
+    free(restrictstring);
+  }
+
+  depth = hwloc_topology_get_depth(topology);
+  for(i=0; i<depth; i++) {
+    unsigned nbobjs, j;
+    nbobjs = hwloc_get_nbobjs_by_depth(topology, i);
+    for(j=0; j<nbobjs; j++) {
+      hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, i, j);
+      unsigned k;
+      char roottypestring[32];
+      hwloc_obj_type_snprintf (roottypestring, sizeof(roottypestring), obj, 0);
+      for(k=0; k<obj->distances_count; k++) {
+	struct hwloc_distances_s *distances = obj->distances[k];
+	if (!distances->latency)
+	  continue;
+	printf("Latency matrix between %u %ss (depth %u) by %s indexes (below %s%s%u):\n",
+	       distances->nbobjs,
+	       hwloc_obj_type_string(hwloc_get_depth_type(topology, i+distances->relative_depth)),
+	       i+distances->relative_depth,
+	       logical ? "logical" : "physical",
+	       roottypestring,
+	       logical ? " L#" :  " P#",
+	       logical ? obj->logical_index : obj->os_index);
+	hwloc_utils_print_distance_matrix(topology, obj, distances->nbobjs, distances->relative_depth, distances->latency, logical);
+      }
+    }
+  }
+
+  hwloc_topology_destroy(topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.1in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.1in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,167 @@
+.\" -*- nroff -*-
+.\" Copyright © 2010 inria.  All rights reserved.
+.\" Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+.\" See COPYING in top-level directory.
+.TH HWLOC-DISTRIB "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+hwloc-distrib \- Build a number of cpu masks distributed on the system
+.
+.\" **************************
+.\"    Synopsis Section
+.\" **************************
+.SH SYNOPSIS
+.B hwloc-distrib
+[\fIoptions\fR] \fI<integer>\fR
+.
+.\" **************************
+.\"    Options Section
+.\" **************************
+.SH OPTIONS
+.TP
+\fB\-\-single\fR
+Singlify each output to a single CPU.
+.TP
+\fB\-\-taskset\fR
+Show CPU set strings in the format recognized by the taskset command-line
+program instead of hwloc-specific CPU set string format.
+.TP
+\fB\-v\fR
+Verbose messages.
+.TP
+\fB\-i\fR <file>, \fB\-\-input\fR <file>
+Read topology from XML file <file> (instead of discovering the
+topology on the local machine).  If <file> is "\-", the standard input
+is used.  XML support must have been compiled in to hwloc for this
+option to be usable.
+.TP
+\fB\-i\fR <directory>, \fB\-\-input\fR <directory>
+Read topology from the chroot specified by <directory> (instead of
+discovering the topology on the local machine).  This option is
+generally only available on Linux.  The chroot was usually created
+by gathering another machine topology with hwloc-gather-topology.
+.TP
+\fB\-i\fR <specification>, \fB\-\-input\fR <specification>
+Simulate a fake hierarchy (instead of discovering the topology on the
+local machine). If <specification> is "node:2 pu:3", the topology will
+contain two NUMA nodes with 3 processing units in each of them.
+The <specification> string must end with a number of PUs.
+.TP
+\fB\-\-if\fR <format>, \fB\-\-input\-format\fR <format>
+Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR
+and \fBsynthetic\fR.
+.TP
+\fB\-\-ignore\fR <type>
+Ignore all objects of type <type> in the topology.
+.TP
+\fB\-\-from\fR <type>
+Distribute starting from objects of the given type instead of from
+the top of the topology hierarchy, i.e. ignoring the structure given by objects
+above.
+.TP
+\fB\-\-top\fR <type>
+Distribute down to objects of the given type instead of down to the bottom of
+the topology hierarchy, i.e. ignoring the structure given by objects below.
+This may be useful if some latitude is desired for the binding, e.g. just bind
+on sockets and not to precise cores or caches.
+.TP
+\fB\-\-at\fR <type>
+Distribute among objects of the given type.  This is equivalent to specifying
+both \fB\-\-from\fR and \fB\-\-to\fR at the same time.
+.TP
+\fB\-\-restrict\fR <cpuset>
+Restrict the topology to the given cpuset.
+.TP
+\fB\-\-version\fR
+Report version and exit.
+.
+.\" **************************
+.\"    Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+hwloc-distrib generates a series of CPU masks corresponding to a distribution of
+a given number of elements over the topology of the machine. The distribution
+is done recursively from the top of the hierarchy (or from the level specified
+by option \fB\-\-from\fR) down to the bottom of the hierarchy (or down to the
+level specified by option \fB\-\-to\fR, or until only one element remains),
+splitting the number of elements at each encountered hierarchy level not ignored
+by options \fB\-\-ignore\fR.
+
+This can e.g. be used to distribute a set of processes hierarchically according
+to the topology of a machine. These masks can be used with hwloc-bind(1).
+.
+.PP
+.B NOTE:
+It is highly recommended that you read the hwloc(7) overview page
+before reading this man page.  Most of the concepts described in
+hwloc(7) directly apply to the hwloc-bind utility.
+.
+.\" **************************
+.\"    Examples Section
+.\" **************************
+.SH EXAMPLES
+.PP
+hwloc-distrib's operation is best described through several examples.
+.
+.PP
+If 4 processes have to be distributed across a machine, their CPU masks
+may be obtained with:
+
+    $ hwloc-distrib 4
+    0x0000000f
+    0x00000f00
+    0x000000f0
+    0x0000f000
+
+To distribute only among the second socket, the topology should be restricted:
+
+    $ hwloc-distrib --restrict $(hwloc-calc socket:1) 4
+    0x00000010
+    0x00000020
+    0x00000040
+    0x00000080
+
+To get a single processor of each CPU masks (prevent migration in case
+of binding)
+
+    $ hwloc-distrib 4 --single
+    0x00000001
+    0x00000100
+    0x00000010
+    0x00001000
+
+Each output line may be converted independently with hwloc-calc:
+
+    $ hwloc-distrib 4 --single | hwloc-calc --taskset
+    0x1
+    0x100
+    0x10
+    0x1000
+
+To convert the output into a list of processors that may be passed to
+dplace -c inside a mpirun command line:
+
+    $ hwloc-distrib 4 --single | xargs hwloc-calc --pulist
+    0,8,4,16
+.
+.
+.\" **************************
+.\"    Return value section
+.\" **************************
+.SH RETURN VALUE
+Upon successful execution, hwloc-distrib displays one or more CPU mask
+strings.  The return value is 0.
+.
+.
+.PP
+hwloc-distrib will return nonzero if any kind of error occurs, such as
+(but not limited to) failure to parse the command line.
+.
+.\" **************************
+.\"    See also section
+.\" **************************
+.SH SEE ALSO
+.
+.ft R
+hwloc(7), hwloc-gather-topology(1)
+.sp

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-distrib.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,260 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/private.h>
+#include <hwloc.h>
+
+#include "misc.h"
+
+#include <unistd.h>
+
+void usage(const char *callname __hwloc_attribute_unused, FILE *where)
+{
+  fprintf(where, "Usage: hwloc-distrib [options] number\n");
+  fprintf(where, "Distribution options:\n");
+  fprintf(where, "  --ignore <type>  Ignore objects of the given type\n");
+  fprintf(where, "  --from <type>    Distribute starting from objects of the given type\n");
+  fprintf(where, "  --to <type>      Distribute down to objects of the given type\n");
+  fprintf(where, "  --at <type>      Distribute among objects of the given type\n");
+  fprintf(where, "Input topology options:\n");
+  fprintf(where, "  --restrict <set> Restrict the topology to processors listed in <set>\n");
+  hwloc_utils_input_format_usage(where, 0);
+  fprintf(where, "Formatting options:\n");
+  fprintf(where, "  --single         Singlify each output to a single CPU\n");
+  fprintf(where, "  --taskset        Show taskset-specific cpuset strings\n");
+  fprintf(where, "Miscellaneous options:\n");
+  fprintf(where, "  -v               Show verbose messages\n");
+  fprintf(where, "  --version        Report version and exit\n");
+}
+
+int main(int argc, char *argv[])
+{
+  long n = -1;
+  char *callname;
+  char *input = NULL;
+  enum hwloc_utils_input_format input_format = HWLOC_UTILS_INPUT_DEFAULT;
+  int taskset = 0;
+  int singlify = 0;
+  int verbose = 0;
+  char *restrictstring = NULL;
+  hwloc_obj_type_t from_type = (hwloc_obj_type_t) -1, to_type = (hwloc_obj_type_t) -1;
+  char **orig_argv = argv;
+  hwloc_topology_t topology;
+  int opt;
+  int err;
+
+  /* enable verbose backends */
+  putenv("HWLOC_XML_VERBOSE=1");
+  putenv("HWLOC_SYNTHETIC_VERBOSE=1");
+
+  hwloc_topology_init(&topology);
+
+  /* skip argv[0], handle options */
+  callname = argv[0];
+  argv++;
+  argc--;
+
+  while (argc >= 1) {
+    if (!strcmp(argv[0], "--")) {
+      argc--;
+      argv++;
+      break;
+    }
+
+    if (*argv[0] == '-') {
+      if (!strcmp(argv[0], "--single")) {
+	singlify = 1;
+	goto next;
+      }
+      if (!strcmp(argv[0], "--taskset")) {
+	taskset = 1;
+	goto next;
+      }
+      if (!strcmp(argv[0], "-v")) {
+	verbose = 1;
+	goto next;
+      }
+      if (!strcmp(argv[0], "--help")) {
+	usage(callname, stdout);
+	return EXIT_SUCCESS;
+      }
+      if (hwloc_utils_lookup_input_option(argv, argc, &opt,
+					  &input, &input_format,
+					  callname)) {
+	argv += opt;
+	argc -= opt;
+	goto next;
+      }
+      else if (!strcmp (argv[0], "--ignore")) {
+	if (argc <= 2) {
+	  usage(callname, stdout);
+	  exit(EXIT_FAILURE);
+	}
+	hwloc_topology_ignore_type(topology, hwloc_obj_type_of_string(argv[1]));
+	argc--;
+	argv++;
+	goto next;
+      }
+      else if (!strcmp (argv[0], "--from")) {
+	if (argc <= 2) {
+	  usage(callname, stdout);
+	  exit(EXIT_FAILURE);
+	}
+	from_type = hwloc_obj_type_of_string(argv[1]);
+	argc--;
+	argv++;
+	goto next;
+      }
+      else if (!strcmp (argv[0], "--to")) {
+	if (argc <= 2) {
+	  usage(callname, stdout);
+	  exit(EXIT_FAILURE);
+	}
+	to_type = hwloc_obj_type_of_string(argv[1]);
+	argc--;
+	argv++;
+	goto next;
+      }
+      else if (!strcmp (argv[0], "--at")) {
+	if (argc <= 2) {
+	  usage(callname, stdout);
+	  exit(EXIT_FAILURE);
+	}
+	from_type = to_type = hwloc_obj_type_of_string(argv[1]);
+	argc--;
+	argv++;
+	goto next;
+      }
+      else if (!strcmp (argv[0], "--restrict")) {
+	if (argc <= 2) {
+	  usage (callname, stdout);
+	  exit(EXIT_FAILURE);
+	}
+	restrictstring = strdup(argv[1]);
+	argc--;
+	argv++;
+	goto next;
+      }
+      else if (!strcmp (argv[0], "--version")) {
+          printf("%s %s\n", orig_argv[0], VERSION);
+          exit(EXIT_SUCCESS);
+      }
+
+      fprintf (stderr, "Unrecognized option: %s\n", argv[0]);
+      usage(callname, stderr);
+      return EXIT_FAILURE;
+    }
+
+    if (n != -1) {
+      fprintf(stderr,"duplicate number\n");
+      usage(callname, stderr);
+      return EXIT_FAILURE;
+    }
+    n = atol(argv[0]);
+
+  next:
+    argc--;
+    argv++;
+  }
+
+  if (n == -1) {
+    fprintf(stderr,"need a number\n");
+    usage(callname, stderr);
+    return EXIT_FAILURE;
+  }
+
+  if (verbose)
+    fprintf(stderr, "distributing %ld\n", n);
+
+  {
+    unsigned i;
+    int from_depth, to_depth;
+    unsigned chunks;
+    hwloc_bitmap_t *cpuset;
+
+    cpuset = malloc(n * sizeof(hwloc_bitmap_t));
+
+    if (input) {
+      err = hwloc_utils_enable_input_format(topology, input, input_format, verbose, callname);
+      if (err)
+	return err;
+    }
+    hwloc_topology_load(topology);
+
+    if (restrictstring) {
+      hwloc_bitmap_t restrictset = hwloc_bitmap_alloc();
+      hwloc_bitmap_sscanf(restrictset, restrictstring);
+      err = hwloc_topology_restrict (topology, restrictset, 0);
+      if (err) {
+	perror("Restricting the topology");
+	/* fallthrough */
+      }
+      hwloc_bitmap_free(restrictset);
+      free(restrictstring);
+    }
+
+    if (from_type == (hwloc_obj_type_t) -1) {
+      from_depth = 0;
+    } else {
+      from_depth = hwloc_get_type_depth(topology, from_type);
+      if (from_depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+	fprintf(stderr, "unavailable type %s to distribute among, ignoring\n", hwloc_obj_type_string(from_type));
+	from_depth = 0;
+      } else if (from_depth == HWLOC_TYPE_DEPTH_MULTIPLE) {
+	fprintf(stderr, "multiple depth for type %s to distribute among, ignoring\n", hwloc_obj_type_string(from_type));
+	from_depth = 0;
+      }
+    }
+
+    if (to_type == (hwloc_obj_type_t) -1) {
+      to_depth = INT_MAX;
+    } else {
+      to_depth = hwloc_get_type_depth(topology, to_type);
+      if (to_depth == HWLOC_TYPE_DEPTH_UNKNOWN) {
+	fprintf(stderr, "unavailable type %s to distribute among, ignoring\n", hwloc_obj_type_string(to_type));
+	to_depth = INT_MAX;
+      } else if (to_depth == HWLOC_TYPE_DEPTH_MULTIPLE) {
+	fprintf(stderr, "multiple depth for type %s to distribute among, ignoring\n", hwloc_obj_type_string(to_type));
+	to_depth = INT_MAX;
+      }
+    }
+
+    chunks =  hwloc_get_nbobjs_by_depth(topology, from_depth);
+    {
+      hwloc_obj_t *roots;
+
+      roots = malloc(chunks * sizeof(hwloc_obj_t));
+
+      for (i = 0; i < chunks; i++)
+        roots[i] = hwloc_get_obj_by_depth(topology, from_depth, i);
+
+      hwloc_distributev(topology, roots, chunks, cpuset, n, to_depth);
+
+      for (i = 0; (long) i < n; i++) {
+	char *str = NULL;
+	if (singlify)
+	  hwloc_bitmap_singlify(cpuset[i]);
+	if (taskset)
+	  hwloc_bitmap_taskset_asprintf(&str, cpuset[i]);
+	else
+	  hwloc_bitmap_asprintf(&str, cpuset[i]);
+	printf("%s\n", str);
+	free(str);
+	hwloc_bitmap_free(cpuset[i]);
+      }
+
+      free(roots);
+    }
+
+   free(cpuset);
+  }
+
+  hwloc_topology_destroy(topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-gather-topology.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-gather-topology.1in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-gather-topology.1in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,124 @@
+.\" -*- nroff -*-
+.\" Copyright © 2010 Jirka Hladky
+.\" Copyright © 2010-2011 inria.  All rights reserved.
+.\" See COPYING in top-level directory.
+.TH HWLOC-GATHER-TOPOLOGY "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+hwloc-gather-topology \- Saves the relevant Linux topology files
+and the lstopo output for later (possibly offline) usage.
+.
+.\" **************************
+.\"    Synopsis Section
+.\" **************************
+.SH SYNOPSIS
+.
+.B hwloc-gather-topology [\fIoptions\fR] \fI<path>\fR
+.
+.\" **************************
+.\"    Options Section
+.\" **************************
+.SH OPTIONS
+.
+\fB\-h\fR \fB\-\-help\fR
+display help message and exit
+.
+.\" **************************
+.\"    Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+\fBhwloc-gather-topology\fR saves all the relevant topology files into an
+archive (\fB<path>.tar.bz2\fR) and the lstopo output (\fB<path>.output\fR).
+The utility for example stores the \fB/proc/cpuinfo\fR file and the entire
+\fB/sys/devices/system/node/\fR directory tree.
+.
+.PP
+These files can be used later to explore the machine topology offline.
+Once the tarball has been extracted, it may for instance be given to
+some hwloc command-line utilities through their \fB\-\-input\fR option.
+It is also possible to override the default topology that the hwloc
+library will read by setting the extracted path in the \fBHWLOC_FSROOT\fR
+environment variable.
+.
+.PP
+Both archive and lstopo output may also be submitted to hwloc developers
+to debug issues remotely.
+.
+.PP
+\fBhwloc-gather-topology\fR is a Linux specific tool, it is not installed
+on other operating systems.
+.
+.PP
+.B NOTE:
+It is highly recommended that you read the hwloc(7) overview page
+before reading this man page.
+.
+.\" **************************
+.\"    Examples Section
+.\" **************************
+.SH EXAMPLES
+.PP
+To store topology information to be used later (possibly on
+a different host) please run:
+
+	hwloc-gather-topology /tmp/myhost
+
+It will store all relevant topology files in the \fB/tmp/myhost.tar.bz2\fR
+archive and the lstopo output in the \fB/tmp/myhost.output\fR file.
+.
+These files can be transferred on another host for later/offline
+analysis and/or as the input to various hwloc utilities.
+.PP
+To use these data with hwloc utilities you have to unpack
+\fBmyhost.tar.bz2\fR archive first:
+
+	tar jxvf /tmp/myhost.tar.bz2
+
+A new directory named \fBmyhost\fR now contains all topology files.
+Then you ask various hwloc utilities to use this topology instead
+of the one of the real machine by passing \fB\-\-input myhost\fR.
+To display the topology just run:
+
+	lstopo --input ./myhost
+
+It is not necessary that the topology is extracted in the current
+directory, absolute or relative paths are also supported:
+
+	lstopo --input /path/to/remote/host/extracted/topology/
+
+To see how hwloc would distribute 8 parallel jobs on the original host:
+
+	hwloc-distrib --input myhost --single 8
+
+To get the corresponding physical indexes in the previous command:
+
+	hwloc-calc --input myhost --po --li --proclist $(hwloc-distrib --input myhost --single 8)
+
+Any program may actually override the default topology with a given
+archived one even if it does not have a \fB\-\-input\fR option.
+The \fBHWLOC_FSROOT\fR environment variable should be used to do so:
+
+	HWLOC_FSROOT=myhost hwloc-calc --po --li --proclist $(hwloc-distrib --single 8)
+
+All these commands will produce the same output as if executed
+directly on the host on which the topology information was
+originally gathered by the \fBhwloc-gather-topology\fR script.
+.
+.\" **************************
+.\"    Return value section
+.\" **************************
+.SH RETURN VALUE
+Upon successful execution, \fBhwloc-gather-topology\fR will exit with the code 0. 
+.
+.PP
+\fBhwloc-gather-topology\fR will return nonzero exit status if any kind of error occurs,
+such as (but not limited to) failure to create the archive or output file.
+.
+.\" **************************
+.\"    See also section
+.\" **************************
+.SH SEE ALSO
+.
+.ft R
+hwloc(7), lstopo(1), hwloc-calc(1), hwloc-distrib(1)
+.sp

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.1in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.1in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,72 @@
+.\" -*- nroff -*-
+.\" Copyright © 2010 inria.  All rights reserved.
+.\" Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+.\" See COPYING in top-level directory.
+.TH HWLOC-PS "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+hwloc-ps \- List currently-running processes that are bound.
+.
+.\" **************************
+.\"    Synopsis Section
+.\" **************************
+.SH SYNOPSIS
+.
+.B hwloc-ps
+[\fIoptions\fR]
+.
+.\" **************************
+.\"    Options Section
+.\" **************************
+.SH OPTIONS
+.
+.TP 10
+\fB\-a\fR
+list all processes, even those that are not bound to any
+specific part of the machine.
+.TP
+\fB\-p\fR \fB\-\-physical\fR
+report OS/physical indexes instead of logical indexes
+.TP
+\fB\-l\fR \fB\-\-logical\fR
+report logical indexes instead of physical/OS indexes (default)
+.TP
+\fB\-c\fR \fB\-\-cpuset\fR
+show process bindings as cpusets instead of objects.
+.TP
+\fB\-\-whole\-system\fR
+Do not consider administration limitations.
+.
+.\" **************************
+.\"    Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+By default, hwloc-ps lists only those currently-running processes that
+are bound; it displays their their identifier, command-line and
+binding.  The binding may be reported as objects or cpusets.
+.
+By default, process bindings are restricted to the currently available
+topology. If some processes are bound to processors that are not available
+to the current process, they are ignored unless \fB\-\-whole\-system\fR
+is given.
+.
+The output is a plain list. If you wish to annotate the hierarchical
+topology with processes so as to see how they are actual distributed
+on the machine, you might want to use lstopo --ps instead (which also
+only shows processes that are bound).
+.
+.PP
+The
+.I -a
+switch can be used to show
+.I all
+processes, if desired.
+.
+.\" **************************
+.\"    See also section
+.\" **************************
+.SH SEE ALSO
+.
+.ft R
+hwloc(7), lstopo(1), hwloc-calc(1), hwloc-distrib(1)
+.sp

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc-ps.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,179 @@
+/*
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/autogen/config.h>
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <dirent.h>
+#include <fcntl.h>
+
+static void usage(char *name, FILE *where)
+{
+  fprintf (where, "Usage: %s [ options ] ...\n", name);
+  fprintf (where, "Options:\n");
+  fprintf (where, "  -a             Show all processes, including those that are not bound\n");
+  fprintf (where, "  -l --logical   Use logical object indexes (default)\n");
+  fprintf (where, "  -p --physical  Use physical object indexes\n");
+  fprintf (where, "  -c --cpuset    Show cpuset instead of objects\n");
+  fprintf (where, "  --whole-system Do not consider administration limitations\n");
+}
+
+int main(int argc, char *argv[])
+{
+  const struct hwloc_topology_support *support;
+  hwloc_topology_t topology;
+  hwloc_obj_t root;
+  hwloc_bitmap_t cpuset;
+  unsigned long flags = 0;
+  int logical = 1;
+  int show_cpuset = 0;
+  DIR *dir;
+  struct dirent *dirent;
+  int show_all = 0;
+  char *callname;
+  int err;
+  int opt;
+
+  callname = strrchr(argv[0], '/');
+  if (!callname)
+    callname = argv[0];
+  else
+    callname++;
+
+  while (argc >= 2) {
+    opt = 0;
+    if (!strcmp(argv[1], "-a"))
+      show_all = 1;
+    else if (!strcmp(argv[1], "-l") || !strcmp(argv[1], "--logical")) {
+      logical = 1;
+    } else if (!strcmp(argv[1], "-p") || !strcmp(argv[1], "--physical")) {
+      logical = 0;
+    } else if (!strcmp(argv[1], "-c") || !strcmp(argv[1], "--cpuset")) {
+      show_cpuset = 1;
+    } else if (!strcmp (argv[1], "--whole-system")) {
+      flags |= HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM;
+    } else {
+      fprintf (stderr, "Unrecognized option: %s\n", argv[1]);
+      usage (callname, stderr);
+      exit(EXIT_FAILURE);
+    }
+    argc -= opt+1;
+    argv += opt+1;
+  }
+
+  err = hwloc_topology_init(&topology);
+  if (err)
+    goto out;
+
+  hwloc_topology_set_flags(topology, flags);
+
+  err = hwloc_topology_load(topology);
+  if (err)
+    goto out_with_topology;
+
+  root = hwloc_get_root_obj(topology);
+
+  support = hwloc_topology_get_support(topology);
+
+  if (!support->cpubind->get_thisproc_cpubind)
+    goto out_with_topology;
+
+  dir  = opendir("/proc");
+  if (!dir)
+    goto out_with_topology;
+
+  cpuset = hwloc_bitmap_alloc();
+  if (!cpuset)
+    goto out_with_dir;
+
+  while ((dirent = readdir(dir))) {
+    long pid;
+    char *end;
+    char name[64] = "";
+    char *cpuset_str = NULL;
+
+    pid = strtol(dirent->d_name, &end, 10);
+    if (*end)
+      /* Not a number */
+      continue;
+
+#ifdef HWLOC_LINUX_SYS
+    {
+      unsigned pathlen = 6 + strlen(dirent->d_name) + 1 + 7 + 1;
+      char *path;
+      int file;
+      ssize_t n;
+
+      path = malloc(pathlen);
+      snprintf(path, pathlen, "/proc/%s/cmdline", dirent->d_name);
+      file = open(path, O_RDONLY);
+      free(path);
+
+      if (file >= 0) {
+        n = read(file, name, sizeof(name) - 1);
+        close(file);
+
+        if (n <= 0)
+          /* Ignore kernel threads and errors */
+          continue;
+
+        name[n] = 0;
+      }
+    }
+#endif /* HWLOC_LINUX_SYS */
+
+    if (hwloc_get_proc_cpubind(topology, pid, cpuset, 0))
+      continue;
+
+    hwloc_bitmap_and(cpuset, cpuset, hwloc_topology_get_topology_cpuset(topology));
+    if (hwloc_bitmap_iszero(cpuset))
+      continue;
+
+    if (hwloc_bitmap_isequal(cpuset, root->cpuset) && !show_all)
+      continue;
+
+    printf("%ld\t", pid);
+
+    if (show_cpuset) {
+      hwloc_bitmap_asprintf(&cpuset_str, cpuset);
+      printf("%s", cpuset_str);
+    } else {
+      hwloc_bitmap_t remaining = hwloc_bitmap_dup(cpuset);
+      int first = 1;
+      while (!hwloc_bitmap_iszero(remaining)) {
+        char type[64];
+        unsigned idx;
+        hwloc_obj_t obj = hwloc_get_first_largest_obj_inside_cpuset(topology, remaining);
+        hwloc_obj_type_snprintf(type, sizeof(type), obj, 1);
+        idx = logical ? obj->logical_index : obj->os_index;
+        if (idx == (unsigned) -1)
+          printf("%s%s", first ? "" : " ", type);
+        else
+          printf("%s%s:%u", first ? "" : " ", type, idx);
+        hwloc_bitmap_andnot(remaining, remaining, obj->cpuset);
+        first = 0;
+      }
+      hwloc_bitmap_free(remaining);
+    }
+
+    printf("\t\t%s\n", name);
+    free(cpuset_str);
+  }
+
+  err = 0;
+  hwloc_bitmap_free(cpuset);
+
+ out_with_dir:
+  closedir(dir);
+ out_with_topology:
+  hwloc_topology_destroy(topology);
+ out:
+  return err;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc.7in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc.7in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/hwloc.7in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,320 @@
+.\" -*- nroff -*-
+.\" Copyright © 2010 inria.  All rights reserved.
+.\" Copyright © 2010 Université of Bordeaux
+.\" Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+.\" See COPYING in top-level directory.
+.TH HWLOC "7" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+hwloc - General information about hwloc ("hardware locality").
+.
+.\" **************************
+.\"    Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+hwloc provides command line tools and a C API to obtain the
+hierarchical map of key computing elements, such as: NUMA memory
+nodes, shared caches, processor sockets, processor cores, and
+processor "threads".  hwloc also gathers various attributes such as
+cache and memory information, and is portable across a variety of
+different operating systems and platforms.
+.
+.
+.SS Definitions
+Hwloc has some specific definitions for terms that are used in this
+man page and other hwloc documentation.
+.
+.TP 5
+.B Hwloc CPU set:
+A set of processors included in an hwloc object, expressed as a bitmask
+indexed by the physical numbers of the CPUs (as announced by the OS).
+The hwloc definition
+of "CPU set" does not carry any the same connotations as Linux's "CPU
+set" (e.g., process affinity, etc.).
+.
+.TP
+.B Linux CPU set:
+See http://www.mjmwired.net/kernel/Documentation/cpusets.txt for a
+discussion of Linux CPU sets.  A
+super-short-ignoring-many-details description (taken from that page)
+is:
+.
+.\" Force a paragraph break, but keep the indentation
+.TP
+\ 
+.
+ "Cpusets provide a mechanism for assigning a set of CPUs and Memory
+Nodes to a set of tasks."
+.
+.TP
+.B Linux Cgroup:
+See http://www.mjmwired.net/kernel/Documentation/cgroups.txt for a
+discussion of Linux control groups.  A
+super-short-ignoring-many-details description (taken from that page)
+is:
+.
+.\" Force a paragraph break, but keep the indentation
+.TP
+\ 
+ "Control Groups provide a mechanism for aggregating/partitioning sets
+of tasks, and all their future children, into hierarchical groups
+with specialized behaviour."
+.
+.PP
+To be clear, hwloc supports all of the above concepts.  It is simply
+worth noting that they are 3 different things.
+.
+.SS Location Specification
+.
+Locations refer to specific regions within a topology.  Before reading
+the rest of this man page, it may be useful to read lstopo(1) and/or
+run lstopo on your machine to see the reported topology tree.  Seeing
+and understanding a topology tree will definitely help in
+understanding the concepts that are discussed below.
+.
+.PP
+Locations can be specified in multiple ways:
+.
+.TP 10
+.B Tuples:
+Tuples of hwloc "objects" and associated indexes can be specified in
+the form
+.IR object:index .
+Hwloc objects represent types of mapped items (e.g., sockets, cores,
+etc.) in a topology tree; indexes are non-negative integers that
+specify a unique physical object in a topology tree.  Both concepts
+are described in detail, below.  
+.\" Force a paragraph break, but keep the indentation.
+.TP
+\ 
+Chaining multiple tuples together in the more general form
+.I object1:index[.object2:index2[...]]
+is permissable.  While the first tuple's object may appear anywhere in
+the topology, the Nth tuple's object must have a shallower topology
+depth than the (N+1)th tuple's object.  Put simply: as you move right
+in a tuple chain, objects must go deeper in the topology tree.
+When using logical indexes (which is the default),
+indexes specified in chained tuples are relative to the scope of the
+parent object.  For example, "socket:0.core:1" refers to the second
+core in the first socket.
+When using OS/physical indexes, the first object matching the given
+index is used.
+.
+.TP
+.B Hex:
+Locations can also be specified as hexidecimal bitmasks prefixed 
+.
+with "0x".  Commas must be used to separate the hex digits into blocks
+of 8, such as "0xffc0140,0x00020110".
+.
+Leading zeros in each block do not need to be specified.  
+.
+For example, "0xffc0140,0x20110" is equivalent to the prior example,
+and "0x0000000f" is exactly equivalent to "0xf".  Intermediate blocks
+of 8 digits that are all zeoro can be left empty; "0xff0,,0x13" is
+equivalent to "0xff0,0x00000000,0x13".
+.
+If the location is prefixed with the special string "0xf...f", then
+all unspecified bits are set (as if the set were infinite). For
+example, "0xf...f,0x1" sets both the first bit and all bits starting
+with the 33rd.  The string "0xf...f" -- with no other specified values
+-- sets all bits.
+.
+.TP
+.B I/O devices:
+Locations may also be a PCI or OS object.
+The corresponding value is the set of CPUs that are close to the
+physical device.
+For example, "pci=02:03.1" is equivalent to the set of processors
+that are close to the hostbridge above PCI device with bus ID "02:03.1".
+"os=eth0" is equivalent to all processors close to the network
+interface whose software name is "eth0".
+.
+.PP
+Multiple locations can be specified on the hwloc-bind command line
+(delimited by whitespace); the first token of the execution command is
+assumed to either follow "--" (if specified) or the first token that
+is unrecognized as a location.
+.
+.PP
+By default, if multiple locations are specified, they are added,
+meaning that the binding will be wider in the sense that the process
+may run on more objects.  
+.
+.PP
+If prefixed with "~", the given location
+will be cleared instead of added to the current list of locations.  If
+prefixed with "x", the given location will be and'ed instead of added
+to the current list.  If prefixed with "^", the given location will be
+xor'ed.
+.
+.PP
+"all" and "root" are a special location consisting in the entire
+current topology.
+.
+More complex operations may be performed by using
+.IR hwloc-calc
+to compute intermediate values.
+.
+.SS Hwloc Objects
+.
+.PP
+Objects can be any of the following strings
+.
+(listed from "biggest" to "smallest"):
+.
+.TP 10
+.B machine
+A set of processors and memory.
+.
+.TP
+.B node
+A NUMA node; a set of processors around memory which the processors
+can directly access.
+.
+.TP
+.B socket
+Typically a physical package or chip, it is a grouping of one or more
+processors.
+.
+.TP
+.B core
+A single, physical processing unit which may still contain multiple
+logical processors, such as hardware threads.
+.
+.TP
+.B pu
+Short for 
+.I processor unit
+(not 
+.IR process !).  
+The smallest physical execution unit that hwloc recognizes.  For
+example, there may be multiple PUs on a core (e.g.,
+hardware threads).
+.PP
+The additional
+.B system
+type can be used when several machines form an overall single system image
+(SSI), such as Kerrighed.
+.
+.PP
+Finally, note that an object can be denoted by its numeric "depth" in
+the topology graph.
+.
+.SS Hwloc Indexes
+Indexes are integer values that uniquely specify a given object of a
+specific type.  Indexes can be expressed either as
+.I logical
+values or
+.I physical 
+values.  Most hwloc utilities accept logical indexes by default.
+Passing
+.B --physical
+switches to physical/OS indexes.
+Both logical and physical indexes are described on this man page.
+.
+.PP
+.I Logical
+indexes are relative to the object order in the output from the
+lstopo command.  They always start with 0 and increment by 1 for each
+successive object.
+.
+.PP
+.I Physical 
+indexes are how the operating system refers to objects.  Note that
+while physical indexes are non-negative integer values, the hardware
+and/or operating system may choose arbitrary values -- they may not
+start with 0, and successive objects may not have consecutive values.
+.
+.PP
+For example, if the first few lines of lstopo -p output are the
+following:
+.
+
+  Machine (47GB)
+    NUMANode P#0 (24GB) + Socket P#0 + L3 (12MB)
+      L2 (256KB) + L1 (32KB) + Core P#0 + PU P#0
+      L2 (256KB) + L1 (32KB) + Core P#1 + PU P#0
+      L2 (256KB) + L1 (32KB) + Core P#2 + PU P#0
+      L2 (256KB) + L1 (32KB) + Core P#8 + PU P#0
+      L2 (256KB) + L1 (32KB) + Core P#9 + PU P#0
+      L2 (256KB) + L1 (32KB) + Core P#10 + PU P#0
+    NUMANode P#1 (24GB) + Socket P#1 + L3 (12MB)
+      L2 (256KB) + L1 (32KB) + Core P#0 + PU P#0
+      L2 (256KB) + L1 (32KB) + Core P#1 + PU P#0
+      L2 (256KB) + L1 (32KB) + Core P#2 + PU P#0
+      L2 (256KB) + L1 (32KB) + Core P#8 + PU P#0
+      L2 (256KB) + L1 (32KB) + Core P#9 + PU P#0
+      L2 (256KB) + L1 (32KB) + Core P#10 + PU P#0
+
+In this example, the first core on the second socket is logically
+number 6 (i.e., logically the 7th core, starting from 0).  Its
+physical index is 0, but note that another core
+.I also 
+has a physical index of 0.  Hence, physical indexes may only be
+relevant within the scope of their parent (or set of ancestors).
+In this example, to uniquely identify logical core 6 with
+physical indexes, you must specify (at a minimum) both a socket and a
+core: socket 1, core 0.
+.PP
+Index values, regardless of whether they are logical or physical, can
+be expressed in several different forms (where X, Y, and N are
+positive integers):
+.
+.TP 10
+.B X
+The object with index value X.
+.
+.TP
+.B X-Y
+All the objects with index values >= X and <= Y.
+.
+.TP
+.B X-
+All the objects with index values >= X.
+.
+.TP
+.B X:N
+N objects starting with index X, possibly wrapping around the end of
+the level.
+.
+.TP
+.B all
+A special index value indicating all valid index values.
+.
+.TP
+.B odd
+A special index value indicating all valid odd index values.
+.
+.TP
+.B even
+A special index value indicating all valid even index values.
+.
+.PP
+.IR REMEMBER :
+hwloc's command line tools accept
+.I logical 
+indexes for location values by default.
+Use
+.BR --physical " and " --logical
+to switch from one mode to another.
+.
+.\" **************************
+.\"    See also section
+.\" **************************
+.SH SEE ALSO
+.
+Hwloc's command line tool documentation: lstopo(1), hwloc-bind(1),
+hwloc-calc(1), hwloc-distrib(1), hwloc-ps(1).
+.
+.PP
+Hwloc has many C API functions, each of which have their own man page.
+Some top-level man pages are also provided, grouping similar functions
+together.  A few good places to start might include:
+hwlocality_objects(3), hwlocality_types(3), hwlocality_creation(3),
+hwlocality_cpuset(3), hwlocality_information(3), and
+hwlocality_binding(3).
+.
+.PP
+For a listing of all available hwloc man pages, look at all "hwloc*"
+files in the man1 and man3 directories.

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-cairo.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-cairo.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-cairo.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,529 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/autogen/config.h>
+
+#ifdef HWLOC_HAVE_CAIRO
+#include <cairo.h>
+
+#if CAIRO_HAS_PDF_SURFACE
+#include <cairo-pdf.h>
+#endif /* CAIRO_HAS_PDF_SURFACE */
+
+#if CAIRO_HAS_PS_SURFACE
+#include <cairo-ps.h>
+#endif /* CAIRO_HAS_PS_SURFACE */
+
+#if CAIRO_HAS_SVG_SURFACE
+#include <cairo-svg.h>
+#endif /* CAIRO_HAS_SVG_SURFACE */
+
+#ifndef HWLOC_HAVE_X11
+/* In case X11 headers aren't availble, forcefully disable Cairo/Xlib.  */
+# undef CAIRO_HAS_XLIB_SURFACE
+# define CAIRO_HAS_XLIB_SURFACE 0
+#endif
+
+#if CAIRO_HAS_XLIB_SURFACE
+#include <cairo-xlib.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/keysym.h>
+#include <X11/cursorfont.h>
+/* Avoid Xwindow's definition conflict with Windows' use for fields names.  */
+#undef Status
+#endif /* CAIRO_HAS_XLIB_SURFACE */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <limits.h>
+
+#include "lstopo.h"
+
+#if (CAIRO_HAS_XLIB_SURFACE + CAIRO_HAS_PNG_FUNCTIONS + CAIRO_HAS_PDF_SURFACE + CAIRO_HAS_PS_SURFACE + CAIRO_HAS_SVG_SURFACE)
+/* Cairo methods */
+static void
+topo_cairo_box(void *output, int r, int g, int b, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned width, unsigned y, unsigned height)
+{
+  cairo_t *c = output;
+  cairo_rectangle(c, x, y, width, height);
+  cairo_set_source_rgb(c, (float)r / 255, (float) g / 255, (float) b / 255);
+  cairo_fill(c);
+
+  cairo_rectangle(c, x, y, width, height);
+  cairo_set_source_rgb(c, 0, 0, 0);
+  cairo_set_line_width(c, 1);
+  cairo_stroke(c);
+}
+
+static void
+topo_cairo_line(void *output, int r, int g, int b, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned y1, unsigned x2, unsigned y2)
+{
+  cairo_t *c = output;
+  cairo_move_to(c, x1, y1);
+  cairo_set_source_rgb(c, (float) r / 255, (float) g / 255, (float) b / 255);
+  cairo_set_line_width(c, 1);
+  cairo_line_to(c, x2, y2);
+  cairo_stroke(c);
+}
+
+static void
+topo_cairo_text(void *output, int r, int g, int b, int size, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned y, const char *text)
+{
+  cairo_t *c = output;
+  cairo_move_to(c, x, y + size);
+  cairo_set_font_size(c, size);
+  cairo_set_source_rgb(c, (float)r / 255, (float) g / 255, (float) b / 255);
+  cairo_show_text(c, text);
+}
+
+#if (CAIRO_HAS_PNG_FUNCTIONS + CAIRO_HAS_PDF_SURFACE + CAIRO_HAS_PS_SURFACE + CAIRO_HAS_SVG_SURFACE)
+static cairo_status_t
+topo_cairo_write(void *closure, const unsigned char *data, unsigned int length)
+{
+  if (fwrite(data, length, 1, closure) < 1)
+    return CAIRO_STATUS_WRITE_ERROR;
+  return CAIRO_STATUS_SUCCESS;
+}
+#endif /* (CAIRO_HAS_PNG_FUNCTIONS + CAIRO_HAS_PDF_SURFACE + CAIRO_HAS_PS_SURFACE + CAIRO_HAS_SVG_SURFACE) */
+
+static void
+topo_cairo_paint(struct draw_methods *methods, int logical, int legend, hwloc_topology_t topology, cairo_surface_t *cs)
+{
+  cairo_t *c;
+  c = cairo_create(cs);
+  output_draw(methods, logical, legend, topology, c);
+  cairo_show_page(c);
+  cairo_destroy(c);
+}
+
+static void null_declare_color (void *output __hwloc_attribute_unused, int r __hwloc_attribute_unused, int g __hwloc_attribute_unused, int b __hwloc_attribute_unused) {}
+#endif /* (CAIRO_HAS_XLIB_SURFACE + CAIRO_HAS_PNG_FUNCTIONS + CAIRO_HAS_PDF_SURFACE + CAIRO_HAS_PS_SURFACE + CAIRO_HAS_SVG_SURFACE) */
+
+
+#if CAIRO_HAS_XLIB_SURFACE
+/* X11 back-end */
+
+struct display {
+  Display *dpy;
+  int scr;
+  cairo_surface_t *cs;
+  Window top, win;
+  Cursor hand;
+  unsigned int orig_fontsize, orig_gridsize;
+  int screen_width, screen_height;		/** visible part size */
+  int last_screen_width, last_screen_height;	/** last visible part size */
+  int width, height;				/** total normal display size */
+  int x, y;					/** top left corner of the visible part */
+};
+
+static void
+x11_create(struct display *disp, int width, int height)
+{
+  disp->win = XCreateSimpleWindow(disp->dpy, disp->top, 0, 0, width, height, 0, WhitePixel(disp->dpy, disp->scr), WhitePixel(disp->dpy, disp->scr));
+  disp->hand = XCreateFontCursor(disp->dpy, XC_fleur);
+  XDefineCursor(disp->dpy, disp->win, disp->hand);
+  XSelectInput(disp->dpy, disp->win,
+      KeyPressMask |
+      ButtonPressMask | ButtonReleaseMask |
+      PointerMotionMask |
+      ExposureMask);
+  XMapWindow(disp->dpy, disp->win);
+  disp->cs = cairo_xlib_surface_create(disp->dpy, disp->win, DefaultVisual(disp->dpy, disp->scr), width, height);
+
+}
+
+static void
+x11_destroy(struct display *disp)
+{
+  cairo_surface_destroy(disp->cs);
+  XDestroyWindow(disp->dpy, disp->win);
+}
+
+static void *
+x11_start(void *output __hwloc_attribute_unused, int width, int height)
+{
+  Display *dpy;
+  Window root, top;
+  int scr;
+  Screen *screen;
+  int screen_width = width, screen_height = height;
+  struct display *disp;
+
+  if (!(dpy = XOpenDisplay(NULL))) {
+    fprintf(stderr, "couldn't connect to X\n");
+    exit(EXIT_FAILURE);
+  }
+
+  disp = malloc(sizeof(*disp));
+  disp->dpy = dpy;
+  disp->scr = scr = DefaultScreen(dpy);
+
+  screen = ScreenOfDisplay(dpy, scr);
+  if (screen_width >= screen->width)
+    screen_width = screen->width;
+  if (screen_height >= screen->height)
+    screen_height = screen->height;
+  disp->screen_width = screen_width;
+  disp->screen_height = screen_height;
+  disp->width = width;
+  disp->height = height;
+  disp->orig_fontsize = fontsize;
+  disp->orig_gridsize = gridsize;
+  disp->x = 0;
+  disp->y = 0;
+
+  root = RootWindow(dpy, scr);
+  disp->top = top = XCreateSimpleWindow(dpy, root, 0, 0, screen_width, screen_height, 0, WhitePixel(dpy, scr), WhitePixel(dpy, scr));
+  XSelectInput(dpy,top, StructureNotifyMask);
+  XMapWindow(dpy, top);
+
+  x11_create(disp, width, height);
+
+  return disp;
+}
+
+static struct draw_methods x11_draw_methods = {
+  x11_start,
+  null_declare_color,
+  topo_cairo_box,
+  topo_cairo_line,
+  topo_cairo_text,
+};
+
+/** Clip coordinates of the visible part. */
+static void
+move_x11(struct display *disp, int logical, int legend, hwloc_topology_t topology)
+{
+  if (disp->width <= disp->screen_width) {
+    disp->x = 0;
+  } else {
+    if (disp->x < 0)
+      disp->x = 0;
+    if (disp->x >= disp->width - disp->screen_width)
+      disp->x = disp->width - disp->screen_width;
+  }
+
+  if (disp->height <= disp->screen_height) {
+    disp->y = 0;
+  } else {
+    if (disp->y < 0)
+      disp->y = 0;
+    if (disp->y >= disp->height - disp->screen_height)
+      disp->y = disp->height - disp->screen_height;
+  }
+
+ if (disp->screen_width > disp->width && disp->screen_height > disp->height
+   && (disp->screen_width != disp->last_screen_width
+   || disp->screen_height != disp->last_screen_height)) {
+    disp->last_screen_width = disp->screen_width;
+    disp->last_screen_height = disp->screen_height;
+    fontsize = disp->orig_fontsize;
+    gridsize = disp->orig_gridsize;
+    if (disp->screen_width > disp->width) {
+      fontsize = disp->orig_fontsize * disp->screen_width / disp->width;
+      gridsize = disp->orig_gridsize * disp->screen_width / disp->width;
+    }
+    if (disp->screen_height > disp->height) {
+      unsigned int new_fontsize = disp->orig_fontsize * disp->screen_height / disp->height;
+      unsigned int new_gridsize = disp->orig_gridsize * disp->screen_height / disp->height;
+      if (new_fontsize < fontsize)
+	fontsize = new_fontsize;
+      if (new_gridsize < gridsize)
+	gridsize = new_gridsize;
+    }
+
+    x11_destroy(disp);
+    x11_create(disp, disp->screen_width, disp->screen_height);
+    topo_cairo_paint(&x11_draw_methods, logical, legend, topology, disp->cs);
+  }
+}
+
+void
+output_x11(hwloc_topology_t topology, const char *filename __hwloc_attribute_unused, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+{
+  struct display *disp = output_draw_start(&x11_draw_methods, logical, legend, topology, NULL);
+  int finish = 0;
+  int state = 0;
+  int x = 0, y = 0; /* shut warning down */
+  int lastx = disp->x, lasty = disp->y;
+
+  topo_cairo_paint(&x11_draw_methods, logical, legend, topology, disp->cs);
+
+  while (!finish) {
+    XEvent e;
+    if (!XEventsQueued(disp->dpy, QueuedAfterFlush)) {
+      /* No pending event, flush moving windows before waiting for next event */
+      if (disp->x != lastx || disp->y != lasty) {
+	XMoveWindow(disp->dpy, disp->win, -disp->x, -disp->y);
+	lastx = disp->x;
+	lasty = disp->y;
+      }
+    }
+    XNextEvent(disp->dpy, &e);
+    switch (e.type) {
+      case Expose:
+	if (e.xexpose.count < 1)
+	  topo_cairo_paint(&x11_draw_methods, logical, legend, topology, disp->cs);
+	break;
+      case MotionNotify:
+	if (state) {
+	  disp->x -= e.xmotion.x_root - x;
+	  disp->y -= e.xmotion.y_root - y;
+	  x = e.xmotion.x_root;
+	  y = e.xmotion.y_root;
+          move_x11(disp, logical, legend, topology);
+	}
+	break;
+      case ConfigureNotify:
+	disp->screen_width = e.xconfigure.width;
+	disp->screen_height = e.xconfigure.height;
+        move_x11(disp, logical, legend, topology);
+	if (disp->x != lastx || disp->y != lasty)
+	  XMoveWindow(disp->dpy, disp->win, -disp->x, -disp->y);
+	break;
+      case ButtonPress:
+	  if (e.xbutton.button == Button1) {
+	  state = 1;
+	  x = e.xbutton.x_root;
+	  y = e.xbutton.y_root;
+	}
+	break;
+      case ButtonRelease:
+	if (e.xbutton.button == Button1)
+	  state = 0;
+	break;
+      case MappingNotify:
+	XRefreshKeyboardMapping(&e.xmapping);
+	break;
+      case KeyPress: {
+	KeySym keysym;
+	XLookupString(&e.xkey, NULL, 0, &keysym, NULL);
+        switch (keysym) {
+          case XK_q:
+          case XK_Q:
+          case XK_Escape:
+            finish = 1;
+            break;
+          case XK_Left:
+            disp->x -= disp->screen_width/10;
+            move_x11(disp, logical, legend, topology);
+            break;
+          case XK_Right:
+            disp->x += disp->screen_width/10;
+            move_x11(disp, logical, legend, topology);
+            break;
+          case XK_Up:
+            disp->y -= disp->screen_height/10;
+            move_x11(disp, logical, legend, topology);
+            break;
+          case XK_Down:
+            disp->y += disp->screen_height/10;
+            move_x11(disp, logical, legend, topology);
+            break;
+          case XK_Page_Up:
+            if (e.xkey.state & ControlMask) {
+              disp->x -= disp->screen_width;
+              move_x11(disp, logical, legend, topology);
+            } else {
+              disp->y -= disp->screen_height;
+              move_x11(disp, logical, legend, topology);
+            }
+            break;
+          case XK_Page_Down:
+            if (e.xkey.state & ControlMask) {
+              disp->x += disp->screen_width;
+              move_x11(disp, logical, legend, topology);
+            } else {
+              disp->y += disp->screen_height;
+              move_x11(disp, logical, legend, topology);
+            }
+            break;
+          case XK_Home:
+            disp->x = 0;
+            disp->y = 0;
+            move_x11(disp, logical, legend, topology);
+            break;
+          case XK_End:
+            disp->x = INT_MAX;
+            disp->y = INT_MAX;
+            move_x11(disp, logical, legend, topology);
+            break;
+        }
+	break;
+      }
+    }
+  }
+  x11_destroy(disp);
+  XDestroyWindow(disp->dpy, disp->top);
+  XFreeCursor(disp->dpy, disp->hand);
+  XCloseDisplay(disp->dpy);
+  free(disp);
+}
+#endif /* CAIRO_HAS_XLIB_SURFACE */
+
+
+#if CAIRO_HAS_PNG_FUNCTIONS
+/* PNG back-end */
+static void *
+png_start(void *output __hwloc_attribute_unused, int width, int height)
+{
+  return cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
+}
+
+static struct draw_methods png_draw_methods = {
+  png_start,
+  null_declare_color,
+  topo_cairo_box,
+  topo_cairo_line,
+  topo_cairo_text,
+};
+
+void
+output_png(hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+{
+  FILE *output = open_file(filename, "w");
+  cairo_surface_t *cs;
+
+  if (!output) {
+    fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+    return;
+  }
+
+  cs = output_draw_start(&png_draw_methods, logical, legend, topology, output);
+
+  topo_cairo_paint(&png_draw_methods, logical, legend, topology, cs);
+  cairo_surface_write_to_png_stream(cs, topo_cairo_write, output);
+  cairo_surface_destroy(cs);
+
+  if (output != stdout)
+    fclose(output);
+}
+#endif /* CAIRO_HAS_PNG_FUNCTIONS */
+
+
+#if CAIRO_HAS_PDF_SURFACE
+/* PDF back-end */
+static void *
+pdf_start(void *output, int width, int height)
+{
+  return cairo_pdf_surface_create_for_stream(topo_cairo_write, output, width, height);
+}
+
+static struct draw_methods pdf_draw_methods = {
+  pdf_start,
+  null_declare_color,
+  topo_cairo_box,
+  topo_cairo_line,
+  topo_cairo_text,
+};
+
+void
+output_pdf(hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+{
+  FILE *output = open_file(filename, "w");
+  cairo_surface_t *cs;
+
+  if (!output) {
+    fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+    return;
+  }
+
+  cs = output_draw_start(&pdf_draw_methods, logical, legend, topology, output);
+
+  topo_cairo_paint(&pdf_draw_methods, logical, legend, topology, cs);
+  cairo_surface_flush(cs);
+  cairo_surface_destroy(cs);
+
+  if (output != stdout)
+    fclose(output);
+}
+#endif /* CAIRO_HAS_PDF_SURFACE */
+
+
+#if CAIRO_HAS_PS_SURFACE
+/* PS back-end */
+static void *
+ps_start(void *output, int width, int height)
+{
+  return cairo_ps_surface_create_for_stream(topo_cairo_write, output, width, height);
+}
+
+static struct draw_methods ps_draw_methods = {
+  ps_start,
+  null_declare_color,
+  topo_cairo_box,
+  topo_cairo_line,
+  topo_cairo_text,
+};
+
+void
+output_ps(hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+{
+  FILE *output = open_file(filename, "w");
+  cairo_surface_t *cs;
+
+  if (!output) {
+    fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+    return;
+  }
+
+  cs = output_draw_start(&ps_draw_methods, logical, legend, topology, output);
+
+  topo_cairo_paint(&ps_draw_methods, logical, legend, topology, cs);
+  cairo_surface_flush(cs);
+  cairo_surface_destroy(cs);
+
+  if (output != stdout)
+    fclose(output);
+}
+#endif /* CAIRO_HAS_PS_SURFACE */
+
+
+#if CAIRO_HAS_SVG_SURFACE
+/* SVG back-end */
+static void *
+svg_start(void *output, int width, int height)
+{
+  return cairo_svg_surface_create_for_stream(topo_cairo_write, output, width, height);
+}
+
+static struct draw_methods svg_draw_methods = {
+  svg_start,
+  null_declare_color,
+  topo_cairo_box,
+  topo_cairo_line,
+  topo_cairo_text,
+};
+
+void
+output_svg(hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+{
+  FILE *output;
+  cairo_surface_t *cs;
+
+  output = open_file(filename, "w");
+  if (!output) {
+    fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+    return;
+  }
+
+  cs = output_draw_start(&svg_draw_methods, logical, legend, topology, output);
+
+  topo_cairo_paint(&svg_draw_methods, logical, legend, topology, cs);
+  cairo_surface_flush(cs);
+  cairo_surface_destroy(cs);
+
+  if (output != stdout)
+    fclose(output);
+}
+#endif /* CAIRO_HAS_SVG_SURFACE */
+
+#endif /* CAIRO */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-color.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-color.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-color.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,58 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * See COPYING in top-level directory.
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "lstopo.h"
+
+static struct color {
+  int r, g, b;
+} *colors;
+
+static int numcolors;
+
+static int
+find_color(int r, int g, int b)
+{
+  int i;
+
+  for (i = 0; i < numcolors; i++)
+    if (colors[i].r == r && colors[i].g == g && colors[i].b == b)
+      return i;
+
+  return -1;
+}
+
+int
+rgb_to_color(int r, int g, int b)
+{
+  int color = find_color(r, g, b);
+
+  if (color != -1)
+    return color;
+
+  fprintf(stderr, "color #%02x%02x%02x not declared\n", r, g, b);
+  exit(EXIT_FAILURE);
+}
+
+int
+declare_color(int r, int g, int b)
+{
+  int color = find_color(r, g, b);
+
+  if (color != -1)
+    return color;
+
+  color = numcolors++;
+  colors = realloc(colors, sizeof(*colors) * (numcolors));
+  colors[color].r = r;
+  colors[color].g = g;
+  colors[color].b = b;
+
+  return color;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-draw.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,1012 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/autogen/config.h>
+#include <private/private.h>
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+#include <time.h>
+
+#include "lstopo.h"
+
+#define EPOXY_R_COLOR 0xe7
+#define EPOXY_G_COLOR 0xff
+#define EPOXY_B_COLOR 0xb5
+
+#define DARK_EPOXY_R_COLOR ((EPOXY_R_COLOR * 100) / 110)
+#define DARK_EPOXY_G_COLOR ((EPOXY_G_COLOR * 100) / 110)
+#define DARK_EPOXY_B_COLOR ((EPOXY_B_COLOR * 100) / 110)
+
+#define DARKER_EPOXY_R_COLOR ((DARK_EPOXY_R_COLOR * 100) / 110)
+#define DARKER_EPOXY_G_COLOR ((DARK_EPOXY_G_COLOR * 100) / 110)
+#define DARKER_EPOXY_B_COLOR ((DARK_EPOXY_B_COLOR * 100) / 110)
+
+#define SOCKET_R_COLOR 0xde
+#define SOCKET_G_COLOR 0xde
+#define SOCKET_B_COLOR 0xde
+
+#define MEMORY_R_COLOR 0xef
+#define MEMORY_G_COLOR 0xdf
+#define MEMORY_B_COLOR 0xde
+
+#define CORE_R_COLOR 0xbe
+#define CORE_G_COLOR 0xbe
+#define CORE_B_COLOR 0xbe
+
+#define THREAD_R_COLOR 0xff
+#define THREAD_G_COLOR 0xff
+#define THREAD_B_COLOR 0xff
+
+#define RUNNING_R_COLOR 0
+#define RUNNING_G_COLOR 0xff
+#define RUNNING_B_COLOR 0
+
+#define FORBIDDEN_R_COLOR 0xff
+#define FORBIDDEN_G_COLOR 0
+#define FORBIDDEN_B_COLOR 0
+
+#define OFFLINE_R_COLOR 0
+#define OFFLINE_G_COLOR 0
+#define OFFLINE_B_COLOR 0
+
+#define CACHE_R_COLOR 0xff
+#define CACHE_G_COLOR 0xff
+#define CACHE_B_COLOR 0xff
+
+#define MACHINE_R_COLOR EPOXY_R_COLOR
+#define MACHINE_G_COLOR EPOXY_G_COLOR
+#define MACHINE_B_COLOR EPOXY_B_COLOR
+
+#define NODE_R_COLOR DARK_EPOXY_R_COLOR
+#define NODE_G_COLOR DARK_EPOXY_G_COLOR
+#define NODE_B_COLOR DARK_EPOXY_B_COLOR
+
+#define SYSTEM_R_COLOR 0xff
+#define SYSTEM_G_COLOR 0xff
+#define SYSTEM_B_COLOR 0xff
+
+#define MISC_R_COLOR 0xff
+#define MISC_G_COLOR 0xff
+#define MISC_B_COLOR 0xff
+
+#define PCI_DEVICE_R_COLOR DARKER_EPOXY_R_COLOR
+#define PCI_DEVICE_G_COLOR DARKER_EPOXY_G_COLOR
+#define PCI_DEVICE_B_COLOR DARKER_EPOXY_B_COLOR
+
+#define OS_DEVICE_R_COLOR 0xde
+#define OS_DEVICE_G_COLOR 0xde
+#define OS_DEVICE_B_COLOR 0xde
+
+#define BRIDGE_R_COLOR 0xff
+#define BRIDGE_G_COLOR 0xff
+#define BRIDGE_B_COLOR 0xff
+
+/* preferred width/height compromise */
+#define RATIO (4.f/3.f)
+
+/* PCI object height: just a box */
+#define PCI_HEIGHT (fontsize ? gridsize + fontsize + gridsize : gridsize)
+
+/* do we prefer ratio1 over ratio2? */
+static int prefer_ratio(float ratio1, float ratio2) {
+  float _ratio1 = (ratio1) / RATIO;
+  float _ratio2 = (ratio2) / RATIO;
+  if (_ratio1 < 1)
+    _ratio1 = 1/_ratio1;
+  if (_ratio2 < 1)
+    _ratio2 = 1/_ratio2;
+  return _ratio1 < _ratio2;
+}
+
+static void* null_start(void *output, int width __hwloc_attribute_unused, int height __hwloc_attribute_unused) { return output; }
+static void null_declare_color(void *output __hwloc_attribute_unused, int r __hwloc_attribute_unused, int g __hwloc_attribute_unused, int b __hwloc_attribute_unused) { }
+static void null_box(void *output __hwloc_attribute_unused, int r __hwloc_attribute_unused, int g __hwloc_attribute_unused, int b __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x __hwloc_attribute_unused, unsigned width __hwloc_attribute_unused, unsigned y __hwloc_attribute_unused, unsigned height __hwloc_attribute_unused) { }
+static void null_line(void *output __hwloc_attribute_unused, int r __hwloc_attribute_unused, int g __hwloc_attribute_unused, int b __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x1 __hwloc_attribute_unused, unsigned y1_arg __hwloc_attribute_unused, unsigned x2 __hwloc_attribute_unused, unsigned y2 __hwloc_attribute_unused) { }
+static void null_text(void *output __hwloc_attribute_unused, int r __hwloc_attribute_unused, int g __hwloc_attribute_unused, int b __hwloc_attribute_unused, int size __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x __hwloc_attribute_unused, unsigned y __hwloc_attribute_unused, const char *text __hwloc_attribute_unused) { }
+
+static struct draw_methods null_draw_methods = {
+  null_start,
+  null_declare_color,
+  null_box,
+  null_line,
+  null_text,
+};
+
+/*
+ * foo_draw functions take a OBJ, computes which size it needs, recurse into
+ * sublevels with null_draw_methods to recursively compute the needed size
+ * without actually drawing anything, then draw things about OBJ (chip draw,
+ * cache size information etc) at (X,Y), recurse into sublevels again to
+ * actually draw things, and return in RETWIDTH and RETHEIGHT the amount of
+ * space that the drawing took.
+ *
+ * For generic detailed comments, see the node_draw function.
+ *
+ * border is added around the objects
+ * separator is added between objects
+ */
+
+typedef void (*foo_draw)(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t obj, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight);
+
+static foo_draw get_type_fun(hwloc_obj_type_t type);
+
+/*
+ * Helper to recurse into sublevels, either horizontally or vertically
+ * Updates caller's totwidth/myheight and maxwidth/maxheight
+ * Needs textwidth, topology, output, depth, x and y
+ */
+
+#define RECURSE_BEGIN(obj, border) do { \
+  hwloc_obj_t *subobjs = obj->children; \
+  unsigned numsubobjs = obj->arity; \
+  unsigned width, height; \
+  unsigned maxwidth __hwloc_attribute_unused, maxheight __hwloc_attribute_unused; \
+  maxwidth = maxheight = 0; \
+  totwidth = (border) + mywidth; \
+  totheight = (border) + myheight; \
+  if (numsubobjs) { \
+    unsigned i; \
+
+#define RECURSE_FOR() \
+    /* Iterate over subobjects */ \
+    for (i = 0; i < numsubobjs; i++) { \
+
+      /* Recursive call */
+#define RECURSE_CALL_FUN(methods) \
+      get_type_fun(subobjs[i]->type)(topology, methods, logical, subobjs[i], output, depth-1, x + totwidth, &width, y + totheight, &height) \
+
+#define RECURSE_END_HORIZ(separator, border) \
+      /* Add the subobject's width and separator */ \
+      totwidth += width + (separator); \
+      /* Update maximum height */ \
+      if (height > maxheight) \
+	maxheight = height; \
+    } \
+    \
+    /* Remove spurious separator on the right */ \
+    totwidth -= (separator); \
+    \
+    /* Make sure there is width for the heading text */ \
+    /* Add subobjects height */ \
+    totheight += maxheight; \
+    /* And add border below */ \
+    totheight += (border); \
+    /* Add border on the right */ \
+    totwidth += (border); \
+  } \
+  if (totwidth < textwidth) \
+    totwidth = textwidth; \
+  /* Update returned values */ \
+  *retwidth = totwidth; \
+  *retheight = totheight; \
+} while(0)
+
+#define RECURSE_END_VERT(separator, border) \
+      /* Add the subobject's height and separator */ \
+      totheight += height + (separator); \
+      if (width > maxwidth) \
+      /* Update maximum width */ \
+	maxwidth = width; \
+    } \
+    /* Remove spurious separator at the bottom */ \
+    totheight -= (separator); \
+    /* Add subobjects width */ \
+    totwidth += maxwidth; \
+    /* And add border on the right */ \
+    totwidth += (border); \
+    /* Add border at the bottom */ \
+    totheight = totheight + (border); \
+  } \
+  \
+  /* Make sure there is width for the heading text */ \
+  if (totwidth < textwidth) \
+    totwidth = textwidth; \
+  /* Update returned values */ \
+  *retwidth = totwidth; \
+  *retheight = totheight; \
+} while(0)
+
+/* Pack objects horizontally */
+#define RECURSE_HORIZ(obj, methods, separator, border) \
+  RECURSE_BEGIN(obj, border) \
+  RECURSE_FOR() \
+    RECURSE_CALL_FUN(methods); \
+  RECURSE_END_HORIZ(separator, border)
+
+/* Pack objects vertically */
+#define RECURSE_VERT(obj, methods, separator, border) \
+  RECURSE_BEGIN(obj, border) \
+  RECURSE_FOR() \
+    RECURSE_CALL_FUN(methods); \
+  RECURSE_END_VERT(separator, border)
+
+#define RECURSE_RECT_BEGIN(obj, methods, separator, border) \
+RECURSE_BEGIN(obj, border) \
+    /* Total width for subobjects */ \
+    unsigned obj_totwidth = 0, obj_totheight = 0; \
+    /* Total area for subobjects */ \
+    unsigned area = 0; \
+    unsigned rows, columns; \
+    RECURSE_FOR() \
+      RECURSE_CALL_FUN(&null_draw_methods); \
+      obj_totwidth += width + (separator); \
+      obj_totheight += height + (separator); \
+      area += (width + (separator)) * (height + (separator)); \
+    } \
+    if (force_orient[obj->type] == LSTOPO_ORIENT_HORIZ) { \
+      rows =  1; \
+      columns = numsubobjs; \
+    } else if (force_orient[obj->type] == LSTOPO_ORIENT_VERT) { \
+      columns =  1; \
+      rows = numsubobjs; \
+    } else { \
+      unsigned found = 0; \
+      /* Try to find a fitting rectangle */ \
+      for (rows = floor(sqrt(numsubobjs)); rows >= ceil(pow(numsubobjs,0.33)) && rows > 1; rows--) { \
+        columns = numsubobjs / rows; \
+        if (columns > 1 && columns * rows == numsubobjs) { \
+          found = 1; \
+          break; \
+        } \
+      } \
+      if (!found) { \
+        /* Average object size */ \
+        unsigned obj_avgwidth = obj_totwidth / numsubobjs; \
+        unsigned obj_avgheight = obj_totheight / numsubobjs; \
+        /* Ideal total height for spreading that area with RATIO */ \
+        float idealtotheight = (float) sqrt(area/RATIO); \
+        float under_ratio, over_ratio; \
+        /* approximation of number of rows */ \
+        rows = idealtotheight / obj_avgheight; \
+        columns = rows ? (numsubobjs + rows - 1) / rows : 1; \
+        /* Ratio obtained by underestimation */ \
+        under_ratio = (float) (columns * obj_avgwidth) / (rows * obj_avgheight); \
+        \
+        /* try to overestimate too */ \
+        rows++; \
+        columns = (numsubobjs + rows - 1) / rows; \
+        /* Ratio obtained by overestimation */ \
+        over_ratio = (float) (columns * obj_avgwidth) / (rows * obj_avgheight); \
+        /* Did we actually preferred underestimation? (good row/column fit or good ratio) */ \
+        if (rows > 1 && prefer_ratio(under_ratio, over_ratio)) { \
+          rows--; \
+          columns = (numsubobjs + rows - 1) / rows; \
+        } \
+      } \
+    } \
+    \
+    maxheight = 0; \
+    RECURSE_FOR() \
+      /* Newline? */ \
+      if (i && i%columns == 0) { \
+        totwidth = (border) + mywidth; \
+        /* Add the same height to all rows */ \
+        totheight += maxheight + (separator); \
+        maxheight = 0; \
+      } \
+
+#define RECURSE_RECT_END(obj, methods, separator, border) \
+      if (totwidth + width + (separator) > maxwidth) \
+        maxwidth = totwidth + width + (separator); \
+      totwidth += width + (separator); \
+      /* Update maximum height */ \
+      if (height > maxheight) \
+	maxheight = height; \
+    } \
+    /* Remove spurious separator on the right */ \
+    maxwidth -= (separator); \
+    /* Compute total width */ \
+    totwidth = maxwidth + (border); \
+    /* Add the last row's height and border at the bottom */ \
+    totheight += maxheight + (border); \
+  } \
+  /* Make sure there is width for the heading text */ \
+  if (totwidth < textwidth) \
+    totwidth = textwidth; \
+  /* Update returned values */ \
+  *retwidth = totwidth; \
+  *retheight = totheight; \
+} while(0)
+
+/* Pack objects in a grid */
+#define RECURSE_RECT(obj, methods, separator, border) do {\
+  if (obj->arity && obj->children[0]->type == HWLOC_OBJ_NODE) { \
+    /* Nodes shouldn't be put with an arbitrary geometry, as NUMA distances may not be that way */ \
+    int pvert = prefer_vert(topology, logical, level, output, depth, x, y, separator); \
+    if (pvert) \
+      RECURSE_VERT(level, methods, separator, border); \
+    else \
+      RECURSE_HORIZ(level, methods, separator, border); \
+  } else {\
+    RECURSE_RECT_BEGIN(obj, methods, separator, border) \
+    RECURSE_CALL_FUN(methods); \
+    RECURSE_RECT_END(obj, methods, separator, border); \
+  } \
+} while (0)
+
+/* Dynamic programming */
+
+/* Per-object data: width and height of drawing for this object and sub-objects */
+struct dyna_save {
+  unsigned width;
+  unsigned height;
+  unsigned fontsize;
+  unsigned gridsize;
+};
+
+/* Save the computed size */
+#define DYNA_SAVE() do { \
+  if (!level->userdata) { \
+    struct dyna_save *save = malloc(sizeof(*save)); \
+    save->width = *retwidth; \
+    save->height = *retheight; \
+    save->fontsize = fontsize; \
+    save->gridsize = gridsize; \
+    level->userdata = save; \
+  } \
+} while (0)
+
+/* Check whether we already computed the size and we are not actually drawing, in that case return it */
+#define DYNA_CHECK() do { \
+  if (level->userdata && methods == &null_draw_methods) { \
+    struct dyna_save *save = level->userdata; \
+    if (save->fontsize == fontsize && save->gridsize == gridsize) { \
+      *retwidth = save->width; \
+      *retheight = save->height; \
+    } \
+    free(level->userdata); \
+    level->userdata = NULL; \
+    return; \
+  } \
+} while (0)
+
+static int
+prefer_vert(hwloc_topology_t topology, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned y, unsigned separator)
+{
+  float horiz_ratio, vert_ratio;
+  unsigned textwidth = 0;
+  unsigned mywidth = 0, myheight = 0;
+  unsigned totwidth, *retwidth = &totwidth, totheight, *retheight = &totheight;
+  RECURSE_HORIZ(level, &null_draw_methods, separator, 0);
+  horiz_ratio = (float)totwidth / totheight;
+  RECURSE_VERT(level, &null_draw_methods, separator, 0);
+  vert_ratio = (float)totwidth / totheight;
+  return force_orient[level->type] == LSTOPO_ORIENT_VERT || (force_orient[level->type] != LSTOPO_ORIENT_HORIZ && prefer_ratio(vert_ratio, horiz_ratio));
+}
+
+static int
+lstopo_obj_snprintf(char *text, size_t textlen, hwloc_obj_t obj, int logical)
+{
+  unsigned idx = logical ? obj->logical_index : obj->os_index;
+  const char *indexprefix = logical ? " L#" : " P#";
+  char typestr[32];
+  char indexstr[32]= "";
+  char attrstr[256];
+  int attrlen;
+  hwloc_obj_type_snprintf(typestr, sizeof(typestr), obj, 0);
+  if (idx != (unsigned)-1 && obj->depth != 0
+      && obj->type != HWLOC_OBJ_PCI_DEVICE
+      && (obj->type != HWLOC_OBJ_BRIDGE || obj->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_HOST))
+    snprintf(indexstr, sizeof(indexstr), "%s%u", indexprefix, idx);
+  attrlen = hwloc_obj_attr_snprintf(attrstr, sizeof(attrstr), obj, " ", 0);
+  if (attrlen > 0)
+    return snprintf(text, textlen, "%s%s (%s)", typestr, indexstr, attrstr);
+  else
+    return snprintf(text, textlen, "%s%s", typestr, indexstr);
+}
+
+static void
+pci_device_draw(hwloc_topology_t topology __hwloc_attribute_unused, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned textwidth = gridsize;
+  unsigned textheight = (fontsize ? (fontsize + gridsize) : 0);
+  unsigned myheight = textheight;
+  unsigned mywidth = 0;
+  unsigned totwidth, totheight;
+  char text[64];
+  int n;
+
+  DYNA_CHECK();
+
+  if (fontsize) {
+    n = lstopo_obj_snprintf(text, sizeof(text), level, logical);
+    textwidth = (n * fontsize * 3) / 4;
+  }
+
+  RECURSE_RECT(level, &null_draw_methods, gridsize, gridsize);
+
+  methods->box(output, PCI_DEVICE_R_COLOR, PCI_DEVICE_G_COLOR, PCI_DEVICE_B_COLOR, depth, x, *retwidth, y, *retheight);
+
+  if (fontsize)
+    methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, text);
+
+  RECURSE_RECT(level, methods, gridsize, gridsize);
+
+  DYNA_SAVE();
+}
+
+static void
+os_device_draw(hwloc_topology_t topology __hwloc_attribute_unused, struct draw_methods *methods, int logical __hwloc_attribute_unused, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned textwidth = 0;
+  unsigned totheight = gridsize;
+  unsigned totwidth = gridsize;
+  int n;
+
+  if (fontsize) {
+    n = strlen(level->name);
+    textwidth = (n * fontsize * 3) / 4;
+    totheight = gridsize + fontsize + gridsize;
+    totwidth = gridsize + textwidth + gridsize;
+  }
+
+  *retwidth = totwidth;
+  *retheight = totheight;
+
+  methods->box(output, OS_DEVICE_R_COLOR, OS_DEVICE_G_COLOR, OS_DEVICE_B_COLOR, depth, x, *retwidth, y, *retheight);
+
+  if (fontsize)
+    methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, level->name);
+}
+
+static void
+bridge_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned textwidth = 0;
+  unsigned myheight = 0;
+  /* Room for square, left link and speed */
+  unsigned speedwidth = fontsize ? fontsize + gridsize : 0;
+  unsigned mywidth = 2*gridsize + gridsize + speedwidth;
+  unsigned totwidth, totheight;
+
+  DYNA_CHECK();
+
+  RECURSE_VERT(level, &null_draw_methods, gridsize, 0);
+
+  /* Square and left link */
+  methods->box(output, BRIDGE_R_COLOR, BRIDGE_G_COLOR, BRIDGE_B_COLOR, depth, x, gridsize, y + PCI_HEIGHT/2 - gridsize/2, gridsize);
+  methods->line(output, 0, 0, 0, depth, x + gridsize, y + PCI_HEIGHT/2, x + 2*gridsize, y + PCI_HEIGHT/2);
+
+  if (level->arity > 0) {
+    unsigned bottom = 0, top = 0;
+    RECURSE_BEGIN(level, 0);
+    RECURSE_FOR()
+      unsigned center;
+      RECURSE_CALL_FUN(methods);
+
+      /* Line to PCI device */
+      center = y + totheight + PCI_HEIGHT / 2;
+      if (!top)
+        top = center;
+      bottom = center;
+      methods->line(output, 0, 0, 0, depth, x + 2*gridsize, center, x + 2*gridsize + gridsize + speedwidth, center);
+
+      /* Negotiated link speed */
+      if (fontsize) {
+        float speed = 0.;
+        if (subobjs[i]->type == HWLOC_OBJ_PCI_DEVICE)
+          speed = subobjs[i]->attr->pcidev.linkspeed;
+        if (subobjs[i]->type == HWLOC_OBJ_BRIDGE && subobjs[i]->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_PCI)
+          speed = subobjs[i]->attr->bridge.upstream.pci.linkspeed;
+        if (speed != 0.) {
+          char text[4];
+          snprintf(text, sizeof(text), "%0.1f", subobjs[i]->attr->pcidev.linkspeed);
+          methods->text(output, 0, 0, 0, fontsize, depth-1, x + 2*gridsize + gridsize, y + totheight, text);
+        }
+      }
+    RECURSE_END_VERT(gridsize, 0);
+
+    /* Vertical line */
+    methods->line(output, 0, 0, 0, depth, x + 2*gridsize, top, x + 2*gridsize, bottom);
+  } else
+    RECURSE_VERT(level, methods, gridsize, 0);
+
+  /* Empty bridges still need some room */
+  if (*retheight < PCI_HEIGHT)
+    *retheight = PCI_HEIGHT;
+
+  DYNA_SAVE();
+}
+
+static void
+pu_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned myheight = (fontsize ? (fontsize + gridsize) : 0), totheight;
+  unsigned textwidth = fontsize ? 6*fontsize : gridsize;
+  unsigned mywidth = 0, totwidth;
+
+  DYNA_CHECK();
+
+  RECURSE_RECT(level, &null_draw_methods, 0, gridsize);
+
+  if (hwloc_bitmap_isset(level->online_cpuset, level->os_index))
+    if (!hwloc_bitmap_isset(level->allowed_cpuset, level->os_index))
+      methods->box(output, FORBIDDEN_R_COLOR, FORBIDDEN_G_COLOR, FORBIDDEN_B_COLOR, depth, x, *retwidth, y, *retheight);
+    else {
+      hwloc_bitmap_t bind = hwloc_bitmap_alloc();
+      if (pid != (hwloc_pid_t) -1 && pid != 0)
+        hwloc_get_proc_cpubind(topology, pid, bind, 0);
+      else if (pid == 0)
+        hwloc_get_cpubind(topology, bind, 0);
+      if (bind && hwloc_bitmap_isset(bind, level->os_index))
+        methods->box(output, RUNNING_R_COLOR, RUNNING_G_COLOR, RUNNING_B_COLOR, depth, x, *retwidth, y, *retheight);
+      else
+        methods->box(output, THREAD_R_COLOR, THREAD_G_COLOR, THREAD_B_COLOR, depth, x, *retwidth, y, *retheight);
+      hwloc_bitmap_free(bind);
+    }
+  else
+    methods->box(output, OFFLINE_R_COLOR, OFFLINE_G_COLOR, OFFLINE_B_COLOR, depth, x, *retwidth, y, *retheight);
+
+  if (fontsize) {
+    char text[64];
+    lstopo_obj_snprintf(text, sizeof(text), level, logical);
+    if (hwloc_bitmap_isset(level->online_cpuset, level->os_index))
+      methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, text);
+    else
+      methods->text(output, 0xff, 0xff, 0xff, fontsize, depth-1, x + gridsize, y + gridsize, text);
+  }
+
+  RECURSE_RECT(level, methods, 0, gridsize);
+
+  DYNA_SAVE();
+}
+
+static void
+cache_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned myheight = gridsize + (fontsize ? (fontsize + gridsize) : 0) + gridsize, totheight;
+  unsigned mywidth = 0, totwidth;
+  unsigned textwidth = fontsize ? ((logical ? level->logical_index : level->os_index) == (unsigned) -1 ? 8*fontsize : 10*fontsize) : 0;
+  /* Do not separate objects when in L1 (SMT) */
+  unsigned separator = level->attr->cache.depth > 1 ? gridsize : 0;
+
+  DYNA_CHECK();
+
+  RECURSE_RECT(level, &null_draw_methods, separator, 0);
+
+  methods->box(output, CACHE_R_COLOR, CACHE_G_COLOR, CACHE_B_COLOR, depth, x, totwidth, y, myheight - gridsize);
+
+  if (fontsize) {
+    char text[64];
+
+    lstopo_obj_snprintf(text, sizeof(text), level, logical);
+    methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, text);
+  }
+
+  RECURSE_RECT(level, methods, separator, 0);
+
+  DYNA_SAVE();
+}
+
+static void
+core_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned myheight = (fontsize ? (fontsize + gridsize) : 0), totheight;
+  unsigned mywidth = 0, totwidth;
+  unsigned textwidth = 5*fontsize;
+
+  DYNA_CHECK();
+
+  RECURSE_RECT(level, &null_draw_methods, 0, gridsize);
+
+  methods->box(output, CORE_R_COLOR, CORE_G_COLOR, CORE_B_COLOR, depth, x, totwidth, y, totheight);
+
+  if (fontsize) {
+    char text[64];
+    lstopo_obj_snprintf(text, sizeof(text), level, logical);
+    methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, text);
+  }
+
+  RECURSE_RECT(level, methods, 0, gridsize);
+
+  DYNA_SAVE();
+}
+
+static void
+socket_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned myheight = (fontsize ? (fontsize + gridsize) : 0), totheight;
+  unsigned mywidth = 0, totwidth;
+  unsigned textwidth = 6*fontsize;
+
+  DYNA_CHECK();
+
+  RECURSE_RECT(level, &null_draw_methods, gridsize, gridsize);
+
+  methods->box(output, SOCKET_R_COLOR, SOCKET_G_COLOR, SOCKET_B_COLOR, depth, x, totwidth, y, totheight);
+
+  if (fontsize) {
+    char text[64];
+    lstopo_obj_snprintf(text, sizeof(text), level, logical);
+    methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, text);
+  }
+
+  RECURSE_RECT(level, methods, gridsize, gridsize);
+
+  DYNA_SAVE();
+}
+
+static void
+node_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  /* Reserve room for the heading memory box and separator */
+  unsigned myheight = (fontsize ? (gridsize + fontsize) : 0) + gridsize + gridsize;
+  /* Currently filled height */
+  unsigned totheight;
+  /* Nothing on the left */
+  unsigned mywidth = 0;
+  /* Currently filled width */
+  unsigned totwidth;
+  /* Width of the heading text, thus minimal width */
+  unsigned textwidth = 16*fontsize;
+
+  /* Check whether dynamic programming can save us time */
+  DYNA_CHECK();
+
+  /* Compute the size needed by sublevels */
+  RECURSE_RECT(level, &null_draw_methods, gridsize, gridsize);
+
+  /* Draw the epoxy box */
+  methods->box(output, NODE_R_COLOR, NODE_G_COLOR, NODE_B_COLOR, depth, x, totwidth, y, totheight);
+  /* Draw the memory box */
+  methods->box(output, MEMORY_R_COLOR, MEMORY_G_COLOR, MEMORY_B_COLOR, depth-1, x + gridsize, totwidth - 2 * gridsize, y + gridsize, myheight - gridsize);
+
+  if (fontsize) {
+    char text[64];
+    /* Output text */
+    lstopo_obj_snprintf(text, sizeof(text), level, logical);
+    methods->text(output, 0, 0, 0, fontsize, depth-2, x + 2 * gridsize, y + 2 * gridsize, text);
+  }
+
+  /* Restart, now really drawing sublevels */
+  RECURSE_RECT(level, methods, gridsize, gridsize);
+
+  /* Save result for dynamic programming */
+  DYNA_SAVE();
+}
+
+static void
+machine_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned myheight = (fontsize ? (fontsize + gridsize) : 0), totheight;
+  unsigned mywidth = 0, totwidth;
+  unsigned textwidth = 8*fontsize;
+
+  DYNA_CHECK();
+
+  RECURSE_RECT(level, &null_draw_methods, gridsize, gridsize);
+
+  methods->box(output, MACHINE_R_COLOR, MACHINE_G_COLOR, MACHINE_B_COLOR, depth, x, totwidth, y, totheight);
+
+  if (fontsize) {
+    char text[64];
+    lstopo_obj_snprintf(text, sizeof(text), level, logical);
+    methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, text);
+  }
+
+  RECURSE_RECT(level, methods, gridsize, gridsize);
+
+  DYNA_SAVE();
+}
+
+#define NETWORK_DRAW_BEGIN() do { \
+  /* network of machines, either horizontal or vertical */ \
+  if (vert) { \
+    mywidth += gridsize; \
+    RECURSE_VERT(level, &null_draw_methods, gridsize, gridsize); \
+  } else \
+    RECURSE_HORIZ(level, &null_draw_methods, gridsize, gridsize); \
+} while(0)
+
+#define NETWORK_DRAW_END() do { \
+  if (vert) { \
+    unsigned top = 0, bottom = 0; \
+    unsigned center; \
+    RECURSE_BEGIN(level, gridsize) \
+    RECURSE_FOR() \
+      RECURSE_CALL_FUN(methods); \
+      center = y + totheight + height / 2; \
+      if (!top) \
+        top = center; \
+      bottom = center; \
+      methods->line(output, 0, 0, 0, depth, x + mywidth, center, x + mywidth + gridsize, center); \
+    RECURSE_END_VERT(gridsize, gridsize); \
+ \
+    methods->line(output, 0, 0, 0, depth, x + mywidth, top, x + mywidth, bottom); \
+  } else { \
+    unsigned left = 0, right = 0; \
+    unsigned center; \
+    RECURSE_BEGIN(level, gridsize) \
+    RECURSE_FOR() \
+      RECURSE_CALL_FUN(methods); \
+      center = x + totwidth + width / 2; \
+      if (!left) \
+        left = center; \
+      right = center; \
+      methods->line(output, 0, 0, 0, depth, center, y + myheight, center, y + myheight + gridsize); \
+    RECURSE_END_HORIZ(gridsize, gridsize); \
+ \
+    methods->line(output, 0, 0, 0, depth, left, y + myheight, right, y + myheight); \
+  } \
+} while(0)
+
+static void
+system_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned myheight = (fontsize ? (fontsize + gridsize) : 0), totheight;
+  unsigned mywidth = 0, totwidth;
+  unsigned textwidth = 10*fontsize;
+  int vert = prefer_vert(topology, logical, level, output, depth, x, y, gridsize);
+
+  DYNA_CHECK();
+
+  if (level->arity > 1 && (level->children[0]->type == HWLOC_OBJ_MACHINE || !level->children[0]->cpuset))
+    NETWORK_DRAW_BEGIN();
+  else
+    RECURSE_RECT(level, &null_draw_methods, gridsize, gridsize);
+
+  methods->box(output, SYSTEM_R_COLOR, SYSTEM_G_COLOR, SYSTEM_B_COLOR, depth, x, totwidth, y, totheight);
+
+  if (fontsize) {
+    char text[64];
+    lstopo_obj_snprintf(text, sizeof(text), level, logical);
+    methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, text);
+  }
+
+  if (level->arity > 1 && (level->children[0]->type == HWLOC_OBJ_MACHINE || !level->children[0]->cpuset))
+    NETWORK_DRAW_END();
+  else
+    RECURSE_RECT(level, methods, gridsize, gridsize);
+
+  DYNA_SAVE();
+}
+
+static void
+group_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned myheight = (fontsize ? (fontsize + gridsize) : 0), totheight;
+  unsigned mywidth = 0, totwidth;
+  unsigned textwidth = level->name ? strlen(level->name) * fontsize : 6*fontsize;
+  int vert = prefer_vert(topology, logical, level, output, depth, x, y, gridsize);
+
+  DYNA_CHECK();
+
+#if 0
+  if (fontsize) {
+    n = lstopo_obj_snprintf(text, sizeof(text), level, logical);
+    textwidth = (n * fontsize * 3) / 4;
+  }
+#endif
+
+  if (level->arity > 1 && (level->children[0]->type == HWLOC_OBJ_MACHINE || !level->children[0]->cpuset))
+    NETWORK_DRAW_BEGIN();
+  else
+    RECURSE_RECT(level, &null_draw_methods, gridsize, gridsize);
+
+  methods->box(output, MISC_R_COLOR, MISC_G_COLOR, MISC_B_COLOR, depth, x, totwidth, y, totheight);
+
+  if (fontsize) {
+    if (level->name) {
+      methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, level->name);
+    } else {
+      char text[64];
+      lstopo_obj_snprintf(text, sizeof(text), level, logical);
+      methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, text);
+    }
+  }
+
+  if (level->arity > 1 && (level->children[0]->type == HWLOC_OBJ_MACHINE || !level->children[0]->cpuset))
+    NETWORK_DRAW_END();
+  else
+    RECURSE_RECT(level, methods, gridsize, gridsize);
+
+  DYNA_SAVE();
+}
+
+static void
+misc_draw(hwloc_topology_t topology, struct draw_methods *methods, int logical, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned *retwidth, unsigned y, unsigned *retheight)
+{
+  unsigned boxheight = gridsize + (fontsize ? (fontsize + gridsize) : 0);
+  unsigned myheight = boxheight + (level->arity?gridsize:0), totheight;
+  unsigned mywidth = 0, totwidth;
+  unsigned textwidth = level->name ? strlen(level->name) * fontsize : 6*fontsize;
+  int vert = prefer_vert(topology, logical, level, output, depth, x, y, gridsize);
+
+  DYNA_CHECK();
+
+  if (level->arity > 1 && (level->children[0]->type == HWLOC_OBJ_MACHINE || !level->children[0]->cpuset))
+    NETWORK_DRAW_BEGIN();
+  else
+    RECURSE_HORIZ(level, &null_draw_methods, gridsize, 0);
+
+  methods->box(output, MISC_R_COLOR, MISC_G_COLOR, MISC_B_COLOR, depth, x, totwidth, y, boxheight);
+
+  if (fontsize) {
+    if (level->name) {
+      methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, level->name);
+    } else {
+      char text[64];
+      lstopo_obj_snprintf(text, sizeof(text), level, logical);
+      methods->text(output, 0, 0, 0, fontsize, depth-1, x + gridsize, y + gridsize, text);
+    }
+  }
+
+  if (level->arity > 1 && (level->children[0]->type == HWLOC_OBJ_MACHINE || !level->children[0]->cpuset))
+    NETWORK_DRAW_END();
+  else
+    RECURSE_HORIZ(level, methods, gridsize, 0);
+
+  DYNA_SAVE();
+}
+
+static void
+fig(hwloc_topology_t topology, struct draw_methods *methods, int logical, int legend, hwloc_obj_t level, void *output, unsigned depth, unsigned x, unsigned y)
+{
+  unsigned totwidth, totheight, offset;
+  time_t t;
+  char text[128];
+  char hostname[128] = "";
+  unsigned long hostname_size = sizeof(hostname);
+
+  system_draw(topology, methods, logical, level, output, depth, x, &totwidth, y, &totheight);
+
+  if (totwidth < 20*fontsize)
+    totwidth = 20*fontsize;
+
+  if (legend) {
+      /* Display the hostname, but only if we're showing *this*
+         system */
+    if (hwloc_topology_is_thissystem(topology)) {
+#ifdef HWLOC_WIN_SYS
+      GetComputerName(hostname, &hostname_size);
+#else
+      gethostname(hostname, hostname_size);
+#endif
+    }
+    if (*hostname) {
+      snprintf(text, sizeof(text), "Host: %s", hostname);
+      methods->box(output, 0xff, 0xff, 0xff, depth, 0, totwidth, totheight, gridsize*4 + fontsize*3);
+      methods->text(output, 0, 0, 0, fontsize, depth, gridsize, totheight + gridsize, text);
+      offset = gridsize + fontsize;
+    } else {
+      methods->box(output, 0xff, 0xff, 0xff, depth, 0, totwidth, totheight, gridsize*3 + fontsize*2);
+      offset = 0;
+    }
+
+    /* Display whether we're showing physical or logical IDs */
+    snprintf(text, sizeof(text), "Indexes: %s", logical ? "logical" : "physical");
+    methods->text(output, 0, 0, 0, fontsize, depth, gridsize, totheight + gridsize + offset, text);
+
+    /* Display timestamp */
+    t = time(NULL);
+#ifdef HAVE_STRFTIME
+    {
+      struct tm *tmp;
+      tmp = localtime(&t);
+      strftime(text, sizeof(text), "Date: %c", tmp);
+    }
+#else /* HAVE_STRFTIME */
+    {
+      char *date;
+      int n;
+      date = ctime(&t);
+      n = strlen(date);
+      if (n && date[n-1] == '\n') {
+        date[n-1] = 0;
+      }
+      snprintf(text, sizeof(text), "Date: %s", date);
+    }
+#endif /* HAVE_STRFTIME */
+    methods->text(output, 0, 0, 0, fontsize, depth, gridsize, totheight + gridsize + offset + fontsize + gridsize, text);
+  }
+}
+
+/*
+ * given a type, return a pointer FUN to the function that draws it.
+ */
+static foo_draw
+get_type_fun(hwloc_obj_type_t type)
+{
+  switch (type) {
+    case HWLOC_OBJ_SYSTEM: return system_draw;
+    case HWLOC_OBJ_MACHINE: return machine_draw;
+    case HWLOC_OBJ_NODE: return node_draw;
+    case HWLOC_OBJ_SOCKET: return socket_draw;
+    case HWLOC_OBJ_CACHE: return cache_draw;
+    case HWLOC_OBJ_CORE: return core_draw;
+    case HWLOC_OBJ_PU: return pu_draw;
+    case HWLOC_OBJ_GROUP: return group_draw;
+    case HWLOC_OBJ_PCI_DEVICE: return pci_device_draw;
+    case HWLOC_OBJ_OS_DEVICE: return os_device_draw;
+    case HWLOC_OBJ_BRIDGE: return bridge_draw;
+    default:
+    case HWLOC_OBJ_MISC: return misc_draw;
+    case HWLOC_OBJ_TYPE_MAX: assert(0);
+  }
+}
+
+/*
+ * Dummy drawing methods to get the bounding box.
+ */
+
+struct coords {
+  unsigned x;
+  unsigned y;
+};
+
+static void
+getmax_box(void *output, int r __hwloc_attribute_unused, int g __hwloc_attribute_unused, int b __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned width, unsigned y, unsigned height)
+{
+  struct coords *coords = output;
+
+  if (x > coords->x)
+    coords->x = x;
+  if (x + width > coords->x)
+    coords->x = x + width;
+  if (y > coords->y)
+    coords->y = y;
+  if (y + height > coords->y)
+    coords->y = y + height;
+}
+
+static void
+getmax_line(void *output, int r __hwloc_attribute_unused, int g __hwloc_attribute_unused, int b __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x1_arg, unsigned y1_arg, unsigned x2_arg, unsigned y2_arg)
+{
+  struct coords *coords = output;
+
+  if (x1_arg > coords->x)
+    coords->x = x1_arg;
+  if (x2_arg > coords->x)
+    coords->x = x2_arg;
+  if (y1_arg > coords->y)
+    coords->y = y1_arg;
+  if (y2_arg > coords->y)
+    coords->y = y2_arg;
+}
+
+static struct draw_methods getmax_draw_methods = {
+  null_start,
+  null_declare_color,
+  getmax_box,
+  getmax_line,
+  null_text,
+};
+
+void *
+output_draw_start(struct draw_methods *methods, int logical, int legend, hwloc_topology_t topology, void *output)
+{
+  struct coords coords = { 0, 0 };
+  fig(topology, &getmax_draw_methods, logical, legend, hwloc_get_root_obj(topology), &coords, 100, 0, 0);
+  output = methods->start(output, coords.x, coords.y);
+  methods->declare_color(output, 0, 0, 0);
+  methods->declare_color(output, NODE_R_COLOR, NODE_G_COLOR, NODE_B_COLOR);
+  methods->declare_color(output, SOCKET_R_COLOR, SOCKET_G_COLOR, SOCKET_B_COLOR);
+  methods->declare_color(output, MEMORY_R_COLOR, MEMORY_G_COLOR, MEMORY_B_COLOR);
+  methods->declare_color(output, CORE_R_COLOR, CORE_G_COLOR, CORE_B_COLOR);
+  methods->declare_color(output, THREAD_R_COLOR, THREAD_G_COLOR, THREAD_B_COLOR);
+  methods->declare_color(output, RUNNING_R_COLOR, RUNNING_G_COLOR, RUNNING_B_COLOR);
+  methods->declare_color(output, FORBIDDEN_R_COLOR, FORBIDDEN_G_COLOR, FORBIDDEN_B_COLOR);
+  methods->declare_color(output, OFFLINE_R_COLOR, OFFLINE_G_COLOR, OFFLINE_B_COLOR);
+  methods->declare_color(output, CACHE_R_COLOR, CACHE_G_COLOR, CACHE_B_COLOR);
+  methods->declare_color(output, MACHINE_R_COLOR, MACHINE_G_COLOR, MACHINE_B_COLOR);
+  methods->declare_color(output, SYSTEM_R_COLOR, SYSTEM_G_COLOR, SYSTEM_B_COLOR);
+  methods->declare_color(output, MISC_R_COLOR, MISC_G_COLOR, MISC_B_COLOR);
+  methods->declare_color(output, PCI_DEVICE_R_COLOR, PCI_DEVICE_G_COLOR, PCI_DEVICE_B_COLOR);
+  methods->declare_color(output, BRIDGE_R_COLOR, BRIDGE_G_COLOR, BRIDGE_B_COLOR);
+  return output;
+}
+
+void
+output_draw(struct draw_methods *methods, int logical, int legend, hwloc_topology_t topology, void *output)
+{
+	fig(topology, methods, logical, legend, hwloc_get_root_obj(topology), output, 100, 0, 0);
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-fig.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-fig.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-fig.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,132 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#include "lstopo.h"
+
+/* .fig back-end.  */
+
+#define FIG_FACTOR 20
+
+static void *
+fig_start(void *output_, int width __hwloc_attribute_unused, int height __hwloc_attribute_unused)
+{
+  FILE *output = output_;
+  fprintf(output, "#FIG 3.2  Produced by hwloc's lstopo\n");
+  fprintf(output, "Landscape\n");
+  fprintf(output, "Center\n");
+  fprintf(output, "Inches\n");
+  fprintf(output, "letter\n");
+  fprintf(output, "100.00\n");	/* magnification */
+  fprintf(output, "Single\n");	/* single page */
+  fprintf(output, "-2\n");	/* no transparent color */
+  fprintf(output, "1200 2\n");	/* 1200 ppi resolution, upper left origin */
+  return output;
+}
+
+static int __hwloc_attribute_const
+rgb_to_fig(int r, int g, int b)
+{
+  if (r == 0xff && g == 0xff && b == 0xff)
+    return 7;
+
+  if (!r && !g && !b)
+    return 0;
+
+  return 32 + rgb_to_color(r, g, b);
+}
+
+static void
+fig_declare_color(void *output_, int r, int g, int b)
+{
+  FILE *output = output_;
+  int color;
+
+  if (r == 0xff && g == 0xff && b == 0xff)
+    return;
+
+  if (!r && !g && !b)
+    return;
+
+  color = declare_color(r, g, b);
+
+  fprintf(output, "0 %d #%02x%02x%02x\n", 32 + color, r, g, b);
+}
+
+static void
+fig_box(void *output_, int r, int g, int b, unsigned depth, unsigned x, unsigned width, unsigned y, unsigned height)
+{
+  FILE *output = output_;
+  x *= FIG_FACTOR;
+  y *= FIG_FACTOR;
+  width *= FIG_FACTOR;
+  height *= FIG_FACTOR;
+  fprintf(output, "2 2 0 1 0 %d %u -1 20 0.0 0 0 -1 0 0 5\n\t", rgb_to_fig(r, g, b), depth);
+  fprintf(output, " %u %u", x, y);
+  fprintf(output, " %u %u", x + width, y);
+  fprintf(output, " %u %u", x + width, y + height);
+  fprintf(output, " %u %u", x, y + height);
+  fprintf(output, " %u %u", x, y);
+  fprintf(output, "\n");
+}
+
+static void
+fig_line(void *output_, int r, int g, int b, unsigned depth, unsigned x1, unsigned y1, unsigned x2, unsigned y2)
+{
+  FILE *output = output_;
+  x1 *= FIG_FACTOR;
+  y1 *= FIG_FACTOR;
+  x2 *= FIG_FACTOR;
+  y2 *= FIG_FACTOR;
+  fprintf(output, "2 1 0 1 0 %d %u -1 -1 0.0 0 0 -1 0 0 2\n\t", rgb_to_fig(r, g, b), depth);
+  fprintf(output, " %u %u", x1, y1);
+  fprintf(output, " %u %u", x2, y2);
+  fprintf(output, "\n");
+}
+
+static void
+fig_text(void *output_, int r, int g, int b, int size, unsigned depth, unsigned x, unsigned y, const char *text)
+{
+  FILE *output = output_;
+  unsigned len = strlen(text);
+  int color = rgb_to_fig(r, g, b);
+  x *= FIG_FACTOR;
+  y *= FIG_FACTOR;
+  size = (size * 16) / 10;
+  fprintf(output, "4 0 %d %u -1 0 %d 0.0 4 %d %u %u %u %s\\001\n", color, depth, size, size * 10, len * size * 10, x, y + size * 10, text);
+}
+
+static struct draw_methods fig_draw_methods = {
+  fig_start,
+  fig_declare_color,
+  fig_box,
+  fig_line,
+  fig_text,
+};
+
+void
+output_fig (hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+{
+  FILE *output = open_file(filename, "w");
+  if (!output) {
+    fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+    return;
+  }
+
+  output = output_draw_start(&fig_draw_methods, logical, legend, topology, output);
+  output_draw(&fig_draw_methods, logical, legend, topology, output);
+
+  if (output != stdout)
+    fclose(output);
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-text.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-text.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-text.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,795 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2012 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/autogen/config.h>
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+
+#ifdef HAVE_SETLOCALE
+#include <locale.h>
+#endif /* HAVE_SETLOCALE */
+
+#ifdef HAVE_NL_LANGINFO
+#include <langinfo.h>
+#endif /* HAVE_NL_LANGINFO */
+
+#ifdef HAVE_PUTWC
+#include <wchar.h>
+#endif /* HAVE_PUTWC */
+
+#ifdef HWLOC_HAVE_LIBTERMCAP
+#ifdef HWLOC_USE_NCURSES
+#  include <ncurses.h>
+#else
+#  include <curses.h>
+#endif
+#include <term.h>
+#endif /* HWLOC_HAVE_LIBTERMCAP */
+
+#include "lstopo.h"
+#include "misc.h"
+
+#define indent(output, i) \
+  fprintf (output, "%*s", (int) i, "");
+
+/*
+ * Console fashion text output
+ */
+
+static void
+output_console_obj (hwloc_obj_t l, FILE *output, int logical, int verbose_mode)
+{
+  char type[32], *attr, phys[32] = "";
+  unsigned idx = logical ? l->logical_index : l->os_index;
+  const char *indexprefix = logical ? " L#" :  " P#";
+  if (show_cpuset < 2) {
+    int len;
+    if (l->type == HWLOC_OBJ_MISC && l->name)
+      fprintf(output, "%s", l->name);
+    else {
+      hwloc_obj_type_snprintf (type, sizeof(type), l, verbose_mode-1);
+      fprintf(output, "%s", type);
+    }
+    if (l->depth != 0 && idx != (unsigned)-1
+        && l->type != HWLOC_OBJ_PCI_DEVICE
+        && (l->type != HWLOC_OBJ_BRIDGE || l->attr->bridge.upstream_type == HWLOC_OBJ_BRIDGE_HOST))
+      fprintf(output, "%s%u", indexprefix, idx);
+    if (logical && l->os_index != (unsigned) -1 &&
+	(verbose_mode >= 2 || l->type == HWLOC_OBJ_PU || l->type == HWLOC_OBJ_NODE))
+      snprintf(phys, sizeof(phys), "P#%u", l->os_index);
+    len = hwloc_obj_attr_snprintf (NULL, 0, l, " ", verbose_mode-1);
+    attr = malloc(len+1);
+    *attr = '\0';
+    hwloc_obj_attr_snprintf (attr, len+1, l, " ", verbose_mode-1);
+    if (*phys || *attr) {
+      const char *separator = *phys != '\0' && *attr!= '\0' ? " " : "";
+      fprintf(output, " (%s%s%s)",
+	      phys, separator, attr);
+    }
+    free(attr);
+    if ((l->type == HWLOC_OBJ_OS_DEVICE || verbose_mode >= 2) && l->name && l->type != HWLOC_OBJ_MISC)
+      fprintf(output, " \"%s\"", l->name);
+  }
+  if (!l->cpuset)
+    return;
+  if (show_cpuset == 1)
+    fprintf(output, " cpuset=");
+  if (show_cpuset) {
+    char *cpusetstr;
+    if (taskset)
+      hwloc_bitmap_taskset_asprintf(&cpusetstr, l->cpuset);
+    else
+      hwloc_bitmap_asprintf(&cpusetstr, l->cpuset);
+    fprintf(output, "%s", cpusetstr);
+    free(cpusetstr);
+  }
+}
+
+/* Recursively output topology in a console fashion */
+static void
+output_topology (hwloc_topology_t topology, hwloc_obj_t l, hwloc_obj_t parent, FILE *output, int i, int logical, int verbose_mode)
+{
+  unsigned x;
+  int group_identical = (verbose_mode <= 1) && !show_cpuset;
+  if (group_identical
+      && parent && parent->arity == 1
+      && l->cpuset && parent->cpuset && hwloc_bitmap_isequal(l->cpuset, parent->cpuset)) {
+    /* in non-verbose mode, merge objects with their parent is they are exactly identical */
+    fprintf(output, " + ");
+  } else {
+    if (parent)
+      fprintf(output, "\n");
+    indent (output, 2*i);
+    i++;
+  }
+  output_console_obj(l, output, logical, verbose_mode);
+  if (l->arity || (!i && !l->arity))
+    {
+      for (x=0; x<l->arity; x++)
+	output_topology (topology, l->children[x], l, output, i, logical, verbose_mode);
+  }
+}
+
+/* Recursive so that multiple depth types are properly shown */
+static void
+output_only (hwloc_topology_t topology, hwloc_obj_t l, FILE *output, int logical, int verbose_mode)
+{
+  unsigned x;
+  if (show_only == l->type) {
+    output_console_obj (l, output, logical, verbose_mode);
+    fprintf (output, "\n");
+  }
+  for (x=0; x<l->arity; x++)
+    output_only (topology, l->children[x], output, logical, verbose_mode);
+}
+
+void output_console(hwloc_topology_t topology, const char *filename, int logical, int legend __hwloc_attribute_unused, int verbose_mode)
+{
+  unsigned topodepth;
+  FILE *output;
+
+  if (!filename || !strcmp(filename, "-"))
+    output = stdout;
+  else {
+    output = open_file(filename, "w"); 
+    if (!output) {
+      fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+      return;
+    }
+  }
+
+  topodepth = hwloc_topology_get_depth(topology);
+
+  /*
+   * if verbose_mode == 0, only print the summary.
+   * if verbose_mode == 1, only print the topology tree.
+   * if verbose_mode > 1, print both.
+   */
+
+  if (show_only != (hwloc_obj_type_t)-1) {
+    if (verbose_mode > 1)
+      fprintf(output, "Only showing %s objects\n", hwloc_obj_type_string(show_only));
+    output_only (topology, hwloc_get_root_obj(topology), output, logical, verbose_mode);
+  } else if (verbose_mode >= 1) {
+    output_topology (topology, hwloc_get_root_obj(topology), NULL, output, 0, logical, verbose_mode);
+    fprintf(output, "\n");
+  }
+
+  if (verbose_mode > 1 || !verbose_mode) {
+    unsigned depth, nbobjs;
+    for (depth = 0; depth < topodepth; depth++) {
+      hwloc_obj_type_t type = hwloc_get_depth_type (topology, depth);
+      nbobjs = hwloc_get_nbobjs_by_depth (topology, depth);
+      indent(output, depth);
+      fprintf (output, "depth %u:\t%u %s%s (type #%u)\n",
+	       depth, nbobjs, hwloc_obj_type_string (type), nbobjs>1?"s":"", type);
+    }
+    nbobjs = hwloc_get_nbobjs_by_depth (topology, HWLOC_TYPE_DEPTH_BRIDGE);
+    if (nbobjs)
+      fprintf (output, "Special depth %d:\t%u %s%s (type #%u)\n",
+	       HWLOC_TYPE_DEPTH_BRIDGE, nbobjs, "Bridge", nbobjs>1?"s":"", HWLOC_OBJ_BRIDGE);
+    nbobjs = hwloc_get_nbobjs_by_depth (topology, HWLOC_TYPE_DEPTH_PCI_DEVICE);
+    if (nbobjs)
+      fprintf (output, "Special depth %d:\t%u %s%s (type #%u)\n",
+	       HWLOC_TYPE_DEPTH_PCI_DEVICE, nbobjs, "PCI Device", nbobjs>1?"s":"", HWLOC_OBJ_PCI_DEVICE);
+    nbobjs = hwloc_get_nbobjs_by_depth (topology, HWLOC_TYPE_DEPTH_OS_DEVICE);
+    if (nbobjs)
+      fprintf (output, "Special depth %d:\t%u %s%s (type #%u)\n",
+	       HWLOC_TYPE_DEPTH_OS_DEVICE, nbobjs, "OS Device", nbobjs>1?"s":"", HWLOC_OBJ_OS_DEVICE);
+  }
+
+  if (verbose_mode > 1) {
+    const struct hwloc_distances_s * distances;
+    unsigned depth;
+
+    for (depth = 0; depth < topodepth; depth++) {
+      distances = hwloc_get_whole_distance_matrix_by_depth(topology, depth);
+      if (!distances || !distances->latency)
+        continue;
+      printf("latency matrix between %ss (depth %u) by %s indexes:\n",
+	     hwloc_obj_type_string(hwloc_get_depth_type(topology, depth)),
+	     depth,
+	     logical ? "logical" : "physical");
+      hwloc_utils_print_distance_matrix(topology, hwloc_get_root_obj(topology), distances->nbobjs, depth, distances->latency, logical);
+    }
+  }
+
+  if (verbose_mode > 1) {
+    hwloc_const_bitmap_t complete = hwloc_topology_get_complete_cpuset(topology);
+    hwloc_const_bitmap_t topo = hwloc_topology_get_topology_cpuset(topology);
+    hwloc_const_bitmap_t online = hwloc_topology_get_online_cpuset(topology);
+    hwloc_const_bitmap_t allowed = hwloc_topology_get_allowed_cpuset(topology);
+
+    if (complete && !hwloc_bitmap_isequal(topo, complete)) {
+      hwloc_bitmap_t unknown = hwloc_bitmap_alloc();
+      char *unknownstr;
+      hwloc_bitmap_copy(unknown, complete);
+      hwloc_bitmap_andnot(unknown, unknown, topo);
+      hwloc_bitmap_asprintf(&unknownstr, unknown);
+      fprintf (output, "%d processors not represented in topology: %s\n", hwloc_bitmap_weight(unknown), unknownstr);
+      free(unknownstr);
+      hwloc_bitmap_free(unknown);
+    }
+    if (complete && !hwloc_bitmap_isequal(online, complete)) {
+      hwloc_bitmap_t offline = hwloc_bitmap_alloc();
+      char *offlinestr;
+      hwloc_bitmap_copy(offline, complete);
+      hwloc_bitmap_andnot(offline, offline, online);
+      hwloc_bitmap_asprintf(&offlinestr, offline);
+      fprintf (output, "%d processors offline: %s\n", hwloc_bitmap_weight(offline), offlinestr);
+      free(offlinestr);
+      hwloc_bitmap_free(offline);
+    }
+    if (complete && !hwloc_bitmap_isequal(allowed, online)) {
+      if (!hwloc_bitmap_isincluded(online, allowed)) {
+        hwloc_bitmap_t forbidden = hwloc_bitmap_alloc();
+        char *forbiddenstr;
+        hwloc_bitmap_copy(forbidden, online);
+        hwloc_bitmap_andnot(forbidden, forbidden, allowed);
+        hwloc_bitmap_asprintf(&forbiddenstr, forbidden);
+        fprintf(output, "%d processors online but not allowed: %s\n", hwloc_bitmap_weight(forbidden), forbiddenstr);
+        free(forbiddenstr);
+        hwloc_bitmap_free(forbidden);
+      }
+      if (!hwloc_bitmap_isincluded(allowed, online)) {
+        hwloc_bitmap_t potential = hwloc_bitmap_alloc();
+        char *potentialstr;
+        hwloc_bitmap_copy(potential, allowed);
+        hwloc_bitmap_andnot(potential, potential, online);
+        hwloc_bitmap_asprintf(&potentialstr, potential);
+        fprintf(output, "%d processors allowed but not online: %s\n", hwloc_bitmap_weight(potential), potentialstr);
+        free(potentialstr);
+        hwloc_bitmap_free(potential);
+      }
+    }
+    if (!hwloc_topology_is_thissystem(topology))
+      fprintf (output, "Topology not from this system\n");
+  }
+
+  if (output != stdout)
+    fclose(output);
+}
+
+void output_synthetic(hwloc_topology_t topology, const char *filename, int logical __hwloc_attribute_unused, int legend __hwloc_attribute_unused, int verbose_mode __hwloc_attribute_unused)
+{
+  FILE *output;
+  hwloc_obj_t obj = hwloc_get_root_obj(topology);
+  int arity;
+
+  if (!filename || !strcmp(filename, "-"))
+    output = stdout;
+  else {
+    output = open_file(filename, "w");
+    if (!output) {
+      fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+      return;
+    }
+  }
+
+  if (!obj->symmetric_subtree) {
+    fprintf(stderr, "Cannot output assymetric topology in synthetic format\n");
+    return;
+  }
+
+  arity = obj->arity;
+  while (arity) {
+    obj = obj->first_child;
+    fprintf(output, "%s:%u ", hwloc_obj_type_string(obj->type), arity);
+    arity = obj->arity;
+  }
+  fprintf(output, "\n");
+}
+
+/*
+ * Pretty text output
+ */
+
+/* Uses unicode bars if available */
+#ifdef HAVE_PUTWC
+typedef wchar_t character;
+#define PRIchar "lc"
+#define putcharacter(c,f) putwc(c,f)
+#else /* HAVE_PUTWC */
+typedef unsigned char character;
+#define PRIchar "c"
+#define putcharacter(c,f) putc(c,f)
+#endif /* HAVE_PUTWC */
+
+#ifdef HWLOC_HAVE_LIBTERMCAP
+static int myputchar(int c) {
+  return putcharacter(c, stdout);
+}
+#endif /* HWLOC_HAVE_LIBTERMCAP */
+
+/* Off-screen rendering buffer */
+struct cell {
+  character c;
+#ifdef HWLOC_HAVE_LIBTERMCAP
+  int fr, fg, fb;
+  int br, bg, bb;
+#endif /* HWLOC_HAVE_LIBTERMCAP */
+};
+
+struct display {
+  struct cell **cells;
+  int width;
+  int height;
+  int utf8;
+};
+
+/* Allocate the off-screen buffer */
+static void *
+text_start(void *output __hwloc_attribute_unused, int width, int height)
+{
+  int j, i;
+  struct display *disp = malloc(sizeof(*disp));
+  /* terminals usually have narrow characters, so let's make them wider */
+  width /= (gridsize/2);
+  height /= gridsize;
+  disp->cells = malloc(height * sizeof(*disp->cells));
+  disp->width = width;
+  disp->height = height;
+  for (j = 0; j < height; j++) {
+    disp->cells[j] = calloc(width, sizeof(**disp->cells));
+    for (i = 0; i < width; i++)
+      disp->cells[j][i].c = ' ';
+  }
+#ifdef HAVE_NL_LANGINFO
+  disp->utf8 = !strcmp(nl_langinfo(CODESET), "UTF-8");
+#endif /* HAVE_NL_LANGINFO */
+  return disp;
+}
+
+#ifdef HWLOC_HAVE_LIBTERMCAP
+/* Standard terminfo strings */
+static char *initc = NULL, *initp = NULL;
+
+/* Set text color to bright white or black according to the background */
+static int set_textcolor(int rr, int gg, int bb)
+{
+  if (!initc && !initp && rr + gg + bb < 2) {
+    if (enter_bold_mode)
+      tputs(enter_bold_mode, 1, myputchar);
+    return 7;
+  } else {
+    if (exit_attribute_mode)
+      tputs(exit_attribute_mode, 1, myputchar);
+    return 0;
+  }
+}
+
+static void
+set_color(int fr, int fg, int fb, int br, int bg, int bb)
+{
+  char *toput;
+  int color, textcolor;
+
+  if (initc || initp) {
+    /* Can set rgb color, easy */
+    textcolor = rgb_to_color(fr, fg, fb) + 16;
+    color = rgb_to_color(br, bg, bb) + 16;
+  } else {
+    /* Magic trigger: it seems to separate colors quite well */
+    int brr = br >= 0xe0;
+    int bgg = bg >= 0xe0;
+    int bbb = bb >= 0xe0;
+
+    if (set_a_background)
+      /* ANSI colors */
+      color = (brr << 0) | (bgg << 1) | (bbb << 2);
+    else
+      /* Legacy colors */
+      color = (brr << 2) | (bgg << 1) | (bbb << 0);
+    textcolor = set_textcolor(brr, bgg, bbb);
+  }
+
+  /* And now output magic string to TTY */
+  if (set_a_foreground) {
+    /* foreground */
+    if ((toput = tparm(set_a_foreground, textcolor, 0, 0, 0, 0, 0, 0, 0, 0)))
+      tputs(toput, 1, myputchar);
+    /* background */
+    if ((toput = tparm(set_a_background, color, 0, 0, 0, 0, 0, 0, 0, 0)))
+      tputs(toput, 1, myputchar);
+  } else if (set_foreground) {
+    /* foreground */
+    if ((toput = tparm(set_foreground, textcolor, 0, 0, 0, 0, 0, 0, 0, 0)))
+      tputs(toput, 1, myputchar);
+    /* background */
+    if ((toput = tparm(set_background, color, 0, 0, 0, 0, 0, 0, 0, 0)))
+      tputs(toput, 1, myputchar);
+  } else if (set_color_pair) {
+    /* pair */
+    if ((toput = tparm(set_color_pair, color, 0, 0, 0, 0, 0, 0, 0, 0)))
+      tputs(toput, 1, myputchar);
+  }
+}
+#endif /* HWLOC_HAVE_LIBTERMCAP */
+
+/* We we can, allocate rgb colors */
+static void
+text_declare_color(void *output __hwloc_attribute_unused, int r __hwloc_attribute_unused, int g __hwloc_attribute_unused, int b __hwloc_attribute_unused)
+{
+#ifdef HWLOC_HAVE_LIBTERMCAP
+  int color = declare_color(r, g, b);
+  /* Yes, values seem to range from 0 to 1000 inclusive */
+  int rr = (r * 1001) / 256;
+  int gg = (g * 1001) / 256;
+  int bb = (b * 1001) / 256;
+  char *toput;
+
+  if (initc) {
+    if ((toput = tparm(initc, color + 16, rr, gg, bb, 0, 0, 0, 0, 0)))
+      tputs(toput, 1, myputchar);
+  } else if (initp) {
+    if ((toput = tparm(initp, color + 16, 0, 0, 0, rr, gg, bb, 0, 0)))
+      tputs(toput, 1, myputchar);
+  }
+#endif /* HWLOC_HAVE_LIBTERMCAP */
+}
+
+/* output text, erasing any previous content */
+static void
+put(struct display *disp, int x, int y, character c, int fr __hwloc_attribute_unused, int fg __hwloc_attribute_unused, int fb __hwloc_attribute_unused, int br __hwloc_attribute_unused, int bg __hwloc_attribute_unused, int bb __hwloc_attribute_unused)
+{
+  if (x >= disp->width || y >= disp->height) {
+    /* fprintf(stderr, "%"PRIchar" overflowed to (%d,%d)\n", c, x, y); */
+    return;
+  }
+  disp->cells[y][x].c = c;
+#ifdef HWLOC_HAVE_LIBTERMCAP
+  if (fr != -1) {
+    disp->cells[y][x].fr = fr;
+    disp->cells[y][x].fg = fg;
+    disp->cells[y][x].fb = fb;
+  }
+  if (br != -1) {
+    disp->cells[y][x].br = br;
+    disp->cells[y][x].bg = bg;
+    disp->cells[y][x].bb = bb;
+  }
+#endif /* HWLOC_HAVE_LIBTERMCAP */
+}
+
+/* Where bars of a character go to */
+enum {
+  up = (1<<0),
+  down = (1<<1),
+  left = (1<<2),
+  right = (1<<3)
+};
+
+/* Convert a bar character into its directions */
+static int
+to_directions(struct display *disp, character c)
+{
+#ifdef HAVE_PUTWC
+  if (disp->utf8) {
+    switch (c) {
+      case L'\x250c': return down|right;
+      case L'\x2510': return down|left;
+      case L'\x2514': return up|right;
+      case L'\x2518': return up|left;
+      case L'\x2500': return left|right;
+      case L'\x2502': return down|up;
+      case L'\x2577': return down;
+      case L'\x2575': return up;
+      case L'\x2576': return right;
+      case L'\x2574': return left;
+      case L'\x251c': return down|up|right;
+      case L'\x2524': return down|up|left;
+      case L'\x252c': return down|left|right;
+      case L'\x2534': return up|left|right;
+      case L'\x253c': return down|up|left|right;
+      default: return 0;
+    }
+  } else
+#endif /* HAVE_PUTWC */
+  {
+    switch (c) {
+      case L'-': return left|right;
+      case L'|': return down|up;
+      case L'/':
+      case L'\\':
+      case L'+': return down|up|left|right;
+      default: return 0;
+    }
+  }
+}
+
+/* Produce a bar character given the wanted directions */
+static character
+from_directions(struct display *disp, int direction)
+{
+#ifdef HAVE_PUTWC
+  if (disp->utf8) {
+    switch (direction) {
+    case down|right:		return L'\x250c';
+    case down|left:		return L'\x2510';
+    case up|right:		return L'\x2514';
+    case up|left:		return L'\x2518';
+    case left|right:		return L'\x2500';
+    case down|up:		return L'\x2502';
+    case down:			return L'\x2577';
+    case up:			return L'\x2575';
+    case right:			return L'\x2576';
+    case left:			return L'\x2574';
+    case down|up|right:		return L'\x251c';
+    case down|up|left:		return L'\x2524';
+    case down|left|right:	return L'\x252c';
+    case up|left|right:		return L'\x2534';
+    case down|up|left|right:	return L'\x253c';
+    default:			return L' ';
+    };
+  } else
+#endif /* HAVE_PUTWC */
+  {
+    switch (direction) {
+    case down|right:		return '/';
+    case down|left:		return '\\';
+    case up|right:		return '\\';
+    case up|left:		return '/';
+    case left|right:		return '-';
+    case down|up:		return '|';
+    case down:			return '|';
+    case up:			return '|';
+    case right:			return '-';
+    case left:			return '-';
+    case down|up|right:		return '+';
+    case down|up|left:		return '+';
+    case down|left|right:	return '+';
+    case up|left|right:		return '+';
+    case down|up|left|right:	return '+';
+    default:			return ' ';
+    };
+  }
+}
+
+/* output bars, merging with existing bars: `andnot' are removed, `or' are added */
+static void
+merge(struct display *disp, int x, int y, int or, int andnot, int r, int g, int b)
+{
+  character current;
+  int directions;
+  if (x >= disp->width || y >= disp->height) {
+    /* fprintf(stderr, "|%x &~%x overflowed to (%d,%d)\n", or, andnot, x, y); */
+    return;
+  }
+  current = disp->cells[y][x].c;
+  directions = (to_directions(disp, current) & ~andnot) | or;
+  put(disp, x, y, from_directions(disp, directions), -1, -1, -1, r, g, b);
+}
+
+/* Now we can implement the standard drawing helpers */
+static void
+text_box(void *output, int r, int g, int b, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned width, unsigned y1, unsigned height)
+{
+  struct display *disp = output;
+  unsigned i, j;
+  unsigned x2, y2;
+  x1 /= (gridsize/2);
+  width /= (gridsize/2);
+  y1 /= gridsize;
+  height /= gridsize;
+  x2 = x1 + width - 1;
+  y2 = y1 + height - 1;
+
+  /* Corners */
+  merge(disp, x1, y1, down|right, 0, r, g, b);
+  merge(disp, x2, y1, down|left, 0, r, g, b);
+  merge(disp, x1, y2, up|right, 0, r, g, b);
+  merge(disp, x2, y2, up|left, 0, r, g, b);
+
+  for (i = 1; i < width - 1; i++) {
+    /* upper line */
+    merge(disp, x1 + i, y1, left|right, down, r, g, b);
+    /* lower line */
+    merge(disp, x1 + i, y2, left|right, up, r, g, b);
+  }
+  for (j = 1; j < height - 1; j++) {
+    /* left line */
+    merge(disp, x1, y1 + j, up|down, right, r, g, b);
+    /* right line */
+    merge(disp, x2, y1 + j, up|down, left, r, g, b);
+  }
+  for (j = y1 + 1; j < y2; j++) {
+    for (i = x1 + 1; i < x2; i++) {
+      put(disp, i, j, ' ', -1, -1, -1, r, g, b);
+    }
+  }
+}
+
+static void
+text_line(void *output, int r __hwloc_attribute_unused, int g __hwloc_attribute_unused, int b __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned y1, unsigned x2, unsigned y2)
+{
+  struct display *disp = output;
+  unsigned i, j, z;
+  x1 /= (gridsize/2);
+  y1 /= gridsize;
+  x2 /= (gridsize/2);
+  y2 /= gridsize;
+
+  /* Canonicalize coordinates */
+  if (x1 > x2) {
+    z = x1;
+    x1 = x2;
+    x2 = z;
+  }
+  if (y1 > y2) {
+    z = y1;
+    y1 = y2;
+    y2 = z;
+  }
+
+  /* vertical/horizontal should be enough, but should mix with existing
+   * characters for better output ! */
+
+  if (x1 == x2) {
+    /* Vertical */
+    if (y1 == y2) {
+      /* Hu ?! That's a point, let's do nothing... */
+    } else {
+      /* top */
+      merge(disp, x1, y1, down, 0, -1, -1, -1);
+      /* bottom */
+      merge(disp, x1, y2, up, 0, -1, -1, -1);
+    }
+    for (j = y1 + 1; j < y2; j++)
+      merge(disp, x1, j, down|up, 0, -1, -1, -1);
+  } else if (y1 == y2) {
+    /* Horizontal */
+    /* left */
+    merge(disp, x1, y1, right, 0, -1, -1, -1);
+    /* right */
+    merge(disp, x2, y1, left, 0, -1, -1, -1);
+    for (i = x1 + 1; i < x2; i++)
+      merge(disp, i, y1, left|right, 0, -1, -1, -1);
+  } else {
+    /* Unsupported, sorry */
+  }
+}
+
+static void
+text_text(void *output, int r, int g, int b, int size __hwloc_attribute_unused, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned y, const char *text)
+{
+  struct display *disp = output;
+  x /= (gridsize/2);
+  y /= gridsize;
+
+#if defined(HAVE_PUTWC) && !defined(__MINGW32__)
+  {
+    size_t len = strlen(text) + 1;
+    wchar_t *wbuf = malloc(len * sizeof(wchar_t)), *wtext;
+    swprintf(wbuf, len, L"%s", text);
+    for (wtext = wbuf ; *wtext; wtext++)
+      put(disp, x++, y, *wtext, r, g, b, -1, -1, -1);
+    free(wbuf);
+  }
+#else
+  for ( ; *text; text++)
+    put(disp, x++, y, *text, r, g, b, -1, -1, -1);
+#endif
+}
+
+static struct draw_methods text_draw_methods = {
+  text_start,
+  text_declare_color,
+  text_box,
+  text_line,
+  text_text,
+};
+
+void output_text(hwloc_topology_t topology, const char *filename, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+{
+  FILE *output;
+  struct display *disp;
+  int i, j;
+  int lfr, lfg, lfb; /* Last foreground color */
+  int lbr, lbg, lbb; /* Last background color */
+#ifdef HWLOC_HAVE_LIBTERMCAP
+  int term = 0;
+  char *tmp;
+#endif
+
+  if (!filename || !strcmp(filename, "-"))
+    output = stdout;
+  else {
+    output = open_file(filename, "w"); 
+    if (!output) {
+      fprintf(stderr, "Failed to open %s for writing (%s)\n", filename, strerror(errno));
+      return;
+    }
+  }
+
+  /* Try to use utf-8 characters */
+#ifdef HAVE_SETLOCALE
+  setlocale(LC_ALL, "");
+#endif /* HAVE_SETLOCALE */
+
+#ifdef HWLOC_HAVE_LIBTERMCAP
+  /* If we are outputing to a tty, use colors */
+  if (output == stdout && isatty(STDOUT_FILENO)) {
+    term = !setupterm(NULL, STDOUT_FILENO, NULL);
+
+    if (term) {
+      /* reset colors */
+      if (orig_colors)
+        tputs(orig_colors, 1, myputchar);
+
+      /* Get terminfo(5) strings */
+      initp = initialize_pair;
+      if (max_pairs <= 16 || !initp || !set_color_pair) {
+	/* Can't use max_pairs to define our own colors */
+	initp = NULL;
+	if (max_colors > 16)
+	  if (can_change)
+            initc = initialize_color;
+      }
+      /* Prevent a trivial compiler warning because the param of
+         tgetflag is (char*), not (const char*). */
+      tmp = strdup("lhs");
+      if (tgetflag(tmp)) {
+	/* Sorry, I'm lazy to convert colors and I don't know any terminal
+	 * using LHS anyway */
+	initc = initp = 0;
+      }
+      free(tmp);
+    }
+  }
+#endif /* HWLOC_HAVE_LIBTERMCAP */
+
+  disp = output_draw_start(&text_draw_methods, logical, legend, topology, output);
+  output_draw(&text_draw_methods, logical, legend, topology, disp);
+
+  lfr = lfg = lfb = -1;
+  lbr = lbg = lbb = -1;
+  for (j = 0; j < disp->height; j++) {
+    for (i = 0; i < disp->width; i++) {
+#ifdef HWLOC_HAVE_LIBTERMCAP
+      if (term) {
+	/* TTY output, use colors */
+	int fr = disp->cells[j][i].fr;
+	int fg = disp->cells[j][i].fg;
+	int fb = disp->cells[j][i].fb;
+	int br = disp->cells[j][i].br;
+	int bg = disp->cells[j][i].bg;
+	int bb = disp->cells[j][i].bb;
+
+	/* Avoid too much work for the TTY */
+	if (fr != lfr || fg != lfg || fb != lfb
+	 || br != lbr || bg != lbg || bb != lbb) {
+	  set_color(fr, fg, fb, br, bg, bb);
+	  lfr = fr;
+	  lfg = fg;
+	  lfb = fb;
+	  lbr = br;
+	  lbg = bg;
+	  lbb = bb;
+	}
+      }
+#endif /* HWLOC_HAVE_LIBTERMCAP */
+      putcharacter(disp->cells[j][i].c, output);
+    }
+#ifdef HWLOC_HAVE_LIBTERMCAP
+    /* Keep the rest of the line as default */
+    if (term && orig_pair) {
+      lfr = lfg = lfb = -1;
+      lbr = lbg = lbb = -1;
+      tputs(orig_pair, 1, myputchar);
+    }
+#endif /* HWLOC_HAVE_LIBTERMCAP */
+    putcharacter('\n', output);
+  }
+
+  if (output != stdout)
+    fclose(output);
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-windows.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-windows.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-windows.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,304 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <hwloc.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <windows.h>
+#include <windowsx.h>
+
+#include "lstopo.h"
+
+/* windows back-end.  */
+
+static struct color {
+  int r, g, b;
+  HGDIOBJ brush;
+} *colors;
+
+static int numcolors;
+
+static HGDIOBJ
+rgb_to_brush(int r, int g, int b)
+{
+  int i;
+
+  for (i = 0; i < numcolors; i++)
+    if (colors[i].r == r && colors[i].g == g && colors[i].b == b)
+      return colors[i].brush;
+
+  fprintf(stderr, "color #%02x%02x%02x not declared\n", r, g, b);
+  exit(EXIT_FAILURE);
+}
+
+struct draw_methods windows_draw_methods;
+
+static hwloc_topology_t the_topology;
+static int the_logical;
+static int the_legend;
+static int state, control;
+static int x, y, x_delta, y_delta;
+static int finish;
+static int the_width, the_height;
+static int win_width, win_height;
+static unsigned int the_fontsize, the_gridsize;
+
+static void
+windows_box(void *output, int r, int g, int b, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned width, unsigned y, unsigned height);
+
+static LRESULT CALLBACK
+WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
+{
+  int redraw = 0;
+  switch (message) {
+    case WM_PAINT: {
+      HDC hdc;
+      PAINTSTRUCT ps;
+      hdc = BeginPaint(hwnd, &ps);
+      windows_box(&ps, 0xff, 0xff, 0xff, 0, 0, win_width, 0, win_height);
+      output_draw(&windows_draw_methods, the_logical, the_legend, the_topology, &ps);
+      EndPaint(hwnd, &ps);
+      break;
+    }
+    case WM_LBUTTONDOWN: 
+      state = 1;
+      x = GET_X_LPARAM(lparam);
+      y = GET_Y_LPARAM(lparam);
+      break;
+    case WM_LBUTTONUP: 
+      state = 0;
+      break;
+    case WM_MOUSEMOVE:
+      if (!(wparam & MK_LBUTTON))
+        state = 0;
+      if (state) {
+        int new_x = GET_X_LPARAM(lparam);
+        int new_y = GET_Y_LPARAM(lparam);
+        x_delta -= new_x - x;
+        y_delta -= new_y - y;
+        x = new_x;
+        y = new_y;
+        redraw = 1;
+      }
+      break;
+    case WM_KEYDOWN:
+      switch (wparam) {
+      case 'q':
+      case 'Q':
+      case VK_ESCAPE:
+        finish = 1;
+        break;
+      case VK_LEFT:
+        x_delta -= win_width/10;
+        redraw = 1;
+        break;
+      case VK_RIGHT:
+        x_delta += win_width/10;
+        redraw = 1;
+        break;
+      case VK_UP:
+        y_delta -= win_height/10;
+        redraw = 1;
+        break;
+      case VK_DOWN:
+        y_delta += win_height/10;
+        redraw = 1;
+        break;
+      case VK_PRIOR:
+        if (control) {
+          x_delta -= win_width;
+          redraw = 1;
+        } else {
+          y_delta -= win_height;
+          redraw = 1;
+        }
+        break;
+      case VK_NEXT:
+        if (control) {
+          x_delta += win_width;
+          redraw = 1;
+        } else {
+          y_delta += win_height;
+          redraw = 1;
+        }
+        break;
+      case VK_HOME:
+        x_delta = 0;
+        y_delta = 0;
+        redraw = 1;
+        break;
+      case VK_END:
+        x_delta = INT_MAX;
+        y_delta = INT_MAX;
+        redraw = 1;
+        break;
+      case VK_CONTROL:
+        control = 1;
+        break;
+      }
+      break;
+    case WM_KEYUP:
+      switch (wparam) {
+      case VK_CONTROL:
+        control = 0;
+        break;
+      }
+      break;
+    case WM_DESTROY:
+      PostQuitMessage(0);
+      return 0;
+    case WM_SIZE:
+      win_width = LOWORD(lparam);
+      win_height = HIWORD(lparam);
+      redraw = 1;
+      break;
+  }
+  if (redraw) {
+    if (x_delta > the_width - win_width)
+      x_delta = the_width - win_width;
+    if (y_delta > the_height - win_height)
+      y_delta = the_height - win_height;
+    if (x_delta < 0)
+      x_delta = 0;
+    if (y_delta < 0)
+      y_delta = 0;
+    if (win_width > the_width && win_height > the_height) {
+      fontsize = the_fontsize;
+      gridsize = the_gridsize;
+      if (win_width > the_width) {
+        fontsize = the_fontsize * win_width / the_width;
+        gridsize = the_gridsize * win_width / the_width;
+      }
+      if (win_height > the_height) {
+        unsigned int new_fontsize = the_fontsize * win_height / the_height;
+        unsigned int new_gridsize = the_gridsize * win_height / the_height;
+	if (new_fontsize < fontsize)
+	  fontsize = new_fontsize;
+	if (new_gridsize < gridsize)
+	  gridsize = new_gridsize;
+      }
+    }
+    RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE);
+  }
+  return DefWindowProc(hwnd, message, wparam, lparam);
+}
+
+static void *
+windows_start(void *output_ __hwloc_attribute_unused, int width, int height)
+{
+  WNDCLASS wndclass = {
+    .hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH),
+    .hCursor = LoadCursor(NULL, IDC_SIZEALL),
+    .hIcon = LoadIcon(NULL, IDI_APPLICATION),
+    .lpfnWndProc = WndProc,
+    .lpszClassName = "lstopo",
+  };
+  HWND toplevel;
+
+  win_width = width + 2*GetSystemMetrics(SM_CXSIZEFRAME);
+  win_height = height + 2*GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CYCAPTION);
+
+  if (win_width > GetSystemMetrics(SM_CXFULLSCREEN))
+    win_width = GetSystemMetrics(SM_CXFULLSCREEN);
+
+  if (win_height > GetSystemMetrics(SM_CYFULLSCREEN))
+    win_height = GetSystemMetrics(SM_CYFULLSCREEN);
+
+  RegisterClass(&wndclass);
+  toplevel = CreateWindow("lstopo", "lstopo", WS_OVERLAPPEDWINDOW,
+		  CW_USEDEFAULT, CW_USEDEFAULT,
+		  win_width, win_height, NULL, NULL, NULL, NULL);
+
+  the_width = width;
+  the_height = height;
+
+  the_fontsize = fontsize;
+  the_gridsize = gridsize;
+
+  ShowWindow(toplevel, SW_SHOWDEFAULT);
+
+  return toplevel;
+}
+
+static void
+windows_declare_color(void *output_ __hwloc_attribute_unused, int r, int g, int b)
+{
+  HBRUSH brush;
+  COLORREF color = RGB(r, g, b);
+
+  brush = CreateSolidBrush(color);
+  if (!brush) {
+    fprintf(stderr,"Could not allocate color %02x%02x%02x\n", r, g, b);
+    exit(EXIT_FAILURE);
+  }
+
+  colors = realloc(colors, sizeof(*colors) * (numcolors + 1));
+  colors[numcolors].r = r;
+  colors[numcolors].g = g;
+  colors[numcolors].b = b;
+  colors[numcolors].brush = (HGDIOBJ) brush;
+  numcolors++;
+}
+
+static void
+windows_box(void *output, int r, int g, int b, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned width, unsigned y, unsigned height)
+{
+  PAINTSTRUCT *ps = output;
+  SelectObject(ps->hdc, rgb_to_brush(r, g, b));
+  SetBkColor(ps->hdc, RGB(r, g, b));
+  Rectangle(ps->hdc, x - x_delta, y - y_delta, x + width - x_delta, y + height - y_delta);
+}
+
+static void
+windows_line(void *output, int r, int g, int b, unsigned depth __hwloc_attribute_unused, unsigned x1, unsigned y1, unsigned x2, unsigned y2)
+{
+  PAINTSTRUCT *ps = output;
+  SelectObject(ps->hdc, rgb_to_brush(r, g, b));
+  MoveToEx(ps->hdc, x1 - x_delta, y1 - y_delta, NULL);
+  LineTo(ps->hdc, x2 - x_delta, y2 - y_delta);
+}
+
+static void
+windows_text(void *output, int r, int g, int b, int size, unsigned depth __hwloc_attribute_unused, unsigned x, unsigned y, const char *text)
+{
+  PAINTSTRUCT *ps = output;
+  HFONT font;
+  SetTextColor(ps->hdc, RGB(r, g, b));
+  font = CreateFont(size, 0, 0, 0, 0, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, NULL);
+  SelectObject(ps->hdc, (HGDIOBJ) font);
+  TextOut(ps->hdc, x - x_delta, y - y_delta, text, strlen(text));
+  DeleteObject(font);
+}
+
+struct draw_methods windows_draw_methods = {
+  windows_start,
+  windows_declare_color,
+  windows_box,
+  windows_line,
+  windows_text,
+};
+
+void
+output_windows (hwloc_topology_t topology, const char *filename __hwloc_attribute_unused, int logical, int legend, int verbose_mode __hwloc_attribute_unused)
+{
+  HWND toplevel;
+  the_topology = topology;
+  the_logical = logical;
+  the_legend = legend;
+  toplevel = output_draw_start(&windows_draw_methods, logical, legend, topology, NULL);
+  UpdateWindow(toplevel);
+  MSG msg;
+  while (!finish && GetMessage(&msg, NULL, 0, 0)) {
+    TranslateMessage(&msg);
+    DispatchMessage(&msg);
+  }
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-xml.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-xml.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo-xml.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,25 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/autogen/config.h>
+
+#include <hwloc.h>
+#include <string.h>
+
+#include "lstopo.h"
+
+void output_xml(hwloc_topology_t topology, const char *filename, int logical __hwloc_attribute_unused, int legend __hwloc_attribute_unused, int verbose_mode __hwloc_attribute_unused)
+{
+  if (!filename || !strcasecmp(filename, "-.xml"))
+    filename = "-";
+
+  if (hwloc_topology_export_xml(topology, filename) < 0) {
+    fprintf(stderr, "Failed to export XML to %s (%s)\n", filename, strerror(errno));
+    return;
+  }
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.1in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.1in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.1in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,395 @@
+.\" -*- nroff -*-
+.\" Copyright © 2009-2011 inria.  All rights reserved.
+.\" Copyright © 2009-2010 Université of Bordeaux
+.\" Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
+.\" See COPYING in top-level directory.
+.TH LSTOPO "1" "#HWLOC_DATE#" "#PACKAGE_VERSION#" "#PACKAGE_NAME#"
+.SH NAME
+lstopo \- Show the topology of the system (note that hwloc-bind(1)
+provides a detailed explanation of the hwloc system; it should be read
+before reading this man page).
+.
+.\" **************************
+.\"    Synopsis Section
+.\" **************************
+.SH SYNOPSIS
+.
+.B lstopo
+[ \fIoptions \fR]... [ \fIfilename \fR]
+.
+.\" **************************
+.\"    Options Section
+.\" **************************
+.SH OPTIONS
+.
+.TP
+\fB\-\-of\fR <format>, \fB\-\-output\-format\fR <format>
+Enforce the output in the given format.
+See the OUTPUT FORMATS section below.
+.TP
+\fB\-i\fR <file>, \fB\-\-input\fR <file>
+Read topology from XML file <file> (instead of discovering the
+topology on the local machine).  If <file> is "\-", the standard input
+is used.  XML support must have been compiled in to hwloc for this
+option to be usable.
+.TP
+\fB\-i\fR <directory>, \fB\-\-input\fR <directory>
+Read topology from the chroot specified by <directory> (instead of
+discovering the topology on the local machine).  This option is
+generally only available on Linux.  The chroot was usually created
+by gathering another machine topology with hwloc-gather-topology.
+.TP
+\fB\-i\fR <specification>, \fB\-\-input\fR <specification>
+Simulate a fake hierarchy (instead of discovering the topology on the
+local machine). If <specification> is "node:2 pu:3", the topology will
+contain two NUMA nodes with 3 processing units in each of them.
+The <specification> string must end with a number of PUs.
+.TP
+\fB\-\-if\fR <format>, \fB\-\-input\-format\fR <format>
+Enforce the input in the given format, among \fBxml\fR, \fBfsroot\fR
+and \fBsynthetic\fR.
+.TP
+\fB\-v\fR \fB\-\-verbose\fR
+Include additional detail.
+.TP
+\fB\-s\fR \fB\-\-silent\fR
+Reduce the amount of details to show.
+.TP
+\fB\-l\fR \fB\-\-logical\fR
+Display hwloc logical indexes instead of physical/OS indexes (default for console output).
+These indexes are prefixed with "L#".
+The physical indexes of some objects (PU and Node by default, all
+objects if verbose) will appear as object attribute "P#...".
+.TP
+\fB\-p\fR \fB\-\-physical\fR
+Display OS/physical indexes instead of hwloc logical indexes (default for graphical output).
+These indexes are prefixed with "P#" instead of "L#" in the console output.
+.TP
+\fB\-c\fR \fB\-\-cpuset\fR
+Display the cpuset of each object.
+.TP
+\fB\-C\fR \fB\-\-cpuset\-only\fR
+Only display the cpuset of each object; do not display anything else
+about the object.
+.TP
+\fB\-\-taskset\fR
+Show CPU set strings in the format recognized by the taskset command-line
+program instead of hwloc-specific CPU set string format.
+This option should be combined with \fB\-\-cpuset\fR or \fB\-\-cpuset\-only\fR,
+otherwise it will imply \fB\-\-cpuset\fR.
+.TP
+\fB\-\-only\fR <type>
+Only show objects of the given type in the textual output.
+.TP
+\fB\-\-ignore\fR <type>
+Ignore all objects of type <type> in the topology.
+.TP
+\fB\-\-no\-caches\fR
+Do not show caches.
+.TP
+\fB\-\-no\-useless\-caches\fR
+Do not show caches which do not have a hierarchical impact.
+.TP
+\fB\-\-whole\-system\fR
+Do not consider administration limitations.
+.TP
+\fB\-\-merge\fR
+Do not show levels that do not have a hierarchical impact.
+.TP
+\fB\-\-restrict\fR <cpuset>
+Restrict the topology to the given cpuset.
+.TP
+\fB\-\-restrict\fR binding
+Restrict the topology to the current process binding.
+This option requires the use of the actual current machine topology
+(or any other topology with \fB\-\-thissystem\fR or with
+HWLOC_THISSYSTEM set to 1 in the environment).
+.TP
+\fB\-\-no\-io\fB
+Do not show any I/O device or bridge.
+By default, common devices (GPUs, NICs, block devices, ...) and
+interesting bridges are shown.
+.TP
+\fB\-\-no\-bridges\fB
+Do not show any I/O bridge except hostbridges.
+By default, common devices (GPUs, NICs, block devices, ...) and
+interesting bridges are shown.
+.TP
+\fB\-\-whole\-io\fB
+Show all I/O devices and bridges.
+By default, only common devices (GPUs, NICs, block devices, ...) and
+interesting bridges are shown.
+.TP
+\fB\-\-thissystem\fR
+Assume that the selected backend provides the topology for the
+system on which we are running. 
+This is useful when using \fB\-\-restrict\fR binding and loading
+a custom topology such as an XML file.
+.TP
+\fB\-\-pid\fR <pid>
+Detect topology as seen by process <pid>, i.e. as if process <pid> did the
+discovery itself, and show its current binding. Note that this can for instance
+change the set of allowed processors. If 0 is given as pid, the current binding for the lstopo process will be shown.
+.TP
+\fB\-\-ps\fR \fB\-\-top\fR
+Show existing processes as misc objects in the output. To avoid uselessly
+cluttering the output, only processes that are restricted to some part of the
+machine are shown.  On Linux, kernel threads are not shown.
+If many processes appear, the output may become hard to read anyway,
+making the hwloc-ps program more practical.
+.TP
+\fB\-\-fontsize\fR <size>
+Set size of text font.
+.TP
+\fB\-\-gridsize\fR <size>
+Set size of margin between elements.
+.TP
+\fB\-\-horiz\fR, \fB\-\-horiz\fR=<type1,...>
+Horizontal graphical layout instead of nearly 4/3 ratio.
+If a comma-separated list of types is given, the layout only
+applies to the corresponding containers.
+.TP
+\fB\-\-vert\fR, \fB\-\-vert\fR=<type1,...>
+Vertical graphical layout instead of nearly 4/3 ratio.
+If a comma-separated list of types is given, the layout only
+applies to the corresponding containers.
+.TP
+\fB\-\-no\-legend\fR
+Remove the text legend at the bottom.
+.TP
+\fB\-\-version\fR
+Report version and exit.
+.
+.\" **************************
+.\"    Description Section
+.\" **************************
+.SH DESCRIPTION
+.
+lstopo is capable of displaying a topological map of the system in a
+variety of different output formats.  If no filename is specified and
+the DISPLAY environment variable is set, lstopo displays the map in a
+graphical window.  If no filename is specified and the DISPLAY
+environment variable is
+.I not
+set, a text summary is displayed.  
+.
+.PP
+The filename specified directly implies the output format that will be
+used; see the OUTPUT FORMATS section, below.  Output formats that
+support color will indicate specific characteristics about individual
+CPUs by their color; see the COLORS section, below.
+.
+.\" **************************
+.\"    Output Formats Section
+.\" **************************
+.SH OUTPUT FORMATS
+.
+.PP
+The filename on the command line usually determines the format of the output.
+There are a few filenames that indicate specific output formats and
+devices (e.g., a filename of "-" will output a text summary to
+stdout), but most filenames indicate the desired output format by 
+their suffix (e.g., "topo.png" will output a PNG-format file).
+.PP
+The format of the output may also be changed with "\-\-of".
+For instance, "\-\-of pdf" will generate a PDF-format file on the standard
+output, while "\-\-of fig toto" will output a Xfig-format file named "toto".
+
+.PP
+The list of currently supported formats is given below. Any of them may
+be used with "\-\-of" or as a filename suffix.
+.TP
+.B default
+Send the output to a window or to the console depending on the environment.
+.TP
+.B console
+Send a text summary to stdout.
+.
+.TP
+.B txt
+Output an ASCII art representation of the map.
+If outputting to stdout and if colors are supported on the terminal,
+the output will be colorized.
+.
+.TP
+.B fig
+Output a representation of the map that can be loaded in Xfig.
+.
+.TP
+.B pdf
+If lstopo was compiled with the proper
+support, lstopo outputs a PDF representation of the map.
+.
+.TP
+.B ps
+If lstopo was compiled with the proper
+support, lstopo outputs a Postscript representation of the map.
+.
+.TP
+.B png
+If lstopo was compiled with the proper
+support, lstopo outputs a PNG representation of the map.
+.
+.TP
+.B svg
+If lstopo was compiled with the proper
+support, lstopo outputs an SVG representation of the map.
+.
+.TP
+.B synthetic
+If the topology is symmetric, lstopo outputs a synthetic description
+string. This output may be reused as an input synthetic topology
+description later.
+.
+.TP
+.B xml
+If lstopo was compiled with the proper
+support, lstopo outputs an XML representation of the map.
+It may be reused later, even on another machine, with lstopo \-\-input,
+the HWLOC_XMLFILE environment variable, or the hwloc_topology_set_xml()
+function.
+
+.PP
+The following special names may be used:
+.TP
+.B \-
+Send a text summary to stdout.
+.
+.TP
+.B /dev/stdout
+Send a text summary to stdout.  It is effectively the same as
+specifying "\-".
+.
+.TP
+.B \-.<format>
+If the entire filename is "\-.<format>", lstopo behaves as if
+"\-\-of <format> -" was given, which means a file of the given format
+is sent to the standard output.
+
+.PP
+See the output of "lstopo \-\-help" for a specific list of what
+graphical output formats are supported in your hwloc installation.
+.
+.\" **************************
+.\"    Colors Section
+.\" **************************
+.SH COLORS
+Individual CPUs are colored in the semi-graphical and graphical output
+formats to indicate different characteristics:
+.TP
+Green
+The CPU is in the current CPU binding mask.
+.TP
+White
+The CPU is in the allowed set (see below), but it is not in the
+current CPU binding mask.
+.TP
+Red
+The CPU is not in the allowed set (see below).
+.TP
+Black
+The CPU is offline (not all OS's support displaying offline CPUs).
+.
+.PP
+The "allowed set" is the set of CPUs to which the current process is
+allowed to bind.  The allowed set is usually either inherited from the
+parent process or set by administrative qpolicies on the system.  Linux
+cpusets are one example of limiting the allowed set for a process and
+its children to be less than the full set of CPUs on the system.
+.PP
+Different processes may therefore have different CPUs in the allowed
+set.  Hence, invoking lstopo in different contexts and/or as different
+users may display different colors for the same individual CPUs (e.g.,
+running lstopo in one context may show a specific CPU as red, but
+running lstopo in a different context may show the same CPU as white).
+.
+.\" **************************
+.\"    Layout Section
+.\" **************************
+.SH LAYOUT
+In its graphical output, lstopo uses simple rectangular heuristics
+to try to achieve a 4/3 ratio between width and height. However,
+in the particular case of NUMA nodes, the layout is always a flat
+rectangle, to avoid letting the user believe any particular NUMA
+topology (lstopo is not able to render that yet).
+.
+.\" **************************
+.\"    Examples Section
+.\" **************************
+.SH EXAMPLES
+.
+To display the machine topology in textual mode:
+
+    lstopo -
+
+To display the machine topology in pseudo-graphical mode:
+
+    lstopo -.txt
+
+To display in graphical mode (assuming that the DISPLAY environment
+variable is set to a relevant value):
+
+    lstopo
+
+To export the topology to a PNG file:
+
+    lstopo file.png
+
+To export an XML file on a machine and later display the corresponding
+graphical output on another machine:
+
+    machine1$ lstopo file.xml
+    <transfer file.xml from machine1 to machine2>
+    machine2$ lstopo --input file.xml
+
+To save the current machine topology to XML and later reload it faster
+while still considering it as the current machine:
+
+   $ lstopo file.xml
+   <...>
+   $ lstopo --input file.xml --thissystem
+
+To restrict an XML topology to only physical processors 0, 1, 4 and 5:
+
+    lstopo --input file.xml --restrict 0x33 newfile.xml
+
+To restrict an XML topology to only numa node whose logical index is 1:
+
+    lstopo --input file.xml --restrict $(hwloc-calc --input file.xml node:1) newfile.xml
+
+To display a summary of the topology:
+
+    lstopo -s
+
+To get more details about the topology:
+
+    lstopo -v
+
+To only show cores:
+
+    lstopo --only core
+
+To show cpusets:
+
+    lstopo --cpuset
+
+To only show the cpusets of sockets:
+
+    lstopo --only socket --cpuset-only
+
+Simulate a fake hierarchy; this example shows with 2 NUMA nodes of 2
+processor units:
+
+    lstopo --input "n:2 2"
+
+To count the number of logical processors in the system
+
+   lstopo --only pu | wc -l
+.\" **************************
+.\"    See also section
+.\" **************************
+.SH SEE ALSO
+.
+.ft R
+hwloc-bind(1), hwloc-ps(1), hwloc-gather-topology(1)
+.sp

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.c
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.c	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.c	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,661 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2011 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/autogen/config.h>
+#include <hwloc.h>
+#ifdef HWLOC_LINUX_SYS
+#include <hwloc/linux.h>
+#endif /* HWLOC_LINUX_SYS */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <assert.h>
+
+#ifdef HWLOC_HAVE_CAIRO
+#include <cairo.h>
+#endif
+
+#ifdef HAVE_SETLOCALE
+#include <locale.h>
+#endif
+
+#include "lstopo.h"
+#include "misc.h"
+
+int logical = -1;
+hwloc_obj_type_t show_only = (hwloc_obj_type_t) -1;
+int show_cpuset = 0;
+int taskset = 0;
+unsigned int fontsize = 10;
+unsigned int gridsize = 10;
+enum lstopo_orient_e force_orient[HWLOC_OBJ_TYPE_MAX];
+unsigned int legend = 1;
+unsigned int top = 0;
+hwloc_pid_t pid = (hwloc_pid_t) -1;
+
+FILE *open_file(const char *filename, const char *mode)
+{
+  const char *extn;
+
+  if (!filename)
+    return stdout;
+
+  extn = strrchr(filename, '.');
+  if (filename[0] == '-' && extn == filename + 1)
+    return stdout;
+
+  return fopen(filename, mode);
+}
+
+static hwloc_obj_t insert_task(hwloc_topology_t topology, hwloc_cpuset_t cpuset, const char * name)
+{
+  hwloc_obj_t obj;
+
+  hwloc_bitmap_and(cpuset, cpuset, hwloc_topology_get_topology_cpuset(topology));
+  if (hwloc_bitmap_iszero(cpuset))
+    return NULL;
+
+  /* try to insert at exact position */
+  obj = hwloc_topology_insert_misc_object_by_cpuset(topology, cpuset, name);
+  if (!obj) {
+    /* try to insert in a larger parent */
+    char *s;
+    hwloc_bitmap_asprintf(&s, cpuset);
+    obj = hwloc_get_obj_covering_cpuset(topology, cpuset);
+    if (obj) {
+      obj = hwloc_topology_insert_misc_object_by_parent(topology, obj, name);
+      fprintf(stderr, "Inserted process `%s' below parent larger than cpuset %s\n", name, s);
+    } else {
+      fprintf(stderr, "Failed to insert process `%s' with cpuset %s\n", name, s);
+    }
+    free(s);
+  }
+
+  return obj;
+}
+
+static void add_process_objects(hwloc_topology_t topology)
+{
+  hwloc_obj_t root;
+  hwloc_bitmap_t cpuset;
+#ifdef HWLOC_LINUX_SYS
+  hwloc_bitmap_t task_cpuset;
+#endif /* HWLOC_LINUX_SYS */
+  DIR *dir;
+  struct dirent *dirent;
+  const struct hwloc_topology_support *support;
+
+  root = hwloc_get_root_obj(topology);
+
+  support = hwloc_topology_get_support(topology);
+
+  if (!support->cpubind->get_thisproc_cpubind)
+    return;
+
+  dir  = opendir("/proc");
+  if (!dir)
+    return;
+  cpuset = hwloc_bitmap_alloc();
+#ifdef HWLOC_LINUX_SYS
+  task_cpuset = hwloc_bitmap_alloc();
+#endif /* HWLOC_LINUX_SYS */
+
+  while ((dirent = readdir(dir))) {
+    long local_pid;
+    char *end;
+    char name[64];
+    int proc_cpubind;
+
+    local_pid = strtol(dirent->d_name, &end, 10);
+    if (*end)
+      /* Not a number */
+      continue;
+
+    snprintf(name, sizeof(name), "%ld", local_pid);
+
+    proc_cpubind = hwloc_get_proc_cpubind(topology, local_pid, cpuset, 0) != -1;
+
+#ifdef HWLOC_LINUX_SYS
+    {
+      /* Get the process name */
+      char *path;
+      unsigned pathlen = 6 + strlen(dirent->d_name) + 1 + 7 + 1;
+      char cmd[64], *c;
+      int file;
+      ssize_t n;
+
+      path = malloc(pathlen);
+      snprintf(path, pathlen, "/proc/%s/cmdline", dirent->d_name);
+      file = open(path, O_RDONLY);
+      free(path);
+
+      if (file >= 0) {
+        n = read(file, cmd, sizeof(cmd) - 1);
+        close(file);
+
+        if (n <= 0)
+          /* Ignore kernel threads and errors */
+          continue;
+
+        cmd[n] = 0;
+        if ((c = strchr(cmd, ' ')))
+          *c = 0;
+        snprintf(name, sizeof(name), "%ld %s", local_pid, cmd);
+      }
+    }
+
+    {
+      /* Get threads */
+      char *path;
+      unsigned pathlen = 6+strlen(dirent->d_name) + 1 + 4 + 1;
+      DIR *task_dir;
+      struct dirent *task_dirent;
+
+      path = malloc(pathlen);
+      snprintf(path, pathlen, "/proc/%s/task", dirent->d_name);
+      task_dir = opendir(path);
+      free(path);
+
+      if (task_dir) {
+        while ((task_dirent = readdir(task_dir))) {
+          long local_tid;
+          char *task_end;
+          char task_name[64];
+
+          local_tid = strtol(task_dirent->d_name, &task_end, 10);
+          if (*task_end)
+            /* Not a number, or the main task */
+            continue;
+
+          if (hwloc_linux_get_tid_cpubind(topology, local_tid, task_cpuset))
+            continue;
+
+          if (proc_cpubind && hwloc_bitmap_isequal(task_cpuset, cpuset))
+            continue;
+
+          snprintf(task_name, sizeof(task_name), "%s %li", name, local_tid);
+
+          insert_task(topology, task_cpuset, task_name);
+        }
+        closedir(task_dir);
+      }
+    }
+#endif /* HWLOC_LINUX_SYS */
+
+    if (!proc_cpubind)
+      continue;
+
+    if (hwloc_bitmap_isincluded(root->cpuset, cpuset))
+      continue;
+
+    insert_task(topology, cpuset, name);
+  }
+
+  hwloc_bitmap_free(cpuset);
+#ifdef HWLOC_LINUX_SYS
+  hwloc_bitmap_free(task_cpuset);
+#endif /* HWLOC_LINUX_SYS */
+  closedir(dir);
+}
+
+void usage(const char *name, FILE *where)
+{
+  fprintf (where, "Usage: %s [ options ] ... [ filename.format ]\n\n", name);
+  fprintf (where, "See lstopo(1) for more details.\n\n");
+  fprintf (where, "Supported output file formats: console, txt, fig"
+#ifdef HWLOC_HAVE_CAIRO
+#if CAIRO_HAS_PDF_SURFACE
+		  ", pdf"
+#endif /* CAIRO_HAS_PDF_SURFACE */
+#if CAIRO_HAS_PS_SURFACE
+		  ", ps"
+#endif /* CAIRO_HAS_PS_SURFACE */
+#if CAIRO_HAS_PNG_FUNCTIONS
+		  ", png"
+#endif /* CAIRO_HAS_PNG_FUNCTIONS */
+#if CAIRO_HAS_SVG_SURFACE
+		  ", svg"
+#endif /* CAIRO_HAS_SVG_SURFACE */
+#endif /* HWLOC_HAVE_CAIRO */
+		  ", xml, synthetic"
+		  "\n");
+  fprintf (where, "\nFormatting options:\n");
+  fprintf (where, "  -l --logical          Display hwloc logical object indexes\n");
+  fprintf (where, "                        (default for console output)\n");
+  fprintf (where, "  -p --physical         Display physical object indexes\n");
+  fprintf (where, "                        (default for graphical output)\n");
+  fprintf (where, "Output options:\n");
+  fprintf (where, "  --output-format <format>\n");
+  fprintf (where, "  --of <format>         Force the output to use the given format\n");
+  fprintf (where, "Textual output options:\n");
+  fprintf (where, "  --only <type>         Only show objects of the given type in the textual output\n");
+  fprintf (where, "  -v --verbose          Include additional details\n");
+  fprintf (where, "  -s --silent           Reduce the amount of details to show\n");
+  fprintf (where, "  -c --cpuset           Show the cpuset of each object\n");
+  fprintf (where, "  -C --cpuset-only      Only show the cpuset of each object\n");
+  fprintf (where, "  --taskset             Show taskset-specific cpuset strings\n");
+  fprintf (where, "Object filtering options:\n");
+  fprintf (where, "  --ignore <type>       Ignore objects of the given type\n");
+  fprintf (where, "  --no-caches           Do not show caches\n");
+  fprintf (where, "  --no-useless-caches   Do not show caches which do not have a hierarchical\n"
+                  "                        impact\n");
+  fprintf (where, "  --merge               Do not show levels that do not have a hierarchical\n"
+                  "                        impact\n");
+  fprintf (where, "  --restrict <cpuset>   Restrict the topology to processors listed in <cpuset>\n");
+  fprintf (where, "  --restrict binding    Restrict the topology to the current process binding\n");
+#ifdef HWLOC_HAVE_LIBPCI
+  fprintf (where, "  --no-io               Do not show any I/O device or bridge\n");
+  fprintf (where, "  --no-bridges          Do not any I/O bridge except hostbridges\n");
+  fprintf (where, "  --whole-io            Show all I/O devices and bridges\n");
+#endif
+  fprintf (where, "Input options:\n");
+  hwloc_utils_input_format_usage(where, 6);
+  fprintf (where, "  --thissystem          Assume that the input topology provides the topology\n"
+		  "                        for the system on which we are running\n");
+  fprintf (where, "  --pid <pid>           Detect topology as seen by process <pid>\n");
+  fprintf (where, "  --whole-system        Do not consider administration limitations\n");
+  fprintf (where, "Graphical output options:\n");
+  fprintf (where, "  --fontsize 10         Set size of text font\n");
+  fprintf (where, "  --gridsize 10         Set size of margin between elements\n");
+  fprintf (where, "  --horiz[=<type,...>]  Horizontal graphical layout instead of nearly 4/3 ratio\n");
+  fprintf (where, "  --vert[=<type,...>]   Vertical graphical layout instead of nearly 4/3 ratio\n");
+  fprintf (where, "  --no-legend           Remove the text legend at the bottom\n");
+  fprintf (where, "Miscellaneous options:\n");
+  fprintf (where, "  --ps --top            Display processes within the hierarchy\n");
+  fprintf (where, "  --version             Report version and exit\n");
+}
+
+enum output_format {
+  LSTOPO_OUTPUT_DEFAULT,
+  LSTOPO_OUTPUT_CONSOLE,
+  LSTOPO_OUTPUT_SYNTHETIC,
+  LSTOPO_OUTPUT_TEXT,
+  LSTOPO_OUTPUT_FIG,
+  LSTOPO_OUTPUT_PNG,
+  LSTOPO_OUTPUT_PDF,
+  LSTOPO_OUTPUT_PS,
+  LSTOPO_OUTPUT_SVG,
+  LSTOPO_OUTPUT_XML
+};
+
+static enum output_format
+parse_output_format(const char *name, char *callname)
+{
+  if (!strncasecmp(name, "default", 3))
+    return LSTOPO_OUTPUT_DEFAULT;
+  else if (!strncasecmp(name, "console", 3))
+    return LSTOPO_OUTPUT_CONSOLE;
+  else if (!strcasecmp(name, "synthetic"))
+    return LSTOPO_OUTPUT_SYNTHETIC;
+  else if (!strcasecmp(name, "txt"))
+    return LSTOPO_OUTPUT_TEXT;
+  else if (!strcasecmp(name, "fig"))
+    return LSTOPO_OUTPUT_FIG;
+  else if (!strcasecmp(name, "png"))
+    return LSTOPO_OUTPUT_PNG;
+  else if (!strcasecmp(name, "pdf"))
+    return LSTOPO_OUTPUT_PDF;
+  else if (!strcasecmp(name, "ps"))
+    return LSTOPO_OUTPUT_PS;
+  else if (!strcasecmp(name, "svg"))
+    return LSTOPO_OUTPUT_SVG;
+  else if (!strcasecmp(name, "xml"))
+    return LSTOPO_OUTPUT_XML;
+
+  fprintf(stderr, "file format `%s' not supported\n", name);
+  usage(callname, stderr);
+  exit(EXIT_FAILURE);
+}
+
+#define LSTOPO_VERBOSE_MODE_DEFAULT 1
+
+int
+main (int argc, char *argv[])
+{
+  int err;
+  int verbose_mode = LSTOPO_VERBOSE_MODE_DEFAULT;
+  hwloc_topology_t topology;
+  const char *filename = NULL;
+  unsigned long flags = HWLOC_TOPOLOGY_FLAG_IO_DEVICES | HWLOC_TOPOLOGY_FLAG_IO_BRIDGES;
+  int merge = 0;
+  int ignorecache = 0;
+  char * callname;
+  char * input = NULL;
+  enum hwloc_utils_input_format input_format = HWLOC_UTILS_INPUT_DEFAULT;
+  enum output_format output_format = LSTOPO_OUTPUT_DEFAULT;
+  char *restrictstring = NULL;
+  int opt;
+  unsigned i;
+
+  for(i=0; i<HWLOC_OBJ_TYPE_MAX; i++)
+    force_orient[i] = LSTOPO_ORIENT_NONE;
+  force_orient[HWLOC_OBJ_PU] = LSTOPO_ORIENT_HORIZ;
+  force_orient[HWLOC_OBJ_CACHE] = LSTOPO_ORIENT_HORIZ;
+  force_orient[HWLOC_OBJ_NODE] = LSTOPO_ORIENT_HORIZ;
+
+  /* enable verbose backends */
+  putenv("HWLOC_XML_VERBOSE=1");
+  putenv("HWLOC_SYNTHETIC_VERBOSE=1");
+
+#ifdef HAVE_SETLOCALE
+  setlocale(LC_ALL, "");
+#endif
+
+  callname = strrchr(argv[0], '/');
+  if (!callname)
+    callname = argv[0];
+  else
+    callname++;
+
+  err = hwloc_topology_init (&topology);
+  if (err)
+    return EXIT_FAILURE;
+
+  while (argc >= 2)
+    {
+      opt = 0;
+      if (!strcmp (argv[1], "-v") || !strcmp (argv[1], "--verbose")) {
+	verbose_mode++;
+      } else if (!strcmp (argv[1], "-s") || !strcmp (argv[1], "--silent")) {
+	verbose_mode--;
+      } else if (!strcmp (argv[1], "-h") || !strcmp (argv[1], "--help")) {
+	usage(callname, stdout);
+        exit(EXIT_SUCCESS);
+      } else if (!strcmp (argv[1], "-l") || !strcmp (argv[1], "--logical"))
+	logical = 1;
+      else if (!strcmp (argv[1], "-p") || !strcmp (argv[1], "--physical"))
+	logical = 0;
+      else if (!strcmp (argv[1], "-c") || !strcmp (argv[1], "--cpuset"))
+	show_cpuset = 1;
+      else if (!strcmp (argv[1], "-C") || !strcmp (argv[1], "--cpuset-only"))
+	show_cpuset = 2;
+      else if (!strcmp (argv[1], "--taskset")) {
+	taskset = 1;
+	if (!show_cpuset)
+	  show_cpuset = 1;
+      } else if (!strcmp (argv[1], "--only")) {
+	if (argc <= 2) {
+	  usage (callname, stderr);
+	  exit(EXIT_FAILURE);
+	}
+        show_only = hwloc_obj_type_of_string(argv[2]);
+	opt = 1;
+      }
+      else if (!strcmp (argv[1], "--ignore")) {
+	if (argc <= 2) {
+	  usage (callname, stderr);
+	  exit(EXIT_FAILURE);
+	}
+        hwloc_topology_ignore_type(topology, hwloc_obj_type_of_string(argv[2]));
+	opt = 1;
+      }
+      else if (!strcmp (argv[1], "--no-caches"))
+	ignorecache = 2;
+      else if (!strcmp (argv[1], "--no-useless-caches"))
+	ignorecache = 1;
+      else if (!strcmp (argv[1], "--whole-system"))
+	flags |= HWLOC_TOPOLOGY_FLAG_WHOLE_SYSTEM;
+      else if (!strcmp (argv[1], "--no-io"))
+	flags &= ~(HWLOC_TOPOLOGY_FLAG_IO_DEVICES | HWLOC_TOPOLOGY_FLAG_IO_BRIDGES);
+      else if (!strcmp (argv[1], "--no-bridges"))
+	flags &= ~(HWLOC_TOPOLOGY_FLAG_IO_BRIDGES);
+      else if (!strcmp (argv[1], "--whole-io"))
+	flags |= HWLOC_TOPOLOGY_FLAG_WHOLE_IO;
+      else if (!strcmp (argv[1], "--merge"))
+	merge = 1;
+      else if (!strcmp (argv[1], "--thissystem"))
+	flags |= HWLOC_TOPOLOGY_FLAG_IS_THISSYSTEM;
+      else if (!strcmp (argv[1], "--restrict")) {
+	if (argc <= 2) {
+	  usage (callname, stderr);
+	  exit(EXIT_FAILURE);
+	}
+	restrictstring = strdup(argv[2]);
+	opt = 1;
+      }
+
+      else if (!strcmp (argv[1], "--horiz"))
+	for(i=0; i<HWLOC_OBJ_TYPE_MAX; i++)
+	  force_orient[i] = LSTOPO_ORIENT_HORIZ;
+      else if (!strcmp (argv[1], "--vert"))
+	for(i=0; i<HWLOC_OBJ_TYPE_MAX; i++)
+	  force_orient[i] = LSTOPO_ORIENT_VERT;
+      else if (!strncmp (argv[1], "--horiz=", 8)
+	       || !strncmp (argv[1], "--vert=", 7)) {
+	enum lstopo_orient_e orient = (argv[1][2] == 'h') ? LSTOPO_ORIENT_HORIZ : LSTOPO_ORIENT_VERT;
+	char *tmp = argv[1] + ((argv[1][2] == 'h') ? 8 : 7);
+	while (tmp) {
+	  char *end = strchr(tmp, ',');
+	  hwloc_obj_type_t type;
+	  if (end)
+	    *end = '\0';
+	  type = hwloc_obj_type_of_string(tmp);
+	  if (type != (hwloc_obj_type_t) -1)
+	    force_orient[type] = orient;
+	  if (!end)
+	    break;
+	  tmp = end+1;
+        }
+      }
+
+      else if (!strcmp (argv[1], "--fontsize")) {
+	if (argc <= 2) {
+	  usage (callname, stderr);
+	  exit(EXIT_FAILURE);
+	}
+	fontsize = atoi(argv[2]);
+	opt = 1;
+      }
+      else if (!strcmp (argv[1], "--gridsize")) {
+	if (argc <= 2) {
+	  usage (callname, stderr);
+	  exit(EXIT_FAILURE);
+	}
+	gridsize = atoi(argv[2]);
+	opt = 1;
+      }
+      else if (!strcmp (argv[1], "--no-legend")) {
+	legend = 0;
+      }
+
+      else if (hwloc_utils_lookup_input_option(argv+1, argc-1, &opt,
+					       &input, &input_format,
+					       callname)) {
+	/* nothing to do anymore */
+
+      } else if (!strcmp (argv[1], "--pid")) {
+	if (argc <= 2) {
+	  usage (callname, stderr);
+	  exit(EXIT_FAILURE);
+	}
+	pid = atoi(argv[2]); opt = 1;
+      } else if (!strcmp (argv[1], "--ps") || !strcmp (argv[1], "--top"))
+        top = 1;
+      else if (!strcmp (argv[1], "--version")) {
+          printf("%s %s\n", callname, VERSION);
+          exit(EXIT_SUCCESS);
+      } else if (!strcmp (argv[1], "--output-format") || !strcmp (argv[1], "--of")) {
+	if (argc <= 2) {
+	  usage (callname, stderr);
+	  exit(EXIT_FAILURE);
+	}
+        output_format = parse_output_format(argv[2], callname);
+        opt = 1;
+      } else {
+	if (filename) {
+	  fprintf (stderr, "Unrecognized option: %s\n", argv[1]);
+	  usage (callname, stderr);
+	  exit(EXIT_FAILURE);
+	} else
+	  filename = argv[1];
+      }
+      argc -= opt+1;
+      argv += opt+1;
+    }
+
+  if (show_only != (hwloc_obj_type_t)-1)
+    merge = 0;
+
+  hwloc_topology_set_flags(topology, flags);
+
+  if (ignorecache > 1) {
+    hwloc_topology_ignore_type(topology, HWLOC_OBJ_CACHE);
+  } else if (ignorecache) {
+    hwloc_topology_ignore_type_keep_structure(topology, HWLOC_OBJ_CACHE);
+  }
+  if (merge)
+    hwloc_topology_ignore_all_keep_structure(topology);
+
+  if (input) {
+    err = hwloc_utils_enable_input_format(topology, input, input_format, verbose_mode > 1, callname);
+    if (err)
+      return err;
+  }
+
+  if (pid != (hwloc_pid_t) -1 && pid != 0) {
+    if (hwloc_topology_set_pid(topology, pid)) {
+      perror("Setting target pid");
+      return EXIT_FAILURE;
+    }
+  }
+
+  err = hwloc_topology_load (topology);
+  if (err)
+    return EXIT_FAILURE;
+
+  if (top)
+    add_process_objects(topology);
+
+  if (restrictstring) {
+    hwloc_bitmap_t restrictset = hwloc_bitmap_alloc();
+    if (!strcmp (restrictstring, "binding")) {
+      if (pid != (hwloc_pid_t) -1 && pid != 0)
+	hwloc_get_proc_cpubind(topology, pid, restrictset, HWLOC_CPUBIND_PROCESS);
+      else
+	hwloc_get_cpubind(topology, restrictset, HWLOC_CPUBIND_PROCESS);
+    } else {
+      hwloc_bitmap_sscanf(restrictset, restrictstring);
+    }
+    err = hwloc_topology_restrict (topology, restrictset, 0);
+    if (err) {
+      perror("Restricting the topology");
+      /* fallthrough */
+    }
+    hwloc_bitmap_free(restrictset);
+    free(restrictstring);
+  }
+
+  if (!filename && !strcmp(callname,"hwloc-info")) {
+    /* behave kind-of plpa-info */
+    filename = "-";
+    verbose_mode--;
+  }
+
+  /* if the output format wasn't enforced, look at the filename */
+  if (filename && output_format == LSTOPO_OUTPUT_DEFAULT) {
+    if (!strcmp(filename, "-")
+	|| !strcmp(filename, "/dev/stdout")) {
+      output_format = LSTOPO_OUTPUT_CONSOLE;
+    } else {
+      char *dot = strrchr(filename, '.');
+      if (dot)
+        output_format = parse_output_format(dot+1, callname);
+    }
+  }
+
+  /* if  the output format wasn't enforced, think a bit about what the user probably want */
+  if (output_format == LSTOPO_OUTPUT_DEFAULT) {
+    if (show_cpuset
+        || show_only != (hwloc_obj_type_t)-1
+        || verbose_mode != LSTOPO_VERBOSE_MODE_DEFAULT)
+      output_format = LSTOPO_OUTPUT_CONSOLE;
+  }
+
+  if (logical == -1) {
+    if (output_format == LSTOPO_OUTPUT_CONSOLE)
+      logical = 1;
+    else if (output_format != LSTOPO_OUTPUT_DEFAULT)
+      logical = 0;
+  }
+
+  switch (output_format) {
+    case LSTOPO_OUTPUT_DEFAULT:
+#ifdef HWLOC_HAVE_CAIRO
+#if CAIRO_HAS_XLIB_SURFACE && defined HWLOC_HAVE_X11
+      if (getenv("DISPLAY")) {
+        if (logical == -1)
+          logical = 0;
+        output_x11(topology, NULL, logical, legend, verbose_mode);
+      } else
+#endif /* CAIRO_HAS_XLIB_SURFACE */
+#endif /* HWLOC_HAVE_CAIRO */
+#ifdef HWLOC_WIN_SYS
+      {
+        if (logical == -1)
+          logical = 0;
+        output_windows(topology, NULL, logical, legend, verbose_mode);
+      }
+#else
+      {
+        if (logical == -1)
+          logical = 1;
+        output_console(topology, NULL, logical, legend, verbose_mode);
+      }
+#endif
+      break;
+
+    case LSTOPO_OUTPUT_CONSOLE:
+      output_console(topology, filename, logical, legend, verbose_mode);
+      break;
+    case LSTOPO_OUTPUT_SYNTHETIC:
+      output_synthetic(topology, filename, logical, legend, verbose_mode);
+      break;
+    case LSTOPO_OUTPUT_TEXT:
+      output_text(topology, filename, logical, legend, verbose_mode);
+      break;
+    case LSTOPO_OUTPUT_FIG:
+      output_fig(topology, filename, logical, legend, verbose_mode);
+      break;
+#ifdef HWLOC_HAVE_CAIRO
+# if CAIRO_HAS_PNG_FUNCTIONS
+    case LSTOPO_OUTPUT_PNG:
+      output_png(topology, filename, logical, legend, verbose_mode);
+      break;
+# endif /* CAIRO_HAS_PNG_FUNCTIONS */
+# if CAIRO_HAS_PDF_SURFACE
+    case LSTOPO_OUTPUT_PDF:
+      output_pdf(topology, filename, logical, legend, verbose_mode);
+      break;
+# endif /* CAIRO_HAS_PDF_SURFACE */
+# if CAIRO_HAS_PS_SURFACE
+    case LSTOPO_OUTPUT_PS:
+      output_ps(topology, filename, logical, legend, verbose_mode);
+      break;
+#endif /* CAIRO_HAS_PS_SURFACE */
+#if CAIRO_HAS_SVG_SURFACE
+    case LSTOPO_OUTPUT_SVG:
+      output_svg(topology, filename, logical, legend, verbose_mode);
+      break;
+#endif /* CAIRO_HAS_SVG_SURFACE */
+#endif /* HWLOC_HAVE_CAIRO */
+    case LSTOPO_OUTPUT_XML:
+      output_xml(topology, filename, logical, legend, verbose_mode);
+      break;
+    default:
+      fprintf(stderr, "file format not supported\n");
+      usage(callname, stderr);
+      exit(EXIT_FAILURE);
+  }
+
+  hwloc_topology_destroy (topology);
+
+  return EXIT_SUCCESS;
+}

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/lstopo.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,49 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2010 Université Bordeaux 1
+ * Copyright © 2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#ifndef UTILS_LSTOPO_H
+#define UTILS_LSTOPO_H
+
+#include <hwloc.h>
+
+extern hwloc_obj_type_t show_only;
+extern int show_cpuset;
+extern int taskset;
+extern hwloc_pid_t pid;
+
+typedef void output_method (struct hwloc_topology *topology, const char *output, int logical, int legend, int verbose_mode);
+
+FILE *open_file(const char *filename, const char *mode) __hwloc_attribute_malloc;
+
+extern output_method output_console, output_synthetic, output_text, output_x11, output_fig, output_png, output_pdf, output_ps, output_svg, output_windows, output_xml;
+
+struct draw_methods {
+  void* (*start) (void *output, int width, int height);
+  void (*declare_color) (void *output, int r, int g, int b);
+  void (*box) (void *output, int r, int g, int b, unsigned depth, unsigned x, unsigned width, unsigned y, unsigned height);
+  void (*line) (void *output, int r, int g, int b, unsigned depth, unsigned x1, unsigned y1, unsigned x2, unsigned y2);
+  void (*text) (void *output, int r, int g, int b, int size, unsigned depth, unsigned x, unsigned y, const char *text);
+};
+
+extern unsigned int gridsize, fontsize;
+
+enum lstopo_orient_e {
+  LSTOPO_ORIENT_NONE = 0,
+  LSTOPO_ORIENT_HORIZ,
+  LSTOPO_ORIENT_VERT
+};
+/* orientation of children within an object of the given type */
+extern enum lstopo_orient_e force_orient[];
+
+extern void *output_draw_start(struct draw_methods *draw_methods, int logical, int legend, struct hwloc_topology *topology, void *output);
+extern void output_draw(struct draw_methods *draw_methods, int logical, int legend, struct hwloc_topology *topology, void *output);
+
+int rgb_to_color(int r, int g, int b) __hwloc_attribute_const;
+int declare_color(int r, int g, int b);
+
+#endif /* UTILS_LSTOPO_H */

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/misc.h
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/misc.h	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/misc.h	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,229 @@
+/*
+ * Copyright © 2009 CNRS
+ * Copyright © 2009-2010 inria.  All rights reserved.
+ * Copyright © 2009-2011 Université Bordeaux 1
+ * Copyright © 2009-2011 Cisco Systems, Inc.  All rights reserved.
+ * See COPYING in top-level directory.
+ */
+
+#include <private/autogen/config.h>
+#include <hwloc.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <assert.h>
+
+extern void usage(const char *name, FILE *where);
+
+static __hwloc_inline void
+hwloc_utils_input_format_usage(FILE *where, int addspaces)
+{
+  fprintf (where, "  --input <XML file>\n");
+  fprintf (where, "  -i <XML file>   %*sRead topology from XML file <path>\n",
+	   addspaces, " ");
+#ifdef HWLOC_LINUX_SYS
+  fprintf (where, "  --input <directory>\n");
+  fprintf (where, "  -i <directory>  %*sRead topology from chroot containing the /proc and /sys\n",
+	   addspaces, " ");
+  fprintf (where, "                  %*sof another system\n",
+	   addspaces, " ");
+#endif
+  fprintf (where, "  --input \"n:2 2\"\n");
+  fprintf (where, "  -i \"n:2 2\"      %*sSimulate a fake hierarchy, here with 2 NUMA nodes of 2\n",
+	   addspaces, " ");
+  fprintf (where, "                  %*sprocessors\n",
+	   addspaces, " ");
+  fprintf (where, "  --input-format <format>\n");
+  fprintf (where, "  --if <format>   %*sEnforce input format among "
+	   "xml, "
+#ifdef HWLOC_LINUX_SYS
+	   "fsroot, "
+#endif
+	   "synthetic\n",
+	   addspaces, " ");
+}
+
+enum hwloc_utils_input_format {
+  HWLOC_UTILS_INPUT_DEFAULT,
+  HWLOC_UTILS_INPUT_XML,
+  HWLOC_UTILS_INPUT_FSROOT,
+  HWLOC_UTILS_INPUT_SYNTHETIC
+};
+
+static __hwloc_inline enum hwloc_utils_input_format
+hwloc_utils_parse_input_format(const char *name, const char *callname)
+{
+  if (!strncasecmp(name, "default", 3))
+    return HWLOC_UTILS_INPUT_DEFAULT;
+  else if (!strncasecmp(name, "xml", 1))
+    return HWLOC_UTILS_INPUT_XML;
+  else if (!strncasecmp(name, "fsroot", 1))
+    return HWLOC_UTILS_INPUT_FSROOT;
+  else if (!strncasecmp(name, "synthetic", 1))
+    return HWLOC_UTILS_INPUT_SYNTHETIC;
+
+  fprintf(stderr, "input format `%s' not supported\n", name);
+  usage(callname, stderr);
+  exit(EXIT_FAILURE);
+}
+
+static __hwloc_inline int
+hwloc_utils_lookup_input_option(char *argv[], int argc, int *consumed_opts,
+				char **inputp, enum hwloc_utils_input_format *input_formatp,
+				const char *callname)
+{
+  if (!strcmp (argv[0], "--input")
+	       || !strcmp (argv[0], "-i")) {
+    if (argc <= 1) {
+      usage (callname, stderr);
+      exit(EXIT_FAILURE);
+    }
+    if (strlen(argv[1]))
+      *inputp = argv[1];
+    else
+      *inputp = NULL;
+    *consumed_opts = 1;
+    return 1;
+  }
+  else if (!strcmp (argv[0], "--input-format")
+	   || !strcmp (argv[0], "--if")) {
+    if (argc <= 1) {
+      usage (callname, stderr);
+      exit(EXIT_FAILURE);
+    }
+    *input_formatp = hwloc_utils_parse_input_format (argv[1], callname);
+    *consumed_opts = 1;
+    return 1;
+  }
+
+  /* backward compat with 1.0 */
+  else if (!strcmp (argv[0], "--synthetic")) {
+    if (argc <= 1) {
+      usage (callname, stderr);
+      exit(EXIT_FAILURE);
+    }
+    *inputp = argv[1];
+    *input_formatp = HWLOC_UTILS_INPUT_SYNTHETIC;
+    *consumed_opts = 1;
+    return 1;
+  } else if (!strcmp (argv[0], "--xml")) {
+    if (argc <= 1) {
+      usage (callname, stderr);
+      exit(EXIT_FAILURE);
+    }
+    *inputp = argv[1];
+    *input_formatp = HWLOC_UTILS_INPUT_XML;
+    *consumed_opts = 1;
+    return 1;
+  } else if (!strcmp (argv[0], "--fsys-root")) {
+    if (argc <= 1) {
+      usage (callname, stderr);
+      exit(EXIT_FAILURE);
+    }
+    *inputp = argv[1];
+    *input_formatp = HWLOC_UTILS_INPUT_FSROOT;
+    *consumed_opts = 1;
+    return 1;
+  }
+
+  return 0;
+}
+
+static __hwloc_inline int
+hwloc_utils_enable_input_format(struct hwloc_topology *topology,
+				const char *input,
+				enum hwloc_utils_input_format input_format,
+				int verbose, const char *callname)
+{
+  if (input_format == HWLOC_UTILS_INPUT_DEFAULT) {
+    struct stat inputst;
+    int err;
+    err = stat(input, &inputst);
+    if (err < 0) {
+      if (verbose)
+	printf("assuming `%s' is a synthetic topology description\n", input);
+      input_format = HWLOC_UTILS_INPUT_SYNTHETIC;
+    } else if (S_ISDIR(inputst.st_mode)) {
+      if (verbose)
+	printf("assuming `%s' is a file-system root\n", input);
+      input_format = HWLOC_UTILS_INPUT_FSROOT;
+    } else if (S_ISREG(inputst.st_mode)) {
+      if (verbose)
+	printf("assuming `%s' is a XML file\n", input);
+      input_format = HWLOC_UTILS_INPUT_XML;
+    } else {
+      fprintf (stderr, "Unrecognized input file: %s\n", input);
+      usage (callname, stderr);
+    }
+  }
+
+  switch (input_format) {
+  case HWLOC_UTILS_INPUT_XML:
+    if (!strcmp(input, "-"))
+      input = "/dev/stdin";
+    if (hwloc_topology_set_xml(topology, input)) {
+      perror("Setting source XML file");
+      return EXIT_FAILURE;
+    }
+    break;
+
+  case HWLOC_UTILS_INPUT_FSROOT:
+#ifdef HWLOC_LINUX_SYS
+    if (hwloc_topology_set_fsroot(topology, input)) {
+      perror("Setting source filesystem root");
+      return EXIT_FAILURE;
+    }
+#else /* HWLOC_LINUX_SYS */
+    fprintf(stderr, "This installation of hwloc does not support changing the file-system root, sorry.\n");
+    exit(EXIT_FAILURE);
+#endif /* HWLOC_LINUX_SYS */
+    break;
+
+  case HWLOC_UTILS_INPUT_SYNTHETIC:
+    if (hwloc_topology_set_synthetic(topology, input)) {
+      perror("Setting synthetic topology description");
+      return EXIT_FAILURE;
+    }
+    break;
+
+  case HWLOC_UTILS_INPUT_DEFAULT:
+    assert(0);
+  }
+
+  return 0;
+}
+
+static __hwloc_inline void
+hwloc_utils_print_distance_matrix(hwloc_topology_t topology, hwloc_obj_t root, unsigned nbobjs, unsigned reldepth, float *matrix, int logical)
+{
+  hwloc_obj_t objj, obji;
+  unsigned i, j;
+
+  /* column header */
+  printf("  index");
+  for(j=0, objj=NULL; j<nbobjs; j++) {
+    objj = hwloc_get_next_obj_inside_cpuset_by_depth(topology, root->cpuset, root->depth+reldepth, objj);
+    printf(" % 5d",
+	   (int) (logical ? objj->logical_index : objj->os_index));
+  }
+  printf("\n");
+
+  /* each line */
+  for(i=0, obji=NULL; i<nbobjs; i++) {
+    obji = hwloc_get_next_obj_inside_cpuset_by_depth(topology, root->cpuset, root->depth+reldepth, obji);
+    /* row header */
+    printf("  % 5d",
+	     (int) (logical ? obji->logical_index : obji->os_index));
+
+    /* row values */
+    for(j=0, objj=NULL; j<nbobjs; j++) {
+      objj = hwloc_get_next_obj_inside_cpuset_by_depth(topology, root->cpuset, root->depth+reldepth, objj);
+      for(j=0; j<nbobjs; j++)
+	printf(" %2.3f", matrix[i*nbobjs+j]);
+      printf("\n");
+    }
+  }
+}
+

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.input1
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.input1	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.input1	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" name="machine1" local_memory="4014239744">
+    <page_type size="4096" count="980039"/>
+    <page_type size="2097152" count="0"/>
+    <info name="DMIProductName" value="Latitude E6410"/>
+    <info name="DMIProductVersion" value="0001"/>
+    <info name="DMIBoardVendor" value="Dell Inc."/>
+    <info name="DMIBoardName" value="0667CC"/>
+    <info name="DMIBoardVersion" value="A00"/>
+    <info name="DMIBoardAssetTag" value=" "/>
+    <info name="DMIChassisVendor" value="Dell Inc."/>
+    <info name="DMIChassisType" value="9"/>
+    <info name="DMIChassisVersion" value=" "/>
+    <info name="DMIChassisAssetTag" value=""/>
+    <info name="DMIBIOSVendor" value="Dell Inc."/>
+    <info name="DMIBIOSVersion" value="A03"/>
+    <info name="DMIBIOSDate" value="05/28/2010"/>
+    <info name="DMISysVendor" value="Dell Inc."/>
+    <info name="Backend" value="Linux"/>
+    <info name="OSName" value="Linux"/>
+    <info name="OSRelease" value="3.0.0-1-amd64"/>
+    <info name="OSVersion" value="#1 SMP Sun Jul 24 02:24:44 UTC 2011"/>
+    <info name="HostName" value="rhododendron"/>
+    <info name="Architecture" value="x86_64"/>
+    <object type="Socket" os_level="-1" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f">
+      <object type="Cache" os_level="-1" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="8">
+        <object type="Cache" os_level="-1" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" os_level="-1" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_level="-1" os_index="0" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005">
+              <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+              <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004"/>
+            </object>
+          </object>
+        </object>
+        <object type="Cache" os_level="-1" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" os_level="-1" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+            <object type="Core" os_level="-1" os_index="2" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a">
+              <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+              <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.input2
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.input2	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.input2	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="Machine" os_level="-1" os_index="0" cpuset="0x00ffffff" complete_cpuset="0x00ffffff" online_cpuset="0x00ffffff" allowed_cpuset="0x00ffffff" nodeset="0x00000003" complete_nodeset="0x00000003" allowed_nodeset="0x00000003" name="machine2">
+    <info name="Backend" value="Synthetic"/>
+    <distances nbobjs="2" relative_depth="1" latency_base="5.290000">
+      <latency value="4.347826"/>
+      <latency value="14.782610"/>
+      <latency value="1.000000"/>
+      <latency value="4.347826"/>
+    </distances>
+    <object type="NUMANode" os_level="-1" os_index="0" cpuset="0x00000fff" complete_cpuset="0x00000fff" online_cpuset="0x00000fff" allowed_cpuset="0x00000fff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="1073741824">
+      <page_type size="4096" count="262144"/>
+      <object type="Socket" os_level="-1" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" os_level="-1" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+          <object type="Core" os_level="-1" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+            <object type="Cache" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+          </object>
+          <object type="Core" os_level="-1" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+            <object type="Cache" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="1" cpuset="0x000000f0" complete_cpuset="0x000000f0" online_cpuset="0x000000f0" allowed_cpuset="0x000000f0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" os_level="-1" os_index="1" cpuset="0x000000f0" complete_cpuset="0x000000f0" online_cpuset="0x000000f0" allowed_cpuset="0x000000f0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+          <object type="Core" os_level="-1" os_index="2" cpuset="0x00000030" complete_cpuset="0x00000030" online_cpuset="0x00000030" allowed_cpuset="0x00000030" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+            <object type="Cache" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+          </object>
+          <object type="Core" os_level="-1" os_index="3" cpuset="0x000000c0" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x000000c0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+            <object type="Cache" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="2" cpuset="0x00000f00" complete_cpuset="0x00000f00" online_cpuset="0x00000f00" allowed_cpuset="0x00000f00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+        <object type="Cache" os_level="-1" os_index="2" cpuset="0x00000f00" complete_cpuset="0x00000f00" online_cpuset="0x00000f00" allowed_cpuset="0x00000f00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+          <object type="Core" os_level="-1" os_index="4" cpuset="0x00000300" complete_cpuset="0x00000300" online_cpuset="0x00000300" allowed_cpuset="0x00000300" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+            <object type="Cache" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+          </object>
+          <object type="Core" os_level="-1" os_index="5" cpuset="0x00000c00" complete_cpuset="0x00000c00" online_cpuset="0x00000c00" allowed_cpuset="0x00000c00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+            <object type="Cache" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="NUMANode" os_level="-1" os_index="1" cpuset="0x00fff000" complete_cpuset="0x00fff000" online_cpuset="0x00fff000" allowed_cpuset="0x00fff000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="1073741824">
+      <page_type size="4096" count="262144"/>
+      <object type="Socket" os_level="-1" os_index="3" cpuset="0x0000f000" complete_cpuset="0x0000f000" online_cpuset="0x0000f000" allowed_cpuset="0x0000f000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" os_level="-1" os_index="3" cpuset="0x0000f000" complete_cpuset="0x0000f000" online_cpuset="0x0000f000" allowed_cpuset="0x0000f000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+          <object type="Core" os_level="-1" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+            <object type="Cache" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+          <object type="Core" os_level="-1" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+            <object type="Cache" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="4" cpuset="0x000f0000" complete_cpuset="0x000f0000" online_cpuset="0x000f0000" allowed_cpuset="0x000f0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" os_level="-1" os_index="4" cpuset="0x000f0000" complete_cpuset="0x000f0000" online_cpuset="0x000f0000" allowed_cpuset="0x000f0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+          <object type="Core" os_level="-1" os_index="8" cpuset="0x00030000" complete_cpuset="0x00030000" online_cpuset="0x00030000" allowed_cpuset="0x00030000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+            <object type="Cache" os_level="-1" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+          <object type="Core" os_level="-1" os_index="9" cpuset="0x000c0000" complete_cpuset="0x000c0000" online_cpuset="0x000c0000" allowed_cpuset="0x000c0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+            <object type="Cache" os_level="-1" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="Socket" os_level="-1" os_index="5" cpuset="0x00f00000" complete_cpuset="0x00f00000" online_cpuset="0x00f00000" allowed_cpuset="0x00f00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+        <object type="Cache" os_level="-1" os_index="5" cpuset="0x00f00000" complete_cpuset="0x00f00000" online_cpuset="0x00f00000" allowed_cpuset="0x00f00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+          <object type="Core" os_level="-1" os_index="10" cpuset="0x00300000" complete_cpuset="0x00300000" online_cpuset="0x00300000" allowed_cpuset="0x00300000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+            <object type="Cache" os_level="-1" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+          <object type="Core" os_level="-1" os_index="11" cpuset="0x00c00000" complete_cpuset="0x00c00000" online_cpuset="0x00c00000" allowed_cpuset="0x00c00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+            <object type="Cache" os_level="-1" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+            <object type="Cache" os_level="-1" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+              <object type="PU" os_level="-1" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE topology SYSTEM "hwloc.dtd">
+<topology>
+  <object type="System" os_index="0">
+    <object type="Machine" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" name="machine1" local_memory="4014239744">
+      <page_type size="4096" count="980039"/>
+      <page_type size="2097152" count="0"/>
+      <info name="DMIProductName" value="Latitude E6410"/>
+      <info name="DMIProductVersion" value="0001"/>
+      <info name="DMIBoardVendor" value="Dell Inc."/>
+      <info name="DMIBoardName" value="0667CC"/>
+      <info name="DMIBoardVersion" value="A00"/>
+      <info name="DMIBoardAssetTag" value=" "/>
+      <info name="DMIChassisVendor" value="Dell Inc."/>
+      <info name="DMIChassisType" value="9"/>
+      <info name="DMIChassisVersion" value=" "/>
+      <info name="DMIChassisAssetTag" value=""/>
+      <info name="DMIBIOSVendor" value="Dell Inc."/>
+      <info name="DMIBIOSVersion" value="A03"/>
+      <info name="DMIBIOSDate" value="05/28/2010"/>
+      <info name="DMISysVendor" value="Dell Inc."/>
+      <info name="Backend" value="Linux"/>
+      <info name="OSName" value="Linux"/>
+      <info name="OSRelease" value="3.0.0-1-amd64"/>
+      <info name="OSVersion" value="#1 SMP Sun Jul 24 02:24:44 UTC 2011"/>
+      <info name="HostName" value="rhododendron"/>
+      <info name="Architecture" value="x86_64"/>
+      <info name="AssemblerName" value="input1"/>
+      <info name="AssemblerIndex" value="0"/>
+      <object type="Socket" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f">
+        <object type="Cache" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005">
+                <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+                <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a">
+                <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+                <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Machine" os_index="0" cpuset="0x00ffffff" complete_cpuset="0x00ffffff" online_cpuset="0x00ffffff" allowed_cpuset="0x00ffffff" nodeset="0x00000003" complete_nodeset="0x00000003" allowed_nodeset="0x00000003" name="machine2">
+      <info name="Backend" value="Synthetic"/>
+      <info name="AssemblerName" value="input2"/>
+      <info name="AssemblerIndex" value="1"/>
+      <distances nbobjs="2" relative_depth="1" latency_base="5.290000">
+        <latency value="4.347826"/>
+        <latency value="14.782610"/>
+        <latency value="1.000000"/>
+        <latency value="4.347826"/>
+      </distances>
+      <object type="NUMANode" os_index="0" cpuset="0x00000fff" complete_cpuset="0x00000fff" online_cpuset="0x00000fff" allowed_cpuset="0x00000fff" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" local_memory="1073741824">
+        <page_type size="4096" count="262144"/>
+        <object type="Socket" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+          <object type="Cache" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+            <object type="Core" os_index="0" cpuset="0x00000003" complete_cpuset="0x00000003" online_cpuset="0x00000003" allowed_cpuset="0x00000003" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+              <object type="Cache" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+              <object type="Cache" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Core" os_index="1" cpuset="0x0000000c" complete_cpuset="0x0000000c" online_cpuset="0x0000000c" allowed_cpuset="0x0000000c" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+              <object type="Cache" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+              <object type="Cache" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+        <object type="Socket" os_index="1" cpuset="0x000000f0" complete_cpuset="0x000000f0" online_cpuset="0x000000f0" allowed_cpuset="0x000000f0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+          <object type="Cache" os_index="1" cpuset="0x000000f0" complete_cpuset="0x000000f0" online_cpuset="0x000000f0" allowed_cpuset="0x000000f0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+            <object type="Core" os_index="2" cpuset="0x00000030" complete_cpuset="0x00000030" online_cpuset="0x00000030" allowed_cpuset="0x00000030" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+              <object type="Cache" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="4" cpuset="0x00000010" complete_cpuset="0x00000010" online_cpuset="0x00000010" allowed_cpuset="0x00000010" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+              <object type="Cache" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="5" cpuset="0x00000020" complete_cpuset="0x00000020" online_cpuset="0x00000020" allowed_cpuset="0x00000020" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Core" os_index="3" cpuset="0x000000c0" complete_cpuset="0x000000c0" online_cpuset="0x000000c0" allowed_cpuset="0x000000c0" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+              <object type="Cache" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="6" cpuset="0x00000040" complete_cpuset="0x00000040" online_cpuset="0x00000040" allowed_cpuset="0x00000040" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+              <object type="Cache" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="7" cpuset="0x00000080" complete_cpuset="0x00000080" online_cpuset="0x00000080" allowed_cpuset="0x00000080" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+        <object type="Socket" os_index="2" cpuset="0x00000f00" complete_cpuset="0x00000f00" online_cpuset="0x00000f00" allowed_cpuset="0x00000f00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+          <object type="Cache" os_index="2" cpuset="0x00000f00" complete_cpuset="0x00000f00" online_cpuset="0x00000f00" allowed_cpuset="0x00000f00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+            <object type="Core" os_index="4" cpuset="0x00000300" complete_cpuset="0x00000300" online_cpuset="0x00000300" allowed_cpuset="0x00000300" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+              <object type="Cache" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="8" cpuset="0x00000100" complete_cpuset="0x00000100" online_cpuset="0x00000100" allowed_cpuset="0x00000100" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+              <object type="Cache" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="9" cpuset="0x00000200" complete_cpuset="0x00000200" online_cpuset="0x00000200" allowed_cpuset="0x00000200" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+            <object type="Core" os_index="5" cpuset="0x00000c00" complete_cpuset="0x00000c00" online_cpuset="0x00000c00" allowed_cpuset="0x00000c00" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001">
+              <object type="Cache" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="10" cpuset="0x00000400" complete_cpuset="0x00000400" online_cpuset="0x00000400" allowed_cpuset="0x00000400" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+              <object type="Cache" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="11" cpuset="0x00000800" complete_cpuset="0x00000800" online_cpuset="0x00000800" allowed_cpuset="0x00000800" nodeset="0x00000001" complete_nodeset="0x00000001" allowed_nodeset="0x00000001"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+      <object type="NUMANode" os_index="1" cpuset="0x00fff000" complete_cpuset="0x00fff000" online_cpuset="0x00fff000" allowed_cpuset="0x00fff000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" local_memory="1073741824">
+        <page_type size="4096" count="262144"/>
+        <object type="Socket" os_index="3" cpuset="0x0000f000" complete_cpuset="0x0000f000" online_cpuset="0x0000f000" allowed_cpuset="0x0000f000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+          <object type="Cache" os_index="3" cpuset="0x0000f000" complete_cpuset="0x0000f000" online_cpuset="0x0000f000" allowed_cpuset="0x0000f000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+            <object type="Core" os_index="6" cpuset="0x00003000" complete_cpuset="0x00003000" online_cpuset="0x00003000" allowed_cpuset="0x00003000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="Cache" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="12" cpuset="0x00001000" complete_cpuset="0x00001000" online_cpuset="0x00001000" allowed_cpuset="0x00001000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+              <object type="Cache" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="13" cpuset="0x00002000" complete_cpuset="0x00002000" online_cpuset="0x00002000" allowed_cpuset="0x00002000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Core" os_index="7" cpuset="0x0000c000" complete_cpuset="0x0000c000" online_cpuset="0x0000c000" allowed_cpuset="0x0000c000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="Cache" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="14" cpuset="0x00004000" complete_cpuset="0x00004000" online_cpuset="0x00004000" allowed_cpuset="0x00004000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+              <object type="Cache" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="15" cpuset="0x00008000" complete_cpuset="0x00008000" online_cpuset="0x00008000" allowed_cpuset="0x00008000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+        <object type="Socket" os_index="4" cpuset="0x000f0000" complete_cpuset="0x000f0000" online_cpuset="0x000f0000" allowed_cpuset="0x000f0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+          <object type="Cache" os_index="4" cpuset="0x000f0000" complete_cpuset="0x000f0000" online_cpuset="0x000f0000" allowed_cpuset="0x000f0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+            <object type="Core" os_index="8" cpuset="0x00030000" complete_cpuset="0x00030000" online_cpuset="0x00030000" allowed_cpuset="0x00030000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="Cache" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="16" cpuset="0x00010000" complete_cpuset="0x00010000" online_cpuset="0x00010000" allowed_cpuset="0x00010000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+              <object type="Cache" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="17" cpuset="0x00020000" complete_cpuset="0x00020000" online_cpuset="0x00020000" allowed_cpuset="0x00020000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Core" os_index="9" cpuset="0x000c0000" complete_cpuset="0x000c0000" online_cpuset="0x000c0000" allowed_cpuset="0x000c0000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="Cache" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="18" cpuset="0x00040000" complete_cpuset="0x00040000" online_cpuset="0x00040000" allowed_cpuset="0x00040000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+              <object type="Cache" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="19" cpuset="0x00080000" complete_cpuset="0x00080000" online_cpuset="0x00080000" allowed_cpuset="0x00080000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+        <object type="Socket" os_index="5" cpuset="0x00f00000" complete_cpuset="0x00f00000" online_cpuset="0x00f00000" allowed_cpuset="0x00f00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+          <object type="Cache" os_index="5" cpuset="0x00f00000" complete_cpuset="0x00f00000" online_cpuset="0x00f00000" allowed_cpuset="0x00f00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="4194304" depth="2" cache_linesize="32" cache_associativity="4">
+            <object type="Core" os_index="10" cpuset="0x00300000" complete_cpuset="0x00300000" online_cpuset="0x00300000" allowed_cpuset="0x00300000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="Cache" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="20" cpuset="0x00100000" complete_cpuset="0x00100000" online_cpuset="0x00100000" allowed_cpuset="0x00100000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+              <object type="Cache" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="21" cpuset="0x00200000" complete_cpuset="0x00200000" online_cpuset="0x00200000" allowed_cpuset="0x00200000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+            <object type="Core" os_index="11" cpuset="0x00c00000" complete_cpuset="0x00c00000" online_cpuset="0x00c00000" allowed_cpuset="0x00c00000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002">
+              <object type="Cache" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="22" cpuset="0x00400000" complete_cpuset="0x00400000" online_cpuset="0x00400000" allowed_cpuset="0x00400000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+              <object type="Cache" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002" cache_size="32768" depth="1" cache_linesize="32" cache_associativity="4">
+                <object type="PU" os_index="23" cpuset="0x00800000" complete_cpuset="0x00800000" online_cpuset="0x00800000" allowed_cpuset="0x00800000" nodeset="0x00000002" complete_nodeset="0x00000002" allowed_nodeset="0x00000002"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+    <object type="Machine" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" name="machine1" local_memory="4014239744">
+      <page_type size="4096" count="980039"/>
+      <page_type size="2097152" count="0"/>
+      <info name="DMIProductName" value="Latitude E6410"/>
+      <info name="DMIProductVersion" value="0001"/>
+      <info name="DMIBoardVendor" value="Dell Inc."/>
+      <info name="DMIBoardName" value="0667CC"/>
+      <info name="DMIBoardVersion" value="A00"/>
+      <info name="DMIBoardAssetTag" value=" "/>
+      <info name="DMIChassisVendor" value="Dell Inc."/>
+      <info name="DMIChassisType" value="9"/>
+      <info name="DMIChassisVersion" value=" "/>
+      <info name="DMIChassisAssetTag" value=""/>
+      <info name="DMIBIOSVendor" value="Dell Inc."/>
+      <info name="DMIBIOSVersion" value="A03"/>
+      <info name="DMIBIOSDate" value="05/28/2010"/>
+      <info name="DMISysVendor" value="Dell Inc."/>
+      <info name="Backend" value="Linux"/>
+      <info name="OSName" value="Linux"/>
+      <info name="OSRelease" value="3.0.0-1-amd64"/>
+      <info name="OSVersion" value="#1 SMP Sun Jul 24 02:24:44 UTC 2011"/>
+      <info name="HostName" value="rhododendron"/>
+      <info name="Architecture" value="x86_64"/>
+      <info name="AssemblerName" value="input1again"/>
+      <info name="AssemblerIndex" value="2"/>
+      <object type="Socket" os_index="0" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f">
+        <object type="Cache" cpuset="0x0000000f" complete_cpuset="0x0000000f" online_cpuset="0x0000000f" allowed_cpuset="0x0000000f" cache_size="4194304" depth="3" cache_linesize="64" cache_associativity="8">
+          <object type="Cache" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="0" cpuset="0x00000005" complete_cpuset="0x00000005" online_cpuset="0x00000005" allowed_cpuset="0x00000005">
+                <object type="PU" os_index="0" cpuset="0x00000001" complete_cpuset="0x00000001" online_cpuset="0x00000001" allowed_cpuset="0x00000001"/>
+                <object type="PU" os_index="2" cpuset="0x00000004" complete_cpuset="0x00000004" online_cpuset="0x00000004" allowed_cpuset="0x00000004"/>
+              </object>
+            </object>
+          </object>
+          <object type="Cache" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a" cache_size="262144" depth="2" cache_linesize="64" cache_associativity="8">
+            <object type="Cache" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a" cache_size="32768" depth="1" cache_linesize="64" cache_associativity="8">
+              <object type="Core" os_index="2" cpuset="0x0000000a" complete_cpuset="0x0000000a" online_cpuset="0x0000000a" allowed_cpuset="0x0000000a">
+                <object type="PU" os_index="1" cpuset="0x00000002" complete_cpuset="0x00000002" online_cpuset="0x00000002" allowed_cpuset="0x00000002"/>
+                <object type="PU" os_index="3" cpuset="0x00000008" complete_cpuset="0x00000008" online_cpuset="0x00000008" allowed_cpuset="0x00000008"/>
+              </object>
+            </object>
+          </object>
+        </object>
+      </object>
+    </object>
+  </object>
+</topology>

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.sh.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.sh.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,38 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2009-2011 inria.  All rights reserved.
+# Copyright © 2009, 2011 Université Bordeaux 1
+# See COPYING in top-level directory.
+#
+
+abs_top_builddir="@abs_top_builddir@"
+assembler="$abs_top_builddir/utils/hwloc-assembler"
+abs_top_srcdir="@abs_top_srcdir@"
+
+# make sure we use default numeric formats
+LANG=C
+LC_ALL=C
+export LANG LC_ALL
+
+: ${TMPDIR=/tmp}
+{
+  tmp=`
+    (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
+  ` &&
+  test -n "$tmp" && test -d "$tmp"
+} || {
+  tmp=$TMPDIR/foo$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || exit $?
+file="$tmp/test-hwloc-assembler.output"
+
+set -e
+
+$assembler $file \
+	--name input1 $abs_top_srcdir/utils/test-hwloc-assembler.input1 \
+	--name input2 $abs_top_srcdir/utils/test-hwloc-assembler.input2 \
+	--name input1again $abs_top_srcdir/utils/test-hwloc-assembler.input1
+diff @HWLOC_DIFF_U@ $abs_top_srcdir/utils/test-hwloc-assembler.output "$file"
+rm -rf "$tmp"


Property changes on: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-assembler.sh.in
___________________________________________________________________
Added: svn:executable
   + *

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-calc.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-calc.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-calc.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,48 @@
+0xffffffff,0xffffffff
+0xffffffffffffffff
+
+0x0000000f
+0x00000f0c
+0x0000800a
+
+0x55555555,0x55555555
+0xffffffff,0x0
+0xffff0000,0x0
+0xc0000000,0x000000ff
+0x66666666,0x66666666
+0x10101010,0x10101010
+0x8000c000,0x000ee0c0
+
+4
+4
+16
+
+0
+1
+2,3
+
+NUMANode:0.PU:0 NUMANode:0.PU:1
+NUMANode:0.Core:0fooNUMANode:0.Core:1
+Core:0.PU:0 Core:1.PU:0 Core:1.PU:1 Core:1.PU:2
+NUMANode:0.Core:0.PU:0 NUMANode:0.Core:1.PU:0 NUMANode:0.Core:1.PU:1 NUMANode:0.Core:1.PU:2
+
+Core:3 NUMANode:1 Core:8 PU:36 PU:37
+PU:22_PU:23_Core:6_Core:7_NUMANode:2
+
+0x00400000
+22
+
+33,34,35,36,37
+1foo2
+
+0x0000000b
+0x0000ff0f
+0x0000e03f
+
+0x00000001
+0xf0000000,0x0000000f
+0xffff0000,0x0000ffff
+0x0000000f
+0x00000001
+0x00000001,,0x0
+0xffffffff,0xffffffff

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-calc.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-calc.sh.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-calc.sh.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,81 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2009 CNRS
+# Copyright © 2009-2011 inria.  All rights reserved.
+# Copyright © 2009, 2011 Université Bordeaux 1
+# See COPYING in top-level directory.
+#
+
+abs_top_builddir="@abs_top_builddir@"
+calc="$abs_top_builddir/utils/hwloc-calc"
+abs_top_srcdir="@abs_top_srcdir@"
+
+: ${TMPDIR=/tmp}
+{
+  tmp=`
+    (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
+  ` &&
+  test -n "$tmp" && test -d "$tmp"
+} || {
+  tmp=$TMPDIR/foo$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || exit $?
+file="$tmp/test-hwloc-calc.output"
+
+set -e
+(
+  $calc --if synthetic --input "node:4 core:4 pu:4" root
+  $calc --if synthetic --input "node:4 core:4 pu:4" all --taskset
+  echo
+  $calc --if synthetic --input "node:4 core:4 pu:4" 0xf
+  $calc --if synthetic --input "node:4 core:4 pu:4" 0xf ~0x3 0xff0 '^0xf0'
+  $calc --if synthetic --input "node:4 core:4 pu:4" core:0 pu:15 ~pu:0 '^pu:2'
+  echo
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:even
+  $calc --if synthetic --input "node:4 core:4 pu:4" node:2-
+  $calc --if synthetic --input "node:4 core:4 pu:4" core:12-
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:62:10
+  $calc --if synthetic --input "node:4 core:4 pu:4" core:all.pu:1:2
+  $calc --if synthetic --input "node:4 core:4 pu:4" core:odd.pu:0
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:6:2 core:3-4.pu:1-3 node:2.pu:14:2 node:3.core:3.pu:3
+  echo
+  $calc --if synthetic --input "node:4 core:4 pu:4" root --number-of node
+  $calc --if synthetic --input "node:4 core:4 pu:4" node:2 -N core
+  $calc --if synthetic --input "node:4 core:4 pu:4" node:2 -N 3
+  echo
+  $calc --if synthetic --input "node:4 core:4 pu:4" root --intersect Machine
+  $calc --if synthetic --input "node:4 core:4 pu:4" core:4-7 -I NUMANode
+  $calc --if synthetic --input "node:4 core:4 pu:4" core:10-15 -I 1
+  echo
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:2-3 --hierarchical node.pu
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:3-6 -H node.core --sep foo
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:3-6 -H core.pu
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:11:4 -H node.core.pu
+  echo
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:12-37 --largest
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:22-47 --largest --sep "_"
+  echo
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:22-47 --single
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:22-47 --single --pulist
+  echo
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:33-37 --pulist --po
+  $calc --if synthetic --input "node:4 core:4 pu:4" pu:30-37 --nodelist --po --sep foo
+  echo
+  $calc --if synthetic --input "group:2 cache:2 pu:1" group:0 cache:3
+  $calc --if synthetic --input "group:2 group:2 cache:2 cache:2 pu:1" Group2:1 Group1:0
+  $calc --if synthetic --input "group:2 group:2 cache:2 cache:2 pu:1" l2:0-2 L1cache:13:3
+  echo
+  cat << EOF | $calc --if synthetic --input "node:4 core:4 pu:4"
+pu:0
+core:0 core:15
+node:0 node:3
+0x0001 0x00002 0x000004 0x000000000008
+0x0000000000000000000000000000000000000000000000000000000000000000000000000000001
+0x1,0x0,0x0
+root
+EOF
+) > "$file"
+diff @HWLOC_DIFF_U@ $abs_top_srcdir/utils/test-hwloc-calc.output "$file"
+rm -rf "$tmp"


Property changes on: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-calc.sh.in
___________________________________________________________________
Added: svn:executable
   + *

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distances.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distances.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distances.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,53 @@
+
+Latency matrix between 2 Sockets (depth 1) by physical indexes (below Machine P#0):
+  index     0     1
+      0 780000.000 1520000.000
+      1 15200.000 1.000
+
+Latency matrix between 16 PUs (depth 4) by logical indexes (below Machine L#0):
+  index     0     1     2     3     4     5     6     7     8     9    10    11    12    13    14    15
+      0 1.000 2.000 2.000 2.000 4.000 4.000 4.000 4.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000
+      1 2.000 1.000 2.000 2.000 4.000 4.000 4.000 4.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000
+      2 2.000 2.000 1.000 2.000 4.000 4.000 4.000 4.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000
+      3 2.000 2.000 2.000 1.000 4.000 4.000 4.000 4.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000
+      4 4.000 4.000 4.000 4.000 1.000 2.000 2.000 2.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000
+      5 4.000 4.000 4.000 4.000 2.000 1.000 2.000 2.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000
+      6 4.000 4.000 4.000 4.000 2.000 2.000 1.000 2.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000
+      7 4.000 4.000 4.000 4.000 2.000 2.000 2.000 1.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000
+      8 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 1.000 2.000 2.000 2.000 4.000 4.000 4.000 4.000
+      9 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 2.000 1.000 2.000 2.000 4.000 4.000 4.000 4.000
+     10 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 2.000 2.000 1.000 2.000 4.000 4.000 4.000 4.000
+     11 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 2.000 2.000 2.000 1.000 4.000 4.000 4.000 4.000
+     12 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 4.000 4.000 4.000 4.000 1.000 2.000 2.000 2.000
+     13 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 4.000 4.000 4.000 4.000 2.000 1.000 2.000 2.000
+     14 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 4.000 4.000 4.000 4.000 2.000 2.000 1.000 2.000
+     15 8.000 8.000 8.000 8.000 8.000 8.000 8.000 8.000 4.000 4.000 4.000 4.000 2.000 2.000 2.000 1.000
+
+Latency matrix between 4 Cores (depth 2) by physical indexes (below Machine P#0):
+  index     0     1     2     3
+      0 1.000 4.000 8.000 8.000
+      1 4.000 1.000 8.000 8.000
+      2 8.000 8.000 1.000 4.000
+      3 8.000 8.000 4.000 1.000
+Latency matrix between 12 PUs (depth 4) by physical indexes (below Group0 P#4294967295):
+  index     0     2     4     1     3     5     6     8    10     7     9    11
+      0 1.000 2.000 2.000 4.000 4.000 4.000 8.000 8.000 8.000 8.000 8.000 8.000
+      2 2.000 1.000 2.000 4.000 4.000 4.000 8.000 8.000 8.000 8.000 8.000 8.000
+      4 2.000 2.000 1.000 4.000 4.000 4.000 8.000 8.000 8.000 8.000 8.000 8.000
+      1 4.000 4.000 4.000 1.000 2.000 2.000 8.000 8.000 8.000 8.000 8.000 8.000
+      3 4.000 4.000 4.000 2.000 1.000 2.000 8.000 8.000 8.000 8.000 8.000 8.000
+      5 4.000 4.000 4.000 2.000 2.000 1.000 8.000 8.000 8.000 8.000 8.000 8.000
+      6 8.000 8.000 8.000 8.000 8.000 8.000 1.000 2.000 2.000 4.000 4.000 4.000
+      8 8.000 8.000 8.000 8.000 8.000 8.000 2.000 1.000 2.000 4.000 4.000 4.000
+     10 8.000 8.000 8.000 8.000 8.000 8.000 2.000 2.000 1.000 4.000 4.000 4.000
+      7 8.000 8.000 8.000 8.000 8.000 8.000 4.000 4.000 4.000 1.000 2.000 2.000
+      9 8.000 8.000 8.000 8.000 8.000 8.000 4.000 4.000 4.000 2.000 1.000 2.000
+     11 8.000 8.000 8.000 8.000 8.000 8.000 4.000 4.000 4.000 2.000 2.000 1.000
+
+Latency matrix between 4 NUMANodes (depth 3) by logical indexes (below Machine L#1):
+  index     4     5     6     7
+      4 1.000 4.000 8.000 8.000
+      5 4.000 1.000 8.000 8.000
+      6 8.000 8.000 1.000 4.000
+      7 8.000 8.000 4.000 1.000
+

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distances.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distances.sh.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distances.sh.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,63 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2011 inria.  All rights reserved.
+# See COPYING in top-level directory.
+#
+
+abs_top_builddir="@abs_top_builddir@"
+distances="$abs_top_builddir/utils/hwloc-distances"
+abs_top_srcdir="@abs_top_srcdir@"
+
+# make sure we use default numeric formats
+LANG=C
+LC_ALL=C
+export LANG LC_ALL
+
+: ${TMPDIR=/tmp}
+{
+  tmp=`
+    (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
+  ` &&
+  test -n "$tmp" && test -d "$tmp"
+} || {
+  tmp=$TMPDIR/foo$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || exit $?
+file="$tmp/test-hwloc-distances.output"
+
+set -e
+(
+  $distances -i "pu:4"
+  echo
+
+  HWLOC_Socket_DISTANCES=0,1:23.4,45.6,0.456,0.00003
+  export HWLOC_Socket_DISTANCES
+  $distances -i "sock:2 pu:2" -p
+  HWLOC_Socket_DISTANCES=none
+  echo
+
+  HWLOC_PU_DISTANCES=0-15:2*2*4
+  export HWLOC_PU_DISTANCES
+  $distances -i "core:8 pu:2" -l
+  HWLOC_PU_DISTANCES=none
+  echo
+
+  HWLOC_PU_DISTANCES=0,2,4,1,3,5,6,8,10,7,9,11:2*2*3
+  export HWLOC_PU_DISTANCES
+  HWLOC_Core_DISTANCES=0-3:2*2
+  export HWLOC_Core_DISTANCES
+  $distances -i "core:4 pu:6" -p
+  HWLOC_PU_DISTANCES=none
+  HWLOC_Core_DISTANCES=none
+  echo
+
+  HWLOC_NUMANode_DISTANCES=4-7:2*2
+  export HWLOC_NUMANode_DISTANCES
+  $distances -i "machine:4 node:4 pu:2" -l
+  HWLOC_NUMANode_DISTANCES=none
+  echo
+) > "$file"
+diff @HWLOC_DIFF_U@ $abs_top_srcdir/utils/test-hwloc-distances.output "$file"
+rm -rf "$tmp"

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.output
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.output	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.output	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,52 @@
+0x0000000f
+0x000000f0
+
+0x00000003
+0x0000000c
+0x00000030
+0x000000c0
+
+0x00000001
+0x00000002
+0x00000004
+0x00000008
+0x00000010
+0x00000020
+0x00000040
+0x00000080
+
+0x00000001
+0x00000001
+0x00000002
+0x00000002
+0x00000004
+0x00000004
+0x00000008
+0x00000010
+0x00000010
+0x00000020
+0x00000040
+0x00000040
+0x00000080
+
+0x00000001
+0x00000001
+0x00000002
+0x00000002
+0x00000004
+0x00000004
+0x00000008
+0x00000008
+0x00000010
+0x00000010
+0x00000020
+0x00000020
+0x00000040
+0x00000040
+0x00000080
+0x00000080
+
+0x00000007
+0x00000038
+0x0003fe00
+0x07fc0000

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.sh.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.sh.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,42 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2009 CNRS
+# Copyright © 2009-2010 inria.  All rights reserved.
+# Copyright © 2009 Université Bordeaux 1
+# See COPYING in top-level directory.
+#
+
+abs_top_builddir="@abs_top_builddir@"
+distrib="$abs_top_builddir/utils/hwloc-distrib"
+abs_top_srcdir="@abs_top_srcdir@"
+
+: ${TMPDIR=/tmp}
+{
+  tmp=`
+    (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
+  ` &&
+  test -n "$tmp" && test -d "$tmp"
+} || {
+  tmp=$TMPDIR/foo$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || exit $?
+file="$tmp/test-hwloc-distrib.output"
+
+set -e
+(
+  $distrib --if synthetic --input "2 2 2" 2
+  echo
+  $distrib --if synthetic --input "2 2 2" 4
+  echo
+  $distrib --if synthetic --input "2 2 2" 8
+  echo
+  $distrib --if synthetic --input "2 2 2" 13
+  echo
+  $distrib --if synthetic --input "2 2 2" 16
+  echo
+  $distrib --if synthetic --input "3 3 3" 4
+) > "$file"
+diff @HWLOC_DIFF_U@ $abs_top_srcdir/utils/test-hwloc-distrib.output "$file"
+rm -rf "$tmp"


Property changes on: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-distrib.sh.in
___________________________________________________________________
Added: svn:executable
   + *

Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-ls.output
===================================================================
Added: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-ls.sh.in
===================================================================
--- mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-ls.sh.in	                        (rev 0)
+++ mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-ls.sh.in	2012-02-25 00:52:55 UTC (rev 9527)
@@ -0,0 +1,52 @@
+#!/bin/sh
+#-*-sh-*-
+
+#
+# Copyright © 2009 CNRS
+# Copyright © 2009-2011 inria.  All rights reserved.
+# Copyright © 2009, 2011 Université Bordeaux 1
+# See COPYING in top-level directory.
+#
+
+abs_top_builddir="@abs_top_builddir@"
+ls="$abs_top_builddir/utils/lstopo"
+abs_top_srcdir="@abs_top_srcdir@"
+
+: ${TMPDIR=/tmp}
+{
+  tmp=`
+    (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
+  ` &&
+  test -n "$tmp" && test -d "$tmp"
+} || {
+  tmp=$TMPDIR/foo$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || exit $?
+file="$tmp/test-hwloc-ls.output"
+
+unset DISPLAY
+
+set -e
+$ls
+(
+  $ls > $tmp/test.console
+  $ls -v > $tmp/test.console_verbose
+  $ls -c -v > $tmp/test.cpuset_verbose
+  $ls --taskset -v > $tmp/test.taskset
+  $ls --merge > $tmp/test.merge
+
+ at HWLOC_HAVE_LIBPCI_TRUE@  $ls --no-io > $tmp/test.no-io
+ at HWLOC_HAVE_LIBPCI_TRUE@  $ls --no-bridges > $tmp/test.no-bridges
+ at HWLOC_HAVE_LIBPCI_TRUE@  $ls --whole-io > $tmp/test.whole-io
+ at HWLOC_HAVE_LIBPCI_TRUE@  $ls -v --whole-io > $tmp/test.wholeio_verbose
+
+  $ls --whole-system > $tmp/test.whole-system
+  $ls --ps > $tmp/test.
+  $ls $tmp/test.txt
+  $ls $tmp/test.fig
+  $ls $tmp/test.xml
+  HWLOC_NO_LIBXML_EXPORT=1 $ls $tmp/test.xml
+  $ls --input "ma:1 no:2 so:1 ca:2 2" $tmp/test.synthetic
+) > "$file"
+diff @HWLOC_DIFF_U@ $abs_top_srcdir/utils/test-hwloc-ls.output "$file"
+rm -rf "$tmp"


Property changes on: mpich2/trunk/src/pm/hydra/tools/topo/hwloc/hwloc/utils/test-hwloc-ls.sh.in
___________________________________________________________________
Added: svn:executable
   + *



More information about the mpich2-commits mailing list