From nobody@FreeBSD.org  Mon Jan 22 02:59:03 2007
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id BD2A816A403
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 22 Jan 2007 02:59:03 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [69.147.83.33])
	by mx1.freebsd.org (Postfix) with ESMTP id 9486813C442
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 22 Jan 2007 02:59:03 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.13.1/8.13.1) with ESMTP id l0M2x3IV075637
	for <freebsd-gnats-submit@FreeBSD.org>; Mon, 22 Jan 2007 02:59:03 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.13.1/8.13.1/Submit) id l0M2x3OY075636;
	Mon, 22 Jan 2007 02:59:03 GMT
	(envelope-from nobody)
Message-Id: <200701220259.l0M2x3OY075636@www.freebsd.org>
Date: Mon, 22 Jan 2007 02:59:03 GMT
From: Rechistov Grigory<ggg_mail@inbox.ru>
To: freebsd-gnats-submit@FreeBSD.org
Subject: System crash while trying to unmount manually ejected USB Flash drive
X-Send-Pr-Version: www-3.0

>Number:         108199
>Category:       kern
>Synopsis:       System crash while trying to unmount manually ejected USB Flash drive
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 22 03:00:34 GMT 2007
>Closed-Date:    Mon Jan 22 04:49:27 GMT 2007
>Last-Modified:  Tue Feb 20 14:30:14 GMT 2007
>Originator:     Rechistov Grigory
>Release:        6.1-RELEASE
>Organization:
>Environment:
FreeBSD ipv82-180.rt.private.mipt.ru 6.1-RELEASE FreeBSD 6.1-RELEASE #0: Sat Jan 13 21:02:10 MSK 2007     GGG@ipv82-180.rt.private.mipt.ru:/usr/obj/usr/src/sys/DELL_v3  i386
>Description:
System reboots, often without displaying a panic message, sometimes producing "page fault while in kernel mode", when trying to execute "umount -f /dev/da0s1"
if mounted flash drive was physically removed from USB port. When trying "umount /dev/da0s1" without -f flag, an error
"Device not configured" appears, and nothing happens, e.g. system thinks that smth is still mounted as da0s1.
This bug was observed on at least three different machines with versions of FreeBSD from 5.4 to 6.2, no matters what: atausb or umass - was enabled in kernel.
>How-To-Repeat:
Be sure to save any important work before trying next steps!

1. Insert USB Flash into a port, read from the console what special was assigned to the storage.
2. # mount_msdosfs /dev/daXsX /mnt
3. Manually remove flash drive from the computer.
4. # umount /dev/daXsX
                System reports an error - Device not configured.
5. # umount -f /dev/daXsX
                Watch your system rebooting or showing kernel panic message.

If you are not trying to perform the last command, you can still work and system will be stable, but when doing final shutdown with unmounting filesystems
the crash will certainly occur. The re-inserting of the drive cannot help avoid this - it will be recognized as new device.

The behaviour is always the same and doesn't depend on what type of filesystem is residing on a flash.	
>Fix:
The only way to avoid such crash is to carefully monitor what flash drives are mounted, else the punishment will fall. But I'm sure this is not the way it should be handled.
Anyone is able to eject his(her) flash drive without unmounting by mistake - we all are humans. At least the system must not go down after such mistake.
May be a loss of data on the flash will occur - it's not so harmful. For desktop user this aspect is very important.

As I suppose this bug appears when mount syscall is trying to free some kernel-specific resourses, which were already free'd by some other mechanism -
probably GEOM. Crash's independence from used USB-driver  framework(new atausb/old umass) confirms this assertion. Unfortunately, I don't have enough skills/time to resolve this myself.

There can be another approach - to write kernel-independed userspace filesystem based on FUSE libraries. But this will need too much duplicating work, will be not so flexible and may be too slow.

>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: linimon 
State-Changed-When: Mon Jan 22 04:47:49 UTC 2007 
State-Changed-Why:  
This is a well-reported problem that is going to take some system 
rearchitecting to fix.  The underlying layers of the file system were 
not initially written with the criteria that file systems were dynamic. 
But thanks for reporting. 

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

From: Bruce Evans <bde@zeta.org.au>
To: Mark Linimon <linimon@freebsd.org>
Cc: ggg_mail@inbox.ru, freebsd-gnats-submit@freebsd.org
Subject: Re: kern/108199: System crash while trying to unmount manually
 ejected USB Flash drive
Date: Mon, 22 Jan 2007 23:56:28 +1100 (EST)

 On Mon, 22 Jan 2007, Mark Linimon wrote:
 
 > Synopsis: System crash while trying to unmount manually ejected USB Flash drive
 
 > This is a well-reported problem that is going to take some system
 > rearchitecting to fix.  The underlying layers of the file system were
 > not initially written with the criteria that file systems were dynamic.
 > But thanks for reporting.
 
 However, the underlying layers were initially more robust against panics
 although not against data loss.  They simply discarded buffers after
 the first write error.  Now, unwriteable buffers are supposed to be
 retried forever, but sometimes even that doesn't happen, since there is
 code that still hasn't caught up with the changed error handling.
 
 I think the panic was fixed in ffs a few years ago (umount -f just
 returns an error in at least my version of FreeBSD-5.2).  Some negative
 progress has been made since then, so ffs now panics near where msdosfs
 used to panic (vinvalbuf() hasn't caught up), and msdosfs doesn't get
 that far since it now panics in vop_stdfsync() in the diagnostic message
 about the problem.
 
 Bruce

From: linimon@lonesome.com (Mark Linimon)
To: Bruce Evans <bde@zeta.org.au>
Cc: Mark Linimon <linimon@freebsd.org>, ggg_mail@inbox.ru,
	freebsd-gnats-submit@freebsd.org
Subject: Re: kern/108199: System crash while trying to unmount manually ejected USB Flash drive
Date: Mon, 22 Jan 2007 07:47:42 -0600

 On Mon, Jan 22, 2007 at 11:56:28PM +1100, Bruce Evans wrote:
 > However, the underlying layers were initially more robust against panics
 > although not against data loss.
 
 All well and good, but there isn't much point in having multiple PRs open
 about this problem.  I'm sure I would not be the only person delighted to
 see this solved.
 
 mcl

From: "Alexey Karakuts" <sys@bsdportal.ru>
To: "Rechistov Grigory" <ggg_mail@inbox.ru>
Cc: freebsd-gnats-submit@freebsd.org
Subject: Re: misc/108199: System crash while trying to unmount manually ejected USB Flash drive
Date: Tue, 20 Feb 2007 16:20:25 +0300

 ------=_Part_32089_12981407.1171977625630
 Content-Type: text/plain; charset=KOI8-R; format=flowed
 Content-Transfer-Encoding: base64
 Content-Disposition: inline
 
 ICNUaGUgcGF0Y2ggZGVsZXRlIGZsYXNoIGRpc2sgZnJlZWJzZCBwYW5pYwojQW55IHF1ZXN0aW9u
 cyBzZW5kIGVtYWlsIHN5c0Bic2Rwb3J0YWwucnUgQWxleGV5IE4uIEthcmFrdXRzCi0tLSAvc3lz
 L2dlb20vZ2VvbV92ZnMuYyAgICAgICAgTW9uIE1hciAxMyAwMzowNToyOSAyMDA2CisrKyBnZW9t
 X3Zmcy5jICBXZWQgRGVjICA2IDE5OjQyOjQ2IDIwMDYKQEAgLTcwLDE2ICs3MCw5IEBACiAgICAg
 ICBzdHJ1Y3QgYnVmICpicDsKICAgICAgIGludCB2ZnNsb2NrZWQ7CgotICAgICAgIGlmIChiaXAt
 PmJpb19lcnJvcikgewotICAgICAgICAgICAgICAgcHJpbnRmKCJnX3Zmc19kb25lKCk6Iik7Ci0g
 ICAgICAgICAgICAgICBnX3ByaW50X2JpbyhiaXApOwotICAgICAgICAgICAgICAgcHJpbnRmKCJl
 cnJvciA9ICVkXG4iLCBiaXAtPmJpb19lcnJvcik7Ci0gICAgICAgfQogICAgICAgYnAgPSBiaXAt
 PmJpb19jYWxsZXIyOwogICAgICAgYnAtPmJfZXJyb3IgPSBiaXAtPmJpb19lcnJvcjsKICAgICAg
 IGJwLT5iX2lvZmxhZ3MgPSBiaXAtPmJpb19mbGFnczsKLSAgICAgICBpZiAoYmlwLT5iaW9fZXJy
 b3IpCi0gICAgICAgICAgICAgICBicC0+Yl9pb2ZsYWdzIHw9IEJJT19FUlJPUjsKICAgICAgIGJw
 LT5iX3Jlc2lkID0gYnAtPmJfYmNvdW50IC0gYmlwLT5iaW9fY29tcGxldGVkOwogICAgICAgZ19k
 ZXN0cm95X2JpbyhiaXApOwogICAgICAgdmZzbG9ja2VkID0gVkZTX0xPQ0tfR0lBTlQoKChzdHJ1
 Y3QgbW91bnQgKilOVUxMKSk7CgoyMDA3LzEvMjIsIFJlY2hpc3RvdiBHcmlnb3J5IDxnZ2dfbWFp
 bEBpbmJveC5ydT46Cj4KPgo+ID5OdW1iZXI6ICAgICAgICAgMTA4MTk5Cj4gPkNhdGVnb3J5OiAg
 ICAgICBtaXNjCj4gPlN5bm9wc2lzOiAgICAgICBTeXN0ZW0gY3Jhc2ggd2hpbGUgdHJ5aW5nIHRv
 IHVubW91bnQgbWFudWFsbHkgZWplY3RlZCBVU0IKPiBGbGFzaCBkcml2ZQo+ID5Db25maWRlbnRp
 YWw6ICAgbm8KPiA+U2V2ZXJpdHk6ICAgICAgIHNlcmlvdXMKPiA+UHJpb3JpdHk6ICAgICAgIG1l
 ZGl1bQo+ID5SZXNwb25zaWJsZTogICAgZnJlZWJzZC1idWdzCj4gPlN0YXRlOiAgICAgICAgICBv
 cGVuCj4gPlF1YXJ0ZXI6Cj4gPktleXdvcmRzOgo+ID5EYXRlLVJlcXVpcmVkOgo+ID5DbGFzczog
 ICAgICAgICAgc3ctYnVnCj4gPlN1Ym1pdHRlci1JZDogICBjdXJyZW50LXVzZXJzCj4gPkFycml2
 YWwtRGF0ZTogICBNb24gSmFuIDIyIDAzOjAwOjM0IEdNVCAyMDA3Cj4gPkNsb3NlZC1EYXRlOgo+
 ID5MYXN0LU1vZGlmaWVkOgo+ID5PcmlnaW5hdG9yOiAgICAgUmVjaGlzdG92IEdyaWdvcnkKPiA+
 UmVsZWFzZTogICAgICAgIDYuMS1SRUxFQVNFCj4gPk9yZ2FuaXphdGlvbjoKPiA+RW52aXJvbm1l
 bnQ6Cj4gRnJlZUJTRCBpcHY4Mi0xODAucnQucHJpdmF0ZS5taXB0LnJ1IDYuMS1SRUxFQVNFIEZy
 ZWVCU0QgNi4xLVJFTEVBU0UgIzA6Cj4gU2F0IEphbiAxMyAyMTowMjoxMCBNU0sgMjAwNyAgICAg
 R0dHQGlwdjgyLTE4MC5ydC5wcml2YXRlLm1pcHQucnUKPiA6L3Vzci9vYmovdXNyL3NyYy9zeXMv
 REVMTF92MyAgaTM4Ngo+ID5EZXNjcmlwdGlvbjoKPiBTeXN0ZW0gcmVib290cywgb2Z0ZW4gd2l0
 aG91dCBkaXNwbGF5aW5nIGEgcGFuaWMgbWVzc2FnZSwgc29tZXRpbWVzCj4gcHJvZHVjaW5nICJw
 YWdlIGZhdWx0IHdoaWxlIGluIGtlcm5lbCBtb2RlIiwgd2hlbiB0cnlpbmcgdG8gZXhlY3V0ZSAi
 dW1vdW50Cj4gLWYgL2Rldi9kYTBzMSIKPiBpZiBtb3VudGVkIGZsYXNoIGRyaXZlIHdhcyBwaHlz
 aWNhbGx5IHJlbW92ZWQgZnJvbSBVU0IgcG9ydC4gV2hlbiB0cnlpbmcKPiAidW1vdW50IC9kZXYv
 ZGEwczEiIHdpdGhvdXQgLWYgZmxhZywgYW4gZXJyb3IKPiAiRGV2aWNlIG5vdCBjb25maWd1cmVk
 IiBhcHBlYXJzLCBhbmQgbm90aGluZyBoYXBwZW5zLCBlLmcuIHN5c3RlbSB0aGlua3MKPiB0aGF0
 IHNtdGggaXMgc3RpbGwgbW91bnRlZCBhcyBkYTBzMS4KPiBUaGlzIGJ1ZyB3YXMgb2JzZXJ2ZWQg
 b24gYXQgbGVhc3QgdGhyZWUgZGlmZmVyZW50IG1hY2hpbmVzIHdpdGggdmVyc2lvbnMKPiBvZiBG
 cmVlQlNEIGZyb20gNS40IHRvIDYuMiwgbm8gbWF0dGVycyB3aGF0OiBhdGF1c2Igb3IgdW1hc3Mg
 LSB3YXMgZW5hYmxlZAo+IGluIGtlcm5lbC4KPiA+SG93LVRvLVJlcGVhdDoKPiBCZSBzdXJlIHRv
 IHNhdmUgYW55IGltcG9ydGFudCB3b3JrIGJlZm9yZSB0cnlpbmcgbmV4dCBzdGVwcyEKPgo+IDEu
 IEluc2VydCBVU0IgRmxhc2ggaW50byBhIHBvcnQsIHJlYWQgZnJvbSB0aGUgY29uc29sZSB3aGF0
 IHNwZWNpYWwgd2FzCj4gYXNzaWduZWQgdG8gdGhlIHN0b3JhZ2UuCj4gMi4gIyBtb3VudF9tc2Rv
 c2ZzIC9kZXYvZGFYc1ggL21udAo+IDMuIE1hbnVhbGx5IHJlbW92ZSBmbGFzaCBkcml2ZSBmcm9t
 IHRoZSBjb21wdXRlci4KPiA0LiAjIHVtb3VudCAvZGV2L2RhWHNYCj4gICAgICAgICAgICAgICAg
 IFN5c3RlbSByZXBvcnRzIGFuIGVycm9yIC0gRGV2aWNlIG5vdCBjb25maWd1cmVkLgo+IDUuICMg
 dW1vdW50IC1mIC9kZXYvZGFYc1gKPiAgICAgICAgICAgICAgICAgV2F0Y2ggeW91ciBzeXN0ZW0g
 cmVib290aW5nIG9yIHNob3dpbmcga2VybmVsIHBhbmljCj4gbWVzc2FnZS4KPgo+IElmIHlvdSBh
 cmUgbm90IHRyeWluZyB0byBwZXJmb3JtIHRoZSBsYXN0IGNvbW1hbmQsIHlvdSBjYW4gc3RpbGwg
 d29yayBhbmQKPiBzeXN0ZW0gd2lsbCBiZSBzdGFibGUsIGJ1dCB3aGVuIGRvaW5nIGZpbmFsIHNo
 dXRkb3duIHdpdGggdW5tb3VudGluZwo+IGZpbGVzeXN0ZW1zCj4gdGhlIGNyYXNoIHdpbGwgY2Vy
 dGFpbmx5IG9jY3VyLiBUaGUgcmUtaW5zZXJ0aW5nIG9mIHRoZSBkcml2ZSBjYW5ub3QgaGVscAo+
 IGF2b2lkIHRoaXMgLSBpdCB3aWxsIGJlIHJlY29nbml6ZWQgYXMgbmV3IGRldmljZS4KPgo+IFRo
 ZSBiZWhhdmlvdXIgaXMgYWx3YXlzIHRoZSBzYW1lIGFuZCBkb2Vzbid0IGRlcGVuZCBvbiB3aGF0
 IHR5cGUgb2YKPiBmaWxlc3lzdGVtIGlzIHJlc2lkaW5nIG9uIGEgZmxhc2guCj4gPkZpeDoKPiBU
 aGUgb25seSB3YXkgdG8gYXZvaWQgc3VjaCBjcmFzaCBpcyB0byBjYXJlZnVsbHkgbW9uaXRvciB3
 aGF0IGZsYXNoIGRyaXZlcwo+IGFyZSBtb3VudGVkLCBlbHNlIHRoZSBwdW5pc2htZW50IHdpbGwg
 ZmFsbC4gQnV0IEknbSBzdXJlIHRoaXMgaXMgbm90IHRoZSB3YXkKPiBpdCBzaG91bGQgYmUgaGFu
 ZGxlZC4KPiBBbnlvbmUgaXMgYWJsZSB0byBlamVjdCBoaXMoaGVyKSBmbGFzaCBkcml2ZSB3aXRo
 b3V0IHVubW91bnRpbmcgYnkgbWlzdGFrZQo+IC0gd2UgYWxsIGFyZSBodW1hbnMuIEF0IGxlYXN0
 IHRoZSBzeXN0ZW0gbXVzdCBub3QgZ28gZG93biBhZnRlciBzdWNoCj4gbWlzdGFrZS4KPiBNYXkg
 YmUgYSBsb3NzIG9mIGRhdGEgb24gdGhlIGZsYXNoIHdpbGwgb2NjdXIgLSBpdCdzIG5vdCBzbyBo
 YXJtZnVsLiBGb3IKPiBkZXNrdG9wIHVzZXIgdGhpcyBhc3BlY3QgaXMgdmVyeSBpbXBvcnRhbnQu
 Cj4KPiBBcyBJIHN1cHBvc2UgdGhpcyBidWcgYXBwZWFycyB3aGVuIG1vdW50IHN5c2NhbGwgaXMg
 dHJ5aW5nIHRvIGZyZWUgc29tZQo+IGtlcm5lbC1zcGVjaWZpYyByZXNvdXJzZXMsIHdoaWNoIHdl
 cmUgYWxyZWFkeSBmcmVlJ2QgYnkgc29tZSBvdGhlciBtZWNoYW5pc20KPiAtCj4gcHJvYmFibHkg
 R0VPTS4gQ3Jhc2gncyBpbmRlcGVuZGVuY2UgZnJvbSB1c2VkIFVTQi1kcml2ZXIgIGZyYW1ld29y
 ayhuZXcKPiBhdGF1c2Ivb2xkIHVtYXNzKSBjb25maXJtcyB0aGlzIGFzc2VydGlvbi4gVW5mb3J0
 dW5hdGVseSwgSSBkb24ndCBoYXZlCj4gZW5vdWdoIHNraWxscy90aW1lIHRvIHJlc29sdmUgdGhp
 cyBteXNlbGYuCj4KPiBUaGVyZSBjYW4gYmUgYW5vdGhlciBhcHByb2FjaCAtIHRvIHdyaXRlIGtl
 cm5lbC1pbmRlcGVuZGVkIHVzZXJzcGFjZQo+IGZpbGVzeXN0ZW0gYmFzZWQgb24gRlVTRSBsaWJy
 YXJpZXMuIEJ1dCB0aGlzIHdpbGwgbmVlZCB0b28gbXVjaCBkdXBsaWNhdGluZwo+IHdvcmssIHdp
 bGwgYmUgbm90IHNvIGZsZXhpYmxlIGFuZCBtYXkgYmUgdG9vIHNsb3cuCj4KPiA+UmVsZWFzZS1O
 b3RlOgo+ID5BdWRpdC1UcmFpbDoKPiA+VW5mb3JtYXR0ZWQ6Cj4gX19fX19fX19fX19fX19fX19f
 X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBmcmVlYnNkLWJ1Z3NAZnJlZWJzZC5vcmcg
 bWFpbGluZyBsaXN0Cj4gaHR0cDovL2xpc3RzLmZyZWVic2Qub3JnL21haWxtYW4vbGlzdGluZm8v
 ZnJlZWJzZC1idWdzCj4gVG8gdW5zdWJzY3JpYmUsIHNlbmQgYW55IG1haWwgdG8gImZyZWVic2Qt
 YnVncy11bnN1YnNjcmliZUBmcmVlYnNkLm9yZyIKPgoKCgotLSAKX19fX19fX19fX19fX19fX19f
 X19fX19fX19fX19fX19fX19fX19fX19fCu/Sx8HOydrB1M/SIEJTRFBPUlRBTC5SVSDhzMXL08XK
 IOvB0sHL1cMK
 ------=_Part_32089_12981407.1171977625630
 Content-Type: text/html; charset=KOI8-R
 Content-Transfer-Encoding: base64
 Content-Disposition: inline
 
 CiNUaGUgcGF0Y2ggZGVsZXRlIGZsYXNoIGRpc2sgZnJlZWJzZCBwYW5pYwo8YnI+CiNBbnkgcXVl
 c3Rpb25zIHNlbmQgZW1haWwgPGEgaHJlZj0ibWFpbHRvOnN5c0Bic2Rwb3J0YWwucnUiPnN5c0Bi
 c2Rwb3J0YWwucnU8L2E+IEFsZXhleSBOLiBLYXJha3V0cwo8YnI+Ci0tLSAvc3lzL2dlb20vZ2Vv
 bV92ZnMuYyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyBNb24gTWFyIDEzIDAzOjA1OjI5IDIw
 MDYKPGJyPgorKysgZ2VvbV92ZnMuYyZuYnNwOyBXZWQgRGVjJm5ic3A7IDYgMTk6NDI6NDYgMjAw
 Ngo8YnI+CkBAIC03MCwxNiArNzAsOSBAQAo8YnI+CiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
 O3N0cnVjdCBidWYgKmJwOwo8YnI+CiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2ludCB2ZnNs
 b2NrZWQ7Cjxicj4KCjxicj4KLSZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2lmIChiaXAtJmd0
 O2Jpb19lcnJvcikgewo8YnI+Ci0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu
 YnNwOyAmbmJzcDsgJm5ic3A7cHJpbnRmKCZxdW90O2dfdmZzX2RvbmUoKTomcXVvdDspOwo8YnI+
 Ci0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7
 Z19wcmludF9iaW8oYmlwKTsKPGJyPgotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
 OyAmbmJzcDsgJm5ic3A7ICZuYnNwO3ByaW50ZigmcXVvdDtlcnJvciA9ICVkXG4mcXVvdDssIGJp
 cC0mZ3Q7YmlvX2Vycm9yKTsKPGJyPgotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7fQo8YnI+
 CiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2JwID0gYmlwLSZndDtiaW9fY2FsbGVyMjsKPGJy
 PgombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDticC0mZ3Q7Yl9lcnJvciA9IGJpcC0mZ3Q7Ymlv
 X2Vycm9yOwo8YnI+CiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2JwLSZndDtiX2lvZmxhZ3Mg
 PSBiaXAtJmd0O2Jpb19mbGFnczsKPGJyPgotJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYg
 KGJpcC0mZ3Q7YmlvX2Vycm9yKQo8YnI+Ci0mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i
 c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7YnAtJmd0O2JfaW9mbGFncyB8PSBCSU9fRVJST1I7Cjxi
 cj4KJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7YnAtJmd0O2JfcmVzaWQgPSBicC0mZ3Q7Yl9i
 Y291bnQgLSBiaXAtJmd0O2Jpb19jb21wbGV0ZWQ7Cjxicj4KJm5ic3A7ICZuYnNwOyAmbmJzcDsg
 Jm5ic3A7Z19kZXN0cm95X2JpbyhiaXApOwo8YnI+CiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw
 O3Zmc2xvY2tlZCA9IFZGU19MT0NLX0dJQU5UKCgoc3RydWN0IG1vdW50ICopTlVMTCkpOwo8YnI+
 PGJyPjxkaXY+PHNwYW4gY2xhc3M9ImdtYWlsX3F1b3RlIj4yMDA3LzEvMjIsIFJlY2hpc3RvdiBH
 cmlnb3J5ICZsdDs8YSBocmVmPSJtYWlsdG86Z2dnX21haWxAaW5ib3gucnUiPmdnZ19tYWlsQGlu
 Ym94LnJ1PC9hPiZndDs6PC9zcGFuPjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5
 bGU9ImJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBtYXJnaW46IDBw
 dCAwcHQgMHB0IDAuOGV4OyBwYWRkaW5nLWxlZnQ6IDFleDsiPgo8YnI+Jmd0O051bWJlcjombmJz
 cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgMTA4MTk5PGJyPiZn
 dDtDYXRlZ29yeTombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgbWlzYzxicj4m
 Z3Q7U3lub3BzaXM6Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFN5c3RlbSBj
 cmFzaCB3aGlsZSB0cnlpbmcgdG8gdW5tb3VudCBtYW51YWxseSBlamVjdGVkIFVTQiBGbGFzaCBk
 cml2ZTxicj4mZ3Q7Q29uZmlkZW50aWFsOiZuYnNwOyZuYnNwOyBubzxicj4mZ3Q7U2V2ZXJpdHk6
 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHNlcmlvdXM8YnI+Jmd0O1ByaW9y
 aXR5OiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBtZWRpdW0KPGJyPiZndDtS
 ZXNwb25zaWJsZTombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtmcmVlYnNkLWJ1Z3M8YnI+Jmd0O1N0
 YXRlOiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
 OyZuYnNwO29wZW48YnI+Jmd0O1F1YXJ0ZXI6PGJyPiZndDtLZXl3b3Jkczo8YnI+Jmd0O0RhdGUt
 UmVxdWlyZWQ6PGJyPiZndDtDbGFzczombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
 cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtzdy1idWc8YnI+Jmd0O1N1Ym1pdHRlci1JZDombmJz
 cDsmbmJzcDsgY3VycmVudC11c2Vyczxicj4mZ3Q7QXJyaXZhbC1EYXRlOiZuYnNwOyZuYnNwOyBN
 b24gSmFuIDIyIDAzOjAwOjM0IEdNVCAyMDA3Cjxicj4mZ3Q7Q2xvc2VkLURhdGU6PGJyPiZndDtM
 YXN0LU1vZGlmaWVkOjxicj4mZ3Q7T3JpZ2luYXRvcjombmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg
 UmVjaGlzdG92IEdyaWdvcnk8YnI+Jmd0O1JlbGVhc2U6Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ni4xLVJFTEVBU0U8YnI+Jmd0O09yZ2FuaXphdGlvbjo8
 YnI+Jmd0O0Vudmlyb25tZW50Ojxicj5GcmVlQlNEIDxhIGhyZWY9Imh0dHA6Ly9pcHY4Mi0xODAu
 cnQucHJpdmF0ZS5taXB0LnJ1Ij5pcHY4Mi0xODAucnQucHJpdmF0ZS5taXB0LnJ1CjwvYT4gNi4x
 LVJFTEVBU0UgRnJlZUJTRCA2LjEtUkVMRUFTRSAjMDogU2F0IEphbiAxMyAyMTowMjoxMCBNU0sg
 MjAwNyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBHR0dAaXB2ODItMTgwLnJ0LnByaXZhdGUubWlw
 dC5ydTovdXNyL29iai91c3Ivc3JjL3N5cy9ERUxMX3YzJm5ic3A7Jm5ic3A7aTM4Njxicj4mZ3Q7
 RGVzY3JpcHRpb246PGJyPlN5c3RlbSByZWJvb3RzLCBvZnRlbiB3aXRob3V0IGRpc3BsYXlpbmcg
 YSBwYW5pYyBtZXNzYWdlLCBzb21ldGltZXMgcHJvZHVjaW5nICZxdW90O3BhZ2UgZmF1bHQgd2hp
 bGUgaW4ga2VybmVsIG1vZGUmcXVvdDssIHdoZW4gdHJ5aW5nIHRvIGV4ZWN1dGUgJnF1b3Q7dW1v
 dW50IC1mIC9kZXYvZGEwczEmcXVvdDsKPGJyPmlmIG1vdW50ZWQgZmxhc2ggZHJpdmUgd2FzIHBo
 eXNpY2FsbHkgcmVtb3ZlZCBmcm9tIFVTQiBwb3J0LiBXaGVuIHRyeWluZyAmcXVvdDt1bW91bnQg
 L2Rldi9kYTBzMSZxdW90OyB3aXRob3V0IC1mIGZsYWcsIGFuIGVycm9yPGJyPiZxdW90O0Rldmlj
 ZSBub3QgY29uZmlndXJlZCZxdW90OyBhcHBlYXJzLCBhbmQgbm90aGluZyBoYXBwZW5zLCBlLmcu
 IHN5c3RlbSB0aGlua3MgdGhhdCBzbXRoIGlzIHN0aWxsIG1vdW50ZWQgYXMgZGEwczEuCjxicj5U
 aGlzIGJ1ZyB3YXMgb2JzZXJ2ZWQgb24gYXQgbGVhc3QgdGhyZWUgZGlmZmVyZW50IG1hY2hpbmVz
 IHdpdGggdmVyc2lvbnMgb2YgRnJlZUJTRCBmcm9tIDUuNCB0byA2LjIsIG5vIG1hdHRlcnMgd2hh
 dDogYXRhdXNiIG9yIHVtYXNzIC0gd2FzIGVuYWJsZWQgaW4ga2VybmVsLjxicj4mZ3Q7SG93LVRv
 LVJlcGVhdDo8YnI+QmUgc3VyZSB0byBzYXZlIGFueSBpbXBvcnRhbnQgd29yayBiZWZvcmUgdHJ5
 aW5nIG5leHQgc3RlcHMhCjxicj48YnI+MS4gSW5zZXJ0IFVTQiBGbGFzaCBpbnRvIGEgcG9ydCwg
 cmVhZCBmcm9tIHRoZSBjb25zb2xlIHdoYXQgc3BlY2lhbCB3YXMgYXNzaWduZWQgdG8gdGhlIHN0
 b3JhZ2UuPGJyPjIuICMgbW91bnRfbXNkb3NmcyAvZGV2L2RhWHNYIC9tbnQ8YnI+My4gTWFudWFs
 bHkgcmVtb3ZlIGZsYXNoIGRyaXZlIGZyb20gdGhlIGNvbXB1dGVyLjxicj40LiAjIHVtb3VudCAv
 ZGV2L2RhWHNYCjxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
 bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtTeXN0
 ZW0gcmVwb3J0cyBhbiBlcnJvciAtIERldmljZSBub3QgY29uZmlndXJlZC48YnI+NS4gIyB1bW91
 bnQgLWYgL2Rldi9kYVhzWDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
 bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
 cDtXYXRjaCB5b3VyIHN5c3RlbSByZWJvb3Rpbmcgb3Igc2hvd2luZyBrZXJuZWwgcGFuaWMgbWVz
 c2FnZS48YnI+PGJyPklmIHlvdSBhcmUgbm90IHRyeWluZyB0byBwZXJmb3JtIHRoZSBsYXN0IGNv
 bW1hbmQsIHlvdSBjYW4gc3RpbGwgd29yayBhbmQgc3lzdGVtIHdpbGwgYmUgc3RhYmxlLCBidXQg
 d2hlbiBkb2luZyBmaW5hbCBzaHV0ZG93biB3aXRoIHVubW91bnRpbmcgZmlsZXN5c3RlbXMKPGJy
 PnRoZSBjcmFzaCB3aWxsIGNlcnRhaW5seSBvY2N1ci4gVGhlIHJlLWluc2VydGluZyBvZiB0aGUg
 ZHJpdmUgY2Fubm90IGhlbHAgYXZvaWQgdGhpcyAtIGl0IHdpbGwgYmUgcmVjb2duaXplZCBhcyBu
 ZXcgZGV2aWNlLjxicj48YnI+VGhlIGJlaGF2aW91ciBpcyBhbHdheXMgdGhlIHNhbWUgYW5kIGRv
 ZXNuJiMzOTt0IGRlcGVuZCBvbiB3aGF0IHR5cGUgb2YgZmlsZXN5c3RlbSBpcyByZXNpZGluZyBv
 biBhIGZsYXNoLgo8YnI+Jmd0O0ZpeDo8YnI+VGhlIG9ubHkgd2F5IHRvIGF2b2lkIHN1Y2ggY3Jh
 c2ggaXMgdG8gY2FyZWZ1bGx5IG1vbml0b3Igd2hhdCBmbGFzaCBkcml2ZXMgYXJlIG1vdW50ZWQs
 IGVsc2UgdGhlIHB1bmlzaG1lbnQgd2lsbCBmYWxsLiBCdXQgSSYjMzk7bSBzdXJlIHRoaXMgaXMg
 bm90IHRoZSB3YXkgaXQgc2hvdWxkIGJlIGhhbmRsZWQuPGJyPkFueW9uZSBpcyBhYmxlIHRvIGVq
 ZWN0IGhpcyhoZXIpIGZsYXNoIGRyaXZlIHdpdGhvdXQgdW5tb3VudGluZyBieSBtaXN0YWtlIC0g
 d2UgYWxsIGFyZSBodW1hbnMuIEF0IGxlYXN0IHRoZSBzeXN0ZW0gbXVzdCBub3QgZ28gZG93biBh
 ZnRlciBzdWNoIG1pc3Rha2UuCjxicj5NYXkgYmUgYSBsb3NzIG9mIGRhdGEgb24gdGhlIGZsYXNo
 IHdpbGwgb2NjdXIgLSBpdCYjMzk7cyBub3Qgc28gaGFybWZ1bC4gRm9yIGRlc2t0b3AgdXNlciB0
 aGlzIGFzcGVjdCBpcyB2ZXJ5IGltcG9ydGFudC48YnI+PGJyPkFzIEkgc3VwcG9zZSB0aGlzIGJ1
 ZyBhcHBlYXJzIHdoZW4gbW91bnQgc3lzY2FsbCBpcyB0cnlpbmcgdG8gZnJlZSBzb21lIGtlcm5l
 bC1zcGVjaWZpYyByZXNvdXJzZXMsIHdoaWNoIHdlcmUgYWxyZWFkeSBmcmVlJiMzOTtkIGJ5IHNv
 bWUgb3RoZXIgbWVjaGFuaXNtIC0KPGJyPnByb2JhYmx5IEdFT00uIENyYXNoJiMzOTtzIGluZGVw
 ZW5kZW5jZSBmcm9tIHVzZWQgVVNCLWRyaXZlciZuYnNwOyZuYnNwO2ZyYW1ld29yayhuZXcgYXRh
 dXNiL29sZCB1bWFzcykgY29uZmlybXMgdGhpcyBhc3NlcnRpb24uIFVuZm9ydHVuYXRlbHksIEkg
 ZG9uJiMzOTt0IGhhdmUgZW5vdWdoIHNraWxscy90aW1lIHRvIHJlc29sdmUgdGhpcyBteXNlbGYu
 PGJyPjxicj5UaGVyZSBjYW4gYmUgYW5vdGhlciBhcHByb2FjaCAtIHRvIHdyaXRlIGtlcm5lbC1p
 bmRlcGVuZGVkIHVzZXJzcGFjZSBmaWxlc3lzdGVtIGJhc2VkIG9uIEZVU0UgbGlicmFyaWVzLiBC
 dXQgdGhpcyB3aWxsIG5lZWQgdG9vIG11Y2ggZHVwbGljYXRpbmcgd29yaywgd2lsbCBiZSBub3Qg
 c28gZmxleGlibGUgYW5kIG1heSBiZSB0b28gc2xvdy4KPGJyPjxicj4mZ3Q7UmVsZWFzZS1Ob3Rl
 Ojxicj4mZ3Q7QXVkaXQtVHJhaWw6PGJyPiZndDtVbmZvcm1hdHRlZDo8YnI+X19fX19fX19fX19f
 X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+PGEgaHJlZj0ibWFpbHRvOmZy
 ZWVic2QtYnVnc0BmcmVlYnNkLm9yZyI+ZnJlZWJzZC1idWdzQGZyZWVic2Qub3JnPC9hPiBtYWls
 aW5nIGxpc3Q8YnI+PGEgaHJlZj0iaHR0cDovL2xpc3RzLmZyZWVic2Qub3JnL21haWxtYW4vbGlz
 dGluZm8vZnJlZWJzZC1idWdzIj4KaHR0cDovL2xpc3RzLmZyZWVic2Qub3JnL21haWxtYW4vbGlz
 dGluZm8vZnJlZWJzZC1idWdzPC9hPjxicj5UbyB1bnN1YnNjcmliZSwgc2VuZCBhbnkgbWFpbCB0
 byAmcXVvdDs8YSBocmVmPSJtYWlsdG86ZnJlZWJzZC1idWdzLXVuc3Vic2NyaWJlQGZyZWVic2Qu
 b3JnIj5mcmVlYnNkLWJ1Z3MtdW5zdWJzY3JpYmVAZnJlZWJzZC5vcmc8L2E+JnF1b3Q7PGJyPjwv
 YmxvY2txdW90ZT48L2Rpdj4KPGJyPjxiciBjbGVhcj0iYWxsIj48YnI+LS0gPGJyPl9fX19fX19f
 X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXzxicj7v0sfBzsnawdTP0iA8YSBocmVm
 PSJodHRwOi8vQlNEUE9SVEFMLlJVIj5CU0RQT1JUQUwuUlU8L2E+IOHMxcvTxcog68HSwcvVwwo=
 ------=_Part_32089_12981407.1171977625630--
>Unformatted:
