This patchset implements per-mountpoint readonly, noatime and nodiratime flags.
This is the first release of the patch and I'm seeking feedback from the VFS maintainer on whether it is acceptable in principle and which modifications, if any, I should make (in addition to updating to the latest bk). The goals of this patches are the same goals of Herbert Poetzl's ones (see http://groups-beta.google.com/group/linux.kernel/browse_frm/thread/46f6ca7ffeac184f/dd31c0959a614cac and http://groups-beta.google.com/group/linux.kernel/browse_frm/thread/5d6e8bf49925a180/f2181c51e78b8d56), but the implementation is very different, although originally based on his one, and I believe that it addresses the arguments raised against Poetzl's patches. In particular, rather than adding extra checks, I modify all calls to IS_RDONLY, IS_NOATIME and IS_NODIRATIME with ones to a new ..._MNT macro that makes use of the new flags. All the function calls leading to the IS_* macro call are changed to pass the struct vfsmount* through. Furthermore, this patch adds the new functionality as new mount flags, rather than overloading the existing per-superblock flags, thus maintaining backwards compatibility and not breaking remounts or altering normal bind mount behavior. On the other hand, unlike Poetzl's patch, my patch changes the filesystem interface, and will break all out-of-tree filesystems and modules using vfs_* functions. In some places the new constant MNT_IGNORE is passed instead of a struct vfsmount* (the constant is there for clarity and greppability). All such places either lead to a permission() call without the MAY_WRITE flag (thus not calling IS_RDONLY), have checks before them, are per-superblock operations or are one of the issues described in the next paragraph. The known issues are: - lack of support for XFS, due to my inability to figure out how to implement it: XFS mounts will fully or partially ignore the new per-mountpoints flags. - autofs4 could be ignoring per-mountpoint noatime: this is unclear but very minor - NFS server should work but I'm not sure if the patch is fully correct The first patch adds the base code for the mount interface and macros and the second patch modifies everything to use the new macros. The util-linux patch adds userspace support. In the first patch, I augment the per-superblock s_files list with per-mountpoint mnt_files list and a s_mnts list of mountpoints for each superblock; this is done to allow remounting mountpoints read-only. Furthermore, the mount interfaces are changed to accomodate the new options and new macros are defined. In the second patch, the prototypes for fs operations setxattr, permission and the xattr operation set are changed and core code along with all filesystems are modified to support the new features. The util-linux patch is very simple and just adds the flags. Patches are against 2.6.10: I'll update them if they are considered acceptable. The first kernel patch and the util-linux patch follow inline, while the second patch is gzipped and attached since it is about 120KB uncompressed. First patch: diff --exclude-from=/home/lb/pers/input/exclude -urNdp --exclude-from=/home/lb/pers/input/exclude-linux /home/lb/gen/src/linux-2.6.10-pre-bme/fs/dquot.c ./fs/dquot.c --- /home/lb/gen/src/linux-2.6.10-pre-bme/fs/dquot.c 2004-12-24 22:35:14.000000000 +0100 +++ ./fs/dquot.c 2005-01-27 16:29:58.000000000 +0100 @@ -659,11 +659,11 @@ static int dqinit_needed(struct inode *i /* This routine is guarded by dqonoff_sem semaphore */ static void add_dquot_ref(struct super_block *sb, int type) { - struct list_head *p; + struct list_head *mp, *p; restart: file_list_lock(); - list_for_each(p, &sb->s_files) { + for_each_sfile(p, mp, sb) { struct file *filp = list_entry(p, struct file, f_list); struct inode *inode = filp->f_dentry->d_inode; if (filp->f_mode & FMODE_WRITE && dqinit_needed(inode, type)) { diff --exclude-from=/home/lb/pers/input/exclude -urNdp --exclude-from=/home/lb/pers/input/exclude-linux /home/lb/gen/src/linux-2.6.10-pre-bme/fs/file_table.c ./fs/file_table.c --- /home/lb/gen/src/linux-2.6.10-pre-bme/fs/file_table.c 2004-12-24 22:33:50.000000000 +0100 +++ ./fs/file_table.c 2005-01-27 16:29:58.000000000 +0100 @@ -215,13 +215,12 @@ void file_kill(struct file *file) } } -int fs_may_remount_ro(struct super_block *sb) +int __list_may_remount_ro(struct list_head* list) { struct list_head *p; /* Check that no files are currently opened for writing. */ - file_list_lock(); - list_for_each(p, &sb->s_files) { + list_for_each(p, list) { struct file *file = list_entry(p, struct file, f_list); struct inode *inode = file->f_dentry->d_inode; @@ -233,6 +232,33 @@ int fs_may_remount_ro(struct super_block if (S_ISREG(inode->i_mode) && (file->f_mode & FMODE_WRITE)) goto too_bad; } + return 1; /* Tis' cool bro. */ +too_bad: + return 0; +} + +int mnt_may_remount_ro(struct vfsmount *mnt) +{ + int res; + + file_list_lock(); + res = __list_may_remount_ro(&mnt->mnt_files); + file_list_unlock(); + + return res; +} + +int fs_may_remount_ro(struct super_block *sb) +{ + struct vfsmount* mnt; + + file_list_lock(); + if(!__list_may_remount_ro(&sb->s_files)) + goto too_bad; + list_for_each_entry(mnt, &sb->s_mnts, mnt_sblist) { + if(!__list_may_remount_ro(&mnt->mnt_files)) + goto too_bad; + } file_list_unlock(); return 1; /* Tis' cool bro. */ too_bad: @@ -240,6 +266,44 @@ too_bad: return 0; } + +/** + * mark_files_ro + * @sb: superblock in question + * + * All files are marked read/only. We don't care about pending + * delete files so this should be used in 'force' mode only + */ + +static void __list_mark_files_ro(struct list_head *list) +{ + struct file *f; + + list_for_each_entry(f, list, f_list) { + if (S_ISREG(f->f_dentry->d_inode->i_mode) && file_count(f)) + f->f_mode &= ~FMODE_WRITE; + } +} + +void mnt_mark_files_ro(struct vfsmount *mnt) +{ + file_list_lock(); + __list_mark_files_ro(&mnt->mnt_files); + file_list_unlock(); +} + +void mark_files_ro(struct super_block *sb) +{ + struct vfsmount *mnt; + + file_list_lock(); + __list_mark_files_ro(&sb->s_files); + list_for_each_entry(mnt, &sb->s_mnts, mnt_sblist) { + __list_mark_files_ro(&mnt->mnt_files); + } + file_list_unlock(); +} + void __init files_init(unsigned long mempages) { int n; diff --exclude-from=/home/lb/pers/input/exclude -urNdp --exclude-from=/home/lb/pers/input/exclude-linux /home/lb/gen/src/linux-2.6.10-pre-bme/fs/namespace.c ./fs/namespace.c --- /home/lb/gen/src/linux-2.6.10-pre-bme/fs/namespace.c 2004-12-24 22:35:01.000000000 +0100 +++ ./fs/namespace.c 2005-01-27 16:29:58.000000000 +0100 @@ -61,7 +61,9 @@ struct vfsmount *alloc_vfsmnt(const char INIT_LIST_HEAD(&mnt->mnt_child); INIT_LIST_HEAD(&mnt->mnt_mounts); INIT_LIST_HEAD(&mnt->mnt_list); + INIT_LIST_HEAD(&mnt->mnt_sblist); INIT_LIST_HEAD(&mnt->mnt_fslink); + INIT_LIST_HEAD(&mnt->mnt_files); if (name) { int size = strlen(name)+1; char *newname = kmalloc(size, GFP_KERNEL); @@ -157,6 +159,9 @@ clone_mnt(struct vfsmount *old, struct d mnt->mnt_flags = old->mnt_flags; atomic_inc(&sb->s_active); mnt->mnt_sb = sb; + file_list_lock(); + list_add_tail(&mnt->mnt_sblist, &sb->s_mnts); + file_list_unlock(); mnt->mnt_root = dget(root); mnt->mnt_mountpoint = mnt->mnt_root; mnt->mnt_parent = mnt; @@ -175,6 +180,9 @@ clone_mnt(struct vfsmount *old, struct d void __mntput(struct vfsmount *mnt) { struct super_block *sb = mnt->mnt_sb; + file_list_lock(); + list_del(&mnt->mnt_sblist); + file_list_unlock(); dput(mnt->mnt_root); free_vfsmnt(mnt); deactivate_super(sb); @@ -234,6 +242,9 @@ static int show_vfsmnt(struct seq_file * { MNT_NOSUID, ",nosuid" }, { MNT_NODEV, ",nodev" }, { MNT_NOEXEC, ",noexec" }, + { MNT_RDONLY, ",mnt_ro" }, + { MNT_NOATIME, ",mnt_noatime" }, + { MNT_NODIRATIME, ",mnt_nodiratime" }, { 0, NULL } }; struct proc_fs_info *fs_infop; @@ -661,6 +678,20 @@ static int do_loopback(struct nameidata return err; } +static int do_remount_mnt(struct vfsmount* mnt, int mnt_flags) +{ + if((mnt_flags & MNT_RDONLY) && !(mnt->mnt_flags & MNT_RDONLY)) + { + if (mnt_flags & MNT_RDONLY_FORCE) + mnt_mark_files_ro(mnt); + else if (!mnt_may_remount_ro(mnt)) + return -EBUSY; + } + + mnt->mnt_flags = mnt_flags &~ MNT_RDONLY_FORCE; + return 0; +} + /* * change filesystem flags. dir should be a physical root of filesystem. * If you've mounted a non-root directory somewhere and want to do remount @@ -685,7 +716,7 @@ static int do_remount(struct nameidata * down_write(&sb->s_umount); err = do_remount_sb(sb, flags, data, 0); if (!err) - nd->mnt->mnt_flags=mnt_flags; + err = do_remount_mnt(nd->mnt, mnt_flags); up_write(&sb->s_umount); if (!err) security_sb_post_remount(nd->mnt, flags, data); @@ -806,7 +837,7 @@ int do_add_mount(struct vfsmount *newmnt if (S_ISLNK(newmnt->mnt_root->d_inode->i_mode)) goto unlock; - newmnt->mnt_flags = mnt_flags; + newmnt->mnt_flags = mnt_flags &~ MNT_RDONLY_FORCE; err = graft_tree(newmnt, nd); if (err == 0 && fslist) { @@ -1033,7 +1064,15 @@ long do_mount(char * dev_name, char * di mnt_flags |= MNT_NODEV; if (flags & MS_NOEXEC) mnt_flags |= MNT_NOEXEC; - flags &= ~(MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_ACTIVE); + if (flags & MS_MNT_RDONLY) + mnt_flags |= MNT_RDONLY; + if (flags & MS_MNT_RDONLY_FORCE) + mnt_flags |= MNT_RDONLY_FORCE; + if (flags & MS_MNT_NOATIME) + mnt_flags |= MNT_NOATIME; + if (flags & MS_MNT_NODIRATIME) + mnt_flags |= MNT_NODIRATIME; + flags &= ~(MS_NOSUID | MS_NOEXEC | MS_NODEV | MS_ACTIVE | MS_MNT_RDONLY | MS_MNT_RDONLY_FORCE | MS_MNT_NOATIME | MS_MNT_NODIRATIME); /* ... and get the mountpoint */ retval = path_lookup(dir_name, LOOKUP_FOLLOW, &nd); diff --exclude-from=/home/lb/pers/input/exclude -urNdp --exclude-from=/home/lb/pers/input/exclude-linux /home/lb/gen/src/linux-2.6.10-pre-bme/fs/proc/generic.c ./fs/proc/generic.c --- /home/lb/gen/src/linux-2.6.10-pre-bme/fs/proc/generic.c 2004-12-24 22:35:40.000000000 +0100 +++ ./fs/proc/generic.c 2005-01-27 16:29:58.000000000 +0100 @@ -512,14 +512,14 @@ static int proc_register(struct proc_dir */ static void proc_kill_inodes(struct proc_dir_entry *de) { - struct list_head *p; + struct list_head *mp, *p; struct super_block *sb = proc_mnt->mnt_sb; /* * Actually it's a partial revoke(). */ file_list_lock(); - list_for_each(p, &sb->s_files) { + for_each_sfile(p, mp, sb) { struct file * filp = list_entry(p, struct file, f_list); struct dentry * dentry = filp->f_dentry; struct inode * inode; diff --exclude-from=/home/lb/pers/input/exclude -urNdp --exclude-from=/home/lb/pers/input/exclude-linux /home/lb/gen/src/linux-2.6.10-pre-bme/fs/super.c ./fs/super.c --- /home/lb/gen/src/linux-2.6.10-pre-bme/fs/super.c 2004-12-24 22:34:33.000000000 +0100 +++ ./fs/super.c 2005-01-27 16:29:58.000000000 +0100 @@ -68,6 +68,7 @@ static struct super_block *alloc_super(v INIT_LIST_HEAD(&s->s_dirty); INIT_LIST_HEAD(&s->s_io); INIT_LIST_HEAD(&s->s_files); + INIT_LIST_HEAD(&s->s_mnts); INIT_LIST_HEAD(&s->s_instances); INIT_HLIST_HEAD(&s->s_anon); init_rwsem(&s->s_umount); @@ -492,26 +493,6 @@ out: } /** - * mark_files_ro - * @sb: superblock in question - * - * All files are marked read/only. We don't care about pending - * delete files so this should be used in 'force' mode only - */ - -static void mark_files_ro(struct super_block *sb) -{ - struct file *f; - - file_list_lock(); - list_for_each_entry(f, &sb->s_files, f_list) { - if (S_ISREG(f->f_dentry->d_inode->i_mode) && file_count(f)) - f->f_mode &= ~FMODE_WRITE; - } - file_list_unlock(); -} - -/** * do_remount_sb - asks filesystem to change mount options. * @sb: superblock in question * @flags: numeric part of options @@ -828,6 +809,9 @@ do_kern_mount(const char *fstype, int fl if (error) goto out_sb; mnt->mnt_sb = sb; + file_list_lock(); + list_add_tail(&mnt->mnt_sblist, &sb->s_mnts); + file_list_unlock(); mnt->mnt_root = dget(sb->s_root); mnt->mnt_mountpoint = sb->s_root; mnt->mnt_parent = mnt; diff --exclude-from=/home/lb/pers/input/exclude -urNdp --exclude-from=/home/lb/pers/input/exclude-linux /home/lb/gen/src/linux-2.6.10-pre-bme/include/linux/fs.h ./include/linux/fs.h --- /home/lb/gen/src/linux-2.6.10-pre-bme/include/linux/fs.h 2004-12-24 22:34:27.000000000 +0100 +++ ./include/linux/fs.h 2005-01-27 16:36:24.000000000 +0100 @@ -18,6 +18,9 @@ #include <linux/cache.h> #include <linux/prio_tree.h> #include <linux/kobject.h> +#include <linux/mount.h> +#include <linux/namei.h> +#include <linux/prefetch.h> #include <asm/atomic.h> struct iovec; @@ -124,6 +127,10 @@ extern int dir_notify_enable; #define MS_VERBOSE 32768 #define MS_POSIXACL (1<<16) /* VFS does not apply the umask */ #define MS_ONE_SECOND (1<<17) /* fs has 1 sec a/m/ctime resolution */ +#define MS_MNT_RDONLY (1<<18) +#define MS_MNT_RDONLY_FORCE (1<<19) +#define MS_MNT_NOATIME (1<<20) +#define MS_MNT_NODIRATIME (1<<21) #define MS_ACTIVE (1<<30) #define MS_NOUSER (1<<31) @@ -166,7 +173,9 @@ extern int dir_notify_enable; */ #define __IS_FLG(inode,flg) ((inode)->i_sb->s_flags & (flg)) -#define IS_RDONLY(inode) ((inode)->i_sb->s_flags & MS_RDONLY) +#define MNT_IGNORE 0 +#define IS_RDONLY(inode) __IS_FLG(inode, MS_RDONLY) +#define IS_RDONLY_MNT(inode, mnt) (IS_RDONLY(inode) || MNT_IS_RDONLY(mnt)) #define IS_SYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS) || \ ((inode)->i_flags & S_SYNC)) #define IS_DIRSYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS|MS_DIRSYNC) || \ @@ -177,7 +187,9 @@ extern int dir_notify_enable; #define IS_APPEND(inode) ((inode)->i_flags & S_APPEND) #define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE) #define IS_NOATIME(inode) (__IS_FLG(inode, MS_NOATIME) || ((inode)->i_flags & S_NOATIME)) +#define IS_NOATIME_MNT(inode, mnt) (IS_NOATIME(inode) || MNT_IS_NOATIME(mnt)) #define IS_NODIRATIME(inode) __IS_FLG(inode, MS_NODIRATIME) +#define IS_NODIRATIME_MNT(inode, mnt) (IS_NODIRATIME(inode) || MNT_IS_NODIRATIME(mnt)) #define IS_POSIXACL(inode) __IS_FLG(inode, MS_POSIXACL) #define IS_ONE_SECOND(inode) __IS_FLG(inode, MS_ONE_SECOND) @@ -780,6 +792,7 @@ struct super_block { struct list_head s_io; /* parked for writeback */ struct hlist_head s_anon; /* anonymous dentries for (nfs) exporting */ struct list_head s_files; + struct list_head s_mnts; struct block_device *s_bdev; struct list_head s_instances; @@ -799,6 +812,10 @@ struct super_block { struct semaphore s_vfs_rename_sem; /* Kludge */ }; +#define for_each_sfile(p, mp, sb) for (mp = 0; mp != &(sb)->s_mnts; \ + mp = mp ? mp->next : (sb)->s_mnts.next, prefetch(mp->next)) \ + list_for_each(p, mp ? &container_of(mp, struct vfsmount, mnt_sblist)->mnt_files : &(sb)->s_files) + /* * Snapshotting support. */ @@ -1316,6 +1332,10 @@ extern struct file_operations write_pipe extern struct file_operations rdwr_pipe_fops; extern int fs_may_remount_ro(struct super_block *); +extern int mnt_may_remount_ro(struct vfsmount *); + +extern void mark_files_ro(struct super_block *); +extern void mnt_mark_files_ro(struct vfsmount *); /* * return READ, READA, or WRITE diff --exclude-from=/home/lb/pers/input/exclude -urNdp --exclude-from=/home/lb/pers/input/exclude-linux /home/lb/gen/src/linux-2.6.10-pre-bme/include/linux/mount.h ./include/linux/mount.h --- /home/lb/gen/src/linux-2.6.10-pre-bme/include/linux/mount.h 2004-12-24 22:33:51.000000000 +0100 +++ ./include/linux/mount.h 2005-01-27 16:29:58.000000000 +0100 @@ -19,6 +19,11 @@ #define MNT_NOSUID 1 #define MNT_NODEV 2 #define MNT_NOEXEC 4 +#define MNT_RDONLY 8 +#define MNT_NOATIME 16 +#define MNT_NODIRATIME 32 + +#define MNT_RDONLY_FORCE (1 << 31) struct vfsmount { @@ -35,9 +40,15 @@ struct vfsmount char *mnt_devname; /* Name of device e.g. /dev/dsk/hda1 */ struct list_head mnt_list; struct list_head mnt_fslink; /* link in fs-specific expiry list */ + struct list_head mnt_sblist; + struct list_head mnt_files; struct namespace *mnt_namespace; /* containing namespace */ }; +#define MNT_IS_RDONLY(m) ((m) && ((m)->mnt_flags & MNT_RDONLY)) +#define MNT_IS_NOATIME(m) ((m) && ((m)->mnt_flags & MNT_NOATIME)) +#define MNT_IS_NODIRATIME(m) ((m) && ((m)->mnt_flags & MNT_NODIRATIME)) + static inline struct vfsmount *mntget(struct vfsmount *mnt) { if (mnt) diff --exclude-from=/home/lb/pers/input/exclude -urNdp --exclude-from=/home/lb/pers/input/exclude-linux /home/lb/gen/src/linux-2.6.10-pre-bme/security/selinux/selinuxfs.c ./security/selinux/selinuxfs.c --- /home/lb/gen/src/linux-2.6.10-pre-bme/security/selinux/selinuxfs.c 2004-12-24 22:35:50.000000000 +0100 +++ ./security/selinux/selinuxfs.c 2005-01-27 16:29:59.000000000 +0100 @@ -773,7 +773,7 @@ static struct file_operations sel_commit * fs/proc/generic.c proc_kill_inodes */ static void sel_remove_bools(struct dentry *de) { - struct list_head *p, *node; + struct list_head *mp, *p, *node; struct super_block *sb = de->d_sb; spin_lock(&dcache_lock); @@ -796,7 +796,7 @@ static void sel_remove_bools(struct dent spin_unlock(&dcache_lock); file_list_lock(); - list_for_each(p, &sb->s_files) { + for_each_sfile(p, mp, sb) { struct file * filp = list_entry(p, struct file, f_list); struct dentry * dentry = filp->f_dentry; diff --exclude-from=/home/lb/pers/input/exclude -urNdp --exclude-from=/home/lb/pers/input/exclude-linux /home/lb/gen/src/linux-2.6.10-pre-bme/fs/open.c ./fs/open.c --- /home/lb/gen/src/linux-2.6.10-pre-bme/fs/open.c 2004-12-24 22:33:50.000000000 +0100 +++ ./fs/open.c 2005-01-27 16:29:58.000000000 +0100 @@ -795,7 +799,10 @@ struct file *dentry_open(struct dentry * f->f_vfsmnt = mnt; f->f_pos = 0; f->f_op = fops_get(inode->i_fop); - file_move(f, &inode->i_sb->s_files); + if(mnt) + file_move(f, &mnt->mnt_files); + else + file_move(f, &inode->i_sb->s_files); if (f->f_op && f->f_op->open) { error = f->f_op->open(inode,f); ********************************************************************** ********************************************************************** ********************************************************************** ********************************************************************** ********************************************************************** ********************************************************************** Util-linux patch: diff --exclude-from=/home/lb/pers/input/exclude -urNdp /home/lb/gen/rpm/BUILD/util-linux-2.12p/mount/mount.c util-linux-bme/mount/mount.c --- /home/lb/gen/rpm/BUILD/util-linux-2.12p/mount/mount.c 2005-01-25 14:13:31.000000000 +0100 +++ util-linux-bme/mount/mount.c 2005-01-25 14:44:24.000000000 +0100 @@ -168,6 +168,22 @@ static const struct opt_map opt_map[] = { "diratime", 0, 1, MS_NODIRATIME }, /* Update dir access times */ { "nodiratime", 0, 0, MS_NODIRATIME },/* Do not update dir access times */ #endif +#ifdef MS_MNT_RDONLY + { "mnt_ro", 0, 0, MS_MNT_RDONLY }, + { "mnt_rw", 0, 1, MS_MNT_RDONLY }, +#ifdef MS_MNT_RDONLY_FORCE + { "mnt_rof", 0, 0, MS_MNT_RDONLY | MS_MNT_RDONLY_FORCE }, + { "mnt_ronf", 0, 1, MS_MNT_RDONLY_FORCE }, +#endif +#endif +#ifdef MS_MNT_NOATIME + { "mnt_atime", 0, 1, MS_MNT_NOATIME }, /* Update access time */ + { "mnt_noatime", 0, 0, MS_MNT_NOATIME }, /* Do not update access time */ +#endif +#ifdef MS_MNT_NODIRATIME + { "mnt_diratime", 0, 1, MS_MNT_NODIRATIME }, /* Update dir access times */ + { "mnt_nodiratime", 0, 0, MS_MNT_NODIRATIME },/* Do not update dir access times */ +#endif { "kudzu", 0, 0, MS_COMMENT }, /* Silently remove this option (backwards compat use only - deprecated) */ { "managed", 0, 0, MS_COMMENT }, /* Silently remove this option */ { NULL, 0, 0, 0 } diff --exclude-from=/home/lb/pers/input/exclude -urNdp /home/lb/gen/rpm/BUILD/util-linux-2.12p/mount/mount_constants.h util-linux-bme/mount/mount_constants.h --- /home/lb/gen/rpm/BUILD/util-linux-2.12p/mount/mount_constants.h 2002-11-01 01:24:36.000000000 +0100 +++ util-linux-bme/mount/mount_constants.h 2005-01-25 14:43:35.000000000 +0100 @@ -57,6 +57,23 @@ if we have a stack or plain mount - moun #ifndef MS_VERBOSE #define MS_VERBOSE 0x8000 /* 32768 */ #endif + +#ifndef MS_MNT_RDONLY +#define MS_MNT_RDONLY (1<<18) +#endif + +#ifndef MS_MNT_RDONLY_FORCE +#define MS_MNT_RDONLY_FORCE (1<<19) +#endif + +#ifndef MS_MNT_NOATIME +#define MS_MNT_NOATIME (1<<20) +#endif + +#ifndef MS_MNT_NODIRATIME +#define MS_MNT_NODIRATIME (1<<21) +#endif + /* * Magic mount flag number. Had to be or-ed to the flag values. */ ********************************************************************** ********************************************************************** ********************************************************************** ********************************************************************** ********************************************************************** ********************************************************************** Second patch attached. begin 664 bme_second.patch.gz M'XL("%_E_$$"`V)M95]A=V%R92YP871C:`#L76M;[EMAIL PROTECTED])FN#'6S+ MYGK(+@/.+&>)X>$R,_ER]`BKC361+:[EMAIL PROTECTED]/=56W[I(E.]DUF>4#`DE= M:E77M?LMM6F-1JS9Y)^']MSDS9'K3(YWQLZ$[]CW.S/N>CO6=#;W=^0-K#EW M!^:L0HNF;4WGGUEPQP.?[GCN<`=/-SMO=]^V6\V9RYOW<-UPA^,=;P:'W>Z. MY]B&:WD[(^_MD+W-O[;9;#97I;_1:;6ZS7:GV>FR3N=0ZQYV]MZVU`_;;K5; MK<WM[>VB?@@:O6:KW>SLL?;N8>[EMAIL PROTECTED]>?HO&WO[&FMMMI[+%M.L`)SS=\:\BL MJ<]</G-<7Q=G'D=>S?/=^=!G\.?$F4\WV<:&[EMAIL PROTECTED])M/66U6/Q*G\=*( MU7YG[UB[5\=;VKVCS2:=/K_1K\\N!Q<?:];4,7F]SBQQP]'F=N*Z_F%P2_<T MV&3JAS=*^G"N^0Y^Z2/;>/#8&P;WZX/+F[OS,W'KEV/6">Y]Y3U[C_JC85NF M;O)'(MM\9^G>??.=)T[5Z^+>#9?[<W?*FOW+7_K7[R\N?STB-AWL(YOP4,2F MW6Z,47\B-IEKI;VF:ST*"O>V,_RT,[*=V>[EMAIL PROTECTED]:05MI6.T=I\PF4 MT]B]O1[*(AWCPDC4=&?&ITH.<[EMAIL PROTECTED]@6&W!N<I-Y#O/'AL]FKO/@&A./ M>?/AF!D>&YFN\32<P!V^9=ML:[EMAIL PROTECTED]<7<OG1`6:^7SH`R'3\CYY;&L' [EMAIL PROTECTED]&EGVK/[EMAIL PROTECTED]@Y\O7QB,Z,3R/,N9!C>9?.J[S\UWIBX%N--@ [EMAIL PROTECTED]/F:M.LAZA;;[EMAIL PROTECTED]"\J9^B!6)+=\R`_X;/==/P#="[EMAIL PROTECTED]: M(-_A[OW9Z4WSG>0#-&_7UTR\1]Z.,?>=D=?=<1W'1\E.G:[EMAIL PROTECTED]' M.?*<V;:4*!^@(!_$Q1B'0Q+4YS-3#-7<,[EMAIL PROTECTED])/[EMAIL PROTECTED]@A,-PJI8D M'D(V:O1GG<87!QC.UMG_"5.[(9\`CY[P6D*FZFAM"V]IH#D]_WEP>=TGNP[V MWFF^LPW/[EMAIL PROTECTED])TSWP,*)KX..#94LQ4Y5$Z58T[1E MU-KYDI1J6DJ0VKV6D"0ZQ"[EMAIL PROTECTED]"OI-$[&PQ$`I_S!G=PBR/ M31WAV0W3N+>Y,)13QD'(W"%GDPD,_GPR$U>.6Z(]F"B7/QBN:7//[EMAIL PROTECTED] M%W@"O__B1>P7FDKIXR-6[7[F`ETP4#S3MGTX^:A?]T_.I$FKJRB@/(7X964C M4W2%`-.M]`(R:H`HX:?SP=7U!_W]Q<G/-WI_\/[R^K0/<<[EMAIL PROTECTED]:= M)QV]A&X,A\"-2*_J1^LG]D-+_I)Q??)4-;&/-4V+?8;L!F*?:EI*[.$^(?9T [EMAIL PROTECTED]"``:B8;CNS8%+.H8:;,N[;[EMAIL PROTECTED])0.XUA&*OV$_&<\>DR<A$A!C]U?V M)`($$+-'QYY/.*D%*-3T@;O,>#0L6^C`7]'[EMAIL PROTECTED];;$;4#KL2D<YX,,*D4(H[ M)X;WB;H%UZ?&A%OHF+>F)DAY98KQ+,7?8BCFBYX#OH`IGT),O)=.1?XG!!PY MWL9TB0YQ0U/8/Z$=$$`)PS"T+=!-5C/NG4?.C*G)[OFS`X>3TPL19'G<%>%A MG8&Y8>3LZ`P,AP4AFNF@<8*!%7D'W.[[UO0!"3U:_$G\C;'7O>5[#6SN,%1, M<44^W'?8<,Q!)*)V"887'-9H;L.`,F&BI#B`V'/7&D;?3:4;R%*T'[EMAIL PROTECTED]<0 [EMAIL PROTECTED]&MIF;0$H5'L?+3A$_TH0'=TWW)?FQ,YV9K;D3&:74>+V]$QAE3`;UR1F2< M:43V>IWN?DO3#B)&9+_7V&?;^!O^Y9_!ZD\I"".)GOLZ]/63DF=R+#!>\LY` M](6WS+AQR[1<_*L!(F>X3!=1D<NV[N>C$7=)->%OR(R%)"2)>L^3*,TPEXGH M>NI!Z,2&(-(^/7(+J`B%AP<TPP=LR%Y/0`T_&[[O)CL.'8[0B#=FU!J4KT13 M]1\E&HW-[4J=2%JT5+>V*W2KF%BRHX*/S+/^%U01!RHR0AZ=IN<]E&2#I"M) MYE&S+2^7G"04$%A/8X"]CP44\LP2ID"V3%N";G>!)8BT+!5-=#&8Z%(LL<F$ M[Q%./:[EMAIL PROTECTED](DH>&7'T5;W.[(I5L-YY-&YTWSL0-(=EJ]B^O!I>W-W=7 M(BK]P1J9?,1.+P?OSW_63\_?W^B_G=S>7I/EPSF]?3FE5[:'8?#D#J7O"GF4 MIWD+&-2(,[EMAIL PROTECTED]<:8AQI)^H:HO+CX8]YTJ5&/ZGBW\:<B()POY"WJZ?ZCFF ML0-,"[EMAIL PROTECTED],B;[EMAIL PROTECTED]'>[EMAIL PROTECTED],A*55`-#_J+1M& MEZ:T?/BL?L2]W'4A=CV&[EMAIL PROTECTED]"QGZ-LQ65&GEA`7U30I,;W\:>"LIN6R MOBZF(%UIIW^PIL2W_\(>[M`X>R9_?#M^)P0)\CMZ!G-F-/L0S5K$W7BUO)3% MT[+R!!8(%X8;&]DB=K3)DL^D=RI.`\6\`YP4\[X-%LIHXF<^]:R'*3>)[EMAIL PROTECTED] MD^",2'9%5N3B;'&[EMAIL PROTECTED]>)28=W>AER*;BO"%SH):'\GAP#00KJMQ MH<Z_W-&)&[EMAIL PROTECTED]']%!]T8N;+P`C\['#N6OZS,@[EMAIL PROTECTED]&=%;01Y70*3< M"E$;UX?:))[EMAIL PROTECTED]:3B,^V8SNZF7:BHE*!J`R*BF([EMAIL PROTECTED],:H0H MQB*:>#23$\>,F'CL<#*K(1GV^K5:'%H[4>6?>3`33W]7$T1J4VWN/[EMAIL PROTECTED] M.6LK03,\S-6-!TYFTWOV1*YO6_>UR`CJNAR)5S?Z^<UU_^?:U'R;F*T6*\X3 M7/06([EMAIL PROTECTED]&1L)\-C=4<!&Q9VD*X<PV^X)_]G_KGS;8&W0EVV5IP+G8+'D& M+7H7I)?N+#H+RC*Z^_LI=\&VQ#JM+MA>2\JX6J_DT,O^];5^=7M=:_9/3D_[ M-_5PN;Y&/<Q:WQ>=K+,W;^0"!5/<3C!8KH+)J"W.D@@GX^PKOC_*M3BK9*]% MPS=OV*MX7Z#GK7:[+=<@-HBZ?&5JG&`'W"$=\GYW%S,Y/,A4;F3/O;'NV";Q M-[KJ(U:"9NY$F+P-NLT?B]FK6CU<`J9U"Z[/P;[EMAIL PROTECTED] [EMAIL PROTECTED](O?7WF%1Q!F2+B6L<SSIG"5!Z5%3"@##_1/_-FK MR=>[EMAIL PROTECTED]<VKW]DQAG9H8M7_5<VL:I>._#O=(E,;;5<N[&_W:.FA MIW)%OR/<N`YD\D-"_QDB,QD6(Y"'3PZ9Z3Q-Q>F=N+M'BMYBBK/04\\<S_HL M[F=;\*N.<Y$+:.3'F864HTLT^!!:%:!5&[EMAIL PROTECTED];COZ>4VMW-.\A;"E<)/) M/Y.IZ!#>K:/P;F7?.8IZJHFI4+!`.EBB&@8>[EMAIL PROTECTED])":NXQP]L8]`=$7TT M6"1L:4`<$O5-V02060NI*"M&[EMAIL PROTECTED])S`5:[EMAIL PROTECTED] M,928E6<G2E%9>F:B678=*\X`'(NJ"[EMAIL PROTECTED]&Y-K47*(@TV [EMAIL PROTECTED]">&M.$30+,*UGYU?Y[CVF#PI29?D3TXO]-N/5WW]K/_^Y.[BML'4FQ>W M"S$O^324NP]C(QD=#6UN3.<S"8=!QM#4LR;GGJLP!N$VD2#B6#$G^G3V#K2" M?!<N=]^.+5SN%*B.SSZ?"CR<6'TE9$;AJR-KRO*&'[EMAIL PROTECTED]&AN(*V!*)E+ M1OT18<8^SN_003$#Z(-<P:ME<0.9&R`R!Y<?^A\$U2#(59:4*.@@KO^LX<,; M+"XR*IQ])<>L65)ZDF^TO83TI+D2]MOE(#(>KX77Y-OB4U#+,-3NX6PJ'13G MR()*/PE!T\B8VWYR<3Z5^<:-;QF'F$Y&[EMAIL PROTECTED])-V->\BX]Y33 M5ONTP+/?2K&GL'?"M3%N>QPA/D#R&$/)H[2[2XPS=5Y9E*([\7VCM\-#Y:#K MQM34G;F8%L^0"+I;Y5F=-B5:<(13:0(EAEGAELI.<%2D\&^8X'[EMAIL PROTECTED] M_')R<[EMAIL PROTECTED]/P2"^B#C*?`K[?`C*EQB53<ZL-3"&):B.S1D,3N-T5QR:' MCAH<Y`Z1&8-&[EMAIL PROTECTED]/KAZ#.^]OGG?.)&'C9?,^\89>9]6(N\;E\[[>@?" M:N/O*.`,>L9IL2V(#X3<UJ04;K(?0-S%/[EMAIL PROTECTED]>7-[JIR>G?^^?L9H"O3?; M=;DF0<FPB(`B<))$9,X2JH-BGA5Z)U`I"\GD.L`<XBQ)/(ANDK2S;E:196X_ M(FW75(1CBY?1,TN(<>[291'B/]FRW!0&BG+G()REH_'`1;#<E3PPD$/PXS*_ MOSS5;_JW.#]U2"%];/G.L4TTNQ2=9%=2%990Q:M(DN5.UY?O;R*95RV8\QIY M<J8PB*CA_SI.<PX-G`FKG9Y<Z>\O?QWTKX&J8,<[EMAIL PROTECTED]/# MU?L5>]NK_O6'HV_(1FHO8G.QQ!KFKYAOXSIJ`R=;[EMAIL PROTECTED](8NJVCC375 [EMAIL PROTECTED]'IF"4W-P8+U"F$IR98ERT(I"=WMIFMS(FY?5L:$('.<;+S&D?%8J\$@ MXC?8E#]`ZT<N<2'3^>0>!A/\P,BP[+G+W\JYR(S0+S_KBLZ!+0S_JJ9=Q<2# MZ9C\()[EMAIL PROTECTED]:?IB/!;&`^BVBH@)M3T2E-BQQD)FQ%,W0;W-`MD]_/'Y0^OA9= M/_[1?/NC)R.\XQ]GC;"?QS_:YFN95D;?GH)5^7(UL:Y7#]K4R<CF&8?B*M58 [EMAIL PROTECTED]'#W>W)3Q=]24TLJ,#IDZNK_N`L>`)+6:[EMAIL PROTECTED]:.E[8`XVHP MHV3+B`706EF(<G1..)>R&TZE1'"Z)([EMAIL PROTECTED]@AF8[.BQ)$0X04X\/$4O M!0]N9C?VRO4E!H9.X*"WRU-.8ZXK/BOD:=+^FMSF/J>ED/S`-]E*0/K1_&06 M"<GYE`,-:S.UE.G)X+S*PL=&,I=76<KW8M>SD_NP&GZ-X;&A%4A!GS(O+6N= MEH8]Y9(H&;[EMAIL PROTECTED]:+9IR5`3Y7:5YAW6E(Z"V!/Y:>>E._& MK`,A]/KYX*S_&V0?IW?7Y[<?9:B0-^\4FW-:2(2I19/XTB:]E9R36F<[EMAIL PROTECTED]'U M?&YFZ%=P96GU"BA40Z?G42A7&M)KM+MB944<XLHEB67JEE.L7*KIDKJUL/FZ MJ99<7(OFW3<?(:P]^W`^R(QGJ^KB[?7=S6W_;"[EMAIL PROTECTED])!.+ZV# MU'S9/#S2/!J*]P[;.=J'.,MN.Q6*(3#](4?\"R30YYZO.S,_^GV?!B,IN+M1 M\T!944TF_#+[&P4Y.,N,->!4PR2H,K':2TS!N<3N056F%!DD;+JD-2IN6]$4 M5;9#JNB&8O?==J/=AN0-#QG<\?)%1C">O<H&BQ*:%+&#K[(Q)R)13X(ZQ9V_ MW/Z68^"*Q>E7"`KZI>0IP#K&FRR2I*H65FC'2N8U2N"[EMAIL PROTECTED]:MG( MR>ZA5FQ&M:K(R0Y])J,3SJ-I*R`GV7R*'WH9&K;-32883"2G_(E2\6QLI1:L MO](2J?B^`?V57'[EMAIL PROTECTED]@!5HM+=<GA++1-OJ47PEH2NW"5TY6Z$TR6Z MO0RZ4HLL:A/!FJ*;#;:,8U`6-\^"6LHJJ+329J`N,2MMM03([EMAIL PROTECTED](=5!EMI7 M`5EJZP&RU%8'66H%($M9_:2U(R(88`GS95",[(KPRJ2H*TE*PBGS[LN`#L:1 [EMAIL PROTECTED]@2NW"-PY5YUAGQC<&4APY;D6#6P9;=%L74K*BV+P98;U"??U+&3\3B: MAH,>A</AS'T)=FV6>ZN2P,HR7"GD!-+XW0'M,VQX&V<F"8451O)[EMAIL PROTECTED];DZ MC10440?&SMPV=5!A]UD77QD:QGGQ1ERQN"=7O#,@B-KR"$WMJR`TM7\Q0C.I M<:2EO1:"`>[EMAIL PROTECTED]&%PNQKP<+`,-QJE:OK9R>T))[EMAIL PROTECTED]<U",+ M:L*5RJ&-AL'*RP:CWBPE7KFXSMP6:7QGL>SEB%YEF5,%>7BO9'3[`'&B\E@: M)ZJMC!/[EMAIL PROTECTED]<J+8R3E3[RCA1;76<J/9=X$2UU7&BVC?#B6HO#R>J)7"BVI(X M42T/)ZH=E,ARORI.5%N`$]56P(EJ7P<GJGU+G*A6!2>J17"BH<].YMHO!C.J M[6`/8],V\LP2(BU;5L:AQ%J6Q(S*BLV#2,DF2(DUE;"'W`P&3=(/D(!8(_4U M)9DZ&M,'"9H(([EMAIL PROTECTED],#2#!U\BM*RU#(#QZ1+MI]105>[EMAIL PROTECTED]))!V [EMAIL PROTECTED]';[#J:V\J*:Q_GOR[OKP<E%,)M#L"[+"[EMAIL PROTECTED]<[,F_U>8K$S4 M5]EFI4!A$>8(@(K$''H!Q:-U5;<$1%M;&J*MY4&T%WW.(]ZR'(R"]A;H)>1J M,28Y%X:=N/*[./\2T-D'.)5Y(&<R\6U$MG\8?23\'WT>OAO[G^#MX0FL%E4O MRM+>BP]M-X-O7"Q07/[EMAIL PROTECTED](*6*XAL/SG"+`</_C2 [EMAIL PROTECTED]/DR@'-B"3FGMO)-<3$I6&R][M_TKW\YN07F"IN8L^*6>#!$ M9K<?7X+NM/<1/4B';+8D41#`$-"1TWZV)/PK7CF0ABE!([EMAIL PROTECTED] M)!+T`7;Z%E^K^X+><^C,GG7A\NAMWZ"K:P3&/5C*>G"=^4S'J[%W;ZRIPTU6 M6FA+5UIH^5_=+?J(?[)E'-S1W<O!+1Y0I<5!9J6%]DTK+7(7P4JM34;6QE+S M*-6HE4+LACBMU&Q+J4J,L'U\TH5*+>C3'`>[J8GIPK?YTY9:"*;M[>%L/AW$ M]A.T['3XM45S%;"XMIY%0-F)W1ZYS3WE-H-%`/K^`BVR!5B?CG072Z^)*QC+ MBLOBX7QG8F4\\OX!ID4^K)->T"BY^K3.OF><\@/CI7U/5F%Y.=]3?LIP=U=L M_8"_,VM\M)(U/MK7K?'15JGQT;Y>C4\^Y;1#2,\+KE90I'[EMAIL PROTECTED])V ME9HF+:NF*;\?&?5-6MGZIC6V(5FU.=KJM3G:[EMAIL PROTECTED],?UN9HR]?F M:"O6YFC?16V.EHE6U4K7YFCYB%7MNZS-T7)K<[25:W.T1;4YO<-V.>U:HC9G MEVIS=L/:'&WYVAQMM=H<[4]9FU-&%PMJ<TJKXG=2FZ-EU^9HJ]7F:(6U.0N+ MX[2BVIP"[<.,K:[EMAIL PROTECTED]/5PGZ+6K,J7(("U3FZ.M8VV.1K4Y6EB;H_VG M-F=1;4X9"YM7FU/:O+[XVIRQV(H[,@D>_E_-FH;[EMAIL PROTECTED];B)!>[EMAIL PROTECTED] M#;1TL8_EZ^C)>]_E',\1GF-<L%^:F;'?6F2OM3)-JUB&JF8A0\=!>1(?]3]: M3QE38Q..NCI37<Y4RVK?44RV++E=\CZMUNW'/FJ#8R:(B?EK-^-C*INI.Q=\ M=X6`<J2(":3<DA);D4(5D&IYP4WMUXE]>:C\-LJVYCVSOJ9B'P/014Y4%_I< M^%RW52SS5=%SO39-O<@CG%HH[=(8$2(DN:WWN&@/[L*=R,JT++,%&2O:PEN5 M:V7&1TA$[(\C]Z6)!AVMH_(E;$'$\S6VNU:L4=O'%7.&[EMAIL PROTECTED](S>QX< MXQXB=:6RTJ0H9'B,7J'V9%(H-X%)GV#0U#<8E!(AI0)G@(Y``0'EZF;0+FO_ MPISAGC72FQ12/[EMAIL PROTECTED]"T`B?LGQX5*IYU7F<2MXFXF:P,TNZFA?F9U!, MD[XF>G(YU<GQ.=W#SNYBK:F,VNX1:+O72:-:(J*%-C-:`B4^\B].003,'R$> M'L[FNN_H]USKU/[^_N;JXNXF*#E_"[<H<YKP44A_Y9+I)[EMAIL PROTECTED])[EMAIL PROTECTED] M9VW/$3N/FFP$:;7M.)_F8`7`P4T=]IG=6[ZX"5C(1`7<D[H!`=XLV%:.C0T/ M=QOUX(%,3"U!%QQF^7^!MKYEVT!-+`'RX=P7\Y[X`(/HRX)^^G3";BM15K*` M)0IH7LTC+]H5[M_FK-?83D11YHF32]J)/*QY9Z^$G:@*-Z?/#'=#N'D9[TB[ M`>[EMAIL PROTECTED])L4W<DG"Z>I/_A&LFBD@&Q/HS01R211/R2#Y58Z,#F M7)[J2#+Z[?%U1^'NHPW>[U1F[A^1;>U??!SQPJ=;',\/#OHG2+X#9<^X4E'C M,RADK)L43?CE4"[EMAIL PROTECTED]:/@9F:E0&'!:NC69V7P"X\=I MW\Y08(E"D:<F\3"Y9[G<S'7_I8GE._T%CT#)#*5;[5DH9M%;#?9$A\]TP"H- MU&J:Q=IO1?8-*---=,:X%"I606DS4+([-;EI6%WN&@8/E#6Z(@&1JZ<[EMAIL PROTECTED] [EMAIL PROTECTED]&.876Y(VRVBVV$S`A\<LF&R,[EMAIL PROTECTED],IMX)=TTGY&?S" [EMAIL PROTECTED]&[EMAIL PROTECTED])FTYVE5;CAH/[EMAIL PROTECTED]/[28!- M3Y1D"HA5[4UH5L7_(9[3\)T)C"_NM1NY"<LLZNP=:XO=:9L;R7UO<Q:=:(_< MO)L3:YBR84MN@(NM\I;2PCM$2<B3:T%V+S_6(#V\_-P-OO)\FO/2:R>)L9QR MJ5QRJ7G+JKECN]UK-]H]46A&?\3S#BIU\ZT)]W3!XA#FAWD'V]K`+Q"-P(&( [EMAIL PROTECTED]'J1&M(E)X9`0H])F20.5,[EMAIL PROTECTED],LWK/G\XGX:)'))[EMAIL PROTECTED] M)+.HUU/'$`]^C:$%WDP&UIOQH36"#H9W3`P7_*$G8>U-=&ZRB`/OR/ZVT':I M^[)=3CS2009!MR##>XH5#PPN3V[//_33U0/R0D'YP-'_M_?U78WD1K]_LY^B M9W(R:U['+]@&)C,Y+)@)=QG,`\S+WCQ[^AB[#1Z,[;AM&$YV\]FOJDI22VJI M6VW8C3<W)#L-=JOT5BJ52E6_4JD<'I^KA$`5=2!EJ56(4F8M6<5M]2\<`D': M-1N40&;M1L4E&B)/E3B2705BU\"O2OS"/FQ].6N?7X87/WWXH7U24B<)1!QC [EMAIL PROTECTED];#S&`SHQ1B3F%-D(WPC8&R+F@;,'<3:GZYY[-`"[EMAIL PROTECTED]>)8U M^"98DZJ*0C&#C5`_B1]'W7`PH]3>01)+<MH^^*"QUN\]<4LG<;_"A7B"E2G_ M+"9U93%3[M;VZAG*N5;,3R/'[;Y9UVP]:7S(KW3K)]"[EMAIL PROTECTED](F&HT98_[2A>6 M3\DJ7H3:4_*+DRX>=4*ACO.7H5(5__(KX%_^GR,FL,XT_,M*I4P1TFES66:[ MA8(T[09_X0Z*&G0<(,>Q[]X&8?A5O?[E7>8-MJ83SRB&`^,N&_"LJWF)Q"NU M7<"XI$>ZTTZT2S5QQO[[_>-3]13WM?\,!EQ?0K\][*4V$`O9(TT*$B"4,^<@ M?TGP#WN#*8_2)N-N11AW?8E)F0\MX4%IN3B9R(?J(O!(0>XJ4R3]^+2;G7N\ MTD03)#T*#8)<LN_>)@B8V8"9\#*L;P3"S!T1"_ICP3&Q8#XB^&5&:FT9Q&F+ M;S>6MA,H$SD$6[I`\G&8L<[EMAIL PROTECTED]<WS:75)[EMAIL PROTECTED](N'37/BJN<,BBQ:[9 M4T4]$;H)H)M[`2HN?W_!-KZ6Z'%;-^^\MHA,R#&/THX8.SO*6([,L(6N*2J! MS2R>%([EMAIL PROTECTED]@8;+VZ4:D%Z_1`*2>5/J8=010J M"'>.D[?2.CT,6_LGQQ>7I:@#7ZX&_\ND0ZFD%0/HF%*I1`HE^Y6_NAJL!U0X MO#C^ORWY,:#KJ6Z"AL*6"H+-C[/4?`9SR*69W:<"\L9*A\I^S7!0+-[T;&J+ MMYR'H1H.C310UW[C[HQC%M2^9KA'+D3,%HXMJ&7%14/9:70WOH\\VF($".>6 MS9X#VE@)[EMAIL PROTECTED]'/X6PKD)W>[!]K&4,DU#DE$^*"[+G!E[Z^5L.>:`D6GNE:N. MHWM]HU*&PSL^=5VMVQFA1D16SE#G;4?^PM0Q7A"[EMAIL PROTECTED] [EMAIL PROTECTED]<"HZ.?TQ9=0D`)4=FC1ZVB?-.ES%8WVR0GV46!N_6!_GRZY0 M'WFNS]R)7&QDA6[WI>;)4[D0[ODIG56%88UV]C?6FV[?IHO[X*ZPO++:KV<W MB3F_A`<>G5,4H)>-%!++JN3[C*(2X<5>/N$?;[EMAIL PROTECTED]:CM*8FTIK*I]40W/SEM' MQU_2GX0GK5,>C\LQF':K>-BD1[%14MNCF9`*>ZTX6>[EMAIL PROTECTED]&D*2ZY MPO\G;*K1W63VR!3+C:`W1I<[EMAIL PROTECTED]<OE6\R^!/Q<J1UR-HEVP/-_CS5#Q\ MS(T9,CQJ7'R41-*M^Q+*X$HC+L^4HM?%=BTYUE:>OOCIXK+UP6!K[4.%LQU. MBU[QN>YW,\-S:0!\U%FGM"7&A./M!IG([EMAIL PROTECTED]&D?!N0`%S<69H ME:[UJ1AU/4K[K4?=DNO'SS#:&^"60_-_WCH[V3]H+<C.3F)LN)9./]8\619R M8G'[KV3HQ';7E5K#!:M8:=0`VXH>@$V'TPT.'4"II/"`</Q$1X`18M>!QS7\ M1?HR=X8*'@:SF_$<2XVN!Z-KX1(PO>L,7P;S08^]<C/HWB")SC1*O+?'[,TI M>YT5BK>$1P#PL<7ZGQ-2M4D`<*6UY"[EMAIL PROTECTED]@J7S*^5>7%8*VOK)A&L#6\H"C< M+)2R<\JYM4+)MX*WNMHJ``4J38+9;2J^K#X=`OG[>@[EMAIL PROTECTED]'PU[CT""[") M`J<>,;&S<=!!AY!-<@@!IXV5%9ZPRG9V@&[EMAIL PROTECTED](BD`_R=>[EMAIL PROTECTED] M/"70X<#A%$R64K+([EMAIL PROTECTED]@^%:%L;,@Q_SSNFC+([EMAIL PROTECTED]/9/:'B MHP_"_`I*<[EMAIL PROTECTED](.G!!\6G3Z"Z$QVXJ:%8A'_!EDJGN$2YE4PYGH"CBO+G MYKND(KJVP&:JC*R_)'B$5PR7>_SNPK,@CII>[EMAIL PROTECTED]>$BM=O>]HBPJ-0V?4F:M M!HH#4=#.!F*Z"/5B%]F6'GR&^IUX!DY9`=LH;L-)9W83/G2&MZIL7B-7>(%W M'JDM8XK'+)*GG9Z&&DF8D7BIS#3D0`%;MZM>$'R2S(3SU5%O\YT\X2IEZ%HM MJ9[6[Q43*9Q!=W?09Y<>*=<*J3"%(87QA#>=^(:[5G#X$,Z+W&_]JA-'BM?Z MIG_GG"\:2J76.][`MT'K_#P\NSP7_K9:?Q-_!>X)L<-=(79<&6EHKXC9I[>/ M)247*!N)2GDK^!RQT\SH>Q'AA/H>X])Q/[EMAIL PROTECTED](U`6O1HLWY#<4WD MX=<+KBA_*_R,X$(*O9;F4/MM:55LPNE&W74>>41G*75MOF%,V/T`O*90E`QB MO%9?+TC0(13M]01*12:T3"`0^IL<HK_I&G5[>Y"]?OCX/[EMAIL PROTECTED])AZ)/ M.*=!_`G4_D;+Q:HP$W1)6G^"7Q1.RH*)P8'0+4=:V7(^6(S8B[GY#1K)?1PJ MVTWNQT>_%!H3X)\:<B(EG6/,Q4[57'D8]5`D*3V)`<[EMAIL PROTECTED] MT!T$U[%OP2]P<'='$7=!B?$X-$(=$%``,MBSRP1+)C<)ONG>#(:]#1=3YI+) M9DI.7`+EY(3EX^N2DW0K9.O+\<6E,HN'[$0+ZA%-8Z!E0&B=7MI/TF[>XZ+/ M7B2+\4C\\>RR?(55JS6TV8I?1.`*N8&'))',`^FDPEU&U,BJ>_#H\9U*<:3% MR:,<J=XTLN<Q33E(J_B*QY,[EMAIL PROTECTED];""@4M/N)[EMAIL PROTECTED](&>1T_#SA!O5 MAG(4`-HJ=H+6;.I91XE%M=C+F5*'T8!,`3SZT#YL$3,8S(<EG;*/;Z3L3($T MU1UWG*-.&&5\(-8JU2;MK_0L-A`KZ;,`?$H#\#;X5QN0!D\/8)UQY'''*<@Q M:.O68NH)B7?=<^`%9CT>[EMAIL PROTECTED]<1QCXC2@)_!7D: [EMAIL PROTECTED])?(O&;[M,-BV9^K<W#H=,(Q4>CR\,BXWBZ/:"=>FL?7'[EMAIL PROTECTED])@Y M>8<4/[IP8>.H1&]NOIO3>44!;%<6KTHE618:'^47D_QD*0]IF":E5VH!GM2> MONQ-YK,2$%!#>I*_9:PD7X;U6AU]/NNU!AVY`,5_+SEDBI=U:7=W.TKYBGD) M._;-?0C?WZ\F<B^/6D&QI];A+>B24#9?42>.33["KKY3)]VEOB/073OQ'6BP MG>N($#_B1S$0NDE+<#%/_LMGE3-Q_#"8=6^"4H(">/3ADG^'8<_EO0"?\,UY MZ_V>ENE<X;]1;\LT;/)^XI"^4D]4'[EMAIL PROTECTED]'0N(._G2M-_>'D MQW13:71R6IIJI+.4M8T\^P%DS>E%7;!H,38J`2NYFWY\U%::?M$^6+3M9<L8 M%VL^U["MS61;'J4\$^35#""51J6,<J!1J9`<X#[CQI9E2`&V*A:0`MK2SR91 M;.DOS7IOU`D-L5'G9A+[:H>^IU9[QG)/;UIIQN!;5^[>97`9-,7&9>H.9&5/ M5T&#/0/I&LRW*'5[^E7L:FE"R=Y&`[O;)#;=W2$V196=RH3SD3"WI)D$+(1: MD&>WT[V)9%BKQM?3NR)\K7!S7D$?;G;P,#_4:CQ<L3*P^J8V`Q5?[FTV*#U@ M4ZCF-NZEOJ:[EMAIL PROTECTED],YA54,N0*9>)%LT7Z>N4KQR(PE"YJA)MOT_J6NX3. ML(HRI7P`C.K%I\UF%?FTV>26[.C;(%>><IO6`HR76_*9.:]<C//*OIRW4VOP M=(---^?QSFJL1_F4'%@@7*8F]HH5'K\^&'4A:QZ?/HI>3RGVO+HB3)91Q,)E MP!K5/3N[T:C424??J7,=/6:+Z2:*H0P::Y&"R4WQXUTA=M+OT\?#'MUI6S;M M?,I^VW9.?4NRE^_L8EZ_RFZY[.9),20J4^*,&[EMAIL PROTECTED]'.++2AHMNQ#,D((: MOXG:LS9P<!_8`$5P_^3DX_NV92_/HF+NYFEJ3]S8=WE*VMT*WW,\]$^5"05O M,3X*#:^1#,XG/=\0IHN3S69[M;(,**.D*DV$&>CS;*`X6U:5H#^?YHO-U6*^ MY499U2YF+J.D$Y:K`.N:LY3PLHOM\M2SNSL9.G1Z)[EMAIL PROTECTED];2,U>>,D&F M"J)\95%#L!4PQI+-%4U'745J!>[EMAIL PROTECTED]'_JJ*]5R=1><;*KE6EFD MD$-U)5B#*P'^,MR)T#U2O$$.,L'#>'H;!U=S<&CM]-`!(QX#),)T'@T?&15P MRQC<1X(2J-N#T?7/JNL,:F5H;`_3VC,[EMAIL PROTECTED])H,GEM&+XECXKGGO!B1+ M'+ZQ+7.U:>M^34N(PC=>LD/=ZLIO4L)DUIE>1S,QN]ME'OQ9T45%7J_)2/L0 M?0_XDE'[EMAIL PROTECTED]>3X/NMK>^W-&A(WB6X6.2%C76B6,TM$L[NG>Y=6,Z%+3F% M(6Q2-XZ_\E%J;M,::-9I#108I:Q=BA='U[%_+W?[-&%9^-O.SJEML%HITZQ5 MRO99<_;9:];^K?/U1Y-$8GH&,4J"M](YSK)[EMAIL PROTECTED]:?P>`" MR%()[EMAIL PROTECTED]:A:D_4N9368RN"HV<MFZ?_<-W#VG9%I"KJ MEIQ'JWZ66\*MJ`E_-$MGK74JXY-;)E6K]P`1S]0JZ"Q8J543;T%/CCG\GX_M MR_#X]/A2-$DY#O)FI([EMAIL PROTECTED]"FS*WJ6I>,Y*,`X."C!5X929\Y([EMAIL PROTECTED] M&L6:AYQ+,Y=<M')R<D$.^%9,[EMAIL PROTECTED]".CP-SUNG^Q]:0D)44<"O MLR?/<ISVA>F-Q=3KGH>)@L*/!&[EMAIL PROTECTED]),YNH.W6]7./PD>\38:ZD<A[\IOA M_7)K^[Z4A8*O2^^,2NPG`NP3G*`M!P/X;GMO"4,[EMAIL PROTECTED]"5X`,BY!^:1@<()2 [EMAIL PROTECTED])[EMAIL PROTECTED];IS<*(4"H0]#$KI=)^".L7/Z7=(QC3%=MZN]'5'+`0 MN6]>&@[EMAIL PROTECTED]&GP-#%W[:!$F<`*AUW?R MN,`&@][<J];WZK6MVNYNN5:I[M94&/0R)@6D!^9!([")X/[EMAIL PROTECTED];/[EMAIL PROTECTED] M;.NY;)V?[I\$C7J]UC#3)0+W0+`;0I'TQ](+B'T<1]/[:+H6T%.W1ID>^LB$ M1$)&QP`J^G?KSU2!W>#EK%;5[-67X!\E%M8#,[EMAIL PROTECTED](0JX!G<E M>3/*$=FIQYOO[K:P4U$/[EMAIL PROTECTED],+W&5E+DDRC:'A??8:) M9U22R"CKY#^AGMSY3]?NX`%X$9[5/RH?5';+_)[EMAIL PROTECTED];%`__*2`\%H<"^>[EV/ M*D&?#9`8D*V`/<];__.Q=7&YAT-3>&Q<!?0$!AGCM-A`649*F%JVZQN5!MLL MZ5ELL`19>)[EMAIL PROTECTED])MKENYTVD.^9[`6DQ].C]AX/L1&$M`7+^5ZX [EMAIL PROTECTED])S*XQN-]<U1Y^:S6A)^J&0W"Y5FL398B!9KUH?WQ]/+C\2'=2=)<ZMFI M9G>3P#'[M'R)YR!B+C=".F'3C#([EMAIL PROTECTED]:AUEFFSL%%[5 MG*PF66?3,60\@,)!//T/&ZL:I="NB1S:_F,%,'[EMAIL PROTECTED]/W(/+8TI#J MTOO3X]/W*R:[EMAIL PROTECTED]".L8]=`QP=Z+"80RV]68(S8?^(G/5R?]YG: M>2@'K"#3/0///>[EMAIL PROTECTED];YK48[,Q4<&CM#/?=ZY([QV^7R M\ZQ'QD67)^%)^^!'[EMAIL PROTECTED]<ZOBPSB<XSAL_)[EMAIL PROTECTED]; [EMAIL PROTECTED]&.&@03:2-T>G)!0'!F\*J=7G8.KT\_^GR\J2XO%+"U!<>'1[&SH:H$']9 ME#@"^6G4:'!JEL%1?N)Q\!!1M-T,LCD`[L*X'W"55UX?,[EMAIL PROTECTED])D,! M$<^:%LX`I($N/K.'TBG&?D<9EJ4-+Y_YA?W7&TC(//EG0;.+*)8VN6QGP'YJ MQ3PS3U4([EMAIL PROTECTED]>Q"'W\K,DXQ4VX1Z;<,P^]RHX:;=__'@6'AZ?MPXNV^<_ M&9`_F-9Q?QH!-\^FCX@:,N8!I!)[EMAIL PROTECTED]"?TD"N\&0?V@<I9 M0QD';4$+MT1#2NWP@/'=Y2\\>.L7+9Q*'G;U:"RZ4^&Q6$^C;W2;_U[!"U(* M9J&4H.Q9L[EJ66`I1L^%`3_J_Z:9._E7TTD7;LEZP1K\*ZXU[;`F-"*DO;%G M4]EJ/=JZ**#)\L*:[EMAIL PROTECTED]<"L4`X1YL#+"6Y/[SG"`IF[* [EMAIL PROTECTED]>7'W54*+([EMAIL PROTECTED],M*)Q/FZ&!32#APO3[E32\,6Q&TLJ MY+444J-%TTB-LE))5;>S17W1=%([972#IH?"6-<Z\K:1$H<<!%#/9SLR)OEA M\\S*#1+9?XJ&F#;[[]/^R?%AB(F-WNB8'23'0[8.PJ.3]U+)D-F6?!,P:<U` M!48&V%J)BSQ+.7F9U"C=A9,SF6W#3>]S!!?X$'C;97(IX*,-=0%L%IIVNQU8 M/9TK4.ZHN.(7)DBN+N5"Z,$__1ME)<A/"B\%6=*"B%;)7`M:23^H<[EMAIL PROTECTED] MQO8PN]T$\2A*!/X7?9O<)SX\!*/%YO,V"N(YTV:X/V=P/6`*^C?%SPZV'C+; MOZ;8"K$05E:H#`1:@,[EMAIL PROTECTED];#AB7B48IW9?!=]"PWHGI2G M'^;>X7HW7G\3)3TV<CFYD4DOC1?Q[P4X$<LMP(>RG%_6YSI98.J[4A,,&1DV M!7MH0PCH]K-7$H?DHXO#\-/VJGGS!<BUK-S]-F;L&(^B'"!()>?3A/TK0--O M(_"B*TK,?HF5587T>QM&(_2])1#-JWD?/\"1(>]U>L#)Q+-1'CAE`HJ2<WAO [EMAIL PROTECTED]<L0/J8/;(\UT9`)8;`>O)!C1Y([EMAIL PROTECTED];(>^62M,:OLNF]9'&0+ M`1'NHGCJ&[EMAIL PROTECTED]@</.K%XNF]7=C!%!'_"?2WC^NV03\^VFO0CON^&TW\` M!#3\JR)C<1Y//,8F/(&2,H#I"1<-)G8BB%#P<`HAD0WEL-''T4VB?P.FBIN0 M"<3Q=);(Q&S2JBMT.CU9TBG$!::.]0KUK&>MG^=S>[EMAIL PROTECTED]'-:-;2/$+ MYP4#A4=G@@F)!YE=F8CB:>&-<I$+^>F4FUP5?('*Z<@?C&J/0)B"08=U?M#A M([EMAIL PROTECTED]'[EMAIL PROTECTED]@HP-H[:/0;G?SS(:[EMAIL PROTECTED]($.NZ#^ M+8$7U"8!>$+6"$\!VB'5D:14L0'FU-3NL`VP,Q^B?4281"=3MG7<EEX"M^T% M5QU"O<.DAL&?P1E&Y</_';W<P*]$H%RU3N=K>NI,&][7W'RK0_L)\._%^/%Y MV5'5VAQBEJ<G).\J\8OHO!&/:ENR&&@)1R1Y*3OJ3AY+B%4)J([EMAIL PROTECTED] M`1V?-$7UZ[_#YS]+H[,R!*+Z=.CE*'[EMAIL PROTECTED]"'@[EMAIL PROTECTED]:/Z=1*. M28!.^CKQZ(':\F=I>-)@Q6E8<1EN?6'GU([EMAIL PROTECTED] M<UB4XR%<'\P$90ERQ)9KC">;L0)Q]\98*-3C,3`T7RRL4\:R2+W3SQH1S7': M/@;F('!&YOP_ZJ)3>8_\V,DFN<VMM-OJ^.BN\:[-;<6^O7'6X7=?VIAPNGT* M?A!;^8R;I34G:%L)[EMAIL PROTECTED]&:N]T86#W10G),1G-E'4!_`F0::I7W5EU]QO)P: MQ\OA``_XMH[#4'!XT^.K#!>G3,PT-7SX;>^X1FJJQH<2N-L_X1KS&"!7SS\P M/8`;EI6INDMV=D?5ZBM>->.RQ[/Y5!_89H5LZ?04`YLV'L/@[EMAIL PROTECTED]"!;NF;3 M0C`G2X*?OZZ\)-C.E\%>\/*E>$U+^`/O$.R<>&D37]+,[/#2=$POT(!8K>V* MU<(L`D/`M0'2#=A9+IH&?^Z]_G./S"[EMAIL PROTECTED]@YZ2=?,:_E)@?N;&W^Q[ MJ(NS%8=A;W(<]F;A44Z,>R]*G6XW>(6FF)/VP;X\:ZP*"4;[EMAIL PROTECTED],&D:_ [EMAIL PROTECTED]/,ZM2Y&-*Y7S*?=<U!ZN:RP1?A--Q/T[2N[+UH'2-KL9`G*R] M#BP,925(JYKCZ=0V*E4$U,%?"@YW$`3JQ,,]N3[9YIU=!HRT,A]PM_V+[-XO MPIRVFE+STE0T.UP1D@&_1^4XT$SU32ZZK@:CSG00Q4%T'XV"AQOV#UZY59BF M)[EMAIL PROTECTED]'1A/F;+B[2N&`\J&#YK$2LGV<Z]J?3UOG8?M3Z_S\^!",]YL^P.(9 MQDH_$Z46=?I7SBNC,6)O,Z%07LX+([P_YE9)^KV819+*%(O"2<KXQ=_4ZKC& M^#,5'X9^J[TQ9,X+V5H;=>'[EMAIL PROTECTED];9&2DYD,!F%79&O9#.3UG8L8D'SJL\ M[%@>O&66,`,@K2T(%"@_NH-=($,>-6#5KY8$,+#6V":'Q0QPCCD&).FY613L M^S0JQ>_9*2:&#A&4_F$\107S)B(<^QA3O@@P;[(\8J:8*!S?EE9%*J[:#IF^ M=W:+#H#KQ]%0\H_2!#YX&VE;`I-VF_PNWY,I%7^H[&)6!E6]%FW-QI.FU3"- [EMAIL PROTECTED]>[EMAIL PROTECTED]@UB8.5URR)/-!9*CX/X9WMNELMBV.9OX#\/\][]3+&/1-#\>R M(YW"!(C#K1=\/&AD*45),KC<_^NH?7+2_OP+_TMDEE>[EMAIL PROTECTED]&[EMAIL PROTECTED] MAXQ=KY+L,!YE1$BO6I:N;B_F%\%]E>E._Y@/@-1#Q'Y'A5%U0>N#1C66'D+8 M9G0*2X""/[<O_X8Z;;(X+&"BY$:46=Y81>[NK`KO25;H13R)NH/.$&-D2W9\ MHF3_Y8.6X(>396X:#:-.C)[EMAIL PROTECTED])1:KS;<0KE[8P6NM.RW61N]I9M2V\O8 M]"W%E$6BE/92`+#+=8Q0J=<S]J$^]5D&\?"425+M<;B#2#LLJ[:?!Y?OER'$ MC,LS+O"-"\"80IHF#SU5B&E8?JO<4PR:N$<#TB37B&8SBP<@$"<%(?E'Y8%& M&741P'[EMAIL PROTECTED]><()FRDNN)^RE>A2ZG:MD+3R%<9&\S&0+;B"NU7ICNYHU MXW=6:/6ET"=L"G:#``4:C5HN'J*:)?6&;[EMAIL PROTECTED]>9$OE+O0QA`=> MX^_7T_%\LJHG^<[EMAIL PROTECTED]'"@X!YW3O(68*?`A6_8:%*>L68CY=F=V4?++==S3&** M>]]8IFT!UFV6L9O-<N:&!<J0R;I*_:C.)&G7$IU&4ULD)HMRE:\-I0(\R"</ MITV[MG<5$`J+7M"^4=.DI)%6FY3RJEG)V,F&EL'(&`NZA_G##DB-HAMJM4RQ [EMAIL PROTECTED]'5&#N^4WP;]ZVA6ZB>]AH^S^BPD=K&.FZ5,])'4*/3!\H]ML7=_Z4Q@ MD\%$NDO3[\5,8%2F&`1)4L;/!%9'Y9<>[`,H3O`S]RG\F8G`G^%WX[>#(=/% M,;5>Z>SXK!4>[<.M&5I,6^<7I37A7W]Q_/ZXO1&<L6-2>'[EMAIL PROTECTED]>P<EN M<[EMAIL PROTECTED]&#*O=86_\/I*)IK-Q$"S<5!1O.]G?']</EZ:CKNO(?.C9*CD [EMAIL PROTECTED])<E11,^]^7,ZRK1D$O_MINXM&;'HE&(A&T+.H(5//TR)^B!!>.`"+%P"MD M1$,>[EMAIL PROTECTED]&!(K4==).R:N)!142U+./EP#0:,.ENX'89'Q;C:J-P^MY@ M>]?-V9;"7MQ=J?+<`_0$E9.[]0J**IY7H`A4LLJ1!(Q7Q8H0!T=Y?>>0AG#W M_L-X=F,5B9F%+1!?6<2XY?GUZZ#-N/$A2DR5D`\=<K,J=LRM992;<FHU>##S MTP5YS0D25JMZ,)L-)RS3<7Z'[EMAIL PROTECTED])980.8LUUC1;=$+R?XW`V#B'>`WXO M"9"[EMAIL PROTECTED];2-T28H4=/$$5PT1]\0:XF<^DH7D5\9FD"^9YZ_BB M=4YA_Q"^?G2R__YBCS1'U_$ITQ`P,0T!Z0!";K#.L5BCU?%%MS/!,)>#?3#: MPFVN/%+1B:KPT%J[_8EI/\?MT[VGMTWK,1T8?[NA7.'[$I_OQ%4$=JH.!"=; [EMAIL PROTECTED];U:66!)@*`"XD*>[EMAIL PROTECTED]@A)!H6`);[EMAIL PROTECTED] M,?T+._V]GM/5QM;-.S."AJH"@ZD2P9#6L\"36*C^%"!VWQG.06>BO0X>C/T\ MJ+F5++\Z5&[EMAIL PROTECTED]"ZMQ^YYO7Q67Q945H/X6%3#=GBN%`Z<7B'5& MW8#P!]6.ZWP=NZ^681/$C_G"V`="1'[EMAIL PROTECTED];<)%0V,0/=@'LJ[K[*YBENH? M?CP);J)A+_C[5=0?LZV]NE7?^O8S)5H@'C';GL<FUMEAW.%')X]!'-2!+R2` M$89<@9X./*'PDIQ)'+:=!N)`[_#L2+[=U&[EMAIL PROTECTED]@.VQO$MR4,.WF%7/M& M+\-E-"0(P>*8[MOXX<(4A.VJ2#1"+[\AY5#\I#A,LKFT)*,-2UE,//*J&!7R ME[632EQ"O=K6BQ+^!XJ>C5&+R=;8QI:7?XNI:0[W+_=75>X0/TSGO01H&8A2 MCB/(4]+KL:4PC38P,\F`'?NBSBAFVFUGABKN_L%)\-")(0;)<J.^QO5ASA'3 MB.T-,=OQ,<D[?H67H%>#6;P5'&,4-,""=&(>$5FGB,BZL88'(_;>8!;[EMAIL PROTECTED]"2 M'0EG?J<XA@"HT'CRB&WEKV.;V:G"_&C<[EMAIL PROTECTED]@;_^3AM$?L$7 MF#=\ECG.DF\0;'7YTUE+1%Q)T5B`!M-BPN/WI^WSEIN>C0DLRPK/6%TF04?S MB5+H5PX,[EMAIL PROTECTED];[EMAIL PROTECTED]/."!J]M:6-L&@EQ;DS<N\H]'C3;+#O M\`J7`Y!`7<8%YA`O.LP6NJE!=0^W.>1(PJ!`8[]=)^>>>L48>ZP8;N$"FT!V MU"E+X[$;TW62$(D#$^XS-4BX\6<2!8>)+)JV2;1J`<Y9[`[9`=LQA9F4,N=0 M4+5.(*8T]1I-#EU29#S)#EC%P$G^!$NSW#-)/P6%Q3;)%LSC5-'87E3/%HC; MUW?K_H7MRDB:),'P9>NNI,[EMAIL PROTECTED]@O>1IX?1J(1;&:*!L3?'_9(]%G>SHMO_ M$'B$0&OP$UW#=3&7TC0.8>,NC/W-H>`Q.[AU>TW/[EMAIL PROTECTED] MP4B&8.)KR8=L?27G^<2(JA!0M,\U.B&\2HK#6DA:[EMAIL PROTECTED]/SI\;\8E=AW&_I M9N;PBJ*+<7]NZ6+L_QOROPC7?MH"D"K#XBO`0<)GCA9<`_G%EWH1\.:_679C MD-T0]#0CD,T`5-OU-0"EC#_;E;WRMOV*;0?O([EMAIL PROTECTED]<MK<Q=>T"B%6 M&[EMAIL PROTECTED]:3OUP9GARLVW$H,\F&8@'(H^<I>*RU6%68!&J%O1-:Q1%= MFLRXEEP6?L-H5ZL+,%S?'[EMAIL PROTECTED](5^RXA1H37T1A.*]5V4SA++WE`5B*=8`L MN$%BVTU]!];=P/`T,LP'BHU<*2[]C`*;HU&@>1J13VSB&@OQ-7BCM?>=..N( [EMAIL PROTECTED]'`!4:U\Y\$"UWR2G8;0I.^]4*)267#HFJMILG%/RC0:Y!:SF`AT_ M('[EMAIL PROTECTED],#=)>[EMAIL PROTECTED]<"_V/[EMAIL PROTECTED]>`/CNC MQSNPJ''O_6:]C*%&_"EOPN%_MM56:[EMAIL PROTECTED];3-]I2^3W8EM("(N=] MZV!",%'\Z`1=38`L-X;[EMAIL PROTECTED](F.7EJ,0<GX50U45;"KW]Y&U0U,Q)< ML"/RXPP:A7^YCD+^IU%C"<@0Z:`$%:@("Y0LS_=U]5C(D]8]Z7`'OJA4B?A4 M&@!A$G:;:,VBAV&11LJ!W344MR1[RF'WWA1GT\S;-DB1TZW3V?06V9QX+1E; MDW-/,M4UL;F/>[EMAIL PROTECTED],["/CK#48]_9N0J27]P;>@Q,4>[EMAIL PROTECTED]";M"3_#M<])N M8'<.#-8+[YD.!IA_)H['*MA>+R[W+T,POH:?*K85WCX[;5]>?#P[<TD0DZA; MEJ1C9Q;;#%/=T+?%=(-P3'?Q3IX>"XUIEGA(ZDP6H&ZARK!*&84W$TG!F`8A MUBQC9S'Q$T-R<9-+P'51([EMAIL PROTECTED]@Y$'3Y6:&[EMAIL PROTECTED])<XTNAO?1\6$ MCKI'^Y0OND\GV_$SRXQ*N4J(,/14QS:G'_^5&[EMAIL PROTECTED]"4 M&AA,.(,R!8E\-'3%&U8J4WZTVP5E$:.J:)4":04CHT"6AIVM7?\J9M*MQ6<V MKT`QK9%<MTRO_2Y',C[X>'[>8HH31W6&G[O.]#:4V6=GC^GIY8NFMDU>@?1D M'Z'A?L]B*`I#V70%1G<1EU>FQ!0AMHB[ZX8SE%A"97.I#D>[.=P8AK.5E94, M$'Q^\UF15Y^^?:#(UD6A\)<2!!\BNP%F5/S"/B1O7O0,&PP'LT$4"R;2]Z0G M\HZZ/?TFG$..THI<=4RSYC(-OL\5L<[]RNF.TQ5IFW6-%O)KU'O&0<NF^+N. M7?DI8U=>=L=Q88(CL%^')U_R]9/<^1(RQ<"Q,\GXA>[EMAIL PROTECTED];C`O)#0QM?9MEC+ M1B.+/MF,ZT'IF0RX>6?CU`W27_0+I(L6V\2/+W\*S\Y;1\=?N/)E9%L.?$<F MJ7,0*RMI.K@/QU=?H^XL`?9**9$\U%-;QC9CLG8*XR-B.X;EDU#.878Z&2Q2 MR/;H4:KP::;PO*9'G-\-+KO\8B,3SZ*>0WS);Y\DO225M/"J-KR%ET;%3W9Q MQU227;[EMAIL PROTECTED](PIBCY9=.436A+)=7G^\>*R=6@([EMAIL PROTECTED])[EMAIL PROTECTED]& M&5S\Q,ZIAQ^.3U%/S1%J?UBI)D:ID%#++_3<,BTUXW]8D0:A([EMAIL PROTECTED] MB6)YHYPD].OU[8J'&[EMAIL PROTECTED]:0L.IV?8XJ=T>Y6_&Q=*>\_RZG#GL8RL95X M$U"NC%+$=%?K=.,[EMAIL PROTECTED]"L-_^%(+&8L^>0O(H?([R'_NL[%1J8//!CS$N,2^ M;(6FAQ<.'VT4YNHG!+UU\>GR2[X4+\AC:L;8XDQF33Q;@+V6>M_!&2VTZ>24 M6/!.(%F)>HRC;_O^RW$*QRW=WAO?71E!].HGQ79:M:[EMAIL PROTECTED]&<T,\5; M[/!X"T:[EMAIL PROTECTED])MC%>"E'[EMAIL PROTECTED]:+1"6D\GP(:.ME-([EMAIL PROTECTED]>XO=X MVF%7U/9TH`E?2D_(,>M.):M$/9([EMAIL PROTECTED];L8>R;EB@'BZ.7\PFEW M\%:?'CP>G)&A4/",R4TF:QK%$&WU-E';13+0P"_I>"[EMAIL PROTECTED]'<-.`R2J@ MX;WH:GY=>CD:&\D:^34)=>7/P[G(&0`_DM'8+ZM+R%>:X^Y"_KH.-]UL]`:[ M=VZ&%03U7WY[CK*K]6T6C7H0&\8H#:[FLRBX:%T&\@(WUL45H'9ALL-O:L): M>2.\$6C(O]SU`A13\9'P<<[EMAIL PROTECTED]<?D\R0<K.0X^NMAV7H24M]^82XFF0;.D:1P M([BE9M[:?4]6#&Q,[EMAIL PROTECTED];K:??!>CK"G!K6?:E0/D./QOIG-LRCA_ZFJ`<2 M8I[8=A\3-QD=1)H2+BFXEP[H0'K/CCZJ*U";:B8_JE%%O\OP/<HNR&'SLMR. M[!!Z*6!,].G"%;M;3<9GZ#%`.7""_VF#5"E3+IBRPD9]62^*`*MH`I]O"\+@ MB[[?2/15P,!B8Z$5[:O[9^:0D(>Z>R"[EMAIL PROTECTED](XB+-&`KYV;07GK0_M M3ZV<W4#Q$?+9$/"J.JN$XVR9IF,*]&`%7T+)\W<E;.O#_I=@/:C\S)$XRF0$ M*DL?,K_F9TILF<6V9_KNK>:(<[5Z(3;SA+=1)I'?2>986SL0Z%!*WEJ%$)PJ M.PFOJ(1=TN5Y9:]:HR%9#-02^WN*("DH-&K<&%A39:O'`/P&LO7?.`CD'"9] [EMAIL PROTECTED],EG!*>SIYFRTHON;B]7:=T%5PN"KC#1#2Z<[EMAIL PROTECTED]&%&( MC7!:I:-\%'`75<"HZPUB-NC=FV`P0U2.TFHB-+=4SUU1LU/5+!`IX-1TUWUK M63Q^(%O+YG0-7U_^RYL4AK83PIW@&&CNZL;<Y?6-U2)J?LM;[EMAIL PROTECTED]"X^%]%&+> [EMAIL PROTECTED]&>%A2MX"OF94]!#?97;$!GNRU]$Q;KDX;^>52Y7#T#[[NLU&AZ$ M5U_?%BCK_L/#6+LS>@PZ<3SN#CHSMO%'*0W`RKM9.Z;;Y[Q`Z2+6Y>?EM29! M?S0K^F#FM7E9>`U,+AM!6>08/V^=G>P?M`KPFY,`\5SKRUG[_#*\^.G##^T3 M"1HK0JF6TC##_I/?P5_A8#R)I:7&\6U!TXV#BL66DP%HG$7%#]V8B8"&(@FX MDHY2FQ&&D#R`SU3SNW+FA5"'XP-<Y/+-Q-!G+*$5$5>\OF*UU)!.3H[6&TG9 MM"69["]5:'-=M)G7+O/;6=LF15M"G5;CBMRWW6U+I,B*/`0FVQNCP)J(S<;] M;06?&SQ)[EMAIL PROTECTED])#F%MK"HZGJ.]7.K=C[A#^]K]A,F<D^/33T<7X?O6 M9?CIS!()\`=8E\/[EMAIL PROTECTED]/795(Q(+%W"RR*"41KS79;%`"A$9%KLDIHBBJ M*6@'8T*Z?14<MT,VD<<7(K<S2H'NS36")G\;3)A<[EMAIL PROTECTED],@[^]ATB0\$,;DH%J M'[$GG3BS$)OSD.I-4&:9[ICI'$O)2=\$=HC*0<J'Q3E'*5P,.<-2V.\&$I*' M-`#RK<*M6$B%9X+CO*(D+_MX<<Z91,:V#!RW<C#=K]DYYOC+A]:>XDVS%\3S M"69>8[.PB6)G,J8+HTX/8E1>$)<[EMAIL PROTECTED]/,P)-!*O)DD`H]&5AB3X"#6^?G[?,2 M!J'PR*7:3K6,([)3K6SLR!&1RT'BQ3!AR98&+BJ>U9#86@;>0$["6>[EMAIL PROTECTED] [EMAIL PROTECTED]:+ST'[EMAIL PROTECTED];YX MU]FH%AI47LN+9.67!A.:I3F@,[EMAIL PROTECTED]<'QH?V0D3]O[L*IY'!__2WA!)AF" M2R51M*0)@[EMAIL PROTECTED],@?%+2ES05+Q]&YAEV3?+M=HYDC!]^;H[[G5"_'7KAJT] M]Y<%5K^;2%J9*[N"+;*)+("N#N<RMDP4Q/XP,<D&6`'>!G]'V:7@;X"H,"^' M-P(]B0H(=EF@/YS'-Z6,%QR>$!:BF[+,$_T9V$;E36HAAP:]?^RP/<#M$$F: M!SWM97;D40^#B=:V8<*4R`]N01\WR,[EMAIL PROTECTED];5J'\ M9N$E*"D4\+/(H."IM-5(::MIRP\/[EMAIL PROTECTED];L^)UX$^:7WH1T1.(].GJ' M*I-P%@:>2%<RB+N=:0\,"='TGJ*I2U[EIN)6-OWZIM)"?)OG]J6-].N8[<:0 MTI3M)D997$JP(!<G8*Y003+=!7'\\^IO+"/Z<1/T+=)AAVLKC.MRKS7K,GO2 M"K,O+J>'G;VPLJYJ#9O_.WF?[)+W>D5;5\!*C&[EMAIL PROTECTED]&T0B"0MZ8B0.N M'F?1>-J+ICQU`-.]/L8$]77%E#,FY;O3<?!PP_1#PL;J=B0V5I^Q$V6,&#'5 M#K_MR`\Q`%ME$7XF0FW-PH'KON_:]R2*]U=IA(Q]![P4_IKDPH,+5I.#4Z^' M46<Z?"S!EP)YJMK<J&P'ZSO;V_!4DT^R:8MXTPG5A&[EMAIL PROTECTED] M@/%/X+J##U2\Q:W!JA`!$T>7J=2SR-7[9%,;P(Z<WH<-L004[VXAVZ\/06MA M5L"S-;WH/K31B!_O5#N9FXIJE'8U*&5Q>TQO`2G2%CH(J%4J7FX^\NF+K4), M.ID_"/F4UPNQC+)%%&"B]2),E%.%E5P&6^6V6##:>C%&RZ)K8[WUI[">NS(+ MY4QF+$0IFSV+-2J38;,&<Y':`TU:\B]20I/<N""XIA:L[S;J'$U#K5`]S0F? MEM):?SP<CA]P"E<#YR3J:X#G&"FM"4M_\9)"^5JU['V;O&G)86PUL"F*KA7J M4]RJ)CH;303Y.2JCL\E)2O3AVBQC.)SFG^,VD]J_N:K7%JEZC;Y!%PP;?-WF M-<KK8+GNT:`T7<\F!BLBG2`VTZ_'@A)W%S#(R*L3*QU.0984PZW<J.35KXQ) M3JGL8<$+T#<4546*4O0/C+,0P&25W8T=1-`RDWTG^I8)V(1G0RU0*WEW-IYW M;TBK].-.>O(4H$PU-FR/E!(Q>!@,A\'U&%/+$.Z0JK]:KHW6,U_8$/KLKXYN MH*6*C+!1+Y7!-UI-8)[EMAIL PROTECTED]&K-.IEYU7/!&"_06$?"^$IJJ:"RAE=#J1?'F#@& M0)7O.I.T0.'?*HHTD.8R(P3SD)9]VGB/'TOHG.LC7Y2R3J.5KS)LR<MJ(Z1M MA!GO%I&MZ\6:X4EZ#4,Z:$D2H!0DS;$:&[23$K5BQA$9^:U(:G]"?JKOXIU; MI5'1SYFQ=%FZFV!D5Z<7PDD]I"C*TKU6&:U4;MT8.]639-[5PF%XQPZ9E/\V MD([EMAIL PROTECTED]&[EMAIL PROTECTED]&8_.4ZDG#+FE,RJFESDJS49UT(*DD"(:2 M6S8MLV5E!/EQ;=85\<7"%A9!H`!>DYN`7YS/+H;7TB-U@<!G':G>*(ENXCF% M6XDU"]];V7N$JG9_&L4W5D-CLNPS23S)B+YI$%M(U*[[$RFDEAIDDYQ"8;?# MA(+S&#F==.%HW#.&D)=73A[JZE;>Z/1Z5$/6A#BIB>9:[HZ,6YXE-Y*J&;LL M"UK_>N%EK9-)>PDX<WSGD?%:XG6>#<*F;[EMAIL PROTECTED]&F/9$MO_0'K_:=#O1?W@ MH'UZ=/P^E)E5V/_/VA?'7R#+S7>6Q"K>R3PI/::X!WR>E)W\)O"WS-O)[^5\ ML[V9K^<DYH."3.UW*.ZF_<%>!:[LG`K^*"N3(E<SUB9_X>FKDQ-*K\]ZN=CZ M5`BIUQT5&W`9#[;=Q6#;7<7>X\#!5K(Y<#-,]&TP6Q5&_2`Q#ZSZ(LX8>##H MJJ/F+];L%ZM/PK')I?,D)!NSY6JX0=()P)7V1#=)C`+N0IXNZ"K"]$B8-+P' M$S=<]MLP&@[EMAIL PROTECTED]&$'%N&_'[EMAIL PROTECTED];E1V(5\K/'P8[4],@L`N M<=.1$-6#J?#J*J4R;8&+DG`O&H1:(:;3BT.5;UZ-C)QMVK2;K&I*_Z)UK!<C MX)UNSO'C'S#SQC*&TB[F[B"VP6>L%LH08&[EMAIL PROTECTED]<I+A6/?!F_'#**N$ M>:K&-U-DB(WQ,M6T+(W9L7TMON+^0VA^DO)&H_%4K&LWO2>A09OS]]O@:+MK M^0V`I]$P8ID_"VI4V@;L6RZ?AQU<A"AR]%Y66RSV<%N?+-AK)AW-3F_MH)5( [EMAIL PROTECTED]'.#[\C$(;3[PQ;@V,;PLA9&:.US!JK2U%]JG[J5$L]W4H=VFAUKUQS [EMAIL PROTECTED]<PE1UA6\S\$<(:1O_JY=FZ*7BOHB_8,;*^<?]9JE% M*?)Y`<UVQ4')12DDTN\1IVQ4M4A8*9?M_[YX9Z,!SQ?<BMSSIVC$9"-<Z(4G MQZ<?OX04EODWN+Q;,J$YZ;Z^^\<\FE,(COIG$1&I%+,[EMAIL PROTECTED] M&Q6TH-$C,:%I=L[>V/!4PIQ'*RO)[EMAIL PROTECTED]@WE;?`*YEQ$2F&H+D^#R`FHN1PW M`L$,&"0I`23S2E$?PSMR*+)0"&[EMAIL PROTECTED]&K0(TO;IV?AV>[EMAIL PROTECTED];A(K1 [EMAIL PROTECTED]"BU:J?;_7L;HD,^M`];/S/R_T3(-Q'[EMAIL PROTECTED])\!7-IE=KA^>'G M\^`7]OGG<\R1:6L&QZ=;30#J%(-\ZO(Y:4^JTI_YB`C<NBPRZJ!ZD;2U&]/1 MTYI=`40\&6!.QG0Y669=?-2;58SWH`?[H!.C5UCG.D(74(3EN/N'\)1*9`4? M=3HF0<,ZL_'=`#S.NZ57218ID#-\4)/TG)Q8,[EMAIL PROTECTED]'+X5TLS:4<\2MD M5"#V$5)VEI)OEDR2W=TA0N-=9X*23/VS@"13BQ4P/9K%O"19M4Q1IOR)B:O$ MAD0N&(,[EMAIL PROTECTED]>%D)J39;8)[EMAIL PROTECTED]@!2#1]DNUQE&<3="K^P! MVRF[,<*G7(_!`SSJSC9GX\T?CML(L=(.#X_/6P>72<`<\-YM-'PLB2J$74J\ MBG&S2\=.\<U==">8B?]1C)[EMAIL PROTECTED]'HA/S:[EMAIL PROTECTED])ZZ\$=BH9XZ*!1WQPGL MCH$*"$G0^"=N`&SA0;295UV<7%47.0[D@>4L7.UOA9[#TS-T[R8E(O#R)>ZB M91T:9"E3,(RBV>OY:/#M=:<?PA/9/OUA`?9/%[:<F5WRU%[83S]LX)Y,CY1^ M&*.)$$B&F+QTS"3:5"P&OETB#-=P/+Z=3TKQ?`1SN?F._1(21MA)N_WCQ[/P MJ'URTOZ<0(9I$IE$<K\S&`H8.:";:#,2!2S9?Q5$<2*Y[E=.PHBE"%C;!`[& MU"X.Z+Z+J2GHH<L.'*4K-DHE9?"8IKL&3Y$#,9"I&2_"XZ.+]L&/P2^*-:($ MGX3'ITP3*T&Q507>_5]LH9(.TH\WW\W!B+BJ#%?BO&_KM:Y'E]7QRBXHABM- MP#I>H/[EMAIL PROTECTED]'XG3EZ:<X/4MU\H6\I#]0A:H&\;9A*3C^JK`*G>1L&"_N\(^ MLTAXK?A*;;O,4Z664TR,`+?6L!6FN:[EMAIL PROTECTED],N3NZO"29D&@YRVE5A&G0\7HD( MX_&6FAJ%0V6SM:)`7UZTT&[EMAIL PROTECTED],DVHUGTC?$M7CJ6$\3(I6:^?OP:Q&<\Z70E [EMAIL PROTECTED]"?GTX%E:HZQC[J+$472X,XC#M]R53BUD-($2G;YDQ] M>/&6B1W(>YR2&.Q;(YTK3VS!&#%UE+;0T,0^D_J6D[.U%'QH[AI8/+`TA7]0 /?B,L6]_]/S1[Z85HVP$` ` end - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/