[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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



# 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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.