From doconnor@cain.gsoft.com.au  Sun Jun 14 04:04:25 2009
Return-Path: <doconnor@cain.gsoft.com.au>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id 1DB081065676
	for <FreeBSD-gnats-submit@freebsd.org>; Sun, 14 Jun 2009 04:04:25 +0000 (UTC)
	(envelope-from doconnor@cain.gsoft.com.au)
Received: from cain.gsoft.com.au (cain.gsoft.com.au [203.31.81.10])
	by mx1.freebsd.org (Postfix) with ESMTP id 8A2B28FC0A
	for <FreeBSD-gnats-submit@freebsd.org>; Sun, 14 Jun 2009 04:04:23 +0000 (UTC)
	(envelope-from doconnor@cain.gsoft.com.au)
Received: from cain.gsoft.com.au (localhost [127.0.0.1])
	by cain.gsoft.com.au (8.13.8/8.13.8) with ESMTP id n5E44Mlq061395
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO);
	Sun, 14 Jun 2009 13:34:22 +0930 (CST)
	(envelope-from doconnor@cain.gsoft.com.au)
Received: (from doconnor@localhost)
	by cain.gsoft.com.au (8.13.8/8.13.8/Submit) id n5E44Mru061394;
	Sun, 14 Jun 2009 13:34:22 +0930 (CST)
	(envelope-from doconnor)
Message-Id: <200906140404.n5E44Mru061394@cain.gsoft.com.au>
Date: Sun, 14 Jun 2009 13:34:22 +0930 (CST)
From: "Daniel O'Connor" <doconnor@gsoft.com.au>
Reply-To: "Daniel O'Connor" <doconnor@gsoft.com.au>
To: FreeBSD-gnats-submit@freebsd.org
Cc: randi@freebsd.org
Subject: a patch for sysinstall to look at UFS partitions
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         135565
>Category:       bin
>Synopsis:       [patch] a patch for sysinstall(8) to look at UFS partitions
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    brucec
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jun 14 04:10:02 UTC 2009
>Closed-Date:    Sun Nov 14 09:27:44 UTC 2010
>Last-Modified:  Sun Nov 14 09:30:09 UTC 2010
>Originator:     Daniel O'Connor
>Release:        FreeBSD 8.0-CURRENT i386
>Organization:
>Environment:
FreeBSD inchoate.localdomain 8.0-CURRENT FreeBSD 8.0-CURRENT #0: Sun Apr  5 13:18:12 CST 2009     darius@inchoate.localdomain:/usr/obj/usr/src/sys/INCHOATE  i386


>Description:
The following patch teaches sysinstall about treating UFS partitions as disks.
This allows you to read cfg files and dists off it.

>How-To-Repeat:
>Fix:
This is only a straw man patch I haven't had time to fully test it.
Also, libdisks support of extended partitions is not the same as the kernel
which can be a problem if you have an "odd" setup (like my laptop :)

http://www.gsoft.com.au/~doconnor/sysinstall-ufs-disk.diff



>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->randi 
Responsible-Changed-By: gavin 
Responsible-Changed-When: Sun Jun 14 08:36:58 UTC 2009 
Responsible-Changed-Why:  
randi@ wants this 

