Subject: Re: Managing MI entries in our GENERIC-like files
To: None <tech-misc@netbsd.org>
From: David Brownlee <abs@netbsd.org>
List: tech-misc
Date: 06/26/2004 15:14:59
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.

--0-391891591-1088259299=:556
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed

 	OK, I took a pass at generating GENERIC from GENERIC.in
 	using m4.  I'me only broken out the MI options, plus USB
 	and network devices and... its not pretty. Nested ifdefs
 	are particularly unpleasant.  Its made worse by trying to
 	retain the grouping by 'device type' rather than bus. The
 	opl and mpu devices in the audio section are going to be
 	a real mess.  The nightmare is where we have a device which
 	can be on more than one bus, then another line which attaches
 	something to that device.

 	Obviously very few people would have to deal with the
 	template files, but its still ugly as hell.

 	Trying another tack...

 	We could have an the included files have the first token
 	on each line being an expression listing the tags required
 	for the second token onwards to pass through.  That could
 	be easily parsed by awk.

 	Samples for m4 vs tag prefix below. The tags would also
 	make it easier to conditionally have entries excluded,
 	included, or included commented (think cardbus). The
 	downside... is its a pain to work on the files on a normal
 	80 column screen.

 	The more observant will notice that the logic for the 'usb
 	at {e,o,u}hci?' lines is not complete for m4 as they should
 	be included if usb && (pci || cardbus)

------------------------------------------------------------
m4_ifdef(`bus_usb', `m4_dnl
# USB Controller and Devices

m4_ifdef(`bus_pci', `m4_dnl
# PCI USB controllers 
# The EHCI is not ready for prime time. 
#ehci*  at pci? dev ? function ?        # Enhanced Host Controller
ohci*   at pci? dev ? function ?        # Open Host Controller
uhci*   at pci? dev ? function ?        # Universal Host Controller (Intel)

')m4_dnl
m4_ifdef(`bus_cardbus', `m4_dnl
# CardBus USB controllers
#ehci*  at cardbus? dev ? function ?    # Enhanced Host Controller
#ohci*  at cardbus? dev ? function ?    # Open Host Controller

')m4_dnl
m4_ifdef(`bus_isa', `m4_dnl
# ISA USB controllers 
#slhci0 at isa? port 0x300 irq 5        # ScanLogic SL811HS

')m4_dnl
# USB bus support
m4_ifdef(`bus_pci', `m4_dnl
#usb*   at ehci?
usb*    at ohci?
usb*    at uhci?
')m4_dnl
m4_ifdef(`bus_isa', `m4_dnl
#usb*   at slhci?
')m4_dnl

# USB Hubs 
uhub*   at usb? 
uhub*   at uhub? port ? configuration ? interface ?
[...]
')m4_dnl
------------------------------------------------------------

 	Into

------------------------------------------------------------
usb		# USB Controller and Devices
usb 
usb&pci		# PCI USB controllers 
usb&pci		# The EHCI is not ready for prime time. 
usb&pci		#ehci*  at pci? dev ? function ?        # Enhanced Host Controller
usb&pci		ohci*   at pci? dev ? function ?        # Open Host Controller
usb&pci		uhci*   at pci? dev ? function ?        # Universal Host Controller (Intel)
usb&pci 
usb&cardbus	# CardBus USB controllers
usb&cardbus	#ehci*  at cardbus? dev ? function ?    # Enhanced Host Controller
usb&cardbus	#ohci*  at cardbus? dev ? function ?    # Open Host Controller
usb 
usb&isa		# ISA USB controllers 
usb&isa		#slhci0 at isa? port 0x300 irq 5        # ScanLogic SL811HS
usb
usb&pci		# USB bus support 
usb&(pci|cardbus) #usb*   at ehci?
usb&(pci|cardbus) usb*    at ohci?
usb&(pci|cardbus) usb*    at uhci?
usb&isa		#usb*   at slhci?
usb 
usb		# USB Hubs 
usb		uhub*   at usb?
usb		uhub*   at uhub? port ? configuration ? interface ?
[...]
------------------------------------------------------------
-- 
 		David/absolute          -- www.netbsd.org: No hype required --

!DSPAM:40dd84f332181321619433!

--0-391891591-1088259299=:556
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="GENERIC.in"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.60.0406261514590.556@localhost>
Content-Description: 
Content-Disposition: attachment; filename="GENERIC.in"

IyAkTmV0QlNEOiBHRU5FUklDLHYgMS42MTYgMjAwNC8wNi8yNiAwNzozMjow
NiBhYnMgRXhwICQNCiMNCiMgR0VORVJJQyBtYWNoaW5lIGRlc2NyaXB0aW9u
IGZpbGUNCiMNCiMgVGhpcyBtYWNoaW5lIGRlc2NyaXB0aW9uIGZpbGUgaXMg
dXNlZCB0byBnZW5lcmF0ZSB0aGUgZGVmYXVsdCBOZXRCU0QNCiMga2VybmVs
LiAgVGhlIGdlbmVyaWMga2VybmVsIGRvZXMgbm90IGluY2x1ZGUgYWxsIG9w
dGlvbnMsIHN1YnN5c3RlbXMNCiMgYW5kIGRldmljZSBkcml2ZXJzLCBidXQg
c2hvdWxkIGJlIHVzZWZ1bCBmb3IgbW9zdCBhcHBsaWNhdGlvbnMuDQojDQoj
IFRoZSBtYWNoaW5lIGRlc2NyaXB0aW9uIGZpbGUgY2FuIGJlIGN1c3RvbWlz
ZWQgZm9yIHlvdXIgc3BlY2lmaWMNCiMgbWFjaGluZSB0byByZWR1Y2UgdGhl
IGtlcm5lbCBzaXplIGFuZCBpbXByb3ZlIGl0cyBwZXJmb3JtYW5jZS4NCiMN
CiMgRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gY29tcGlsaW5nIE5ldEJT
RCBrZXJuZWxzLCBzZWUgdGhlIGNvbmZpZyg4KQ0KIyBtYW4gcGFnZS4NCiMN
CiMgRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gaGFyZHdhcmUgc3VwcG9y
dCBmb3IgdGhpcyBhcmNoaXRlY3R1cmUsIHNlZQ0KIyB0aGUgaW50cm8oNCkg
bWFuIHBhZ2UuICBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiBhYm91dCBrZXJu
ZWwgb3B0aW9ucw0KIyBmb3IgdGhpcyBhcmNoaXRlY3R1cmUsIHNlZSB0aGUg
b3B0aW9ucyg0KSBtYW4gcGFnZS4gIEZvciBhbiBleHBsYW5hdGlvbg0KIyBv
ZiBlYWNoIGRldmljZSBkcml2ZXIgaW4gdGhpcyBmaWxlIHNlZSB0aGUgc2Vj
dGlvbiA0IG1hbiBwYWdlIGZvciB0aGUNCiMgZGV2aWNlLg0KDQppbmNsdWRl
IAkiYXJjaC9pMzg2L2NvbmYvc3RkLmkzODYiDQoNCm9wdGlvbnMgCUlOQ0xV
REVfQ09ORklHX0ZJTEUJIyBlbWJlZCBjb25maWcgZmlsZSBpbiBrZXJuZWwg
YmluYXJ5DQpvcHRpb25zCQlVTUFTU19ERUJVRw0KDQojaWRlbnQgCQkiR0VO
RVJJQy0kUmV2aXNpb246IDEuNjE2ICQiDQoNCm1heHVzZXJzCTMyCQkjIGVz
dGltYXRlZCBudW1iZXIgb2YgdXNlcnMNCg0KIyBDUFUgc3VwcG9ydC4gIEF0
IGxlYXN0IG9uZSBpcyBSRVFVSVJFRC4NCm9wdGlvbnMgCUkzODZfQ1BVDQpv
cHRpb25zIAlJNDg2X0NQVQ0Kb3B0aW9ucyAJSTU4Nl9DUFUNCm9wdGlvbnMg
CUk2ODZfQ1BVDQoNCiMgQ1BVLXJlbGF0ZWQgb3B0aW9ucy4NCm9wdGlvbnMg
CU1BVEhfRU1VTEFURQkjIGZsb2F0aW5nIHBvaW50IGVtdWxhdGlvbg0Kb3B0
aW9ucyAJVk04NgkJIyB2aXJ0dWFsIDgwODYgZW11bGF0aW9uDQpvcHRpb25z
IAlVU0VSX0xEVAkjIHVzZXItc2V0dGFibGUgTERUOyB1c2VkIGJ5IFdJTkUN
CiMgaW5zZXJ0IGRlbGF5IG5vLW9wcyBpbiBpbnRlcnJ1cHRzOyByZWNvbW1l
bmRlZCBvbiB2ZXJ5IG9sZCBtYWNoaW5lcw0KI29wdGlvbnMgCVBJQ19ERUxB
WQ0KDQojIEVuaGFuY2VkIFNwZWVkU3RlcCBUZWNobm9sb2d5IGluIHRoZSBQ
ZW50aXVtIE0NCm9wdGlvbnMgCUVOSEFOQ0VEX1NQRUVEU1RFUA0KDQpvcHRp
b25zIAlNVFJSCQkjIG1lbW9yeS10eXBlIHJhbmdlIHJlZ2lzdGVyIHN5c2Nh
bGwgc3VwcG9ydA0KIyBkb2Vzbid0IHdvcmsgd2l0aCBNUCBqdXN0IHlldC4u
DQojb3B0aW9ucyAJUEVSRkNUUlMJIyBwZXJmb3JtYW5jZS1tb25pdG9yaW5n
IGNvdW50ZXJzIHN1cHBvcnQNCg0KIyBkZWxheSBiZXR3ZWVuICJyZWJvb3Rp
bmcgLi4uIiBtZXNzYWdlIGFuZCBoYXJkd2FyZSByZXNldCwgaW4gbWlsbGlz
ZWNvbmRzDQojb3B0aW9ucyAJQ1BVUkVTRVRfREVMQVk9MjAwMA0KDQojIFRo
aXMgb3B0aW9uIGFsbG93cyB5b3UgdG8gZm9yY2UgYSBzZXJpYWwgY29uc29s
ZSBhdCB0aGUgc3BlY2lmaWVkDQojIEkvTyBhZGRyZXNzLiAgIHNlZSBjb25z
b2xlKDQpIGZvciBkZXRhaWxzLg0KI29wdGlvbnMgCUNPTlNERVZOQU1FPSJc
ImNvbVwiIixDT05BRERSPTB4MmY4LENPTlNQRUVEPTU3NjAwDQojCXlvdSBk
b24ndCB3YW50IHRoZSBvcHRpb24gYmVsb3cgT04gaWZmIHlvdSBhcmUgdXNp
bmcgdGhlDQojCXNlcmlhbCBjb25zb2xlIG9wdGlvbiBvZiB0aGUgbmV3IGJv
b3Qgc3RyYXAgY29kZS4NCiNvcHRpb25zIAlDT05TX09WRVJSSURFCSMgQWx3
YXlzIHVzZSBhYm92ZSEgaW5kZXBlbmRlbnQgb2YgYm9vdCBpbmZvDQoNCiMg
VGhlIGZvbGxvd2luZyBvcHRpb25zIG92ZXJyaWRlIHRoZSBtZW1vcnkgc2l6
ZXMgcGFzc2VkIGluIGZyb20gdGhlIGJvb3QNCiMgYmxvY2suICBVc2UgdGhl
bSAqb25seSogaWYgdGhlIGJvb3QgYmxvY2sgaXMgdW5hYmxlIHRvIGRldGVy
bWluZSB0aGUgY29ycmVjdA0KIyB2YWx1ZXMuICBOb3RlIHRoYXQgdGhlIEJJ
T1MgbWF5ICpjb3JyZWN0bHkqIHJlcG9ydCBsZXNzIHRoYW4gNjQwayBvZiBi
YXNlDQojIG1lbW9yeSBpZiB0aGUgZXh0ZW5kZWQgQklPUyBkYXRhIGFyZWEg
aXMgbG9jYXRlZCBhdCB0aGUgdG9wIG9mIGJhc2UgbWVtb3J5DQojIChhcyBp
cyB0aGUgY2FzZSBvbiBtb3N0IHJlY2VudCBzeXN0ZW1zKS4NCiNvcHRpb25z
IAlSRUFMQkFTRU1FTT02MzkJCSMgc2l6ZSBvZiBiYXNlIG1lbW9yeSAoaW4g
S0IpDQojb3B0aW9ucyAJUkVBTEVYVE1FTT0xNTM2MAkjIHNpemUgb2YgZXh0
ZW5kZWQgbWVtb3J5IChpbiBLQikNCg0KIyBTdGFuZGFyZCBzeXN0ZW0gb3B0
aW9ucw0KDQpvcHRpb25zIAlJTlNFQ1VSRQkjIGRpc2FibGUga2VybmVsIHNl
Y3VyaXR5IGxldmVscyAtIFggbmVlZHMgdGhpcw0KDQpvcHRpb25zIAlSVENf
T0ZGU0VUPTAJIyBoYXJkd2FyZSBjbG9jayBpcyB0aGlzIG1hbnkgbWlucy4g
d2VzdCBvZiBHTVQNCm9wdGlvbnMgCU5UUAkJIyBOVFAgcGhhc2UvZnJlcXVl
bmN5IGxvY2tlZCBsb29wDQojb3B0aW9ucyAJTk9fVFNDX1RJTUUJIyBEb24n
dCB1c2UgVFNDIG1pY3JvdGltZSwgZXZlbiBpZiBhdmFpbGFibGUuDQoJCQkJ
IyBJbXByb3ZlcyB0aW1lIGJlaGF2aW9yIHVuZGVyIFZNd2FyZS4NCg0Kb3B0
aW9ucyAJTEtNCQkjIGxvYWRhYmxlIGtlcm5lbCBtb2R1bGVzDQoNCiMgQmVl
cCB3aGVuIGl0IGlzIHNhZmUgdG8gcG93ZXIgZG93biB0aGUgc3lzdGVtIChy
ZXF1aXJlcyBzeXNiZWVwKQ0KI29wdGlvbnMgCUJFRVBfT05IQUxUDQojIFNv
bWUgdHVuYWJsZSBkZXRhaWxzIG9mIHRoZSBhYm92ZSBmZWF0dXJlIChkZWZh
dWx0IHZhbHVlcyB1c2VkIGJlbG93KQ0KI29wdGlvbnMgCUJFRVBfT05IQUxU
X0NPVU5UPTMJIyBUaW1lcyB0byBiZWVwDQojb3B0aW9ucyAJQkVFUF9PTkhB
TFRfUElUQ0g9MTUwMAkjIERlZmF1bHQgZnJlcXVlbmN5IChpbiBIeikNCiNv
cHRpb25zIAlCRUVQX09OSEFMVF9QRVJJT0Q9MjUwCSMgRGVmYXVsdCBkdXJh
dGlvbiAoaW4gbXNlY3MpDQoNCiMgQ29tcGF0aWJpbGl0eSBvcHRpb25zDQpv
cHRpb25zIAlDT01QQVRfTk9NSUQJIyBOZXRCU0QgMC44LCAzODZCU0QsIGFu
ZCBCU0RJDQpvcHRpb25zIAlDT01QQVRfMDkJIyBOZXRCU0QgMC45DQpvcHRp
b25zIAlDT01QQVRfMTAJIyBOZXRCU0QgMS4wDQpvcHRpb25zIAlDT01QQVRf
MTEJIyBOZXRCU0QgMS4xDQpvcHRpb25zIAlDT01QQVRfMTIJIyBOZXRCU0Qg
MS4yLCAzODZCU0QsIGFuZCBCU0RJDQpvcHRpb25zIAlDT01QQVRfMTMJIyBO
ZXRCU0QgMS4zLCAzODZCU0QsIGFuZCBCU0RJDQpvcHRpb25zIAlDT01QQVRf
MTQJIyBOZXRCU0QgMS40DQpvcHRpb25zIAlDT01QQVRfMTUJIyBOZXRCU0Qg
MS41DQpvcHRpb25zIAlDT01QQVRfMTYJIyBOZXRCU0QgMS42DQpvcHRpb25z
IAlDT01QQVRfMjAJIyBOZXRCU0QgMi4wDQpvcHRpb25zIAlDT01QQVRfNDMJ
IyA0LjNCU0QsIDM4NkJTRCwgYW5kIEJTREkNCm9wdGlvbnMgCUNPTVBBVF8z
ODZCU0RfTUJSUEFSVCAjIHJlY29nbml6ZSBvbGQgcGFydGl0aW9uIElEDQoj
b3B0aW9ucyAJVENQX0NPTVBBVF80MgkjIDQuMkJTRCBUQ1AvSVAgYnVnIGNv
bXBhdC4gTm90IHJlY29tbWVuZGVkLg0KDQpvcHRpb25zIAlDT01QQVRfT1NT
QVVESU8JIyBPU1MgKFZveHdhcmUpIGF1ZGlvIGRyaXZlciBjb21wYXRpYmls
aXR5DQpvcHRpb25zIAlDT01QQVRfU1ZSNAkjIGJpbmFyeSBjb21wYXRpYmls
aXR5IHdpdGggU1ZSNA0Kb3B0aW9ucyAJQ09NUEFUX0lCQ1MyCSMgYmluYXJ5
IGNvbXBhdGliaWxpdHkgd2l0aCBTQ08gYW5kIElTQw0Kb3B0aW9ucyAJQ09N
UEFUX0xJTlVYCSMgYmluYXJ5IGNvbXBhdGliaWxpdHkgd2l0aCBMaW51eA0K
b3B0aW9ucyAJQ09NUEFUX0ZSRUVCU0QJIyBiaW5hcnkgY29tcGF0aWJpbGl0
eSB3aXRoIEZyZWVCU0QNCiNvcHRpb25zIAlDT01QQVRfTUFDSAkjIGJpbmFy
eSBjb21wYXRpYmlsaXR5IHdpdGggTWFjaCBiaW5hcmllcw0KI29wdGlvbnMg
CUNPTVBBVF9EQVJXSU4JIyBiaW5hcnkgY29tcGF0aWJpbGl0eSB3aXRoIERh
cndpbiBiaW5hcmllcw0KI29wdGlvbnMgCUVYRUNfTUFDSE8JIyBleGVjIE1B
Q0gtTyBiaW5hcmllcw0KI29wdGlvbnMgCUNPTVBBVF9QRUNPRkYJIyBrZXJu
ZWwgc3VwcG9ydCB0byBydW4gV2luMzIgYXBwcw0KDQojIFRoZXNlIG9wdGlv
bnMgZW5hYmxlIHZlcmJvc2UgbWVzc2FnZXMgZm9yIHNldmVyYWwgc3Vic3lz
dGVtcy4NCiMgV2FybmluZywgdGhlc2UgbWF5IGNvbXBpbGUgbGFyZ2Ugc3Ry
aW5nIHRhYmxlcyBpbnRvIHRoZSBrZXJuZWwhDQojb3B0aW9ucyAJQUNQSVZF
UkJPU0UJIyB2ZXJib3NlIEFDUEkgZGV2aWNlIGF1dG9jb25maWcgbWVzc2Fn
ZXMNCm9wdGlvbnMgCUVJU0FWRVJCT1NFCSMgdmVyYm9zZSBFSVNBIGRldmlj
ZSBhdXRvY29uZmlnIG1lc3NhZ2VzDQpvcHRpb25zIAlNSUlWRVJCT1NFCSMg
dmVyYm9zZSBQSFkgYXV0b2NvbmZpZyBtZXNzYWdlcw0Kb3B0aW9ucyAJUENJ
VkVSQk9TRQkjIHZlcmJvc2UgUENJIGRldmljZSBhdXRvY29uZmlnIG1lc3Nh
Z2VzDQojb3B0aW9ucyAJUENJX0NPTkZJR19EVU1QCSMgdmVyYm9zZWx5IGR1
bXAgUENJIGNvbmZpZyBzcGFjZQ0KI29wdGlvbnMgCVBDTUNJQVZFUkJPU0UJ
IyB2ZXJib3NlIFBDTUNJQSBjb25maWd1cmF0aW9uIG1lc3NhZ2VzDQpvcHRp
b25zIAlTQ1NJVkVSQk9TRQkjIGh1bWFuIHJlYWRhYmxlIFNDU0kgZXJyb3Ig
bWVzc2FnZXMNCm9wdGlvbnMgCVVTQlZFUkJPU0UJIyB2ZXJib3NlIFVTQiBk
ZXZpY2UgYXV0b2NvbmZpZyBtZXNzYWdlcw0KI29wdGlvbnMgCVBOUEJJT1NW
RVJCT1NFCSMgdmVyYm9zZSBQblAgQklPUyBtZXNzYWdlcw0KI29wdGlvbnMg
CVBOUEJJT1NERUJVRwkjIG1vcmUgZnVsc29tZSBQblAgQklPUyBkZWJ1Z2dp
bmcgbWVzc2FnZXMNCm9wdGlvbnMgCUkyT1ZFUkJPU0UJIyB2ZXJib3NlIEky
TyBkcml2ZXIgbWVzc2FnZXMNCm9wdGlvbnMgCU1DQVZFUkJPU0UJIyB2ZXJi
b3NlIE1DQSBkZXZpY2UgYXV0b2NvbmZpZyBtZXNzYWdlcw0KDQpvcHRpb25z
IAlORlNfQk9PVF9ESENQLE5GU19CT09UX0JPT1RQQVJBTQ0KDQptNF9pbmNs
dWRlKGAuLi8uLi8uLi9jb25mL29wdGlvbnMuY29uZicpbTRfZG5sDQoNCiMN
CiMgd3Njb25zIG9wdGlvbnMNCiMNCiMgYnVpbHRpbiB0ZXJtaW5hbCBlbXVs
YXRpb25zDQojb3B0aW9ucyAJV1NFTVVMX1NVTgkJIyBzdW4gdGVybWluYWwg
ZW11bGF0aW9uDQpvcHRpb25zIAlXU0VNVUxfVlQxMDAJCSMgVlQxMDAgLyBW
VDIyMCBlbXVsYXRpb24NCiMgZGlmZmVyZW50IGtlcm5lbCBvdXRwdXQgLSBz
ZWUgZGV2L3dzY29ucy93c2Rpc3BsYXl2YXIuaA0Kb3B0aW9ucyAJV1NfS0VS
TkVMX0ZHPVdTQ09MX0dSRUVODQojb3B0aW9ucyAJV1NfS0VSTkVMX0JHPVdT
Q09MX0JMQUNLDQojIGNvbXBhdGliaWxpdHkgdG8gb3RoZXIgY29uc29sZSBk
cml2ZXJzDQpvcHRpb25zIAlXU0RJU1BMQVlfQ09NUEFUX1BDVlQJCSMgZW11
bGF0ZSBzb21lIGlvY3Rscw0Kb3B0aW9ucyAJV1NESVNQTEFZX0NPTVBBVF9T
WVNDT05TCSMgZW11bGF0ZSBzb21lIGlvY3Rscw0Kb3B0aW9ucyAJV1NESVNQ
TEFZX0NPTVBBVF9VU0wJCSMgVlQgaGFuZGxpbmcNCm9wdGlvbnMgCVdTRElT
UExBWV9DT01QQVRfUkFXS0JECQkjIGNhbiBnZXQgcmF3IHNjYW5jb2Rlcw0K
IyBzZWUgZGV2L3Bja2JjL3dza2JkbWFwX21maWkuYyBmb3IgaW1wbGVtZW50
ZWQgbGF5b3V0cw0KI29wdGlvbnMgCVBDS0JEX0xBWU9VVD0iKEtCX0RFIHwg
S0JfTk9ERUFEKSINCiMgYWxsb2NhdGUgYSBudW1iZXIgb2YgdmlydHVhbCBz
Y3JlZW5zIGF0IGF1dG9jb25maWd1cmF0aW9uIHRpbWUNCiNvcHRpb25zIAlX
U0RJU1BMQVlfREVGQVVMVFNDUkVFTlM9NA0KIyB1c2UgYSBsYXJnZSBzb2Z0
d2FyZSBjdXJzb3IgdGhhdCBkb2Vzbid0IGJsaW5rDQpvcHRpb25zIAlQQ0RJ
U1BMQVlfU09GVENVUlNPUg0KIyBtb2RpZnkgdGhlIHNjcmVlbiB0eXBlIG9m
IHRoZSBjb25zb2xlOyBkZWZhdWx0cyB0byAiODB4MjUiDQojb3B0aW9ucyAJ
VkdBX0NPTlNPTEVfU0NSRUVOVFlQRT0iXCI4MHgyNFwiIg0KIyB3b3JrIGFy
b3VuZCBhIGhhcmR3YXJlIGJ1ZyB0aGF0IGxvYWRlZCBmb250cyBkb24ndCB3
b3JrOyBmb3VuZCBvbiBBVEkgY2FyZHMNCiNvcHRpb25zIAlWR0FfQ09OU09M
RV9BVElfQlJPS0VOX0ZPTlRTRUwNCiMgdGhlIGZvbGxvd2luZyBlbmFibGVz
IHNvbWUgZnVuY3Rpb25zIHRvIGdldCBtb3VzZSBjb25zb2xlIHN1cHBvcnQu
DQojIGlmIHlvdSB3YW50IGEgcmVhbGx5IHNlY3VyZSBzeXN0ZW0sIGl0IG1h
eSBiZSBiZXR0ZXIgbm90IHRvIGVuYWJsZSB0aGVtLA0KIyBzZWUgd3Ntb3Vz
ZWQoOCksIHNlY3Rpb24gU0VDVVJJVFkgQ09OU0lERVJBVElPTlMgZm9yIG1v
cmUgaW5mby4NCiNvcHRpb25zIAlXU0RJU1BMQVlfQ0hBUkZVTkNTCQkjIG1v
dXNlIGNvbnNvbGUgc3VwcG9ydA0KIyBjb25zb2xlIHNjcm9sbGluZyBzdXBw
b3J0Lg0KI29wdGlvbnMgCVdTRElTUExBWV9TQ1JPTExTVVBQT1JUDQojIGVu
YWJsZSBWR0EgcmFzdGVyIG1vZGUgY2FwYWJsZSBvZiBkaXNwbGF5aW5nIG11
bHRpbGluZ3VhbCB0ZXh0IG9uIGNvbnNvbGUNCiNvcHRpb25zIAlWR0FfUkFT
VEVSQ09OU09MRQ0KDQojIEtlcm5lbCByb290IGZpbGUgc3lzdGVtIGFuZCBk
dW1wIGNvbmZpZ3VyYXRpb24uDQpjb25maWcJCW5ldGJzZAlyb290IG9uID8g
dHlwZSA/DQojY29uZmlnCQluZXRic2QJcm9vdCBvbiBzZDBhIHR5cGUgZmZz
DQojY29uZmlnCQluZXRic2QJcm9vdCBvbiA/IHR5cGUgbmZzDQoNCiMNCiMg
RGV2aWNlIGNvbmZpZ3VyYXRpb24NCiMNCg0KbWFpbmJ1czAgYXQgcm9vdA0K
DQpjcHUqIGF0IG1haW5idXM/DQojaW9hcGljKiBhdCBtYWluYnVzPw0KDQoj
IERvZXNuJ3QgZG8gYW55dGhpbmcgeWV0Lg0KI3A2NGgyYXBpYyogYXQgcGNp
PyBkZXY/IGZ1bmN0aW9uPwkjIFA2NEgyIElPeEFQSUMNCg0KI2FwbTAJYXQg
bWFpbmJ1czAJCQkjIEFkdmFuY2VkIHBvd2VyIG1hbmFnZW1lbnQNCg0KIyBU
dW5pbmcgZm9yIHBvd2VyIG1hbmFnZW1lbnQsIHNlZSBhcG0oNCkgZm9yIG1v
cmUgZGV0YWlscy4NCiNvcHRpb25zIAlBUE1fTk9fSURMRQkJIyBEb24ndCBj
YWxsIEJJT1MgQ1BVIGlkbGUgZnVuY3Rpb24NCiNvcHRpb25zIAlBUE1fVjEw
X09OTFkJCSMgVXNlIG9ubHkgdGhlIEFQTSAxLjAgY2FsbHMNCiNvcHRpb25z
IAlBUE1fTk9fUE9XRVJPRkYJCSMgRG9uJ3QgcG93ZXIgb2ZmIG9uIGhhbHQo
OCkNCiNvcHRpb25zIAlBUE1fUE9XRVJfUFJJTlQJCSMgUHJpbnQgc3RhdHMg
b24gdGhlIGNvbnNvbGUNCiNvcHRpb25zIAlBUE1fRElTQUJMRV9JTlRFUlJV
UFRTPTAgIyBEb24ndCBkaXNhYmxlIGludGVycnVwdHMNCg0KDQojIEJhc2lj
IEJ1cyBTdXBwb3J0DQoNCiMgQWR2YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQg
UG93ZXIgSW50ZXJmYWNlDQoNCiMgVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQg
dG8gcmV0cmlldmUgQ1BVIGFuZCBBUElDIGluZm9ybWF0aW9uLg0KIyB0aGF0
IEkvTyBBUElDcyBjYW4gYmUgdXNlZCBpZiBBQ1BJIGlzIGVuYWJsZWQgYmVs
b3cuDQojIFRvIHVzZSB0aGUgSS9PIEFQSUMocyksIGVuYWJsZSB0aGUgaW9h
cGljIGxpbmUgYWJvdmUuDQojb3B0aW9ucyAJTVBCSU9TCQkjIGNvbmZpZ3Vy
ZSBDUFVzIGFuZCBBUElDcyB1c2luZyBNUEJJT1MNCiNvcHRpb25zIAlNUEJJ
T1NfU0NBTlBDSQkjIGZpbmQgUENJIHJvb3RzIHVzaW5nIE1QQklPUw0KI29w
dGlvbnMgCU1QQUNQSQkJIyBjb25maWd1cmUgQ1BVcyBhbmQgQVBJQ3MgdXNp
bmcgQUNQSQ0KCQkJCSMgKGFjcGkgYXQgbWFpbmJ1cyBtdXN0IGFsc28gYmUg
ZW5hYmxlZCkNCiNvcHRpb25zIAlNUEFDUElfU0NBTlBDSQkjIGZpbmQgUENJ
IHJvb3RzIHVzaW5nIE1QQUNQSQ0KDQojYWNwaTAgCQlhdCBtYWluYnVzMA0K
I29wdGlvbnMgCUFDUElfUENJX0ZJWFVQCQkjIFBDSSBpbnRlcnJ1cHQgcm91
dGluZyB2aWEgQUNQSQ0KI29wdGlvbnMgCUFDUElfQUNUSVZBVEVfREVWCSMg
SWYgc2V0LCBhY3RpdmF0ZSBpbmFjdGl2ZSBkZXZpY2VzDQojb3B0aW9ucyAJ
QUNQSUNBX1BFREFOVElDCQkjIGZvcmNlIHN0cmljdCBjb25mb3JtYW5jZSB0
byB0aGUgU3BlYy4NCiNvcHRpb25zIAlBQ1BJX0RJU0FCTEVfT05fUE9XRVJP
RkYJIyBkaXNhYmxlIGFjcGkgb24gcG93ZXIgb2ZmDQoNCiMgQUNQSSBkZXZp
Y2VzDQojYWNwaWFjYWQqIAlhdCBhY3BpPwkJIyBBQ1BJIEFDIEFkYXB0ZXIN
CiNhY3BpYmF0KiAJYXQgYWNwaT8JCSMgQUNQSSBCYXR0ZXJ5DQojYWNwaWJ1
dCogCWF0IGFjcGk/CQkjIEFDUEkgQnV0dG9uDQojYWNwaWVjKiAJYXQgYWNw
aT8JCSMgQUNQSSBFbWJlZGRlZCBDb250cm9sbGVyDQojYWNwaWxpZCogCWF0
IGFjcGk/CQkjIEFDUEkgTGlkIFN3aXRjaA0KI2FjcGl0eiogCWF0IGFjcGk/
CQkjIEFDUEkgVGhlcm1hbCBab25lDQoNCiMgTWFpbmJvYXJkIGRldmljZXMN
CiNjb20qIAkJYXQgYWNwaT8JCSMgU2VyaWFsIGNvbW11bmljYXRpb25zIGlu
dGVyZmFjZQ0KI2ZkYyogCQlhdCBhY3BpPwkJIyBGbG9wcHkgZGlzayBjb250
cm9sbGVyDQojbHB0KiAJCWF0IGFjcGk/CQkjIFBhcmFsbGVsIHBvcnQNCiNu
cHgqCQlhdCBhY3BpPwkJIyBNYXRoIGNvcHJvY2Vzc29yDQojcGNrYmMqICAJ
YXQgYWNwaT8JCSMgUEMga2V5Ym9hcmQgY29udHJvbGxlcg0KI3dzcyogCQlh
dCBhY3BpPwkJIyBOZW9NYWdpYyAyNTZBViBpbiB3c3MgbW9kZQ0KDQojIFNv
bnkgVmFpbyBqb2cgZGlhbA0KI3NwaWMqIAkJYXQgYWNwaT8JCSMgU29ueSBQ
cm9ncmFtbWFibGUgSS9PIENvbnRyb2xsZXINCiN3c21vdXNlKiAJYXQgc3Bp
Yz8NCg0KIyBUb3NoaWJhIExpYnJldHRvIGRldmljZXMNCiN2YWxkKiBhdCBh
Y3BpPw0KDQojIFBsdWctYW5kLVBsYXkgQklPUyBhbmQgYXR0YWNoZWQgZGV2
aWNlcw0KDQojcG5wYmlvcyoJYXQgbWFpbmJ1cz8NCg0KIyBtYWluYm9hcmQg
YXVkaW8gY2hpcHMNCiNlc3MqCQlhdCBwbnBiaW9zPyBpbmRleCA/CSMgRVNT
IEF1ZGlvRHJpdmUNCiNzYioJCWF0IHBucGJpb3M/IGluZGV4ID8JIyBOZW9N
YWdpYyAyNTZBViBpbiBzYiBtb2RlDQojd3NzKgkJYXQgcG5wYmlvcz8gaW5k
ZXggPwkjIE5lb01hZ2ljIDI1NkFWIGluIHdzcyBtb2RlDQojeW0qCQlhdCBw
bnBiaW9zPyBpbmRleCA/CSMgT1BMMy1TQTMNCg0KIyBjb20gcG9ydA0KIyBJ
ZiBlbmFibGVkLCBjb25zaWRlciBjaGFuZ2luZyAiY29tMCIsICJjb20xIiwg
YW5kICJjb20yIiB1bmRlciAiSVNBIFNlcmlhbA0KIyBJbnRlcmZhY2VzIiB0
byAiY29tKiIsIG90aGVyd2lzZSBjb20yIHdpbGwgYXR0YWNoIGF0IHBucGJp
b3M/IGFuZCB0aGVyZQ0KIyB3aWxsIGJlIG5vIGNvbTAuICBBIHNpZGUgZWZm
ZWN0IGlzIHBjbWNpYSAoYW5kIG90aGVyKSBjb20/IHByZXZpb3VzbHkNCiMg
c3RhcnRpbmcgYXQgY29tMyBtYXkgYXR0YWNoIGFzIGNvbTEgb3IgY29tMi4N
CiNjb20qCQlhdCBwbnBiaW9zPyBpbmRleCA/CSMgc2VyaWFsIHBvcnRzDQoN
CiMgcGFyYWxsZWwgcG9ydA0KIyBUaGUgYWJvdmUgImNvbSoiIGNvbW1lbnRz
IGFwcGx5LCBjZi4gImxwdDAiIHVuZGVyICJJU0EgcGFyYWxsZWwNCiMgInBy
aW50ZXIgaW50ZXJmYWNlcyIuDQojbHB0KgkJYXQgcG5wYmlvcz8gaW5kZXgg
PwkjIHBhcmFsbGVsIHBvcnRzDQoNCiNwY2tiYyoJCWF0IHBucGJpb3M/IGlu
ZGV4ID8JIyBQQyBrZXlib2FyZC9tb3VzZSBjb250cm9sbGVyDQojZmRjKgkJ
YXQgcG5wYmlvcz8gaW5kZXggPwkjIGZsb3BweSBjb250cm9sbGVyDQoNCiMg
SURFIGNvbnRyb2xsZXIgb24gVG9zaGliYSBQb3J0ZWdlIDMwMDAgc2VyaWVz
IChjcmlwcGxlZCBQQ0kgZGV2aWNlKQ0KI3BjaWlkZSogCWF0IHBucGJpb3M/
IGluZGV4ID8NCg0KIyBQQ0kgYnVzIHN1cHBvcnQNCnBjaSoJYXQgbWFpbmJ1
cz8gYnVzID8NCnBjaSoJYXQgcGNoYj8gYnVzID8NCnBjaSoJYXQgcHBiPyBi
dXMgPw0KDQojIENvbmZpZ3VyZSBQQ0kgdXNpbmcgQklPUyBpbmZvcm1hdGlv
bg0KI29wdGlvbnMgCVBDSUJJT1MJCQkjIFBDSSBCSU9TIHN1cHBvcnQNCiNv
cHRpb25zIAlQQ0lCSU9TVkVSQk9TRQkJIyBQQ0kgQklPUyB2ZXJib3NlIGlu
Zm8NCiNvcHRpb25zIAlQQ0lCSU9TX0FERFJfRklYVVAJIyBmaXh1cCBQQ0kg
SS9PIGFkZHJlc3Nlcw0KI29wdGlvbnMgCVBDSUJJT1NfQlVTX0ZJWFVQCSMg
Zml4dXAgUENJIGJ1cyBudW1iZXJpbmcNCiNvcHRpb25zIAlQQ0lCSU9TX0lO
VFJfRklYVVAJIyBmaXh1cCBQQ0kgaW50ZXJydXB0IHJvdXRpbmcNCiNvcHRp
b25zIAlQQ0lCSU9TX0lSUVNfSElOVD0weDBhMDAgIyBQQ0kgaW50ZXJydXB0
cyBoaW50LiBJUlEgOSBvciAxMQ0KI29wdGlvbnMgCVBDSUJJT1NfSU5UUl9H
VUVTUwkjIHNlZSBwY2liaW9zKDQpDQojb3B0aW9ucyAJUENJQklPU19MSUJS
RVRUT19GSVhVUAkjIHRoaXMgY29kZSBtYWtlcyB0aGUgVG9zaGliYSBMaWJy
ZXR0bw0KCQkJCQkjIEwyL0wzIHdvcmssIGJ1dCBzaG91bGQgbm90IGJlIGVu
YWJsZWQNCgkJCQkJIyBvbiBhbnl0aGluZyBlbHNlLg0KI29wdGlvbnMgCVBD
SUlOVFJfREVCVUcJCSMgc3VwZXItdmVyYm9zZSBQQ0kgaW50ZXJydXB0IGZp
eHVwDQoNCiMgU3lzdGVtIENvbnRyb2xsZXJzDQplbGFuc2MqIGF0IHBjaT8g
ZGV2ID8gZnVuY3Rpb24gPwkjIEFNRCBFbGFuIFNDNTIwIFN5c3RlbSBDb250
cm9sbGVyDQoNCiMgUENJIGJyaWRnZXMNCiNpY2hscGNpYiogYXQgcGNpPyBk
ZXYgPyBmdW5jdGlvbiA/CSMgSW50ZWwgSUNIIFBDSS1JU0Egdy8gd2F0Y2hk
b2cgc3VwcG9ydA0KcGNoYioJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMg
UENJLUhvc3QgYnJpZGdlcw0KcGNlYioJYXQgcGNpPyBkZXYgPyBmdW5jdGlv
biA/CSMgUENJLUVJU0EgYnJpZGdlcw0KcGNpYioJYXQgcGNpPyBkZXYgPyBm
dW5jdGlvbiA/CSMgUENJLUlTQSBicmlkZ2VzDQpwY21iKglhdCBwY2k/IGRl
diA/IGZ1bmN0aW9uID8JIyBQQ0ktTUNBIGJyaWRnZXMNCnBwYioJYXQgcGNp
PyBkZXYgPyBmdW5jdGlvbiA/CSMgUENJLVBDSSBicmlkZ2VzDQojIFhYWCAn
cHVjJ3MgYXJlbid0IHJlYWxseSBicmlkZ2VzLCBidXQgdGhlcmUncyBubyBi
ZXR0ZXIgcGxhY2UgZm9yIHRoZW0gaGVyZQ0KcHVjKglhdCBwY2k/IGRldiA/
IGZ1bmN0aW9uID8JIyBQQ0kgInVuaXZlcnNhbCIgY29tbS4gY2FyZHMNCg0K
YWdwKiAJYXQgcGNoYj8NCg0KDQojIEVJU0EgYnVzIHN1cHBvcnQNCmVpc2Ew
CWF0IG1haW5idXM/DQplaXNhMAlhdCBwY2ViPw0KDQojIElTQSBidXMgc3Vw
cG9ydA0KI2lzYTAJYXQgaWNobHBjaWI/DQppc2EwCWF0IG1haW5idXM/DQpp
c2EwCWF0IHBjZWI/DQppc2EwCWF0IHBjaWI/DQoNCiMgUENNQ0lBIGJ1cyBz
dXBwb3J0DQpwY21jaWEqIGF0IHBjaWM/IGNvbnRyb2xsZXIgPyBzb2NrZXQg
Pw0KcGNtY2lhKiBhdCB0Y2ljPyBjb250cm9sbGVyID8gc29ja2V0ID8NCg0K
IyBNQ0EgYnVzIHN1cHBvcnQNCm1jYTAJYXQgbWFpbmJ1cz8NCg0KIyBJU0Eg
UENNQ0lBIGNvbnRyb2xsZXJzDQpwY2ljMAlhdCBpc2E/IHBvcnQgMHgzZTAg
aW9tZW0gMHhkMDAwMCBpb3NpeiAweDEwMDAwDQpwY2ljMQlhdCBpc2E/IHBv
cnQgMHgzZTIgaW9tZW0gMHhlMDAwMCBpb3NpeiAweDQwMDANCnBjaWMyCWF0
IGlzYT8gcG9ydCAweDNlNCBpb21lbSAweGUwMDAwIGlvc2l6IDB4NDAwMA0K
dGNpYzAJYXQgaXNhPyBwb3J0IDB4MjQwIGlvbWVtIDB4ZDAwMDAgaW9zaXog
MHgxMDAwMA0KDQojIFBDSSBQQ01DSUEgY29udHJvbGxlcnMNCnBjaWMwCWF0
IHBjaT8gZGV2PyBmdW5jdGlvbiA/DQoNCiMgSVNBIFBsdWctYW5kLVBsYXkg
YnVzIHN1cHBvcnQNCmlzYXBucDAgYXQgaXNhPw0KDQojIElTQSBQbHVnLWFu
ZC1QbGF5IFBDTUNJQSBjb250cm9sbGVycw0KcGNpYyoJYXQgaXNhcG5wPw0K
DQojIENhcmRCdXMgYnJpZGdlIHN1cHBvcnQNCmNiYioJCWF0IHBjaT8gZGV2
ID8gZnVuY3Rpb24gPw0KY2FyZHNsb3QqCWF0IGNiYj8NCg0KIyBDYXJkQnVz
IGJ1cyBzdXBwb3J0DQpjYXJkYnVzKglhdCBjYXJkc2xvdD8NCnBjbWNpYSog
CWF0IGNhcmRzbG90Pw0KDQojIENvcHJvY2Vzc29yIFN1cHBvcnQNCg0KIyBN
YXRoIENvcHJvY2Vzc29yIHN1cHBvcnQNCm5weDAJYXQgaXNhPyBwb3J0IDB4
ZjAgaXJxIDEzCSMgeDg2IG1hdGggY29wcm9jZXNzb3INCg0KDQojIENvbnNv
bGUgRGV2aWNlcw0KDQojIElTQSBjb25zb2xlDQojcGMwCWF0IGlzYT8gcG9y
dCAweDYwIGlycSAxCQkjIHBjY29ucyBnZW5lcmljIFBDIGNvbnNvbGUgZHJp
dmVyDQojIEtleWJvYXJkIGxheW91dCBjb25maWd1cmF0aW9uIGZvciBwY2Nv
bnMNCiNvcHRpb25zIAlGUkVOQ0hfS0JEDQojb3B0aW9ucyAJRklOTklTSF9L
QkQNCiNvcHRpb25zIAlHRVJNQU5fS0JEDQojb3B0aW9ucyAJTk9SV0VHSUFO
X0tCRA0KIyBwY2NvbnMtc3BlY2lmaWMgb3B0aW9uczoNCiNvcHRpb25zIAlY
U0VSVkVSX0REQgkjIFBGMTIgZ2V0cyB5b3UgaW50byBEREIgd2hlbiBYIGlz
IHJ1bm5pbmcNCiNvcHRpb25zIAlYU0VSVkVSCQkjIFggc2VydmVyIHN1cHBv
cnQNCg0KDQojIHdzY29ucw0KcGNrYmMwCQlhdCBpc2E/CQkJIyBwYyBrZXli
b2FyZCBjb250cm9sbGVyDQpwY2tiZCoJCWF0IHBja2JjPwkJIyBQQyBrZXli
b2FyZA0KcG1zKgkJYXQgcGNrYmM/CQkjIFBTLzIgbW91c2UgZm9yIHdzbW91
c2UNCiNvcHRpb25zIAlQTVNfRElTQUJMRV9QT1dFUkhPT0sJIyBEaXNhYmxl
IFBTLzIgcmVzZXQgb24gcmVzdW1lDQp2Z2EwCQlhdCBpc2E/DQp2Z2EqCQlh
dCBwY2k/IGRldiA/IGZ1bmN0aW9uID8NCnBjZGlzcGxheTAJYXQgaXNhPwkJ
CSMgQ0dBLCBNREEsIEVHQSwgSEdBDQojbWFjaGZiKiAJYXQgcGNpPyBkZXYg
PyBmdW5jdGlvbiA/ICMgQVRJIE1hY2g2NCBmcmFtZWJ1ZmZlciBkcml2ZXIN
CndzZGlzcGxheSoJYXQgdmdhPyBjb25zb2xlID8NCndzZGlzcGxheSoJYXQg
cGNkaXNwbGF5PyBjb25zb2xlID8NCiN3c2Rpc3BsYXkqIAlhdCBtYWNoZmI/
IGNvbnNvbGUgPw0Kd3NrYmQqCQlhdCBwY2tiZD8gY29uc29sZSA/DQp3c21v
dXNlKglhdCBwbXM/IG11eCAwDQoNCnBjcHBpMAkJYXQgaXNhPw0Kc3lzYmVl
cDAJYXQgcGNwcGk/DQoNCiMgU2VyaWFsIERldmljZXMNCg0KIyBQQ0kgc2Vy
aWFsIGludGVyZmFjZXMNCmNvbSoJYXQgcHVjPyBwb3J0ID8JCQkjIDE2eDUw
cyBvbiAidW5pdmVyc2FsIiBjb21tIGJvYXJkcw0KY3kqCWF0IHBjaT8gZGV2
ID8gZnVuY3Rpb24gPwkjIEN5Y2xhZGVzIEN5Y2xvbS1ZIHNlcmlhbCBib2Fy
ZHMNCmN6KglhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBDeWNsYWRlcy1a
IG11bHRpLXBvcnQgc2VyaWFsIGJvYXJkcw0KDQojIElTQSBQbHVnLWFuZC1Q
bGF5IHNlcmlhbCBpbnRlcmZhY2VzDQpjb20qCWF0IGlzYXBucD8JCQkjIE1v
ZGVtcyBhbmQgc2VyaWFsIGJvYXJkcw0KDQojIFBDTUNJQSBzZXJpYWwgaW50
ZXJmYWNlcw0KY29tKglhdCBwY21jaWE/IGZ1bmN0aW9uID8JCSMgTW9kZW1z
IGFuZCBzZXJpYWwgY2FyZHMNCg0KcGNtY29tKiBhdCBwY21jaWE/IGZ1bmN0
aW9uID8JCSMgUENNQ0lBIG11bHRpLXBvcnQgc2VyaWFsIGNhcmRzDQpjb20q
CWF0IHBjbWNvbT8gc2xhdmUgPwkJIyAuLi5hbmQgdGhlIHNsYXZlIGRldmlj
ZXMNCg0KIyBDYXJkQnVzIHNlcmlhbCBpbnRlcmZhY2VzDQojY29tKglhdCBj
YXJkYnVzPyBkZXYgPyBmdW5jdGlvbiA/CSMgTW9kZW1zIGFuZCBzZXJpYWwg
Y2FyZHMNCg0KIyBJU0Egc2VyaWFsIGludGVyZmFjZXMNCiNvcHRpb25zIAlD
T01fSEFZRVNQCQkjIGFkZHMgSGF5ZXMgRVNQIHNlcmlhbCBib2FyZCBzdXBw
b3J0DQpjb20wCWF0IGlzYT8gcG9ydCAweDNmOCBpcnEgNAkjIFN0YW5kYXJk
IFBDIHNlcmlhbCBwb3J0cw0KY29tMQlhdCBpc2E/IHBvcnQgMHgyZjggaXJx
IDMNCmNvbTIJYXQgaXNhPyBwb3J0IDB4M2U4IGlycSA1DQojY29tMwlhdCBp
c2E/IHBvcnQgMHgyZTggaXJxIDkNCiNhc3QwCWF0IGlzYT8gcG9ydCAweDFh
MCBpcnEgNQkjIEFTVCA0LXBvcnQgc2VyaWFsIGNhcmRzDQojY29tKglhdCBh
c3Q/IHNsYXZlID8NCiNib2NhMAlhdCBpc2E/IHBvcnQgMHgxMDAgaXJxIDUJ
IyBCT0NBIDgtcG9ydCBzZXJpYWwgY2FyZHMNCiNib2NhMAlhdCBpc2E/IHBv
cnQgMHgxMDAgaXJxIDUJIyBCT0NBIDE2LXBvcnQgc2VyaWFsIGNhcmRzIChC
QjIwMTYpDQojYm9jYTEJYXQgaXNhPyBwb3J0IDB4MTQwIGlycSA1CSMgdGhp
cyBsaW5lIGlzIGFsc28gbmVlZGVkIGZvciBCQjIwMTYNCiNjb20qCWF0IGJv
Y2E/IHNsYXZlID8NCiN0Y29tMAlhdCBpc2E/IHBvcnQgMHgxMDAgaXJxIDcJ
IyBUQy04MDAgOC1wb3J0IHNlcmlhbCBjYXJkcw0KI2NvbSoJYXQgdGNvbT8g
c2xhdmUgPw0KI3J0ZnBzMAlhdCBpc2E/IHBvcnQgMHgxMjMwIGlycSAxMAkj
IFJUIDQtcG9ydCBzZXJpYWwgY2FyZHMNCiNjb20qCWF0IHJ0ZnBzPyBzbGF2
ZSA/DQojY3kwCWF0IGlzYT8gaW9tZW0gMHhkNDAwMCBpcnEgMTIJIyBDeWNs
YWRlcyBzZXJpYWwgY2FyZHMNCiNhZGRjb20wIGF0IGlzYT8gcG9ydCAweDEw
OCBpcnEgNQkjIEFkZG9uaWNzIEZsZXhQb3J0IDhTDQojY29tKglhdCBhZGRj
b20/IHNsYXZlID8NCiNtb3hhMAlhdCBpc2E/CXBvcnQgMHgxMDAgaXJxIDUJ
IyBNT1hBIEMxNjhIIHNlcmlhbCBjYXJkIChleHBlcmltZW50YWwpDQojY29t
KglhdCBtb3hhPyBzbGF2ZSA/DQojaW9hdCoJYXQgaXNhPyBwb3J0IDB4MjIw
IGlycSA1CSMgQk9DQSBJT0FUNjYgNi1wb3J0IHNlcmlhbCBjYXJkDQojY29t
KglhdCBpb2F0PyBzbGF2ZSA/DQoNCiMgTUNBIHNlcmlhbCBpbnRlcmZhY2Vz
DQpjb20qCWF0IG1jYT8gc2xvdCA/CQkJIyAxNng1MHMgb24gY29tbSBib2Fy
ZHMNCg0KIyBQYXJhbGxlbCBQcmludGVyIEludGVyZmFjZXMNCg0KIyBQQ0kg
cGFyYWxsZWwgcHJpbnRlciBpbnRlcmZhY2VzDQpscHQqCWF0IHB1Yz8gcG9y
dCA/CQkJIyB8fCBwb3J0cyBvbiAidW5pdmVyc2FsIiBjb21tIGJvYXJkcw0K
DQojIElTQSBwYXJhbGxlbCBwcmludGVyIGludGVyZmFjZXMNCmxwdDAJYXQg
aXNhPyBwb3J0IDB4Mzc4IGlycSA3CSMgc3RhbmRhcmQgUEMgcGFyYWxsZWwg
cG9ydHMNCmxwdDEJYXQgaXNhPyBwb3J0IDB4Mjc4DQpscHQyCWF0IGlzYT8g
cG9ydCAweDNiYw0KDQojIEhhcmR3YXJlIG1vbml0b3JzDQoNCiMgTE03Wzg5
XSBhbmQgY29tcGF0aWJsZSBoYXJkd2FyZSBtb25pdG9ycw0KI2xtMAlhdCBp
c2E/CXBvcnQgMHgyOTAJCSMgb3RoZXIgY29tbW9uIHBvcnRzOiAweDI4MCwg
MHgzMTANCg0KIyBQQzg3MzY2IGhhcmR3YXJlIG1vbml0b3INCiNuc2NscGNz
aW8qCWF0IGlzYT8NCg0KIyBWSUEgVlQ4MkM2ODZBIGhhcmR3YXJlIG1vbml0
b3INCiN2aWFwbSoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/DQojdmlhZW52
KiBhdCB2aWFwbT8NCg0KDQojIEkyTyBkZXZpY2VzDQppb3AqCWF0IHBjaT8g
ZGV2ID8gZnVuY3Rpb24gPwkjIEkvTyBwcm9jZXNzb3INCmlvcHNwKglhdCBp
b3A/IHRpZCA/CQkJIyBTQ1NJL0ZDLUFMIHBvcnRzDQpsZCoJYXQgaW9wPyB0
aWQgPwkJCSMgYmxvY2sgZGV2aWNlcw0KZHB0aSoJYXQgaW9wPyB0aWQgMAkJ
CSMgRFBUL0FkYXB0ZWMgY29udHJvbCBpbnRlcmZhY2UNCg0KDQojIFNDU0kg
Q29udHJvbGxlcnMgYW5kIERldmljZXMNCg0KIyBQQ0kgU0NTSSBjb250cm9s
bGVycw0KYWR2KglhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBBZHZhblN5
cyAxMjAwW0EsQl0sIDl4eFtVLFVBXSBTQ1NJDQphZHcqCWF0IHBjaT8gZGV2
ID8gZnVuY3Rpb24gPwkjIEFkdmFuU3lzIDl4MFVXW0RdLCAzOTQwVVsyLDNd
VyBTQ1NJDQphaGMqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIEFkYXB0
ZWMgWzIzXTk0eCwgYWljNzh4MCBTQ1NJDQphaGQqCWF0IHBjaT8gZGV2ID8g
ZnVuY3Rpb24gPwkjIEFkYXB0ZWMgMjkzMjAsIDM5MzIwIChhaWM3OTB4KSBT
Q1NJDQpiaGEqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIEJ1c0xvZ2lj
IDl4eCBTQ1NJDQpkcHQqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIERQ
VCBTbWFydENhY2hlL1NtYXJ0UkFJRA0KaWhhKglhdCBwY2k/IGRldiA/IGZ1
bmN0aW9uID8JIyBJbml0aW8gSU5JQy05NDAvOTUwIFNDU0kNCmlzcCoJYXQg
cGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgUWxvZ2ljIElTUCBbMTJdMHgwIFND
U0kvRmlicmVDaGFubmVsDQptbHkqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24g
PwkjIE15bGV4IEFjY2VsZVJBSUQgYW5kIGVYdHJlbWVSQUlEDQptcHQqCWF0
IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIExTSSBGdXNpb24gU0NTSS9GQw0K
cGNzY3AqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIEFNRCA1M2M5NzQg
UENzY3NpLVBDSSBTQ1NJDQpzaW9wKglhdCBwY2k/IGRldiA/IGZ1bmN0aW9u
ID8JIyBTeW1iaW9zIDUzYzh4eCBTQ1NJDQplc2lvcCoJYXQgcGNpPyBkZXYg
PyBmdW5jdGlvbiA/CSMgU3ltYmlvcyA1M2M4NzUgU0NTSSBhbmQgbmV3ZXIN
CiNvcHRpb25zIAlTSU9QX1NZTUxFRAkJIyBkcml2ZSB0aGUgYWN0LiBMRUQg
aW4gc29mdHdhcmUNCnRybSoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMg
VGVrcmFtIERDLTM5NVUvVVcvRiwgREMtMzE1L1UgU0NTSQ0KDQojIEVJU0Eg
U0NTSSBjb250cm9sbGVycw0KYWhiKglhdCBlaXNhPyBzbG90ID8JCQkjIEFk
YXB0ZWMgMTc0WzAyXSBTQ1NJDQphaGMqCWF0IGVpc2E/IHNsb3QgPwkJCSMg
QWRhcHRlYyAyNzR4LCBhaWM3NzcwIFNDU0kNCmJoYSoJYXQgZWlzYT8gc2xv
dCA/CQkJIyBCdXNMb2dpYyA3eHggU0NTSQ0KZHB0KglhdCBlaXNhPyBzbG90
ID8JCQkjIERQVCBFQVRBIFNDU0kNCnVoYSoJYXQgZWlzYT8gc2xvdCA/CQkJ
IyBVbHRyYVN0b3IgMjRmIFNDU0kNCg0KIyBQQ01DSUEgU0NTSSBjb250cm9s
bGVycw0KYWljKglhdCBwY21jaWE/IGZ1bmN0aW9uID8JCSMgQWRhcHRlYyBB
UEEtMTQ2MCBTQ1NJDQplc3AqCWF0IHBjbWNpYT8gZnVuY3Rpb24gPwkJIyBR
bG9naWMgRVNQNDA2L0ZBUzQwOCBTQ1NJDQoNCiMgSVNBIFBsdWctYW5kLVBs
YXkgU0NTSSBjb250cm9sbGVycw0KYWhhKglhdCBpc2FwbnA/IAkJCSMgQWRh
cHRlYyBBSEEtMTU0WzAyDQphaWMqCWF0IGlzYXBucD8JCQkjIEFkYXB0ZWMg
QUhBLTE1MjBCDQoNCiMgSVNBIFNDU0kgY29udHJvbGxlcnMNCmFkdjAJYXQg
aXNhPyBwb3J0ID8gaXJxID8gZHJxID8JIyBBZHZhblN5cyBBUEItNTE0WzAy
XSBTQ1NJDQphaGEwCWF0IGlzYT8gcG9ydCAweDMzMCBpcnEgPyBkcnEgPwkj
IEFkYXB0ZWMgMTU0WzAyXSBTQ1NJDQphaGExCWF0IGlzYT8gcG9ydCAweDMz
NCBpcnEgPyBkcnEgPw0KYWhjMAlhdCBpc2E/IHBvcnQgPyBpcnEgPwkJIyBB
ZGFwdGVjIDI4NHggU0NTSQ0KYWljMAlhdCBpc2E/IHBvcnQgMHgzNDAgaXJx
IDExCSMgQWRhcHRlYyAxNTJbMDJdIFNDU0kNCmJoYTAJYXQgaXNhPyBwb3J0
IDB4MzMwIGlycSA/IGRycSA/CSMgQnVzTG9naWMgWzQ1N100WCBTQ1NJDQpi
aGExCWF0IGlzYT8gcG9ydCAweDMzNCBpcnEgPyBkcnEgPw0KIyBUaGUgIm5j
YSIgYW5kICJkcHQiIHByb2JlcyBtaWdodCBnaXZlIGZhbHNlIGhpdHMgb3Ig
aGFuZyB5b3VyIG1hY2hpbmUuDQojZHB0MAlhdCBpc2E/IHBvcnQgMHgxNzAg
aXJxID8gZHJxID8JIyBEUFQgU21hcnRDYWNoZS9TbWFydFJBSUQNCiNuY2Ew
CWF0IGlzYT8gcG9ydCAweDM2MCBpcnEgMTUJIyBQb3J0LW1hcHBlZCBOQ1Ig
NTNDODAgY29udHJvbGxlcg0KI25jYTEJYXQgaXNhPyBpb21lbSAweGQ4MDAw
IGlycSA1CSMgTWVtb3J5LW1hcHBlZCBjb250cm9sbGVyIChUMTI4LCBldGMu
KQ0Kc2VhMAlhdCBpc2E/IGlvbWVtIDB4YzgwMDAgaXJxIDUJIyBTZWFnYXRl
L0Z1dHVyZSBEb21haW4gU0NTSQ0KdWhhMAlhdCBpc2E/IHBvcnQgMHgzMzAg
aXJxID8gZHJxID8JIyBVbHRyYVN0b3IgWzEzXTRmIFNDU0kNCnVoYTEJYXQg
aXNhPyBwb3J0IDB4MzQwIGlycSA/IGRycSA/DQp3ZHMwCWF0IGlzYT8gcG9y
dCAweDM1MCBpcnEgMTUgZHJxIDYJIyBXRDcwMDAgYW5kIFRNQy03MDAwIGNv
bnRyb2xsZXJzDQp3ZHMxCWF0IGlzYT8gcG9ydCAweDM1OCBpcnEgMTEgZHJx
IDUNCg0KIyBDYXJkQnVzIFNDU0kgY2FyZHMNCiNhZHYqCWF0IGNhcmRidXM/
IGRldiA/IGZ1bmN0aW9uID8JIyBBZHZhblN5cyAxMjAwW0EsQl0sIDl4eFtV
LFVBXSBTQ1NJDQojYWhjKglhdCBjYXJkYnVzPyBkZXYgPyBmdW5jdGlvbiA/
CSMgQWRhcHRlYyBBRFAtMTQ4MA0KDQojIE1DQSBTQ1NJIGNhcmRzDQphaGEq
CWF0IG1jYT8gc2xvdCA/CQkJIyBBZGFwdGVjIEFIQS0xNjQwDQoNCiMgU0NT
SSBidXMgc3VwcG9ydA0Kc2NzaWJ1cyogYXQgc2NzaT8NCg0KIyBTQ1NJIGRl
dmljZXMNCnNkKglhdCBzY3NpYnVzPyB0YXJnZXQgPyBsdW4gPwkjIFNDU0kg
ZGlzayBkcml2ZXMNCnN0KglhdCBzY3NpYnVzPyB0YXJnZXQgPyBsdW4gPwkj
IFNDU0kgdGFwZSBkcml2ZXMNCmNkKglhdCBzY3NpYnVzPyB0YXJnZXQgPyBs
dW4gPwkjIFNDU0kgQ0QtUk9NIGRyaXZlcw0KY2gqCWF0IHNjc2lidXM/IHRh
cmdldCA/IGx1biA/CSMgU0NTSSBhdXRvY2hhbmdlcnMNCnNlcyoJYXQgc2Nz
aWJ1cz8gdGFyZ2V0ID8gbHVuID8JIyBTQ1NJIEVuY2xvc3VyZSBTZXJ2aWNl
cyBkZXZpY2VzDQpzcyoJYXQgc2NzaWJ1cz8gdGFyZ2V0ID8gbHVuID8JIyBT
Q1NJIHNjYW5uZXJzDQp1ayoJYXQgc2NzaWJ1cz8gdGFyZ2V0ID8gbHVuID8J
IyBTQ1NJIHVua25vd24NCg0KDQojIFJBSUQgY29udHJvbGxlcnMgYW5kIGRl
dmljZXMNCmFhYyoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgQWRhcHRl
YyBBQUMgZmFtaWx5DQphbXIqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkj
IEFNSS9MU0kgTG9naWMgTWVnYVJBSUQNCmNhYyoJYXQgZWlzYT8gc2xvdCA/
CQkJIyBDb21wYXEgRUlTQSBhcnJheSBjb250cm9sbGVycw0KY2FjKglhdCBw
Y2k/IGRldiA/IGZ1bmN0aW9uID8JIyBDb21wYXEgUENJIGFycmF5IGNvbnRy
b2xsZXJzDQppY3AqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIElDUC1W
b3J0ZXggR0RUICYgSW50ZWwgUkFJRA0KbWx4KglhdCBwY2k/IGRldiA/IGZ1
bmN0aW9uID8JIyBNeWxleCBEQUM5NjAgJiBERUMgU1dYQ1IgZmFtaWx5DQpt
bHgqCWF0IGVpc2E/IHNsb3QgPwkJCSMgTXlsZXggREFDOTYwICYgREVDIFNX
WENSIGZhbWlseQ0KdHdlKglhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyAz
d2FyZSBFc2NhbGFkZSBSQUlEIGNvbnRyb2xsZXJzDQoNCmxkKglhdCBhYWM/
IHVuaXQgPwkJCSMgbG9naWNhbCBkaXNrIGRldmljZXMNCmxkKglhdCBhbXI/
IHVuaXQgPw0KbGQqCWF0IGNhYz8gdW5pdCA/DQpsZCoJYXQgaWNwPyB1bml0
ID8NCmxkKglhdCB0d2U/IHVuaXQgPw0KbGQqCWF0IG1seD8gdW5pdCA/DQoN
CmljcHNwKglhdCBpY3A/IHVuaXQgPwkJCSMgU0NTSSBwYXNzLXRocm91Z2gN
Cg0KIyBJREUgYW5kIHJlbGF0ZWQgZGV2aWNlcw0KIyBQQ0kgSURFIGNvbnRy
b2xsZXJzIC0gc2VlIHBjaWlkZSg0KSBmb3Igc3VwcG9ydGVkIGhhcmR3YXJl
Lg0KIyBUaGUgMHgwMDAxIGZsYWcgZm9yY2UgdGhlIGRyaXZlciB0byB1c2Ug
RE1BLCBldmVuIGlmIHRoZSBkcml2ZXIgZG9lc24ndCBrbm93DQojIGhvdyB0
byBzZXQgdXAgRE1BIG1vZGVzIGZvciB0aGlzIGNoaXAuIFRoaXMgbWF5IHdv
cmssIG9yIG1heSBjYXVzZQ0KIyBhIG1hY2hpbmUgaGFuZyB3aXRoIHNvbWUg
Y29udHJvbGxlcnMuDQpwY2lpZGUqIAlhdCBwY2k/IGRldiA/IGZ1bmN0aW9u
ID8gZmxhZ3MgMHgwMDAwCSMgR0VORVJJQyBwY2lpZGUgZHJpdmVyDQphY2Fy
ZGlkZSoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgQWNhcmQgSURFIGNv
bnRyb2xsZXJzDQphY2VyaWRlKiAJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/
CSMgQWNlciBMYWIgSURFIGNvbnRyb2xsZXJzDQphcnRzYXRhKiAJYXQgcGNp
PyBkZXYgPyBmdW5jdGlvbiA/CSMgSW50ZWwgaTMxMjQ0IFNBVEEgY29udHJv
bGxlcg0KY21kaWRlKiAJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgQ01E
IHRlY2ggSURFIGNvbnRyb2xsZXJzDQpjeXBpZGUqIAlhdCBwY2k/IGRldiA/
IGZ1bmN0aW9uID8JIyBDeXByZXNzIElERSBjb250cm9sbGVycw0KaHB0aWRl
KiAJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgVHJpb25lcy9IaWdoUG9p
bnQgSURFIGNvbnRyb2xsZXJzDQpvcHRpaWRlKiAJYXQgcGNpPyBkZXYgPyBm
dW5jdGlvbiA/CSMgT3B0aSBJREUgY29udHJvbGxlcnMNCnBpaXhpZGUqIAlh
dCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBJbnRlbCBJREUgY29udHJvbGxl
cnMNCnBkY2lkZSogCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIFByb21p
c2UgSURFIGNvbnRyb2xsZXJzDQpyY2NpZGUqIAlhdCBwY2k/IGRldiA/IGZ1
bmN0aW9uID8JIyBTZXJ2ZXJXb3JrcyBJREUgY29udHJvbGxlcnMNCnNhdGFs
aW5rKglhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBTaUkgU0FUQUxpbmsg
Y29udHJvbGxlcnMNCnNpc2lkZSogCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24g
PwkjIFNpUyBJREUgY29udHJvbGxlcnMNCnNsaWRlKiAgCWF0IHBjaT8gZGV2
ID8gZnVuY3Rpb24gPwkjIFN5bXBob255IExhYnMgSURFIGNvbnRyb2xsZXJz
DQpzdHBjaWRlKglhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBTVE1pY3Jv
IFNUUEMgSURFIGNvbnRyb2xsZXJzDQp2aWFpZGUqIAlhdCBwY2k/IGRldiA/
IGZ1bmN0aW9uID8JIyBWSUEvQU1EL052aWRpYSBJREUgY29udHJvbGxlcnMN
Cg0KIyBJU0EgUGx1Zy1hbmQtUGxheSBJREUgY29udHJvbGxlcnMNCndkYyoJ
YXQgaXNhcG5wPw0KDQojIFBDTUNJQSBJREUgY29udHJvbGxlcnMNCndkYyoJ
YXQgcGNtY2lhPyBmdW5jdGlvbiA/DQoNCiMgSVNBIFNUNTA2LCBFU0RJLCBh
bmQgSURFIGNvbnRyb2xsZXJzDQojIFVzZSBmbGFncyAweDAxIGlmIHlvdSB3
YW50IHRvIHRyeSB0byB1c2UgMzJiaXRzIGRhdGEgSS9PICh0aGUgZHJpdmVy
IHdpbGwNCiMgZmFsbCBiYWNrIHRvIDE2Yml0cyBJL08gaWYgMzJiaXRzIEkv
TyBhcmUgbm90IGZ1bmN0aW9uYWwpLg0KIyBTb21lIGNvbnRyb2xsZXJzIHBh
c3MgdGhlIGluaXRpYWwgMzJiaXQgdGVzdCwgYnV0IHdpbGwgZmFpbCBsYXRl
ci4NCndkYzAJYXQgaXNhPyBwb3J0IDB4MWYwIGlycSAxNCBmbGFncyAweDAw
DQp3ZGMxCWF0IGlzYT8gcG9ydCAweDE3MCBpcnEgMTUgZmxhZ3MgMHgwMA0K
DQojIEFUQSAoSURFKSBidXMgc3VwcG9ydA0KYXRhYnVzKiBhdCBhdGE/DQoN
CiMgSURFIGRyaXZlcw0KIyBGbGFncyBhcmUgdXNlZCBvbmx5IHdpdGggY29u
dHJvbGxlcnMgdGhhdCBzdXBwb3J0IERNQSBvcGVyYXRpb25zDQojIGFuZCBt
b2RlIHNldHRpbmdzIChlLmcuIHNvbWUgcGNpaWRlIGNvbnRyb2xsZXJzKQ0K
IyBUaGUgbG93ZXN0IG9yZGVyIGZvdXIgYml0cyAocmlnaHRtb3N0IGRpZ2l0
KSBvZiB0aGUgZmxhZ3MgZGVmaW5lIHRoZSBQSU8NCiMgbW9kZSB0byB1c2Us
IHRoZSBuZXh0IHNldCBvZiBmb3VyIGJpdHMgdGhlIERNQSBtb2RlIGFuZCB0
aGUgdGhpcmQgc2V0IHRoZQ0KIyBVbHRyYURNQSBtb2RlLiBGb3IgZWFjaCBz
ZXQgb2YgZm91ciBiaXRzLCB0aGUgMyBsb3dlciBiaXRzIGRlZmluZSB0aGUg
bW9kZQ0KIyB0byB1c2UsIGFuZCB0aGUgbGFzdCBiaXQgbXVzdCBiZSAxIGZv
ciB0aGlzIHNldHRpbmcgdG8gYmUgdXNlZC4NCiMgRm9yIERNQSBhbmQgVURN
QSwgMHhmICgxMTExKSBtZWFucyAnZGlzYWJsZScuDQojIDB4MGZhYyBtZWFu
cyAndXNlIFBJTyBtb2RlIDQsIERNQSBtb2RlIDIsIGRpc2FibGUgVWx0cmFE
TUEnLg0KIyAoMHhjPTExMDAsIDB4YT0xMDEwLCAweGY9MTExMSkNCiMgMHgw
MDAwIG1lYW5zICJ1c2Ugd2hhdGV2ZXIgdGhlIGRyaXZlIGNsYWltcyB0byBz
dXBwb3J0Ii4NCndkKglhdCBhdGFidXM/IGRyaXZlID8gZmxhZ3MgMHgwMDAw
DQoNCiMgQVRBIFJBSUQgY29uZmlndXJhdGlvbiBzdXBwb3J0LCBhcyBmb3Vu
ZCBvbiBzb21lIFByb21pc2UgY29udHJvbGxlcnMuDQpwc2V1ZG8tZGV2aWNl
CWF0YXJhaWQNCmxkKglhdCBhdGFyYWlkPyB2ZW5kdHlwZSA/IHVuaXQgPw0K
DQojIEFUQVBJIGJ1cyBzdXBwb3J0DQphdGFwaWJ1cyogYXQgYXRhcGk/DQoN
CiMgQVRBUEkgZGV2aWNlcw0KIyBmbGFncyBoYXZlIHRoZSBzYW1lIG1lYW5p
bmcgYXMgZm9yIElERSBkcml2ZXMuDQpjZCoJYXQgYXRhcGlidXM/IGRyaXZl
ID8gZmxhZ3MgMHgwMDAwCSMgQVRBUEkgQ0QtUk9NIGRyaXZlcw0Kc2QqCWF0
IGF0YXBpYnVzPyBkcml2ZSA/IGZsYWdzIDB4MDAwMAkjIEFUQVBJIGRpc2sg
ZHJpdmVzDQpzdCoJYXQgYXRhcGlidXM/IGRyaXZlID8gZmxhZ3MgMHgwMDAw
CSMgQVRBUEkgdGFwZSBkcml2ZXMNCnVrKglhdCBhdGFwaWJ1cz8gZHJpdmUg
PyBmbGFncyAweDAwMDAJIyBBVEFQSSB1bmtub3duDQoNCm00X2RlZmluZShg
YnVzX2NhcmRidXMnKW00X2RubA0KbTRfZGVmaW5lKGBidXNfZWlzYScpbTRf
ZG5sDQptNF9kZWZpbmUoYGJ1c19md2J1cycpbTRfZG5sDQptNF9kZWZpbmUo
YGJ1c19pc2EnKW00X2RubA0KbTRfZGVmaW5lKGBidXNfaXNhcG5wJyltNF9k
bmwNCm00X2RlZmluZShgYnVzX21jYScpbTRfZG5sDQptNF9kZWZpbmUoYGJ1
c19taWknKW00X2RubA0KbTRfZGVmaW5lKGBidXNfcGNpJyltNF9kbmwNCm00
X2RlZmluZShgYnVzX3BjbWNpYScpbTRfZG5sDQptNF9kZWZpbmUoYGJ1c191
c2InKW00X2RubA0KbTRfaW5jbHVkZShgLi4vLi4vLi4vY29uZi9kZXZpY2Vz
LmNvbmYnKW00X2RubA0KIyBBdWRpbyBEZXZpY2VzDQoNCiMgUENJIGF1ZGlv
IGRldmljZXMNCmF1aWNoKglhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBJ
bnRlbCBJQ0ggaW50ZWdyYXRlZCBBQyc5NyBBdWRpbw0KYXV0cmkqCWF0IHBj
aT8gZGV2ID8gZnVuY3Rpb24gPwkjIFRyaWRlbnQgNERXQVZFIGJhc2VkIEFD
Jzk3IEF1ZGlvDQphdXZpYSoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMg
VklBIFZUODJDNjg2QSBpbnRlZ3JhdGVkIEFDJzk3IEF1ZGlvDQpjbGNzKglh
dCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBDaXJydXMgTG9naWMgQ1M0Mjgw
DQpjbGN0KglhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBDaXJydXMgTG9n
aWMgQ1M0MjgxDQpjbXBjaSoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMg
Qy1NZWRpYSBDTUk4MzM4Lzg3MzgNCmVhcCoJYXQgcGNpPyBkZXYgPyBmdW5j
dGlvbiA/CSMgRW5zb25pcSBBdWRpb1BDSQ0KZW11eGtpKiBhdCBwY2k/IGRl
diA/IGZ1bmN0aW9uID8JIyBDcmVhdGl2ZSBTQkxpdmUhIGFuZCBQQ0k1MTIN
CmVzYSoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgRVNTIEFsbGVncm8t
MSAvIE1hZXN0cm8tMyBQQ0kgQXVkaW8NCmVzbSoJYXQgcGNpPyBkZXYgPyBm
dW5jdGlvbiA/CSMgRVNTIE1hZXN0cm8tMS8yLzJlIFBDSSBBdWRpbyBBY2Nl
bGVyYXRvcg0KZXNvKglhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBFU1Mg
U29sby0xIFBDSSBBdWRpb0RyaXZlDQpmbXMqCWF0IHBjaT8gZGV2ID8gZnVu
Y3Rpb24gPwkjIEZvcnRlIE1lZGlhIEZNODAxDQpuZW8qCWF0IHBjaT8gZGV2
ID8gZnVuY3Rpb24gPwkjIE5lb01hZ2ljIDI1NiBBQyc5NyBBdWRpbw0Kc3Yq
CWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIFMzIFNvbmljVmliZXMNCnlk
cyoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgWWFtYWhhIERTLTEgUENJ
IEF1ZGlvDQoNCiMgSVNBIFBsdWctYW5kLVBsYXkgYXVkaW8gZGV2aWNlcw0K
ZXNzKglhdCBpc2FwbnA/CQkJIyBFU1MgVGVjaCBFUzE4ODcsIEVTMTg4OCwg
RVM4ODggYXVkaW8NCmd1c3BucCogYXQgaXNhcG5wPwkJCSMgR3JhdmlzIFVs
dHJhIFNvdW5kIFBuUCBhdWRpbw0Kc2IqCWF0IGlzYXBucD8JCQkjIFNvdW5k
Qmxhc3Rlci1jb21wYXRpYmxlIGF1ZGlvDQp3c3MqCWF0IGlzYXBucD8JCQkj
IFdpbmRvd3MgU291bmQgU3lzdGVtDQp5bSoJYXQgaXNhcG5wPwkJCSMgWWFt
YWhhIE9QTDMtU0EzIGF1ZGlvDQoNCiMgSVNBIGF1ZGlvIGRldmljZXMNCiMg
dGhlICJhcmlhIiBwcm9iZSBtaWdodCBnaXZlIGZhbHNlIGhpdHMNCiNhcmlh
MAlhdCBpc2E/IHBvcnQgMHgyOTAgaXJxIDEwIAkJIyBBcmlhDQojZXNzMAlh
dCBpc2E/IHBvcnQgMHgyMjAgaXJxIDUgZHJxIDEgZHJxMiA1CSMgRVNTIDE4
WFgNCmd1czAJYXQgaXNhPyBwb3J0IDB4MjIwIGlycSA3IGRycSAxIGRycTIg
NgkjIEdyYXZpcyBVbHRyYSBTb3VuZA0KcGFzMAlhdCBpc2E/IHBvcnQgMHgy
MjAgaXJxIDcgZHJxIDEJCSMgUHJvQXVkaW8gU3BlY3RydW0NCiNwc3MwCWF0
IGlzYT8gcG9ydCAweDIyMCBpcnEgNyBkcnEgNgkJIyBQZXJzb25hbCBTb3Vu
ZCBTeXN0ZW0NCiNzcDAJYXQgcHNzMCBwb3J0IDB4NTMwIGlycSAxMCBkcnEg
MAkJIyAJc291bmQgcG9ydCBkcml2ZXINCnNiMAlhdCBpc2E/IHBvcnQgMHgy
MjAgaXJxIDUgZHJxIDEgZHJxMiA1CSMgU291bmRCbGFzdGVyDQp3c3MwCWF0
IGlzYT8gcG9ydCAweDUzMCBpcnEgMTAgZHJxIDAJZHJxMiAxCSMgV2luZG93
cyBTb3VuZCBTeXN0ZW0NCg0KIyBQQ01DSUEgYXVkaW8gZGV2aWNlcw0KI2Vz
bCoJYXQgcGNtY2lhPyBmdW5jdGlvbiA/CQkJIyBFU1MgMTY4OCBBdWRpb0Ry
aXZlDQoNCiNjbXMwCWF0IGlzYT8gcG9ydCAweDIyMAkJCSMgQ3JlYXRpdmUg
TXVzaWMgU3lzdGVtDQoNCiMgT1BMWzIzXSBGTSBzeW50aGVzaXplcnMNCiNv
cGwwCWF0IGlzYT8gcG9ydCAweDM4OAkjIHVzZSBvbmx5IGlmIG5vdCBhdHRh
Y2hlZCB0byBzb3VuZCBjYXJkDQpvcGwqCWF0IGNtcGNpPyBmbGFncyAxDQoj
b3BsKglhdCBlc2w/DQpvcGwqCWF0IGVzbz8NCm9wbCoJYXQgZXNzPw0Kb3Bs
KglhdCBmbXM/DQpvcGwqCWF0IHNiPw0Kb3BsKglhdCBzdj8NCm9wbCoJYXQg
d3NzPw0Kb3BsKglhdCB5ZHM/DQpvcGwqCWF0IHltPw0KDQojIEF1ZGlvIHN1
cHBvcnQNCmF1ZGlvKglhdCBhdWRpb2J1cz8NCg0KIyBNUFUgNDAxIFVBUlRz
DQojbXB1KglhdCBpc2E/IHBvcnQgMHgzMzAgaXJxIDkJIyBNUFU0MDEgb3Ig
Y29tcGF0aWJsZSBjYXJkDQptcHUqCWF0IGNtcGNpPw0KbXB1KglhdCBlc28/
DQptcHUqCWF0IGZtcz8NCm1wdSoJYXQgc2I/DQptcHUqCWF0IHlkcz8NCm1w
dSoJYXQgeW0/DQoNCiMgTUlESSBzdXBwb3J0DQptaWRpKglhdCBtaWRpYnVz
Pw0KbWlkaSoJYXQgcGNwcGk/CQkjIE1JREkgaW50ZXJmYWNlIHRvIHRoZSBQ
QyBzcGVha2VyDQoNCiMgVGhlIHNwa3IgZHJpdmVyIHByb3ZpZGVzIGEgc2lt
cGxlIHRvbmUgaW50ZXJmYWNlIHRvIHRoZSBidWlsdCBpbiBzcGVha2VyLg0K
I3Nwa3IwCWF0IHBjcHBpPwkJIyBQQyBzcGVha2VyDQoNCg0KIyBGTS1SYWRp
byBkZXZpY2VzDQojIElTQSByYWRpbyBkZXZpY2VzDQojYXowCWF0IGlzYT8g
cG9ydCAweDM1MCAgICAgICMgQXp0ZWNoL1BhY2thcmRCZWxsIEZNIFJhZGlv
IENhcmQNCiNhejEJYXQgaXNhPyBwb3J0IDB4MzU4DQojcnQwCWF0IGlzYT8g
cG9ydCAweDIwYyAgICAgICMgQUlNUyBMYWIgUmFkaW90cmFjayAmIGNvbXBh
dGlibGUNCiNydDEJYXQgaXNhPyBwb3J0IDB4Mjg0DQojcnQyCWF0IGlzYT8g
cG9ydCAweDMwYw0KI3J0MwlhdCBpc2E/IHBvcnQgMHgzODQNCiNydGlpMAlh
dCBpc2E/IHBvcnQgMHgyMGMgICAgICAjIEFJTVMgTGFiIFJhZGlvdHJhY2sg
SUkgRk0gUmFkaW8gQ2FyZA0KI3J0aWkxCWF0IGlzYT8gcG9ydCAweDMwYw0K
I3NmMnIwCWF0IGlzYT8gcG9ydCAweDM4NCAgICAgICMgU291bmRGb3J0ZSBS
YWRpb0xpbmsgU0YxNi1GTVIyIEZNIFJhZGlvIENhcmQNCg0KIyBQQ0kgcmFk
aW8gZGV2aWNlcw0KI2d0cCoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/ICMg
R3VpbGxlbW90IE1heGkgUmFkaW8gRk0gMjAwMCBSYWRpbyBDYXJkDQoNCiMg
UmFkaW8gc3VwcG9ydA0KI3JhZGlvKglhdCBhej8NCiNyYWRpbyoJYXQgZ3Rw
Pw0KI3JhZGlvKglhdCBydD8NCiNyYWRpbyoJYXQgcnRpaT8NCiNyYWRpbyoJ
YXQgc2Yycj8NCg0KDQojIFRWIGNhcmRzDQoNCiMgQnJvb2t0cmVlIDg0OC84
NDkvODc4Lzg3OSBiYXNlZCBUViBjYXJkcw0KYmt0ciogYXQgcGNpPyBkZXYg
PyBmdW5jdGlvbiA/DQpyYWRpbyogYXQgYmt0cj8NCg0KDQojIE1pY2UNCg0K
IyBJU0EgYnVzbWljZQ0KbG1zMAlhdCBpc2E/IHBvcnQgMHgyM2MgaXJxIDUJ
IyBMb2dpdGVjaCBidXMgbW91c2UNCmxtczEJYXQgaXNhPyBwb3J0IDB4MjM4
IGlycSA1DQptbXMwCWF0IGlzYT8gcG9ydCAweDIzYyBpcnEgNQkjIE1pY3Jv
c29mdCBJblBvcnQgbW91c2UNCm1tczEJYXQgaXNhPyBwb3J0IDB4MjM4IGly
cSA1DQp3c21vdXNlKglhdCBsbXM/IG11eCAwDQp3c21vdXNlKglhdCBtbXM/
IG11eCAwDQoNCg0KIyBDcnlwdG9ncmFwaGljIERldmljZXMNCg0KIyBQQ0kg
Y3J5cHRvZ3JhcGhpYyBkZXZpY2VzDQpoaWZuKglhdCBwY2k/IGRldiA/IGZ1
bmN0aW9uID8JIyBIaWZuIDc3NTUvNzgxMS83OTV4DQp1YnNlYyoJYXQgcGNp
PyBkZXYgPyBmdW5jdGlvbiA/CSMgQnJvYWRjb20gNTUwMS81NjAxLzU4MHgv
NTgyeA0KDQoNCiMgSm95c3RpY2tzDQoNCiNqb3kqCWF0IHBucGJpb3M/IGlu
ZGV4ID8JCSMgR2FtZSBwb3J0DQoNCiMgSVNBIFBsdWctYW5kLVBsYXkgam95
c3RpY2tzDQpqb3kqCWF0IGlzYXBucD8JCQkjIEdhbWUgcG9ydHMgKHVzdWFs
bHkgb24gYXVkaW8gY2FyZHMpDQoNCiMgUENJIGpveXN0aWNrcw0Kam95Kglh
dCBwY2k/CQkJCSMgR2FtZSBwb3J0cyAodXN1YWxseSBvbiBhdWRpbyBjYXJk
cykNCmpveSoJYXQgZXNvPwkJCQkjIEVTUyBTb2xvLTEgb24tYm9hcmQgam95
c3RpY2sNCg0KIyBJU0Egam95c3RpY2tzLiBQcm9iZSBpcyBhIGxpdHRsZSBz
dHJhbmdlOyBhZGQgb25seSBpZiB5b3UgaGF2ZSBvbmUuDQojam95MAlhdCBp
c2E/IHBvcnQgMHgyMDENCg0KDQojIE1pc2NlbGxhbmVvdXMgRGV2aWNlcw0K
DQojIFBsYW5ldGNvbm5lY3QgU2F0ZWxsaXRlIHJlY2VpdmVyIGRyaXZlci4N
CiNzYXRsaW5rMCBhdCBpc2E/IHBvcnQgMHgzMDAgZHJxIDENCg0KIyBNaWRk
bGUgRGlnaXRhbCwgSW5jLiBQQ0ktV2Vhc2VsIHNlcmlhbCBjb25zb2xlIGJv
YXJkIGNvbnRyb2wNCiMgZGV2aWNlcyAod2F0Y2hkb2cgdGltZXIsIGV0Yy4p
DQp3ZWFzZWwqIGF0IHBjaT8NCg0KIyBQdWxsIGluIG9wdGlvbmFsIGxvY2Fs
IGNvbmZpZ3VyYXRpb24NCmluY2x1ZGUJImFyY2gvaTM4Ni9jb25mL0dFTkVS
SUMubG9jYWwiDQoNCg0KIyBQc2V1ZG8tRGV2aWNlcw0KDQpwc2V1ZG8tZGV2
aWNlIAljcnlwdG8JCSMgb3BlbmNyeXB0byBmcmFtZXdvcmsNCg0KIyBkaXNr
L21hc3Mgc3RvcmFnZSBwc2V1ZG8tZGV2aWNlcw0KcHNldWRvLWRldmljZQlj
Y2QJCTQJIyBjb25jYXRlbmF0ZWQvc3RyaXBlZCBkaXNrIGRldmljZXMNCiNw
c2V1ZG8tZGV2aWNlCWNnZAkJNAkjIGNyeXB0b2dyYXBoaWMgZGlzayBkZXZp
Y2VzDQpwc2V1ZG8tZGV2aWNlCXJhaWQJCTgJIyBSQUlEZnJhbWUgZGlzayBk
cml2ZXINCm9wdGlvbnMgCVJBSURfQVVUT0NPTkZJRwkJIyBhdXRvLWNvbmZp
Z3VyYXRpb24gb2YgUkFJRCBjb21wb25lbnRzDQojIE9wdGlvbnMgdG8gZW5h
YmxlIHZhcmlvdXMgb3RoZXIgUkFJRGZyYW1lIFJBSUQgdHlwZXMuDQojb3B0
aW9ucyAJUkZfSU5DTFVERV9FVkVOT0REPTENCiNvcHRpb25zIAlSRl9JTkNM
VURFX1JBSUQ1X1JTPTENCiNvcHRpb25zIAlSRl9JTkNMVURFX1BBUklUWUxP
R0dJTkc9MQ0KI29wdGlvbnMgCVJGX0lOQ0xVREVfQ0hBSU5ERUNMVVNURVI9
MQ0KI29wdGlvbnMgCVJGX0lOQ0xVREVfSU5URVJERUNMVVNURVI9MQ0KI29w
dGlvbnMgCVJGX0lOQ0xVREVfUEFSSVRZX0RFQ0xVU1RFUklORz0xDQojb3B0
aW9ucyAJUkZfSU5DTFVERV9QQVJJVFlfREVDTFVTVEVSSU5HX0RTPTENCg0K
IyBWaW51bQ0KIyBwc2V1ZG8tZGV2aWNlCXZpbnVtCQk4CSMgVmludW0NCiMg
b3B0aW9ucyAJVklOVU1ERUJVRw0KDQpwc2V1ZG8tZGV2aWNlCW1kCQkxCSMg
bWVtb3J5IGRpc2sgZGV2aWNlIChyYW1kaXNrKQ0KcHNldWRvLWRldmljZQl2
bmQJCTQJIyBkaXNrLWxpa2UgaW50ZXJmYWNlIHRvIGZpbGVzDQoNCiMgbmV0
d29yayBwc2V1ZG8tZGV2aWNlcw0KcHNldWRvLWRldmljZQlicGZpbHRlcgk4
CSMgQmVya2VsZXkgcGFja2V0IGZpbHRlcg0KcHNldWRvLWRldmljZQlpcGZp
bHRlcgkJIyBJUCBmaWx0ZXIgKGZpcmV3YWxsKSBhbmQgTkFUDQpwc2V1ZG8t
ZGV2aWNlCWxvb3AJCQkjIG5ldHdvcmsgbG9vcGJhY2sNCnBzZXVkby1kZXZp
Y2UJcHBwCQkyCSMgUG9pbnQtdG8tUG9pbnQgUHJvdG9jb2wNCnBzZXVkby1k
ZXZpY2UJcHBwb2UJCQkjIFBQUCBvdmVyIEV0aGVybmV0IChSRkMgMjUxNikN
CnBzZXVkby1kZXZpY2UJc2wJCTIJIyBTZXJpYWwgTGluZSBJUA0KcHNldWRv
LWRldmljZQlzdHJpcAkJMgkjIFN0YXJtb2RlIFJhZGlvIElQIChNZXRyaWNv
bSkNCnBzZXVkby1kZXZpY2UJaXJmcmFtZXR0eQkJIyBJckRBIGZyYW1lIGxp
bmUgZGlzY2lwbGluZQ0KcHNldWRvLWRldmljZQl0dW4JCTIJIyBuZXR3b3Jr
IHR1bm5lbGluZyBvdmVyIHR0eQ0KcHNldWRvLWRldmljZQlncmUJCTIJIyBn
ZW5lcmljIEwzIG92ZXIgSVAgdHVubmVsDQpwc2V1ZG8tZGV2aWNlCWdpZgkJ
NAkjIElQdls0Nl0gb3ZlciBJUHZbNDZdIHR1bm5lbCAoUkZDMTkzMykNCiNw
c2V1ZG8tZGV2aWNlCWZhaXRoCQkxCSMgSVB2WzQ2XSB0Y3AgcmVsYXkgdHJh
bnNsYXRpb24gaS9mDQojcHNldWRvLWRldmljZQlzdGYJCTEJIyA2dG80IElQ
djYgb3ZlciBJUHY0IGVuY2Fwc3VsYXRpb24NCnBzZXVkby1kZXZpY2UJdmxh
bgkJCSMgSUVFRSA4MDIuMXEgZW5jYXBzdWxhdGlvbg0KcHNldWRvLWRldmlj
ZQlicmlkZ2UJCQkjIHNpbXBsZSBpbnRlci1uZXR3b3JrIGJyaWRnaW5nDQoj
b3B0aW9ucyAJQlJJREdFX0lQRgkJIyBicmlkZ2UgdXNlcyBJUC9JUHY2IHBm
aWwgaG9va3MgdG9vDQojcHNldWRvLWRldmljZQlwZgkJCSMgUEYgcGFja2V0
IGZpbHRlcg0KI3BzZXVkby1kZXZpY2UJcGZsb2cJCQkjIFBGIGxvZyBpZg0K
DQojIG1pc2NlbGxhbmVvdXMgcHNldWRvLWRldmljZXMNCnBzZXVkby1kZXZp
Y2UJcHR5CQkJIyBwc2V1ZG8tdGVybWluYWxzDQpwc2V1ZG8tZGV2aWNlCXRi
CQkxCSMgdGFibGV0IGxpbmUgZGlzY2lwbGluZQ0KcHNldWRvLWRldmljZQlz
ZXF1ZW5jZXIJMQkjIE1JREkgc2VxdWVuY2VyDQojIHJuZCB3b3JrczsgUk5E
X0NPTSBkb2VzIG5vdCBvbiBwb3J0IGkzODYgeWV0Lg0KcHNldWRvLWRldmlj
ZQlybmQJCQkjIC9kZXYvcmFuZG9tIGFuZCBpbi1rZXJuZWwgZ2VuZXJhdG9y
DQojb3B0aW9ucyAJUk5EX0NPTQkJCSMgdXNlICJjb20iIHJhbmRvbW5lc3Mg
YXMgd2VsbCAoQlJPS0VOKQ0KcHNldWRvLWRldmljZQljbG9ja2N0bAkJIyB1
c2VyIGNvbnRyb2wgb2YgY2xvY2sgc3Vic3lzdGVtDQoNCiMgYSBwc2V1ZG8g
ZGV2aWNlIG5lZWRlZCBmb3IgQ29kYQkjIGFsc28gbmVlZHMgQ09EQSAoYWJv
dmUpDQpwc2V1ZG8tZGV2aWNlCXZjb2RhCQk0CSMgY29kYSBtaW5pY2FjaGUg
PC0+IHZlbnVzIGNvbW0uDQoNCiMgYSBwc2V1ZG8gZGV2aWNlIG5lZWRlZCBm
b3IgU01CRlMNCnBzZXVkby1kZXZpY2UJbnNtYgkJCSMgZXhwZXJpbWVudGFs
IC0gU01CIHJlcXVlc3Rlcg0KDQojIHdzY29ucyBwc2V1ZG8tZGV2aWNlcw0K
cHNldWRvLWRldmljZQl3c211eAkJCSMgbW91c2UgJiBrZXlib2FyZCBtdWx0
aXBsZXhvcg0KcHNldWRvLWRldmljZQl3c2ZvbnQNCnBzZXVkby1kZXZpY2UJ
a3N5bXMJCQkjIC9kZXYva3N5bXMNCg==

--0-391891591-1088259299=:556
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=Makefile
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.60.0406261514591.556@localhost>
Content-Description: 
Content-Disposition: attachment; filename=Makefile

IwkkTmV0QlNEOiBNYWtlZmlsZSx2IDEuMTAgMjAwMi8wNi8xOCAxNzozOToz
OSBsdWtlbSBFeHAgJA0KDQojDQojIFJlZ2VuZXJhdGUga2VybmVsIGNvbmZp
Z3VyYXRpb25zIGZyb20gdGVtcGxhdGVzDQojDQoNCmFsbDogR0VORVJJQw0K
DQpjbGVhbjoNCglybSBHRU5FUklDDQoNCkdFTkVSSUM6IF9fZ2VuZXJhdGVf
Y29uZmlnDQoNCl9fZ2VuZXJhdGVfY29uZmlnOiAuVVNFIEdFTkVSSUMuaW4g
TWFrZWZpbGUNCglAZWNobyBHZW5lcmF0aW5nICR7LlRBUkdFVH0uLi4NCglA
ZWNobyAtbiAnIyAnJCQgPiAkey5UQVJHRVR9DQoJQGVjaG8gTmV0QlNEJCQg
Pj4gJHsuVEFSR0VUfQ0KCUBlY2hvICcjJyA+PiAkey5UQVJHRVR9DQoJQGVj
aG8gJyMgVGhpcyBmaWxlIHdhcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQuJyA+
PiAkey5UQVJHRVR9DQoJQGVjaG8gJyMgQ2hhbmdlcyB3aWxsIGJlIGxvc3Qg
d2hlbiBtYWtlIGlzIHJ1biBpbiB0aGlzIGRpcmVjdG9yeS4nID4+ICR7LlRB
UkdFVH0NCglAZWNobyAnIycgPj4gJHsuVEFSR0VUfQ0KCUBlY2hvIC1uICcj
IENyZWF0ZWQgZnJvbTogJyA+PiAkey5UQVJHRVR9DQoJc2VkIC1lICcxcy8k
JE5ldEJTRC9OZXRCU0QvJyBHRU5FUklDLmluIHxcDQoJCW00IC1QIC1ETTRf
VGFyZ2V0PSR7LlRBUkdFVH0gPj4gJHsuVEFSR0VUfQ0K

--0-391891591-1088259299=:556
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="options.conf"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.60.0406261514592.556@localhost>
Content-Description: 
Content-Disposition: attachment; filename="options.conf"

bTRfZGl2ZXJ0KC0xKQ0KIyAkTmV0QlNEJA0KbTRfZGl2ZXJ0KDApDQojIyBN
SSBvcHRpb25zIGFuZCBmaWxlLXN5c3RlbXMgLSBmcm9tIGNvbmYvb3B0aW9u
cy5jb25mDQoNCm9wdGlvbnMgCUtUUkFDRQkJIyBzeXN0ZW0gY2FsbCB0cmFj
aW5nIHZpYSBrdHJhY2UoMSkNCm9wdGlvbnMgCVNZU1RSQUNFCSMgc3lzdGVt
IGNhbGwgdmV0dGluZyB2aWEgc3lzdHJhY2UoMSkNCg0Kb3B0aW9ucyAJU1lT
Vk1TRwkJIyBTeXN0ZW0gVi1saWtlIG1lc3NhZ2UgcXVldWVzDQpvcHRpb25z
IAlTWVNWU0VNCQkjIFN5c3RlbSBWLWxpa2Ugc2VtYXBob3Jlcw0KI29wdGlv
bnMgCVNFTU1OST0xMAkjIG51bWJlciBvZiBzZW1hcGhvcmUgaWRlbnRpZmll
cnMNCiNvcHRpb25zIAlTRU1NTlM9NjAJIyBudW1iZXIgb2Ygc2VtYXBob3Jl
cyBpbiBzeXN0ZW0NCiNvcHRpb25zIAlTRU1VTUU9MTAJIyBtYXggbnVtYmVy
IG9mIHVuZG8gZW50cmllcyBwZXIgcHJvY2Vzcw0KI29wdGlvbnMgCVNFTU1O
VT0zMAkjIG51bWJlciBvZiB1bmRvIHN0cnVjdHVyZXMgaW4gc3lzdGVtDQpv
cHRpb25zIAlTWVNWU0hNCQkjIFN5c3RlbSBWLWxpa2UgbWVtb3J5IHNoYXJp
bmcNCiNvcHRpb25zIAlTSE1NQVhQR1M9MjA0OAkjIDIwNDggcGFnZXMgaXMg
dGhlIGRlZmF1bHQNCm9wdGlvbnMgCVAxMDAzXzFCX1NFTUFQSE9SRQkjIHAx
MDAzLjFiIHNlbWFwaG9yZSBzdXBwb3J0DQoNCm9wdGlvbnMgCVVTRVJDT05G
CSMgdXNlcmNvbmYoNCkgc3VwcG9ydA0KI29wdGlvbnMgCVBJUEVfU09DS0VU
UEFJUgkjIHNtYWxsZXIsIGJ1dCBzbG93ZXIgcGlwZSgyKQ0KDQojIEVuYWJs
ZSBleHBlcmltZW50YWwgYnVmZmVyIHF1ZXVlIHN0cmF0ZWd5IGZvciBiZXR0
ZXIgcmVzcG9uc2l2ZW5lc3MgdW5kZXINCiMgaGlnaCBkaXNrIEkvTyBsb2Fk
LiBMaWtlbHkgc3RhYmxlIGJ1dCBub3QgeWV0IHRoZSBkZWZhdWx0Lg0KI29w
dGlvbnMgCU5FV19CVUZRX1NUUkFURUdZDQoNCiMgRGlhZ25vc3RpYy9kZWJ1
Z2dpbmcgc3VwcG9ydCBvcHRpb25zDQojb3B0aW9ucyAJRElBR05PU1RJQwkj
IGV4cGVuc2l2ZSBrZXJuZWwgY29uc2lzdGVuY3kgY2hlY2tzDQojb3B0aW9u
cyAJREVCVUcJCSMgZXhwZW5zaXZlIGRlYnVnZ2luZyBjaGVja3Mvc3VwcG9y
dA0KI29wdGlvbnMgCUtNRU1TVEFUUwkjIGtlcm5lbCBtZW1vcnkgc3RhdGlz
dGljcyAodm1zdGF0IC1tKQ0Kb3B0aW9ucyAJRERCCQkjIGluLWtlcm5lbCBk
ZWJ1Z2dlcg0KI29wdGlvbnMgCUREQl9PTlBBTklDPTEJIyBzZWUgYWxzbyBz
eXNjdGwoOCk6IGBkZGIub25wYW5pYycNCm9wdGlvbnMgCUREQl9ISVNUT1JZ
X1NJWkU9NTEyCSMgZW5hYmxlIGhpc3RvcnkgZWRpdGluZyBpbiBEREINCiNv
cHRpb25zIAlLR0RCCQkjIHJlbW90ZSBkZWJ1Z2dlcg0KI29wdGlvbnMgCUtH
REJfREVWTkFNRT0iXCJjb21cIiIsS0dEQl9ERVZBRERSPTB4M2Y4LEtHREJf
REVWUkFURT05NjAwDQojbWFrZW9wdGlvbnMJREVCVUc9Ii1nIgkjIGNvbXBp
bGUgZnVsbCBzeW1ib2wgdGFibGUNCg0KIyBGaWxlIHN5c3RlbXMNCmZpbGUt
c3lzdGVtIAlGRlMJCSMgVUZTDQpmaWxlLXN5c3RlbSAJRVhUMkZTCQkjIHNl
Y29uZCBleHRlbmRlZCBmaWxlIHN5c3RlbSAobGludXgpDQpmaWxlLXN5c3Rl
bSAJTEZTCQkjIGxvZy1zdHJ1Y3R1cmVkIGZpbGUgc3lzdGVtDQpmaWxlLXN5
c3RlbSAJTUZTCQkjIG1lbW9yeSBmaWxlIHN5c3RlbQ0KZmlsZS1zeXN0ZW0g
CU5GUwkJIyBOZXR3b3JrIEZpbGUgU3lzdGVtIGNsaWVudA0KZmlsZS1zeXN0
ZW0gCU5URlMJCSMgV2luZG93cy9OVCBmaWxlIHN5c3RlbSAoZXhwZXJpbWVu
dGFsKQ0KZmlsZS1zeXN0ZW0gCUNEOTY2MAkJIyBJU08gOTY2MCArIFJvY2sg
UmlkZ2UgZmlsZSBzeXN0ZW0NCmZpbGUtc3lzdGVtIAlNU0RPU0ZTCQkjIE1T
LURPUyBmaWxlIHN5c3RlbQ0KZmlsZS1zeXN0ZW0gCUZERVNDCQkjIC9kZXYv
ZmQNCmZpbGUtc3lzdGVtIAlLRVJORlMJCSMgL2tlcm4NCmZpbGUtc3lzdGVt
IAlOVUxMRlMJCSMgbG9vcGJhY2sgZmlsZSBzeXN0ZW0NCmZpbGUtc3lzdGVt
IAlPVkVSTEFZCQkjIG92ZXJsYXkgZmlsZSBzeXN0ZW0NCmZpbGUtc3lzdGVt
IAlQT1JUQUwJCSMgcG9ydGFsIGZpbGVzeXN0ZW0gKHN0aWxsIGV4cGVyaW1l
bnRhbCkNCmZpbGUtc3lzdGVtIAlQUk9DRlMJCSMgL3Byb2MNCmZpbGUtc3lz
dGVtIAlVTUFQRlMJCSMgTlVMTEZTICsgdWlkIGFuZCBnaWQgcmVtYXBwaW5n
DQpmaWxlLXN5c3RlbSAJVU5JT04JCSMgdW5pb24gZmlsZSBzeXN0ZW0NCmZp
bGUtc3lzdGVtCUNPREEJCSMgQ29kYSBGaWxlIFN5c3RlbTsgYWxzbyBuZWVk
cyB2Y29kYSAoYmVsb3cpDQpmaWxlLXN5c3RlbQlTTUJGUwkJIyBleHBlcmlt
ZW50YWwgLSBDSUZTOyBhbHNvIG5lZWRzIG5zbWIgKGJlbG93KQ0KDQojIEZp
bGUgc3lzdGVtIG9wdGlvbnMNCm9wdGlvbnMgCVFVT1RBCQkjIFVGUyBxdW90
YXMNCiNvcHRpb25zIAlGRlNfRUkJCSMgRkZTIEVuZGlhbiBJbmRlcGVuZGVu
dCBzdXBwb3J0DQpvcHRpb25zIAlTT0ZUREVQCQkjIEZGUyBzb2Z0IHVwZGF0
ZXMgc3VwcG9ydC4NCm9wdGlvbnMgCU5GU1NFUlZFUgkjIE5ldHdvcmsgRmls
ZSBTeXN0ZW0gc2VydmVyDQojb3B0aW9ucyAJRVhUMkZTX1NZU1RFTV9GTEFH
UyAjIG1ha2VzIGV4dDJmcyBmaWxlIGZsYWdzIChhcHBlbmQgYW5kDQoJCQkJ
IyBpbW11dGFibGUpIGJlaGF2ZSBhcyBzeXN0ZW0gZmxhZ3MuDQoNCiMgTmV0
d29ya2luZyBvcHRpb25zDQojb3B0aW9ucyAJR0FURVdBWQkJIyBwYWNrZXQg
Zm9yd2FyZGluZw0Kb3B0aW9ucyAJSU5FVAkJIyBJUCArIElDTVAgKyBUQ1Ag
KyBVRFANCm9wdGlvbnMgCUlORVQ2CQkjIElQVjYNCiNvcHRpb25zIAlJUFNF
QwkJIyBJUCBzZWN1cml0eQ0KI29wdGlvbnMgCUlQU0VDX0VTUAkjIElQIHNl
Y3VyaXR5IChlbmNyeXB0aW9uIHBhcnQ7IGRlZmluZSB3L0lQU0VDKQ0KI29w
dGlvbnMgCUlQU0VDX0RFQlVHCSMgZGVidWcgZm9yIElQIHNlY3VyaXR5DQoj
b3B0aW9ucyAJTVJPVVRJTkcJIyBJUCBtdWx0aWNhc3Qgcm91dGluZw0Kb3B0
aW9ucyAJTlMJCSMgWE5TDQojb3B0aW9ucyAJTlNJUAkJIyBYTlMgdHVubmVs
aW5nIG92ZXIgSVANCm9wdGlvbnMgCUlTTyxUUElQCSMgT1NJDQojb3B0aW9u
cyAJRU9OCQkjIE9TSSB0dW5uZWxpbmcgb3ZlciBJUA0Kb3B0aW9ucyAJQ0NJ
VFQsTExDLEhETEMJIyBYLjI1DQpvcHRpb25zIAlORVRBVEFMSwkjIEFwcGxl
VGFsayBuZXR3b3JraW5nIHByb3RvY29scw0Kb3B0aW9ucyAJUFBQX0JTRENP
TVAJIyBCU0QtQ29tcHJlc3MgY29tcHJlc3Npb24gc3VwcG9ydCBmb3IgUFBQ
DQpvcHRpb25zIAlQUFBfREVGTEFURQkjIERlZmxhdGUgY29tcHJlc3Npb24g
c3VwcG9ydCBmb3IgUFBQDQpvcHRpb25zIAlQUFBfRklMVEVSCSMgQWN0aXZl
IGZpbHRlciBzdXBwb3J0IGZvciBQUFAgKHJlcXVpcmVzIGJwZikNCm9wdGlv
bnMgCVBGSUxfSE9PS1MJIyBwZmlsKDkpIHBhY2tldCBmaWx0ZXIgaG9va3MN
Cm9wdGlvbnMgCUlQRklMVEVSX0xPRwkjIGlwbW9uKDgpIGxvZyBzdXBwb3J0
DQojb3B0aW9ucyAJSVBGSUxURVJfREVGQVVMVF9CTE9DSwkjIGJsb2NrIGFs
bCBwYWNrZXRzIGJ5IGRlZmF1bHQNCiNvcHRpb25zIAlUQ1BfREVCVUcJIyBS
ZWNvcmQgbGFzdCBUQ1BfTkRFQlVHIHBhY2tldHMgd2l0aCBTT19ERUJVRw0K
DQojb3B0aW9ucyAJQUxUUQkJIyBNYW5pcHVsYXRlIG5ldHdvcmsgaW50ZXJm
YWNlcycgb3V0cHV0IHF1ZXVlcw0KI29wdGlvbnMgCUFMVFFfQkxVRQkjIFN0
b2NoYXN0aWMgRmFpciBCbHVlDQojb3B0aW9ucyAJQUxUUV9DQlEJIyBDbGFz
cy1CYXNlZCBRdWV1ZWluZw0KI29wdGlvbnMgCUFMVFFfQ0ROUgkjIERpZmZz
ZXJ2IFRyYWZmaWMgQ29uZGl0aW9uZXINCiNvcHRpb25zIAlBTFRRX0ZJRk9R
CSMgRmlyc3QtSW4gRmlyc3QtT3V0IFF1ZXVlDQojb3B0aW9ucyAJQUxUUV9G
TE9XVkFMVkUJIyBSRUQvZmxvdy12YWx2ZSAocmVkLXBlbmFsdHktYm94KQ0K
I29wdGlvbnMgCUFMVFFfSEZTQwkjIEhpZXJhcmNoaWNhbCBGYWlyIFNlcnZp
Y2UgQ3VydmUNCiNvcHRpb25zIAlBTFRRX0xPQ0FMUQkjIExvY2FsIHF1ZXVl
aW5nIGRpc2NpcGxpbmUNCiNvcHRpb25zIAlBTFRRX1BSSVEJIyBQcmlvcml0
eSBRdWV1ZWluZw0KI29wdGlvbnMgCUFMVFFfUkVECSMgUmFuZG9tIEVhcmx5
IERldGVjdGlvbg0KI29wdGlvbnMgCUFMVFFfUklPCSMgUkVEIHdpdGggSU4v
T1VUDQojb3B0aW9ucyAJQUxUUV9XRlEJIyBXZWlnaHRlZCBGYWlyIFF1ZXVl
aW5nDQo=

--0-391891591-1088259299=:556
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="devices.conf"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.60.0406261514593.556@localhost>
Content-Description: 
Content-Disposition: attachment; filename="devices.conf"

bTRfZGl2ZXJ0KC0xKW00X2RubA0KIyAkTmV0QlNEJA0KbTRfZGl2ZXJ0KDAp
bTRfZG5sDQoNCiMgTWlzY2VsbGFuZW91cyBtYXNzIHN0b3JhZ2UgZGV2aWNl
cw0KDQptNF9pZmRlZihgYnVzX2lzYScsIGBtNF9kbmwNCiMgSVNBIGZsb3Bw
eQ0KZmRjMAlhdCBpc2E/IHBvcnQgMHgzZjAgaXJxIDYgZHJxIDIJIyBzdGFu
ZGFyZCBQQyBmbG9wcHkgY29udHJvbGxlcnMNCiNmZGMxCWF0IGlzYT8gcG9y
dCAweDM3MCBpcnEgPyBkcnEgPw0KZmQqCWF0IGZkYz8gZHJpdmUgPwkJCSMg
dGhlIGRyaXZlcyB0aGVtc2VsdmVzDQojIHNvbWUgbWFjaGluZXMgbmVlZCB5
b3UgdG8gZG8gdGhpcyBpbnN0ZWFkIG9mIGZkKg0KI2ZkMAlhdCBmZGMwIGRy
aXZlIDANCg0KIyBJU0EgQ0QtUk9NIGRldmljZXMNCiNtY2QwCWF0IGlzYT8g
cG9ydCAweDMwMCBpcnEgMTAJIyBNaXRzdW1pIENELVJPTSBkcml2ZXMNCg0K
IyBJU0EgdGFwZSBkZXZpY2VzDQojIG5vdGU6IHRoZSB3dCBkcml2ZXIgY29u
ZmxpY3RzIHVucGxlYXNhbnRseSB3aXRoIFNNQyBib2FyZHMgYXQgdGhlDQoj
IHNhbWUgSS9PIGFkZHJlc3MuIFRoZSBwcm9iZSByZXByb2dyYW1zIHRoZWly
IEVFUFJPTXMuIERvbicnYHQNCiMgdW5jb21tZW50IGl0IHVubGVzcyB5b3Ug
YXJlIGFjdHVhbGx5IHVzaW5nIGl0Lg0KI3d0MAlhdCBpc2E/IHBvcnQgMHgz
MDggaXJxIDUgZHJxIDEJIyBBcmNoaXZlIGFuZCBXYW5ndGVrIFFJQyB0YXBl
IGRyaXZlcw0KDQonKW00X2RubA0KbTRfaWZkZWYoYGJ1c19tY2EnLCBgbTRf
ZG5sDQojIE1DQSBFU0RJIGRldmljZXMNCmVkYyoJYXQgbWNhPyBzbG90ID8J
CQkjIElCTSBFU0RJIERpc2sgQ29udHJvbGxlcnMNCmVkKglhdCBlZGM/DQon
KW00X2RubA0KDQoNCiMgTmV0d29yayBJbnRlcmZhY2VzDQoNCm00X2lmZGVm
KGBidXNfcGNtY2lhJywgYG00X2RubA0KIyBQQ0kgbmV0d29yayBpbnRlcmZh
Y2VzDQphbioJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgQWlyb25ldCBQ
QzQ1MDAvUEM0ODAwICg4MDIuMTEpDQphdGgqCWF0IHBjaT8gZGV2ID8gZnVu
Y3Rpb24gPwkjIEF0aGVyb3MgNTIxMC81MjExLzUyMTIgODAyLjExDQphdHcq
CWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIEFETXRlayBBRE04MjExICg4
MDIuMTEpDQpiY2UqIAlhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBCcm9h
ZGNvbSA0NDAxIDEwLzEwMCBFdGhlcm5ldA0KYmdlKiAJYXQgcGNpPyBkZXYg
PyBmdW5jdGlvbiA/CSMgQnJvYWRjb20gNTcweCBnaWdhYml0IEV0aGVybmV0
DQplbioJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgRU5JL0FkYXB0ZWMg
QVRNDQplcCoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgM0NvbSAzYzU5
eA0KZXBpYyoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgU01DIEVQSUMv
MTAwIEV0aGVybmV0DQplc2gqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkj
IEVzc2VudGlhbCBISVBQSSBjYXJkDQpleCoJYXQgcGNpPyBkZXYgPyBmdW5j
dGlvbiA/CSMgM0NvbSA5MHhbQkNdDQpmcGEqCWF0IHBjaT8gZGV2ID8gZnVu
Y3Rpb24gPwkjIERFQyBERUZQQSBGRERJDQpmeHAqCWF0IHBjaT8gZGV2ID8g
ZnVuY3Rpb24gPwkjIEludGVsIEV0aGVyRXhwcmVzcyBQUk8gMTArLzEwMEIN
CmdzaXAqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIE5TODM4MjAgR2ln
YWJpdCBFdGhlcm5ldA0KI2htZSoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/
CSMgU3VuIE1pY3JvZWxlY3Ryb25pY3MgU1RQMjAwMi1TVFENCmxlKglhdCBw
Y2k/IGRldiA/IGZ1bmN0aW9uID8JIyBQQ25ldC1QQ0kgRXRoZXJuZXQNCmxt
YyoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgTGFuIE1lZGlhIENvcnAg
U1NJL0hTU0kvRFMzDQptdGQqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkj
IE15c29uIE1URDgwMyAzLWluLTEgRXRoZXJuZXQNCm5lKglhdCBwY2k/IGRl
diA/IGZ1bmN0aW9uID8JIyBORTIwMDAtY29tcGF0aWJsZSBFdGhlcm5ldA0K
bnR3b2MqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIFJpc2NvbS9OMiBQ
Q0kgU3luYyBTZXJpYWwNCnBjbioJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/
CSMgQU1EIFBDbmV0LVBDSSBFdGhlcm5ldA0KcmUqCWF0IHBjaT8gZGV2ID8g
ZnVuY3Rpb24gPwkjIFJlYWx0ZWsgODEzOUMrLzgxNjkvODE2OVMvODExMFMN
CnJ0ayoJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgUmVhbHRlayA4MTI5
LzgxMzkNCnNmKglhdCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBBZGFwdGVj
IEFJQy02OTE1IEV0aGVybmV0DQpzaXAqCWF0IHBjaT8gZGV2ID8gZnVuY3Rp
b24gPwkjIFNpUyA5MDAvRFA4MzgxNSBFdGhlcm5ldA0Kc2tjKglhdCBwY2k/
IGRldiA/IGZ1bmN0aW9uID8JIyBTeXNLb25uZWN0IFNLOTgyMSBHaWdhYml0
IEV0aGVybmV0DQpzayoJYXQgc2tjPwkJCQkjIFN5c0tvbm5lY3QgU0s5ODIx
IEdpZ2FiaXQgRXRoZXJuZXQNCnN0ZSoJYXQgcGNpPyBkZXYgPyBmdW5jdGlv
biA/CSMgU3VuZGFuY2UgU1QtMjAxIEV0aGVybmV0DQpzdGdlKglhdCBwY2k/
IGRldiA/IGZ1bmN0aW9uID8JIyBTdW5kYW5jZS9UYW1hcmFjayBUQzkwMjEg
R2lnYWJpdA0KdGkqCWF0IHBjaT8gZGV2ID8gZnVuY3Rpb24gPwkjIEFsdGVv
biBBQ0VuaWMgZ2lnYWJpdCBFdGhlcm5ldA0KdGwqCWF0IHBjaT8gZGV2ID8g
ZnVuY3Rpb24gPwkjIFRodW5kZXJMQU4tYmFzZWQgRXRoZXJuZXQNCnRscCoJ
YXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgREVDY2hpcCAyMXg0eCBhbmQg
Y2xvbmVzDQp2cioJYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMgVklBIFJo
aW5lIEZhc3QgRXRoZXJuZXQNCndpKglhdCBwY2k/IGRldiA/IGZ1bmN0aW9u
ID8JIyBJbnRlcnNpbCBQcmlzbSBNaW5pLVBDSSAoODAyLjExYikNCndtKglh
dCBwY2k/IGRldiA/IGZ1bmN0aW9uID8JIyBJbnRlbCA4MjU0eCBnaWdhYml0
DQoNCicpbTRfZG5sDQptNF9pZmRlZihgYnVzX2Vpc2EnLCBgbTRfZG5sDQoj
IEVJU0EgbmV0d29yayBpbnRlcmZhY2VzDQplcCoJYXQgZWlzYT8gc2xvdCA/
CQkJIyAzQ29tIDNjNTc5IEV0aGVybmV0DQpmZWEqCWF0IGVpc2E/IHNsb3Qg
PwkJCSMgREVDIERFRkVBIEZEREkNCnRscCoJYXQgZWlzYT8gc2xvdCA/CQkJ
IyBERUMgREUtNDI1IEV0aGVybmV0DQoNCicpbTRfZG5sDQptNF9pZmRlZihg
YnVzX2lzYXBucCcsIGBtNF9kbmwNCiMgSVNBIFBsdWctYW5kLVBsYXkgbmV0
d29yayBpbnRlcmZhY2VzDQphbioJYXQgaXNhcG5wPwkJCSMgQWlyb25ldCA4
MDIuMTENCmVwKglhdCBpc2FwbnA/CQkJIyAzQ29tIDNjNTA5IEV0aGVybmV0
DQpmbXYqCWF0IGlzYXBucD8JCQkjIEZ1aml0c3UgRk1WLTE4Mw0KbGUqCWF0
IGlzYXBucD8JCQkjIEFNRCBQQ25ldC1JU0EgRXRoZXJuZXQNCm5lKglhdCBp
c2FwbnA/CQkJIyBORTIwMDAtY29tcGF0aWJsZSBFdGhlcm5ldA0KdHIqCWF0
IGlzYXBucD8JCQkjIElCTS8zQ09NIFRST1BJQyBUb2tlbi1SaW5nDQoNCicp
bTRfZG5sDQptNF9pZmRlZihgYnVzX3BjbWNpYScsIGBtNF9kbmwNCiMgUENN
Q0lBIG5ldHdvcmsgaW50ZXJmYWNlcw0KYW4qCWF0IHBjbWNpYT8gZnVuY3Rp
b24gPwkJIyBBaXJvbmV0IFBDNDUwMC9QQzQ4MDAgKDgwMi4xMSkNCmF3aSoJ
YXQgcGNtY2lhPyBmdW5jdGlvbiA/CQkjIEJheVN0YWNrIDY1MC82NjAgKDgw
Mi4xMUZIL0RTKQ0KY253KglhdCBwY21jaWE/IGZ1bmN0aW9uID8JCSMgWGly
Y29tL05ldHdhdmUgQWlyU3VyZmVyDQplcCoJYXQgcGNtY2lhPyBmdW5jdGlv
biA/CQkjIDNDb20gM2M1ODkgYW5kIDNjNTYyIEV0aGVybmV0DQptYmUqCWF0
IHBjbWNpYT8gZnVuY3Rpb24gPwkJIyBNQjg2OTZ4IGJhc2VkIEV0aGVybmV0
DQpuZSoJYXQgcGNtY2lhPyBmdW5jdGlvbiA/CQkjIE5FMjAwMC1jb21wYXRp
YmxlIEV0aGVybmV0DQpyYXkqCWF0IHBjbWNpYT8gZnVuY3Rpb24gPwkJIyBS
YXl0aGVvbiBSYXlsaW5rICg4MDIuMTEpDQpzbSoJYXQgcGNtY2lhPyBmdW5j
dGlvbiA/CQkjIE1lZ2FoZXJ0eiBFdGhlcm5ldA0KIyB0ciBhdCBwY21jaWEg
aGFzIHByb2JsZW1zIHdpdGggQ2FyZGJ1cyBicmlkZ2VzDQojdHIqCWF0IHBj
bWNpYT8gZnVuY3Rpb24gPwkJIyBUUk9QSUMgYmFzZWQgVG9rZW4tUmluZw0K
d2kqCWF0IHBjbWNpYT8gZnVuY3Rpb24gPwkJIyBMdWNlbnQvSW50ZXJzaWwg
V2F2ZUxhbiBJRUVFICg4MDIuMTEpDQp4aSoJYXQgcGNtY2lhPyBmdW5jdGlv
biA/CQkjIFhpcmNvbSBDcmVkaXRDYXJkIEV0aGVybmV0DQoNCm1oemMqCWF0
IHBjbWNpYT8gZnVuY3Rpb24gPwkJIyBNZWdhaGVydHogRXRoZXJuZXQvTW9k
ZW0gY29tYm8gY2FyZHMNCmNvbSoJYXQgbWh6Yz8NCnNtKglhdCBtaHpjPw0K
DQonKW00X2RubA0KbTRfaWZkZWYoYGJ1c19pc2EnLCBgbTRfZG5sDQojIElT
QSBuZXR3b3JrIGludGVyZmFjZXMNCmF0ZTAJYXQgaXNhPyBwb3J0IDB4MmEw
IGlycSA/CQkjIEFUMTcwMA0KY3MwCWF0IGlzYT8gcG9ydCAweDMwMCBpb21l
bSA/IGlycSA/IGRycSA/CSMgQ1M4OTAwIEV0aGVybmV0DQplYzAJYXQgaXNh
PyBwb3J0IDB4MjUwIGlvbWVtIDB4ZDgwMDAgaXJxIDkJIyAzQ29tIDNjNTAz
IEV0aGVybmV0DQplZzAJYXQgaXNhPyBwb3J0IDB4MjgwIGlycSA5CQkjIDND
NTA1IGV0aGVybmV0IGNhcmRzDQplbDAJYXQgaXNhPyBwb3J0IDB4MzAwIGly
cSA5CQkjIDNDNTAxIGV0aGVybmV0IGNhcmRzDQplcCoJYXQgaXNhPyBwb3J0
ID8gaXJxID8JCQkjIDNDNTA5IGV0aGVybmV0IGNhcmRzDQplZjAJYXQgaXNh
PyBwb3J0IDB4MzYwIGlvbWVtIDB4ZDAwMDAgaXJxIDcJIyAzQzUwNw0KYWkw
CWF0IGlzYT8gcG9ydCAweDM2MCBpb21lbSAweGQwMDAwIGlycSA3CSMgU3Rh
ckxBTg0KZm12MAlhdCBpc2E/IHBvcnQgMHgyYTAgaXJxID8JCSMgRk1WLTE4
MS8xODINCml4MAlhdCBpc2E/IHBvcnQgMHgzMDAgaXJxIDEwCQkjIEV0aGVy
RXhwcmVzcy8xNg0KaXkwCWF0IGlzYT8gcG9ydCAweDM2MCBpcnEgPwkJIyBF
dGhlckV4cHJlc3MgUFJPIDEwIElTQQ0KbGMwCWF0IGlzYT8gcG9ydCAweDMy
MCBpb21lbSA/IGlycSA/CSMgREVDIEV0aGVyV09SS1MgSUlJIChMRU1BQykN
CiNkZXBjYTAJYXQgaXNhPyBwb3J0IDB4MzAwIGlvbWVtIDB4YzgwMDAgaW9z
aXogMHg4MDAwIGlycSA1CSMgREVQQ0ENCiNsZSoJYXQgZGVwY2E/DQpuZWxl
MAlhdCBpc2E/IHBvcnQgMHgzMjAgaXJxIDkgZHJxIDcJCSMgTkUyMTAwDQps
ZSoJYXQgbmVsZT8NCiNudHdvYzAJYXQgaXNhPyBwb3J0IDB4MzAwIGlycSA1
IGlvbWVtIDB4YzgwMDAgZmxhZ3MgMQkjIFJpc2NvbS9OMiBzeW5jIHNlcmlh
bA0KYmljYzAJYXQgaXNhPyBwb3J0IDB4MzIwIGlycSAxMCBkcnEgNwkJIyBC
SUNDIElzb0xhbg0KbGUqCWF0IGJpY2M/DQpuZTAJYXQgaXNhPyBwb3J0IDB4
MjgwIGlycSA5CQkjIE5FWzEyXTAwMCBldGhlcm5ldCBjYXJkcw0KbmUxCWF0
IGlzYT8gcG9ydCAweDMwMCBpcnEgMTANCnNtMAlhdCBpc2E/IHBvcnQgMHgz
MDAgaXJxIDEwCQkjIFNNQzkxQzl4IEV0aGVybmV0DQp0cjAJYXQgaXNhPyBw
b3J0IDB4YTIwIGlvbWVtIDB4ZDgwMDAgaXJxID8JIyBJQk0gVFJPUElDIGJh
c2VkIFRva2VuLVJpbmcNCnRyMQlhdCBpc2E/IHBvcnQgMHhhMjQgaW9tZW0g
MHhkMDAwMCBpcnEgPwkjIElCTSBUUk9QSUMgYmFzZWQgVG9rZW4tUmluZw0K
dHIqCWF0IGlzYT8gcG9ydCA/IGlycSA/CQkJIyAzQ09NIFRST1BJQyBiYXNl
ZCBUb2tlbi1SaW5nDQp3ZTAJYXQgaXNhPyBwb3J0IDB4MjgwIGlvbWVtIDB4
ZDAwMDAgaXJxIDkJIyBXRC9TTUMgRXRoZXJuZXQNCndlMQlhdCBpc2E/IHBv
cnQgMHgzMDAgaW9tZW0gMHhjYzAwMCBpcnEgMTANCg0KJyltNF9kbmwNCm00
X2lmZGVmKGBidXNfY2FyZGJ1cycsIGBtNF9kbmwNCiMgQ2FyZEJ1cyBuZXR3
b3JrIGNhcmRzDQojYXRoKglhdCBjYXJkYnVzPyBkZXYgPyBmdW5jdGlvbiA/
CSMgQXRoZXJvcyA1MjEwLzUyMTEvNTIxMiA4MDIuMTENCiNhdHcqCWF0IGNh
cmRidXM/IGRldiA/IGZ1bmN0aW9uID8JIyBBRE10ZWsgQURNODIxMSAoODAy
LjExKQ0KI2V4KglhdCBjYXJkYnVzPyBkZXYgPyBmdW5jdGlvbiA/CSMgM0Nv
bSAzQzU3NVRYDQojZnhwKglhdCBjYXJkYnVzPyBkZXYgPyBmdW5jdGlvbiA/
CSMgSW50ZWwgaTgyNTV4DQojcnRrKglhdCBjYXJkYnVzPyBkZXYgPyBmdW5j
dGlvbiA/CSMgUmVhbHRlayA4MTI5LzgxMzkNCiN0bHAqCWF0IGNhcmRidXM/
IGRldiA/IGZ1bmN0aW9uID8JIyBERUNjaGlwIDIxMTQzDQoNCicpbTRfZG5s
DQptNF9pZmRlZihgYnVzX21jYScsIGBtNF9kbmwNCiMgTUNBIG5ldHdvcmsg
Y2FyZHMNCmVsbWMqCWF0IG1jYT8gc2xvdCA/CQkJIyAzQ29tIEV0aGVyTGlu
ay9NQyAoM2M1MjMpDQplcCoJYXQgbWNhPyBzbG90ID8JCQkjIDNDb20gRXRo
ZXJMaW5rIElJSSAoM2M1MjkpDQp3ZSoJYXQgbWNhPyBzbG90ID8JCQkjIFdE
L1NNQyBFdGhlcm5ldA0KYXRlKglhdCBtY2E/IHNsb3QgPwkJCSMgQWxsaWVk
IFRlbGVzaXMgQVQxNzIwDQpuZSoJYXQgbWNhPyBzbG90ID8JCQkjIE5vdmVs
bCBORS8yIGFuZCBjbG9uZXMNCnRyKglhdCBtY2E/IHNsb3QgPwkJCSMgSUJN
IFRva2VuIFJpbmcgYWRhcHRlcg0KbGUqCWF0IG1jYT8gc2xvdCA/CQkJIyBT
S05FVCBQZXJzb25hbC9NQzIrDQoNCicpbTRfZG5sDQptNF9pZmRlZihgYnVz
X21paScsIGBtNF9kbmwNCiMgTUlJL1BIWSBzdXBwb3J0DQphY3BoeSoJYXQg
bWlpPyBwaHkgPwkJCSMgQWx0aW1hIEFDMTAxIGFuZCBBTUQgQW03OWM4NzQg
UEhZcw0KYW1ocGh5KiBhdCBtaWk/IHBoeSA/CQkJIyBBTUQgNzljOTAxIEV0
aGVybmV0IFBIWXMNCmJtdHBoeSogYXQgbWlpPyBwaHkgPwkJCSMgQnJvYWRj
b20gQkNNNTIwMSBhbmQgQkNNNTIwMiBQSFlzDQpicmdwaHkqIGF0IG1paT8g
cGh5ID8JCQkjIEJyb2FkY29tIEJDTTU0MDAtZmFtaWx5IFBIWXMNCmRtcGh5
KglhdCBtaWk/IHBoeSA/CQkJIyBEYXZpY29tIERNOTEwMSBQSFlzDQpleHBo
eSoJYXQgbWlpPyBwaHkgPwkJCSMgM0NvbSBpbnRlcm5hbCBQSFlzDQpnZW50
YmkqIGF0IG1paT8gcGh5ID8JCQkjIEdlbmVyaWMgVGVuLUJpdCAxMDAwQkFT
RS1bQ0xTXVggUEhZcw0KZ2x4dHBoeSogYXQgbWlpPyBwaHkgPwkJCSMgTGV2
ZWwgT25lIExYVC0xMDAwIFBIWXMNCmdwaHl0ZXIqIGF0IG1paT8gcGh5ID8J
CQkjIE5TODM4NjEgR2lnLUUgUEhZDQppY3NwaHkqIGF0IG1paT8gcGh5ID8J
CQkjIEludGVncmF0ZWQgQ2lyY3VpdCBTeXN0ZW1zIElDUzE4OXgNCmlncGh5
KglhdCBtaWk/IHBoeSA/CQkJIyBJbnRlbCBJR1AwMUUxMDAwDQppbnBoeSoJ
YXQgbWlpPyBwaHkgPwkJCSMgSW50ZWwgODI1NTUgUEhZcw0KaW9waHkqCWF0
IG1paT8gcGh5ID8JCQkjIEludGVsIDgyNTUzIFBIWXMNCmx4dHBoeSogYXQg
bWlpPyBwaHkgPwkJCSMgTGV2ZWwgT25lIExYVC05NzAgUEhZcw0KbWFrcGh5
KiBhdCBtaWk/IHBoeSA/CQkJIyBNYXJ2ZWxsIFNlbWljb25kdWN0b3IgODhF
MTAwMCBQSFlzDQpuc3BoeSoJYXQgbWlpPyBwaHkgPwkJCSMgTlM4Mzg0MCBQ
SFlzDQpuc3BoeXRlciogYXQgbWlpPyBwaHkgPyAJCSMgTlM4Mzg0MyBQSFlz
DQpwbmFwaHkqIGF0IG1paT8gcGh5ID8JCQkjIGdlbmVyaWMgSG9tZVBOQSBQ
SFlzDQpxc3BoeSoJYXQgbWlpPyBwaHkgPwkJCSMgUXVhbGl0eSBTZW1pY29u
ZHVjdG9yIFFTNjYxMiBQSFlzDQpzcXBoeSoJYXQgbWlpPyBwaHkgPwkJCSMg
U2VlcSA4MDIyMC84MDIyMS84MDIyMyBQSFlzDQp0bHBoeSoJYXQgbWlpPyBw
aHkgPwkJCSMgVGh1bmRlckxBTiBQSFlzDQp0cXBoeSoJYXQgbWlpPyBwaHkg
PwkJCSMgVERLIFNlbWljb25kdWN0b3IgUEhZcw0KdWtwaHkqCWF0IG1paT8g
cGh5ID8JCQkjIGdlbmVyaWMgdW5rbm93biBQSFlzDQp1cmxwaHkqIGF0IG1p
aT8gcGh5ID8JCQkjIFJlYWx0ZWsgUlRMODE1MEwgaW50ZXJuYWwgUEhZcw0K
DQonKW00X2RubA0KDQptNF9pZmRlZihgYnVzX3VzYicsIGBtNF9kbmwNCiMg
VVNCIENvbnRyb2xsZXIgYW5kIERldmljZXMNCg0KbTRfaWZkZWYoYGJ1c19w
Y2knLCBgbTRfZG5sDQojIFBDSSBVU0IgY29udHJvbGxlcnMNCiMgVGhlIEVI
Q0kgaXMgbm90IHJlYWR5IGZvciBwcmltZSB0aW1lLg0KI2VoY2kqCWF0IHBj
aT8JZGV2ID8gZnVuY3Rpb24gPwkjIEVuaGFuY2VkIEhvc3QgQ29udHJvbGxl
cg0Kb2hjaSoJYXQgcGNpPwlkZXYgPyBmdW5jdGlvbiA/CSMgT3BlbiBIb3N0
IENvbnRyb2xsZXINCnVoY2kqCWF0IHBjaT8JZGV2ID8gZnVuY3Rpb24gPwkj
IFVuaXZlcnNhbCBIb3N0IENvbnRyb2xsZXIgKEludGVsKQ0KDQonKW00X2Ru
bA0KbTRfaWZkZWYoYGJ1c19jYXJkYnVzJywgYG00X2RubA0KIyBDYXJkQnVz
IFVTQiBjb250cm9sbGVycw0KI2VoY2kqCWF0IGNhcmRidXM/IGRldiA/IGZ1
bmN0aW9uID8JIyBFbmhhbmNlZCBIb3N0IENvbnRyb2xsZXINCiNvaGNpKglh
dCBjYXJkYnVzPyBkZXYgPyBmdW5jdGlvbiA/CSMgT3BlbiBIb3N0IENvbnRy
b2xsZXINCg0KJyltNF9kbmwNCm00X2lmZGVmKGBidXNfaXNhJywgYG00X2Ru
bA0KIyBJU0EgVVNCIGNvbnRyb2xsZXJzDQojc2xoY2kwCWF0IGlzYT8gcG9y
dCAweDMwMCBpcnEgNQkjIFNjYW5Mb2dpYyBTTDgxMUhTDQoNCicpbTRfZG5s
DQojIFVTQiBidXMgc3VwcG9ydA0KbTRfaWZkZWYoYGJ1c19wY2knLCBgbTRf
ZG5sDQojdXNiKglhdCBlaGNpPw0KdXNiKglhdCBvaGNpPw0KdXNiKglhdCB1
aGNpPw0KJyltNF9kbmwNCm00X2lmZGVmKGBidXNfaXNhJywgYG00X2RubA0K
I3VzYioJYXQgc2xoY2k/DQonKW00X2RubA0KDQojIFVTQiBIdWJzDQp1aHVi
KglhdCB1c2I/DQp1aHViKglhdCB1aHViPyBwb3J0ID8gY29uZmlndXJhdGlv
biA/IGludGVyZmFjZSA/DQoNCiMgVVNCIEhJRCBkZXZpY2UNCnVoaWRldioJ
YXQgdWh1Yj8gcG9ydCA/IGNvbmZpZ3VyYXRpb24gPyBpbnRlcmZhY2UgPw0K
DQojIFVTQiBNaWNlDQp1bXMqCWF0IHVoaWRldj8gcmVwb3J0aWQgPw0Kd3Nt
b3VzZSogYXQgdW1zPyBtdXggMA0KDQojIFVTQiBlR2FsYXggdG91Y2gtcGFu
ZWwNCnVlcCoJYXQgdWh1Yj8gcG9ydCA/DQp3c21vdXNlKiBhdCB1ZXA/IG11
eCAwDQoNCiMgVVNCIEtleWJvYXJkcw0KdWtiZCoJYXQgdWhpZGV2PyByZXBv
cnRpZCA/DQp3c2tiZCoJYXQgdWtiZD8gY29uc29sZSA/IG11eCAxDQoNCiMg
VVNCIEdlbmVyaWMgSElEIGRldmljZXMNCnVoaWQqCWF0IHVoaWRldj8gcmVw
b3J0aWQgPw0KDQojIFVTQiBQcmludGVyDQp1bHB0KglhdCB1aHViPyBwb3J0
ID8gY29uZmlndXJhdGlvbiA/IGludGVyZmFjZSA/DQoNCiMgVVNCIE1vZGVt
DQp1bW9kZW0qCWF0IHVodWI/IHBvcnQgPyBjb25maWd1cmF0aW9uID8NCnVj
b20qCWF0IHVtb2RlbT8NCg0KIyBVU0IgTWFzcyBTdG9yYWdlDQp1bWFzcyoJ
YXQgdWh1Yj8gcG9ydCA/IGNvbmZpZ3VyYXRpb24gPyBpbnRlcmZhY2UgPw0K
c2NzaWJ1cyogYXQgdW1hc3M/DQp3ZCoJYXQgdW1hc3M/DQoNCiMgVVNCIGF1
ZGlvDQp1YXVkaW8qCWF0IHVodWI/IHBvcnQgPyBjb25maWd1cmF0aW9uID8N
Cg0KIyBVU0IgTUlESQ0KdW1pZGkqIGF0IHVodWI/IHBvcnQgPyBjb25maWd1
cmF0aW9uID8NCg0KIyBVU0IgSXJEQQ0KIyBVU0ItSXJEQSBicmlkZ2Ugc3Bl
Yw0KdWlyZGEqIGF0IHVodWI/IHBvcnQgPyBjb25maWd1cmF0aW9uID8gaW50
ZXJmYWNlID8NCmlyZnJhbWUqIGF0IHVpcmRhPw0KDQojIFNpZ21hVGVsIFNU
SXI0MjAwIFVTQi9JckRBIEJyaWRnZQ0KdXN0aXIqIGF0IHVodWI/IHBvcnQg
Pw0KaXJmcmFtZSogYXQgdXN0aXI/DQoNCiMgVVNCIEV0aGVybmV0IGFkYXB0
ZXJzDQphdWUqCWF0IHVodWI/IHBvcnQgPwkJIyBBRE10ZWsgQU45ODYgUGVn
YXN1cyBiYXNlZCBhZGFwdGVycw0KY3VlKglhdCB1aHViPyBwb3J0ID8JCSMg
Q0FUQyBVU0ItRUwxMjAxQSBiYXNlZCBhZGFwdGVycw0Ka3VlKglhdCB1aHVi
PyBwb3J0ID8JCSMgS2F3YXNha2kgTFNJIEtMNUtVU0IxMDFCIGJhc2VkIGFk
YXB0ZXJzDQp1YXgqCWF0IHVodWI/IHBvcnQgPwkJIyBBU0lYIEFYODgxNzIg
YmFzZWQgYWRhcHRlcnMNCnVkYXYqCWF0IHVodWI/IHBvcnQgPwkJIyBEYXZp
Y29tIERNOTYwMSBiYXNlZCBhZGFwdGVycw0KdXJsKglhdCB1aHViPyBwb3J0
ID8JCSMgUmVhbHRlayBSVEw4MTUwTCBiYXNlZCBhZGFwdGVycw0KDQojIFBy
b2xpZmljIFBMMjMwMS9QTDIzMDIgaG9zdC10by1ob3N0IGFkYXB0ZXINCnVw
bCoJYXQgdWh1Yj8gcG9ydCA/DQoNCiMgU2VyaWFsIGFkYXB0ZXJzDQp1YnNh
KglhdCB1aHViPyBwb3J0ID8JCSMgQmVsa2luIHNlcmlhbCBhZGFwdGVyDQp1
Y29tKglhdCB1YnNhPyBwb3J0bm8gPw0KDQp1ZnRkaSoJYXQgdWh1Yj8gcG9y
dCA/CQkjIEZUREkgRlQ4VTEwMEFYIHNlcmlhbCBhZGFwdGVyDQp1Y29tKglh
dCB1ZnRkaT8gcG9ydG5vID8NCg0KdW1jdCoJYXQgdWh1Yj8gcG9ydCA/CQkj
IE1DVCBVU0ItUlMyMzIgc2VyaWFsIGFkYXB0ZXINCnVjb20qCWF0IHVtY3Q/
IHBvcnRubyA/DQoNCnVwbGNvbSogYXQgdWh1Yj8gcG9ydCA/IAkjIEkvTyBE
QVRBIFVTQi1SU0FRMiBzZXJpYWwgYWRhcHRlcg0KdWNvbSoJYXQgdXBsY29t
PyBwb3J0bm8gPw0KDQp1dnNjb20qIGF0IHVodWI/IHBvcnQgPyAJIyBTVU5U
QUMgU2xpcHBlciBVIFZTLTEwVSBzZXJpYWwgYWRhcHRlcg0KdWNvbSoJYXQg
dXZzY29tPyBwb3J0bm8gPw0KDQojIERpYW1vbmQgTXVsdGltZWRpYSBSaW8g
NTAwDQp1cmlvKglhdCB1aHViPyBwb3J0ID8NCg0KIyBVU0IgSGFuZHNwcmlu
ZyBWaXNvcg0KdXZpc29yKglhdCB1aHViPyBwb3J0ID8NCnVjb20qCWF0IHV2
aXNvcj8NCg0KIyBVU0Igc2Nhbm5lcnMNCnVzY2FubmVyKiBhdCB1aHViPyBw
b3J0ID8NCg0KIyBVU0Igc2Nhbm5lcnMgdGhhdCB1c2UgU0NTSSBlbXVsYXRp
b24sIGUuZy4sIEhQNTMwMA0KdXNzY2FubmVyKiBhdCB1aHViPyBwb3J0ID8N
Cg0KIyBZQFAgZmlybXdhcmUgbG9hZGVyDQp1eWFwKiBhdCB1aHViPyBwb3J0
ID8NCg0KIyBELUxpbmsgRFNCLVIxMDAgVVNCIHJhZGlvDQp1ZHNicioJYXQg
dWh1Yj8gcG9ydCA/DQpyYWRpbyoJYXQgdWRzYnI/DQoNCiMgVVNCIEdlbmVy
aWMgZHJpdmVyDQp1Z2VuKglhdCB1aHViPyBwb3J0ID8NCicpbTRfZG5sDQoN
Cg0KbTRfaWZkZWYoYGJ1c19wY2knLCBgbTRfZG5sDQojIElyREEgYW5kIENv
bnN1bWVyIElyIGRldmljZXMNCg0KIyBUb3NoaWJhIE9ib2UNCm9ib2UqIAlh
dCBwY2k/IGRldiA/IGZ1bmN0aW9uID8NCmlyZnJhbWUqIGF0IG9ib2U/DQoN
CicpbTRfZG5sDQptNF9pZmRlZihgYnVzX2Z3YnVzJywgYG00X2RubA0KIyBQ
Q0kgSUVFRTEzOTQgY29udHJvbGxlcnMNCm00X2lmZGVmKGBidXNfcGNpJywg
YG00X2RubA0KI2Z3b2hjaSogYXQgcGNpPyBkZXYgPyBmdW5jdGlvbiA/CSMg
SUVFRTEzOTQgT3BlbiBIb3N0IENvbnRyb2xsZXINCg0KJyltNF9kbmwNCm00
X2lmZGVmKGBidXNfY2FyZGJ1cycsIGBtNF9kbmwNCiMgQ2FyZEJ1cyBJRUVF
MTM5NCBjb250cm9sbGVycw0KI2Z3b2hjaSogYXQgY2FyZGJ1cz8gZGV2ID8g
ZnVuY3Rpb24gPwkjIElFRUUxMzk0IE9wZW4gSG9zdCBDb250cm9sbGVyDQoN
CicpbTRfZG5sDQojZncqCWF0IGZ3YnVzPwkJCSMgSVAgb3ZlciAxMzk0DQoN
CiMgSUVFRTEzOTQgbm9kZXMNCiNmd25vZGUqIGF0IGZ3YnVzPyBpZGhpID8g
aWRsbyA/DQojc2Jwc2NzaSogYXQgZndub2RlPw0KI3Njc2lidXMqIGF0IHNi
cHNjc2k/DQoNCicpbTRfZG5sDQo=

--0-391891591-1088259299=:556--