Subject: standard DPRINTF
To: None <tech-kern@netbsd.org>
From: Iain Hibbert <plunky@rya-online.net>
List: tech-kern
Date: 03/27/2007 21:31:44
  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-1342267946-1175027504=:29495
Content-Type: TEXT/PLAIN; charset=US-ASCII

Hi,
   I think this standardized DPRINTF API is in some kind of shape now, any
objections or comments?

iain
--0-1342267946-1175027504=:29495
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=debug.diff
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.NEB.4.64.0703272131440.29495@localhost.>
Content-Description: debug(9) API
Content-Disposition: attachment; filename=debug.diff

LS0tIC91c3Ivc3JjL3N5cy9jb25mL01ha2VmaWxlLmtlcm4uaW5jCTIwMDct
MDEtMjcgMjM6Mzc6NDIuMDAwMDAwMDAwICswMDAwDQorKysgc3lzL2NvbmYv
TWFrZWZpbGUua2Vybi5pbmMJMjAwNy0wMy0yNyAyMToxNDoyOC4wMDAwMDAw
MDAgKzAxMDANCkBAIC0xMDEsMTIgKzEwMSwxMyBAQA0KIENGTEFHUy5rZXJu
X3N5bmNoLmMrPQktZm5vLXJlb3JkZXItYmxvY2tzDQogLmVuZGlmDQogDQot
IyBVc2UgdGhlIHBlci1zb3VyY2UgQ09QVFMgdmFyaWFibGVzIHRvIGFkZCAt
ZyB0byBqdXN0IHRob3NlDQorIyBVc2UgdGhlIHBlci1zb3VyY2UgQ09QVFMg
dmFyaWFibGVzIHRvIGFkZCBkZWJ1ZyBvcHRpb25zIHRvIGp1c3QgdGhvc2UN
CiAjIGZpbGVzIHRoYXQgbWF0Y2ggdGhlIHNoZWxsIHBhdHRlcm5zIGdpdmVu
IGluICR7REVCVUdMSVNUfQ0KICMNCiAuZm9yIGkgaW4gJHtERUJVR0xJU1R9
DQogLiBmb3IgaiBpbiAke0NGSUxFUzpUOk0kaS5jfQ0KLUNPUFRTLiR7an0r
PS1nDQorQ09QVFMuJHtqfSs9LWcgLUREUFJJTlRBVFRSPWRlYnVnXyR7ajpS
fQ0KK0RQUklOVExJU1QrPSR7ajpSfQ0KIC4gZW5kZm9yDQogLmVuZGZvcg0K
IA0KQEAgLTE1OCw3ICsxNTksNyBAQA0KICMjIEVhY2ggcG9ydCBzaG91bGQg
aGF2ZSBhIGNvcnJlc3BvbmRpbmcgc2VjdGlvbiB3aXRoIHNldHRpbmdzIGZv
cg0KICMjIE1EX0NGSUxFUywgTURfU0ZJTEVTLCBhbmQgTURfT0JKUywgYWxv
bmcgd2l0aCBidWlsZCBydWxlcyBmb3Igc2FtZS4NCiAjIw0KLU1JX0NGSUxF
Uz1kZXZzdy5jIGlvY29uZi5jIHBhcmFtLmMNCitNSV9DRklMRVM9ZGV2c3cu
YyBpb2NvbmYuYyBwYXJhbS5jICR7ZW1wdHkoRFBSSU5UTElTVCk6PzpkZWJ1
Zy5jfQ0KICMgdGhlIG5lZWQgZm9yIGEgTUlfU0ZJTEVTIHZhcmlhYmxlIGlz
IGR1Yml0YWJsZSBhdCBiZXN0DQogTUlfT0JKUz0ke01JX0NGSUxFUzpTLy5j
Ly5vL30NCiANCkBAIC0xNjksNiArMTcwLDEwIEBADQogDQogcGFyYW0ubzog
TWFrZWZpbGUNCiANCitkZWJ1Zy5jOiBNYWtlZmlsZSAkUy9jb25mL2RlYnVn
LnNoDQorCSR7X01LVEFSR0VUX0NSRUFURX0NCisJJHtIT1NUX1NIfSAkUy9j
b25mL2RlYnVnLnNoICR7RFBSSU5UTElTVDpPOnV9ID4gZGVidWcuYw0KKw0K
IC5mb3IgX2NmaWxlIGluICR7TUlfQ0ZJTEVTfQ0KICR7X2NmaWxlOlQ6Un0u
bzogJHtfY2ZpbGV9DQogCSR7Tk9STUFMX0N9DQpAQCAtMjkyLDcgKzI5Nyw3
IEBADQogLmlmICF0YXJnZXQoX19DTEVBTktFUk5FTCkNCiBfX0NMRUFOS0VS
TkVMOiAuVVNFDQogCSR7X01LTVNHfSAiJHsuVEFSR0VUfWluZyB0aGUga2Vy
bmVsIG9iamVjdHMiDQotCXJtIC1mICR7S0VSTkVMU30gZWRkZXAgdGFncyAq
Lltpb10gKi5sbiBbYS16XSoucyB2ZXJzLmMgXA0KKwlybSAtZiAke0tFUk5F
TFN9IGVkZGVwIHRhZ3MgKi5baW9dICoubG4gW2Etel0qLnMgZGVidWcuYyB2
ZXJzLmMgXA0KIAkgICAgW0VlXXJycyBsaW50ZXJycyBtYWtlbGlua3MgYXNz
eW0uaC50bXAgYXNzeW0uaCBcDQogCSAgICAke0VYVFJBX0tFUk5FTFN9ICR7
RVhUUkFfQ0xFQU59DQogLmVuZGlmDQotLS0gL3Vzci9zcmMvc3lzL3N5cy9k
ZWJ1Zy5oCTIwMDctMDItMDkgMjE6NTU6MzcuMDAwMDAwMDAwICswMDAwDQor
Kysgc3lzL3N5cy9kZWJ1Zy5oCTIwMDctMDMtMjcgMjE6MTY6MDUuMDAwMDAw
MDAwICswMTAwDQpAQCAtNTYsNCArNTYsMzggQEANCiAjZGVmaW5lCUZSRUVD
SEVDS19JTihoLCBhKQkvKiBub3RoaW5nICovDQogI2VuZGlmDQogDQorLyoN
CisgKiBEZWJ1ZyBvdXRwdXQNCisgKi8NCisNCisjaWZkZWYgRFBSSU5UQVRU
Ug0KKw0KK2V4dGVybiBpbnQgRFBSSU5UQVRUUjsNCisNCisjZGVmaW5lIERQ
UklOVEYoZm10LCBhcmdzLi4uKQlkbyB7CQkJXA0KKwlpZiAoRFBSSU5UQVRU
UikJCQkJCVwNCisJCXByaW50ZigiJXM6ICJmbXQsIF9fZnVuY19fICwgIyNh
cmdzKTsJXA0KK30gd2hpbGUgKC8qIENPTlNUQ09ORCAqLzApDQorDQorI2Rl
ZmluZSBEUFJJTlRfTUFTSyhtLCBmbXQsIGFyZ3MuLi4pCWRvIHsJCVwNCisJ
aWYgKChEUFJJTlRBVFRSKSAmIChtKSkJCQkJXA0KKwkJcHJpbnRmKCIlczog
ImZtdCwgX19mdW5jX18gLCAjI2FyZ3MpOwlcDQorfSB3aGlsZSAoLyogQ09O
U1RDT05EICovMCkNCisNCisjZWxzZQ0KKw0KKyNkZWZpbmUgRFBSSU5URigu
Li4pCQkvKiBub3RoaW5nICovDQorI2RlZmluZSBEUFJJTlRfTUFTSyguLi4p
CS8qIG5vdGhpbmcgKi8NCisNCisjZW5kaWYJLyogRFBSSU5UQVRUUiAqLw0K
Kw0KKy8qIHByZWRlZmluZWQgZGVidWcgYml0cyAqLw0KKyNkZWZpbmUgREVC
VUdfV0FSTgkoMTw8MCkJLyogd2FybmluZ3MgKi8NCisjZGVmaW5lIERFQlVH
X0lORk8JKDE8PDEpCS8qIGluZm9ybWF0aW9uICovDQorI2RlZmluZSBERUJV
R19EQVRBCSgxPDwyKQkvKiBkYXRhIGZsb3cgKi8NCisNCisjZGVmaW5lIERQ
UklOVF9XQVJOKGZtdC4uLikJRFBSSU5UX01BU0soREVCVUdfV0FSTiwgZm10
KTsNCisjZGVmaW5lIERQUklOVF9JTkZPKGZtdC4uLikJRFBSSU5UX01BU0so
REVCVUdfSU5GTywgZm10KTsNCisjZGVmaW5lIERQUklOVF9EQVRBKGZtdC4u
LikJRFBSSU5UX01BU0soREVCVUdfREFUQSwgZm10KTsNCisNCiAjZW5kaWYJ
LyogX19TWVNfREVCVUdfSF9fICovDQotLS0gL2Rldi9udWxsCTIwMDctMDMt
MjcgMjA6MTk6MzEuMDAwMDAwMDAwICswMTAwDQorKysgc3lzL2NvbmYvZGVi
dWcuc2gJMjAwNy0wMy0yNyAyMToxODoyOC4wMDAwMDAwMDAgKzAxMDANCkBA
IC0wLDAgKzEsMTAwIEBADQorIyEvYmluL3NoIC0NCisjDQorIwkkTmV0QlNE
OiBkZWJ1Zy5zaCQNCisjDQorIyBDb3B5cmlnaHQgKGMpIDIwMDcgVGhlIE5l
dEJTRCBGb3VuZGF0aW9uLCBJbmMuDQorIyBBbGwgcmlnaHRzIHJlc2VydmVk
Lg0KKyMNCisjIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdhcmUg
Y29udHJpYnV0ZWQgdG8gVGhlIE5ldEJTRCBGb3VuZGF0aW9uDQorIyBieSBJ
YWluIEhpYmJlcnQuDQorIw0KKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisjIGFyZSBtZXQ6DQorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodA0KKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLg0KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQNCisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUNCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorIyAz
LiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVy
ZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUNCisjICAgIG11c3QgZGlzcGxh
eSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoNCisjICAgICAgVGhp
cyBwcm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSB0aGUg
TmV0QlNEDQorIyAgICAgIEZvdW5kYXRpb24sIEluYy4gYW5kIGl0cyBjb250
cmlidXRvcnMuDQorIyA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIFRoZSBOZXRC
U0QgRm91bmRhdGlvbiBub3IgdGhlIG5hbWVzIG9mIGl0cw0KKyMgICAgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkDQorIyAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQorIw0K
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgTkVUQlNEIEZP
VU5EQVRJT04sIElOQy4gQU5EIENPTlRSSUJVVE9SUw0KKyMgYGBBUyBJUycn
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEDQorIyBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUg0KKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBGT1VOREFUSU9OIE9SIENPTlRSSUJVVE9SUw0K
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUg0KKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YNCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUw0K
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4NCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpDQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRQ0KKyMgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuDQorDQorDQor
IyMNCisjIyBmaWxlIGhlYWRlcg0KKyMjDQorY2F0IDw8IF9FT0YNCisvKg0K
KyAqIE1BQ0hJTkUgR0VORVJBVEVEOiBETyBOT1QgRURJVA0KKyAqDQorICog
ZGVidWcuYywgZnJvbSAkMA0KKyAqLw0KKw0KKyNpbmNsdWRlIDxzeXMvcGFy
YW0uaD4NCisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPg0KKw0KK19FT0YNCisN
CisjIw0KKyMjIHZhcmlhYmxlIGRlY2xhcmF0aW9ucw0KKyMjDQorZm9yIGF0
dHIgaW4gJEA7IGRvDQorICAgIGNhdCA8PCBfRU9GDQoraW50IGRlYnVnXyRh
dHRyOw0KK19FT0YNCitkb25lDQorDQorIyMNCisjIyBzdGFydCBzeXNjdGwg
c2V0dXANCisjIw0KK2NhdCA8PCBfRU9GDQorDQorU1lTQ1RMX1NFVFVQKHN5
c2N0bF9kZWJ1Z19zZXR1cCwgImRlYnVnIHN5c2N0bCBzdWJ0cmVlIHNldHVw
IikNCit7DQorDQorCXN5c2N0bF9jcmVhdGV2KGNsb2csIDAsIE5VTEwsIE5V
TEwsDQorCSAgICAJQ1RMRkxBR19QRVJNQU5FTlQsDQorCSAgICAJQ1RMVFlQ
RV9OT0RFLCAiZGVidWciLCBOVUxMLA0KKwkgICAgCU5VTEwsIDAsIE5VTEws
IDAsDQorCSAgICAJQ1RMX0RFQlVHLCBDVExfRU9MKTsNCitfRU9GDQorDQor
IyMNCisjIyBzeXNjdGwgZGVjbGFyYXRpb25zDQorIyMNCitmb3IgYXR0ciBp
biAkQDsgZG8NCisgICAgY2F0IDw8IF9FT0YNCisNCisJc3lzY3RsX2NyZWF0
ZXYoY2xvZywgMCwgTlVMTCwgTlVMTCwNCisJCUNUTEZMQUdfUEVSTUFORU5U
IHwgQ1RMRkxBR19SRUFEV1JJVEUsDQorCQlDVExUWVBFX0lOVCwgIiRhdHRy
IiwNCisJCVNZU0NUTF9ERVNDUigiJGF0dHIuYyBkZWJ1ZyBsZXZlbCIpLA0K
KwkJTlVMTCwgMCwNCisJCSZkZWJ1Z18kYXR0ciwgc2l6ZW9mKGRlYnVnXyRh
dHRyKSwNCisJCUNUTF9ERUJVRywgQ1RMX0NSRUFURSwgQ1RMX0VPTCk7DQor
X0VPRg0KK2RvbmUNCisNCisjIw0KKyMjIGVuZCBzeXNjdGwgc2V0dXANCisj
Iw0KK2NhdCA8PCBfRU9GDQorfQ0KK19FT0YNCi0tLSAvZGV2L251bGwJMjAw
Ny0wMy0yNyAyMDoxOTozMS4wMDAwMDAwMDAgKzAxMDANCisrKyBzaGFyZS9t
YW4vbWFuOS9kZWJ1Zy45CTIwMDctMDMtMjcgMjA6NTI6MzUuMDAwMDAwMDAw
ICswMTAwDQpAQCAtMCwwICsxLDEwOSBAQA0KKy5cIgkkTmV0QlNEOiBkZWJ1
Zy45JA0KKy5cIg0KKy5cIiBDb3B5cmlnaHQgKGMpIDIwMDcgVGhlIE5ldEJT
RCBGb3VuZGF0aW9uLCBJbmMuDQorLlwiIEFsbCByaWdodHMgcmVzZXJ2ZWQu
DQorLlwiDQorLlwiIFRoaXMgY29kZSBpcyBkZXJpdmVkIGZyb20gc29mdHdh
cmUgY29udHJpYnV0ZWQgdG8gVGhlIE5ldEJTRCBGb3VuZGF0aW9uDQorLlwi
IGJ5IElhaW4gSGliYmVydC4NCisuXCINCisuXCIgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0DQorLlwiIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucw0KKy5cIiBhcmUg
bWV0Og0KKy5cIiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodA0KKy5cIiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuDQorLlwiIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQor
LlwiICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUNCisuXCIgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4NCisuXCIgMy4gQWxsIGFkdmVydGlzaW5nIG1h
dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNv
ZnR3YXJlDQorLlwiICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFj
a25vd2xlZGdlbWVudDoNCisuXCIgICAgICBUaGlzIHByb2R1Y3QgaW5jbHVk
ZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBOZXRCU0QNCisuXCIgICAg
ICBGb3VuZGF0aW9uLCBJbmMuIGFuZCBpdHMgY29udHJpYnV0b3JzLg0KKy5c
IiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIFRoZSBOZXRCU0QgRm91bmRhdGlv
biBub3IgdGhlIG5hbWVzIG9mIGl0cw0KKy5cIiAgICBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQNCisuXCIgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLg0KKy5cIg0KKy5cIiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBORVRCU0QgRk9VTkRB
VElPTiwgSU5DLiBBTkQgQ09OVFJJQlVUT1JTDQorLlwiIGBgQVMgSVMnJyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRA0KKy5cIiBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUg0KKy5cIiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIEZPVU5EQVRJT04gT1IgQ09OVFJJQlVUT1JT
DQorLlwiIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1INCisuXCIgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YNCisuXCIgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTDQorLlwiIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElODQorLlwi
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpDQorLlwiIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFDQorLlwiIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLg0KKy5cIg0KKy5EZCBNYXJjaCAyMywgMjAwNw0KKy5EdCBERUJV
RyA5DQorLk9zDQorLlNoIE5BTUUNCisuTm0gREVCVUcNCisuTmQgbWFjcm9z
IGZvciBwcm9kdWNpbmcgZGVidWcgb3V0cHV0DQorLlNoIFNZTk9QU0lTDQor
LkluIHN5cy9kZWJ1Zy5oDQorLkZuIERQUklOVEYgImNvbnN0IGNoYXIgKmZt
dCIgIi4uLiINCisuRm4gRFBSSU5UX01BU0sgImludCBtYXNrIiAiY29uc3Qg
Y2hhciAqZm10IiAiLi4uIg0KKy5GbiBEUFJJTlRfV0FSTiAiY29uc3QgY2hh
ciAqZm10IiAiLi4uIg0KKy5GbiBEUFJJTlRfSU5GTyAiY29uc3QgY2hhciAq
Zm10IiAiLi4uIg0KKy5GbiBEUFJJTlRfREFUQSAiY29uc3QgY2hhciAqZm10
IiAiLi4uIg0KKy5TaCBERVNDUklQVElPTg0KK1RoZSBkZWJ1ZyBvdXRwdXQg
bWFjcm9zIG5vcm1hbGx5IGV4cGFuZCB0byBub3RoaW5nLCBidXQgb3V0cHV0
IGNhbg0KK2JlIGVuYWJsZWQgb24gYSBmaWxlLWJ5LWZpbGUgYmFzaXMgYnkg
dGhlIGluY2x1c2lvbiBvZg0KKy5QcA0KKy5EbCBtYWtlb3B0aW9ucyBEdiBE
RUJVR0xJU1QgTnMgKz0gTnMgUXEgQW8gcGF0dGVybiBBYyAuLi4NCisuUHAN
CitpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZS4NCitUaGlzIHdp
bGwgY2F1c2UgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzIHRvIGluc2VydA0K
Ky5QcA0KKy5EbCAtRCBOcyBEdiBEUFJJTlRBVFRSIE5zID0gTnMgQXEgbmFt
ZQ0KKy5QcA0KK2ludG8gdGhlIGNvbXBpbGUgZmxhZ3MgZm9yIGZpbGVuYW1l
cyBtYXRjaGluZw0KKy5BbyBwYXR0ZXJuIEFjIE5zIC5jICwNCit3aGVyZQ0K
Ky5BcSBuYW1lDQord2lsbCBiZSB0aGUgdmFyaWFibGUgbmFtZSB0aGF0IGlz
IHVzZWQgdG8gY29udHJvbCBkZWJ1ZyBvdXRwdXQuDQorVGhlIGV4aXN0ZW5j
ZSBhbmQgY29udGVudCBvZiB0aGUNCisuRHYgRFBSSU5UQVRUUg0KK2RlZmlu
aXRpb24gbWF5IGJlIHVzZWQgdG8gaW5jbHVkZSBjb2RlIHRvIGdlbmVyYXRl
IG1vcmUgZXh0ZW5zaXZlDQorb3V0cHV0IHRoYW4gaXMgcG9zc2libGUgd2l0
aCB0aGUgc3VwcGxpZWQgbWFjcm9zLg0KKy5QcA0KK1RoZSBiaXRtYXNrIHZh
cmlhYmxlcyB1c2VkIHRvIGNvbnRyb2wgZGVidWcgb3V0cHV0IHdpbGwgYmUN
CitleHBvc2VkIHRvIHVzZXJsYW5kIHZpYSB0aGUNCisuWHIgc3lzY3RsIDcN
CisuU3EgZGVidWcNCitzdWJ0cmVlLg0KK1RoZSBmb2xsb3dpbmcgYml0cyBh
cmUgcHJlZGVmaW5lZA0KKy5QcA0KKy5CbCAtdGFnIC1jb21wYWN0IC1vZmZz
ZXQgaW5kZW50DQorLkl0IER2IERFQlVHX1dBUk4NCit3YXJuaW5ncw0KKy5J
dCBEdiBERUJVR19JTkZPDQoraW5mb3JtYXRpb25hbA0KKy5JdCBEdiBERUJV
R19EQVRBDQorZGF0YSBmbG93DQorLkVsDQorLlNoIENPREUgUkVGRVJFTkNF
Uw0KK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgcGxhY2VzIGluIHRoZQ0KKy5O
eA0KK3NvdXJjZSB0cmVlIHdoZXJlIGFjdHVhbCBjb2RlIGltcGxlbWVudGlu
ZyBvciB1c2luZyB0aGUNCitrZXJuZWwgZGVidWcgQVBJIGNhbiBiZSBmb3Vu
ZC4gQWxsIHBhdGhuYW1lcyBhcmUNCityZWxhdGl2ZSB0bw0KKy5QYSAvdXNy
L3NyYyAuDQorLlBwDQorLkJsIC10YWcgLWNvbXBhY3QgLW9mZnNldCBpbmRl
bnQgLXdpZHRoICIuUGEgc3lzL2NvbmYvTWFrZWZpbGUua2Vybi5pbmMiDQor
Lkl0IFBhIHN5cy9jb25mL01ha2VmaWxlLmtlcm4uaW5jDQoraW50ZXJwcmV0
cw0KKy5EdiBERUJVR0xJU1QNCisuSXQgUGEgc3lzL2NvbmYvZGVidWcuc2gN
CitnZW5lcmF0ZXMNCisuWHIgc3lzY3RsIDcNCit2YXJpYWJsZXMNCisuSXQg
UGEgc3lzL3N5cy9kZWJ1Zy5oDQorbWFjcm8gZGVmaW5pdGlvbnMNCisuRWwN
CisuU2ggU0VFIEFMU08NCisuWHIgY29uZmlnIDEgLA0KKy5YciBjb25maWcg
NSAsDQorLlhyIHN5c2N0bCA3ICwNCisuWHIgc3lzY3RsIDgNCi0tLSAvdXNy
L3NyYy9zYmluL3N5c2N0bC9zeXNjdGwuYwkyMDA3LTAxLTI3IDIzOjM2OjQy
LjAwMDAwMDAwMCArMDAwMA0KKysrIHNiaW4vc3lzY3RsL3N5c2N0bC5jCTIw
MDctMDMtMjQgMjM6MTQ6MjMuMDAwMDAwMDAwICswMDAwDQpAQCAtMTczLDYg
KzE3Myw3IEBADQogc3RhdGljIHZvaWQgbWFjaGRlcF9kaXNraW5mbyhIQU5E
TEVSX1BST1RPKTsNCiAjZW5kaWYgLyogQ1BVX0RJU0tJTkZPICovDQogc3Rh
dGljIHZvaWQgbW9kZV9iaXRzKEhBTkRMRVJfUFJPVE8pOw0KK3N0YXRpYyB2
b2lkIGRwcmludF9mbGFncyhIQU5ETEVSX1BST1RPKTsNCiANCiBzdGF0aWMg
Y29uc3Qgc3RydWN0IGhhbmRsZXNwZWMgew0KIAljb25zdCBjaGFyICpwc19y
ZTsNCkBAIC0yMTcsNiArMjE4LDcgQEANCiAJeyAiL25ldC9ucy9zcHAvZGVi
LioiLAkJCXByaW50b3RoZXIsIE5VTEwsICJ0cnNwIiB9LA0KIA0KIAl7ICIv
aHcvZGlza3N0YXRzIiwJCQlwcmludG90aGVyLCBOVUxMLCAiaW9zdGF0IiB9
LA0KKwl7ICIvZGVidWcvW14vXSsiLAkJCWRwcmludF9mbGFncywgTlVMTCwg
ImRlYnVnIGxldmVsIiB9LA0KIA0KICNpZmRlZiBDUFVfQ09OU0RFVg0KIAl7
ICIvbWFjaGRlcC9jb25zZGV2IiwJCQlrZXJuX2NvbnNkZXYsIE5VTEwsIE5V
TEwgfSwNCkBAIC0yNTc0LDMgKzI1NzYsNTAgQEANCiAJCX0NCiAJfQ0KIH0N
CisNCisvKkFSR1NVU0VEKi8NCitzdGF0aWMgdm9pZA0KK2RwcmludF9mbGFn
cyhIQU5ETEVSX0FSR1MpDQorew0KKwljb25zdCBjaGFyICpzLCAqZTsNCisJ
c2l6ZV90IHN6Ow0KKwlpbnQgZHAsIHJjLCBuOw0KKw0KKwlzeiA9IHNpemVv
ZihkcCk7DQorCXJjID0gc3lzY3RsKG5hbWUsIG5hbWVsZW4sICZkcCwgJnN6
LCBOVUxMLCAwKTsNCisJaWYgKHJjID09IC0xKSB7DQorCQlzeXNjdGxlcnJv
cigxKTsNCisJCXJldHVybjsNCisJfQ0KKwlpZiAoc3ogIT0gc2l6ZW9mKGRw
KSkNCisJCWVycngoMSwgIiVzOiAhcmV0dXJuZWQgc2l6ZSB3cm9uZyEiLCBz
bmFtZSk7DQorDQorCWlmICh4ZmxhZyB8fCByZmxhZykNCisJCWRpc3BsYXlf
bnVtYmVyKHBub2RlLCBzbmFtZSwgJmRwLCBzaXplb2YoZHApLCBESVNQTEFZ
X1ZBTFVFKTsNCisJZWxzZSBpZiAobmZsYWcpDQorCQlwcmludGYoIiVkXG4i
LCBkcCk7DQorCWVsc2Ugew0KKwkJcHJpbnRmKCIlcyVzJSN4Iiwgc25hbWUs
IGVxLCBkcCk7DQorDQorCQlzID0gIiAoIjsNCisJCWUgPSAiIjsNCisJCWZv
ciAobiA9IDAgOyBkcCA7IG4rKykgew0KKwkJCWlmIChkcCAmICgxIDw8IG4p
KSB7DQorCQkJCWRwICY9IH4oMSA8PCBuKTsNCisNCisJCQkJaWYgKG4gPT0g
MCkNCisJCQkJCXByaW50ZigiJXN3YXJuIiwgcyk7DQorCQkJCWVsc2UgaWYg
KG4gPT0gMSkNCisJCQkJCXByaW50ZigiJXNpbmZvIiwgcyk7DQorCQkJCWVs
c2UgaWYgKG4gPT0gMikNCisJCQkJCXByaW50ZigiJXNkYXRhIiwgcyk7DQor
CQkJCWVsc2UNCisJCQkJCWJyZWFrOw0KKw0KKwkJCQlzID0gIiwiOw0KKwkJ
CQllID0gIikiOw0KKwkJCX0NCisJCX0NCisJCXByaW50ZigiJXNcbiIsIGUp
Ow0KKwl9DQorfQ0KLS0tIC91c3Ivc3JjL3NoYXJlL21hbi9tYW45L01ha2Vm
aWxlCTIwMDctMDItMjQgMTQ6MTc6MjUuMDAwMDAwMDAwICswMDAwDQorKysg
c2hhcmUvbWFuL21hbjkvTWFrZWZpbGUJMjAwNy0wMy0yNyAyMDo1NzowMC4w
MDAwMDAwMDAgKzAxMDANCkBAIC0xMyw3ICsxMyw3IEBADQogCWNwdV9udW1i
ZXIuOSBjcHVfcmVib290LjkgY3B1X3Jvb3Rjb25mLjkgXA0KIAljcHVfc3Rh
cnR1cC45IGNwdV9zd2Fwb3V0LjkgXA0KIAljdHhzdy45IGN1cnByb2MuOSBc
DQotCWRlbGF5LjkgZGlzay45IGRkYy45IGRpc2tsYWJlbC45IGRvZmlsZXJl
YWQuOSBcDQorCWRlYnVnLjkgZGVsYXkuOSBkaXNrLjkgZGRjLjkgZGlza2xh
YmVsLjkgZG9maWxlcmVhZC45IFwNCiAJZG9wb3dlcmhvb2tzLjkgZG9fc2V0
cmVzdWlkLjkgZG9zaHV0ZG93bmhvb2tzLjkgZHJpdmVyLjkgXA0KIAllZGlk
LjkgZXJybm8uOSBldGhlcnN1YnIuOSBldmNudC45IGV4dGF0dHIuOSBleHRl
bnQuOSBcDQogCWZldGNoLjkgZmlsZS45IGZpbGVhc3NvYy45IGZpbGVkZXNj
LjkgZmlybWxvYWQuOSBmb3JrMS45IGZzZXRvd24uOSBcDQpAQCAtMTg2LDYg
KzE4NiwxMSBAQA0KIE1MSU5LUys9Y3B1X3N3YXBvdXQuOSBjcHVfc3dhcGlu
LjkNCiBNTElOS1MrPWN0eHN3LjkgY3B1X3N3aXRjaC45IGN0eHN3LjkgbWlf
c3dpdGNoLjkNCiBNTElOS1MrPWN1cnByb2MuOSBjdXJjcHUuOQ0KK01MSU5L
Uys9ZGVidWcuOSBEUFJJTlRGLjkgXA0KKwlkZWJ1Zy45IERQUklOVF9NQVNL
LjkgXA0KKwlkZWJ1Zy45IERQUklOVF9XQVJOLjkgXA0KKwlkZWJ1Zy45IERQ
UklOVF9JTkZPLjkgXA0KKwlkZWJ1Zy45IERQUklOVF9EQVRBLjkNCiBNTElO
S1MrPWRlbGF5LjkgREVMQVkuOQ0KIE1MSU5LUys9ZGlzay45IGRpc2tfYXR0
YWNoLjkgZGlzay45IGRpc2tfZGV0YWNoLjkgXA0KIAlkaXNrLjkgZGlza19i
dXN5LjkgZGlzay45IGRpc2tfdW5idXN5LjkgZGlzay45IGRpc2tfZmluZC45
IFwNCi0tLSAvdXNyL3NyYy9kaXN0cmliL3NldHMvbGlzdHMvY29tcC9taQky
MDA3LTAyLTI0IDE0OjE0OjMyLjAwMDAwMDAwMCArMDAwMA0KKysrIGRpc3Ry
aWIvc2V0cy9saXN0cy9jb21wL21pCTIwMDctMDMtMjcgMjA6NTc6MjkuMDAw
MDAwMDAwICswMTAwDQpAQCAtNjQxNCw2ICs2NDE0LDExIEBADQogLi91c3Iv
c2hhcmUvbWFuL2NhdDkvQ2FyZGJ1c19tYXByZWdfbWFwLjAJY29tcC1zeXMt
Y2F0bWFuCQkuY2F0DQogLi91c3Ivc2hhcmUvbWFuL2NhdDkvQ2FyZGJ1c19t
YXByZWdfdW5tYXAuMAljb21wLXN5cy1jYXRtYW4JCS5jYXQNCiAuL3Vzci9z
aGFyZS9tYW4vY2F0OS9ERUxBWS4wCQkJY29tcC1zeXMtY2F0bWFuCQkuY2F0
DQorLi91c3Ivc2hhcmUvbWFuL2NhdDkvRFBSSU5URi4wCQkJY29tcC1zeXMt
Y2F0bWFuCQkuY2F0DQorLi91c3Ivc2hhcmUvbWFuL2NhdDkvRFBSSU5UX0RB
VEEuMAkJY29tcC1zeXMtY2F0bWFuCQkuY2F0DQorLi91c3Ivc2hhcmUvbWFu
L2NhdDkvRFBSSU5UX0lORk8uMAkJY29tcC1zeXMtY2F0bWFuCQkuY2F0DQor
Li91c3Ivc2hhcmUvbWFuL2NhdDkvRFBSSU5UX01BU0suMAkJY29tcC1zeXMt
Y2F0bWFuCQkuY2F0DQorLi91c3Ivc2hhcmUvbWFuL2NhdDkvRFBSSU5UX1dB
Uk4uMAkJY29tcC1zeXMtY2F0bWFuCQkuY2F0DQogLi91c3Ivc2hhcmUvbWFu
L2NhdDkvRVRIRVJfRklSU1RfTVVMVEkuMAljb21wLXN5cy1jYXRtYW4JCS5j
YXQNCiAuL3Vzci9zaGFyZS9tYW4vY2F0OS9FVEhFUl9JU19NVUxUSUNBU1Qu
MAljb21wLXN5cy1jYXRtYW4JCS5jYXQNCiAuL3Vzci9zaGFyZS9tYW4vY2F0
OS9FVEhFUl9ORVhUX01VTFRJLjAJCWNvbXAtc3lzLWNhdG1hbgkJLmNhdA0K
QEAgLTY3NDQsNiArNjc0OSw3IEBADQogLi91c3Ivc2hhcmUvbWFuL2NhdDkv
Y3Zfd2FpdF9zaWcuMAkJY29tcC1zeXMtY2F0bWFuCQkuY2F0DQogLi91c3Iv
c2hhcmUvbWFuL2NhdDkvY3Zfd2FrZXVwLjAJCWNvbXAtc3lzLWNhdG1hbgkJ
LmNhdA0KIC4vdXNyL3NoYXJlL21hbi9jYXQ5L2RkYy4wCQkJY29tcC1zeXMt
Y2F0bWFuCQkuY2F0DQorLi91c3Ivc2hhcmUvbWFuL2NhdDkvZGVidWcuMAkJ
CWNvbXAtc3lzLWNhdG1hbgkJLmNhdA0KIC4vdXNyL3NoYXJlL21hbi9jYXQ5
L2RlbGF5LjAJCQljb21wLXN5cy1jYXRtYW4JCS5jYXQNCiAuL3Vzci9zaGFy
ZS9tYW4vY2F0OS9kaXNrLjAJCQljb21wLXN5cy1jYXRtYW4JCS5jYXQNCiAu
L3Vzci9zaGFyZS9tYW4vY2F0OS9kaXNrX2F0dGFjaC4wCQljb21wLXN5cy1j
YXRtYW4JCS5jYXQNCkBAIC0xMDczNSw2ICsxMDc0MSwxMSBAQA0KIC4vdXNy
L3NoYXJlL21hbi9tYW45L0NhcmRidXNfbWFwcmVnX21hcC45CWNvbXAtc3lz
LW1hbgkJLm1hbg0KIC4vdXNyL3NoYXJlL21hbi9tYW45L0NhcmRidXNfbWFw
cmVnX3VubWFwLjkJY29tcC1zeXMtbWFuCQkubWFuDQogLi91c3Ivc2hhcmUv
bWFuL21hbjkvREVMQVkuOQkJCWNvbXAtc3lzLW1hbgkJLm1hbg0KKy4vdXNy
L3NoYXJlL21hbi9tYW45L0RQUklOVEYuOQkJCWNvbXAtc3lzLW1hbgkJLm1h
bg0KKy4vdXNyL3NoYXJlL21hbi9tYW45L0RQUklOVF9EQVRBLjkJCWNvbXAt
c3lzLW1hbgkJLm1hbg0KKy4vdXNyL3NoYXJlL21hbi9tYW45L0RQUklOVF9J
TkZPLjkJCWNvbXAtc3lzLW1hbgkJLm1hbg0KKy4vdXNyL3NoYXJlL21hbi9t
YW45L0RQUklOVF9NQVNLLjkJCWNvbXAtc3lzLW1hbgkJLm1hbg0KKy4vdXNy
L3NoYXJlL21hbi9tYW45L0RQUklOVF9XQVJOLjkJCWNvbXAtc3lzLW1hbgkJ
Lm1hbg0KIC4vdXNyL3NoYXJlL21hbi9tYW45L0VUSEVSX0ZJUlNUX01VTFRJ
LjkJY29tcC1zeXMtbWFuCQkubWFuDQogLi91c3Ivc2hhcmUvbWFuL21hbjkv
RVRIRVJfSVNfTVVMVElDQVNULjkJY29tcC1zeXMtbWFuCQkubWFuDQogLi91
c3Ivc2hhcmUvbWFuL21hbjkvRVRIRVJfTkVYVF9NVUxUSS45CQljb21wLXN5
cy1tYW4JCS5tYW4NCkBAIC0xMTA2NSw2ICsxMTA3Niw3IEBADQogLi91c3Iv
c2hhcmUvbWFuL21hbjkvY3Zfd2FpdF9zaWcuOQkJY29tcC1zeXMtbWFuCQku
bWFuDQogLi91c3Ivc2hhcmUvbWFuL21hbjkvY3Zfd2FrZXVwLjkJCWNvbXAt
c3lzLW1hbgkJLm1hbg0KIC4vdXNyL3NoYXJlL21hbi9tYW45L2RkYy45CQkJ
Y29tcC1zeXMtbWFuCQkubWFuDQorLi91c3Ivc2hhcmUvbWFuL21hbjkvZGVi
dWcuOQkJCWNvbXAtc3lzLW1hbgkJLm1hbg0KIC4vdXNyL3NoYXJlL21hbi9t
YW45L2RlbGF5LjkJCQljb21wLXN5cy1tYW4JCS5tYW4NCiAuL3Vzci9zaGFy
ZS9tYW4vbWFuOS9kaXNrLjkJCQljb21wLXN5cy1tYW4JCS5tYW4NCiAuL3Vz
ci9zaGFyZS9tYW4vbWFuOS9kaXNrX2F0dGFjaC45CQljb21wLXN5cy1tYW4J
CS5tYW4NCg==

--0-1342267946-1175027504=:29495--