http://www.freebsd.org/cgi/query-pr.cgi?pr=135565 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/135565: commit references a PR
Date: Wed, 24 Jun 2009 04:56:23 +0000 (UTC)

 Author: cperciva
 Date: Wed Jun 24 04:56:13 2009
 New Revision: 194807
 URL: http://svn.freebsd.org/changeset/base/194807
 
 Log:
   Add detection of UFS filesystems.
   
   PR:		bin/135565
   Submitted by:	Daniel O'Connor
   Reviewed by:	randi
   MFC after:	1 month
 
 Modified:
   head/usr.sbin/sysinstall/devices.c
   head/usr.sbin/sysinstall/ufs.c
 
 Modified: head/usr.sbin/sysinstall/devices.c
 ==============================================================================
 --- head/usr.sbin/sysinstall/devices.c	Wed Jun 24 04:45:03 2009	(r194806)
 +++ head/usr.sbin/sysinstall/devices.c	Wed Jun 24 04:56:13 2009	(r194807)
 @@ -421,7 +421,7 @@ skipif:
  	}
      }
  
 -    /* Finally, go get the disks and look for DOS partitions to register */
 +    /* Finally, go get the disks and look for partitions to register */
      if ((names = Disk_Names()) != NULL) {
  	int i;
  
 @@ -458,7 +458,11 @@ skipif:
  	    if (isDebug())
  		msgDebug("Found a disk device named %s\n", names[i]);
  
 -	    /* Look for existing DOS partitions to register as "DOS media devices" */
 +	    /* Look for existing DOS partitions to register as "DOS media devices"
 +	     * XXX: libdisks handling of extended partitions is too
 +	     * simplistic - it does not handle them containing (for
 +	     * example) UFS partitions
 +	     */
  	    for (c1 = d->chunks->part; c1; c1 = c1->next) {
  		if (c1->type == fat || c1->type == efi || c1->type == extended) {
  		    Device *dev;
 @@ -470,8 +474,25 @@ skipif:
  					 mediaInitDOS, mediaGetDOS, mediaShutdownDOS, NULL);
  		    dev->private = c1;
  		    if (isDebug())
 -			msgDebug("Found a DOS partition %s on drive %s\n", c1->name, d->name);
 +			msgDebug("Found a DOS partition %s\n", c1->name);
 +		} else if (c1->type == freebsd) {
 +		    Device *dev;
 +		    char devname[80];
 +		    Chunk *c2;
 +			
 +		    for (c2 = c1->part; c2; c2 = c2->next) {
 +			if (c2->type != part || c2->subtype != 7)
 +			    continue;
 +			/* Got one! */
 +			snprintf(devname, sizeof devname, "/dev/%s", c1->name);
 +			dev = deviceRegister(c2->name, c2->name, strdup(devname), DEVICE_TYPE_UFS, TRUE,
 +					     mediaInitUFS, mediaGetUFS, mediaShutdownUFS, NULL);
 +			dev->private = c2;
 +			if (isDebug())
 +			    msgDebug("Found a UFS sub-partition %s\n", c2->name);
 +		    }
  		}
 +		
  	    }
  	}
  	free(names);
 
 Modified: head/usr.sbin/sysinstall/ufs.c
 ==============================================================================
 --- head/usr.sbin/sysinstall/ufs.c	Wed Jun 24 04:45:03 2009	(r194806)
 +++ head/usr.sbin/sysinstall/ufs.c	Wed Jun 24 04:56:13 2009	(r194807)
 @@ -39,11 +39,47 @@
  #include "sysinstall.h"
  #include <sys/fcntl.h>
  #include <sys/param.h>
 +#include <sys/mount.h>
 +#include <ufs/ufs/ufsmount.h>
  
 -/* No init or shutdown routines necessary - all done in mediaSetUFS() */
 +static Boolean UFSMounted;
 +static char mountpoint[] = "/dist";
 +
 +Boolean
 +mediaInitUFS(Device *dev)
 +{
 +    struct ufs_args args;
 +
 +    if (UFSMounted)
 +	return TRUE;
 +     
 +    Mkdir(mountpoint);
 +    memset(&args, 0, sizeof(args));
 +    args.fspec = dev->devname;
 +
 +    if (mount("ufs", mountpoint, MNT_RDONLY, (caddr_t)&args) == -1) {
 +	msgConfirm("Error mounting %s on %s: %s (%u)", args.fspec, mountpoint, strerror(errno), errno);
 +	return FALSE;
 +    }
 +    UFSMounted = TRUE;
 +    return TRUE;
 +}
  
  FILE *
  mediaGetUFS(Device *dev, char *file, Boolean probe)
  {
      return mediaGenericGet((char *)dev->private, file);
  }
 +
 +void
 +mediaShutdownUFS(Device *dev)
 +{
 +    if (!UFSMounted)
 +	return;
 +    if (unmount(mountpoint, MNT_FORCE) != 0)
 +	msgConfirm("Could not unmount the UFS partition from %s: %s",
 +		   mountpoint, strerror(errno));
 +    else
 +	UFSMounted = FALSE;
 +    return;
 +}
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 

From: Bruce Cran <bruce@cran.org.uk>
To: bug-followup@freebsd.org,
 doconnor@gsoft.com.au
Cc:  
Subject: Re: bin/135565: [patch] a patch for sysinstall(8) to look at UFS partitions
Date: Sun, 14 Nov 2010 08:51:53 +0000

 It looks like this has been MFC'd to stable/8 so can it be closed now?
State-Changed-From-To: open->closed 
State-Changed-By: brucec 
State-Changed-When: Sun Nov 14 09:27:01 UTC 2010 
State-Changed-Why:  
Committed to HEAD and stable/8. 


Responsible-Changed-From-To: randi->brucec 
Responsible-Changed-By: brucec 
Responsible-Changed-When: Sun Nov 14 09:27:01 UTC 2010 
Responsible-Changed-Why:  
Grab. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=135565 

From: "Daniel O'Connor" <doconnor@gsoft.com.au>
To: Bruce Cran <bruce@cran.org.uk>
Cc: bug-followup@freebsd.org
Subject: Re: bin/135565: [patch] a patch for sysinstall(8) to look at UFS partitions
Date: Sun, 14 Nov 2010 09:52:46 +0100

 --Apple-Mail-48-32437337
 Content-Transfer-Encoding: 7bit
 Content-Type: text/plain;
 	charset=us-ascii
 
 
 On 14/11/2010, at 9:51, Bruce Cran wrote:
 > It looks like this has been MFC'd to stable/8 so can it be closed now?
 
 Yes, thanks :)
 
 --
 Daniel O'Connor software and network engineer
 for Genesis Software - http://www.gsoft.com.au
 "The nice thing about standards is that there
 are so many of them to choose from."
   -- Andrew Tanenbaum
 GPG Fingerprint - 5596 B766 97C0 0E94 4347 295E E593 DC20 7B3F CE8C
 
 
 
 
 
 
 
 --Apple-Mail-48-32437337
 Content-Disposition: attachment;
 	filename=smime.p7s
 Content-Type: application/pkcs7-signature;
 	name=smime.p7s
 Content-Transfer-Encoding: base64
 
 MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIQojCCA8Qw
 ggMtoAMCAQICAQAwDQYJKoZIhvcNAQEEBQAwgaMxCzAJBgNVBAYTAkFVMRgwFgYDVQQIEw9Tb3V0
 aCBBdXN0cmFsaWExETAPBgNVBAcTCEFkZWxhaWRlMSMwIQYDVQQKExpHZW5lc2lzIFNvZnR3YXJl
 IFB0eS4gTHRkLjEcMBoGA1UEAxMTR2VuZXNpcyBTb2Z0d2FyZSBDQTEkMCIGCSqGSIb3DQEJARYV
 ZG9jb25ub3JAZ3NvZnQuY29tLmF1MB4XDTA1MDcxNzA2MTk1MVoXDTE1MDcxNTA2MTk1MVowgaMx
 CzAJBgNVBAYTAkFVMRgwFgYDVQQIEw9Tb3V0aCBBdXN0cmFsaWExETAPBgNVBAcTCEFkZWxhaWRl
 MSMwIQYDVQQKExpHZW5lc2lzIFNvZnR3YXJlIFB0eS4gTHRkLjEcMBoGA1UEAxMTR2VuZXNpcyBT
 b2Z0d2FyZSBDQTEkMCIGCSqGSIb3DQEJARYVZG9jb25ub3JAZ3NvZnQuY29tLmF1MIGfMA0GCSqG
 SIb3DQEBAQUAA4GNADCBiQKBgQDsMxkbPU3E9hTRCZSPjZNoOvYMeFhWf430fH17WmDZNBiI+eHD
 IQAQrEusLcUvQUTZV3m+Q09qpS0ax7qTamcTnykZ4lK/gbMEsau3nYw2KkZKvutvGXSl6lsdavBM
 ZEMD5lMtBSGBrH715hkK3wBPMmVLva5Kf0ydgw83l0hMlwIDAQABo4IBBDCCAQAwHQYDVR0OBBYE
 FND5uzlwxmLEM7ekT9V9buLbbmh3MIHQBgNVHSMEgcgwgcWAFND5uzlwxmLEM7ekT9V9buLbbmh3
 oYGppIGmMIGjMQswCQYDVQQGEwJBVTEYMBYGA1UECBMPU291dGggQXVzdHJhbGlhMREwDwYDVQQH
 EwhBZGVsYWlkZTEjMCEGA1UEChMaR2VuZXNpcyBTb2Z0d2FyZSBQdHkuIEx0ZC4xHDAaBgNVBAMT
 E0dlbmVzaXMgU29mdHdhcmUgQ0ExJDAiBgkqhkiG9w0BCQEWFWRvY29ubm9yQGdzb2Z0LmNvbS5h
 dYIBADAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4GBAEbi3YRa8MkiNTQk+sAlOldIgYui
 vxTjB/XNJKMjEoGP6sEyVDqR4TyDbjMqBE9wHh0U2GFG2wwcZjysJ+AHE0t3TJE9E9fhuRbpZpD0
 p0IkudVsy2I4zymqwl6jRzsypc+QRDhTitPxvvb0apLLg9ADe1Y76FWfQ7O93EBKs1+DMIIGNDCC
 BBygAwIBAgIBHjANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRD
 b20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcG
 A1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDcxMDI0MjEwMTU1WhcN
 MTcxMDI0MjEwMTU1WjCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzAp
 BgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0
 Q29tIENsYXNzIDEgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBMIIBIjANBgkqhkiG9w0B
 AQEFAAOCAQ8AMIIBCgKCAQEAxwmDzM4t2BqxKaQuE6uWvooyg4ymiEGWVUet1G8SD+rqvyNH4Qrv
 nEIaFHxOhESip7vMz39ScLpNLbL1QpOlPW/tFIzNHS3qd2XRNYG5Sv9RcGE+T4qbLtsjjJbi6sL7
 Ls/f/X9ftTyhxvxWkf8KW37iKrueKsxw2HqolH7GM6FX5UfNAwAu4ZifkpmZzU1slBhyWwaQPEPP
 ZRsWoTb7q8hmgv6Nv3Hg9rmA1/VPBIOQ6SKRkHXG0Hhmq1dOFoAFI411+a/9nWm5rcVjGcIWZ2v/
 43Yksq60jExipA4l5uv9/+Hm33mbgmCszdj/Dthf13tgAv2O83hLJ0exTqfrlwIDAQABo4IBrTCC
 AakwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFFNy7ZKc4NrLAVx8
 fpY1TvLUuFGCMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQQa7yMGYGCCsGAQUFBwEBBFow
 WDAnBggrBgEFBQcwAYYbaHR0cDovL29jc3Auc3RhcnRzc2wuY29tL2NhMC0GCCsGAQUFBzAChiFo
 dHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9zZnNjYS5jcnQwWwYDVR0fBFQwUjAnoCWgI4YhaHR0cDov
 L3d3dy5zdGFydHNzbC5jb20vc2ZzY2EuY3JsMCegJaAjhiFodHRwOi8vY3JsLnN0YXJ0c3NsLmNv
 bS9zZnNjYS5jcmwwgYAGA1UdIAR5MHcwdQYLKwYBBAGBtTcBAgEwZjAuBggrBgEFBQcCARYiaHR0
 cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjA0BggrBgEFBQcCARYoaHR0cDovL3d3dy5z
 dGFydHNzbC5jb20vaW50ZXJtZWRpYXRlLnBkZjANBgkqhkiG9w0BAQUFAAOCAgEACoMIfXirLAZc
 uGOMXq4cuSN3TaFx2H2GvD5VSy/6rV55BYHbWNaPeQn3oBSU8KgQZn/Kck1JxbLpAxVCNtsxeW1R
 87ifhsYZ0qjdrA9anrW2MAWCtosmAOT4OxK9QPoSjCMxM3HbkZCDJgnlE8jMopH21BbyAYr7b5Ef
 GRQJNtgWcvqSXwKHnTutR08+Kkn0KAkXCzeQNLeA5LlYUzFyM7kPAp8pIRMQ+seHunmyG642S2+y
 /qHEdMuGIwpfz3eDF1PdctL04qYK/zu+Qg1Bw0RwgigVZs/0c5HP2/e9DBHh7eSwtzYlk4AUr6yx
 LlcwSjOfOmKEQ/Q8tzh0IFiNu9IPuTGAPBn4CPxD0+Ru8T2wg8/s43R/PT3kd1OEqOJUl7q+h+r6
 fpvU0Fzxd2tC8Ga6fDEPme+1Nbi+03pVjuZQKbGwKJ66gEn06WqaxVZC+J8hh/jR0k9mST1iAZPN
 YulcNJ8tKmVtjYsv0L1TSm2+NwON58tO+pIVzu3DWwSEXSf+qkDavQam+QtEOZxLBXI++aMUEapS
 n+k3Lxm48ZCYfAWLb/Xj7F5JQMbZvCexglAbYR0kIHqW5DnsYSdMD/IplJMojx0NBrxJ3fN9dvX2
 Y6BIXRsF1du4qESm4/3CKuyUV7p9DW3mPlHTGLvYxnyKQy7VFBkoLINszBrOUeIwggaeMIIFhqAD
 AgECAgMBfmcwDQYJKoZIhvcNAQEFBQAwgYwxCzAJBgNVBAYTAklMMRYwFAYDVQQKEw1TdGFydENv
 bSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0ZSBTaWduaW5nMTgwNgYD
 VQQDEy9TdGFydENvbSBDbGFzcyAxIFByaW1hcnkgSW50ZXJtZWRpYXRlIENsaWVudCBDQTAeFw0x
 MDA4MDIyMDIzNDBaFw0xMTA4MDMxNTIwMDlaMIGTMSAwHgYDVQQNExcyMzUxOTktRnJsSmp3RDAw
 UzMxWEo1STEeMBwGA1UEChMVUGVyc29uYSBOb3QgVmFsaWRhdGVkMSkwJwYDVQQDEyBTdGFydENv
 bSBGcmVlIENlcnRpZmljYXRlIE1lbWJlcjEkMCIGCSqGSIb3DQEJARYVZG9jb25ub3JAZ3NvZnQu
 Y29tLmF1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyUgeqZengEzA4B4Bo3KSKCRE
 h3I+hG51Yo+ypK3YfybDfztCD9c+kDuPtH/NAj5d3FXbADJsh5xouF53fhWZS08uvI4Mnn+5D5ey
 yhsyPUNeHdWwaA5uti5nU0lwCSHhlyupMDgxXLYlQND7Ycp771NxxUE6MhbDef0batA6zXENojvL
 sV4rRRWtjuKkDhzzgZcnYCo2G41JImFZ9HQC8tjMWv8PcEpLzNG1nY6uORKq0TKiNZp7d16lsZOt
 8dXpSJSPELv2QME4CS2HsIyskaX8Xh0QbL3++StfNaeW/WII2cMzKb4KWHAtqgFQ1hHD3lcIWjUh
 DOWeiN0gdQju+QIDAQABo4IC/jCCAvowCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0lBBYw
 FAYIKwYBBQUHAwIGCCsGAQUFBwMEMB0GA1UdDgQWBBT6IHhfyXcWAlRSR3MuunIfKgOGlDAfBgNV
 HSMEGDAWgBRTcu2SnODaywFcfH6WNU7y1LhRgjAgBgNVHREEGTAXgRVkb2Nvbm5vckBnc29mdC5j
 b20uYXUwggFCBgNVHSAEggE5MIIBNTCCATEGCysGAQQBgbU3AQICMIIBIDAuBggrBgEFBQcCARYi
 aHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjA0BggrBgEFBQcCARYoaHR0cDovL3d3
 dy5zdGFydHNzbC5jb20vaW50ZXJtZWRpYXRlLnBkZjCBtwYIKwYBBQUHAgIwgaowFBYNU3RhcnRD
 b20gTHRkLjADAgEBGoGRTGltaXRlZCBMaWFiaWxpdHksIHNlZSBzZWN0aW9uICpMZWdhbCBMaW1p
 dGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBh
 dmFpbGFibGUgYXQgaHR0cDovL3d3dy5zdGFydHNzbC5jb20vcG9saWN5LnBkZjBjBgNVHR8EXDBa
 MCugKaAnhiVodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9jcnR1MS1jcmwuY3JsMCugKaAnhiVodHRw
 Oi8vY3JsLnN0YXJ0c3NsLmNvbS9jcnR1MS1jcmwuY3JsMIGOBggrBgEFBQcBAQSBgTB/MDkGCCsG
 AQUFBzABhi1odHRwOi8vb2NzcC5zdGFydHNzbC5jb20vc3ViL2NsYXNzMS9jbGllbnQvY2EwQgYI
 KwYBBQUHMAKGNmh0dHA6Ly93d3cuc3RhcnRzc2wuY29tL2NlcnRzL3N1Yi5jbGFzczEuY2xpZW50
 LmNhLmNydDAjBgNVHRIEHDAahhhodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS8wDQYJKoZIhvcNAQEF
 BQADggEBAAETwqzABtnpN07co2kvQa5JZiqtOsKqLPZ2daONqArpzr4vOtPn3mSAJEPNjZCG99Yz
 AC+dT2itcJ2x5ivE9iLIDeX7YXfal8Ae+IE7LU65E2tN0lCHHL1BJMcVpD8JYQ1wI/eye80R3k7o
 7jUqYWXLcLgf4x4iJzLx1xGjQ6pAMgcC5wI4x8LATpCdP6uZ3f6/Fu2RO+RpvGXg/66LhTUmCQ1Q
 q7zCQAplxX4bVrGmdgU9QDuq5VQldi0USockaMWdYE+dKkisF9FKmyNfzPsDjMXZs4fF+oKLcM+6
 geDRugolr4FUFExMdL5UlIBFpABBrW4bovDVZHyXg+SDjS8xggOZMIIDlQIBATCBlDCBjDELMAkG
 A1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFs
 IENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDEgUHJpbWFyeSBJ
 bnRlcm1lZGlhdGUgQ2xpZW50IENBAgMBfmcwCQYFKw4DAhoFAKCCAdkwGAYJKoZIhvcNAQkDMQsG
 CSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTAxMTE0MDg1MjQ2WjAjBgkqhkiG9w0BCQQxFgQU
 Fh1VU1iIwJEK4HTfG6t0GiOAqFkwgboGCSsGAQQBgjcQBDGBrDCBqTCBozELMAkGA1UEBhMCQVUx
 GDAWBgNVBAgTD1NvdXRoIEF1c3RyYWxpYTERMA8GA1UEBxMIQWRlbGFpZGUxIzAhBgNVBAoTGkdl
 bmVzaXMgU29mdHdhcmUgUHR5LiBMdGQuMRwwGgYDVQQDExNHZW5lc2lzIFNvZnR3YXJlIENBMSQw
 IgYJKoZIhvcNAQkBFhVkb2Nvbm5vckBnc29mdC5jb20uYXUCAQAwgbwGCyqGSIb3DQEJEAILMYGs
 oIGpMIGjMQswCQYDVQQGEwJBVTEYMBYGA1UECBMPU291dGggQXVzdHJhbGlhMREwDwYDVQQHEwhB
 ZGVsYWlkZTEjMCEGA1UEChMaR2VuZXNpcyBTb2Z0d2FyZSBQdHkuIEx0ZC4xHDAaBgNVBAMTE0dl
 bmVzaXMgU29mdHdhcmUgQ0ExJDAiBgkqhkiG9w0BCQEWFWRvY29ubm9yQGdzb2Z0LmNvbS5hdQIB
 ADANBgkqhkiG9w0BAQEFAASCAQAz+f+Tv4FN/RU3UiTCvfEPlInySZmnj+ny4MCD8poV7ch8uY/H
 OFwb1Qz5nl8rMJpQGGS6w3WajgrRy16wQBiVL6nW/0QLAbdoaIlRpG3aloJFAI97s2Vf6xclG16C
 OMgpZ8+0gyUA/XAvJyP1mc9Vt31CWzd9sK+8rmCijFbUpibUUd4kZwBxD4oDxsMcHqlTbQMwwNnT
 RIzd9IWqV9jCb9KmtTIEGvjvdfVuRaelOyRS7kKdQN96puSO8EGPw82dPHNmpPFmbMAtOO4ZEveL
 rQwXM27hagd4Sw1SkKuOoNjViVXy/q2z6n5BYI2tSKdtkQdGQGP0fw8nqSlRQ+OcAAAAAAAA
 
 --Apple-Mail-48-32437337--
>Unformatted:
