WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] merge with xen-unstable.hg

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] merge with xen-unstable.hg
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 07 Sep 2007 09:13:00 -0700
Delivery-date: Fri, 07 Sep 2007 09:18:46 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Alex Williamson <alex.williamson@xxxxxx>
# Date 1186951802 21600
# Node ID cd51fa91956be20dbd744d46117f7f989e08c334
# Parent  5b19839d036508fb2721a567798359dd11f68916
# Parent  7953164cebb6dfbbee08d06c91f424b63d87ed71
merge with xen-unstable.hg
---
 xen/arch/x86/genapic/es7000.c                              |   27 
 xen/arch/x86/genapic/es7000plat.c                          |  141 
 xen/include/asm-x86/mach-es7000/mach_mpparse.h             |   45 
 extras/mini-os/Makefile                                    |    4 
 extras/mini-os/arch/x86/Makefile                           |    3 
 extras/mini-os/arch/x86/mm.c                               |    6 
 tools/firmware/etherboot/README                            |    3 
 tools/firmware/etherboot/eb-rtl8139.zrom.h                 | 2051 +++++++++++++
 tools/firmware/hvmloader/Makefile                          |    4 
 tools/libxc/xc_dom_x86.c                                   |    2 
 tools/pygrub/src/LiloConf.py                               |   24 
 tools/python/xen/util/acmpolicy.py                         |   96 
 tools/python/xen/util/security.py                          |   40 
 tools/python/xen/xend/XendDomainInfo.py                    |   16 
 tools/python/xen/xend/server/DevController.py              |   27 
 tools/python/xen/xend/server/blkif.py                      |   42 
 tools/python/xen/xm/activatepolicy.py                      |   27 
 tools/python/xen/xm/main.py                                |    5 
 tools/python/xen/xm/new.py                                 |    3 
 tools/python/xen/xm/resources.py                           |    1 
 tools/python/xen/xm/setpolicy.py                           |   40 
 tools/security/Makefile                                    |   11 
 tools/security/policies/default-security_policy.xml        |   30 
 tools/security/policies/default-ul-security_policy.xml     |   41 
 tools/security/xensec_ezpolicy                             |    7 
 tools/xenstat/libxenstat/src/xenstat.c                     |    2 
 tools/xenstore/utils.c                                     |    7 
 tools/xenstore/utils.h                                     |    2 
 tools/xenstore/xenstored_core.c                            |   16 
 unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c |   10 
 xen/acm/acm_chinesewall_hooks.c                            |  199 -
 xen/acm/acm_policy.c                                       |    6 
 xen/acm/acm_simple_type_enforcement_hooks.c                |    2 
 xen/arch/powerpc/multiboot2.c                              |   67 
 xen/arch/x86/domain_build.c                                |    8 
 xen/arch/x86/genapic/Makefile                              |    2 
 xen/arch/x86/genapic/bigsmp.c                              |   10 
 xen/arch/x86/genapic/probe.c                               |    2 
 xen/arch/x86/hvm/irq.c                                     |   26 
 xen/arch/x86/hvm/svm/svm.c                                 |    1 
 xen/arch/x86/hvm/vmx/vmx.c                                 |    1 
 xen/arch/x86/mm/hap/guest_walk.c                           |    2 
 xen/arch/x86/mm/hap/hap.c                                  |   56 
 xen/arch/x86/mm/p2m.c                                      |  180 -
 xen/arch/x86/mm/paging.c                                   |   86 
 xen/common/compat/grant_table.c                            |    4 
 xen/common/libelf/libelf-dominfo.c                         |  104 
 xen/common/libelf/libelf-loader.c                          |  132 
 xen/common/libelf/libelf-tools.c                           |   30 
 xen/common/page_alloc.c                                    |   14 
 xen/include/asm-powerpc/boot.h                             |   46 
 xen/include/asm-x86/domain.h                               |   17 
 xen/include/asm-x86/hap.h                                  |    2 
 xen/include/asm-x86/msr.h                                  |    5 
 xen/include/public/libelf.h                                |   18 
 xen/include/xen/multiboot2.h                               |   99 
 firmware/etherboot/eb-rtl8139.zrom                         |    0 
 57 files changed, 3074 insertions(+), 778 deletions(-)

diff -r 5b19839d0365 -r cd51fa91956b extras/mini-os/Makefile
--- a/extras/mini-os/Makefile   Sun Aug 12 12:19:13 2007 -0600
+++ b/extras/mini-os/Makefile   Sun Aug 12 14:50:02 2007 -0600
@@ -123,3 +123,7 @@ tags:
 tags:
        $(all_sources) | xargs ctags
 
+.PHONY: TAGS
+TAGS:
+       $(all_sources) | xargs etags
+
diff -r 5b19839d0365 -r cd51fa91956b extras/mini-os/arch/x86/Makefile
--- a/extras/mini-os/arch/x86/Makefile  Sun Aug 12 12:19:13 2007 -0600
+++ b/extras/mini-os/arch/x86/Makefile  Sun Aug 12 14:50:02 2007 -0600
@@ -2,6 +2,9 @@
 # x86 architecture specific makefiles.
 # It's is used for x86_32, x86_32y and x86_64
 #
+
+XEN_ROOT = ../../../..
+include $(XEN_ROOT)/Config.mk
 
 # include arch.mk has to be before mini-os.mk!
 
diff -r 5b19839d0365 -r cd51fa91956b extras/mini-os/arch/x86/mm.c
--- a/extras/mini-os/arch/x86/mm.c      Sun Aug 12 12:19:13 2007 -0600
+++ b/extras/mini-os/arch/x86/mm.c      Sun Aug 12 14:50:02 2007 -0600
@@ -405,9 +405,9 @@ void *map_frames(unsigned long *f, unsig
 
 void arch_init_p2m(unsigned long max_pfn)
 {
-#define L1_P2M_SHIFT    10
-#define L2_P2M_SHIFT    20    
-#define L3_P2M_SHIFT    30    
+#define L1_P2M_SHIFT    9
+#define L2_P2M_SHIFT    18    
+#define L3_P2M_SHIFT    27    
 #define L1_P2M_ENTRIES  (1 << L1_P2M_SHIFT)    
 #define L2_P2M_ENTRIES  (1 << (L2_P2M_SHIFT - L1_P2M_SHIFT))    
 #define L3_P2M_ENTRIES  (1 << (L3_P2M_SHIFT - L2_P2M_SHIFT))    
diff -r 5b19839d0365 -r cd51fa91956b tools/firmware/etherboot/README
--- a/tools/firmware/etherboot/README   Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/firmware/etherboot/README   Sun Aug 12 14:50:02 2007 -0600
@@ -6,3 +6,6 @@ Rom-o-matic.net will provide this image 
 Rom-o-matic.net will provide this image at the following URL:
 
 
http://rom-o-matic.net/5.4.3/build.php?version=5.4.3&F=ignore&nic=rtl8139%3Artl8139+--+%5B0x10ec%2C0x8139%5D&ofmt=Binary+ROM+Image%28.zrom%29&arch=i386&ASK_BOOT=-1&BOOT_FIRST=BOOT_NIC&BOOT_SECOND=BOOT_NOTHING&BOOT_THIRD=BOOT_NOTHING&BOOT_INDEX=0&STATIC_CLIENT_IP=&STATIC_SUBNET_MASK=&STATIC_SERVER_IP=&STATIC_GATEWAY_IP=&STATIC_BOOTFILE=&EXIT_ON_FILE_LOAD_ERROR=on&DHCP_CLIENT_ID=&DHCP_CLIENT_ID_LEN=&DHCP_CLIENT_ID_TYPE=&DHCP_USER_CLASS=&DHCP_USER_CLASS_LEN=&ALLOW_ONLY_ENCAPSULATED=on&DEFAULT_BOOTFILE=&CONGESTED=on&BACKOFF_LIMIT=7&TIMEOUT=180&TRY_FLOPPY_FIRST=0&EXIT_IF_NO_OFFER=on&TAGGED_IMAGE=on&ELF_IMAGE=on&PXE_IMAGE=on&DOWNLOAD_PROTO_TFTP=on&COMCONSOLE=0x3F8&CONSPEED=9600&COMPARM=0x03&PXE_EXPORT=on&CONFIG_PCI=on&CONFIG_ISA=on&BUILD_ID=&PCBIOS=on&PXE_DHCP_STRICT=on&A=Get+ROM
+
+and the mkhex script in tools/firmware/hvmloader will make the header 
+file from the downloaded image.
diff -r 5b19839d0365 -r cd51fa91956b tools/firmware/etherboot/eb-rtl8139.zrom
Binary file tools/firmware/etherboot/eb-rtl8139.zrom has changed
diff -r 5b19839d0365 -r cd51fa91956b tools/firmware/etherboot/eb-rtl8139.zrom.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/etherboot/eb-rtl8139.zrom.h        Sun Aug 12 14:50:02 
2007 -0600
@@ -0,0 +1,2051 @@
+unsigned etherboot[] = {
+0xeb40aa55, 0xbfe96c65, 0x68744500, 0x6f627265,
+0x0000746f, 0x00540000, 0x0034001c, 0x52494350,
+0x813910ec, 0x00180000, 0x00000200, 0x00010040,
+0x00008000, 0x506e5024, 0x00000201, 0x00008a00,
+0x00090000, 0x00027fd7, 0x00001400, 0x00cc0000,
+0x00000000, 0x49444e55, 0x0000a016, 0x01000201,
+0x10001000, 0x43500abe, 0x81265249, 0x5024007d,
+0x81260c75, 0x506e027d, 0x20b80475, 0x1e50cb00,
+0xd88ec031, 0x3d0304a1, 0x1d74e44c, 0xa30064a1,
+0x66a10300, 0x0302a300, 0xa300afb8, 0xc88c0064,
+0xb80066a3, 0x04a3e44c, 0xb8581f03, 0x31cb0020,
+0xa3d88ec0, 0x02a10304, 0x0066a303, 0xa30300a1,
+0x50660064, 0x0aeb026a, 0x06eb006a, 0x016a5066,
+0xe78900eb, 0x1e505716, 0xb60f2e0e, 0xc1000206,
+0x6a5009e0, 0x012be812, 0x8ec88c58, 0x4a068fd8,
+0x48068f06, 0x50581f06, 0x6a0c6a66, 0x0060e900,
+0x16e08953, 0x55506650, 0x468be589, 0x02468910,
+0x8912468b, 0x685d0446, 0x5066104d, 0x0f2e0e50,
+0x000206b6, 0x5009e0c1, 0xe6e8146a, 0x8f2e5800,
+0x2e064a06, 0x0648068f, 0xc72e6658, 0x00038006,
+0x66000000, 0x00020168, 0x50686600, 0xe8000178,
+0xc4830010, 0x89175b12, 0x3ce85bdc, 0x0002ca01,
+0x6650006a, 0xc0200f50, 0x586601a8, 0x832d7458,
+0x0000247c, 0x44871175, 0x44890424, 0x00b80024,
+0x87000500, 0x50042444, 0x0002b4b8, 0x74c08500,
+0x011ee805, 0xe9580000, 0x000006c0, 0xe5895550,
+0x00067e83, 0x8b501375, 0x46890646, 0x46c76602,
+0x05000004, 0xeb5d5800, 0x1e585d02, 0xb8665066,
+0x000002b4, 0x74c08566, 0x0f061e2f, 0x83a80fa0,
+0x895508ec, 0x46010fe5, 0xe80e1602, 0xd1e803a8,
+0xe8000000, 0x0000027e, 0x010f5858, 0x835d0256,
+0xa90f08c4, 0x1f07a10f, 0x8cc03166, 0x66d88ec8,
+0x6604e0c1, 0x00038005, 0x0ba36600, 0x1f586604,
+0x500175e9, 0xbb061e60, 0xc38e0040, 0x131e8b26,
+0x06e3c100, 0x0d7feb81, 0x2606ebc1, 0x00131e89,
+0x8c06e3c1, 0x89d88ed0, 0x4c8b36e6, 0x78c98518,
+0x47878d15, 0xbfc08e0c, 0xc1831000, 0x8ecf291a,
+0xfcfc89d0, 0x6066a4f3, 0x1f0ec38e, 0x57afb966,
+0x89660000, 0xcf8966ce, 0xf3fd4166, 0x66fca467,
+0x66506661, 0xd889c031, 0x04e0c166, 0x80a32666,
+0xc7266603, 0xf0038406, 0x660000d7, 0x87e58958,
+0x5e89165e, 0x611f0714, 0xb80650cb, 0xc08e0040,
+0x0013a126, 0x0506e0c1, 0xe8c10dbe, 0x13a32606,
+0xc3580700, 0x0000e860, 0x815d0000, 0x0002baed,
+0x56b9fd00, 0x8d000051, 0x06530db4, 0xbc8d0000,
+0x00457c0d, 0xfca4f300, 0x457db58d, 0xbd8d0000,
+0x00000650, 0xffffffbd, 0xa405ebff, 0x0775db01,
+0xee831e8b, 0x72db11fc, 0x40c031f2, 0x0775db01,
+0xee831e8b, 0x11db11fc, 0x75db01c0, 0x831e8b07,
+0xdb11fcee, 0xc931e673, 0x7203e883, 0x08e0c10d,
+0x8346068a, 0x5074fff0, 0xdb01c589, 0x1e8b0775,
+0x11fcee83, 0x01c911db, 0x8b0775db, 0xfcee831e,
+0xc911db11, 0x01411d75, 0x8b0775db, 0xfcee831e,
+0xc911db11, 0x0775db01, 0xee831e8b, 0x73db11fc,
+0x814141e6, 0xfff300fd, 0x01d183ff, 0x2f348d56,
+0xe95ea4f3, 0xffffff74, 0x9090c361, 0x90909090,
+0x00000000, 0x00000000, 0x0feb02eb, 0x89559c50,
+0x87c88ce5, 0x46870646, 0x9c9d5d04, 0x0fa80f50,
+0x161e06a0, 0x01dee80e, 0x550cec83, 0x24448b50,
+0x00000d28, 0x44890006, 0x00e81024, 0x5d000000,
+0x003fed81, 0x858b0000, 0x0000008b, 0x0000002d,
+0x04dc0500, 0x44890000, 0x858d0824, 0x00000067,
+0x0c244489, 0xe8c35d58, 0x0000007a, 0x071f1f1f,
+0xa90fa10f, 0x5502c483, 0xf766e589, 0x00000646,
+0x755d0004, 0x9dcb9d02, 0x000004ca, 0x53000000,
+0xe8555756, 0x00000000, 0x98ed815d, 0x8b000000,
+0x0001bb9d, 0xa3eb8100, 0x8f000002, 0x0002b783,
+0xb3838f00, 0x8f000002, 0x0002af83, 0xab838f00,
+0x8f000002, 0x0002a383, 0xa7a38900, 0x8b000002,
+0x0001b3a5, 0xb7b5ff00, 0xe8000001, 0x00000006,
+0xe904c483, 0x535500d9, 0x0000e850, 0x815d0000,
+0x0000eeed, 0x9b858d00, 0x89000001, 0x00019d85,
+0x44b70f00, 0xe0c11024, 0x24442904, 0xc1c3890c,
+0x896604eb, 0x890e245c, 0x04ebc1c3, 0x9d8d5366,
+0x0000018e, 0x5366c329, 0x00000868, 0x849d8d00,
+0x29000001, 0x896653c3, 0x0001a585, 0x10e8c100,
+0x01a78588, 0xa5880000, 0x000001aa, 0x2444b70f,
+0x04e0c11e, 0xad858966, 0x89000001, 0x10ebc1c3,
+0x01af9d88, 0xbd880000, 0x000001b2, 0x9b95010f,
+0x66000001, 0x8e0010bb, 0x8ec429d3, 0x8ec38edb,
+0xcbeb8ee3, 0x80c3200f, 0x220ffee3, 0xc166cbc3,
+0xd08e04e8, 0x5b665866, 0x17cb5d66, 0x00000000,
+0xff000000, 0x000000ff, 0xff00009b, 0x000000ff,
+0x00000093, 0x00000000, 0x00000000, 0x30000000,
+0x0042e801, 0x000000e8, 0xed815d00, 0x000001c9,
+0x02bbbd8b, 0x8d8b0000, 0x000002bf, 0xf3fce689,
+0xa7a58ba4, 0xff000002, 0x0002a3b5, 0xab9d8b00,
+0x8b000002, 0x0002afb5, 0xb3bd8b00, 0x8b000002,
+0x0002b7ad, 0x6afac300, 0x66556600, 0x89506653,
+0xdb3166e5, 0xdb8e5b0e, 0x04e3c166, 0x46b70f66,
+0xd801660e, 0x0c468966, 0x66dd8966, 0x00e8db31,
+0x8d665b00, 0x66005287, 0x8966e801, 0x66005487,
+0x003e878d, 0x66e80166, 0x006a8789, 0x16c03166,
+0xe0c16658, 0xb70f6604, 0xc50166ec, 0x97010f66,
+0x200f0052, 0x0f010cc0, 0xff66c022, 0x66006aaf,
+0x8e0010b8, 0x8eec89d0, 0x8ec08ed8, 0x58e88ee0,
+0x17c35d5b, 0x00000000, 0xff000000, 0x000000ff,
+0xff00cf9f, 0x000000ff, 0x6f00cf93, 0x08000002,
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0x00000000, 0x00000000, 0x00000000, 0x00000000,
+0x02000000, 0x0002bd01, 0x00000000, 0x90909090,
+0x00008008, 0xfffffb7f, 0xc7835f58, 0x5b585e06,
+0x89d68e59, 0x00f883fc, 0x53510375, 0x750207cb,
+0xcd19cd02, 0xffeefdbb, 0x9090fb18, 0xf958fbfa,
+0x069c15cd, 0xbb660eb4, 0xcd000001, 0x5cd20c10,
+0xc0317f6e, 0xe43016cd, 0x9c01b407, 0xadff0258,
+0xe083fffb, 0x12cdfa03, 0x31c931f9, 0x523158d2,
+0xc4835048, 0x165b6606, 0xbff7ed07, 0x66e789fd,
+0x39e820b8, 0x4150ba66, 0xb966534d, 0x66154514,
+0xeddf7609, 0x5b9c50fe, 0x7c009a07, 0x1f0e5819,
+0x099e8d5d, 0x55cb1500, 0xdfffb7dd, 0x1eff2e18,
+0x729c002d, 0x81e5891c, 0x0f3c027e, 0x08009584,
+0xedff7f01, 0x8000c637, 0x0788037e, 0x5d9d0101,
+0x0002ca5d, 0xc1016600, 0x6ffffedb, 0x2966da02,
+0x660377c3, 0xff85db31, 0x39661274, 0x132b76c2,
+0xe6ed07c3, 0x13cb6ef6, 0x1eebd989, 0xd272ca1d,
+0xde28f766, 0x39f7ee76, 0x07e376da, 0x1527ca01,
+0xc11dd089, 0xfffe56c3, 0x5292eede, 0x2e4d9bbe,
+0x54045c8b, 0xffa5e804, 0x8108c683, 0xc877abfe,
+0xeaa4dede, 0x5ecb5a66, 0x660000c3, 0x97b7d33d,
+0x850fffed, 0x2666ff72, 0x00047d83, 0x66506809,
+0x458b0d51, 0xbbfedbe5, 0x084d0400, 0xe8ff3157,
+0x0b5fffa4, 0xfd891089, 0x66dbb7fb, 0x42e9ee59,
+0x91000c14, 0x06e8da87, 0xff33e905, 0x56f85757,
+0xbf5033d8, 0xc166aa60, 0x5b3010e1, 0x36dfdd6d,
+0xc14b6ced, 0xcb8910e9, 0x030a1359, 0xdb6fffe8,
+0x115a90b7, 0x45582a0a, 0xe853c35f, 0xe95bffc8,
+0x9b30fef7, 0x01f0d0bb, 0x09016866, 0x00686eeb,
+0xfe500507, 0x789785ed, 0x80002be8, 0xa19ccb08,
+0x9d137556, 0xad564eb8, 0x5317dbe1, 0x07004036,
+0x003e1ed7, 0x0f9d38f8, 0xd93c2ff7, 0x42c83a2e,
+0x66d55000, 0x4487c88c, 0x76030424, 0x7b05fbbb,
+0x0f08ec83, 0x0f660801, 0x66a002a8, 0xfb76dd5a,
+0x66164185, 0x128d600e, 0x0c038938, 0xfb6e4407,
+0xe850dff6, 0xed815d39, 0x89060514, 0x058138ad,
+0x7dbf168b, 0xbaa9bbfb, 0x8d217400, 0x09c470b5,
+0xd470bd8d, 0x72f43905, 0x6f8e3904, 0x76fcfeec,
+0xb9e6890d, 0xcf293248, 0xe8a4f36d, 0xb9b64fe3,
+0x2d8bdfb7, 0x686c2936, 0x450b83e8, 0xed12203f,
+0x0f7b6dfe, 0x04240ab7, 0x5026245c, 0x6088858d,
+0x6dbffa50, 0x548fb6ff, 0x01d38e7c, 0x6158cbec,
+0xa102a993, 0x1f660766, 0x6ffb9a14, 0x8b9d0ce4,
+0x9cd42464, 0x832696f7, 0x6fb7fec5, 0x9dcb9dbc,
+0x565507ca, 0x247c8b57, 0x983d2b10, 0xb6bfb7b8,
+0xafa81061, 0x0480e868, 0x7cbae855, 0x336edd63,
+0x0ee05b1f, 0x8904e2a3, 0x6dbfbe77, 0xb9237dfb,
+0xa3f129b4, 0x2015732e, 0x7ffe00ea, 0x00a80bf7,
+0x10b80008, 0x8ed88e1c, 0x8ed08ec0, 0x5fe88ee0,
+0xe6c35d5e, 0x35dbbbf3, 0x3589e620, 0x283d0524,
+0xddbf2c1d, 0xa358efdd, 0x34250b30, 0x70bb5905,
+0x5f1d033e, 0x770f6853, 0x4328bacf, 0xb1e8e451,
+0x0ca5890b, 0xcde9a528, 0x2f00bf75, 0x612974a5,
+0x768de4cf, 0x4d7b7f00, 0xbcfc77b7, 0x6020a88f,
+0x1b22ed0a, 0xa15bb7b1, 0x35b70234, 0xd0ff0b07,
+0x91cf7e8b, 0x8b8b9191, 0x8b158b8b, 0x23bbc28d,
+0xff041ca1, 0xda4c8be2, 0xb7ff1bd4, 0x5189680b,
+0x89045902, 0x69890861, 0x5e71890c, 0xdcd0bd79,
+0x006d148f, 0x431f1bc3, 0xbf4a8b08, 0x37b6dbfe,
+0x0862095a, 0x728b0c6a, 0x147a8b10, 0x59b80519,
+0xfd4f6b69, 0x9c284389, 0xb664bea0, 0x5401c2d8,
+0x208dce0c, 0xb849687e, 0x1f30b8b9, 0x5d5821a2,
+0x87bc3c9d, 0x3d282ef1, 0x50802b07, 0x2e4070f0,
+0x89003881, 0xb1fa8285, 0x6fd23921, 0x29077095,
+0x7ee68d4f, 0x530c281d, 0x9da95350, 0xdd4bed1d,
+0x43892a4b, 0x1d0a0302, 0x04438810, 0xfdb84702,
+0x63880cf2, 0x585b0f07, 0x560090c3, 0x6cbe72a1,
+0x1b0aed6e, 0x0483000d, 0x6a24c629, 0x33736f00,
+0xf2b801fd, 0xee2d0629, 0xdd056850, 0xe8efe37a,
+0x189008bc, 0x0dbd3b80, 0x057003c6, 0x2f62b63c,
+0x00b03cdc, 0x5b060e18, 0x51000c03, 0x1dbe9b63,
+0x24046f21, 0x0602026a, 0xcd0c0650, 0x50eebdb3,
+0x2d40f9b8, 0x70f24b52, 0xe816e589, 0x1a2d955a,
+0x7d550119, 0x79dfd6df, 0x0374c085, 0x6dd5b60f,
+0x49509b5a, 0x2f973488, 0x8f0203b6, 0x03060e46,
+0xf636b0f9, 0x9229f98c, 0xf7b42f1c, 0x0e722f6b,
+0x05212603, 0x672107e8, 0x2625b987, 0x16d861c0,
+0x32ee0e23, 0xe30e233c, 0xf7063e4c, 0x872723d0,
+0x1f298bcd, 0x2ece1616, 0x4db93ccc, 0xad1f2321,
+0x1f46792f, 0x53565795, 0x5b4bee27, 0xc76614ee,
+0x6c8dadc5, 0x570a6a04, 0x7778d7ca, 0x2ebb7497,
+0xeb81562a, 0x6c05f23e, 0xe8ee7598, 0x24f3375d,
+0x34750d83, 0x705eb6d8, 0xd2854c72, 0x3c835b75,
+0x7f68eb0a, 0xf51664da, 0x06e0c106, 0xae018c07,
+0x702ad7c8, 0xe87414c4, 0x1b060a15, 0xebd2f63b,
+0x88006dea, 0x025a5669, 0xc9ec60d8, 0x55cceb92,
+0x3b072094, 0xdba3ffee, 0x062b381d, 0x31617d7b,
+0x6ae089ed, 0xe102501e, 0xb8c3bdaf, 0xd09f6450,
+0x06c4e805, 0x607f78f7, 0x0282811b, 0x8b4175cd,
+0xdde3a404, 0x75b14777, 0x4334b22a, 0xd5283c8d,
+0x05b9fc0a, 0xffba5eb4, 0x5b14c5f7, 0x0b7da5f3,
+0xa874db85, 0x89a106ba, 0xc156b7da, 0xdeada599,
+0xf2eb3a14, 0x67eb102f, 0xd4e80c87, 0xabbbd601,
+0xbbddfffe, 0xa3bd02f7, 0x0a71ba40, 0x4c68206a,
+0x7bbba30b, 0x1044bedb, 0x6cff0f47, 0x0c48a35a,
+0xcb737559, 0x6f6fbb67, 0x0af22705, 0x0854a399,
+0xc70d44a1, 0xbc1ed7bd, 0x09f42005, 0x336e003c,
+0x5009b20f, 0x0f581589, 0xbac1055c, 0x1901b191,
+0x64091060, 0xd9360d23, 0x2268a3d8, 0x2c703c6c,
+0xafb876a1, 0x082e59e1, 0xe3073916, 0xd7861b73,
+0x83351763, 0x18744ebd, 0x9b181aff, 0xfc6bf033,
+0x77e7721d, 0x868bebed, 0x95bf0b7f, 0xdbfa837f,
+0x52779285, 0x7e24ff3d, 0x77e070ad, 0x8532be4b,
+0xb52b941e, 0xfdafe0df, 0x23d3391b, 0x770c72ce,
+0x0676c60e, 0x2d8d8b8b, 0x2c0db5bc, 0x3fc70729,
+0xc3b1d835, 0x19d209da, 0x629d8b3d, 0xdb7f0db6,
+0x228d08fb, 0x2e70870f, 0x0903f981, 0xe9bb1f7b,
+0xce89640b, 0xdf894203, 0x5230bd13, 0x70deedbd,
+0x04b7d739, 0x1d46820f, 0x0f6c0877, 0xdfec3c86,
+0x8009cdc1, 0xc1891b77, 0xc8291577, 0x8c89da19,
+0x6c7701db, 0x1de96289, 0x4c0e011e, 0xb03ec990,
+0x85c781ba, 0x66580954, 0xe970ddd0, 0x13b8bff0,
+0xab05d704, 0x1f12b86d, 0x6a83c39c, 0x2e400a0c,
+0x08b221de, 0xe208af48, 0xe07b8376, 0xef4c35ff,
+0x74e70d5b, 0x60380310, 0xa337f6f7, 0xfdd2e91e,
+0x770f684d, 0x704d3e1e, 0x38ed93bc, 0x0949feeb,
+0x2b8520a1, 0xc9b59b30, 0x1d4f4669, 0xf75837f5,
+0x59379ae8, 0xda380062, 0xbafc5357, 0x109ffc77,
+0x89d6ff05, 0x15c5e8c3, 0x0d8ba6ba, 0x48f16e2d,
+0xebc1ca65, 0x91028b46, 0x16a178b6, 0x891f2af6,
+0x62dff5c7, 0xcab6df6b, 0xc1d7bd3a, 0x071c0ae2,
+0x7625b7cb, 0x896802d1, 0x04aa9cd7, 0xd0a15b5a,
+0xf889c5e1, 0xf1516b63, 0x70edbbd6, 0x54689fe8,
+0x89587524, 0x78935bd8, 0x56c08fbf, 0x03c28984,
+0xe2815d15, 0xb102c575, 0x8c8d921f, 0xd66b801a,
+0xcdc5a9a9, 0xf289bdac, 0x4e1d280d, 0x7b7ffbbc,
+0x701474c9, 0x02c7044a, 0x45524621, 0x9a00c281,
+0xec754966, 0x6e867b19, 0x5c1deb47, 0x04a36965,
+0xe8b0df6e, 0x5a5863f8, 0x06fcb5e9, 0xedc75790,
+0xb96f81ad, 0x115429ca, 0xe7c1faaa, 0xb77d1bb2,
+0xfa81c06f, 0x81580280, 0x53754f3f, 0xed8bb603,
+0x5f0457da, 0xc9044f1d, 0xc3c5ebc7, 0xd9846170,
+0x53b0fe56, 0xa9998df8, 0x2dfdc184, 0x5900e381,
+0xa13b29b9, 0xde1866a3, 0x0c0eafc1, 0x51b5bb1b,
+0x6bf37268, 0x03768f00, 0xfba25795, 0x52561882,
+0x599161e8, 0x25b929d8, 0x3529eefc, 0xeb5b0046,
+0x5ab890e4, 0xbb65b856, 0x08fc4aed, 0x60158b46,
+0xbac5b350, 0x74da6f6f, 0xff475b02, 0x41144c39,
+0x587421b6, 0x097a05c7, 0xd5b87704, 0xd8eb5ae0,
+0x403d3417, 0xd72d4cd1, 0xc774dcd5, 0x22960d39,
+0xb1cdbdad, 0xe869df6b, 0x448a24c7, 0x6c2d82d1,
+0xeb87b83a, 0x365621db, 0xb62d7b54, 0x1c0777be,
+0x477a9639, 0x8b7008d8, 0xb854be9b, 0x37bbfbe3,
+0x43900578, 0x938389cf, 0xbd828d07, 0xfa63ba2f,
+0xb85d0183, 0xba0f2df2, 0xd1bbdffb, 0x9615be34,
+0xa13a148d, 0xc83bc46c, 0x7c4beac1, 0x8b1a5ef8,
+0x0d180409, 0x765689b6, 0x7ec103c7, 0x7605ab4f,
+0xae8d0001, 0xb0f08d8b, 0xb63e7489, 0x2fc57cbb,
+0x53b1a975, 0xb7926702, 0xc229760b, 0x9ec6fd3b,
+0xdfa315bd, 0x8294ea81, 0x86038992, 0x509c8789,
+0x2bdfeb00, 0xd32b696b, 0x109e4d81, 0xd5b139d0,
+0xfc3d3a70, 0xdb001822, 0x7fe9dd1b, 0x89130480,
+0x1c2d2bc5, 0x8bda1425, 0xc68ea96e, 0x7adc0c42,
+0x1fa291fe, 0x0d9eef64, 0x8f01bf42, 0x84e8560c,
+0x6ed9124c, 0xc601e3b1, 0x1cff20c4, 0x6c1730ff,
+0x9d76ee15, 0xc31b2c3f, 0xf45e5502, 0x08b0be03,
+0xc134b9ef, 0x4e1c4f01, 0x6a61731e, 0xe0304cfb,
+0x80972a78, 0x85b5a903, 0x3a0d06ed, 0x07c3248e,
+0x7ab84d45, 0x9e084377, 0x10438b14, 0xe08df891,
+0x1cded6db, 0x9c979902, 0x1859c541, 0xc05c7a03,
+0x033e5df4, 0x675e4d3d, 0x36ff5046, 0x756f847c,
+0x4bebe857, 0x730320f8, 0x45e9d70c, 0x3960e857,
+0x19744c29, 0xbf4e0873, 0x2d2befc2, 0x06e88933,
+0x2a0ee9ec, 0x056f6df4, 0xe0eb0419, 0xd10d9690,
+0x82eb7e03, 0xa110a32d, 0x08a5080a, 0xfce18303,
+0x2ed1beb6, 0x4355045f, 0x5154cc29, 0xd56bae3e,
+0x5f5b99dd, 0x3ef632e8, 0x830655d0, 0x89b89b08,
+0xc3415dec, 0x1eb76990, 0x387e1dbc, 0x9024ac8b,
+0xf7503658, 0xe0f873c5, 0x4c96e83a, 0x9c47c713,
+0x4a274674, 0x18ef9a94, 0x4e601236, 0x898984bc,
+0xc3830ffb, 0xe16fc818, 0x75118dd6, 0x108b2029,
+0xa12ab9ab, 0x99e056a5, 0x1a8ff9f7, 0xfe10c206,
+0x7d7709bb, 0x940e1810, 0xca114208, 0x5553f07c,
+0xeb718ef5, 0x29920862, 0xe581ca0b, 0x3db5c06b,
+0x087466bb, 0x140a7449, 0xb8956d38, 0x8f69f17b,
+0x106a102c, 0xa119e1c3, 0xd02db00f, 0x2900d028,
+0xc4ddcba1, 0x8b90d1fe, 0x020d68f3, 0xae07718a,
+0xc10a19c5, 0xa0882f72, 0x714719bd, 0x1b0e8ba3,
+0xc177ce3b, 0x0972edf5, 0x15154a72, 0xe685ed5e,
+0xc308b985, 0xe30b0abe, 0xb8077768, 0xd939d5d1,
+0x0b73288b, 0x5fa5ede1, 0x423204c1, 0x72d4c101,
+0xc10b5bf5, 0x1931c35e, 0x1007a60a, 0xea4ed4a1,
+0xb85bbde5, 0x6e85b75b, 0x840fd848, 0x50bd6a07,
+0x942d7c88, 0xb3f0e783, 0xb5e370cb, 0xb9f72724,
+0x01a13880, 0xaf94afde, 0x0e838d0f, 0xf7f63759,
+0x77982db4, 0xa00505b8, 0xaf081304, 0x5d038607,
+0x6e030ada, 0x6b04a77f, 0x8dc2b077, 0xf0e5566c,
+0x1febf622, 0x9a28776d, 0x772a6804, 0x05499d29,
+0xc6e57598, 0xc65899c6, 0x36880707, 0x38d7ec47,
+0x862b666f, 0xb61c18bb, 0x1cec7418, 0x12bf071d,
+0xeb2a076e, 0x02d8171e, 0xa166d622, 0x032e1661,
+0xac43335c, 0x3e1a3b26, 0xd6da2e0d, 0x285314dd,
+0x321b2003, 0x6da9182b, 0x2b127d9b, 0x0330155b,
+0x91919a7b, 0x43c770ce, 0x0e080542, 0x91919106,
+0x2c14160c, 0xdd236375, 0x1e1805ff, 0x40093670,
+0x7609db63, 0x6342435a, 0x48054607, 0x7c83637c,
+0x054e4a12, 0x1d521250, 0x5683475b, 0x49f558a9,
+0x325d28dc, 0x0543e97c, 0x60738d6a, 0xba082f68,
+0x2b584894, 0x14bbff52, 0x2c0846c6, 0x23a7e2bf,
+0xd5ad6ec5, 0xf40a466c, 0x917546c4, 0x0320bace,
+0x9b8bf714, 0x2bf7220f, 0x1603d739, 0x36fd2ddf,
+0x0311fb01, 0x2671ae77, 0xf295fa01, 0x0fe38337,
+0xdfb6cf0d, 0x23030c5c, 0x010646c7, 0x910e0402,
+0x23221246, 0x18056323, 0xb7761c1a, 0x46e6c76f,
+0x285e032a, 0x979e2c6a, 0x0946b1fd, 0x31e0c108,
+0x8c80c740, 0x3ea7f40d, 0x98a42372, 0xcde81c04,
+0x43318b47, 0x160a6377, 0xd0e85532, 0x91063503,
+0x027a4736, 0x38652510, 0xede9b4d8, 0xf8431011,
+0x0558c2d3, 0x6eee0981, 0x2d7a8585, 0x4e53deeb,
+0xb46eebe8, 0x9c8ae3a0, 0xf71d1cf7, 0x20d9de5b,
+0xc3bf3ee0, 0x813256de, 0xbb05ec52, 0x88ba830e,
+0x760fd788, 0x98f9044b, 0x2168be6d, 0x188b068d,
+0xf8ce54b2, 0x06815fe3, 0x89a4c24f, 0x840b5282,
+0xe11dfe13, 0x58824d19, 0x8019840c, 0x1bee5e06,
+0x82c7eebc, 0xf9601056, 0xb8da293a, 0x811b31b3,
+0x65018df7, 0x83c71689, 0x8393ec69, 0x34ad64f0,
+0x7581826f, 0xbd09b908, 0xc87a1fb3, 0x82b865c3,
+0xf7380b0e, 0x70928bef, 0x89e81089, 0xd967349a,
+0x090d75a8, 0xe835eb44, 0x136bd5e9, 0x1b1e754e,
+0xc4132305, 0x04afa1b8, 0xb2c75859, 0x7c4c2d00,
+0x833668e8, 0xf78843ba, 0xd9c13add, 0x8b8a5151,
+0x601376b5, 0x6d4b0c35, 0xe0e201bd, 0x23720beb,
+0xd81f68b4, 0x6a0ee2fa, 0x6fd01aae, 0x8d046780,
+0x96600f01, 0x57130835, 0x5f233e2f, 0x5c505067,
+0x115e70fa, 0xe8d8f08a, 0x43b01eb0, 0xfea75d38,
+0xc283d70c, 0xdb388104, 0x06d318c0, 0x4276d0ae,
+0x042d67a6, 0xde0fb8ef, 0x0842af8d, 0x1e045162,
+0x4a2581a2, 0xe3e88ebe, 0x0a13b4d1, 0x0a246cd0,
+0xac400e50, 0x21431a36, 0x6e25ca55, 0x5bc9cddb,
+0x012b518b, 0x75065209, 0x70effba9, 0x1058f42b,
+0xc4ebd109, 0x8b7ae068, 0x0bba5ad4, 0x25e8bbb1,
+0x3e40043f, 0x097b2013, 0x7343efc0, 0x0a6a13ef,
+0xb09e35e8, 0x4d42af0a, 0xb604c1c2, 0x0657a510,
+0x77a957cc, 0x77be1cb7, 0x8b07771b, 0xdb121934,
+0x7bc5b6ea, 0x7bc574ce, 0x05352218, 0x90b6ede9,
+0x1825178d, 0x76012648, 0x00ede007, 0x0f3b91ed,
+0xab6942c4, 0x01e8dc97, 0x5a14dd6a, 0xf1dae240,
+0x823749fc, 0xc917d19f, 0x755a405f, 0xdc1f81bc,
+0x08b302d3, 0x247b8df6, 0x3bc2d42b, 0xeb0024b2,
+0x03068797, 0xc868377f, 0xbb535212, 0x594503c7,
+0x1bddf2eb, 0xf0850222, 0x5c478b18, 0x0cef1c24,
+0x683e0dbf, 0x41e9c578, 0xfce0b953, 0x8e0b4789,
+0x8a68dbdb, 0x6c478855, 0xd33aa272, 0x0a145712,
+0x5e68da17, 0xee52795d, 0x789fb7b3, 0xc87e4b42,
+0xe4293d4f, 0xf0f0c094, 0xf0de02ff, 0x0636748d,
+0x8d56ed31, 0x837b0745, 0xdea56786, 0x5750028c,
+0x83280b45, 0x1ab4fafd, 0x7e03edfc, 0x684f48e0,
+0xec58518d, 0xeef70cb7, 0x51fc2fc7, 0xa9ed6662,
+0x7f7cbacf, 0x81ba0575, 0x7b1dc206, 0xb8520029,
+0x89b80e86, 0xad770f06, 0x5c77ee5d, 0x6807895e,
+0x427d6068, 0x736bdc09, 0x38fe81a6, 0xfebbf496,
+0x50965ad6, 0x267504b4, 0x364e07c7, 0xe84147c7,
+0x0c48efe7, 0x144c061b, 0x1c14501a, 0x77e0f022,
+0x68f75aa4, 0x40fc45a0, 0x60c5fc5b, 0x95eb0fb0,
+0x708bdd0c, 0x7fb61768, 0xbf283577, 0x50c6b506,
+0x0bd1e7d3, 0xbcb02428, 0x80a97f89, 0x88b0ee99,
+0xcb89edee, 0x8833788c, 0x80dddcd9, 0xf8d3895b,
+0xfa950ff9, 0x7be0d1c0, 0x7b7eedab, 0xc9f64c8a,
+0x0275e688, 0xbf30c888, 0xedb776f6, 0xc883158a,
+0x794b088c, 0xbb113dcd, 0xfdddf610, 0x8cb05876,
+0xb3e5d10a, 0x56c50901, 0x622df34b, 0xe97ffb40,
+0x2a08f7b0, 0x04fe1bb3, 0x5390a46e, 0xb968587f,
+0x53dc840e, 0x6db77144, 0x05efca1b, 0x06ff4f08,
+0x0b5bef0c, 0x6b98a50f, 0xb4b004b6, 0x3e905bc2,
+0x68ee37fa, 0xe0662e9a, 0x45e409a6, 0xe820f570,
+0x2df558d9, 0xaefc03d6, 0x74107626, 0x5908e809,
+0x460cea2f, 0x8bf685ad, 0x5c1a5c5f, 0x2fc48d8a,
+0x31ffa171, 0xf98341ee, 0xd0f37e05, 0xda41b037,
+0xdab78dee, 0x444ef76d, 0x897f00b8, 0x405675ca,
+0xef03550a, 0x167bbb5b, 0x9588d422, 0x24ef3056,
+0x42c2ee28, 0x251e6b17, 0xef534c23, 0x3eda059c,
+0x6ecd3fc7, 0x2d3c6f58, 0x8f08c3e9, 0x5067d6ef,
+0x76c48665, 0x874789e0, 0x86842425, 0xbe9da106,
+0x6820a96e, 0x5a136be8, 0x21abf30f, 0xee6877ce,
+0x1cf2040e, 0x86475d1a, 0xf310f46f, 0x315339fc,
+0xfec46f2c, 0xd0f668c0, 0xdee80ec3, 0x3bfb6414,
+0xddb46a77, 0x83c60def, 0x0c430047, 0xc883f376,
+0xd0fc09ef, 0x2c8d069d, 0xc1818690, 0x86e29b1f,
+0x55758dd6, 0xcb81efa3, 0x4e558d3d, 0x6d437b78,
+0xecf7e8ef, 0x12708db5, 0x7da03e27, 0x829a3573,
+0x0c256616, 0xded7c080, 0x33e0b82d, 0xf03920d6,
+0x5249de72, 0xbfc2837e, 0x8a548d27, 0x7428b510,
+0x01418d11, 0x896f8c42, 0x5818a3d9, 0x09c60566,
+0x985bc037, 0xa855f1eb, 0xc17bfb14, 0xe37f6150,
+0x836175f8, 0x8fdac4fc, 0x7496f886, 0x0e6e1655,
+0x9d0b6dad, 0x6dae1ae8, 0x70fdc3b2, 0x1f27036a,
+0xc68969ed, 0xef03f625, 0xee1d4ba0, 0xe93ea910,
+0xdefe830d, 0xa25a1b0b, 0x76aaee70, 0xec8d1b1d,
+0xbf4f7360, 0xe5751a29, 0x85d231c2, 0x4960da0d,
+0x166587d0, 0x7eeeadc5, 0x003dfcf7, 0x644f4520,
+0xfcbb6476, 0x53d32955, 0x374d42d3, 0x5658d8b9,
+0x0b9ee860, 0x9fd27189, 0x3ad8c2a9, 0x5f036ec3,
+0xdfd7f960, 0x1588dc06, 0x8c350322, 0x1707468d,
+0x5e2562e6, 0x05f60aa3, 0xefb12fcd, 0xb910db6b,
+0x51b6af38, 0xa3cfefc3, 0xebec06c7, 0x415c5185,
+0xb7eb0c46, 0xd0fb406f, 0x93015cc6, 0x17081176,
+0x00a8b71a, 0xbb528b75, 0xb636c237, 0xeeb11c17,
+0x25062d0a, 0x49307fac, 0xad6fbb58, 0x0dc34c07,
+0xf64d8053, 0xc60ccb90, 0x0b90b6e6, 0xed5326d9,
+0xfe3190c7, 0xe8ef3868, 0x53db55fd, 0x1c9a50f2,
+0x7a24562c, 0xbd77134c, 0xfa810183, 0xbeab6948,
+0xeb0ed03d, 0x3d8d806d, 0x05c61310, 0x9e261c0d,
+0x481a5bb5, 0x7722126f, 0x85dd523a, 0xb024a3ad,
+0x0ec50350, 0xcf637823, 0xbb08fde0, 0xffc8c33c,
+0x5ffa8954, 0x6d361588, 0x555b3ebd, 0xe8013f56,
+0xe24b5c19, 0xb76dc4cb, 0x752e5041, 0x4ce819c2,
+0x1f445c68, 0x91c3601e, 0x3d5630b8, 0xd52db62a,
+0xc61753e6, 0xf00b4005, 0x175c1637, 0x1833dce8,
+0x57a7e803, 0xf81b6fdd, 0xd6c81556, 0x5884665d,
+0x1ee85975, 0x3a27e8dc, 0x17a9dd76, 0xe84f6e04,
+0xdae880d1, 0xeedba471, 0x13ba2468, 0x3d0ee953,
+0xa8fceaff, 0x6716836e, 0xdc0d5f18, 0xbbae0860,
+0x5e1763c4, 0x00c3f275, 0x5b572aa9, 0x8ebc0c84,
+0x0da1115b, 0x26b63703, 0x1017151c, 0x78e0e7c2,
+0x1407c18f, 0xebc73be7, 0x064fa187, 0x25ba23bb,
+0xff681cfc, 0x6ea37100, 0x4bc705a0, 0x3369e8fc,
+0xafa9043d, 0x7e091a96, 0x0f71be0c, 0xdb20e21b,
+0x440802fb, 0xdbc1d58f, 0x6c36ed74, 0x7e035cb7,
+0x27e48417, 0xff54eca1, 0x43a15b50, 0x17cba72c,
+0xc0fd2728, 0x74f0f7ee, 0x613b6826, 0xf43d796d,
+0xb5bb0220, 0x0b376cff, 0x0e097f58, 0x31d47ef8,
+0xe1d0ebdb, 0xf6360895, 0xf4eb030c, 0xc3c5a209,
+0xe022a21f, 0x0fe85d74, 0x5bd87e23, 0x893cf4c2,
+0x2818ab75, 0x5d0db91c, 0x51d900b8, 0x38f0a3a2,
+0x9b30fd82, 0xc77c4e5d, 0x8025e405, 0x2fe8125d,
+0x300939a8, 0xb6348d33, 0x265436d9, 0xcfe74303,
+0xe7f876b2, 0xe604b5b6, 0x7c04008b, 0x77fb8111,
+0xb9d72110, 0xe92857dd, 0xe4280430, 0xc1890e7d,
+0x53575f62, 0xba04f873, 0xb7f12c5b, 0x5916158b,
+0x5bf17a83, 0xc6ffa107, 0x66e884ec, 0x1939eb22,
+0x7420423b, 0x3bb76814, 0x124487d8, 0xe9ad3a5a,
+0x02bb78ce, 0x66c1df09, 0xa204c5cf, 0xf0b1e9b6,
+0xd4c15e83, 0x208edb00, 0x6a37716a, 0x82abd76f,
+0x5e23a158, 0xc200a6d6, 0x907bfdf7, 0x0c8d4362,
+0xe1a1359d, 0x6a162cd3, 0xe62e8174, 0x079efd0f,
+0xb61ac70f, 0x89b6035a, 0x62158924, 0xb0b84f7e,
+0xc46a0a84, 0x039e0975, 0x7a6c0a74, 0x08fe52ad,
+0xf8397fc1, 0x0b52c533, 0xa2d4eca9, 0xdf8b1ce4,
+0x770a8bec, 0x89d440c7, 0xb6fbf448, 0x1c705b0b,
+0xbb75200c, 0x8400e94b, 0xd40de2bb, 0x1378e802,
+0xfdf1e9f6, 0xf70b1833, 0x5cfd8a70, 0xd5ed35a4,
+0xc2664777, 0x0f970832, 0x3d25c588, 0x5d001f76,
+0xc709bbe9, 0xb1c28105, 0xe80ef88d, 0x328b4293,
+0x8d8cf685, 0x72dcdee1, 0x8e0fb21c, 0x618c076a,
+0xeadd830e, 0x0001b12d, 0xb48d5652, 0x0fd09e86,
+0x99788321, 0x05872724, 0x85ce4bbe, 0x03018c39,
+0x3bdbf004, 0x2c68eed2, 0x2abb59bf, 0x4b1ee913,
+0x01baeb86, 0x53d7ae47, 0x4aa1bdf3, 0x7b719fc4,
+0x3c89b10c, 0xbcd88a24, 0x31078a50, 0xc2fe25ba,
+0x10d284f6, 0x0c743a3c, 0x0b3e5446, 0x81b76d04,
+0xbbf4755f, 0xfbd37548, 0x1e730550, 0x7a463a7f,
+0x4ac0338a, 0x30020c70, 0x0db3c6df, 0x721d08c8,
+0x5a354be2, 0xdcd03e68, 0x5306568f, 0xda8a0938,
+0x89d81bfa, 0x699d01d6, 0xa9764a4f, 0x6ad33f75,
+0x27656803, 0xfbf8698d, 0x02d04e3a, 0x881e0a34,
+0x5ffdda01, 0x894e94aa, 0x78802414, 0x1a742f03,
+0x5250a88d, 0x5827a9fd, 0x081e1223, 0x3a388025,
+0x737a705e, 0x2a2fec4b, 0x89752f09, 0xd78b6ceb,
+0x4c69d26d, 0x37357ea3, 0x5d02eb79, 0xcc40bd11,
+0xb61b0453, 0x81f13e06, 0x8d0ab240, 0x9f7152c6,
+0xebc0fe9f, 0xe2faa34e, 0x21e890b6, 0xddfb0887,
+0x9b086ac6, 0x6a00902e, 0xe0b3ebfe, 0xe4c1b167,
+0x8005ffff, 0x833e653d, 0x5f14301b, 0x1f74288e,
+0xe0563ccd, 0x1652d454, 0x551d860f, 0xac36fde1,
+0x8112ee81, 0x8ed705c7, 0xdfb6b97d, 0x298e88c7,
+0xb6852460, 0xedc860ad, 0x0b64a005, 0x230f68ff,
+0x25801eee, 0x89105c29, 0xbe822bea, 0x1ed59c2a,
+0x4a11a35a, 0xd0708db4, 0x8af284f6, 0xaa16ddbd,
+0x88d5192b, 0x893803e8, 0x8dba370d, 0x48a24ff7,
+0x3c53d63c, 0x09c8840b, 0x077cb1f7, 0x5434ac02,
+0xefbb201a, 0x68a3775f, 0x8a04a106, 0x13a3240c,
+0x58a34403, 0x7ab90b7a, 0x15f7696f, 0x73685b42,
+0x57ee1455, 0x02904e3c, 0x7a57ec3d, 0x4ec9842a,
+0xb55b7490, 0x4b764a84, 0xcec41734, 0x74ce7c51,
+0xfdbb1a37, 0x39179995, 0xf3aa76f3, 0x6c575d53,
+0xaab044b7, 0xde76398f, 0x3a232029, 0x1d0177e2,
+0xefdf011a, 0x144b97ef, 0x5ec7c072, 0x50825dec,
+0x5fc3843f, 0xffffe361, 0x72377603, 0x701caed1,
+0x036d47e9, 0x8ebc1b1d, 0xe941a3c5, 0x14b4a53b,
+0x87bf8847, 0x92444806, 0x7b507958, 0xb76f4090,
+0x52d115b1, 0x0515507e, 0x7da082ec, 0xf34844a0,
+0xc733e23e, 0x24dd13e2, 0xc02e7c20, 0x05f61935,
+0xbd4bbec1, 0xbba89045, 0x08dbd0fe, 0x06dd7b6e,
+0x68057095, 0x21483c49, 0x60a9f740, 0x53e95442,
+0x0644901a, 0x37ca3058, 0xd230ce14, 0xa2128876,
+0xd04b1810, 0x182a3407, 0x1b29ca2e, 0x084466d0,
+0x662907cd, 0x34efe1e2, 0x32e80557, 0x602807ec,
+0x8a5df886, 0x35628068, 0x4851b64e, 0x60a6bd1b,
+0x508d0310, 0xd358a515, 0x0375ba2d, 0x4dc753c2,
+0xaa608efe, 0x2a367134, 0xdc3d95e2, 0xad7285ad,
+0x141a4c0f, 0x3502bb07, 0x7710eef5, 0x7614050f,
+0xad546609, 0x581b6868, 0x5231c31d, 0x2974ed03,
+0xdf89c8ee, 0xfb398303, 0x35882b54, 0x01dc9103,
+0x6a170683, 0x7308acff, 0x8d138b29, 0x8d468042,
+0x6db1d64b, 0x348d0ce3, 0xc0e74386, 0x77302c0e,
+0xff6f8e6f, 0xfa830b77, 0x083e7408, 0xd772eb89,
+0x29743218, 0x4cea7783, 0x74403cb7, 0x28579e23,
+0xa3fb079d, 0x4e245dd8, 0xd1787520, 0x3433e967,
+0x6f77ac0b, 0x68080624, 0xe8511a8e, 0x2d0836f2,
+0xae3b40b4, 0x6cf83d66, 0xda16d540, 0x147704da,
+0x03e89e83, 0x5d5ddb78, 0x75d312a2, 0xeb04aa93,
+0xfd03188d, 0x75ab7d86, 0x2b068bb6, 0x66e5bc74,
+0x7c0ec3a3, 0x3589f2f8, 0xc866e90b, 0x7fd21d37,
+0x0e57654b, 0x4fe92434, 0x6e1ccdff, 0x95c03e81,
+0xc48631a6, 0x88466b32, 0x93e5ff8d, 0x4bd0ad00,
+0xfeab946f, 0x74c809d8, 0xf8c82534, 0x2d03d339,
+0x0e72fa6d, 0xd8c4870f, 0xbc2cc139, 0xc21ec183,
+0xc7253d5f, 0x053ed405, 0x8bba09d0, 0xd8a1dc06,
+0x6b442308, 0x77fb2934, 0x772d4a14, 0x343ef229,
+0x576cfa01, 0xc0a1e0b0, 0xd48ee4ad, 0x720b2d35,
+0x2efc11a9, 0x683aadc0, 0xa36f1268, 0xac610713,
+0xed0cd62a, 0x62ed312b, 0x7e70ab62, 0x69adf1df,
+0xa12e740a, 0xcc15aec8, 0xcb80bc7b, 0x83cce376,
+0xd0e6c0be, 0x61a007ff, 0x624517b0, 0x3920c683,
+0xa1e67cc5, 0x78574437, 0x9beb3e3d, 0xe6c1c677,
+0xf75ff7da, 0xcc868b05, 0x897aa32c, 0xc48e8bf8,
+0x09efdb69, 0x9435f23f, 0xc1291358, 0x1189d319,
+0x84f742d9, 0x25d0861d, 0xa534f23b, 0xe9820f78,
+0x3245ba82, 0x0c0025c8, 0x584c2fb7, 0x5e493499,
+0xdf11c601, 0x3b350116, 0x4f7e7c2d, 0xac0f3d11,
+0x2c3d8958, 0x6e5336d6, 0x4afba1ff, 0xfe3f8238,
+0x1537a2da, 0xd9985e34, 0xee9215b7, 0x290719ba,
+0xdf1031e6, 0xc22f750c, 0x0aba1a90, 0x2f5b7e09,
+0x13cc0d14, 0x40269cdd, 0xaf6da555, 0x9a4e0957,
+0xe06a6c66, 0x34a4f5e8, 0x0b0a696b, 0x6943ee43,
+0x056e4deb, 0x52e82691, 0xa21da216, 0x2a65de00,
+0xd6211680, 0x2c710e60, 0x36e77f09, 0x4b29d05a,
+0x788dd539, 0x5c1a7d34, 0x2db04270, 0x5a494576,
+0xc15a15e8, 0x817fa5c3, 0x68f08f5c, 0xaf5a99a8,
+0xb6ff5c4d, 0x30bb2cd4, 0xf1f2a984, 0x4d6f09e2,
+0x214b63bc, 0xbe03941a, 0x1beb2921, 0xa9b4381a,
+0x43735c5f, 0xc1968d47, 0x84be15d0, 0xf991f887,
+0xbbe29514, 0x1366c271, 0x77a8d339, 0x261c8290,
+0x876e087b, 0x07148290, 0xb41674de, 0xb7ddc6c5,
+0x8b22808b, 0x40423937, 0x048ff4b0, 0x890ddbf7,
+0xe9e9202d, 0x3ce9d30a, 0x73d48d7c, 0x405b923f,
+0x43d48b6e, 0xa6f210a0, 0x7037ddba, 0x86418abf,
+0x261020a1, 0x7ab75206, 0x988dee89, 0xc7502600,
+0xeb50501e, 0x8a7000a1, 0xf4c0623b, 0x592b566c,
+0xedd2215e, 0x32f3179a, 0x8336ffd8, 0xe8190a0d,
+0x035b462d, 0xe29a8cf4, 0xec41bf5e, 0xe2c3e894,
+0xa3603c53, 0x61344abc, 0xe0715a23, 0x2d50e81f,
+0x6ce67460, 0x0cec91b7, 0x90046a0d, 0xb5b80729,
+0xa0c0456a, 0x236deeeb, 0x68c5fa1e, 0x2fd77b96,
+0x014258fa, 0xd984a814, 0xd4281027, 0xe95bf683,
+0xd2077f07, 0xc740bad6, 0x03c0246c, 0x46e0ce2c,
+0x013ee893, 0xc28152c4, 0x2781f82b, 0x7612d51f,
+0x7ddc050f, 0xc5d7056a, 0x3461bb59, 0x54ece0be,
+0x34181ced, 0x3bb1d818, 0x105c24b9, 0x000c0b10,
+0x9f020809, 0x257304ae, 0x65035d51, 0x6db8a024,
+0x750a8855, 0x134a815b, 0x3d0c3014, 0x19aadbb1,
+0x3b573e15, 0xc5137691, 0x5e76eb6d, 0x2b092b2c,
+0x89e00807, 0xace046e9, 0x140c1b2a, 0xe0345531,
+0x80480be1, 0x034deaa0, 0xe3468bb8, 0x888be2c7,
+0x00964edb, 0x32988bb3, 0x025bb8b0, 0x70da4eee,
+0x2e857228, 0x6dd6b6c8, 0x9d7b639d, 0x71fdfa13,
+0xc6137209, 0xf5db8468, 0x2bff6709, 0xdf6ca910,
+0x0ce42bd2, 0xc0396878, 0x03a38168, 0xe91420f6,
+0x7d001a76, 0x7b1e27f6, 0x9c68e3b8, 0x5a215f77,
+0xc42d56e9, 0x650f0dc2, 0x8d1c6353, 0x01cabd45,
+0x67bc22b7, 0x262575e8, 0x4bc7390b, 0x7b75384f,
+0x140d4514, 0x66143e47, 0x3b837741, 0x28ee7235,
+0xf7ef0059, 0xcc3595fb, 0x8bc48603, 0x9613d296,
+0x6ed7e2c8, 0xcf778901, 0xd3891c10, 0x11df847f,
+0x249e031c, 0xc37d818d, 0xc2390676, 0x307b4273,
+0xc20f6903, 0xc7090c76, 0x2ff606ee, 0x34a1c215,
+0x0a1e24be, 0x8df4153b, 0x1ccd1dfe, 0xd8f7e889,
+0x21ff1521, 0x41fd57c2, 0x3e225ca1, 0x843bd329,
+0x69ef409a, 0x61cc5a82, 0xb43b2ad7, 0x2e2b8d04,
+0x27f1e1bf, 0x5970073b, 0x330f4974, 0x05ad7501,
+0x68f0e1e0, 0x714d11ac, 0xe1a3995e, 0x582080b3,
+0x2d2924b8, 0x430781d4, 0x018a3534, 0x0aad2360,
+0xb3e84b1f, 0x0d91e82d, 0xaf5b8169, 0x39db982c,
+0xde283bd6, 0xe00ded12, 0x77c3615d, 0xd20c0f57,
+0xa1de9605, 0x9709d510, 0x3b5aa930, 0x203f8370,
+0x0155c529, 0x2015d8c7, 0xb1101dbe, 0x3f3bc0af,
+0x208520c7, 0x0c5a6300, 0xa04653b8, 0x61476a95,
+0x06396f64, 0x21c7dfed, 0x3d8bad72, 0x73ef3907,
+0xc0de182d, 0x05de17ed, 0xeac1071a, 0xfac93109,
+0x8d8dce19, 0xdbc78a5d, 0x898a8938, 0xad6ca39b,
+0x2930fbd5, 0xc9f8052d, 0x2587286a, 0x2c0982d9,
+0xf836e87e, 0x40cdb82e, 0xa0a35e11, 0xa519ca5a,
+0x638787c7, 0x2c321ab2, 0xfe36922c, 0x1163bab3,
+0x3e815457, 0x1b031336, 0xf3d2f174, 0xaf0b6add,
+0xcc682bd0, 0xc46f0928, 0x8159619f, 0x10ba9b28,
+0xbfe03a22, 0xf418fb40, 0xb9c0a107, 0x106a372c,
+0x41116856, 0xadd68e03, 0x454a9181, 0x379c2289,
+0x25422d48, 0x360e86be, 0x5207908e, 0x7e87b570,
+0xc750a3df, 0xfbef315c, 0xf7a2208a, 0x598fbc06,
+0x44a18674, 0x250f5ae8, 0xf52f5cf0, 0xe51d2996,
+0xf73c8d96, 0xdfbb003f, 0x3d7d5b78, 0x07864274,
+0x8a5a72c4, 0x16216f47, 0x3ac003a9, 0xc7db47c2,
+0x1b7df021, 0xea5659a1, 0x3a2d03f7, 0x81553076,
+0x02ea53e2, 0xdeacfc67, 0x0182550b, 0x013a2805,
+0x7c221cba, 0xad23138b, 0x0374d8e9, 0x60500847,
+0x142b5aad, 0x06fe0704, 0xfd881ecf, 0xe80477ff,
+0x3c60ae40, 0x5c5f037d, 0x08abd3ec, 0x078ac441,
+0xdb73b2b7, 0x97c5a46c, 0x1b5597b5, 0xb98f48b4,
+0x46e9a527, 0x96e9b10e, 0xbc0ba7fe, 0x57573a60,
+0x332061d8, 0x245e9577, 0x9242715e, 0xfe32dc34,
+0x366e0035, 0x0d3dbac0, 0x464c457f, 0x026e0fbb,
+0xa1d6ebd6, 0x004c2595, 0x0be0f63d, 0xd00001b4,
+0x90a166eb, 0x2d487ebf, 0x77a981f1, 0x6794b1dc,
+0xdb7016d9, 0x08a838d3, 0xc72320d0, 0x44eeeef8,
+0x740320cc, 0x75060506, 0x30d268b5, 0xe47d18df,
+0xd7782a24, 0xf4a2180b, 0xaac4693b, 0xd0af06ac,
+0x12e8e5e9, 0x5e78de70, 0xb51d493b, 0x97abb00c,
+0x76a20a61, 0xefa6bc6d, 0x36dd6815, 0xd7b85be1,
+0x241d3753, 0x5295d47e, 0xdfc801e7, 0x85df2c72,
+0x72c38b6f, 0x1403a33d, 0x3d860151, 0x7d180ec1,
+0x05fb005d, 0x986b09c4, 0x3074c488, 0xf7354247,
+0xfdb03df1, 0x04407a83, 0x15c6f235, 0x358e4218,
+0xf5f82080, 0xedd07c0f, 0x4dcb64d9, 0xc12b2d43,
+0xd84344e2, 0x788291d6, 0x405eed40, 0x5f64d1d3,
+0x05c7d642, 0xb0cc90c8, 0x5794a303, 0x3709d86b,
+0xb8786a1e, 0x3fd025ea, 0xb22f4075, 0xf0687ecc,
+0x300c2b0f, 0xd0240c89, 0x405a8ba6, 0x350bc5bd,
+0x03f56a0d, 0x55536d6a, 0x30ee0151, 0xf8f8a86e,
+0xdb101847, 0x22337208, 0x4ef3b213, 0xdbd28459,
+0xe94b823d, 0x8852fdec, 0xbb3743c4, 0x7e8609dd,
+0x5268f87d, 0xe8243651, 0xb11b1076, 0xe5b635a6,
+0xf83d8bfe, 0xa48c307d, 0xbecb0448, 0xecfd0b01,
+0xfe261342, 0xe1c1d189, 0x1184b952, 0x98a3460e,
+0x0cc71000, 0x9c6fa54b, 0x89a68dda, 0x6ec721f7,
+0x6d037dd8, 0x1e8675d5, 0x2b63565d, 0x681b8451,
+0x72f9a1ee, 0x894c76c0, 0x1acb46c1, 0xc72b1a2d,
+0x842967de, 0x267dc21f, 0xcc8801bf, 0x0e01b5a9,
+0x01dae8f1, 0x8dce640d, 0x5dc56b15, 0x2799e86a,
+0xdfb8fc8f, 0xeea56d1d, 0x8c998d49, 0xfa40433f,
+0x4aa9fbe0, 0x8103b0cc, 0xc6e844d4, 0xfa36dfd3,
+0x395018c5, 0x3e860ff0, 0x0579c6b5, 0x71235f98,
+0x01fd6cb1, 0x5d8c0a26, 0xd87c4cd2, 0x5d770e02,
+0x0ec1f729, 0xda263163, 0x9b3235ba, 0xfa120108,
+0x742dbf21, 0x400b76c0, 0xa0105f10, 0xd93941d0,
+0xa3805a72, 0xf70fd7b7, 0x7f215bd0, 0x28605d73,
+0x79f7cb45, 0xe8bae73d, 0x1ad2f7f6, 0xd28e0274,
+0x68213320, 0x423d58ef, 0x1a062d05, 0x28d8afe6,
+0xf08eecc4, 0x5eb78265, 0x08474c83, 0xd1a4b952,
+0x1c2eff6f, 0xc96933ad, 0x29da890a, 0xd269b2ca,
+0xa1b5684e, 0x690b9cb7, 0x2934b3f6, 0xa8d15cf2,
+0x2d1857f7, 0x06a10978, 0xddfa967a, 0xab82472e,
+0x0ea37f58, 0xd419eaeb, 0x097ba057, 0xc4440596,
+0x0660bfc4, 0x0159d2a0, 0x26991a5d, 0xf4b42c48,
+0x7501e4a4, 0xa05b1727, 0xf674fa01, 0xf886eee8,
+0xd0041ad3, 0x047806e9, 0xe2b31574, 0x859dfdba,
+0xc09e1b7f, 0xcac9d368, 0xebed17ff, 0x77da90e6,
+0x2abae829, 0x12ef6b5e, 0x0c1de84f, 0x7eef4274,
+0x0773d839, 0xeb31a2e8, 0xe3c35bf0, 0xdb92dcf5,
+0xeff3edf1, 0xed0e8958, 0x744d1dc6, 0x6a7bcbf7,
+0x7453e82e, 0x43f5eb58, 0x0dc42808, 0x84118af4,
+0x1074ebd2, 0x2f16318a, 0xe26e2370, 0x38df1ddf,
+0x52b774c2, 0x138afb9d, 0x100a018a, 0xd202cd0f,
+0xb6dd8c29, 0x41c36f0b, 0x742f432e, 0x4cde2be4,
+0xe893c08c, 0x5127d2eb, 0x168b71ab, 0x242c4597,
+0x1c8bc5ba, 0x1c239b5e, 0x50b59d4e, 0x4c142a16,
+0xe80795ae, 0x07ffe25e, 0x77c6b9b5, 0x02ff8337,
+0x428d0b7f, 0xfedf8501, 0x3a80efef, 0xc127752e,
+0x094708e6, 0x7e0315ce, 0xc0f089c1, 0xed0a1ba3,
+0x0410c8c1, 0x891cdb81, 0x81a11d30, 0xe829b548,
+0xc1f65dea, 0x94aa7ba2, 0xc50a29ef, 0x4c15ad0c,
+0x05741d7c, 0x50a18e2e, 0xff77d83e, 0x77093cd0,
+0x0ac36b14, 0x5c8d41b5, 0x7613d002, 0x0df685ec,
+0x18370a05, 0x9dea0e89, 0x4b06de4b, 0xbcd28ef5,
+0x64e41258, 0x841988ec, 0xe0edcb77, 0x0775d301,
+0xe80de002, 0x6b5bd2c1, 0x047ea978, 0xdeeb60e4,
+0x24016895, 0xbf14fe54, 0xbe85c1e1, 0xb054bdc1,
+0xe864e6d1, 0xdda1b8b4, 0xe6df087e, 0x4753ae26,
+0x0afb836f, 0xb71384e1, 0x09bcd00d, 0x6cc3137e,
+0x6aad889b, 0xeb42de50, 0x31bb77ec, 0x881377e8,
+0x4ad34fe8, 0x9a681875, 0x74db0680, 0x360d36ef,
+0xdc85bb12, 0x2debae1b, 0x200ae8f5, 0xac55627f,
+0x8edfebc5, 0xa93a9329, 0x0c9f0ac3, 0xa90dc68f,
+0x815f5d0f, 0xc581bcc6, 0xf0530a4e, 0x8de8f142,
+0x28a36b78, 0x00795e94, 0x8d83fff0, 0xc2d19cdc,
+0x60bb3f02, 0x83260051, 0xf7c3dc51, 0xec6d8f53,
+0xdd2dc381, 0x56882b74, 0xc1670555, 0xcc85d7ee,
+0x9404e068, 0xebe50423, 0x0daee807, 0x1acf9484,
+0xa93ec7e8, 0x1521c833, 0xcf839315, 0x9eefdb21,
+0x97778b3d, 0x86545817, 0x220553e8, 0x8b8b6e30,
+0xc7bf6e17, 0x9303cab4, 0xc3c1831a, 0xf08ef0e1,
+0xa9b75539, 0x0573caf7, 0x828c25ba, 0x16f72753,
+0x83cadd6a, 0x0211750a, 0xf16ba990, 0x740af896,
+0x3e07ea7b, 0x6bdc2826, 0x6d2cca19, 0xff47ab1e,
+0x2083f8dd, 0xd689c50b, 0xdd9e17e9, 0x0c5237fa,
+0x8de2a818, 0xc8d470b0, 0x9eb2c22a, 0xab10a32b,
+0x73087f09, 0xbcdca13e, 0x13abda5f, 0x123fc216,
+0xac503dbf, 0x042d59c3, 0xe6abc7fa, 0x1ef5674a,
+0x3826a35e, 0x12bc38a3, 0x63d597a7, 0xbe34a33b,
+0xacfe68a8, 0x81812e28, 0x5daf4c46, 0xa2a7dbe6,
+0xd9ebf26d, 0xa7757d58, 0x3cfc5808, 0x8b9e23c2,
+0x03cb1a8f, 0x73cb399f, 0x47785ff6, 0x76ce39f0,
+0x0e739e12, 0x3877cd39, 0xa9e8de39, 0x75cf1b81,
+0xc82943f1, 0x06001089, 0x055e0dba, 0x3b155faa,
+0xde0b9dfc, 0x1f558202, 0xc0890d1f, 0x9d4a2276,
+0xa673375d, 0x101bad1a, 0x35d9c889, 0x758df5f1,
+0xeb42c083, 0xa5a145be, 0x1b7c4529, 0xfc48ed2e,
+0xc40d3b85, 0x2c5df673, 0x3102ade2, 0x8d1889d0,
+0x06754841, 0x280dd8f0, 0xb9e5ebd0, 0x28478114,
+0xf843854e, 0xb06ff129, 0x217fb1a7, 0xf8598dc1,
+0x06411d3b, 0x2d435fa2, 0xd8e696e5, 0x4106fc30,
+0xd19858c8, 0x1533352b, 0x40b69003, 0x223b7034,
+0x83405c24, 0x8d4bb106, 0x03f09ffc, 0x0e071336,
+0xc25d80c6, 0xb52fa65d, 0x03343c18, 0x8b27b72d,
+0x44b6bb42, 0x8939fc89, 0xc27824f8, 0x939acd03,
+0xd1300db1, 0x46afc1c1, 0x47335a26, 0x32a00489,
+0xd3598941, 0x0b5a991f, 0xb6ec084b, 0x882c5b2a,
+0x4d5a5905, 0xdd7dec1c, 0x0314160c, 0x8c1f0453,
+0x9a604a82, 0x08bac022, 0x0e62b545, 0xa69ce496,
+0x8039a21d, 0x594edb01, 0x3b904dc3, 0xbc14d753,
+0x7e20684d, 0x21042003, 0x02bbbae2, 0x8314da34,
+0x11791968, 0x09e3ba45, 0xff6a16ec, 0xa6cd74f3,
+0xe64035ff, 0x2a2ebe66, 0x0f281c2a, 0xc8348210,
+0x18329e6d, 0x2a1e5ea1, 0x350b7cda, 0x3dc20d21,
+0x58590116, 0x2cefd475, 0xef114563, 0xf3582d1f,
+0xefc0a675, 0x155027fd, 0x733befd9, 0x54a12737,
+0x155c3d26, 0x07d12bc3, 0xfe5a8237, 0xac2dfb36,
+0x5def754b, 0x42745807, 0x172608b8, 0x655fdba7,
+0x689d1dbe, 0x3d972b69, 0x991ca3eb, 0x7f6818ef,
+0xcb9d8610, 0xb1730f05, 0xca7c78e8, 0xe144cca9,
+0xbf7ffd5d, 0x109f6653, 0xff740806, 0xa0e12ddc,
+0xa47a463f, 0xf17629cd, 0x4b007752, 0x8174a07a,
+0xa97e147b, 0x75f886ed, 0x0d046ae3, 0x6c1c438d,
+0xa20dec08, 0x232e3681, 0x22decacd, 0x1643f1d1,
+0x0aba6b50, 0x21c31e59, 0x44135200, 0xadd76402,
+0x1deb46d3, 0x3c7d240c, 0x5d10558b, 0x582edae6,
+0x342414e8, 0xb020b646, 0x0e356b04, 0x05230837,
+0xf729324e, 0x0e9f6d88, 0x8bf6c203, 0xb019b827,
+0x5f036341, 0xfefd6446, 0x6da8e8ae, 0xc904f37a,
+0xb016f5f5, 0x6bdbfef4, 0xbc800ac6, 0x06847303,
+0xf47dd17c, 0xed7e05f6, 0x28740604, 0x681c3c11,
+0xec1d13d9, 0xfdcd9301, 0x7b96b8bc, 0x24d2341f,
+0x012566de, 0xaedefd06, 0x23c955ab, 0x04090406,
+0xdbc4d610, 0xd8010436, 0x14253b68, 0xf672cc3f,
+0x0403efc7, 0x26104068, 0x6160b6de, 0x3a8d8f89,
+0xd6d9e316, 0xc701a245, 0x24045004, 0x082c7b1e,
+0x03bbbfcd, 0x681c6a16, 0xe1a84664, 0x75649982,
+0xb4b03f7a, 0x1fdff80e, 0x00139e91, 0x50383300,
+0x3a386856, 0x8faeab05, 0x28340cbe, 0x430333c8,
+0x0362d8dc, 0x0f14fbbc, 0xb5eb9f8f, 0x60a58c79,
+0xb3d27a01, 0x1f495aec, 0xe9d073f6, 0x68ee0d31,
+0x10e95c00, 0xc28c10ff, 0xe0b58b35, 0x577f68ae,
+0x45408d70, 0x43c60388, 0xb90f5891, 0x98b712a2,
+0x42bd8895, 0x9c43a1ed, 0xda310610, 0xa045b785,
+0x10062a15, 0x22fb723f, 0x433d452e, 0x0506be04,
+0x14c2ed03, 0xf5e3301a, 0x0526a6bb, 0x585b0c37,
+0x516c4911, 0x09171573, 0x18a31136, 0x5bdc4329,
+0x88bbf578, 0x704917b7, 0xbe147e8d, 0x6c35eb83,
+0x8014b1bf, 0x024782df, 0x476d5f03, 0xca5c45cd,
+0x0b23c05c, 0x68230b77, 0xc36689ef, 0xc33e1506,
+0xd18deef8, 0x68a61c87, 0x6a565318, 0xbfc7bd3c,
+0x0450dd06, 0xb028a366, 0x236bf1d5, 0x9341b08a,
+0x3fc3e6e3, 0x14563839, 0xc40c6823, 0x28a9ea0e,
+0x4610c037, 0x88bb63c6, 0x25744214, 0x3910404f,
+0x1106a37b, 0x97c8ec29, 0x1a9c40ed, 0x13602ac0,
+0x1ef54f8e, 0x892ec1b9, 0x715796e3, 0x453418e4,
+0x1e059800, 0x85a21e00, 0x59393f11, 0xd586c989,
+0xd603915d, 0xb457adc8, 0x39ff0997, 0xe0ba193f,
+0xc1a868c3, 0x5e021bf1, 0x711e081f, 0x7132aec8,
+0xf108c7d1, 0x1c93529f, 0xd42e2239, 0x0c18f708,
+0x7eedae1c, 0x9d86e6f6, 0xd8500642, 0xc56832ff,
+0x401e6849, 0x18ddda26, 0xdf1b8ce8, 0xf7ab1fc0,
+0xca688975, 0x91b40d93, 0x03611b00, 0xb82305b9,
+0x5241ae0a, 0xb759b75f, 0xc90c1758, 0x15108a51,
+0xd82bddb6, 0xba5fe34e, 0xa8bc08b7, 0x0722d9ee,
+0x7c5b02c0, 0xfa7d6b1d, 0x74ed30f7, 0x75171c0b,
+0x19e28c0a, 0xeb5f0eb1, 0x361145c7, 0x3a1780d6,
+0xc2504a48, 0xddbea267, 0x36b83dc0, 0xb72be80b,
+0x39eb61f4, 0x24d57f23, 0x7a09a194, 0x428aea0d,
+0x3c7a7444, 0x39b1b7ec, 0x29fa3f6d, 0x50770ca3,
+0x2f64ba4b, 0xff66f834, 0xb844d005, 0x774833b3,
+0xd1b4b607, 0x4837b63d, 0x82ae14e9, 0xaf638358,
+0x09120cd8, 0x950b325d, 0xe1d63db4, 0x5840e9c2,
+0x0e4b8dde, 0x9a11417c, 0x8d12ddc3, 0xaa08f670,
+0xa584127d, 0x1c0b6c62, 0x1505de0d, 0x96d58d2d,
+0x0512ca46, 0x84efb88f, 0x08db382d, 0xa8a1644a,
+0x6c759b00, 0x1e926a2f, 0xe6369ba3, 0xf3c64218,
+0xc5ad20c2, 0x1fc9d436, 0x8b66dee9, 0xaeb6ecee,
+0x1e7cf211, 0x397d424c, 0xb18960d0, 0xc00d5f5d,
+0x028dd616, 0x5c0b85c2, 0x6f8e7725, 0x8d73892e,
+0xb76d2b47, 0x2fa3d9da, 0x427b0ec0, 0xf70805fe,
+0x0bad40b1, 0xbc9c2003, 0xe1141685, 0xb10c5b04,
+0x88b5925c, 0x190d0fad, 0x06f8114d, 0xb850445c,
+0x43586dc3, 0x01d5562c, 0xf112c6d0, 0xbb92a5b6,
+0x241ff677, 0xbd1a3428, 0x19428fed, 0xe1eeb09c,
+0x5850ad52, 0x7672782b, 0x014352ae, 0x0efe505e,
+0xbb78477e, 0x47148a35, 0x0f9c0641, 0xcb0eed8e,
+0x682dec7e, 0xae2098dc, 0x1f1942f1, 0xa4171d6f,
+0xaa18e1e8, 0x14479b21, 0xa5cc0842, 0x081b861b,
+0x8ee91c58, 0x0eea3728, 0x3b4fa91e, 0x59e8f2e1,
+0xba210975, 0x80e82e6f, 0x967e077a, 0x8901508d,
+0xe115380e, 0xf22d36ae, 0xd272d0c6, 0x85412c53,
+0xc51de560, 0xde8f0767, 0xb7a3ec12, 0xb7ef9b12,
+0x67c9c3f0, 0x6a2e538d, 0xf2688352, 0x40fba05d,
+0xcb9f57b8, 0xb8721be9, 0x7dc20474, 0x093be9a4,
+0x5f3b8011, 0xd5b6f0a0, 0x743c0415, 0x8d4d6116,
+0x93801804, 0x78d5c258, 0xeb1fa702, 0xb0c0563c,
+0xe6096ac0, 0x6f5e417a, 0xe8b3123a, 0x0c061ae1,
+0x01a3ce75, 0x2dabb40a, 0xe29b1cd6, 0xc9a0d0a3,
+0x817feda6, 0x46efa65e, 0x8d21156d, 0x11762a5f,
+0xb8add208, 0x874ad1d0, 0x0774ee3b, 0xddbdd04e,
+0x7f804d15, 0xa1f3632a, 0xb8391b24, 0x922f0b85,
+0x7b66e975, 0x2a990fab, 0xbb6c9a37, 0x756c961d,
+0x723e473e, 0x0d46e06e, 0xc0c7ab46, 0x005746f3,
+0x71cec30b, 0xd7d88b55, 0xdbb0fb85, 0x211443ef,
+0xbf64a314, 0xa958044e, 0x068e6c88, 0x781a1a21,
+0x5854cf21, 0x6b3a1053, 0xb40e28de, 0xa3b53333,
+0xc5a38218, 0x0baacc07, 0x1858fbc1, 0x7f717fa8,
+0x117e7aba, 0x00debf3d, 0xd3136e6f, 0x0706057e,
+0x2705c068, 0xfa30039a, 0xaaf73fa1, 0xe8f8210b,
+0x0000199c, 0xe2a4c3f7, 0x2f513108, 0x469e04e9,
+0xa377dc88, 0x0462885e, 0x150fd0cc, 0x6888ec7e,
+0x6c43a580, 0x47e801b2, 0x52c59ba2, 0x57f16b19,
+0x9b66e8b3, 0x19849680, 0xe921f007, 0xd7dd590a,
+0x1a87ee1f, 0x10328d01, 0xf733205a, 0xae9fc7b2,
+0x3807e89a, 0xb3c5935d, 0xb99687d7, 0xd118f160,
+0x07ebb018, 0x326ce9dc, 0x50ec81ad, 0x8d48a0e0,
+0x03dbb7d7, 0xa00420a2, 0x3b210944, 0x7df60d1b,
+0x0c4505df, 0x09461622, 0xd9471623, 0x0cf5e860,
+0x59737724, 0xe9fe0240, 0x2c771176, 0x2e2d0401,
+0xc3e0e806, 0xa3e27c3e, 0xc6934627, 0x6de8f568,
+0xe048682f, 0x1beb7783, 0x167aba2c, 0xa3a83032,
+0x4cdb9d0f, 0x41e012d1, 0xdb143e2b, 0x677dcfbe,
+0x2df45984, 0x75db5413, 0x19bc0013, 0x8d193c19,
+0xed942494, 0x6e7fddd3, 0x680d6a24, 0xe852311c,
+0xc6ed0202, 0x14fe8425, 0x8b1889b9, 0xfffff8b0,
+0x1f86c20f, 0x17dfc531, 0x65c44094, 0x6da0cf09,
+0x06ca28c6, 0x1aff7f53, 0x17c0ec45, 0x6ae0418a,
+0x8b446a43, 0x7546e29f, 0x20b633e8, 0xd41b6a55,
+0xa86abfb7, 0xc2f9e833, 0x3c8d4511, 0x5fe24703,
+0x05c6ef6f, 0x7e5a7a0c, 0xa4b6531f, 0xee6c4f41,
+0x037f4676, 0xd2e8fb26, 0xdb46c329, 0xf7ae883b,
+0x3d83e17f, 0xf5e19576, 0xc0ef303d, 0x02f4742e,
+0xf1011ce3, 0xeef6dd20, 0x05c7de89, 0x8e31c71b,
+0xe068616a, 0x37b64efb, 0x131d3072, 0x93411031,
+0x13c660ed, 0x18160809, 0x91c221c2, 0x2616f22f,
+0x50d2230d, 0x13de4dc2, 0x9da223da, 0x18745330,
+0xf744eefc, 0x086c0712, 0x09af89e4, 0x3bada608,
+0x2e9ee02c, 0x712c3c43, 0xb3e85fd0, 0x7405cb09,
+0x7e13ef34, 0xc1dde8b1, 0x6c7f1ba1, 0xd1f112e9,
+0xf7acf029, 0xc0b132f1, 0x83c8c04b, 0x6b6513fd,
+0xc171e8c5, 0xc4817683, 0x0b72cb81, 0x5e3cbb09,
+0x2e1269c4, 0x22255098, 0x40552bb4, 0x636a09a8,
+0x5feeceae, 0xc1dbe874, 0x315f73ee, 0x33741cff,
+0x20b3ffc7, 0xc08ef5bd, 0xbce2e7a6, 0x07e08383,
+0x6be6e110, 0x47472ce0, 0x759eb60f, 0x82dfebdd,
+0x3944c383, 0xa1cf7cc7, 0x03408e72, 0xa382433c,
+0x81c33b19, 0x318f4be8, 0x3815b9c2, 0x6a0c5f28,
+0x73766949, 0x3b0dbc4f, 0x685ea166, 0x1b7c0ec7,
+0xe877068c, 0x71492692, 0x6b85686d, 0x49c28068,
+0xa100ca91, 0x1ac8429a, 0x5eaa59eb, 0xc10673ab,
+0x0d685c0a, 0x27083904, 0xe82fbfa9, 0x3b62f5c6,
+0x0a817308, 0x012a4e43, 0xc846f723, 0x8c6e83fe,
+0xfffedbe9, 0x0192beff, 0xe80f0de3, 0x45d314f3,
+0x3d766068, 0xde19a1da, 0xf6b914df, 0x231c786e,
+0xadf99d20, 0x0918921c, 0x59a35978, 0xab8f8120,
+0x80e46707, 0x979265c5, 0x9f0f1000, 0xa6499068,
+0x83346810, 0x6f8a31c3, 0xe9581844, 0x1403fe02,
+0xecd48a94, 0xafab1010, 0xc2c0505c, 0x76bcf785,
+0x00d4a009, 0x09b2c58a, 0xcf561366, 0x83c7a3b8,
+0x0a3014e8, 0xdb31806a, 0x2ce87d51, 0x58c626ea,
+0x62352d1f, 0x5022d97b, 0xb712cc54, 0x19c24ed4,
+0xec94c684, 0x0e230e49, 0xc0230064, 0x066368d1,
+0xbf0d0530, 0x157000fb, 0x3a34ac41, 0x2e27a50c,
+0xf05f1984, 0xf8915f8f, 0xfb803a0f, 0x83cf0d66,
+0xe0760df9, 0x341e3741, 0x423ae0ca, 0x92e1410c,
+0x3bfc2cab, 0xf833c509, 0xb9b16edf, 0x737506fd,
+0x6e762121, 0x8a0e5a8d, 0x8ddb0e52, 0xbb9c97e8,
+0xb1770a3c, 0x290fe065, 0x9a2a5502, 0x7e52d572,
+0xeadb7467, 0x5e590a77, 0xf7669875, 0x85a03f7e,
+0xc78b6279, 0x66bcf55c, 0x808bdc3d, 0x6e25bf16,
+0x14ea83fd, 0x8b66a148, 0xff70010c, 0x0174edd9,
+0x8122784b, 0xf739d129, 0x3235830f, 0x0a5df8a9,
+0x121529cd, 0xef1bf631, 0x4c7f80c1, 0x11097b80,
+0x3de44675, 0x063d358b, 0x83ec1eed, 0x8b5922c6,
+0x86f70456, 0xdc5f9fd6, 0xeb2bc5c2, 0xfd1587d1,
+0xdb91b683, 0x74727e8d, 0xfe7d9610, 0xabca8d5a,
+0xf70270ad, 0x8bc5281c, 0xec654628, 0xd1540338,
+0xda9dbb61, 0xea4da31f, 0xd4290806, 0xf45c24d1,
+0x860f6fd9, 0xfef9e5c7, 0x2f406f18, 0xc2562677,
+0xe80e6f8d, 0xb683128d, 0x81e4a11d, 0x3401697d,
+0x2299b798, 0x0ef357d2, 0x16da7790, 0x1a69a95b,
+0x391c2602, 0xae8fc0b1, 0x776c5ded, 0xb6567216,
+0xe52fc061, 0x4ee85720, 0x41a5a012, 0xc60416dd,
+0x2bb1244b, 0xf0550f31, 0x81019b70, 0xdfeec12a,
+0x8ac1c71c, 0x68122f43, 0x00366743, 0x67f2851f,
+0x31743624, 0xdab617b1, 0xfd7f7c03, 0xbde9fc3c,
+0x6c7c7dc0, 0x890cc4a7, 0xeea09506, 0xd6352d2d,
+0x05c72ddb, 0xe5c65c16, 0xc2f40ae8, 0x292c3218,
+0x831ee80f, 0x01f82f80, 0xfdd58648, 0x9c2a9567,
+0x9228f136, 0x68560d8a, 0x37e37faf, 0xca38dfe1,
+0xc2171473, 0x6644c06b, 0xb8149839, 0x74edf02d,
+0x72134205, 0x06fa80ec, 0x1d74081e, 0x6ece9c6e,
+0x50034623, 0xc6d70522, 0xaebd1165, 0xc37b204e,
+0x134aa22d, 0x41832380, 0x8fcceb89, 0x6053359e,
+0x1c363668, 0x5c00908d, 0xb97abeae, 0xa6bc649c,
+0x8a6a3ffe, 0x3c3c0246, 0x3cb00276, 0x588b5050,
+0xf90b8810, 0x81fc10e4, 0x4349c52e, 0x6f4833b3,
+0x53448368, 0xf3490af4, 0x29715f64, 0xa2279318,
+0x20607403, 0x0a74832e, 0x03220152, 0x75fb4360,
+0x13048006, 0x1f76b882, 0xd0f81aea, 0x0dc468b2,
+0xc618c805, 0xd045ad80, 0x487cc1dd, 0x4c6b66bf,
+0x558e067a, 0xd80135a1, 0xbdc35fe8, 0xd39a06a3,
+0x85c5892c, 0x636bb5ff, 0x01ceeb2c, 0xee397e3f,
+0xdff16b76, 0x7358071e, 0x841e8a0b, 0x0f5c75db,
+0xc286f572, 0x893bdaf4, 0x3505382d, 0xaa1d2e1a,
+0xc73f0827, 0x1b5001bb, 0x979b6a8d, 0x0bfb02c0,
+0xd6c0e858, 0x18f20ce9, 0x6e047310, 0x04a225ba,
+0x22a17fd7, 0x454b8a68, 0x7b3fd093, 0xfffff0c9,
+0x6eef51c3, 0xfbdddb60, 0x1038dcff, 0x60d0158a,
+0x2875d284, 0x06c18dae, 0x0996d179, 0x0cb0f81b,
+0x020fd8c8, 0xe2031215, 0x7ed99d20, 0x0812fbbe,
+0x483e1ed0, 0x353146d9, 0x9d4a0121, 0xc45eca61,
+0x4a017e84, 0xa015640c, 0x7ddb1efb, 0xdb6d3c10,
+0x840d2200, 0x102b1dc0, 0x668db7ef, 0x6102fe9d,
+0x4974810c, 0x54a33d80, 0x386d876d, 0x1605410e,
+0x97e0fe96, 0x46b6afba, 0x023074ec, 0xff26c8e9,
+0xc35405c6, 0x0125fbc0, 0x7b16c515, 0xecdd8282,
+0x16fffe08, 0x0d14cecd, 0x8e82c7b7, 0xa3231abc,
+0xa6ebcc68, 0xbbb50bb7, 0x809a7c49, 0x947605a2,
+0xf524c3a9, 0x007560ec, 0x9a0eba39, 0xeeec2e79,
+0x0969ae6e, 0x0500ff6f, 0x8337b02c, 0x0317c980,
+0x0003902e, 0xeed17acb, 0x8d1e79dd, 0xfb2cd1fd,
+0xe73b7408, 0xc236d1fb, 0x097a1885, 0x5ef90f08,
+0xc436c202, 0x183c1f02, 0x2e15fb39, 0xb7d4e82f,
+0x6200b95a, 0x185c50c4, 0xb7eca646, 0x72581503,
+0x2916e9ed, 0x733b4204, 0xec834990, 0x8200e1fe,
+0x20dd8917, 0xd6e90804, 0xc0589343, 0xd956a116,
+0xbf70140d, 0xfebeef70, 0xe99c2e3f, 0xe1760db0,
+0xe905a1bb, 0x01edfea7, 0x389d86eb, 0x5c3d837f,
+0x0cc52a54, 0x89b8ff20, 0xc49237f5, 0x083589ef,
+0xa3fd4b5f, 0x170d83d1, 0xe2520370, 0x04c3a1e9,
+0x65ada883, 0xb955ebb7, 0x089d24fc, 0x10f0061d,
+0x94b02c98, 0x1c18d8bc, 0xd6970986, 0xdc014c36,
+0x8d9c1c9f, 0xbae9332c, 0xb410b20a, 0xae0ca0da,
+0xfc54c807, 0x00807453, 0xe3d3c320, 0x8a5456e8,
+0xbaf7bf42, 0x071c71c7, 0x295164a0, 0x8f9f6ab6,
+0x41880f12, 0x51c363f0, 0x80c8b951, 0xf785aa51,
+0x8128ce85, 0xc70de0f9, 0x6d775430, 0x02138c13,
+0x13732c12, 0xdfd98501, 0x7401393e, 0x18c18365,
+0x166c5c24, 0x7fcb725b, 0x26134020, 0x9901aa44,
+0xed6e5812, 0xd21df442, 0x75cb3908, 0x39e2b0e6,
+0xb82dc1a8, 0xdc742ce9, 0xeac1209f, 0xbe14410a,
+0xbebe2d45, 0x4f89cd75, 0x0847092a, 0x81bdcdeb,
+0x932bc19b, 0x21718b8f, 0x867df339, 0xa0d737fe,
+0x94a3731c, 0x74d02c3b, 0xf239420a, 0x0bdcdf7c,
+0x8d6ede16, 0xd06c14a4, 0x81317502, 0x7eeab776,
+0xeb4704d0, 0x8a14cbb9, 0x236e757f, 0x428b3c07,
+0x83f66a1c, 0xc0574b51, 0x800675bf, 0x0bbd1b7a,
+0x39d51e8e, 0x70f61a10, 0xb6826ade, 0x09580319,
+0x6af04923, 0x89b58e0e, 0xddf8e325, 0x4c471ece,
+0xf753aac7, 0xc6353fd7, 0x19031a42, 0xf5177e39,
+0xdd897247, 0xfe815773, 0x77f7896f, 0xd8c7f742,
+0x781d2d7d, 0x7c127301, 0xb01e797a, 0xf020dd50,
+0x5515561c, 0x6bc5c8f1, 0x9b914a72, 0x16a2dfea,
+0x24759637, 0xfeff8147, 0x7b77e800, 0xbe765492,
+0xfd81a345, 0x00a97258, 0xfd10500c, 0x4745cd09,
+0x0684b5d1, 0x78ac4c72, 0x9208955d, 0x9bc24eb0,
+0x4c770589, 0xdb4664ff, 0x232248e2, 0x50897771,
+0x11560836, 0x371be85c, 0xdffb7728, 0x7883de7e,
+0x899174bf, 0x195088fa, 0x1a04ea89, 0xce6d5566,
+0x50de06c5, 0x58069b04, 0xee93bd30, 0x306a0f18,
+0xf72856a8, 0xbbba0fdd, 0x0a890a78, 0x2e144289,
+0x361f146a, 0x2735b517, 0x0c185c34, 0x516374b7,
+0x53202e80, 0x2d00161f, 0x89209f7e, 0xfce2eac2,
+0xf75aa68e, 0x0b74152e, 0x6d10c386, 0xe06f749b,
+0x24fb014b, 0x0fabcd7e, 0x483d6a53, 0xbab75844,
+0x5019a80d, 0x5a261a04, 0xf6c39a1d, 0xc4408602,
+0x368a1075, 0x9219c10f, 0x4288fdcd, 0xd0e9e918,
+0xd62a3c2f, 0xeb3c2215, 0x82b9bbd5, 0x70fb1217,
+0x7ee97a3f, 0x18505389, 0x751c0cc6, 0x2941d7cd,
+0x30433743, 0x128d6624, 0x1295d76e, 0x2e05caa8,
+0x17665872, 0xc21f11b6, 0xb04bc126, 0x43e5d603,
+0xb2180dc8, 0xa216a71c, 0x1f01f015, 0x9a2053e4,
+0x1fc26c1a, 0x0be5974c, 0x86a83856, 0xaf043f87,
+0xcd675a14, 0x65262ae7, 0x46e74626, 0x48d54d8b,
+0x05a91f74, 0x68fc0018, 0x1c670c21, 0x5bbc4bca,
+0x866e026a, 0x06e015d6, 0x6f6009e0, 0xe344a9ff,
+0x89dcebf0, 0x0453dae0, 0xd00b4c52, 0x279a3208,
+0x60fdd7a9, 0x9c3f51cb, 0x0629f860, 0x41822573,
+0x008ff6a5, 0x58d53b6c, 0x8f685c8f, 0x0ac0b656,
+0x425706cc, 0x136614c1, 0x89f8e4f6, 0x152c2ae0,
+0xf6072608, 0x80cb1666, 0x49415c36, 0x6afc3a0d,
+0xa9efb36b, 0x21daf7c2, 0xbf11cad0, 0x0f0ebaec,
+0x069cf486, 0x211c7514, 0x6016c072, 0x1b8f4706,
+0x828c69a3, 0x10e0f8db, 0x1913084a, 0xb74418ba,
+0x0bed0537, 0x2f80c98e, 0xe0cd3121, 0xa1840ba0,
+0x7e21087f, 0x0628b109, 0xdea5db35, 0xb01c87f0,
+0x1af03034, 0xbe3f3c04, 0x4146d12f, 0x75044d17,
+0x826b839d, 0x887bbf1a, 0x49db5c17, 0x50c06c06,
+0x3c03bd32, 0xc88fd2f7, 0x391d77b5, 0x062e74f8,
+0x59c6f52a, 0x2c40b01b, 0x832dc14e, 0xf6b5d886,
+0x65a774ec, 0x1c5ea377, 0x8134e929, 0xc43d8f8f,
+0x68e91492, 0x30bba7ff, 0xd681155b, 0xff0f3657,
+0x836826e3, 0xcc611d73, 0x91e810c3, 0x51ccf815,
+0x725a1af0, 0xed4f41e6, 0xe8a319a8, 0x4a105768,
+0x7a9626f7, 0x1614fb1f, 0x78745a24, 0x50d12f09,
+0x7b760153, 0x100a0a1f, 0xefc246c7, 0xa42a688e,
+0x41fa8113, 0x7f9743c7, 0x733f816c, 0x10468b4c,
+0x2dd23539, 0x2046ff03, 0x300872ff, 0x6a716df4,
+0x06e2fb4e, 0xe754adea, 0x0c701534, 0xa5c06356,
+0x75f300da, 0xdf5cd90a, 0x5d50b6a2, 0x7eed9e81,
+0x410e3b54, 0x4c897ddb, 0xf8eb5c31, 0x50eed8b3,
+0x24466085, 0xe6c87667, 0x6fa50220, 0x29bec8df,
+0xe81843e4, 0x906f038a, 0x0616bd6a, 0xdf591feb,
+0x728ace58, 0xe3620db6, 0xf07b17b5, 0x741c056a,
+0xd5e8c6c9, 0xce586d20, 0x76e901c1, 0x042d02c0,
+0x0904465f, 0x6ce8fe06, 0x0878061b, 0x43c914e6,
+0xc80c531c, 0x7ae1c2f3, 0x9020a0de, 0x5397c2ec,
+0x388d76ff, 0x30aedc1b, 0x826912d8, 0x03f2c679,
+0xbbb2e2a4, 0x001c8819, 0xa754fd00, 0x106c75d5,
+0x54c9408f, 0x355b58d8, 0x3e6003d4, 0x8a3f5c41,
+0xf47c1682, 0x74253c06, 0xcee254cd, 0x86bbdd76,
+0x89420288, 0x75214606, 0x150717e2, 0xcd27831c,
+0x29548bc6, 0x8ba0c414, 0x2040b1a9, 0xa377edad,
+0xddc59758, 0x4c46ccb4, 0x87b4d883, 0x0ab8046d,
+0x46f67609, 0x6e8f656e, 0xd70d849f, 0x53297b1b,
+0x1c73b6ec, 0x233cbeb5, 0xcceafbe9, 0xc2b90ef6,
+0x6c228e18, 0x33db7d40, 0x07683cb0, 0xed161162,
+0x1abea607, 0x783c20c8, 0x64fae912, 0xdbcb1208,
+0x4000bccf, 0x21047e74, 0x5a634974, 0xf53a1e89,
+0x8c471788, 0x83a3319e, 0xc8175e15, 0xe2ede017,
+0xb9aadd43, 0xe7721c6f, 0xc41d13e9, 0x6f00e8b2,
+0xc4de3440, 0x89eaeb58, 0x88041e0e, 0xadbb4407,
+0x0abeebdb, 0x06e2188b, 0x88d3390d, 0x35bf7e1b,
+0xeb4f0372, 0x82682aab, 0x3de857bf, 0x47ed1b70,
+0xc7010c22, 0x371c1c3b, 0x02eb2fe1, 0x78ff2077,
+0xc438104d, 0xc3fa5748, 0x3271ca73, 0x9b770a88,
+0x31e322db, 0xc03b268d, 0xebe0721f, 0xb9ffadc1,
+0x852c38a8, 0x893778d2, 0xb9995efb, 0x4c85ee45,
+0xc2832d40, 0xada3c630, 0xa0a1a2de, 0x994f8dea,
+0xf6fd03d9, 0xad286c6e, 0x8801c311, 0xd9c14913,
+0x14e9f177, 0xdd6f556e, 0x2d07c613, 0xc1eb47de,
+0x5620e2f0, 0x4ae562d0, 0xb53dbd9e, 0x74e15b0b,
+0x301d2f0c, 0xd3475832, 0xbe8fc002, 0x880fc94c,
+0xd3d85ae4, 0xb77d481a, 0x808a0ffb, 0xd009978c,
+0x04e98319, 0xe0b9e979, 0xfa86e03e, 0xc60cb968,
+0x40820e8f, 0x462003f7, 0xc70a84e9, 0xc33b0d54,
+0x43640ddb, 0x3b806a1e, 0x0b72cdab, 0x63fd8439,
+0x1d061d18, 0xe9761784, 0x9b64fdae, 0x053d54db,
+0xe9ebedb8, 0x6311ed40, 0x12a878ff, 0xf90c6a27,
+0x02a90ce4, 0x085a1ef5, 0x72535e15, 0x135828cc,
+0x1c0dbc2f, 0x7e481d1b, 0xab3bbbf6, 0x7650be37,
+0x5d8a3a74, 0x47451711, 0x7b7103b0, 0x842f747b,
+0xd3382beb, 0x08d88823, 0xe0a17d9f, 0x4bb2d988,
+0x0dd08820, 0x63d188cb, 0x0f776fe1, 0x0838204a,
+0x4e0375ca, 0xc396c675, 0xc06a2dc1, 0x5fd2045b,
+0x7ab72329, 0xd81e8ee1, 0x8ad389c3, 0x4241025a,
+0xba201062, 0x5423f6f9, 0x231000dd, 0xd689b0a8,
+0xdbefd049, 0x0a9de51a, 0xf02443e1, 0x0f66b65b,
+0x3f5eb0b6, 0x42003a80, 0x801e421a, 0x750bed85,
+0x14a34afa, 0xf46baddc, 0x1027634d, 0x2622744b,
+0xc8fec9b1, 0x4b0d742c, 0xf3390f74, 0xc41ef75f,
+0xeb41c6a5, 0x1c3eedf6, 0x76a836f0, 0x1d1a2ac3,
+0xb78241d8, 0x5aad89df, 0x84c3c3ca, 0x809d1038,
+0xad002e38, 0x09405575, 0x57c33677, 0xf5d86fd3,
+0xffc95133, 0xaef20833, 0xc249d1f7, 0xeec16f6e,
+0x092ac801, 0x73087f48, 0xc35f1ef5, 0xf88ae017,
+0x7e634a3d, 0x7c15bbb5, 0x801174c8, 0x404a9739,
+0xae05740d, 0x321ddee0, 0xc3c829f4, 0xdf1b85e1,
+0xb1107d76, 0xf289271f, 0x38028a26, 0xdfdd8001,
+0xd3f4c860, 0x22434107, 0x7889e175, 0x904e07b1,
+0x9da632b9, 0x19a3b60c, 0x32da8913, 0x37004110,
+0xe72cf053, 0xfaeb789c, 0x621df015, 0x3e6225cd,
+0xb1db96ed, 0x01e3855f, 0x75f238c3, 0xb05c260f,
+0x9e1f152a, 0x8846d75d, 0x7c9c1ee8, 0x22f9ce59,
+0x04c0075e, 0x8521a3c8, 0x265ef006, 0x091d8bde,
+0x7e882dcf, 0xebb6e04f, 0x1e8bdbd0, 0xb018740f,
+0xbac6c767, 0x5a593d5e, 0xb3068938, 0xd1d76337,
+0x8bfc4a2f, 0x05b1195c, 0x03697734, 0x4143774a,
+0xcb6bb113, 0x5b18d605, 0xfe030125, 0x331ceb25,
+0x3b43080e, 0x377dc973, 0x4b11c157, 0x1602165d,
+0x0bf41729, 0xc5efc2a5, 0x75494346, 0x746b5fef,
+0x854d3f78, 0xb731fcd2, 0x7c2c5621, 0xd839017b,
+0x754a4197, 0x675b18f5, 0x37bb4e11, 0x894c6bca,
+0x5ace02d1, 0x576d5b6b, 0x53dfc289, 0xb0550512,
+0x3910c7f5, 0x7dce89e9, 0x9a5bf909, 0x9a880bad,
+0x75e81cfd, 0x46b7ed4e, 0x3b07738a, 0xebe87dee,
+0x811f2fdd, 0xdbebdf18, 0x20d6109c, 0x01428a4a,
+0xe31bfc78, 0xc7443a42, 0xee751608, 0x9ebfdb31,
+0xa722c608, 0x0977eab8, 0x30b704fe, 0x34fb403d,
+0x6c7f3d80, 0xb1d88fd2, 0x3d623d74, 0xc095ff80,
+0x03815fc5, 0xa3ff00f8, 0x55528d54, 0xa8cf0449,
+0x14754cdb, 0x8cc152de, 0x3100027a, 0x80cc1bad,
+0x8554d285, 0x162b9048, 0x06696135, 0xc05e0edc,
+0x4569aedc, 0x430458e8, 0x8026bc1b, 0xf5dc7b0d,
+0xe28440d4, 0x53603823, 0x42e24c75, 0x24ce551b,
+0x72760102, 0xe65bae11, 0x0f21fd3d, 0xbf4282a4,
+0x54e81797, 0xf3eb0eb7, 0xc45c8d27, 0xe8e6343b,
+0xdaadb6c0, 0x8d55b0e8, 0x50812401, 0x3ec7b5a4,
+0xffa4b617, 0x66840e75, 0x758603c7, 0x6c4a97b0,
+0x02438a2a, 0xd8538aeb, 0x09a860bd, 0x1538298f,
+0x4c740f7e, 0x2850487b, 0x82584e8e, 0x156208a0,
+0x3064bf3c, 0x9343b641, 0x841cc004, 0xc2363d8b,
+0x883f05c6, 0x827da23f, 0x00752e66, 0x95ebfdfe,
+0x750e0538, 0x57edebac, 0x530cf603, 0x0c75e91b,
+0x85c6c38f, 0xf52f61d9, 0xfeee2825, 0x896e4ad1,
+0xc84b252c, 0xc80600fe, 0xc8a225b6, 0x2596cf61,
+0xe874638a, 0x2db0e931, 0x7d707600, 0xb2574a3f,
+0x3d25bec1, 0xffffd984, 0x58f75b2c, 0x1cec8901,
+0x5adec953, 0xf3562edf, 0x255b28fd, 0x006a071c,
+0x8a49e283, 0x47b70f18, 0xf828c780, 0x5706046d,
+0x020c8d08, 0x63d92913, 0x66f0b05b, 0x5f067983,
+0x1c040643, 0xf6f74951, 0x348d02ff, 0x80de2902,
+0x8901037f, 0x74090ef5, 0x25063771, 0x63a96d82,
+0xf2da1a14, 0x0aa5d4f5, 0x5174dafa, 0x5d7435df,
+0x29c04740, 0x6c6e07e1, 0x6f151d40, 0x35b88fba,
+0x047a519b, 0x8001bbea, 0x5107c7d8, 0xb577e910,
+0x6f099070, 0x8515275a, 0xd105351a, 0xd897a110,
+0xf2196d00, 0x7c0e6ede, 0xfd0aeb0e, 0x1da9041a,
+0xaa23bac3, 0x06e88bdb, 0x003f3d98, 0x421e4103,
+0x1237db90, 0xb30b01fd, 0x37e00408, 0x4f447a06,
+0x35ff4c37, 0x418e6c9c, 0xa996c229, 0x23c00163,
+0xdd8538e7, 0xeb07065c, 0xfcbc55d1, 0x403c407e,
+0x0ca8a15f, 0x37230243, 0xac95006b, 0x0acb3e0b,
+0xdc602dda, 0x2a0843ab, 0xe0bb3689, 0x066a40ee,
+0x6dcf8379, 0xe87ecb96, 0xfffffaea, 0xa1d91c10,
+0xbeeb1c98, 0x2c3f6407, 0x30392e33, 0x8826b201,
+0x90f7e961, 0x51b0e49b, 0x00bb0f96, 0x46578c0d,
+0x49d73aa1, 0x847b0069, 0xf9fbc23d, 0xe152b9a1,
+0x31e6c3c3, 0x01c60de1, 0xc960a394, 0xbd0ce24d,
+0x366bb543, 0x0392c413, 0x84d00908, 0x0be1ae0b,
+0x2e1ed869, 0xea2c68a1, 0x03ed93d7, 0xa1056a09,
+0x54e8c103, 0x6056df68, 0x880aa033, 0xfd0a5437,
+0x5cf38874, 0x08e2c1e7, 0xdb7c418a, 0x4e0b2aeb,
+0x0d520a03, 0x38add40c, 0x7ce99d54, 0x5d22db45,
+0x0db41724, 0x10b40df2, 0x4d01502c, 0xa1beae9d,
+0xf6a15583, 0x801243ad, 0xc6119896, 0x16bfeba4,
+0x8d585faa, 0x10821a7b, 0x08f06216, 0x5690cb7c,
+0xc085534a, 0xf021c673, 0x0974e6a1, 0x28620d79,
+0x5e034cb8, 0xba0df441, 0xed830b87, 0x030e0508,
+0xbddb140f, 0x1e6b38db, 0x74483b7f, 0x96024337,
+0xd5db3bc2, 0x628fc012, 0x180faed5, 0xe999f4f5,
+0x1aaaeb4e, 0xeb5e2e95, 0x2fb9d6e7, 0x80032517,
+0x362b1b14, 0x36d9eeb8, 0x2108375e, 0x64fac6eb,
+0x758add14, 0x25eef00b, 0xce811e0c, 0xf045d68b,
+0xfa81b947, 0x7c1074ea, 0x4b415e16, 0xa482c2a0,
+0x30ed7d8b, 0x1db489b9, 0x03b4b803, 0xfb58ec71,
+0x05f5ff52, 0x62008390, 0xf82ce0c1, 0x0f0a0f5d,
+0xc2b29388, 0x20b49034, 0xb2b4934c, 0x72711036,
+0x2ace6415, 0x2aa25b1e, 0x7f0a40f3, 0x1a9e3d2c,
+0x1f4e7875, 0x56c85610, 0x369044a1, 0x158df89d,
+0x3b41ba23, 0xac01e975, 0x3ddf641e, 0xfddddc60,
+0x0cd47529, 0x05d2eb03, 0x93cceb02, 0xb7190d60,
+0x93f92ef8, 0x8025ed04, 0x6f577113, 0x60c258dd,
+0x29040d0d, 0xcd55aa10, 0xcc2e8990, 0x00e128e6,
+0x053b5a36, 0xde36d812, 0x02bf2323, 0x0a2c18a3,
+0x226c0700, 0xd4838bae, 0x11b83da8, 0xfe0d040a,
+0x55353e66, 0x75871eb8, 0xc40283da, 0x98488011,
+0x87d87425, 0x158df858, 0x3b031b5a, 0x8e268797,
+0x6e1048b5, 0x82c73e34, 0x1f82a646, 0x78546640,
+0xb622ea59, 0x9482e831, 0x98091415, 0x9110de28,
+0x810cb9b1, 0x289a9cc2, 0xb5509f49, 0x390baaf6,
+0x28749e0c, 0xf8229f9d, 0x002376a5, 0x2818e889,
+0x3ecff7f9, 0x0f0a1390, 0x96c35b10, 0x3436ba81,
+0x748f61e2, 0xaf644954, 0xd87588d7, 0xcdc4f684,
+0x18f1c821, 0x2e08f3a1, 0x0757e2f0, 0xfe532036,
+0x61d0018f, 0x6b394483, 0x0eb103f3, 0xaa225de0,
+0x6cc9828d, 0x6281d880, 0x31eadaea, 0x11e00821,
+0x91151438, 0x92e463b3, 0x70839753, 0x750fb3ec,
+0x013b2f74, 0x72393bd8, 0x20991e05, 0x3323f54a,
+0xc6c5b8c4, 0x7c3f0319, 0xf153f586, 0xa863bd44,
+0xdd199801, 0xcd466114, 0xe3c7f201, 0x69a92c11,
+0x8ff6e7b2, 0x0523c706, 0x5eb9148f, 0x3ab65302,
+0x7711092c, 0x86868b4b, 0x36f69691, 0x69896c55,
+0xc4828626, 0x2821f590, 0x8284c736, 0x183e668a,
+0x02c61d89, 0xfe5a6cd6, 0x51786806, 0x9ceb5edc,
+0x28989750, 0xbd43c180, 0x92adf664, 0xbe41086d,
+0xd698090b, 0x605848e6, 0x3b9eeb9d, 0x69718c66,
+0xa5c711e6, 0x1b110500, 0xb16deb1b, 0x89338b47,
+0x024e401b, 0xdd9c1687, 0xb3fbf5e4, 0x0d1b149c,
+0x40a30540, 0x91183ac4, 0x39e12ec3, 0x914077aa,
+0x77bf460a, 0xa31aa440, 0x741c8cd2, 0x630b520e,
+0x57061e5b, 0x3208ca47, 0x2ab404ab, 0xd8332bfd,
+0xd6602140, 0x418b15d2, 0x09404a22, 0xdb11dc3c,
+0xe2afdea5, 0x465f478b, 0xb5011202, 0xc05ceac7,
+0x8d580419, 0x7518f858, 0x2d2b5eeb, 0x0c192b47,
+0x050e4613, 0x2003060a, 0xdf305958, 0x0e75b8e8,
+0x10560312, 0x8d8f5392, 0xc3520851, 0x7321e2ae,
+0x0e5e6ff3, 0x1c24e4b2, 0x80ebfe23, 0xadf4e003,
+0x0ef64ec5, 0xd089c9ba, 0xa00a0fcb, 0x49056f1d,
+0x08684868, 0x9ecfdf37, 0x89fd1c44, 0xd2ebdc74,
+0xe02c62eb, 0x555dd3a1, 0xc8f1743f, 0x53170916,
+0x10755f8c, 0x80a031fb, 0x5e8b2f5a, 0xefdf860a,
+0x41035017, 0xb8d91574, 0x4eedfab5, 0x0c7e130e,
+0x8a1c698d, 0x05fd81e3, 0xa41fb064, 0xd17ec789,
+0x088f8bc5, 0xcd51d0b6, 0x8b3bc061, 0x9db055fa,
+0x550c86f2, 0x43a2b739, 0xe80c4940, 0x938c1910,
+0x75d0d3aa, 0xc1118076, 0x79e90770, 0x16e0fd2d,
+0x11351a19, 0xd3b802ab, 0x0283a249, 0x05062a58,
+0x3882c104, 0xadf4a88c, 0x6c4563bf, 0xb2548bd3,
+0x9e8dd9f3, 0x1f524c30, 0x07f75a9d, 0xf406c4fd,
+0x86c6cd6d, 0x01230216, 0xd685159a, 0x220306e7,
+0x0583c876, 0x10071a03, 0x44864aa1, 0xa114f231,
+0x71441854, 0xd6258830, 0xac862480, 0x52307c44,
+0x2c13f1f7, 0x8a45b233, 0xfc199452, 0xbb3e799e,
+0x15049a05, 0x017cbf2c, 0x168a5888, 0x24834084,
+0x1e8df46c, 0xecd8c7a4, 0xca317504, 0x1860f07f,
+0xd8892adc, 0xe951a4b4, 0x57b77d76, 0x260647cc,
+0x0abc1e04, 0xc70f9082, 0x8c42d1e1, 0xded042d8,
+0x2dd7807b, 0x6fec4531, 0x997c04b9, 0xd12f25ed,
+0x186f5351, 0x094ac2e3, 0x8e5164e4, 0x776da0f2,
+0x2d46bc04, 0x21a0a0e8, 0x578da92d, 0x3f9809e9,
+0x50992364, 0x54419815, 0x1f1d4270, 0xd07500bf,
+0xb0aa5ce8, 0xe9c46003, 0x11be8033, 0x03a3c3aa,
+0xc6b68dd1, 0x035d4035, 0x40687435, 0xa8f4e037,
+0xfbb13908, 0xb43775dd, 0x20e8c73f, 0x50e50fc9,
+0xee9e48e8, 0x04d9afbe, 0x1396b60f, 0x28100905,
+0x77cac7e8, 0xe6b914fa, 0x54d6297d, 0xc70b5cfa,
+0xdbd0296d, 0x4931a602, 0xcf1973cf, 0xe8b7313a,
+0x6a2cc085, 0x8a0c0c55, 0xc2382247, 0x8dc1a76f,
+0x5b601354, 0x63b71046, 0xc116fc11, 0x164619e9,
+0x76124e03, 0x47145b18, 0xcbc15f14, 0x20985ad8,
+0xc718db56, 0xbb8899be, 0x90840ffc, 0x8f0f0d93,
+0xf57d0131, 0x0808fb6c, 0x7f081d11, 0x896e4a7b,
+0x04da3eaf, 0x287c357f, 0x751d0b63, 0x256e0c15,
+0x5d0b359e, 0x076ddb0c, 0xeb2744c1, 0xb2521aec,
+0x7507e3eb, 0xdc67a017, 0x277474db, 0xad857c04,
+0x068c50b5, 0x68070470, 0x6e6b6796, 0xbff2b81b,
+0x22b78207, 0x796796fb, 0xeca74caf, 0xcd2c9f3b,
+0x0d6dcfdb, 0x0d008988, 0x0a04407f, 0x9b7c3074,
+0x209797b6, 0x0c10740b, 0xce298675, 0x1972e91b,
+0xdc5436f9, 0x670ab3e8, 0x67a01f52, 0x51575ce4,
+0xb6740f3d, 0x34b92b40, 0x0d045904, 0xd6330414,
+0x0f11fb1c, 0x74224285, 0x3b0a2ef4, 0xc8cf233c,
+0x15181023, 0xf639b70d, 0x024eea8d, 0xf7f2190a,
+0xbcfd59fe, 0xa730db9d, 0x8f080142, 0x7420008d,
+0x66cd2e7d, 0x707f04d7, 0x7c147414, 0xd8fed115,
+0x39fcd637, 0x0abdf6a7, 0x0ab25abc, 0xe6b1be79,
+0x4fa7f503, 0x2322a922, 0xedb1cd63, 0x22983825,
+0x0a84f938, 0x462ed8a9, 0x6479f89a, 0x0a6ee966,
+0xcf237d8d, 0x6468637f, 0xdf714e58, 0xec558bb6,
+0x04447f08, 0xe6325c32, 0x333cf2d8, 0x55303b70,
+0xcd66fbfb, 0x9c0a27b1, 0x72511cfa, 0x7bae0a11,
+0x153e1bec, 0x74755106, 0x3e7f043f, 0x977e6cff,
+0x1dfdfc73, 0xfde8fc72, 0x3d167476, 0x36467b4d,
+0xe11ad653, 0x910acdcb, 0xb419e467, 0x1cb799c2,
+0x0abec6fb, 0xd50aac7a, 0xec0aa1d7, 0x030105f2,
+0x11c396d4, 0x052f5137, 0xb62c35f9, 0x97cce803,
+0x6ff725a0, 0xd6ff0e16, 0xf1e8fcfa, 0x8dc85e09,
+0x9a17d56a, 0x80c1832e, 0xd82ba1b1, 0xb857ad54,
+0xc2ea43e5, 0x8149b679, 0x2fc013f4, 0x914da5e2,
+0x37ebeb83, 0xa8e6eb1a, 0x858b3e23, 0xba08e3c1,
+0x7003bb0b, 0x30350d1b, 0x08b86662, 0xbf4030b1,
+0x6962ac9b, 0x02720987, 0x0a88e430, 0xdec899e4,
+0xc35fc4a6, 0x24093d90, 0x99052b0d, 0xf93e8b49,
+0x3d85b362, 0x0a3d4339, 0xf21c8361, 0x890b96e6,
+0xd65ef97b, 0x334c8a0e, 0x3d0bb87f, 0x26c0b9a8,
+0x3b96cd27, 0x9e49908b, 0x916c0c0b, 0x839e4992,
+0xad55300d, 0x5b1444be, 0x49435024, 0xdef513d3,
+0x85c6ac44, 0x1134a3f6, 0x5f90e411, 0x95f83701,
+0x20054a1d, 0x8b128017, 0x837b92c1, 0xfa810853,
+0x7c15573a, 0x7eb76886, 0xe8672c80, 0x54003f1f,
+0xe949e04f, 0x534c90c3, 0xd56e05b8, 0xbb00fb6e,
+0xd329f108, 0x5b07ff50, 0x2cc7398a, 0x811a7725,
+0x32335f3b, 0x9823745f, 0x2362ab41, 0xc6a26149,
+0xe69a205e, 0x75253d83, 0xf51cab60, 0x09b3a479,
+0x6c013ff6, 0x4ad47492, 0x02087dc2, 0x07421a0c,
+0xffdb61d5, 0xc984f87c, 0x7b80c075, 0x33272a08,
+0xc2a36fb1, 0x313d552d, 0x5511a3c1, 0xebf7ea19,
+0xa34068a0, 0xccc0e7c3, 0xc3c258d7, 0x12925069,
+0x044f0fb0, 0xc00a4faf, 0x87608311, 0xc43db140,
+0xa9102786, 0x35ab554d, 0x217aa72c, 0xd2bae99d,
+0x218936e8, 0x032c0e89, 0x9354b5e0, 0xfc2390e8,
+0xe4702d4b, 0x96fdf761, 0xb061e601, 0x1243e6b0,
+0x5600d81c, 0xd8e142e6, 0xb6d83514, 0xc01dc308,
+0xa06d5372, 0xe95fa338, 0x5fa17dcf, 0xba1d3fe2,
+0x3b9aca00, 0xdcc0694c, 0x48521234, 0xf7b00dd5,
+0x8ae967f1, 0xe4b85f02, 0x8cbad6ef, 0xa91d0000,
+0x706c0004, 0xf00e8247, 0x40bff1ae, 0xb901d0a3,
+0x28c4bd05, 0x7fb60a41, 0x68e94fbb, 0x05c71558,
+0x1fb0071b, 0x1144090e, 0x2267a236, 0x16844847,
+0x0874c151, 0xd76c3d4a, 0x07b9470a, 0x3c099e56,
+0x0448cd05, 0xe9d90554, 0x22c11508, 0xc6475727,
+0xe9a09b76, 0xa3217468, 0xbf686664, 0x40c9926e,
+0x0609706c, 0x20e8f540, 0x68207d40, 0xd92cb690,
+0x89f6324d, 0x843d801d, 0x028c0988, 0xec5d35e1,
+0xb73d9a8c, 0x1cc81368, 0xba6ebb05, 0xe8179c04,
+0x82b02aa3, 0x344ec1df, 0xb9282eb9, 0x3bafb1a5,
+0x304cb9ec, 0x74420209, 0x35f23280, 0x31c5cc14,
+0x33af404c, 0xb9444ecc, 0x030918a8, 0xbe464931,
+0x076042bf, 0x602ecb68, 0x466bef54, 0x070958ba,
+0x132e015c, 0x485632a3, 0x3118a042, 0xd09c8368,
+0x80096c4d, 0x25e1b913, 0xe7b3d003, 0x6e680192,
+0x0f64d847, 0x31f4b645, 0x613d59f8, 0xb9222289,
+0x5aafe84f, 0x31d0f0e8, 0xd368c068, 0xf0f8bd43,
+0xe3f62bd0, 0x0975cfa3, 0x41175e99, 0x21b8f7d8,
+0x1e201be3, 0x91363e52, 0xc0e9c311, 0xd1c7096f,
+0x99547398, 0xe0977705, 0xfb1e28cf, 0xf339db53,
+0x5a060372, 0x6eff187c, 0x5aea0d43, 0xe8e22de0,
+0xf3f1be2b, 0xe69f7258, 0xabeee2bf, 0x5a144949,
+0x746285e8, 0xbb510807, 0xeb1e1742, 0x52ed33f0,
+0x51da1bc5, 0x9f037851, 0x548a37b0, 0x00755002,
+0x7445e400, 0x9026a568, 0x3500ff91, 0xec0e2338,
+0x050239ff, 0x001161dc, 0xefbeadde, 0xff025d03,
+0x9195a85f, 0x50203c21, 0x6c434558, 0x746e6569,
+0xff75bf3a, 0x637241fd, 0x00303a68, 0x444e553a,
+0x02320a49, 0x010d3731, 0xec2fbe03, 0x3c2b0cff,
+0x83828180, 0x87868584, 0x0436035f, 0x033d3208,
+0x6b05c580, 0x09b2110e, 0xdf6c812c, 0x5f627303,
+0x2b5fab64, 0xffdb4706, 0x63ca2c27, 0x544146a4,
+0x203a4c41, 0x4b756f4e, 0x7220ffff, 0x2d6c6165,
+0x65646f6d, 0x61747320, 0x215e6b63, 0xdcd90041,
+0x4e03dc6f, 0x612d2b56, 0x746f6e6e, 0xbf762023,
+0x145ccedd, 0x50252124, 0x636f1772, 0xfe736c6f,
+0x446ffb5b, 0x50434844, 0x54465420, 0x696e1604,
+0x69640063, 0x1bdb6b73, 0x6c81b7d4, 0x3170706f,
+0x0b202d20, 0xb6b6e675, 0xda6c6cc6, 0x30ca6666,
+0x6b7f0302, 0x7872fdbd, 0x40726520, 0xca252072,
+0x6c747233, 0xb7323138, 0x39b3edfa, 0x62393307,
+0x35656640, 0x6d863833, 0xb0dbb563, 0x3131166f,
+0x1809312d, 0x5d7e6c65, 0x23e17b6c, 0x74646403,
+0x2e0b6e40, 0x6ec6b436, 0x743039fb, 0x65686478,
+0xa27630e1, 0x8ff6b16b, 0x1d640235, 0x33776e66,
+0x1e333036, 0xb7b07d09, 0x303038e6, 0x656e9c63,
+0x52006f2d, 0xb6f14c54, 0x55078fb5, 0xb375736e,
+0x20397495, 0xbdd65041, 0x22032f6d, 0x22016325,
+0x62613c9f, 0xfb083e14, 0x57ddedb7, 0x69206771,
+0x0c78866e, 0x70746674, 0x886f4c00, 0x6efb7b2d,
+0x40251369, 0xe873253a, 0x122f2f3a, 0xd60217b6,
+0x3f0c0a0f, 0x3f697372, 0x8285c23a, 0x693c0be6,
+0xc2406f42, 0xbab5d6ff, 0x69980a87, 0x7a73656c,
+0x6d203e20, 0xb0d84567, 0x280f07b5, 0x21002968,
+0xa1ed6dbe, 0x3d617f2e, 0x699569d1, 0x5b67616d,
+0x2fef6dc2, 0x49424e28, 0x7b44281f, 0x0ad0002e,
+0x8c2061ff, 0x6d617267, 0x9bcb6820, 0xa142f75b,
+0x62d69855, 0x73b96769, 0xd08b6558, 0xb970b9bd,
+0x5f746983, 0x08f2701d, 0xfdb6bad7, 0x756f6620,
+0x0f1a2ec8, 0x089d3353, 0x11336f77, 0x654d0a10,
+0x2c0040a4, 0xeeb83bd8, 0x28200ab1, 0x12290626,
+0x60e11de6, 0x8c520617, 0x470b7961, 0x50ad3461,
+0x0d776d78, 0x752e450c, 0x76ebd9bd, 0xfc6c2083,
+0x0965db20, 0xb735b62d, 0x25bf6d1b, 0x97d873c9,
+0x6b76de38, 0x726135f3, 0x5735748e, 0x62176237,
+0x6e771647, 0x706d603d, 0x6b5b52ba, 0x62615b16,
+0x6c73380b, 0x90146b6d, 0x06740e74, 0x2f4b6b2d,
+0x7a4e2e18, 0x52f6a265, 0x38ae4346, 0x8cec1663,
+0x19005332, 0xf4926649, 0x284905b6, 0x000a293b,
+0xbdb18c1c, 0x63d3e5d1, 0x64f66965, 0xe87662d5,
+0x7d8c306e, 0x643a756e, 0x61a3ae64, 0xb4b1b473,
+0x2b6a4249, 0x6b76b473, 0x4455b6a5, 0x5e36510c,
+0xdc586d75, 0x06691876, 0x61cfe062, 0xb6d93c35,
+0x5b128c19, 0x70175d07, 0x6dda6963, 0xeceb8634,
+0x002e5d3a, 0x5fb7f0a0, 0x34333284, 0x39b23635,
+0x44434241, 0xe870c545, 0x4f3b66be, 0x5f2f0083,
+0xbdb0ceac, 0xe520f7f0, 0xd633534f, 0xb2f40064,
+0x9a0df6de, 0x2e342e35, 0x18435b33, 0x4d8b7c1f,
+0x24204216, 0x4c5047ef, 0x68eb0e29, 0xa474e92c,
+0x2e1c6594, 0xd1bba998, 0x724416b3, 0x3fb872f7,
+0x1da3dc3a, 0x155cea20, 0xdd3e205c, 0x175a3822,
+0x11784500, 0x53873a73, 0x9f0ec158, 0x6d276f69,
+0xeb6da178, 0x69ace423, 0x2c737172, 0x370de120,
+0x0121129c, 0x5370624d, 0x75642d73, 0x57188fcf,
+0x3f0a78b6, 0x35133543, 0xe10ab58c, 0xb920ef73,
+0x42c6c66f, 0x1249b9e3, 0x40613f6b, 0xc2d817d6,
+0x7f0a8975, 0x9b4d4f52, 0xe1afb5b6, 0x74c36765,
+0x09337884, 0xdbb63c67, 0x350bb368, 0x780a634d,
+0x7468bf0a, 0x770314a5, 0x6db78964, 0x708dda41,
+0x6e74344c, 0x8849866e, 0x36c935d0, 0x7bff1e0a,
+0xf71cec63, 0xa13d2157, 0x1819ac75, 0x67096576,
+0x051b9c0a, 0x6c1ed857, 0xe59c0321, 0xa5488165,
+0x09190549, 0xbae6d76b, 0x6f017c5a, 0x2b677b83,
+0x30361362, 0x3f203e45, 0x06a5d26c, 0x70827292,
+0x0c18cf73, 0xe4b604b2, 0xb2047e3f, 0x11441e64,
+0xd0bb6162, 0x0e45d486, 0x6e679407, 0x82946c52,
+0x2900cb14, 0xb2b65277, 0x666fac37, 0x3f823220,
+0xc618230c, 0xf8d37632, 0x04bdeb66, 0x7bb59dd6,
+0xb83fbf64, 0xde60ad1b, 0x64698fa6, 0xad83e133,
+0x4373666d, 0x52b56f3d, 0xa78586e2, 0x5f7385d6,
+0xd654788e, 0xc60a19d0, 0x6d78d08b, 0x0085ed78,
+0x6f74ecb6, 0x40ff610c, 0xfb0a15ec, 0x088a3ec2,
+0x119c0e07, 0xbf620128, 0xb6c42214, 0x295f63a6,
+0x92c08bb2, 0xea50a92b, 0xb11f8120, 0x405b0229,
+0x78f9ea6e, 0xdee72d79, 0x71e61222, 0x79a16575,
+0xc8112c4d, 0x8d004462, 0xd845b045, 0x67af871a,
+0x2861bb48, 0xad88e898, 0x9f6e7056, 0x9a3db4d8,
+0xf2a07245, 0x79200267, 0x561b0ee1, 0x4fcaa302,
+0x7dce1b0b, 0x48777334, 0xcdc48a76, 0x176a5874,
+0x66374a68, 0x41821966, 0x3dcb1600, 0x008a9fc3,
+0x830f8161, 0x4f4f42a9, 0x20402d36, 0x439a0f02,
+0x6051b5ae, 0x00b3cd91, 0x6ee3bbf6, 0x6c75e02b,
+0x623436b1, 0x524142cf, 0xee6e0335, 0x7838307d,
+0x133c043a, 0x6113736f, 0xb45e2d81, 0x648d6522,
+0x01ee6491, 0x23623a69, 0x64003f58, 0x0b0247c7,
+0x4d70433f, 0x06651855, 0xb15d9f2a, 0x21b810c0,
+0xad523a52, 0x39e0c479, 0x0fe781a0, 0xc360185c,
+0x8a106f0e, 0x19e04172, 0x709c8298, 0x60c37482,
+0x67316aa5, 0xeb58b468, 0xb346d4b0, 0x8ce24276,
+0x02c0dd16, 0x6b75b93f, 0x02d68441, 0x826b36c0,
+0x79d5e9a9, 0x6d82bd61, 0x342ec018, 0x7719b743,
+0x9b266340, 0xa6aa2e6f, 0x7529db06, 0x9c831b57,
+0x9704ccfd, 0x7e81608c, 0xe0003700, 0x47672080,
+0x9f7f07ea, 0xc89307cf, 0x9bd83656, 0x001f9317,
+0x26ceaeba, 0xde670610, 0xf770036b, 0xec6fb1f3,
+0x9b812910, 0x13813907, 0xa3813878, 0xbbbe690f,
+0x13ac8651, 0x111307ac, 0x12b31211, 0xa6f9b2d8,
+0x601500bd, 0x4033c513, 0xdf3627cf, 0x1340f77c,
+0x13d107db, 0x59e5ab06, 0xeea11712, 0x7b7014ea,
+0xf90fdb1f, 0x03ab0707, 0x0d5fbf78, 0x82ba8078,
+0xd0614108, 0xb6803766, 0x6a933c8c, 0xecaf9339,
+0x0517fd95, 0x7777b204, 0x51826313, 0x53dfeff6,
+0x0b960763, 0x003705af, 0xfa0302b1, 0xd80ab0ad,
+0xe8ed0b01, 0x00857b2d, 0x000338cc, 0x819176ca,
+0xb042135b, 0x2a40002b, 0x4507d0fb, 0x0000014f,
+0x00000000, 0xffffff20, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff,
+0xffffffff, 0x72ffffff, 0x31386c74, 0x7a2e3933,
+0x206d6f72, 0x2e342e35, 0x47282033, 0x20294c50,
+0x65687465, 0x6f6f6272, 0x726f2e74, 0xffff0067,
+0100000,
+};
diff -r 5b19839d0365 -r cd51fa91956b tools/firmware/hvmloader/Makefile
--- a/tools/firmware/hvmloader/Makefile Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/firmware/hvmloader/Makefile Sun Aug 12 14:50:02 2007 -0600
@@ -51,12 +51,12 @@ acpi/acpi.a:
 acpi/acpi.a:
        $(MAKE) -C acpi
 
-roms.h:        ../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin 
../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../vmxassist/vmxassist.bin 
../etherboot/eb-rtl8139.zrom
+roms.h:        ../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin 
../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../vmxassist/vmxassist.bin 
../etherboot/eb-rtl8139.zrom.h
        sh ./mkhex rombios ../rombios/BIOS-bochs-latest > roms.h
        sh ./mkhex vgabios_stdvga ../vgabios/VGABIOS-lgpl-latest.bin >> roms.h
        sh ./mkhex vgabios_cirrusvga ../vgabios/VGABIOS-lgpl-latest.cirrus.bin 
>> roms.h
        sh ./mkhex vmxassist ../vmxassist/vmxassist.bin >> roms.h
-       sh ./mkhex etherboot ../etherboot/eb-rtl8139.zrom >> roms.h
+       cat ../etherboot/eb-rtl8139.zrom.h >> roms.h
 
 .PHONY: clean
 clean:
diff -r 5b19839d0365 -r cd51fa91956b tools/libxc/xc_dom_x86.c
--- a/tools/libxc/xc_dom_x86.c  Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/libxc/xc_dom_x86.c  Sun Aug 12 14:50:02 2007 -0600
@@ -417,6 +417,7 @@ static int start_info_x86_32(struct xc_d
 
     xc_dom_printf("%s: called\n", __FUNCTION__);
 
+    memset(start_info, 0, sizeof(*start_info));
     sprintf(start_info->magic, dom->guest_type);
     start_info->nr_pages = dom->total_pages;
     start_info->shared_info = shinfo << PAGE_SHIFT_X86;
@@ -455,6 +456,7 @@ static int start_info_x86_64(struct xc_d
 
     xc_dom_printf("%s: called\n", __FUNCTION__);
 
+    memset(start_info, 0, sizeof(*start_info));
     sprintf(start_info->magic, dom->guest_type);
     start_info->nr_pages = dom->total_pages;
     start_info->shared_info = shinfo << PAGE_SHIFT_X86;
diff -r 5b19839d0365 -r cd51fa91956b tools/pygrub/src/LiloConf.py
--- a/tools/pygrub/src/LiloConf.py      Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/pygrub/src/LiloConf.py      Sun Aug 12 14:50:02 2007 -0600
@@ -18,12 +18,13 @@ class LiloImage(object):
                 "  initrd: %s\n" %(self.title, self.root, self.kernel,
                                    self.args, self.initrd))
     def reset(self, lines, path):
-        self._root = self._initrd = self._kernel = self._args = None
+        self._initrd = self._kernel = self._readonly = None
+        self._args = ""
         self.title = ""
         self.lines = []
         self.path = path
+        self.root = ""
         map(self.set_from_line, lines)
-        self.root = "" # dummy
 
     def set_from_line(self, line, replace = None):
         (com, arg) = GrubConf.grub_exact_split(line, 2)
@@ -55,6 +56,23 @@ class LiloImage(object):
         return self._initrd
     initrd = property(get_initrd, set_initrd)
 
+    def set_args(self, val):
+        self._args = val
+    def get_args(self):
+        args = self._args
+        if self.root:
+            args += " root=" + self.root
+        if self.readonly:
+            args += " ro"
+        return args
+    args = property(get_args, set_args)
+
+    def set_readonly(self, val):
+        self._readonly = 1
+    def get_readonly(self):
+        return self._readonly
+    readonly = property(get_readonly, set_readonly)
+
     # set up command handlers
     commands = { "label": "self.title",
                  "root": "self.root",
@@ -62,7 +80,7 @@ class LiloImage(object):
                  "image": "self.kernel",
                  "initrd": "self.initrd",
                  "append": "self.args",
-                 "read-only": None,
+                 "read-only": "self.readonly",
                  "chainloader": None,
                  "module": None}
 
diff -r 5b19839d0365 -r cd51fa91956b tools/python/xen/util/acmpolicy.py
--- a/tools/python/xen/util/acmpolicy.py        Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/python/xen/util/acmpolicy.py        Sun Aug 12 14:50:02 2007 -0600
@@ -46,6 +46,9 @@ ACM_POLICY_UNDEFINED = 15
 
 
 ACM_SCHEMA_FILE = "/etc/xen/acm-security/policies/security_policy.xsd"
+
+ACM_LABEL_UNLABELED = "__UNLABELED__"
+ACM_LABEL_UNLABELED_DISPLAY = "unlabeled"
 
 class ACMPolicy(XSPolicy):
     """
@@ -139,6 +142,21 @@ class ACMPolicy(XSPolicy):
         return xsconstants.XSERR_SUCCESS
 
 
+    def is_default_policy(self):
+        """
+           Determine whether this is the default policy
+        """
+        default = ['SystemManagement']
+        if self.policy_get_virtualmachinelabel_names() == default and \
+           self.policy_get_bootstrap_vmlabel() == default[0] and \
+           self.policy_get_stetypes_types() == default and \
+           self.policy_get_stes_of_vmlabel(default[0]) == default and \
+           self.policy_get_resourcelabel_names() == [] and \
+           self.policy_get_chwall_types() == default and \
+           self.get_name() == "DEFAULT":
+            return True
+        return False
+
     def update(self, xml_new):
         """
             Update the policy with the new XML. The hypervisor decides
@@ -153,27 +171,18 @@ class ACMPolicy(XSPolicy):
             return -xsconstants.XSERR_XML_PROCESSING, errors
 
         vmlabel_map = acmpol_new.policy_get_vmlabel_translation_map()
+
         # An update requires version information in the current
         # and new policy. The version number of the current policy
         # must be the same as what is in the FromPolicy/Version node
         # in the new one and the current policy's name must be the
         # same as in FromPolicy/PolicyName
-
-        now_vers    = acmpol_old.policy_dom_get_hdr_item("Version")
-        now_name    = acmpol_old.policy_dom_get_hdr_item("PolicyName")
-        req_oldvers = acmpol_new.policy_dom_get_frompol_item("Version")
-        req_oldname = acmpol_new.policy_dom_get_frompol_item("PolicyName")
-
-        if now_vers == "" or \
-           now_vers != req_oldvers or \
-           now_name != req_oldname:
-            log.info("Policy rejected: %s != %s or %s != %s" % \
-                     (now_vers,req_oldvers,now_name,req_oldname))
-            return -xsconstants.XSERR_VERSION_PREVENTS_UPDATE, errors
-
-        if not self.isVersionUpdate(acmpol_new):
-            log.info("Policy rejected since new version is not an update.")
-            return -xsconstants.XSERR_VERSION_PREVENTS_UPDATE, errors
+        # The default policy when it is set skips this step.
+        if not acmpol_new.is_default_policy() and \
+           not acmpol_old.is_default_policy():
+            irc = self.__do_update_version_check(acmpol_new)
+            if irc != xsconstants.XSERR_SUCCESS:
+                return irc, errors
 
         if self.isloaded():
             newvmnames = \
@@ -255,6 +264,29 @@ class ACMPolicy(XSPolicy):
             self.compile()
         return rc, errors
 
+
+    def __do_update_version_check(self, acmpol_new):
+        acmpol_old = self
+
+        now_vers    = acmpol_old.policy_dom_get_hdr_item("Version")
+        now_name    = acmpol_old.policy_dom_get_hdr_item("PolicyName")
+        req_oldvers = acmpol_new.policy_dom_get_frompol_item("Version")
+        req_oldname = acmpol_new.policy_dom_get_frompol_item("PolicyName")
+
+        if now_vers == "" or \
+           now_vers != req_oldvers or \
+           now_name != req_oldname:
+            log.info("Policy rejected: %s != %s or %s != %s" % \
+                     (now_vers,req_oldvers,now_name,req_oldname))
+            return -xsconstants.XSERR_VERSION_PREVENTS_UPDATE
+
+        if not self.isVersionUpdate(acmpol_new):
+            log.info("Policy rejected since new version is not an update.")
+            return -xsconstants.XSERR_VERSION_PREVENTS_UPDATE
+
+        return xsconstants.XSERR_SUCCESS
+
+
     def compareVersions(self, v1, v2):
         """
             Compare two policy versions given their tuples of major and
@@ -845,8 +877,7 @@ class ACMPolicy(XSPolicy):
         if self.isloaded():
             return -xsconstants.XSERR_POLICY_LOADED
         files = [ self.get_filename(".map",""),
-                  self.get_filename(".bin",""),
-                  self.path_from_policy_name(self.get_name())]
+                  self.get_filename(".bin","") ]
         for f in files:
             try:
                 os.unlink(f)
@@ -925,11 +956,13 @@ class ACMPolicy(XSPolicy):
             return -xsconstants.XSERR_POLICY_INCONSISTENT, "", ""
 
         vms_with_chws = []
-        chws_by_vm = {}
+        chws_by_vm = { ACM_LABEL_UNLABELED : [] }
         for v in vms:
             if v.has_key("chws"):
                 vms_with_chws.append(v["name"])
                 chws_by_vm[v["name"]] = v["chws"]
+
+
         if bootstrap in vms_with_chws:
             vms_with_chws.remove(bootstrap)
             vms_with_chws.sort()
@@ -937,18 +970,25 @@ class ACMPolicy(XSPolicy):
         else:
             vms_with_chws.sort()
 
+        if ACM_LABEL_UNLABELED in vms_with_chws:
+            vms_with_chws.remove(ACM_LABEL_UNLABELED) ; # @1
+
         vms_with_stes = []
-        stes_by_vm = {}
+        stes_by_vm = { ACM_LABEL_UNLABELED : [] }
         for v in vms:
             if v.has_key("stes"):
                 vms_with_stes.append(v["name"])
                 stes_by_vm[v["name"]] = v["stes"]
+
         if bootstrap in vms_with_stes:
             vms_with_stes.remove(bootstrap)
             vms_with_stes.sort()
             vms_with_stes.insert(0, bootstrap)
         else:
             vms_with_stes.sort()
+
+        if ACM_LABEL_UNLABELED in vms_with_stes:
+            vms_with_stes.remove(ACM_LABEL_UNLABELED) ; # @2
 
         resnames = self.policy_get_resourcelabel_names()
         resnames.sort()
@@ -957,6 +997,9 @@ class ACMPolicy(XSPolicy):
         for r in res:
             if r.has_key("stes"):
                 stes_by_res[r["name"]] = r["stes"]
+
+        if ACM_LABEL_UNLABELED in resnames:
+            resnames.remove(ACM_LABEL_UNLABELED)
 
         max_chw_ssids = 1 + len(vms_with_chws)
         max_chw_types = 1 + len(vms_with_chws)
@@ -1083,6 +1126,8 @@ class ACMPolicy(XSPolicy):
              pr_bin += "\x00"
 
         # Build chinese wall part
+        vms_with_chws.insert(0, ACM_LABEL_UNLABELED)
+
         cfses_names = self.policy_get_chwall_cfses_names_sorted()
         cfses = self.policy_get_chwall_cfses()
 
@@ -1105,9 +1150,7 @@ class ACMPolicy(XSPolicy):
                               chw_running_types_offset,
                               chw_conf_agg_offset)
         chw_bin_body = ""
-        # simulate __NULL_LABEL__
-        for c in chws:
-            chw_bin_body += struct.pack("!h",0)
+
         # VMs that are listed and their chinese walls
         for v in vms_with_chws:
             for c in chws:
@@ -1143,6 +1186,8 @@ class ACMPolicy(XSPolicy):
             chw_bin += "\x00"
 
         # Build STE part
+        vms_with_stes.insert(0, ACM_LABEL_UNLABELED) # Took out in @2
+
         steformat="!iiiii"
         ste_bin = struct.pack(steformat,
                               ACM_STE_VERSION,
@@ -1152,10 +1197,7 @@ class ACMPolicy(XSPolicy):
                               struct.calcsize(steformat))
         ste_bin_body = ""
         if stes:
-            # Simulate __NULL_LABEL__
-            for s in stes:
-                ste_bin_body += struct.pack("!h",0)
-            # VMs that are listed and their chinese walls
+            # VMs that are listed and their STE types
             for v in vms_with_stes:
                 unknown_ste |= (set(stes_by_vm[v]) - set(stes))
                 for s in stes:
diff -r 5b19839d0365 -r cd51fa91956b tools/python/xen/util/security.py
--- a/tools/python/xen/util/security.py Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/python/xen/util/security.py Sun Aug 12 14:50:02 2007 -0600
@@ -146,7 +146,7 @@ def calc_dom_ssidref_from_info(info):
                 raise VmError("VM label '%s' in wrong format." % seclab)
             typ, policyname, vmlabel = seclab.split(":")
             if typ != xsconstants.ACM_POLICY_ID:
-                raise VmError("Policy type '%s' not supported." % typ)
+                raise VmError("Policy type '%s' must be changed." % typ)
             refresh_security_policy()
             if active_policy != policyname:
                 raise VmError("Active policy '%s' different than "
@@ -155,7 +155,7 @@ def calc_dom_ssidref_from_info(info):
             ssidref = label2ssidref(vmlabel, policyname, "dom")
             return ssidref
         else:
-            return 0
+            return 0x0
     raise VmError("security.calc_dom_ssidref_from_info: info of type '%s'"
                   "not supported." % type(info))
 
@@ -231,6 +231,10 @@ def ssidref2label(ssidref_var):
         ssidref = ssidref_var
     else:
         err("Instance type of ssidref not supported (must be of type 'str' or 
'int')")
+
+    if ssidref == 0:
+        from xen.util.acmpolicy import ACM_LABEL_UNLABELED
+        return ACM_LABEL_UNLABELED
 
     try:
         mapfile_lock()
@@ -498,7 +502,7 @@ def hv_chg_policy(bin_pol, del_array, ch
         rc, errors = acm.chgpolicy(bin_pol, del_array, chg_array)
     except Exception, e:
         pass
-    if (len(errors) > 0):
+    if len(errors) > 0:
         rc = -xsconstants.XSERR_HV_OP_FAILED
     return rc, errors
 
@@ -781,6 +785,24 @@ def res_security_check_xapi(rlabel, rssi
     return rtnval
 
 
+def validate_label(label, policyref):
+    """
+       Make sure that this label is part of the currently enforced policy
+       and that it reference the current policy.
+    """
+    rc = xsconstants.XSERR_SUCCESS
+    from xen.xend.XendXSPolicyAdmin import XSPolicyAdminInstance
+    curpol = XSPolicyAdminInstance().get_loaded_policy()
+    if not curpol or curpol.get_name() != policyref:
+        rc = -xsconstants.XSERR_BAD_LABEL
+    else:
+        try:
+            label2ssidref(label, curpol.get_name() , 'res')
+        except:
+            rc = -xsconstants.XSERR_BAD_LABEL
+    return rc
+
+
 def set_resource_label_xapi(resource, reslabel_xapi, oldlabel_xapi):
     """Assign a resource label to a resource
     @param resource: The name of a resource, i.e., "phy:/dev/hda", or
@@ -805,9 +827,15 @@ def set_resource_label_xapi(resource, re
             return -xsconstants.XSERR_BAD_LABEL_FORMAT
         otyp, opolicyref, olabel = tmp
         # Only ACM is supported
-        if otyp != xsconstants.ACM_POLICY_ID:
+        if otyp != xsconstants.ACM_POLICY_ID  and \
+           otyp != xsconstants.INVALID_POLICY_PREFIX + \
+                   xsconstants.ACM_POLICY_ID:
             return -xsconstants.XSERR_WRONG_POLICY_TYPE
+    rc = validate_label(label, policyref)
+    if rc != xsconstants.XSERR_SUCCESS:
+        return rc
     return set_resource_label(resource, typ, policyref, label, olabel)
+
 
 def is_resource_in_use(resource):
     """ Investigate all running domains whether they use this device """
@@ -867,7 +895,7 @@ def get_domain_resources(dominfo):
                 resources[typ].append("%s:%s:%s" %
                                       (xsconstants.ACM_POLICY_ID,
                                        active_policy,
-                                       "unlabeled"))
+                                       ACM_LABEL_UNLABELED))
 
     return resources
 
@@ -1224,7 +1252,7 @@ def change_acm_policy(bin_pol, del_array
                 sec_lab, new_seclab = labels
                 if sec_lab != new_seclab:
                     log.info("Updating domain %s to new label '%s'." % \
-                             (new_seclab, sec_lab))
+                             (sec_lab, new_seclab))
                     # This better be working!
                     dominfo.set_security_label(new_seclab,
                                                sec_lab,
diff -r 5b19839d0365 -r cd51fa91956b tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py   Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/python/xen/xend/XendDomainInfo.py   Sun Aug 12 14:50:02 2007 -0600
@@ -559,18 +559,8 @@ class XendDomainInfo:
             self.getDeviceController(devclass).waitForDevices()
 
     def destroyDevice(self, deviceClass, devid, force = False):
-        try:
-            dev = int(devid)
-        except ValueError:
-            # devid is not a number but a string containing either device
-            # name (e.g. xvda) or device_type/device_id (e.g. vbd/51728)
-            dev = type(devid) is str and devid.split('/')[-1] or None
-            if dev == None:
-                log.debug("Could not find the device %s", devid)
-                return None
-
-        log.debug("dev = %s", dev)
-        return self.getDeviceController(deviceClass).destroyDevice(dev, force)
+        log.debug("dev = %s", devid)
+        return self.getDeviceController(deviceClass).destroyDevice(devid, 
force)
 
     def getDeviceSxprs(self, deviceClass):
         if self._stateGet() in (DOM_STATE_RUNNING, DOM_STATE_PAUSED):
@@ -1463,8 +1453,6 @@ class XendDomainInfo:
         ssidref = 0
         if security.on():
             ssidref = security.calc_dom_ssidref_from_info(self.info)
-            if ssidref == 0:
-                raise VmError('VM is not properly labeled.')
             if security.has_authorization(ssidref) == False:
                 raise VmError("VM is not authorized to run.")
 
diff -r 5b19839d0365 -r cd51fa91956b 
tools/python/xen/xend/server/DevController.py
--- a/tools/python/xen/xend/server/DevController.py     Sun Aug 12 12:19:13 
2007 -0600
+++ b/tools/python/xen/xend/server/DevController.py     Sun Aug 12 14:50:02 
2007 -0600
@@ -203,27 +203,32 @@ class DevController:
 
         The implementation here simply deletes the appropriate paths from the
         store.  This may be overridden by subclasses who need to perform other
-        tasks on destruction.  Further, the implementation here can only
-        accept integer device IDs, or values that can be converted to
-        integers.  Subclasses may accept other values and convert them to
-        integers before passing them here.
-        """
-
-        devid = int(devid)
+        tasks on destruction. The implementation here accepts integer device
+        IDs or paths containg integer deviceIDs, e.g. vfb/0.  Subclasses may
+        accept other values and convert them to integers before passing them
+        here.
+        """
+
+        try:
+            dev = int(devid)
+        except ValueError:
+            # Does devid contain devicetype/deviceid?
+            # Propogate exception if unable to find an integer devid
+            dev = int(type(devid) is str and devid.split('/')[-1] or None)
 
         # Modify online status /before/ updating state (latter is watched by
         # drivers, so this ordering avoids a race).
-        self.writeBackend(devid, 'online', "0")
-        self.writeBackend(devid, 'state', str(xenbusState['Closing']))
+        self.writeBackend(dev, 'online', "0")
+        self.writeBackend(dev, 'state', str(xenbusState['Closing']))
 
         if force:
-            frontpath = self.frontendPath(devid)
+            frontpath = self.frontendPath(dev)
             backpath = xstransact.Read(frontpath, "backend")
             if backpath:
                 xstransact.Remove(backpath)
             xstransact.Remove(frontpath)
 
-        self.vm._removeVm("device/%s/%d" % (self.deviceClass, devid))
+        self.vm._removeVm("device/%s/%d" % (self.deviceClass, dev))
 
     def configurations(self):
         return map(self.configuration, self.deviceIDs())
diff -r 5b19839d0365 -r cd51fa91956b tools/python/xen/xend/server/blkif.py
--- a/tools/python/xen/xend/server/blkif.py     Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/python/xen/xend/server/blkif.py     Sun Aug 12 14:50:02 2007 -0600
@@ -73,17 +73,7 @@ class BlkifController(DevController):
             back['uuid'] = uuid
 
         if security.on():
-            (label, ssidref, policy) = \
-                                 security.get_res_security_details(uname)
-            domain_label = self.vm.get_security_label()
-            if domain_label:
-                rc = security.res_security_check_xapi(label, ssidref, policy,
-                                                      domain_label)
-                if rc == 0:
-                    raise VmError("VM's access to block device '%s' denied." %
-                                  uname)
-            else:
-                raise VmError("VM must have a security label.")
+            self.do_access_control(config, uname)
 
         devid = blkif.blkdev_name_to_number(dev)
         if devid is None:
@@ -95,6 +85,21 @@ class BlkifController(DevController):
 
         return (devid, back, front)
 
+    def do_access_control(self, config, uname):
+        (label, ssidref, policy) = \
+                             security.get_res_security_details(uname)
+        domain_label = self.vm.get_security_label()
+        if domain_label:
+            rc = security.res_security_check_xapi(label, ssidref, policy,
+                                                  domain_label)
+            if rc == 0:
+                raise VmError("VM's access to block device '%s' denied" %
+                              uname)
+        else:
+            from xen.util.acmpolicy import ACM_LABEL_UNLABELED
+            if label != ACM_LABEL_UNLABELED:
+                raise VmError("VM must have a security label to access "
+                              "block device '%s'" % uname)
 
     def reconfigureDevice(self, _, config):
         """@see DevController.reconfigureDevice"""
@@ -149,13 +154,16 @@ class BlkifController(DevController):
     def destroyDevice(self, devid, force):
         """@see DevController.destroyDevice"""
 
-        # If we are given a device name, then look up the device ID from it,
-        # and destroy that ID instead.  If what we are given is an integer,
-        # then assume it's a device ID and pass it straight through to our
-        # superclass's method.
-
+        # vbd device IDs can be either string or integer.  Further, the
+        # following string values are possible:
+        #    - devicetype/deviceid (vbd/51728)
+        #    - devicetype/devicename (/dev/xvdb)
+        #    - devicename (xvdb)
+        # Let our superclass handle integer or devicetype/deviceid forms.
+        # If we are given a device name form, then look up the device ID
+        # from it, and destroy that ID instead.
         try:
-            DevController.destroyDevice(self, int(devid), force)
+            DevController.destroyDevice(self, devid, force)
         except ValueError:
             devid_end = type(devid) is str and devid.split('/')[-1] or None
 
diff -r 5b19839d0365 -r cd51fa91956b tools/python/xen/xm/activatepolicy.py
--- a/tools/python/xen/xm/activatepolicy.py     Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/python/xen/xm/activatepolicy.py     Sun Aug 12 14:50:02 2007 -0600
@@ -23,7 +23,7 @@ from xen.util import xsconstants
 from xen.util import xsconstants
 from xml.dom import minidom
 from xen.xm.opts import OptionError
-from xen.xm import getpolicy
+from xen.xm import getpolicy, setpolicy
 from xen.xm import main as xm_main
 from xen.xm.main import server
 
@@ -38,6 +38,9 @@ def help():
       --boot     Have the system boot with the policy. Changes the default
                  title in grub.conf.
       --noboot   Remove the policy from the default entry in grub.conf.
+      --remove   Attempt to remove the current policy by installing the
+                 default policy; this works only if no domains are
+                 running.
     """
 
 def activate_policy(flags):
@@ -56,6 +59,25 @@ def remove_bootpolicy():
 def remove_bootpolicy():
     server.xenapi.XSPolicy.rm_xsbootpolicy()
 
+def install_default_policy():
+    if xm_main.serverType != xm_main.SERVER_XEN_API:
+        raise OptionError('xm needs to be configured to use the xen-api.')
+    xs_type = int(server.xenapi.XSPolicy.get_xstype())
+    if xs_type & xsconstants.XS_POLICY_ACM == 0:
+        raise OptionError('ACM policy type not supported on system.')
+    policystate = server.xenapi.XSPolicy.get_xspolicy()
+    if int(policystate['type']) == 0:
+        print 'No policy is installed.'
+        return
+    if int(policystate['type']) != xsconstants.XS_POLICY_ACM:
+        print "Unknown policy type '%s'." % policystate['type']
+    flags = int(policystate['flags'])
+    if flags & xsconstants.XS_INST_LOAD == 0:
+        print "Default policy is already loaded."
+        return
+    setpolicy.setpolicy(xsconstants.ACM_POLICY_ID, 'default', flags, True,
+                        False)
+
 def main(argv):
     if xm_main.serverType != xm_main.SERVER_XEN_API:
         raise OptionError('xm needs to be configured to use the xen-api.')
@@ -69,6 +91,9 @@ def main(argv):
             flags |= xsconstants.XS_INST_LOAD
         elif '--noboot' == argv[c]:
             remove_bootpolicy()
+        elif '--remove' == argv[c]:
+            install_default_policy()
+            return
         else:
             raise OptionError("Unknown command line option '%s'" % argv[c])
         c += 1
diff -r 5b19839d0365 -r cd51fa91956b tools/python/xen/xm/main.py
--- a/tools/python/xen/xm/main.py       Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/python/xen/xm/main.py       Sun Aug 12 14:50:02 2007 -0600
@@ -25,7 +25,6 @@ import cmd
 import cmd
 import os
 import pprint
-import readline
 import shlex
 import sys
 import re
@@ -51,6 +50,7 @@ from xen.xm import console
 from xen.xm import console
 from xen.util.xmlrpcclient import ServerProxy
 from xen.util.security import ACMError
+from xen.util.acmpolicy import ACM_LABEL_UNLABELED_DISPLAY
 
 import XenAPI
 
@@ -615,6 +615,7 @@ class Shell(cmd.Cmd):
 
     def preloop(self):
         cmd.Cmd.preloop(self)
+        import readline
         readline.set_completer_delims(' ')
 
     def default(self, line):
@@ -947,7 +948,7 @@ def xm_label_list(doms):
         d = parse_doms_info(dom)
         if security.active_policy not in ['INACTIVE', 'NULL', 'DEFAULT']:
             if not d['seclabel']:
-                d['seclabel'] = 'ERROR'
+                d['seclabel'] = ACM_LABEL_UNLABELED_DISPLAY
         elif security.active_policy in ['DEFAULT']:
             d['seclabel'] = 'DEFAULT'
         else:
diff -r 5b19839d0365 -r cd51fa91956b tools/python/xen/xm/new.py
--- a/tools/python/xen/xm/new.py        Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/python/xen/xm/new.py        Sun Aug 12 14:50:02 2007 -0600
@@ -75,7 +75,8 @@ def main(argv):
         doc = sxp2xml_inst.convert_sxp_to_xml(config) 
         
         xenapi_create_inst = xenapi_create()
-        vm_refs = xenapi_create_inst.create(document = doc)
+        vm_refs = xenapi_create_inst.create(document = doc,
+                                            skipdtd=opts.vals.skipdtd)
     else:       
         make_unstarted_domain(opts, config)
         
diff -r 5b19839d0365 -r cd51fa91956b tools/python/xen/xm/resources.py
--- a/tools/python/xen/xm/resources.py  Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/python/xen/xm/resources.py  Sun Aug 12 14:50:02 2007 -0600
@@ -58,7 +58,6 @@ def main (argv):
         try:
             filename = security.res_label_filename
             access_control = dictio.dict_read("resources", filename)
-            print access_control
         except:
             raise OptionError("Resource file not found")
 
diff -r 5b19839d0365 -r cd51fa91956b tools/python/xen/xm/setpolicy.py
--- a/tools/python/xen/xm/setpolicy.py  Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/python/xen/xm/setpolicy.py  Sun Aug 12 14:50:02 2007 -0600
@@ -24,6 +24,7 @@ import sys
 import sys
 import string
 from xen.util import xsconstants
+from xen.util.acmpolicy import ACMPolicy
 from xen.xm.opts import OptionError
 from xen.util.security import policy_dir_prefix
 from xen.xm import main as xm_main
@@ -40,9 +41,38 @@ def help():
     The following options are defined
       --load     Load the policy immediately
       --boot     Have the system load the policy during boot
+      --update   Automatically adapt the policy so that it will be
+                 treated as an update to the current policy
     """
 
-def setpolicy(policytype, policy_name, flags, overwrite):
+def create_update_xml(xml):
+    """
+        Adapt the new policy's xml header to be a simple type of an
+        update to the currently enforce policy on the remote system.
+        Increases the minor number by '1'.
+    """
+    policystate = server.xenapi.XSPolicy.get_xspolicy()
+    if int(policystate['type']) == 0:
+        return xml
+    curpol = ACMPolicy(xml = policystate['repr'])
+    curpol_version = curpol.get_version()
+    tmp = curpol_version.split('.')
+    if len(tmp) == 2:
+        maj = int(tmp[0])
+        min = int(tmp[1])
+    else:
+        maj = int(tmp)
+        min = 0
+    min += 1
+    newpol_version = ""+str(maj)+"."+str(min)
+
+    newpol = ACMPolicy(xml = xml)
+    newpol.set_frompolicy_name(curpol.get_name())
+    newpol.set_frompolicy_version(curpol.get_version())
+    newpol.set_policy_version(newpol_version)
+    return newpol.toxml()
+
+def setpolicy(policytype, policy_name, flags, overwrite, is_update=False):
     if xm_main.serverType != xm_main.SERVER_XEN_API:
         raise OptionError('xm needs to be configured to use the xen-api.')
     if policytype != xsconstants.ACM_POLICY_ID:
@@ -60,6 +90,9 @@ def setpolicy(policytype, policy_name, f
             f.close()
         except:
             raise OptionError("Not a valid policy file")
+
+        if is_update:
+            xml = create_update_xml(xml)
 
         try:
             policystate = server.xenapi.XSPolicy.set_xspolicy(xs_type,
@@ -96,18 +129,21 @@ def main(argv):
 
     policytype  = argv[1]
     policy_name = argv[2]
+    is_update = False
 
     flags = 0
     if '--load' in argv:
         flags |= xsconstants.XS_INST_LOAD
     if '--boot' in argv:
         flags |= xsconstants.XS_INST_BOOT
+    if '--update' in argv:
+        is_update = True
 
     overwrite = True
     if '--nooverwrite' in argv:
         overwrite = False
 
-    setpolicy(policytype, policy_name, flags, overwrite)
+    setpolicy(policytype, policy_name, flags, overwrite, is_update)
 
 if __name__ == '__main__':
     try:
diff -r 5b19839d0365 -r cd51fa91956b tools/security/Makefile
--- a/tools/security/Makefile   Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/security/Makefile   Sun Aug 12 14:50:02 2007 -0600
@@ -12,13 +12,6 @@ CFLAGS     += $(shell xml2-config --cfla
 CFLAGS     += $(shell xml2-config --cflags )
 CFLAGS     += $(shell if [[ $(XML2VERSION) < 2.6.20 ]]; then echo ""; else 
echo "-DVALIDATE_SCHEMA"; fi )
 LDFLAGS    += $(shell xml2-config --libs ) # if this does not work, try 
-L/usr/lib -lxml2 -lz -lpthread -lm
-
-ifeq ($(ACM_DEFAULT_SECURITY_POLICY),ACM_NULL_POLICY)
-POLICY=null
-endif
-ifeq 
($(ACM_DEFAULT_SECURITY_POLICY),ACM_CHINESE_WALL_AND_SIMPLE_TYPE_ENFORCEMENT_POLICY)
-POLICY=chwall_ste
-endif
 
 SRCS_TOOL     = secpol_tool.c
 OBJS_TOOL    := $(patsubst %.c,%.o,$(filter %.c,$(SRCS_TOOL)))
@@ -41,6 +34,7 @@ ACM_SECGEN_CGIDIR = $(ACM_SECGEN_HTMLDIR
 
 ACM_SCHEMA        = security_policy.xsd
 ACM_EXAMPLES      = client_v1 test
+ACM_DEF_POLICIES  = default default-ul
 ACM_POLICY_SUFFIX = security_policy.xml
 
 ifeq ($(ACM_SECURITY),y)
@@ -61,6 +55,9 @@ install: all $(ACM_CONFIG_FILE)
        $(INSTALL_DIR) $(DESTDIR)$(ACM_POLICY_DIR)/example
        for i in $(ACM_EXAMPLES); do \
                $(INSTALL_DATA) policies/example/$$i-$(ACM_POLICY_SUFFIX) 
$(DESTDIR)$(ACM_POLICY_DIR)/example/; \
+       done
+       for i in $(ACM_DEF_POLICIES); do \
+               $(INSTALL_DATA) policies/$$i-$(ACM_POLICY_SUFFIX) 
$(DESTDIR)$(ACM_POLICY_DIR); \
        done
        $(INSTALL_DIR) $(DESTDIR)$(ACM_SCRIPT_DIR)
        $(INSTALL_PROG) $(ACM_SCRIPTS) $(DESTDIR)$(ACM_SCRIPT_DIR)
diff -r 5b19839d0365 -r cd51fa91956b 
tools/security/policies/default-security_policy.xml
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/security/policies/default-security_policy.xml       Sun Aug 12 
14:50:02 2007 -0600
@@ -0,0 +1,30 @@
+<?xml version="1.0" ?>
+<SecurityPolicyDefinition xmlns="http://www.ibm.com"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://www.ibm.com ../../security_policy.xsd">
+  <PolicyHeader>
+    <PolicyName>DEFAULT</PolicyName>
+    <Version>1.0</Version>
+  </PolicyHeader>
+  <SimpleTypeEnforcement>
+    <SimpleTypeEnforcementTypes>
+      <Type>SystemManagement</Type>
+    </SimpleTypeEnforcementTypes>
+  </SimpleTypeEnforcement>
+  <ChineseWall>
+    <ChineseWallTypes>
+      <Type>SystemManagement</Type>
+    </ChineseWallTypes>
+  </ChineseWall>
+  <SecurityLabelTemplate>
+    <SubjectLabels bootstrap="SystemManagement">
+      <VirtualMachineLabel>
+        <Name>SystemManagement</Name>
+        <SimpleTypeEnforcementTypes>
+          <Type>SystemManagement</Type>
+        </SimpleTypeEnforcementTypes>
+        <ChineseWallTypes>
+          <Type/>
+        </ChineseWallTypes>
+      </VirtualMachineLabel>
+    </SubjectLabels>
+  </SecurityLabelTemplate>
+</SecurityPolicyDefinition>
diff -r 5b19839d0365 -r cd51fa91956b 
tools/security/policies/default-ul-security_policy.xml
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/security/policies/default-ul-security_policy.xml    Sun Aug 12 
14:50:02 2007 -0600
@@ -0,0 +1,41 @@
+<?xml version="1.0" ?>
+<SecurityPolicyDefinition xmlns="http://www.ibm.com"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://www.ibm.com ../../security_policy.xsd">
+  <PolicyHeader>
+    <PolicyName>DEFAULT-UL</PolicyName>
+    <Version>1.0</Version>
+  </PolicyHeader>
+  <SimpleTypeEnforcement>
+    <SimpleTypeEnforcementTypes>
+      <Type>SystemManagement</Type>
+      <Type>__UNLABELED__</Type>
+    </SimpleTypeEnforcementTypes>
+  </SimpleTypeEnforcement>
+  <ChineseWall>
+    <ChineseWallTypes>
+      <Type>SystemManagement</Type>
+    </ChineseWallTypes>
+  </ChineseWall>
+  <SecurityLabelTemplate>
+    <SubjectLabels bootstrap="SystemManagement">
+      <VirtualMachineLabel>
+        <Name>SystemManagement</Name>
+        <SimpleTypeEnforcementTypes>
+          <Type>SystemManagement</Type>
+          <Type>__UNLABELED__</Type>
+        </SimpleTypeEnforcementTypes>
+        <ChineseWallTypes>
+          <Type/>
+        </ChineseWallTypes>
+      </VirtualMachineLabel>
+      <VirtualMachineLabel>
+        <Name>__UNLABELED__</Name>
+        <SimpleTypeEnforcementTypes>
+          <Type>__UNLABELED__</Type>
+        </SimpleTypeEnforcementTypes>
+        <ChineseWallTypes>
+          <Type/>
+        </ChineseWallTypes>
+      </VirtualMachineLabel>
+    </SubjectLabels>
+  </SecurityLabelTemplate>
+</SecurityPolicyDefinition>
diff -r 5b19839d0365 -r cd51fa91956b tools/security/xensec_ezpolicy
--- a/tools/security/xensec_ezpolicy    Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/security/xensec_ezpolicy    Sun Aug 12 14:50:02 2007 -0600
@@ -35,6 +35,8 @@ conflict_bmp = None
 conflict_bmp = None
 realm_icon = None
 workload_icon = None
+
+ACM_LABEL_UNLABELED = '__UNLABELED__'
 
 class orgTreeCtrl(wx.TreeCtrl):
 
@@ -870,7 +872,8 @@ class ezFrame(wx.Frame):
             self.realm_menu.Enable(self.ID_ORGDEL, True)
             self.realm_menu.Enable(self.ID_ORGEDT, True)
             self.realm_menu.Enable(self.ID_ORGADD, True)
-            if len(self.orgs.GetSelections()) > 1:
+            if len(self.orgs.GetSelections()) > 1 or \
+               ACM_LABEL_UNLABELED == self.orgs.GetItemText(item):
                 self.realm_menu.Enable(self.ID_ORGEDT, False)
                 self.realm_menu.Enable(self.ID_ORGADD, False)
             self.PopupMenu(self.realm_menu)
@@ -1622,6 +1625,8 @@ def main():
     app = ezApp(0)
     if len(sys.argv) in [2]:
         app.Load(sys.argv[1])
+    else:
+        dict2org({'orgs' : [[ACM_LABEL_UNLABELED,[]]], 'cons': []})
     app.MainLoop()
     print "Goodbye"
 
diff -r 5b19839d0365 -r cd51fa91956b tools/xenstat/libxenstat/src/xenstat.c
--- a/tools/xenstat/libxenstat/src/xenstat.c    Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/xenstat/libxenstat/src/xenstat.c    Sun Aug 12 14:50:02 2007 -0600
@@ -677,7 +677,7 @@ static void xenstat_prune_domain(xenstat
        /* shift entries following specified entry up by one */
        if (entry < node->num_domains) {
                xenstat_domain *domain = &node->domains[entry];
-               memmove(domain,domain+1,node->num_domains-entry);
+               memmove(domain,domain+1,(node->num_domains - entry) * 
sizeof(xenstat_domain) );
        }
 
        /* zero out original last entry from node -- not
diff -r 5b19839d0365 -r cd51fa91956b tools/xenstore/utils.c
--- a/tools/xenstore/utils.c    Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/xenstore/utils.c    Sun Aug 12 14:50:02 2007 -0600
@@ -10,18 +10,17 @@
 #include <signal.h>
 #include "utils.h"
 
-void xprintf(const char *fmt, ...)
+static void default_xprintf(const char *fmt, ...)
 {
        va_list args;
-
-       if (!stderr)
-               return; /* could trace()? */
 
        va_start(args, fmt);
        vfprintf(stderr, fmt, args);
        va_end(args);
        fflush(stderr);
 }
+
+void (*xprintf)(const char *fmt, ...) = default_xprintf;
 
 void barf(const char *fmt, ...)
 {
diff -r 5b19839d0365 -r cd51fa91956b tools/xenstore/utils.h
--- a/tools/xenstore/utils.h    Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/xenstore/utils.h    Sun Aug 12 14:50:02 2007 -0600
@@ -24,7 +24,7 @@ void barf(const char *fmt, ...) __attrib
 void barf(const char *fmt, ...) __attribute__((noreturn));
 void barf_perror(const char *fmt, ...) __attribute__((noreturn));
 
-void xprintf(const char *fmt, ...);
+void (*xprintf)(const char *fmt, ...);
 
 #define eprintf(_fmt, _args...) xprintf("[ERR] %s" _fmt, __FUNCTION__, ##_args)
 
diff -r 5b19839d0365 -r cd51fa91956b tools/xenstore/xenstored_core.c
--- a/tools/xenstore/xenstored_core.c   Sun Aug 12 12:19:13 2007 -0600
+++ b/tools/xenstore/xenstored_core.c   Sun Aug 12 14:50:02 2007 -0600
@@ -1880,14 +1880,14 @@ int main(int argc, char *argv[])
 
        /* close stdin/stdout now we're ready to accept connections */
        if (dofork) {
-               close(STDIN_FILENO);
-               close(STDOUT_FILENO);
-               close(STDERR_FILENO);
-
-               /* Get ourselves a nice xenstored crash if these are used. */
-               stdin = NULL;
-               stdout = NULL;
-               stderr = NULL;
+               int devnull = open("/dev/null", O_RDWR);
+               if (devnull == -1)
+                       barf_perror("Could not open /dev/null\n");
+               close(STDIN_FILENO);  dup2(STDIN_FILENO, devnull);
+               close(STDOUT_FILENO); dup2(STDOUT_FILENO, devnull);
+               close(STDERR_FILENO); dup2(STDERR_FILENO, devnull);
+               close(devnull);
+               xprintf = trace;
        }
 
        signal(SIGHUP, trigger_reopen_log);
diff -r 5b19839d0365 -r cd51fa91956b 
unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c
--- a/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c        Sun Aug 
12 12:19:13 2007 -0600
+++ b/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c        Sun Aug 
12 14:50:02 2007 -0600
@@ -10,6 +10,12 @@ struct ap_suspend_info {
        int      do_spin;
        atomic_t nr_spinning;
 };
+
+/*
+ * Use a rwlock to protect the hypercall page from being executed in AP context
+ * while the BSP is re-initializing it after restore.
+ */
+static DEFINE_RWLOCK(suspend_lock);
 
 /*
  * Spinning prevents, for example, APs touching grant table entries while
@@ -27,7 +33,9 @@ static void ap_suspend(void *_info)
 
        while (info->do_spin) {
                cpu_relax();
+               read_lock(&suspend_lock);
                HYPERVISOR_yield();
+               read_unlock(&suspend_lock);
        }
 
        mb();
@@ -43,7 +51,9 @@ static int bp_suspend(void)
        suspend_cancelled = HYPERVISOR_shutdown(SHUTDOWN_suspend);
 
        if (!suspend_cancelled) {
+               write_lock(&suspend_lock);
                platform_pci_resume();
+               write_unlock(&suspend_lock);
                gnttab_resume();
                irq_resume();
        }
diff -r 5b19839d0365 -r cd51fa91956b xen/acm/acm_chinesewall_hooks.c
--- a/xen/acm/acm_chinesewall_hooks.c   Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/acm/acm_chinesewall_hooks.c   Sun Aug 12 14:50:02 2007 -0600
@@ -93,6 +93,7 @@ int acm_init_chwall_policy(void)
     return ACM_OK;
 }
 
+
 static int chwall_init_domain_ssid(void **chwall_ssid, ssidref_t ssidref)
 {
     struct chwall_ssid *chwall_ssidp = xmalloc(struct chwall_ssid);
@@ -104,10 +105,10 @@ static int chwall_init_domain_ssid(void 
     chwall_ssidp->chwall_ssidref =
         GET_SSIDREF(ACM_CHINESE_WALL_POLICY, ssidref);
 
-    if ( (chwall_ssidp->chwall_ssidref >= chwall_bin_pol.max_ssidrefs)
-        || (chwall_ssidp->chwall_ssidref == ACM_DEFAULT_LOCAL_SSID) )
-    {
-        printkd("%s: ERROR chwall_ssidref(%x) undefined (>max) or unset 
(0).\n",
+    if ( chwall_ssidp->chwall_ssidref >= chwall_bin_pol.max_ssidrefs )
+    {
+        printkd("%s: ERROR chwall_ssidref(%x) undefined (>max) or unset "
+                "(0).\n",
                 __func__, chwall_ssidp->chwall_ssidref);
         xfree(chwall_ssidp);
         return ACM_INIT_SSID_ERROR;
@@ -117,6 +118,7 @@ static int chwall_init_domain_ssid(void 
             __func__, chwall_ssidp->chwall_ssidref);
     return ACM_OK;
 }
+
 
 static void chwall_free_domain_ssid(void *chwall_ssid)
 {
@@ -205,7 +207,9 @@ chwall_init_state(struct acm_chwall_poli
 
     read_lock(&ssid_list_rwlock);
 
-    /* go through all domains and adjust policy as if this domain was started 
now */
+    /* go through all domains and adjust policy as if this domain was
+     * started now
+     */
     for_each_acmssid( rawssid )
     {
         chwall_ssid =
@@ -220,8 +224,8 @@ chwall_init_state(struct acm_chwall_poli
 
         /* b) check for conflict */
         for ( i = 0; i < chwall_buf->chwall_max_types; i++ )
-            if (conflict_aggregate_set[i] &&
-                ssidrefs[chwall_ssidref * chwall_buf->chwall_max_types + i])
+            if ( conflict_aggregate_set[i] &&
+                 ssidrefs[chwall_ssidref * chwall_buf->chwall_max_types + i] )
             {
                 printk("%s: CHINESE WALL CONFLICT in type %02x.\n",
                        __func__, i);
@@ -231,37 +235,46 @@ chwall_init_state(struct acm_chwall_poli
 
                 goto out;
             }
+
         /* set violation and break out of the loop */
-        /* c) adapt conflict aggregate set for this domain (notice conflicts) 
*/
+        /* c) adapt conflict aggregate set for this domain
+         *    (notice conflicts)
+         */
         for ( i = 0; i < chwall_buf->chwall_max_conflictsets; i++ )
         {
             int common = 0;
             /* check if conflict_set_i and ssidref have common types */
             for ( j = 0; j < chwall_buf->chwall_max_types; j++ )
-                if (conflict_sets[i * chwall_buf->chwall_max_types + j] &&
-                    ssidrefs[chwall_ssidref *
-                            chwall_buf->chwall_max_types + j])
+                if ( conflict_sets[i * chwall_buf->chwall_max_types + j] &&
+                     ssidrefs[chwall_ssidref *
+                              chwall_buf->chwall_max_types + j] )
                 {
                     common = 1;
                     break;
                 }
-            if (common == 0)
+
+            if ( common == 0 )
                 continue;       /* try next conflict set */
-            /* now add types of the conflict set to conflict_aggregate_set 
(except types in chwall_ssidref) */
+
+            /* now add types of the conflict set to conflict_aggregate_set
+             * (except types in chwall_ssidref)
+             */
             for ( j = 0; j < chwall_buf->chwall_max_types; j++ )
-                if (conflict_sets[i * chwall_buf->chwall_max_types + j] &&
-                    !ssidrefs[chwall_ssidref *
-                             chwall_buf->chwall_max_types + j])
+                if ( conflict_sets[i * chwall_buf->chwall_max_types + j] &&
+                     !ssidrefs[chwall_ssidref *
+                               chwall_buf->chwall_max_types + j] )
                     conflict_aggregate_set[j]++;
         }
     }
  out:
     read_unlock(&ssid_list_rwlock);
     return violation;
-    /* returning "violation != 0" means that the currently running set of 
domains would
-     * not be possible if the new policy had been enforced before starting 
them; for chinese
-     * wall, this means that the new policy includes at least one conflict set 
of which
-     * more than one type is currently running */
+    /* returning "violation != 0" means that the currently running set of
+     * domains would not be possible if the new policy had been enforced
+     * before starting them; for chinese wall, this means that the new
+     * policy includes at least one conflict set of which more than one
+     * type is currently running
+     */
 }
 
 
@@ -348,8 +361,10 @@ static int _chwall_update_policy(u8 *buf
     memset(conflict_aggregate_set, 0,
            sizeof(domaintype_t) * chwall_buf->chwall_max_types);
 
-    /* 3. now re-calculate the state for the new policy based on running 
domains;
-     *    this can fail if new policy is conflicting with running domains */
+    /* 3. now re-calculate the state for the new policy based on
+     *    running domains; this can fail if new policy is conflicting
+     *    with running domains
+     */
     if ( chwall_init_state(chwall_buf, ssids,
                            conflict_sets, running_types,
                            conflict_aggregate_set,
@@ -483,81 +498,27 @@ static int _chwall_pre_domain_create(voi
 
     chwall_ssidref = GET_SSIDREF(ACM_CHINESE_WALL_POLICY, ssidref);
 
-    if (chwall_ssidref == ACM_DEFAULT_LOCAL_SSID)
-    {
-        printk("%s: ERROR CHWALL SSID is NOT SET but policy enforced.\n",
-               __func__);
-        return ACM_ACCESS_DENIED;       /* catching and indicating config 
error */
-    }
-
-    if (chwall_ssidref >= chwall_bin_pol.max_ssidrefs)
+    if ( chwall_ssidref >= chwall_bin_pol.max_ssidrefs )
     {
         printk("%s: ERROR chwall_ssidref > max(%x).\n",
                __func__, chwall_bin_pol.max_ssidrefs - 1);
         return ACM_ACCESS_DENIED;
     }
+
     /* A: chinese wall check for conflicts */
-    for (i = 0; i < chwall_bin_pol.max_types; i++)
-        if (chwall_bin_pol.conflict_aggregate_set[i] &&
-            chwall_bin_pol.ssidrefs[chwall_ssidref *
-                                   chwall_bin_pol.max_types + i])
+    for ( i = 0; i < chwall_bin_pol.max_types; i++ )
+        if ( chwall_bin_pol.conflict_aggregate_set[i] &&
+             chwall_bin_pol.ssidrefs[chwall_ssidref *
+                                     chwall_bin_pol.max_types + i] )
         {
             printk("%s: CHINESE WALL CONFLICT in type %02x.\n", __func__, i);
             return ACM_ACCESS_DENIED;
         }
 
     /* B: chinese wall conflict set adjustment (so that other
-     *      other domains simultaneously created are evaluated against this 
new set)*/
-    for ( i = 0; i < chwall_bin_pol.max_conflictsets; i++ )
-    {
-        int common = 0;
-        /* check if conflict_set_i and ssidref have common types */
-        for ( j = 0; j < chwall_bin_pol.max_types; j++ )
-            if ( chwall_bin_pol.
-                 conflict_sets[i * chwall_bin_pol.max_types + j]
-                 && chwall_bin_pol.ssidrefs[chwall_ssidref *
-                                            chwall_bin_pol.max_types + j] )
-            {
-                common = 1;
-                break;
-            }
-        if (common == 0)
-            continue;           /* try next conflict set */
-        /* now add types of the conflict set to conflict_aggregate_set (except 
types in chwall_ssidref) */
-        for ( j = 0; j < chwall_bin_pol.max_types; j++ )
-            if ( chwall_bin_pol.
-                 conflict_sets[i * chwall_bin_pol.max_types + j]
-                 && !chwall_bin_pol.ssidrefs[chwall_ssidref *
-                                             chwall_bin_pol.max_types + j])
-                 chwall_bin_pol.conflict_aggregate_set[j]++;
-    }
-    return ACM_ACCESS_PERMITTED;
-}
-
-
-static void _chwall_post_domain_create(domid_t domid, ssidref_t ssidref)
-{
-    int i, j;
-    ssidref_t chwall_ssidref;
-
-    chwall_ssidref = GET_SSIDREF(ACM_CHINESE_WALL_POLICY, ssidref);
-    /* adjust types ref-count for running domains */
-    for ( i = 0; i < chwall_bin_pol.max_types; i++ )
-        chwall_bin_pol.running_types[i] +=
-            chwall_bin_pol.ssidrefs[chwall_ssidref *
-                                   chwall_bin_pol.max_types + i];
-    if ( domid )
-        return;
-
-    /* Xen does not call pre-create hook for DOM0;
-     * to consider type conflicts of any domain with DOM0, we need
-     * to adjust the conflict_aggregate for DOM0 here the same way it
-     * is done for non-DOM0 domains in the pre-hook */
-    printkd("%s: adjusting security state for DOM0 (ssidref=%x, 
chwall_ssidref=%x).\n",
-            __func__, ssidref, chwall_ssidref);
-
-    /* chinese wall conflict set adjustment (so that other
-     *      other domains simultaneously created are evaluated against this 
new set)*/
+     *    other domains simultaneously created are evaluated against
+     *    this new set)
+     */
     for ( i = 0; i < chwall_bin_pol.max_conflictsets; i++ )
     {
         int common = 0;
@@ -578,6 +539,62 @@ static void _chwall_post_domain_create(d
             if ( chwall_bin_pol.
                  conflict_sets[i * chwall_bin_pol.max_types + j]
                  && !chwall_bin_pol.ssidrefs[chwall_ssidref *
+                                             chwall_bin_pol.max_types + j])
+                 chwall_bin_pol.conflict_aggregate_set[j]++;
+    }
+    return ACM_ACCESS_PERMITTED;
+}
+
+
+static void _chwall_post_domain_create(domid_t domid, ssidref_t ssidref)
+{
+    int i, j;
+    ssidref_t chwall_ssidref;
+
+    chwall_ssidref = GET_SSIDREF(ACM_CHINESE_WALL_POLICY, ssidref);
+    /* adjust types ref-count for running domains */
+    for ( i = 0; i < chwall_bin_pol.max_types; i++ )
+        chwall_bin_pol.running_types[i] +=
+            chwall_bin_pol.ssidrefs[chwall_ssidref *
+                                   chwall_bin_pol.max_types + i];
+    if ( domid )
+        return;
+
+    /* Xen does not call pre-create hook for DOM0;
+     * to consider type conflicts of any domain with DOM0, we need
+     * to adjust the conflict_aggregate for DOM0 here the same way it
+     * is done for non-DOM0 domains in the pre-hook */
+    printkd("%s: adjusting security state for DOM0 (ssidref=%x, 
chwall_ssidref=%x).\n",
+            __func__, ssidref, chwall_ssidref);
+
+    /* chinese wall conflict set adjustment (so that other
+     *      other domains simultaneously created are evaluated against this 
new set)*/
+    for ( i = 0; i < chwall_bin_pol.max_conflictsets; i++ )
+    {
+        int common = 0;
+        /* check if conflict_set_i and ssidref have common types */
+        for ( j = 0; j < chwall_bin_pol.max_types; j++ )
+            if ( chwall_bin_pol.
+                 conflict_sets[i * chwall_bin_pol.max_types + j]
+                 && chwall_bin_pol.ssidrefs[chwall_ssidref *
+                                            chwall_bin_pol.max_types + j] )
+            {
+                common = 1;
+                break;
+            }
+
+        if ( common == 0 )
+        {
+            /* try next conflict set */
+            continue;
+        }
+
+        /* now add types of the conflict set to conflict_aggregate_set
+           (except types in chwall_ssidref) */
+        for ( j = 0; j < chwall_bin_pol.max_types; j++ )
+            if ( chwall_bin_pol.
+                 conflict_sets[i * chwall_bin_pol.max_types + j]
+                 && !chwall_bin_pol.ssidrefs[chwall_ssidref *
                                              chwall_bin_pol.max_types + j] )
                 chwall_bin_pol.conflict_aggregate_set[j]++;
     }
@@ -638,9 +655,15 @@ static void chwall_domain_destroy(void *
                 common = 1;
                 break;
             }
-        if (common == 0)
-            continue;           /* try next conflict set, this one does not 
include any type of chwall_ssidref */
-        /* now add types of the conflict set to conflict_aggregate_set (except 
types in chwall_ssidref) */
+        if ( common == 0 )
+        {
+            /* try next conflict set, this one does not include
+               any type of chwall_ssidref */
+            continue;
+        }
+
+        /* now add types of the conflict set to conflict_aggregate_set
+           (except types in chwall_ssidref) */
         for ( j = 0; j < chwall_bin_pol.max_types; j++ )
             if ( chwall_bin_pol.
                  conflict_sets[i * chwall_bin_pol.max_types + j]
diff -r 5b19839d0365 -r cd51fa91956b xen/acm/acm_policy.c
--- a/xen/acm/acm_policy.c      Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/acm/acm_policy.c      Sun Aug 12 14:50:02 2007 -0600
@@ -710,10 +710,10 @@ acm_change_policy(struct acm_change_poli
         goto acm_chg_policy_exit;
     }
 
-    if ( copy_from_guest(dels.array,
+    if ( copy_from_guest((u8 *)dels.array,
                          chgpolicy->del_array,
                          chgpolicy->delarray_size) ||
-         copy_from_guest(ssidmap.array,
+         copy_from_guest((u8 *)ssidmap.array,
                          chgpolicy->chg_array,
                          chgpolicy->chgarray_size) ||
          copy_from_guest(binpolicy,
@@ -844,7 +844,7 @@ acm_relabel_domains(struct acm_relabel_d
         memset(errors.array, 0x0, sizeof(uint32_t) * errors.num_items);
     }
 
-    if ( copy_from_guest(relabels.array,
+    if ( copy_from_guest((u8 *)relabels.array,
                          relabel->relabel_map,
                          relabel->relabel_map_size) )
     {
diff -r 5b19839d0365 -r cd51fa91956b xen/acm/acm_simple_type_enforcement_hooks.c
--- a/xen/acm/acm_simple_type_enforcement_hooks.c       Sun Aug 12 12:19:13 
2007 -0600
+++ b/xen/acm/acm_simple_type_enforcement_hooks.c       Sun Aug 12 14:50:02 
2007 -0600
@@ -408,7 +408,7 @@ _ste_update_policy(u8 *buf, u32 buf_size
         ste_bin_pol.max_ssidrefs = ste_buf->ste_max_ssidrefs;
         ste_bin_pol.ssidrefs = (domaintype_t *)ssidrefsbuf;
 
-        if ( ste_init_state(NULL) )
+        if ( ste_init_state(errors) )
         {
             /* new policy conflicts with sharing of running domains */
             printk("%s: New policy conflicts with running domains. "
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/powerpc/multiboot2.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/arch/powerpc/multiboot2.c     Sun Aug 12 14:50:02 2007 -0600
@@ -0,0 +1,67 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * Copyright IBM Corp. 2006, 2007
+ *
+ * Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
+ */
+
+#include <xen/config.h>
+#include <xen/lib.h>
+#include <xen/multiboot2.h>
+#include <asm/boot.h>
+#include <asm/init.h>
+
+static struct mb2_tag_module *mb2_tag_mod_find(struct mb2_tag_header *tags,
+                                                const char *type)
+{
+    struct mb2_tag_header *tag;
+
+    for_each_tag(tag, tags) {
+        if (tag->key == MB2_TAG_MODULE) {
+            struct mb2_tag_module *mod = (struct mb2_tag_module *)tag;
+            if (!strcmp((char *)mod->type, type))
+                return mod;
+        }
+    }
+    return NULL;
+}
+
+void parse_multiboot(ulong tags_addr)
+{
+    struct mb2_tag_header *tags = (struct mb2_tag_header *)tags_addr;
+    struct mb2_tag_module *mod;
+
+    if (tags->key != MB2_TAG_START)
+        return;
+
+    mod = mb2_tag_mod_find(tags, "kernel");
+    if (mod) {
+        xen_cmdline = (char *)mod->cmdline;
+    }
+
+    mod = mb2_tag_mod_find(tags, "dom0");
+    if (mod) {
+        dom0_addr = mod->addr;
+        dom0_len = mod->size;
+        dom0_cmdline = (char *)mod->cmdline;
+    }
+
+    mod = mb2_tag_mod_find(tags, "initrd");
+    if (mod) {
+        initrd_start = mod->addr;
+        initrd_len = mod->size;
+    }
+}
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/domain_build.c
--- a/xen/arch/x86/domain_build.c       Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/domain_build.c       Sun Aug 12 14:50:02 2007 -0600
@@ -316,9 +316,9 @@ int __init construct_dom0(
            parms.pae       ? ", PAE"  : "",
            elf_msb(&elf)   ? "msb"    : "lsb",
            elf.pstart, elf.pend);
-    if ( parms.bsd_symtab )
+    if ( elf.bsd_symtab_pstart )
         printk(" Dom0 symbol map 0x%" PRIx64 " -> 0x%" PRIx64 "\n",
-               elf.sstart, elf.send);
+               elf.bsd_symtab_pstart, elf.bsd_symtab_pend);
 
     if ( !compatible )
     {
@@ -388,7 +388,7 @@ int __init construct_dom0(
     v_start          = parms.virt_base;
     vkern_start      = parms.virt_kstart;
     vkern_end        = parms.virt_kend;
-    vinitrd_start    = round_pgup(parms.virt_end);
+    vinitrd_start    = round_pgup(vkern_end);
     vinitrd_end      = vinitrd_start + initrd_len;
     vphysmap_start   = round_pgup(vinitrd_end);
     vphysmap_end     = vphysmap_start + (nr_pages * (!is_pv_32on64_domain(d) ?
@@ -798,7 +798,7 @@ int __init construct_dom0(
 
     /* Copy the OS image and free temporary buffer. */
     elf.dest = (void*)vkern_start;
-    elf_xen_dom_load_binary(&elf, &parms);
+    elf_load_binary(&elf);
 
     if ( UNSET_ADDR != parms.virt_hypercall )
     {
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/genapic/Makefile
--- a/xen/arch/x86/genapic/Makefile     Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/genapic/Makefile     Sun Aug 12 14:50:02 2007 -0600
@@ -1,7 +1,5 @@ obj-y += bigsmp.o
 obj-y += bigsmp.o
 obj-y += default.o
 obj-y += delivery.o
-obj-y += es7000.o
-obj-y += es7000plat.o
 obj-y += probe.o
 obj-y += summit.o
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/genapic/bigsmp.c
--- a/xen/arch/x86/genapic/bigsmp.c     Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/genapic/bigsmp.c     Sun Aug 12 14:50:02 2007 -0600
@@ -13,7 +13,7 @@
 
 static int dmi_bigsmp; /* can be set by dmi scanners */
 
-static __init int hp_ht_bigsmp(struct dmi_system_id *d)
+static __init int force_bigsmp(struct dmi_system_id *d)
 {
        printk(KERN_NOTICE "%s detected: force use of apic=bigsmp\n", d->ident);
        dmi_bigsmp = 1;
@@ -22,15 +22,19 @@ static __init int hp_ht_bigsmp(struct dm
 
 
 static struct dmi_system_id __initdata bigsmp_dmi_table[] = {
-       { hp_ht_bigsmp, "HP ProLiant DL760 G2", {
+       { force_bigsmp, "HP ProLiant DL760 G2", {
                DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
                DMI_MATCH(DMI_BIOS_VERSION, "P44-"),
        }},
 
-       { hp_ht_bigsmp, "HP ProLiant DL740", {
+       { force_bigsmp, "HP ProLiant DL740", {
                DMI_MATCH(DMI_BIOS_VENDOR, "HP"),
                DMI_MATCH(DMI_BIOS_VERSION, "P47-"),
         }},
+       { force_bigsmp, "UNISYS ES7000-ONE", {
+               DMI_MATCH(DMI_PRODUCT_NAME, "ES7000-ONE")
+        }},
+       
         { }
 };
 
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/genapic/es7000.c
--- a/xen/arch/x86/genapic/es7000.c     Sun Aug 12 12:19:13 2007 -0600
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
- * APIC driver for the Unisys ES7000 chipset.
- */
-#include <xen/config.h>
-#include <xen/cpumask.h>
-#include <asm/current.h>
-#include <asm/mpspec.h>
-#include <asm/genapic.h>
-#include <asm/fixmap.h>
-#include <asm/apicdef.h>
-#include <asm/atomic.h>
-#include <xen/kernel.h>
-#include <xen/string.h>
-#include <xen/smp.h>
-#include <xen/init.h>
-#include <asm/mach-es7000/mach_mpparse.h>
-
-static __init int probe_es7000(void)
-{
-       /* probed later in mptable/ACPI hooks */
-       return 0;
-}
-
-struct genapic apic_es7000 = {
-       APIC_INIT("es7000", probe_es7000),
-       GENAPIC_PHYS
-};
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/genapic/es7000plat.c
--- a/xen/arch/x86/genapic/es7000plat.c Sun Aug 12 12:19:13 2007 -0600
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
- * Written by: Garry Forsgren, Unisys Corporation
- *             Natalie Protasevich, Unisys Corporation
- * Modified by: Raj Subrahmanian <raj.subrahmanian@xxxxxxxxxx> Unisys Corp.
- * This file contains the code to configure and interface
- * with Unisys ES7000 series hardware system manager.
- *
- * Copyright (c) 2003 Unisys Corporation.  All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of version 2 of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it would be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write the Free Software Foundation, Inc., 59
- * Temple Place - Suite 330, Boston MA 02111-1307, USA.
- *
- * Contact information: Unisys Corporation, Township Line & Union Meeting
- * Roads-A, Unisys Way, Blue Bell, Pennsylvania, 19424, or:
- *
- * http://www.unisys.com
- */
-
-#include <xen/config.h>
-#include <xen/types.h>
-#include <xen/kernel.h>
-#include <xen/smp.h>
-#include <xen/string.h>
-#include <xen/spinlock.h>
-#include <xen/errno.h>
-#include <xen/init.h>
-#include <xen/acpi.h>
-#include <asm/io.h>
-#include <asm/smp.h>
-#include <asm/apicdef.h>
-
-#define        MIP_REG                 1
-#define        MIP_PSAI_REG            4
-
-struct acpi_table_sdt {
-       unsigned long pa;
-       unsigned long count;
-       struct {
-               unsigned long pa;
-               enum acpi_table_id id;
-               unsigned long size;
-       }       entry[50];
-};
-
-struct oem_table {
-       struct acpi_table_header Header;
-       u32 OEMTableAddr;
-       u32 OEMTableSize;
-};
-
-int __init
-parse_unisys_oem(char *oemptr)
-{
-       int                     i;
-       int                     success = 0;
-       unsigned char           type, size;
-       char                    *tp = NULL;
-
-       tp = oemptr;
-
-       tp += 8;
-
-       for (i=0; i <= 6; i++) {
-               type = *tp++;
-               size = *tp++;
-               tp -= 2;
-               switch (type) {
-               case MIP_REG:
-               case MIP_PSAI_REG:
-                       success++;
-                       break;
-               default:
-                       break;
-               }
-               tp += size;
-       }
-
-       return (success >= 2);
-}
-
-int __init
-find_unisys_acpi_oem_table(unsigned long *oem_addr)
-{
-       struct acpi_table_rsdp          *rsdp = NULL;
-       unsigned long                   rsdp_phys = 0;
-       struct acpi_table_header        *header = NULL;
-       int                             i;
-       struct acpi_table_sdt           sdt = { 0 }; /* initialise sdt.count */
-
-       rsdp_phys = acpi_find_rsdp();
-       rsdp = __va(rsdp_phys);
-       if (rsdp->rsdt_address) {
-               struct acpi_table_rsdt  *mapped_rsdt = NULL;
-               sdt.pa = rsdp->rsdt_address;
-
-               header = (struct acpi_table_header *)
-                       __acpi_map_table(sdt.pa, sizeof(struct 
acpi_table_header));
-               if (!header)
-                       return -ENODEV;
-
-               sdt.count = (header->length - sizeof(struct acpi_table_header)) 
>> 3;
-               mapped_rsdt = (struct acpi_table_rsdt *)
-                       __acpi_map_table(sdt.pa, header->length);
-               if (!mapped_rsdt)
-                       return -ENODEV;
-
-               header = &mapped_rsdt->header;
-
-               for (i = 0; i < sdt.count; i++)
-                       sdt.entry[i].pa = (unsigned long) mapped_rsdt->entry[i];
-       };
-       for (i = 0; i < sdt.count; i++) {
-
-               header = (struct acpi_table_header *)
-                       __acpi_map_table(sdt.entry[i].pa,
-                               sizeof(struct acpi_table_header));
-               if (!header)
-                       continue;
-               if (!strncmp((char *) &header->signature, "OEM1", 4)) {
-                       if (!strncmp((char *) &header->oem_id, "UNISYS", 6)) {
-                               void *addr;
-                               struct oem_table *t;
-                               acpi_table_print(header, sdt.entry[i].pa);
-                               t = (struct oem_table *) 
__acpi_map_table(sdt.entry[i].pa, header->length);
-                               addr = (void *) 
__acpi_map_table(t->OEMTableAddr, t->OEMTableSize);
-                               *oem_addr = (unsigned long) addr;
-                               return 0;
-                       }
-               }
-       }
-       return -1;
-}
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/genapic/probe.c
--- a/xen/arch/x86/genapic/probe.c      Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/genapic/probe.c      Sun Aug 12 14:50:02 2007 -0600
@@ -16,7 +16,6 @@
 
 extern struct genapic apic_summit;
 extern struct genapic apic_bigsmp;
-extern struct genapic apic_es7000;
 extern struct genapic apic_default;
 
 struct genapic *genapic;
@@ -24,7 +23,6 @@ struct genapic *apic_probe[] __initdata 
 struct genapic *apic_probe[] __initdata = { 
        &apic_summit,
        &apic_bigsmp, 
-       &apic_es7000,
        &apic_default,  /* must be last */
        NULL,
 };
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/hvm/irq.c
--- a/xen/arch/x86/hvm/irq.c    Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/hvm/irq.c    Sun Aug 12 14:50:02 2007 -0600
@@ -395,9 +395,33 @@ static int irq_save_pci(struct domain *d
 static int irq_save_pci(struct domain *d, hvm_domain_context_t *h)
 {
     struct hvm_irq *hvm_irq = &d->arch.hvm_domain.irq;
+    unsigned int asserted, pdev, pintx;
+    int rc;
+
+    spin_lock(&d->arch.hvm_domain.irq_lock);
+
+    pdev  = hvm_irq->callback_via.pci.dev;
+    pintx = hvm_irq->callback_via.pci.intx;
+    asserted = (hvm_irq->callback_via_asserted &&
+                (hvm_irq->callback_via_type == HVMIRQ_callback_pci_intx));
+
+    /*
+     * Deassert virtual interrupt via PCI INTx line. The virtual interrupt
+     * status is not save/restored, so the INTx line must be deasserted in
+     * the restore context.
+     */
+    if ( asserted )
+        __hvm_pci_intx_deassert(d, pdev, pintx);
 
     /* Save PCI IRQ lines */
-    return ( hvm_save_entry(PCI_IRQ, 0, h, &hvm_irq->pci_intx) );
+    rc = hvm_save_entry(PCI_IRQ, 0, h, &hvm_irq->pci_intx);
+
+    if ( asserted )
+        __hvm_pci_intx_assert(d, pdev, pintx);    
+
+    spin_unlock(&d->arch.hvm_domain.irq_lock);
+
+    return rc;
 }
 
 static int irq_save_isa(struct domain *d, hvm_domain_context_t *h)
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c        Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/hvm/svm/svm.c        Sun Aug 12 14:50:02 2007 -0600
@@ -2159,6 +2159,7 @@ static void svm_do_msr_access(
         case MSR_K8_MC2_STATUS:
         case MSR_K8_MC3_STATUS:
         case MSR_K8_MC4_STATUS:
+        case MSR_K8_MC5_STATUS:
             /* No point in letting the guest see real MCEs */
             msr_content = 0;
             break;
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c        Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/hvm/vmx/vmx.c        Sun Aug 12 14:50:02 2007 -0600
@@ -2596,6 +2596,7 @@ static int vmx_do_msr_read(struct cpu_us
     case MSR_K8_MC2_STATUS:
     case MSR_K8_MC3_STATUS:
     case MSR_K8_MC4_STATUS:
+    case MSR_K8_MC5_STATUS:
         /* No point in letting the guest see real MCEs */
         msr_content = 0;
         break;
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/mm/hap/guest_walk.c
--- a/xen/arch/x86/mm/hap/guest_walk.c  Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/mm/hap/guest_walk.c  Sun Aug 12 14:50:02 2007 -0600
@@ -84,7 +84,7 @@ unsigned long hap_gva_to_gfn(GUEST_PAGIN
         mfn = get_mfn_from_gpfn(gpfn);
         if ( mfn == INVALID_MFN )
         {
-            HAP_PRINTK("bad pfn=0x%lx from gva=0x%lx at lev%d\n", gpfn, gva, 
+            HAP_PRINTK("bad pfn=0x%lx from gva=0x%lx at lev%d\n", gpfn, gva,
                        lev);
             success = 0;
             break;
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/mm/hap/hap.c
--- a/xen/arch/x86/mm/hap/hap.c Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/mm/hap/hap.c Sun Aug 12 14:50:02 2007 -0600
@@ -73,7 +73,7 @@ int hap_disable_log_dirty(struct domain 
     hap_unlock(d);
 
     /* set l1e entries of P2M table with normal mode */
-    p2m_set_flags_global(d, __PAGE_HYPERVISOR|_PAGE_USER);    
+    p2m_set_flags_global(d, __PAGE_HYPERVISOR|_PAGE_USER);
     return 0;
 }
 
@@ -111,7 +111,7 @@ static struct page_info *hap_alloc(struc
 
 static void hap_free(struct domain *d, mfn_t mfn)
 {
-    struct page_info *pg = mfn_to_page(mfn); 
+    struct page_info *pg = mfn_to_page(mfn);
 
     ASSERT(hap_locked_by_me(d));
 
@@ -128,7 +128,7 @@ static struct page_info *hap_alloc_p2m_p
 
 #if CONFIG_PAGING_LEVELS == 3
     /* Under PAE mode, top-level P2M table should be allocated below 4GB space
-     * because the size of h_cr3 is only 32-bit. We use alloc_domheap_pages to 
+     * because the size of h_cr3 is only 32-bit. We use alloc_domheap_pages to
      * force this requirement, and exchange the guaranteed 32-bit-clean
      * page for the one we just hap_alloc()ed. */
     if ( d->arch.paging.hap.p2m_pages == 0
@@ -166,9 +166,9 @@ void hap_free_p2m_page(struct domain *d,
         HAP_ERROR("Odd p2m page count c=%#x t=%"PRtype_info"\n",
                   pg->count_info, pg->u.inuse.type_info);
     pg->count_info = 0;
-    /* Free should not decrement domain's total allocation, since 
+    /* Free should not decrement domain's total allocation, since
      * these pages were allocated without an owner. */
-    page_set_owner(pg, NULL); 
+    page_set_owner(pg, NULL);
     free_domheap_page(pg);
     d->arch.paging.hap.p2m_pages--;
     ASSERT(d->arch.paging.hap.p2m_pages >= 0);
@@ -221,7 +221,7 @@ hap_set_allocation(struct domain *d, uns
             pg->count_info = 0;
             free_domheap_page(pg);
         }
-        
+
         /* Check to see if we need to yield and try again */
         if ( preempted && hypercall_preempt_check() )
         {
@@ -275,7 +275,7 @@ static void hap_install_xen_entries_in_l
 
     l2e = hap_map_domain_page(l2hmfn);
     ASSERT(l2e != NULL);
-    
+
     /* Copy the common Xen mappings from the idle domain */
     memcpy(&l2e[L2_PAGETABLE_FIRST_XEN_SLOT & (L2_PAGETABLE_ENTRIES-1)],
            &idle_pg_table_l2[L2_PAGETABLE_FIRST_XEN_SLOT],
@@ -318,7 +318,7 @@ static void hap_install_xen_entries_in_l
 
     l2e = hap_map_domain_page(l2mfn);
     ASSERT(l2e != NULL);
-    
+
     /* Copy the common Xen mappings from the idle domain */
     memcpy(&l2e[L2_PAGETABLE_FIRST_XEN_SLOT],
            &idle_pg_table[L2_PAGETABLE_FIRST_XEN_SLOT],
@@ -362,7 +362,7 @@ static mfn_t hap_make_monitor_table(stru
     }
 #elif CONFIG_PAGING_LEVELS == 3
     {
-        mfn_t m3mfn, m2mfn; 
+        mfn_t m3mfn, m2mfn;
         l3_pgentry_t *l3e;
         l2_pgentry_t *l2e;
         int i;
@@ -384,8 +384,8 @@ static mfn_t hap_make_monitor_table(stru
         l2e = hap_map_domain_page(m2mfn);
         for ( i = 0; i < L3_PAGETABLE_ENTRIES; i++ )
             l2e[l2_table_offset(LINEAR_PT_VIRT_START) + i] =
-                (l3e_get_flags(l3e[i]) & _PAGE_PRESENT) 
-                ? l2e_from_pfn(l3e_get_pfn(l3e[i]), __PAGE_HYPERVISOR) 
+                (l3e_get_flags(l3e[i]) & _PAGE_PRESENT)
+                ? l2e_from_pfn(l3e_get_pfn(l3e[i]), __PAGE_HYPERVISOR)
                 : l2e_empty();
         hap_unmap_domain_page(l2e);
         hap_unmap_domain_page(l3e);
@@ -536,7 +536,7 @@ void hap_teardown(struct domain *d)
                       d->arch.paging.hap.p2m_pages);
         ASSERT(d->arch.paging.hap.total_pages == 0);
     }
-    
+
     d->arch.paging.mode &= ~PG_log_dirty;
 
     hap_unlock(d);
@@ -555,7 +555,7 @@ int hap_domctl(struct domain *d, xen_dom
         hap_unlock(d);
         if ( preempted )
             /* Not finished.  Set up to re-run the call. */
-            rc = hypercall_create_continuation(__HYPERVISOR_domctl, "h", 
+            rc = hypercall_create_continuation(__HYPERVISOR_domctl, "h",
                                                u_domctl);
         else
             /* Finished.  Return the new allocation */
@@ -578,11 +578,11 @@ void hap_vcpu_init(struct vcpu *v)
 /************************************************/
 /*          HAP PAGING MODE FUNCTIONS           */
 /************************************************/
-/* 
+/*
  * HAP guests can handle page faults (in the guest page tables) without
  * needing any action from Xen, so we should not be intercepting them.
  */
-static int hap_page_fault(struct vcpu *v, unsigned long va, 
+static int hap_page_fault(struct vcpu *v, unsigned long va,
                           struct cpu_user_regs *regs)
 {
     HAP_ERROR("Intercepted a guest #PF (%u:%u) with HAP enabled.\n",
@@ -591,9 +591,9 @@ static int hap_page_fault(struct vcpu *v
     return 0;
 }
 
-/* 
+/*
  * HAP guests can handle invlpg without needing any action from Xen, so
- * should not be intercepting it. 
+ * should not be intercepting it.
  */
 static int hap_invlpg(struct vcpu *v, unsigned long va)
 {
@@ -649,7 +649,7 @@ static void hap_update_paging_modes(stru
 }
 
 #if CONFIG_PAGING_LEVELS == 3
-static void p2m_install_entry_in_monitors(struct domain *d, l3_pgentry_t *l3e) 
+static void p2m_install_entry_in_monitors(struct domain *d, l3_pgentry_t *l3e)
 /* Special case, only used for PAE hosts: update the mapping of the p2m
  * table.  This is trivial in other paging modes (one top-level entry
  * points to the top-level p2m, no maintenance needed), but PAE makes
@@ -660,13 +660,13 @@ static void p2m_install_entry_in_monitor
     l2_pgentry_t *ml2e;
     struct vcpu *v;
     unsigned int index;
-    
+
     index = ((unsigned long)l3e & ~PAGE_MASK) / sizeof(l3_pgentry_t);
     ASSERT(index < MACHPHYS_MBYTES>>1);
-    
+
     for_each_vcpu ( d, v )
     {
-        if ( pagetable_get_pfn(v->arch.monitor_table) == 0 ) 
+        if ( pagetable_get_pfn(v->arch.monitor_table) == 0 )
             continue;
 
         ASSERT(paging_mode_external(v->domain));
@@ -689,7 +689,7 @@ static void p2m_install_entry_in_monitor
 }
 #endif
 
-static void 
+static void
 hap_write_p2m_entry(struct vcpu *v, unsigned long gfn, l1_pgentry_t *p,
                     mfn_t table_mfn, l1_pgentry_t new, unsigned int level)
 {
@@ -698,12 +698,12 @@ hap_write_p2m_entry(struct vcpu *v, unsi
     safe_write_pte(p, new);
 #if CONFIG_PAGING_LEVELS == 3
     /* install P2M in monitor table for PAE Xen */
-    if ( level == 3 ) 
+    if ( level == 3 )
         /* We have written to the p2m l3: need to sync the per-vcpu
          * copies of it in the monitor tables */
         p2m_install_entry_in_monitors(v->domain, (l3_pgentry_t *)p);
 #endif
-    
+
     hap_unlock(v->domain);
 }
 
@@ -715,7 +715,7 @@ static unsigned long hap_gva_to_gfn_real
 
 /* Entry points into this mode of the hap code. */
 struct paging_mode hap_paging_real_mode = {
-    .page_fault             = hap_page_fault, 
+    .page_fault             = hap_page_fault,
     .invlpg                 = hap_invlpg,
     .gva_to_gfn             = hap_gva_to_gfn_real_mode,
     .update_cr3             = hap_update_cr3,
@@ -725,7 +725,7 @@ struct paging_mode hap_paging_real_mode 
 };
 
 struct paging_mode hap_paging_protected_mode = {
-    .page_fault             = hap_page_fault, 
+    .page_fault             = hap_page_fault,
     .invlpg                 = hap_invlpg,
     .gva_to_gfn             = hap_gva_to_gfn_2level,
     .update_cr3             = hap_update_cr3,
@@ -735,7 +735,7 @@ struct paging_mode hap_paging_protected_
 };
 
 struct paging_mode hap_paging_pae_mode = {
-    .page_fault             = hap_page_fault, 
+    .page_fault             = hap_page_fault,
     .invlpg                 = hap_invlpg,
     .gva_to_gfn             = hap_gva_to_gfn_3level,
     .update_cr3             = hap_update_cr3,
@@ -745,7 +745,7 @@ struct paging_mode hap_paging_pae_mode =
 };
 
 struct paging_mode hap_paging_long_mode = {
-    .page_fault             = hap_page_fault, 
+    .page_fault             = hap_page_fault,
     .invlpg                 = hap_invlpg,
     .gva_to_gfn             = hap_gva_to_gfn_4level,
     .update_cr3             = hap_update_cr3,
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/mm/p2m.c
--- a/xen/arch/x86/mm/p2m.c     Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/mm/p2m.c     Sun Aug 12 14:50:02 2007 -0600
@@ -2,12 +2,12 @@
  * arch/x86/mm/p2m.c
  *
  * physical-to-machine mappings for automatically-translated domains.
- * 
+ *
  * Parts of this code are Copyright (c) 2007 by Advanced Micro Devices.
  * Parts of this code are Copyright (c) 2006 by XenSource Inc.
  * Parts of this code are Copyright (c) 2006 by Michael A Fetterman
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -34,7 +34,7 @@
 
 /*
  * The P2M lock.  This protects all updates to the p2m table.
- * Updates are expected to be safe against concurrent reads, 
+ * Updates are expected to be safe against concurrent reads,
  * which do *not* require the lock.
  *
  * Locking discipline: always acquire this lock before the shadow or HAP one
@@ -80,7 +80,7 @@
 #define P2M_DEBUG(_f, _a...)                                 \
     debugtrace_printk("p2mdebug: %s(): " _f, __func__, ##_a)
 #else
-#define P2M_DEBUG(_f, _a...) do { (void)(_f); } while(0) 
+#define P2M_DEBUG(_f, _a...) do { (void)(_f); } while(0)
 #endif
 
 
@@ -119,8 +119,8 @@ p2m_find_entry(void *table, unsigned lon
 // Returns 0 on error.
 //
 static int
-p2m_next_level(struct domain *d, mfn_t *table_mfn, void **table, 
-               unsigned long *gfn_remainder, unsigned long gfn, u32 shift, 
+p2m_next_level(struct domain *d, mfn_t *table_mfn, void **table,
+               unsigned long *gfn_remainder, unsigned long gfn, u32 shift,
                u32 max, unsigned long type)
 {
     l1_pgentry_t *p2m_entry;
@@ -146,7 +146,7 @@ p2m_next_level(struct domain *d, mfn_t *
 
         switch ( type ) {
         case PGT_l3_page_table:
-            paging_write_p2m_entry(d, gfn, 
+            paging_write_p2m_entry(d, gfn,
                                    p2m_entry, *table_mfn, new_entry, 4);
             break;
         case PGT_l2_page_table:
@@ -154,11 +154,11 @@ p2m_next_level(struct domain *d, mfn_t *
             /* for PAE mode, PDPE only has PCD/PWT/P bits available */
             new_entry = l1e_from_pfn(mfn_x(page_to_mfn(pg)), _PAGE_PRESENT);
 #endif
-            paging_write_p2m_entry(d, gfn, 
+            paging_write_p2m_entry(d, gfn,
                                    p2m_entry, *table_mfn, new_entry, 3);
             break;
         case PGT_l1_page_table:
-            paging_write_p2m_entry(d, gfn, 
+            paging_write_p2m_entry(d, gfn,
                                    p2m_entry, *table_mfn, new_entry, 2);
             break;
         default:
@@ -216,7 +216,7 @@ set_p2m_entry(struct domain *d, unsigned
     ASSERT(p2m_entry);
 
     /* Track the highest gfn for which we have ever had a valid mapping */
-    if ( mfn_valid(mfn) && (gfn > d->arch.p2m.max_mapped_pfn) ) 
+    if ( mfn_valid(mfn) && (gfn > d->arch.p2m.max_mapped_pfn) )
         d->arch.p2m.max_mapped_pfn = gfn;
 
     if ( mfn_valid(mfn) )
@@ -229,7 +229,7 @@ set_p2m_entry(struct domain *d, unsigned
 
     /* Success */
     rv = 1;
- 
+
  out:
     unmap_domain_page(table);
     return rv;
@@ -250,7 +250,7 @@ void p2m_init(struct domain *d)
 // controlled by CONFIG_PAGING_LEVELS).
 //
 // The alloc_page and free_page functions will be used to get memory to
-// build the p2m, and to release it again at the end of day. 
+// build the p2m, and to release it again at the end of day.
 //
 // Returns 0 for success or -errno.
 //
@@ -264,7 +264,7 @@ int p2m_alloc_table(struct domain *d,
     struct page_info *page, *p2m_top;
     unsigned int page_count = 0;
     unsigned long gfn;
-    
+
     p2m_lock(d);
 
     if ( pagetable_get_pfn(d->arch.phys_table) != 0 )
@@ -288,7 +288,7 @@ int p2m_alloc_table(struct domain *d,
     list_add_tail(&p2m_top->list, &d->arch.p2m.pages);
 
     p2m_top->count_info = 1;
-    p2m_top->u.inuse.type_info = 
+    p2m_top->u.inuse.type_info =
 #if CONFIG_PAGING_LEVELS == 4
         PGT_l4_page_table
 #elif CONFIG_PAGING_LEVELS == 3
@@ -301,7 +301,7 @@ int p2m_alloc_table(struct domain *d,
     d->arch.phys_table = pagetable_from_mfn(page_to_mfn(p2m_top));
 
     P2M_PRINTK("populating p2m table\n");
- 
+
     /* Initialise physmap tables for slot zero. Other code assumes this. */
     gfn = 0;
     mfn = _mfn(INVALID_MFN);
@@ -365,17 +365,17 @@ gfn_to_mfn_foreign(struct domain *d, uns
     paddr_t addr = ((paddr_t)gpfn) << PAGE_SHIFT;
     l2_pgentry_t *l2e;
     l1_pgentry_t *l1e;
-    
+
     ASSERT(paging_mode_translate(d));
     mfn = pagetable_get_mfn(d->arch.phys_table);
 
 
-    if ( gpfn > d->arch.p2m.max_mapped_pfn ) 
+    if ( gpfn > d->arch.p2m.max_mapped_pfn )
         /* This pfn is higher than the highest the p2m map currently holds */
         return _mfn(INVALID_MFN);
 
 #if CONFIG_PAGING_LEVELS >= 4
-    { 
+    {
         l4_pgentry_t *l4e = map_domain_page(mfn_x(mfn));
         l4e += l4_table_offset(addr);
         if ( (l4e_get_flags(*l4e) & _PAGE_PRESENT) == 0 )
@@ -398,7 +398,7 @@ gfn_to_mfn_foreign(struct domain *d, uns
          * the bounds of the p2m. */
         l3e += (addr >> L3_PAGETABLE_SHIFT);
 #else
-        l3e += l3_table_offset(addr);        
+        l3e += l3_table_offset(addr);
 #endif
         if ( (l3e_get_flags(*l3e) & _PAGE_PRESENT) == 0 )
         {
@@ -443,18 +443,18 @@ static void audit_p2m(struct domain *d)
     mfn_t p2mfn;
     unsigned long orphans_d = 0, orphans_i = 0, mpbad = 0, pmbad = 0;
     int test_linear;
-    
+
     if ( !paging_mode_translate(d) )
         return;
 
     //P2M_PRINTK("p2m audit starts\n");
 
-    test_linear = ( (d == current->domain) 
+    test_linear = ( (d == current->domain)
                     && !pagetable_is_null(current->arch.monitor_table) );
     if ( test_linear )
-        local_flush_tlb(); 
-
-    /* Audit part one: walk the domain's page allocation list, checking 
+        local_flush_tlb();
+
+    /* Audit part one: walk the domain's page allocation list, checking
      * the m2p entries. */
     for ( entry = d->page_list.next;
           entry != &d->page_list;
@@ -463,11 +463,11 @@ static void audit_p2m(struct domain *d)
         page = list_entry(entry, struct page_info, list);
         mfn = mfn_x(page_to_mfn(page));
 
-        // P2M_PRINTK("auditing guest page, mfn=%#lx\n", mfn); 
+        // P2M_PRINTK("auditing guest page, mfn=%#lx\n", mfn);
 
         od = page_get_owner(page);
 
-        if ( od != d ) 
+        if ( od != d )
         {
             P2M_PRINTK("wrong owner %#lx -> %p(%u) != %p(%u)\n",
                        mfn, od, (od?od->domain_id:-1), d, d->domain_id);
@@ -475,19 +475,19 @@ static void audit_p2m(struct domain *d)
         }
 
         gfn = get_gpfn_from_mfn(mfn);
-        if ( gfn == INVALID_M2P_ENTRY ) 
+        if ( gfn == INVALID_M2P_ENTRY )
         {
             orphans_i++;
             //P2M_PRINTK("orphaned guest page: mfn=%#lx has invalid gfn\n",
-            //               mfn); 
+            //               mfn);
             continue;
         }
 
-        if ( gfn == 0x55555555 ) 
+        if ( gfn == 0x55555555 )
         {
             orphans_d++;
-            //P2M_PRINTK("orphaned guest page: mfn=%#lx has debug gfn\n", 
-            //               mfn); 
+            //P2M_PRINTK("orphaned guest page: mfn=%#lx has debug gfn\n",
+            //               mfn);
             continue;
         }
 
@@ -503,7 +503,7 @@ static void audit_p2m(struct domain *d)
                         : -1u));
             /* This m2p entry is stale: the domain has another frame in
              * this physical slot.  No great disaster, but for neatness,
-             * blow away the m2p entry. */ 
+             * blow away the m2p entry. */
             set_gpfn_from_mfn(mfn, INVALID_M2P_ENTRY, 
__PAGE_HYPERVISOR|_PAGE_USER);
         }
 
@@ -517,9 +517,9 @@ static void audit_p2m(struct domain *d)
             }
         }
 
-        // P2M_PRINTK("OK: mfn=%#lx, gfn=%#lx, p2mfn=%#lx, lp2mfn=%#lx\n", 
-        //                mfn, gfn, p2mfn, lp2mfn); 
-    }   
+        // P2M_PRINTK("OK: mfn=%#lx, gfn=%#lx, p2mfn=%#lx, lp2mfn=%#lx\n",
+        //                mfn, gfn, p2mfn, lp2mfn);
+    }
 
     /* Audit part two: walk the domain's p2m table, checking the entries. */
     if ( pagetable_get_pfn(d->arch.phys_table) != 0 )
@@ -527,7 +527,7 @@ static void audit_p2m(struct domain *d)
         l2_pgentry_t *l2e;
         l1_pgentry_t *l1e;
         int i1, i2;
-        
+
 #if CONFIG_PAGING_LEVELS == 4
         l4_pgentry_t *l4e;
         l3_pgentry_t *l3e;
@@ -553,8 +553,8 @@ static void audit_p2m(struct domain *d)
             }
             l3e = map_domain_page(mfn_x(_mfn(l4e_get_pfn(l4e[i4]))));
 #endif /* now at levels 3 or 4... */
-            for ( i3 = 0; 
-                  i3 < ((CONFIG_PAGING_LEVELS==4) ? L3_PAGETABLE_ENTRIES : 8); 
+            for ( i3 = 0;
+                  i3 < ((CONFIG_PAGING_LEVELS==4) ? L3_PAGETABLE_ENTRIES : 8);
                   i3++ )
             {
                 if ( !(l3e_get_flags(l3e[i3]) & _PAGE_PRESENT) )
@@ -572,7 +572,7 @@ static void audit_p2m(struct domain *d)
                         continue;
                     }
                     l1e = map_domain_page(mfn_x(_mfn(l2e_get_pfn(l2e[i2]))));
-                    
+
                     for ( i1 = 0; i1 < L1_PAGETABLE_ENTRIES; i1++, gfn++ )
                     {
                         if ( !(l1e_get_flags(l1e[i1]) & _PAGE_PRESENT) )
@@ -610,14 +610,14 @@ static void audit_p2m(struct domain *d)
     }
 
     //P2M_PRINTK("p2m audit complete\n");
-    //if ( orphans_i | orphans_d | mpbad | pmbad ) 
+    //if ( orphans_i | orphans_d | mpbad | pmbad )
     //    P2M_PRINTK("p2m audit found %lu orphans (%lu inval %lu debug)\n",
     //                   orphans_i + orphans_d, orphans_i, orphans_d,
-    if ( mpbad | pmbad ) 
+    if ( mpbad | pmbad )
         P2M_PRINTK("p2m audit found %lu odd p2m, %lu bad m2p entries\n",
                    pmbad, mpbad);
 }
-#else 
+#else
 #define audit_p2m(_d) do { (void)(_d); } while(0)
 #endif /* P2M_AUDIT */
 
@@ -645,7 +645,7 @@ guest_physmap_remove_page(struct domain 
     audit_p2m(d);
     p2m_remove_page(d, gfn, mfn);
     audit_p2m(d);
-    p2m_unlock(d);    
+    p2m_unlock(d);
 }
 
 void
@@ -683,11 +683,11 @@ guest_physmap_add_page(struct domain *d,
         /* This machine frame is already mapped at another physical address */
         P2M_DEBUG("aliased! mfn=%#lx, old gfn=%#lx, new gfn=%#lx\n",
                   mfn, ogfn, gfn);
-        if ( mfn_valid(omfn = gfn_to_mfn(d, ogfn)) ) 
-        {
-            P2M_DEBUG("old gfn=%#lx -> mfn %#lx\n", 
+        if ( mfn_valid(omfn = gfn_to_mfn(d, ogfn)) )
+        {
+            P2M_DEBUG("old gfn=%#lx -> mfn %#lx\n",
                       ogfn , mfn_x(omfn));
-            if ( mfn_x(omfn) == mfn ) 
+            if ( mfn_x(omfn) == mfn )
                 p2m_remove_page(d, ogfn, mfn);
         }
     }
@@ -720,15 +720,15 @@ void p2m_set_flags_global(struct domain 
     int i4;
 #endif /* CONFIG_PAGING_LEVELS == 4 */
 #endif /* CONFIG_PAGING_LEVELS >= 3 */
-    
+
     if ( !paging_mode_translate(d) )
         return;
- 
+
     if ( pagetable_get_pfn(d->arch.phys_table) == 0 )
         return;
 
     p2m_lock(d);
-        
+
 #if CONFIG_PAGING_LEVELS == 4
     l4e = map_domain_page(mfn_x(pagetable_get_mfn(d->arch.phys_table)));
 #elif CONFIG_PAGING_LEVELS == 3
@@ -739,52 +739,52 @@ void p2m_set_flags_global(struct domain 
 
 #if CONFIG_PAGING_LEVELS >= 3
 #if CONFIG_PAGING_LEVELS >= 4
-    for ( i4 = 0; i4 < L4_PAGETABLE_ENTRIES; i4++ ) 
-    {
-       if ( !(l4e_get_flags(l4e[i4]) & _PAGE_PRESENT) )
-       {
-           continue;
-       }
-       l3e = map_domain_page(l4e_get_pfn(l4e[i4]));
+    for ( i4 = 0; i4 < L4_PAGETABLE_ENTRIES; i4++ )
+    {
+        if ( !(l4e_get_flags(l4e[i4]) & _PAGE_PRESENT) )
+        {
+            continue;
+        }
+        l3e = map_domain_page(l4e_get_pfn(l4e[i4]));
 #endif /* now at levels 3 or 4... */
-       for ( i3 = 0; 
-             i3 < ((CONFIG_PAGING_LEVELS==4) ? L3_PAGETABLE_ENTRIES : 8); 
-             i3++ )
-       {
-           if ( !(l3e_get_flags(l3e[i3]) & _PAGE_PRESENT) )
-           {
-               continue;
-           }
-           l2e = map_domain_page(l3e_get_pfn(l3e[i3]));
+        for ( i3 = 0;
+              i3 < ((CONFIG_PAGING_LEVELS==4) ? L3_PAGETABLE_ENTRIES : 8);
+              i3++ )
+        {
+            if ( !(l3e_get_flags(l3e[i3]) & _PAGE_PRESENT) )
+            {
+                continue;
+            }
+            l2e = map_domain_page(l3e_get_pfn(l3e[i3]));
 #endif /* all levels... */
-           for ( i2 = 0; i2 < L2_PAGETABLE_ENTRIES; i2++ )
-           {
-               if ( !(l2e_get_flags(l2e[i2]) & _PAGE_PRESENT) )
-               {
-                   continue;
-               }
+            for ( i2 = 0; i2 < L2_PAGETABLE_ENTRIES; i2++ )
+            {
+                if ( !(l2e_get_flags(l2e[i2]) & _PAGE_PRESENT) )
+                {
+                    continue;
+                }
 
                 l1mfn = _mfn(l2e_get_pfn(l2e[i2]));
-               l1e = map_domain_page(mfn_x(l1mfn));
-               
-               for ( i1 = 0; i1 < L1_PAGETABLE_ENTRIES; i1++, gfn++ )
-               {
-                   if ( !(l1e_get_flags(l1e[i1]) & _PAGE_PRESENT) )
-                       continue;
-                   mfn = l1e_get_pfn(l1e[i1]);
-                   gfn = get_gpfn_from_mfn(mfn);
-                   /* create a new 1le entry using l1e_flags */
-                   l1e_content = l1e_from_pfn(mfn, l1e_flags);
-                   paging_write_p2m_entry(d, gfn, &l1e[i1], 
+                l1e = map_domain_page(mfn_x(l1mfn));
+
+                for ( i1 = 0; i1 < L1_PAGETABLE_ENTRIES; i1++, gfn++ )
+                {
+                    if ( !(l1e_get_flags(l1e[i1]) & _PAGE_PRESENT) )
+                        continue;
+                    mfn = l1e_get_pfn(l1e[i1]);
+                    gfn = get_gpfn_from_mfn(mfn);
+                    /* create a new 1le entry using l1e_flags */
+                    l1e_content = l1e_from_pfn(mfn, l1e_flags);
+                    paging_write_p2m_entry(d, gfn, &l1e[i1],
                                            l1mfn, l1e_content, 1);
-               }
-               unmap_domain_page(l1e);
-           }
+                }
+                unmap_domain_page(l1e);
+            }
 #if CONFIG_PAGING_LEVELS >= 3
-           unmap_domain_page(l2e);
-       }
+            unmap_domain_page(l2e);
+        }
 #if CONFIG_PAGING_LEVELS >= 4
-       unmap_domain_page(l3e);
+        unmap_domain_page(l3e);
     }
 #endif
 #endif
@@ -814,7 +814,7 @@ int p2m_set_flags(struct domain *d, padd
     mfn = gfn_to_mfn(d, gfn);
     if ( mfn_valid(mfn) )
         set_p2m_entry(d, gfn, mfn, l1e_flags);
-    
+
     p2m_unlock(d);
 
     return 1;
diff -r 5b19839d0365 -r cd51fa91956b xen/arch/x86/mm/paging.c
--- a/xen/arch/x86/mm/paging.c  Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/arch/x86/mm/paging.c  Sun Aug 12 14:50:02 2007 -0600
@@ -54,10 +54,10 @@ boolean_param("hap", opt_hap_enabled);
 #define page_to_mfn(_pg) (_mfn((_pg) - frame_table))
 
 /* The log-dirty lock.  This protects the log-dirty bitmap from
- * concurrent accesses (and teardowns, etc). 
- * 
+ * concurrent accesses (and teardowns, etc).
+ *
  * Locking discipline: always acquire shadow or HAP lock before this one.
- * 
+ *
  * Because mark_dirty is called from a lot of places, the log-dirty lock
  * may be acquired with the shadow or HAP locks already held.  When the
  * log-dirty code makes callbacks into HAP or shadow code to reset
@@ -105,7 +105,7 @@ int paging_alloc_log_dirty_bitmap(struct
 
     d->arch.paging.log_dirty.bitmap_size =
         (domain_get_maximum_gpfn(d) + BITS_PER_LONG) & ~(BITS_PER_LONG - 1);
-    d->arch.paging.log_dirty.bitmap = 
+    d->arch.paging.log_dirty.bitmap =
         xmalloc_array(unsigned long,
                       d->arch.paging.log_dirty.bitmap_size / BITS_PER_LONG);
     if ( d->arch.paging.log_dirty.bitmap == NULL )
@@ -152,8 +152,8 @@ int paging_log_dirty_enable(struct domai
 
     log_dirty_unlock(d);
 
-    /* Safe because the domain is paused. */    
-    ret = d->arch.paging.log_dirty.enable_log_dirty(d);    
+    /* Safe because the domain is paused. */
+    ret = d->arch.paging.log_dirty.enable_log_dirty(d);
 
     /* Possibility of leaving the bitmap allocated here but it'll be
      * tidied on domain teardown. */
@@ -202,7 +202,7 @@ void paging_mark_dirty(struct domain *d,
     pfn = get_gpfn_from_mfn(mfn_x(gmfn));
 
     /*
-     * Values with the MSB set denote MFNs that aren't really part of the 
+     * Values with the MSB set denote MFNs that aren't really part of the
      * domain's pseudo-physical memory map (e.g., the shared info frame).
      * Nothing to do here...
      */
@@ -212,11 +212,11 @@ void paging_mark_dirty(struct domain *d,
         return;
     }
 
-    if ( likely(pfn < d->arch.paging.log_dirty.bitmap_size) ) 
-    { 
+    if ( likely(pfn < d->arch.paging.log_dirty.bitmap_size) )
+    {
         if ( !__test_and_set_bit(pfn, d->arch.paging.log_dirty.bitmap) )
         {
-            PAGING_DEBUG(LOGDIRTY, 
+            PAGING_DEBUG(LOGDIRTY,
                          "marked mfn %" PRI_mfn " (pfn=%lx), dom %d\n",
                          mfn_x(gmfn), pfn, d->domain_id);
             d->arch.paging.log_dirty.dirty_count++;
@@ -227,21 +227,21 @@ void paging_mark_dirty(struct domain *d,
         PAGING_PRINTK("mark_dirty OOR! "
                       "mfn=%" PRI_mfn " pfn=%lx max=%x (dom %d)\n"
                       "owner=%d c=%08x t=%" PRtype_info "\n",
-                      mfn_x(gmfn), 
-                      pfn, 
+                      mfn_x(gmfn),
+                      pfn,
                       d->arch.paging.log_dirty.bitmap_size,
                       d->domain_id,
                       (page_get_owner(mfn_to_page(gmfn))
                        ? page_get_owner(mfn_to_page(gmfn))->domain_id
                        : -1),
-                      mfn_to_page(gmfn)->count_info, 
+                      mfn_to_page(gmfn)->count_info,
                       mfn_to_page(gmfn)->u.inuse.type_info);
     }
-    
-    log_dirty_unlock(d);
-}
-
-/* Read a domain's log-dirty bitmap and stats.  If the operation is a CLEAN, 
+
+    log_dirty_unlock(d);
+}
+
+/* Read a domain's log-dirty bitmap and stats.  If the operation is a CLEAN,
  * clear the bitmap and stats as well. */
 int paging_log_dirty_op(struct domain *d, struct xen_domctl_shadow_op *sc)
 {
@@ -252,15 +252,15 @@ int paging_log_dirty_op(struct domain *d
 
     clean = (sc->op == XEN_DOMCTL_SHADOW_OP_CLEAN);
 
-    PAGING_DEBUG(LOGDIRTY, "log-dirty %s: dom %u faults=%u dirty=%u\n", 
+    PAGING_DEBUG(LOGDIRTY, "log-dirty %s: dom %u faults=%u dirty=%u\n",
                  (clean) ? "clean" : "peek",
                  d->domain_id,
-                 d->arch.paging.log_dirty.fault_count, 
+                 d->arch.paging.log_dirty.fault_count,
                  d->arch.paging.log_dirty.dirty_count);
 
     sc->stats.fault_count = d->arch.paging.log_dirty.fault_count;
     sc->stats.dirty_count = d->arch.paging.log_dirty.dirty_count;
-    
+
     if ( clean )
     {
         d->arch.paging.log_dirty.fault_count = 0;
@@ -276,7 +276,7 @@ int paging_log_dirty_op(struct domain *d
         rv = -EINVAL; /* perhaps should be ENOMEM? */
         goto out;
     }
- 
+
     if ( sc->pages > d->arch.paging.log_dirty.bitmap_size )
         sc->pages = d->arch.paging.log_dirty.bitmap_size;
 
@@ -322,11 +322,11 @@ int paging_log_dirty_op(struct domain *d
 
 
 /* Note that this function takes three function pointers. Callers must supply
- * these functions for log dirty code to call. This function usually is 
- * invoked when paging is enabled. Check shadow_enable() and hap_enable() for 
+ * these functions for log dirty code to call. This function usually is
+ * invoked when paging is enabled. Check shadow_enable() and hap_enable() for
  * reference.
  *
- * These function pointers must not be followed with the log-dirty lock held. 
+ * These function pointers must not be followed with the log-dirty lock held.
  */
 void paging_log_dirty_init(struct domain *d,
                            int    (*enable_log_dirty)(struct domain *d),
@@ -335,7 +335,7 @@ void paging_log_dirty_init(struct domain
 {
     /* We initialize log dirty lock first */
     log_dirty_lock_init(d);
-    
+
     d->arch.paging.log_dirty.enable_log_dirty = enable_log_dirty;
     d->arch.paging.log_dirty.disable_log_dirty = disable_log_dirty;
     d->arch.paging.log_dirty.clean_dirty_bitmap = clean_dirty_bitmap;
@@ -387,7 +387,7 @@ int paging_domctl(struct domain *d, xen_
                  d->domain_id);
         return -EINVAL;
     }
-    
+
     if ( unlikely(d->is_dying) )
     {
         gdprintk(XENLOG_INFO, "Ignoring paging op on dying domain %u\n",
@@ -401,38 +401,38 @@ int paging_domctl(struct domain *d, xen_
                      d->domain_id);
         return -EINVAL;
     }
-    
+
     /* Code to handle log-dirty. Note that some log dirty operations
-     * piggy-back on shadow operations. For example, when 
+     * piggy-back on shadow operations. For example, when
      * XEN_DOMCTL_SHADOW_OP_OFF is called, it first checks whether log dirty
-     * mode is enabled. If does, we disables log dirty and continues with 
-     * shadow code. For this reason, we need to further dispatch domctl 
+     * mode is enabled. If does, we disables log dirty and continues with
+     * shadow code. For this reason, we need to further dispatch domctl
      * to next-level paging code (shadow or hap).
      */
     switch ( sc->op )
     {
     case XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY:
-        return paging_log_dirty_enable(d);     
-       
-    case XEN_DOMCTL_SHADOW_OP_ENABLE:  
+        return paging_log_dirty_enable(d);
+
+    case XEN_DOMCTL_SHADOW_OP_ENABLE:
         if ( sc->mode & XEN_DOMCTL_SHADOW_ENABLE_LOG_DIRTY )
             return paging_log_dirty_enable(d);
 
     case XEN_DOMCTL_SHADOW_OP_OFF:
         if ( paging_mode_log_dirty(d) )
-            if ( (rc = paging_log_dirty_disable(d)) != 0 ) 
+            if ( (rc = paging_log_dirty_disable(d)) != 0 )
                 return rc;
 
     case XEN_DOMCTL_SHADOW_OP_CLEAN:
     case XEN_DOMCTL_SHADOW_OP_PEEK:
-       return paging_log_dirty_op(d, sc);
-    }
-       
+        return paging_log_dirty_op(d, sc);
+    }
+
     /* Here, dispatch domctl to the appropriate paging code */
     if ( opt_hap_enabled && is_hvm_domain(d) )
-       return hap_domctl(d, sc, u_domctl);
-    else
-       return shadow_domctl(d, sc, u_domctl);
+        return hap_domctl(d, sc, u_domctl);
+    else
+        return shadow_domctl(d, sc, u_domctl);
 }
 
 /* Call when destroying a domain */
@@ -492,7 +492,7 @@ void paging_dump_vcpu_info(struct vcpu *
 {
     if ( paging_mode_enabled(v->domain) )
     {
-        printk("    paging assistance: ");        
+        printk("    paging assistance: ");
         if ( paging_mode_shadow(v->domain) )
         {
             if ( v->arch.paging.mode )
@@ -504,7 +504,7 @@ void paging_dump_vcpu_info(struct vcpu *
                 printk("not shadowed\n");
         }
         else if ( paging_mode_hap(v->domain) && v->arch.paging.mode )
-            printk("hap, %u levels\n", 
+            printk("hap, %u levels\n",
                    v->arch.paging.mode->guest_levels);
         else
             printk("none\n");
diff -r 5b19839d0365 -r cd51fa91956b xen/common/compat/grant_table.c
--- a/xen/common/compat/grant_table.c   Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/common/compat/grant_table.c   Sun Aug 12 14:50:02 2007 -0600
@@ -161,7 +161,7 @@ int compat_grant_table_op(unsigned int c
                 while ( n-- )
                 {
                     guest_handle_add_offset(xfer, -1);
-                    if ( __copy_field_to_guest(xfer, nat.xfer, status) )
+                    if ( __copy_field_to_guest(xfer, nat.xfer + n, status) )
                         rc = -EFAULT;
                 }
             }
@@ -199,7 +199,7 @@ int compat_grant_table_op(unsigned int c
                 while ( n-- )
                 {
                     guest_handle_add_offset(copy, -1);
-                    if ( __copy_field_to_guest(copy, nat.copy, status) )
+                    if ( __copy_field_to_guest(copy, nat.copy + n, status) )
                         rc = -EFAULT;
                 }
             }
diff -r 5b19839d0365 -r cd51fa91956b xen/common/libelf/libelf-dominfo.c
--- a/xen/common/libelf/libelf-dominfo.c        Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/common/libelf/libelf-dominfo.c        Sun Aug 12 14:50:02 2007 -0600
@@ -333,99 +333,6 @@ static int elf_xen_note_check(struct elf
     return 0;
 }
 
-
-static void elf_xen_loadsymtab(struct elf_binary *elf,
-                               struct elf_dom_parms *parms)
-{
-    unsigned long maxva, len;
-
-    if ( !parms->bsd_symtab )
-        return;
-
-    /* Calculate the required additional kernel space for the elf image */
-
-    /* The absolute base address of the elf image */
-    maxva = elf_round_up(elf, parms->virt_kend);
-    maxva += sizeof(long); /* Space to store the size of the elf image */
-    /* Space for the elf and elf section headers */
-    maxva += (elf_uval(elf, elf->ehdr, e_ehsize) +
-              elf_shdr_count(elf) * elf_uval(elf, elf->ehdr, e_shentsize));
-    maxva = elf_round_up(elf, maxva);
-
-    /* Space for the symbol and string tabs */
-    len = (unsigned long)elf->send - (unsigned long)elf->sstart;
-    maxva = elf_round_up(elf, maxva + len);
-
-    /* The address the kernel must expanded to */
-    parms->virt_end = maxva;
-}
-
-int elf_xen_dom_load_binary(struct elf_binary *elf,
-                            struct elf_dom_parms *parms)
-{
-    elf_ehdr *sym_ehdr;
-    unsigned long shdr, symtab_addr;
-    unsigned long maxva, symbase;
-    uint8_t i;
-    char *p;
-
-    elf_load_binary(elf);
-
-    if ( !parms->bsd_symtab )
-        return 0;
-
-#define elf_hdr_elm(_elf, _hdr, _elm, _val)     \
-do {                                            \
-    if ( elf_64bit(_elf) )                      \
-        (_hdr)->e64._elm = _val;                \
-    else                                        \
-        (_hdr)->e32._elm = _val;                \
-} while ( 0 )
-
-    /* ehdr right after the kernel image (4 byte aligned) */
-    symbase = elf_round_up(elf, parms->virt_kend);
-    symtab_addr = maxva = symbase + sizeof(long);
-
-    /* Set up Elf header. */
-    sym_ehdr = (elf_ehdr *)symtab_addr;
-    maxva = elf_copy_ehdr(elf, sym_ehdr);
-
-    elf_hdr_elm(elf, sym_ehdr, e_phoff, 0);
-    elf_hdr_elm(elf, sym_ehdr, e_shoff, elf_uval(elf, elf->ehdr, e_ehsize));
-    elf_hdr_elm(elf, sym_ehdr, e_phentsize, 0);
-    elf_hdr_elm(elf, sym_ehdr, e_phnum, 0);
-
-    /* Copy Elf section headers. */
-    shdr = maxva;
-    maxva = elf_copy_shdr(elf, (elf_shdr *)shdr);
-
-    for ( i = 0; i < elf_shdr_count(elf); i++ )
-    {
-        uint8_t type;
-        unsigned long tmp;
-        type = elf_uval(elf, (elf_shdr *)shdr, sh_type);
-        if ( (type == SHT_STRTAB) || (type == SHT_SYMTAB) )
-        {
-             elf_msg(elf, "%s: shdr %i at 0x%p -> 0x%p\n", __func__, i,
-                     elf_section_start(elf, (elf_shdr *)shdr), (void *)maxva);
-             tmp = elf_copy_section(elf, (elf_shdr *)shdr, (void *)maxva);
-             /* Mangled to be based on ELF header location. */
-             elf_hdr_elm(elf, (elf_shdr *)shdr, sh_offset,
-                         maxva - symtab_addr);
-             maxva = tmp;
-        }
-        shdr += elf_uval(elf, elf->ehdr, e_shentsize);
-    }
-
-    /* Write down the actual sym size. */
-    p = (char *)symbase;
-    *(long *)p = maxva - symtab_addr; /* sym size */
-
-#undef elf_ehdr_elm
-
-    return 0;
-}
-
 static int elf_xen_addr_calc_check(struct elf_binary *elf,
                                    struct elf_dom_parms *parms)
 {
@@ -467,13 +374,16 @@ static int elf_xen_addr_calc_check(struc
     parms->virt_offset = parms->virt_base - parms->elf_paddr_offset;
     parms->virt_kstart = elf->pstart + parms->virt_offset;
     parms->virt_kend   = elf->pend   + parms->virt_offset;
-    parms->virt_end    = parms->virt_kend;
 
     if ( parms->virt_entry == UNSET_ADDR )
         parms->virt_entry = elf_uval(elf, elf->ehdr, e_entry);
 
     if ( parms->bsd_symtab )
-        elf_xen_loadsymtab(elf, parms);
+    {
+        elf_parse_bsdsyms(elf, parms->virt_kend);
+        if ( elf->bsd_symtab_pend )
+            parms->virt_kend = elf->bsd_symtab_pend + parms->virt_offset;
+    }
 
     elf_msg(elf, "%s: addresses:\n", __FUNCTION__);
     elf_msg(elf, "    virt_base        = 0x%" PRIx64 "\n", parms->virt_base);
@@ -481,14 +391,12 @@ static int elf_xen_addr_calc_check(struc
     elf_msg(elf, "    virt_offset      = 0x%" PRIx64 "\n", parms->virt_offset);
     elf_msg(elf, "    virt_kstart      = 0x%" PRIx64 "\n", parms->virt_kstart);
     elf_msg(elf, "    virt_kend        = 0x%" PRIx64 "\n", parms->virt_kend);
-    elf_msg(elf, "    virt_end         = 0x%" PRIx64 "\n", parms->virt_end);
     elf_msg(elf, "    virt_entry       = 0x%" PRIx64 "\n", parms->virt_entry);
 
     if ( (parms->virt_kstart > parms->virt_kend) ||
          (parms->virt_entry < parms->virt_kstart) ||
          (parms->virt_entry > parms->virt_kend) ||
-         (parms->virt_base > parms->virt_kstart) ||
-         (parms->virt_kend > parms->virt_end) )
+         (parms->virt_base > parms->virt_kstart) )
     {
         elf_err(elf, "%s: ERROR: ELF start or entries are out of bounds.\n",
                 __FUNCTION__);
diff -r 5b19839d0365 -r cd51fa91956b xen/common/libelf/libelf-loader.c
--- a/xen/common/libelf/libelf-loader.c Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/common/libelf/libelf-loader.c Sun Aug 12 14:50:02 2007 -0600
@@ -10,8 +10,6 @@ int elf_init(struct elf_binary *elf, con
 {
     const elf_shdr *shdr;
     uint64_t i, count, section, offset;
-    uint64_t low = -1;
-    uint64_t high = 0;
 
     if ( !elf_is_elfbinary(image) )
     {
@@ -22,13 +20,9 @@ int elf_init(struct elf_binary *elf, con
     memset(elf, 0, sizeof(*elf));
     elf->image = image;
     elf->size = size;
-    elf->ehdr = (elf_ehdr *) image;
+    elf->ehdr = (elf_ehdr *)image;
     elf->class = elf->ehdr->e32.e_ident[EI_CLASS];
     elf->data = elf->ehdr->e32.e_ident[EI_DATA];
-
-#ifdef VERBOSE
-    elf_set_verbose(elf);
-#endif
 
     /* Sanity check phdr. */
     offset = elf_uval(elf, elf->ehdr, e_phoff) +
@@ -60,43 +54,18 @@ int elf_init(struct elf_binary *elf, con
     count = elf_shdr_count(elf);
     for ( i = 0; i < count; i++ )
     {
-        const char *sh_symend, *sh_strend;
-
         shdr = elf_shdr_by_index(elf, i);
         if ( elf_uval(elf, shdr, sh_type) != SHT_SYMTAB )
             continue;
         elf->sym_tab = shdr;
-        sh_symend = (const char *)elf_section_end(elf, shdr);
         shdr = elf_shdr_by_index(elf, elf_uval(elf, shdr, sh_link));
         if ( shdr == NULL )
         {
             elf->sym_tab = NULL;
-            sh_symend = 0;
             continue;
         }
         elf->sym_strtab = elf_section_start(elf, shdr);
-        sh_strend = (const char *)elf_section_end(elf, shdr);
-
-        if ( low > (unsigned long)elf->sym_tab )
-            low = (unsigned long)elf->sym_tab;
-        if ( low > (unsigned long)shdr )
-            low = (unsigned long)shdr;
-
-        if ( high < ((unsigned long)sh_symend) )
-            high = (unsigned long)sh_symend;
-        if ( high < ((unsigned long)sh_strend) )
-            high = (unsigned long)sh_strend;
-
-        elf_msg(elf, "%s: shdr: sym_tab=%p size=0x%" PRIx64 "\n",
-                __FUNCTION__, elf->sym_tab,
-                elf_uval(elf, elf->sym_tab, sh_size));
-        elf_msg(elf, "%s: shdr: str_tab=%p size=0x%" PRIx64 "\n",
-                __FUNCTION__, elf->sym_strtab, elf_uval(elf, shdr, sh_size));
-
-        elf->sstart = low;
-        elf->send = high;
-        elf_msg(elf, "%s: symbol map: 0x%" PRIx64 " -> 0x%" PRIx64 "\n",
-                __FUNCTION__, elf->sstart, elf->send);
+        break;
     }
 
     return 0;
@@ -114,6 +83,101 @@ void elf_set_verbose(struct elf_binary *
     elf->verbose = 1;
 }
 #endif
+
+/* Calculate the required additional kernel space for the elf image */
+void elf_parse_bsdsyms(struct elf_binary *elf, uint64_t pstart)
+{
+    uint64_t sz;
+    const elf_shdr *shdr;
+    int i, type;
+
+    if ( !elf->sym_tab )
+        return;
+
+    pstart = elf_round_up(elf, pstart);
+
+    /* Space to store the size of the elf image */
+    sz = sizeof(uint32_t);
+
+    /* Space for the elf and elf section headers */
+    sz += (elf_uval(elf, elf->ehdr, e_ehsize) +
+           elf_shdr_count(elf) * elf_uval(elf, elf->ehdr, e_shentsize));
+    sz = elf_round_up(elf, sz);
+
+    /* Space for the symbol and string tables. */
+    for ( i = 0; i < elf_shdr_count(elf); i++ )
+    {
+        shdr = elf_shdr_by_index(elf, i);
+        type = elf_uval(elf, (elf_shdr *)shdr, sh_type);
+        if ( (type == SHT_STRTAB) || (type == SHT_SYMTAB) )
+            sz = elf_round_up(elf, sz + elf_uval(elf, shdr, sh_size));
+    }
+
+    elf->bsd_symtab_pstart = pstart;
+    elf->bsd_symtab_pend   = pstart + sz;
+}
+
+static void elf_load_bsdsyms(struct elf_binary *elf)
+{
+    elf_ehdr *sym_ehdr;
+    unsigned long sz;
+    char *maxva, *symbase, *symtab_addr;
+    elf_shdr *shdr;
+    int i, type;
+
+    if ( !elf->bsd_symtab_pstart )
+        return;
+
+#define elf_hdr_elm(_elf, _hdr, _elm, _val)     \
+do {                                            \
+    if ( elf_64bit(_elf) )                      \
+        (_hdr)->e64._elm = _val;                \
+    else                                        \
+        (_hdr)->e32._elm = _val;                \
+} while ( 0 )
+
+    symbase = elf_get_ptr(elf, elf->bsd_symtab_pstart);
+    symtab_addr = maxva = symbase + sizeof(uint32_t);
+
+    /* Set up Elf header. */
+    sym_ehdr = (elf_ehdr *)symtab_addr;
+    sz = elf_uval(elf, elf->ehdr, e_ehsize);
+    memcpy(sym_ehdr, elf->ehdr, sz);
+    maxva += sz; /* no round up */
+
+    elf_hdr_elm(elf, sym_ehdr, e_phoff, 0);
+    elf_hdr_elm(elf, sym_ehdr, e_shoff, elf_uval(elf, elf->ehdr, e_ehsize));
+    elf_hdr_elm(elf, sym_ehdr, e_phentsize, 0);
+    elf_hdr_elm(elf, sym_ehdr, e_phnum, 0);
+
+    /* Copy Elf section headers. */
+    shdr = (elf_shdr *)maxva;
+    sz = elf_shdr_count(elf) * elf_uval(elf, elf->ehdr, e_shentsize);
+    memcpy(shdr, elf->image + elf_uval(elf, elf->ehdr, e_shoff), sz);
+    maxva = (char *)(long)elf_round_up(elf, (long)maxva + sz);
+
+    for ( i = 0; i < elf_shdr_count(elf); i++ )
+    {
+        type = elf_uval(elf, shdr, sh_type);
+        if ( (type == SHT_STRTAB) || (type == SHT_SYMTAB) )
+        {
+             elf_msg(elf, "%s: shdr %i at 0x%p -> 0x%p\n", __func__, i,
+                     elf_section_start(elf, shdr), maxva);
+             sz = elf_uval(elf, shdr, sh_size);
+             memcpy(maxva, elf_section_start(elf, shdr), sz);
+             /* Mangled to be based on ELF header location. */
+             elf_hdr_elm(elf, shdr, sh_offset, maxva - symtab_addr);
+             maxva = (char *)(long)elf_round_up(elf, (long)maxva + sz);
+        }
+        shdr = (elf_shdr *)((long)shdr +
+                            (long)elf_uval(elf, elf->ehdr, e_shentsize));
+    }
+
+    /* Write down the actual sym size. */
+    *(uint32_t *)symbase = maxva - symtab_addr;
+
+#undef elf_ehdr_elm
+}
 
 void elf_parse_binary(struct elf_binary *elf)
 {
@@ -165,6 +229,8 @@ void elf_load_binary(struct elf_binary *
         memcpy(dest, elf->image + offset, filesz);
         memset(dest + filesz, 0, memsz - filesz);
     }
+
+    elf_load_bsdsyms(elf);
 }
 
 void *elf_get_ptr(struct elf_binary *elf, unsigned long addr)
diff -r 5b19839d0365 -r cd51fa91956b xen/common/libelf/libelf-tools.c
--- a/xen/common/libelf/libelf-tools.c  Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/common/libelf/libelf-tools.c  Sun Aug 12 14:50:02 2007 -0600
@@ -236,36 +236,6 @@ int elf_phdr_is_loadable(struct elf_bina
     uint64_t p_flags = elf_uval(elf, phdr, p_flags);
 
     return ((p_type == PT_LOAD) && (p_flags & (PF_W | PF_X)) != 0);
-}
-
-unsigned long
-elf_copy_ehdr(struct elf_binary *elf, void *dest)
-{
-    uint64_t size;
-
-    size = elf_uval(elf, elf->ehdr, e_ehsize);
-    memcpy(dest, elf->ehdr, size);
-    return elf_round_up(elf, (unsigned long)(dest) + size);
-}
-
-unsigned long
-elf_copy_shdr(struct elf_binary *elf, void *dest)
-{
-    uint64_t size;
-
-    size = elf_shdr_count(elf) * elf_uval(elf, elf->ehdr, e_shentsize);
-    memcpy(dest, elf->image + elf_uval(elf, elf->ehdr, e_shoff), size);
-    return elf_round_up(elf, (unsigned long)(dest) + size);
-}
-
-unsigned long
-elf_copy_section(struct elf_binary *elf, const elf_shdr *shdr, void *dest)
-{
-    uint64_t size;
-
-    size = elf_uval(elf, shdr, sh_size);
-    memcpy(dest, elf_section_start(elf, shdr), size);
-    return elf_round_up(elf, (unsigned long)(dest) + size);
 }
 
 /*
diff -r 5b19839d0365 -r cd51fa91956b xen/common/page_alloc.c
--- a/xen/common/page_alloc.c   Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/common/page_alloc.c   Sun Aug 12 14:50:02 2007 -0600
@@ -91,6 +91,14 @@ custom_param("dma_emergency_pool", parse
 #define round_pgdown(_p)  ((_p)&PAGE_MASK)
 #define round_pgup(_p)    (((_p)+(PAGE_SIZE-1))&PAGE_MASK)
 
+#ifndef NDEBUG
+/* Avoid callers relying on allocations returning zeroed pages. */
+#define scrub_page(p) memset((p), 0xc2, PAGE_SIZE)
+#else
+/* For a production build, clear_page() is the fastest way to scrub. */
+#define scrub_page(p) clear_page(p)
+#endif
+
 static DEFINE_SPINLOCK(page_scrub_lock);
 LIST_HEAD(page_scrub_list);
 static unsigned long scrub_pages;
@@ -618,13 +626,13 @@ void __init scrub_heap_pages(void)
             {
                 p = page_to_virt(mfn_to_page(mfn));
                 memguard_unguard_range(p, PAGE_SIZE);
-                clear_page(p);
+                scrub_page(p);
                 memguard_guard_range(p, PAGE_SIZE);
             }
             else
             {
                 p = map_domain_page(mfn);
-                clear_page(p);
+                scrub_page(p);
                 unmap_domain_page(p);
             }
         }
@@ -1018,7 +1026,7 @@ static void page_scrub_softirq(void)
             pg = list_entry(ent, struct page_info, list);
             ent = ent->prev;
             p = map_domain_page(page_to_mfn(pg));
-            clear_page(p);
+            scrub_page(p);
             unmap_domain_page(p);
             free_heap_pages(pfn_dom_zone_type(page_to_mfn(pg)), pg, 0);
         }
diff -r 5b19839d0365 -r cd51fa91956b xen/include/asm-powerpc/boot.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/asm-powerpc/boot.h    Sun Aug 12 14:50:02 2007 -0600
@@ -0,0 +1,46 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * Copyright IBM Corp. 2007
+ *
+ * Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
+ */
+
+#ifndef _ASM_BOOT_H
+#define _ASM_BOOT_H
+
+/* a collection of interfaces used during boot. */
+
+extern void boot_of_init(ulong, ulong);
+extern void *boot_of_devtree(void);
+extern void boot_of_serial(void *);
+extern void boot_of_finish(void);
+extern int boot_of_mem_avail(int pos, ulong *startpage, ulong *endpage);
+
+extern void parse_multiboot(ulong tags_addr);
+
+extern void memory_init(void);
+
+extern char *xen_cmdline;
+extern ulong dom0_addr;
+extern ulong dom0_len;
+extern char *dom0_cmdline;
+extern ulong initrd_start;
+extern ulong initrd_len;
+
+/* From linker script. */
+extern char builtin_cmdline[];
+
+#endif
diff -r 5b19839d0365 -r cd51fa91956b xen/include/asm-x86/domain.h
--- a/xen/include/asm-x86/domain.h      Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/include/asm-x86/domain.h      Sun Aug 12 14:50:02 2007 -0600
@@ -77,10 +77,10 @@ struct shadow_domain {
     int               locker; /* processor which holds the lock */
     const char       *locker_function; /* Func that took it */
     unsigned int      opt_flags;    /* runtime tunable optimizations on/off */
-    struct list_head  pinned_shadows; 
+    struct list_head  pinned_shadows;
 
     /* Memory allocation */
-    struct list_head  freelists[SHADOW_MAX_ORDER + 1]; 
+    struct list_head  freelists[SHADOW_MAX_ORDER + 1];
     struct list_head  p2m_freelist;
     unsigned int      total_pages;  /* number of pages allocated */
     unsigned int      free_pages;   /* number of pages on freelists */
@@ -116,7 +116,7 @@ struct hap_domain {
     spinlock_t        lock;
     int               locker;
     const char       *locker_function;
-    
+
     struct list_head  freelist;
     unsigned int      total_pages;  /* number of pages allocated */
     unsigned int      free_pages;   /* number of pages on freelists */
@@ -131,13 +131,13 @@ struct p2m_domain {
     spinlock_t         lock;
     int                locker;   /* processor which holds the lock */
     const char        *locker_function; /* Func that took it */
-    
+
     /* Pages used to construct the p2m */
     struct list_head   pages;
 
     /* Functions to call to get or free pages for the p2m */
     struct page_info * (*alloc_page  )(struct domain *d);
-    void               (*free_page   )(struct domain *d, 
+    void               (*free_page   )(struct domain *d,
                                        struct page_info *pg);
 
     /* Highest guest frame that's ever been mapped in the p2m */
@@ -177,6 +177,7 @@ struct paging_domain {
     /* log dirty support */
     struct log_dirty_domain log_dirty;
 };
+
 struct paging_vcpu {
     /* Pointers to mode-specific entry points. */
     struct paging_mode *mode;
@@ -184,9 +185,9 @@ struct paging_vcpu {
     unsigned int translate_enabled:1;
     /* HVM guest: last emulate was to a pagetable */
     unsigned int last_write_was_pt:1;
-    /* Translated guest: virtual TLB */    
+    /* Translated guest: virtual TLB */
     struct shadow_vtlb *vtlb;
-    spinlock_t          vtlb_lock; 
+    spinlock_t          vtlb_lock;
 
     /* paging support extension */
     struct shadow_vcpu shadow;
@@ -303,7 +304,7 @@ struct arch_vcpu
      * shadow refcounts are in use */
     pagetable_t shadow_table[4];        /* (MFN) shadow(s) of guest */
     pagetable_t monitor_table;          /* (MFN) hypervisor PT (for HVM) */
-    unsigned long cr3;                     /* (MA) value to install in HW CR3 
*/
+    unsigned long cr3;                  /* (MA) value to install in HW CR3 */
 
     /* Current LDT details. */
     unsigned long shadow_ldt_mapcnt;
diff -r 5b19839d0365 -r cd51fa91956b xen/include/asm-x86/hap.h
--- a/xen/include/asm-x86/hap.h Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/include/asm-x86/hap.h Sun Aug 12 14:50:02 2007 -0600
@@ -3,7 +3,7 @@
  *
  * hardware-assisted paging
  * Copyright (c) 2007 Advanced Micro Devices (Wei Huang)
- * 
+ *
  * Parts of this code are Copyright (c) 2006 by XenSource Inc.
  * Parts of this code are Copyright (c) 2006 by Michael A Fetterman
  * Parts based on earlier work by Michael A Fetterman, Ian Pratt et al.
diff -r 5b19839d0365 -r cd51fa91956b 
xen/include/asm-x86/mach-es7000/mach_mpparse.h
--- a/xen/include/asm-x86/mach-es7000/mach_mpparse.h    Sun Aug 12 12:19:13 
2007 -0600
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-#ifndef __ASM_MACH_MPPARSE_H
-#define __ASM_MACH_MPPARSE_H
-
-#include <xen/acpi.h>
-
-extern int parse_unisys_oem(char *oemptr);
-extern int find_unisys_acpi_oem_table(unsigned long *oem_addr);
-
-static inline int mps_oem_check(struct mp_config_table *mpc, char *oem,
-               char *productid)
-{
-       if (mpc->mpc_oemptr) {
-               struct mp_config_oemtable *oem_table = 
-                       (struct mp_config_oemtable *)(long)mpc->mpc_oemptr;
-               if (!strncmp(oem, "UNISYS", 6))
-                       return parse_unisys_oem((char *)oem_table);
-       }
-       return 0;
-}
-
-static inline int es7000_check_dsdt(void)
-{
-       struct acpi_table_header *header = NULL;
-       if(!acpi_get_table_header_early(ACPI_DSDT, &header))
-               acpi_table_print(header, 0);
-       if (!strncmp(header->oem_id, "UNISYS", 6))
-               return 1;
-       return 0;
-}
-
-/* Hook from generic ACPI tables.c */
-static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id)
-{
-       unsigned long oem_addr;
-       if (!find_unisys_acpi_oem_table(&oem_addr)) {
-               if (es7000_check_dsdt())
-                       return parse_unisys_oem((char *)oem_addr);
-               else
-                       return 1;
-       }
-       return 0;
-}
-
-
-#endif /* __ASM_MACH_MPPARSE_H */
diff -r 5b19839d0365 -r cd51fa91956b xen/include/asm-x86/msr.h
--- a/xen/include/asm-x86/msr.h Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/include/asm-x86/msr.h Sun Aug 12 14:50:02 2007 -0600
@@ -239,6 +239,11 @@ static inline void write_efer(__u64 val)
 #define MSR_K8_MC4_STATUS              0x411
 #define MSR_K8_MC4_ADDR                        0x412
 #define MSR_K8_MC4_MISC                        0x413
+
+#define MSR_K8_MC5_CTL                 0x414
+#define MSR_K8_MC5_STATUS              0x415
+#define MSR_K8_MC5_ADDR                        0x416
+#define MSR_K8_MC5_MISC                        0x417
 
 /* Pentium IV performance counter MSRs */
 #define MSR_P4_BPU_PERFCTR0            0x300
diff -r 5b19839d0365 -r cd51fa91956b xen/include/public/libelf.h
--- a/xen/include/public/libelf.h       Sun Aug 12 12:19:13 2007 -0600
+++ b/xen/include/public/libelf.h       Sun Aug 12 14:50:02 2007 -0600
@@ -65,11 +65,12 @@ struct elf_binary {
 
     /* loaded to */
     char *dest;
-    uint64_t sstart;
-    uint64_t send;
     uint64_t pstart;
     uint64_t pend;
     uint64_t reloc_offset;
+
+    uint64_t bsd_symtab_pstart;
+    uint64_t bsd_symtab_pend;
 
 #ifndef __XEN__
     /* misc */
@@ -150,11 +151,6 @@ int elf_is_elfbinary(const void *image);
 int elf_is_elfbinary(const void *image);
 int elf_phdr_is_loadable(struct elf_binary *elf, const elf_phdr * phdr);
 
-unsigned long elf_copy_ehdr(struct elf_binary *elf, void *dest);
-unsigned long elf_copy_shdr(struct elf_binary *elf, void *dest);
-unsigned long elf_copy_section(struct elf_binary *elf,
-                               const elf_shdr *shdr, void *dest);
-
 /* ------------------------------------------------------------------------ */
 /* xc_libelf_loader.c                                                       */
 
@@ -170,6 +166,8 @@ void elf_load_binary(struct elf_binary *
 
 void *elf_get_ptr(struct elf_binary *elf, unsigned long addr);
 uint64_t elf_lookup_addr(struct elf_binary *elf, const char *symbol);
+
+void elf_parse_bsdsyms(struct elf_binary *elf, uint64_t pstart); /* private */
 
 /* ------------------------------------------------------------------------ */
 /* xc_libelf_relocate.c                                                     */
@@ -221,8 +219,7 @@ struct elf_dom_parms {
     /* calculated */
     uint64_t virt_offset;
     uint64_t virt_kstart;
-    uint64_t virt_kend; /* end of kernel image */
-    uint64_t virt_end;  /* end of kernel symtab (== virt_kend if none) */
+    uint64_t virt_kend;
 };
 
 static inline void elf_xen_feature_set(int nr, uint32_t * addr)
@@ -245,7 +242,4 @@ int elf_xen_parse(struct elf_binary *elf
 int elf_xen_parse(struct elf_binary *elf,
                   struct elf_dom_parms *parms);
 
-int elf_xen_dom_load_binary(struct elf_binary *elf,
-                            struct elf_dom_parms *parms);
-
 #endif /* __XC_LIBELF__ */
diff -r 5b19839d0365 -r cd51fa91956b xen/include/xen/multiboot2.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/xen/include/xen/multiboot2.h      Sun Aug 12 14:50:02 2007 -0600
@@ -0,0 +1,99 @@
+/*
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ * Copyright IBM Corp. 2006, 2007
+ *
+ * Authors: Hollis Blanchard <hollisb@xxxxxxxxxx>
+ *          
+ */
+
+#ifndef _MULTIBOOT2_H_
+#define _MULTIBOOT2_H_
+
+/* How many bytes from the start of the file we search for the header.  */
+#define MB2_HEADER_SEARCH           8192
+
+/* The magic field should contain this.  */
+#define MB2_HEADER_MAGIC            0xe85250d6
+
+/* Passed from the bootloader to the kernel.  */
+#define MB2_BOOTLOADER_MAGIC        0x36d76289
+
+#include <stdint.h>
+
+#define for_each_tag(_tag, _tags) \
+    for ((_tag) = (_tags); \
+            ((_tag)->key != MB2_TAG_END && (_tag)->key != 0); \
+            (_tag) = (void *)(_tag) + (_tag)->len)
+
+typedef uint32_t mb2_word;
+
+struct mb2_header
+{
+  uint32_t magic;
+};
+
+struct mb2_tag_header
+{
+  uint32_t key;
+  uint32_t len;
+};
+
+#define MB2_TAG_START     1
+struct mb2_tag_start
+{
+  struct mb2_tag_header header;
+  mb2_word size; /* Total size of all mb2 tags. */
+};
+
+#define MB2_TAG_NAME      2
+struct mb2_tag_name
+{
+  struct mb2_tag_header header;
+  char name[1];
+};
+
+#define MB2_TAG_MODULE    3
+struct mb2_tag_module
+{
+  struct mb2_tag_header header;
+  mb2_word addr;
+  mb2_word size;
+  unsigned char type[36];
+  unsigned char cmdline[1];
+};
+
+#define MB2_TAG_MEMORY    4
+struct mb2_tag_memory
+{
+  struct mb2_tag_header header;
+  mb2_word addr;
+  mb2_word size;
+  mb2_word type;
+};
+
+#define MB2_TAG_UNUSED    5
+struct mb2_tag_unused
+{
+  struct mb2_tag_header header;
+};
+
+#define MB2_TAG_END       0xffff
+struct mb2_tag_end
+{
+  struct mb2_tag_header header;
+};
+
+#endif

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>