From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KNqlx-0005U1-5q for qemu-devel@nongnu.org; Tue, 29 Jul 2008 11:05:57 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KNqlv-0005TZ-Ob for qemu-devel@nongnu.org; Tue, 29 Jul 2008 11:05:56 -0400 Received: from [199.232.76.173] (port=56205 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KNqlv-0005TR-HG for qemu-devel@nongnu.org; Tue, 29 Jul 2008 11:05:55 -0400 Received: from mx1.redhat.com ([66.187.233.31]:54945) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KNqlu-00006L-NT for qemu-devel@nongnu.org; Tue, 29 Jul 2008 11:05:55 -0400 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id m6TF5sg9012728 for ; Tue, 29 Jul 2008 11:05:54 -0400 Received: from pobox.stuttgart.redhat.com (pobox.stuttgart.redhat.com [172.16.2.10]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id m6TF5q4q004959 for ; Tue, 29 Jul 2008 11:05:52 -0400 Received: from zweiblum.travel.kraxel.org (vpn-4-92.str.redhat.com [10.32.4.92]) by pobox.stuttgart.redhat.com (8.13.1/8.13.1) with ESMTP id m6TF5pip005904 for ; Tue, 29 Jul 2008 11:05:51 -0400 Message-ID: <488F31CE.3010109@redhat.com> Date: Tue, 29 Jul 2008 17:05:50 +0200 From: Gerd Hoffmann MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080400000901000603060503" Subject: [Qemu-devel] [patch] update sys-queue.h Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------080400000901000603060503 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi, This patch updates the list implementation(s) in audio/sys-queue.h by grabbing a fresh copy form netbsd and stripping it down a bit. Gives us a few more useful macros for list manipulation and traversal. cheers, Gerd -- http://kraxel.fedorapeople.org/xenner/ --------------080400000901000603060503 Content-Type: text/x-patch; name="0014-Update-sys-queue.h.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="0014-Update-sys-queue.h.patch" RnJvbSA4NzNiMWI2Zjc3MDUyZWNjMTQ0MjU0NTc2NTk4ZDM2OTEwNjZlODI0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNv bT4KRGF0ZTogVHVlLCAyOSBKdWwgMjAwOCAxNTo0OTo0OCArMDIwMApTdWJqZWN0OiBbUEFU Q0ggMTQvMjJdIFVwZGF0ZSBzeXMtcXVldWUuaAoKIC0gZ290IHJlY2VudCBjb3B5IGZyb20g bmV0YnNkLgogLSBkZWxldGVkIGRlYnVnIGNvZGUuCiAtIGRlbGV0ZWQgc29tZSBsaXN0IGlt cGxlbWVudGF0aW9ucywgbGVmdCBpbiBvbmx5IHRoZSBvbmVzIHdoaWNoCiAgIHFlbXUgYWxy ZWFkeSBoYXMuCgpTaWduZWQtb2ZmLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0 LmNvbT4KLS0tCiBhdWRpby9zeXMtcXVldWUuaCB8ICA1NzkgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZXMgY2hhbmdlZCwg MzM4IGluc2VydGlvbnMoKyksIDI0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hdWRp by9zeXMtcXVldWUuaCBiL2F1ZGlvL3N5cy1xdWV1ZS5oCmluZGV4IDViNmUyYTAuLjNkMDc3 M2UgMTAwNjQ0Ci0tLSBhL2F1ZGlvL3N5cy1xdWV1ZS5oCisrKyBiL2F1ZGlvL3N5cy1xdWV1 ZS5oCkBAIC0xLDI0MSArMSwzMzggQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTEsIDE5 OTMKLSAqCVRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBB bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u LgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5h bWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAg d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JT IGBgQVMgSVMnJyBBTkQKLSAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VO VFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotICogRk9SIEFOWSBESVJFQ1QsIElORElS RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK LSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO VCBPRiBTVUJTVElUVVRFIEdPT0RTCi0gKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSAqIEhPV0VWRVIg Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U UkFDVCwgU1RSSUNUCi0gKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0gKiBPVVQgT0YgVEhFIFVT RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ IE9GCi0gKiBTVUNIIERBTUFHRS4KLSAqCi0gKglAKCMpcXVldWUuaAk4LjMgKEJlcmtlbGV5 KSAxMi8xMy85MwotICovCi0KLSNpZm5kZWYJX1NZU19RVUVVRV9ICi0jZGVmaW5lCV9TWVNf UVVFVUVfSCAxCi0KLS8qCi0gKiBUaGlzIGZpbGUgZGVmaW5lcyB0aHJlZSB0eXBlcyBvZiBk YXRhIHN0cnVjdHVyZXM6IGxpc3RzLCB0YWlsIHF1ZXVlcywKLSAqIGFuZCBjaXJjdWxhciBx dWV1ZXMuCi0gKgotICogQSBsaXN0IGlzIGhlYWRlZCBieSBhIHNpbmdsZSBmb3J3YXJkIHBv aW50ZXIgKG9yIGFuIGFycmF5IG9mIGZvcndhcmQKLSAqIHBvaW50ZXJzIGZvciBhIGhhc2gg dGFibGUgaGVhZGVyKS4gVGhlIGVsZW1lbnRzIGFyZSBkb3VibHkgbGlua2VkCi0gKiBzbyB0 aGF0IGFuIGFyYml0cmFyeSBlbGVtZW50IGNhbiBiZSByZW1vdmVkIHdpdGhvdXQgYSBuZWVk IHRvCi0gKiB0cmF2ZXJzZSB0aGUgbGlzdC4gTmV3IGVsZW1lbnRzIGNhbiBiZSBhZGRlZCB0 byB0aGUgbGlzdCBhZnRlcgotICogYW4gZXhpc3RpbmcgZWxlbWVudCBvciBhdCB0aGUgaGVh ZCBvZiB0aGUgbGlzdC4gQSBsaXN0IG1heSBvbmx5IGJlCi0gKiB0cmF2ZXJzZWQgaW4gdGhl IGZvcndhcmQgZGlyZWN0aW9uLgotICoKLSAqIEEgdGFpbCBxdWV1ZSBpcyBoZWFkZWQgYnkg YSBwYWlyIG9mIHBvaW50ZXJzLCBvbmUgdG8gdGhlIGhlYWQgb2YgdGhlCi0gKiBsaXN0IGFu ZCB0aGUgb3RoZXIgdG8gdGhlIHRhaWwgb2YgdGhlIGxpc3QuIFRoZSBlbGVtZW50cyBhcmUg ZG91Ymx5Ci0gKiBsaW5rZWQgc28gdGhhdCBhbiBhcmJpdHJhcnkgZWxlbWVudCBjYW4gYmUg cmVtb3ZlZCB3aXRob3V0IGEgbmVlZCB0bwotICogdHJhdmVyc2UgdGhlIGxpc3QuIE5ldyBl bGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIGxpc3QgYWZ0ZXIKLSAqIGFuIGV4aXN0aW5n IGVsZW1lbnQsIGF0IHRoZSBoZWFkIG9mIHRoZSBsaXN0LCBvciBhdCB0aGUgZW5kIG9mIHRo ZQotICogbGlzdC4gQSB0YWlsIHF1ZXVlIG1heSBvbmx5IGJlIHRyYXZlcnNlZCBpbiB0aGUg Zm9yd2FyZCBkaXJlY3Rpb24uCi0gKgotICogQSBjaXJjbGUgcXVldWUgaXMgaGVhZGVkIGJ5 IGEgcGFpciBvZiBwb2ludGVycywgb25lIHRvIHRoZSBoZWFkIG9mIHRoZQotICogbGlzdCBh bmQgdGhlIG90aGVyIHRvIHRoZSB0YWlsIG9mIHRoZSBsaXN0LiBUaGUgZWxlbWVudHMgYXJl IGRvdWJseQotICogbGlua2VkIHNvIHRoYXQgYW4gYXJiaXRyYXJ5IGVsZW1lbnQgY2FuIGJl IHJlbW92ZWQgd2l0aG91dCBhIG5lZWQgdG8KLSAqIHRyYXZlcnNlIHRoZSBsaXN0LiBOZXcg ZWxlbWVudHMgY2FuIGJlIGFkZGVkIHRvIHRoZSBsaXN0IGJlZm9yZSBvciBhZnRlcgotICog YW4gZXhpc3RpbmcgZWxlbWVudCwgYXQgdGhlIGhlYWQgb2YgdGhlIGxpc3QsIG9yIGF0IHRo ZSBlbmQgb2YgdGhlIGxpc3QuCi0gKiBBIGNpcmNsZSBxdWV1ZSBtYXkgYmUgdHJhdmVyc2Vk IGluIGVpdGhlciBkaXJlY3Rpb24sIGJ1dCBoYXMgYSBtb3JlCi0gKiBjb21wbGV4IGVuZCBv ZiBsaXN0IGRldGVjdGlvbi4KLSAqCi0gKiBGb3IgZGV0YWlscyBvbiB0aGUgdXNlIG9mIHRo ZXNlIG1hY3Jvcywgc2VlIHRoZSBxdWV1ZSgzKSBtYW51YWwgcGFnZS4KLSAqLwotCi0vKgot ICogTGlzdCBkZWZpbml0aW9ucy4KLSAqLwotI2RlZmluZSBMSVNUX0hFQUQobmFtZSwgdHlw ZSkJCQkJCQlcCi1zdHJ1Y3QgbmFtZSB7CQkJCQkJCQlcCi0Jc3RydWN0IHR5cGUgKmxoX2Zp cnN0OwkvKiBmaXJzdCBlbGVtZW50ICovCQkJXAotfQotCi0jZGVmaW5lIExJU1RfRU5UUlko dHlwZSkJCQkJCQlcCi1zdHJ1Y3QgewkJCQkJCQkJXAotCXN0cnVjdCB0eXBlICpsZV9uZXh0 OwkvKiBuZXh0IGVsZW1lbnQgKi8JCQlcCi0Jc3RydWN0IHR5cGUgKipsZV9wcmV2OwkvKiBh ZGRyZXNzIG9mIHByZXZpb3VzIG5leHQgZWxlbWVudCAqLwlcCi19Ci0KLS8qCi0gKiBMaXN0 IGZ1bmN0aW9ucy4KLSAqLwotI2RlZmluZQlMSVNUX0lOSVQoaGVhZCkgewkJCQkJCVwKLQko aGVhZCktPmxoX2ZpcnN0ID0gTlVMTDsJCQkJCVwKLX0KLQotI2RlZmluZSBMSVNUX0lOU0VS VF9BRlRFUihsaXN0ZWxtLCBlbG0sIGZpZWxkKSB7CQkJXAotCWlmICgoKGVsbSktPmZpZWxk LmxlX25leHQgPSAobGlzdGVsbSktPmZpZWxkLmxlX25leHQpICE9IE5VTEwpCVwKLQkJKGxp c3RlbG0pLT5maWVsZC5sZV9uZXh0LT5maWVsZC5sZV9wcmV2ID0JCVwKLQkJICAgICYoZWxt KS0+ZmllbGQubGVfbmV4dDsJCQkJXAotCShsaXN0ZWxtKS0+ZmllbGQubGVfbmV4dCA9IChl bG0pOwkJCQlcCi0JKGVsbSktPmZpZWxkLmxlX3ByZXYgPSAmKGxpc3RlbG0pLT5maWVsZC5s ZV9uZXh0OwkJXAotfQotCi0jZGVmaW5lIExJU1RfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBm aWVsZCkgewkJCQlcCi0JaWYgKCgoZWxtKS0+ZmllbGQubGVfbmV4dCA9IChoZWFkKS0+bGhf Zmlyc3QpICE9IE5VTEwpCQlcCi0JCShoZWFkKS0+bGhfZmlyc3QtPmZpZWxkLmxlX3ByZXYg PSAmKGVsbSktPmZpZWxkLmxlX25leHQ7XAotCShoZWFkKS0+bGhfZmlyc3QgPSAoZWxtKTsJ CQkJCVwKLQkoZWxtKS0+ZmllbGQubGVfcHJldiA9ICYoaGVhZCktPmxoX2ZpcnN0OwkJCVwK LX0KLQotI2RlZmluZSBMSVNUX1JFTU9WRShlbG0sIGZpZWxkKSB7CQkJCQlcCi0JaWYgKChl bG0pLT5maWVsZC5sZV9uZXh0ICE9IE5VTEwpCQkJCVwKLQkJKGVsbSktPmZpZWxkLmxlX25l eHQtPmZpZWxkLmxlX3ByZXYgPSAJCQlcCi0JCSAgICAoZWxtKS0+ZmllbGQubGVfcHJldjsJ CQkJXAotCSooZWxtKS0+ZmllbGQubGVfcHJldiA9IChlbG0pLT5maWVsZC5sZV9uZXh0OwkJ CVwKLX0KLQotLyoKLSAqIFRhaWwgcXVldWUgZGVmaW5pdGlvbnMuCi0gKi8KLSNkZWZpbmUg VEFJTFFfSEVBRChuYW1lLCB0eXBlKQkJCQkJCVwKLXN0cnVjdCBuYW1lIHsJCQkJCQkJCVwK LQlzdHJ1Y3QgdHlwZSAqdHFoX2ZpcnN0OwkvKiBmaXJzdCBlbGVtZW50ICovCQkJXAotCXN0 cnVjdCB0eXBlICoqdHFoX2xhc3Q7CS8qIGFkZHIgb2YgbGFzdCBuZXh0IGVsZW1lbnQgKi8J CVwKLX0KLQotI2RlZmluZSBUQUlMUV9FTlRSWSh0eXBlKQkJCQkJCVwKLXN0cnVjdCB7CQkJ CQkJCQlcCi0Jc3RydWN0IHR5cGUgKnRxZV9uZXh0OwkvKiBuZXh0IGVsZW1lbnQgKi8JCQlc Ci0Jc3RydWN0IHR5cGUgKip0cWVfcHJldjsJLyogYWRkcmVzcyBvZiBwcmV2aW91cyBuZXh0 IGVsZW1lbnQgKi8JXAotfQotCi0vKgotICogVGFpbCBxdWV1ZSBmdW5jdGlvbnMuCi0gKi8K LSNkZWZpbmUJVEFJTFFfSU5JVChoZWFkKSB7CQkJCQkJXAotCShoZWFkKS0+dHFoX2ZpcnN0 ID0gTlVMTDsJCQkJCVwKLQkoaGVhZCktPnRxaF9sYXN0ID0gJihoZWFkKS0+dHFoX2ZpcnN0 OwkJCQlcCi19Ci0KLSNkZWZpbmUgVEFJTFFfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBmaWVs ZCkgewkJCQlcCi0JaWYgKCgoZWxtKS0+ZmllbGQudHFlX25leHQgPSAoaGVhZCktPnRxaF9m aXJzdCkgIT0gTlVMTCkJXAotCQkoZWxtKS0+ZmllbGQudHFlX25leHQtPmZpZWxkLnRxZV9w cmV2ID0JCQlcCi0JCSAgICAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OwkJCQlcCi0JZWxzZQkJ CQkJCQkJXAotCQkoaGVhZCktPnRxaF9sYXN0ID0gJihlbG0pLT5maWVsZC50cWVfbmV4dDsJ CVwKLQkoaGVhZCktPnRxaF9maXJzdCA9IChlbG0pOwkJCQkJXAotCShlbG0pLT5maWVsZC50 cWVfcHJldiA9ICYoaGVhZCktPnRxaF9maXJzdDsJCQlcCi19Ci0KLSNkZWZpbmUgVEFJTFFf SU5TRVJUX1RBSUwoaGVhZCwgZWxtLCBmaWVsZCkgewkJCQlcCi0JKGVsbSktPmZpZWxkLnRx ZV9uZXh0ID0gTlVMTDsJCQkJCVwKLQkoZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAoaGVhZCkt PnRxaF9sYXN0OwkJCVwKLQkqKGhlYWQpLT50cWhfbGFzdCA9IChlbG0pOwkJCQkJXAotCSho ZWFkKS0+dHFoX2xhc3QgPSAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OwkJCVwKLX0KLQotI2Rl ZmluZSBUQUlMUV9JTlNFUlRfQUZURVIoaGVhZCwgbGlzdGVsbSwgZWxtLCBmaWVsZCkgewkJ CVwKLQlpZiAoKChlbG0pLT5maWVsZC50cWVfbmV4dCA9IChsaXN0ZWxtKS0+ZmllbGQudHFl X25leHQpICE9IE5VTEwpXAotCQkoZWxtKS0+ZmllbGQudHFlX25leHQtPmZpZWxkLnRxZV9w cmV2ID0gCQlcCi0JCSAgICAmKGVsbSktPmZpZWxkLnRxZV9uZXh0OwkJCQlcCi0JZWxzZQkJ CQkJCQkJXAotCQkoaGVhZCktPnRxaF9sYXN0ID0gJihlbG0pLT5maWVsZC50cWVfbmV4dDsJ CVwKLQkobGlzdGVsbSktPmZpZWxkLnRxZV9uZXh0ID0gKGVsbSk7CQkJCVwKLQkoZWxtKS0+ ZmllbGQudHFlX3ByZXYgPSAmKGxpc3RlbG0pLT5maWVsZC50cWVfbmV4dDsJCVwKLX0KLQot I2RlZmluZSBUQUlMUV9SRU1PVkUoaGVhZCwgZWxtLCBmaWVsZCkgewkJCQlcCi0JaWYgKCgo ZWxtKS0+ZmllbGQudHFlX25leHQpICE9IE5VTEwpCQkJCVwKLQkJKGVsbSktPmZpZWxkLnRx ZV9uZXh0LT5maWVsZC50cWVfcHJldiA9IAkJXAotCQkgICAgKGVsbSktPmZpZWxkLnRxZV9w cmV2OwkJCQlcCi0JZWxzZQkJCQkJCQkJXAotCQkoaGVhZCktPnRxaF9sYXN0ID0gKGVsbSkt PmZpZWxkLnRxZV9wcmV2OwkJXAotCSooZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAoZWxtKS0+ ZmllbGQudHFlX25leHQ7CQkJXAotfQotCi0vKgotICogQ2lyY3VsYXIgcXVldWUgZGVmaW5p dGlvbnMuCi0gKi8KLSNkZWZpbmUgQ0lSQ0xFUV9IRUFEKG5hbWUsIHR5cGUpCQkJCQlcCi1z dHJ1Y3QgbmFtZSB7CQkJCQkJCQlcCi0Jc3RydWN0IHR5cGUgKmNxaF9maXJzdDsJCS8qIGZp cnN0IGVsZW1lbnQgKi8JCVwKLQlzdHJ1Y3QgdHlwZSAqY3FoX2xhc3Q7CQkvKiBsYXN0IGVs ZW1lbnQgKi8JCVwKLX0KLQotI2RlZmluZSBDSVJDTEVRX0VOVFJZKHR5cGUpCQkJCQkJXAot c3RydWN0IHsJCQkJCQkJCVwKLQlzdHJ1Y3QgdHlwZSAqY3FlX25leHQ7CQkvKiBuZXh0IGVs ZW1lbnQgKi8JCVwKLQlzdHJ1Y3QgdHlwZSAqY3FlX3ByZXY7CQkvKiBwcmV2aW91cyBlbGVt ZW50ICovCQlcCi19Ci0KLS8qCi0gKiBDaXJjdWxhciBxdWV1ZSBmdW5jdGlvbnMuCi0gKi8K LSNkZWZpbmUJQ0lSQ0xFUV9JTklUKGhlYWQpIHsJCQkJCQlcCi0JKGhlYWQpLT5jcWhfZmly c3QgPSAodm9pZCAqKShoZWFkKTsJCQkJXAotCShoZWFkKS0+Y3FoX2xhc3QgPSAodm9pZCAq KShoZWFkKTsJCQkJXAotfQotCi0jZGVmaW5lIENJUkNMRVFfSU5TRVJUX0FGVEVSKGhlYWQs IGxpc3RlbG0sIGVsbSwgZmllbGQpIHsJCVwKLQkoZWxtKS0+ZmllbGQuY3FlX25leHQgPSAo bGlzdGVsbSktPmZpZWxkLmNxZV9uZXh0OwkJXAotCShlbG0pLT5maWVsZC5jcWVfcHJldiA9 IChsaXN0ZWxtKTsJCQkJXAotCWlmICgobGlzdGVsbSktPmZpZWxkLmNxZV9uZXh0ID09ICh2 b2lkICopKGhlYWQpKQkJXAotCQkoaGVhZCktPmNxaF9sYXN0ID0gKGVsbSk7CQkJCVwKLQll bHNlCQkJCQkJCQlcCi0JCShsaXN0ZWxtKS0+ZmllbGQuY3FlX25leHQtPmZpZWxkLmNxZV9w cmV2ID0gKGVsbSk7CVwKLQkobGlzdGVsbSktPmZpZWxkLmNxZV9uZXh0ID0gKGVsbSk7CQkJ CVwKLX0KLQotI2RlZmluZSBDSVJDTEVRX0lOU0VSVF9CRUZPUkUoaGVhZCwgbGlzdGVsbSwg ZWxtLCBmaWVsZCkgewkJXAotCShlbG0pLT5maWVsZC5jcWVfbmV4dCA9IChsaXN0ZWxtKTsJ CQkJXAotCShlbG0pLT5maWVsZC5jcWVfcHJldiA9IChsaXN0ZWxtKS0+ZmllbGQuY3FlX3By ZXY7CQlcCi0JaWYgKChsaXN0ZWxtKS0+ZmllbGQuY3FlX3ByZXYgPT0gKHZvaWQgKikoaGVh ZCkpCQlcCi0JCShoZWFkKS0+Y3FoX2ZpcnN0ID0gKGVsbSk7CQkJCVwKLQllbHNlCQkJCQkJ CQlcCi0JCShsaXN0ZWxtKS0+ZmllbGQuY3FlX3ByZXYtPmZpZWxkLmNxZV9uZXh0ID0gKGVs bSk7CVwKLQkobGlzdGVsbSktPmZpZWxkLmNxZV9wcmV2ID0gKGVsbSk7CQkJCVwKLX0KLQot I2RlZmluZSBDSVJDTEVRX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpIHsJCQkJXAot CShlbG0pLT5maWVsZC5jcWVfbmV4dCA9IChoZWFkKS0+Y3FoX2ZpcnN0OwkJCVwKLQkoZWxt KS0+ZmllbGQuY3FlX3ByZXYgPSAodm9pZCAqKShoZWFkKTsJCQkJXAotCWlmICgoaGVhZCkt PmNxaF9sYXN0ID09ICh2b2lkICopKGhlYWQpKQkJCQlcCi0JCShoZWFkKS0+Y3FoX2xhc3Qg PSAoZWxtKTsJCQkJXAotCWVsc2UJCQkJCQkJCVwKLQkJKGhlYWQpLT5jcWhfZmlyc3QtPmZp ZWxkLmNxZV9wcmV2ID0gKGVsbSk7CQlcCi0JKGhlYWQpLT5jcWhfZmlyc3QgPSAoZWxtKTsJ CQkJCVwKLX0KLQotI2RlZmluZSBDSVJDTEVRX0lOU0VSVF9UQUlMKGhlYWQsIGVsbSwgZmll bGQpIHsJCQkJXAotCShlbG0pLT5maWVsZC5jcWVfbmV4dCA9ICh2b2lkICopKGhlYWQpOwkJ CQlcCi0JKGVsbSktPmZpZWxkLmNxZV9wcmV2ID0gKGhlYWQpLT5jcWhfbGFzdDsJCQlcCi0J aWYgKChoZWFkKS0+Y3FoX2ZpcnN0ID09ICh2b2lkICopKGhlYWQpKQkJCVwKLQkJKGhlYWQp LT5jcWhfZmlyc3QgPSAoZWxtKTsJCQkJXAotCWVsc2UJCQkJCQkJCVwKLQkJKGhlYWQpLT5j cWhfbGFzdC0+ZmllbGQuY3FlX25leHQgPSAoZWxtKTsJCVwKLQkoaGVhZCktPmNxaF9sYXN0 ID0gKGVsbSk7CQkJCQlcCi19Ci0KLSNkZWZpbmUJQ0lSQ0xFUV9SRU1PVkUoaGVhZCwgZWxt LCBmaWVsZCkgewkJCQlcCi0JaWYgKChlbG0pLT5maWVsZC5jcWVfbmV4dCA9PSAodm9pZCAq KShoZWFkKSkJCQlcCi0JCShoZWFkKS0+Y3FoX2xhc3QgPSAoZWxtKS0+ZmllbGQuY3FlX3By ZXY7CQlcCi0JZWxzZQkJCQkJCQkJXAotCQkoZWxtKS0+ZmllbGQuY3FlX25leHQtPmZpZWxk LmNxZV9wcmV2ID0JCQlcCi0JCSAgICAoZWxtKS0+ZmllbGQuY3FlX3ByZXY7CQkJCVwKLQlp ZiAoKGVsbSktPmZpZWxkLmNxZV9wcmV2ID09ICh2b2lkICopKGhlYWQpKQkJCVwKLQkJKGhl YWQpLT5jcWhfZmlyc3QgPSAoZWxtKS0+ZmllbGQuY3FlX25leHQ7CQlcCi0JZWxzZQkJCQkJ CQkJXAotCQkoZWxtKS0+ZmllbGQuY3FlX3ByZXYtPmZpZWxkLmNxZV9uZXh0ID0JCQlcCi0J CSAgICAoZWxtKS0+ZmllbGQuY3FlX25leHQ7CQkJCVwKLX0KLSNlbmRpZgkvKiBzeXMvcXVl dWUuaCAqLworLyogICAgICAkTmV0QlNEOiBxdWV1ZS5oLHYgMS40NS4xNC4xIDIwMDcvMDcv MTggMjA6MTM6MjQgbGlhbWpmb3kgRXhwICQgKi8NCisNCisvKg0KKyAqIFFlbXUgdmVyc2lv bjogQ29weSBmcm9tIG5ldGJzZCwgcmVtb3ZlZCBkZWJ1ZyBjb2RlLCByZW1vdmVkIHNvbWUg b2YNCisgKiB0aGUgaW1wbGVtZW50YXRpb25zLiAgTGVmdCBpbiBsaXN0cywgdGFpbCBxdWV1 ZXMgYW5kIGNpcmN1bGFyIHF1ZXVlcy4NCisgKi8NCisNCisvKg0KKyAqIENvcHlyaWdodCAo YykgMTk5MSwgMTk5Mw0KKyAqICAgICAgVGhlIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkg b2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBSZWRpc3Ry aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp dGhvdXQNCisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCisgKiBhcmUgbWV0Og0KKyAqIDEuIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0 DQorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv d2luZyBkaXNjbGFpbWVyLg0KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQorICogICAgbm90aWNlLCB0 aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu IHRoZQ0KKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92 aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uDQorICogMy4gTmVpdGhlciB0aGUgbmFtZSBv ZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMNCisg KiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl ZCBmcm9tIHRoaXMgc29mdHdhcmUNCisgKiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy aXR0ZW4gcGVybWlzc2lvbi4NCisgKg0KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg QlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EDQorICogQU5Z IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN SVRFRCBUTywgVEhFDQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCisgKiBBUkUgRElTQ0xB SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBC RSBMSUFCTEUNCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTA0KKyAqIERBTUFHRVMgKElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP T0RTDQorICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pDQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QNCisg KiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT RSkgQVJJU0lORyBJTiBBTlkgV0FZDQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRg0KKyAqIFNVQ0gg REFNQUdFLg0KKyAqDQorICogICAgICBAKCMpcXVldWUuaCAgICAgOC41IChCZXJrZWxleSkg OC8yMC85NA0KKyAqLw0KKw0KKyNpZm5kZWYgX1NZU19RVUVVRV9IXw0KKyNkZWZpbmUgX1NZ U19RVUVVRV9IXw0KKw0KKy8qDQorICogVGhpcyBmaWxlIGRlZmluZXMgdGhyZWUgdHlwZXMg b2YgZGF0YSBzdHJ1Y3R1cmVzOg0KKyAqIGxpc3RzLCB0YWlsIHF1ZXVlcywgYW5kIGNpcmN1 bGFyIHF1ZXVlcy4NCisgKg0KKyAqIEEgbGlzdCBpcyBoZWFkZWQgYnkgYSBzaW5nbGUgZm9y d2FyZCBwb2ludGVyIChvciBhbiBhcnJheSBvZiBmb3J3YXJkDQorICogcG9pbnRlcnMgZm9y IGEgaGFzaCB0YWJsZSBoZWFkZXIpLiBUaGUgZWxlbWVudHMgYXJlIGRvdWJseSBsaW5rZWQN CisgKiBzbyB0aGF0IGFuIGFyYml0cmFyeSBlbGVtZW50IGNhbiBiZSByZW1vdmVkIHdpdGhv dXQgYSBuZWVkIHRvDQorICogdHJhdmVyc2UgdGhlIGxpc3QuIE5ldyBlbGVtZW50cyBjYW4g YmUgYWRkZWQgdG8gdGhlIGxpc3QgYmVmb3JlDQorICogb3IgYWZ0ZXIgYW4gZXhpc3Rpbmcg ZWxlbWVudCBvciBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdC4gQSBsaXN0DQorICogbWF5IG9u bHkgYmUgdHJhdmVyc2VkIGluIHRoZSBmb3J3YXJkIGRpcmVjdGlvbi4NCisgKg0KKyAqIEEg dGFpbCBxdWV1ZSBpcyBoZWFkZWQgYnkgYSBwYWlyIG9mIHBvaW50ZXJzLCBvbmUgdG8gdGhl IGhlYWQgb2YgdGhlDQorICogbGlzdCBhbmQgdGhlIG90aGVyIHRvIHRoZSB0YWlsIG9mIHRo ZSBsaXN0LiBUaGUgZWxlbWVudHMgYXJlIGRvdWJseQ0KKyAqIGxpbmtlZCBzbyB0aGF0IGFu IGFyYml0cmFyeSBlbGVtZW50IGNhbiBiZSByZW1vdmVkIHdpdGhvdXQgYSBuZWVkIHRvDQor ICogdHJhdmVyc2UgdGhlIGxpc3QuIE5ldyBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhl IGxpc3QgYmVmb3JlIG9yDQorICogYWZ0ZXIgYW4gZXhpc3RpbmcgZWxlbWVudCwgYXQgdGhl IGhlYWQgb2YgdGhlIGxpc3QsIG9yIGF0IHRoZSBlbmQgb2YNCisgKiB0aGUgbGlzdC4gQSB0 YWlsIHF1ZXVlIG1heSBiZSB0cmF2ZXJzZWQgaW4gZWl0aGVyIGRpcmVjdGlvbi4NCisgKg0K KyAqIEEgY2lyY2xlIHF1ZXVlIGlzIGhlYWRlZCBieSBhIHBhaXIgb2YgcG9pbnRlcnMsIG9u ZSB0byB0aGUgaGVhZCBvZiB0aGUNCisgKiBsaXN0IGFuZCB0aGUgb3RoZXIgdG8gdGhlIHRh aWwgb2YgdGhlIGxpc3QuIFRoZSBlbGVtZW50cyBhcmUgZG91Ymx5DQorICogbGlua2VkIHNv IHRoYXQgYW4gYXJiaXRyYXJ5IGVsZW1lbnQgY2FuIGJlIHJlbW92ZWQgd2l0aG91dCBhIG5l ZWQgdG8NCisgKiB0cmF2ZXJzZSB0aGUgbGlzdC4gTmV3IGVsZW1lbnRzIGNhbiBiZSBhZGRl ZCB0byB0aGUgbGlzdCBiZWZvcmUgb3IgYWZ0ZXINCisgKiBhbiBleGlzdGluZyBlbGVtZW50 LCBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdCwgb3IgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdC4N CisgKiBBIGNpcmNsZSBxdWV1ZSBtYXkgYmUgdHJhdmVyc2VkIGluIGVpdGhlciBkaXJlY3Rp b24sIGJ1dCBoYXMgYSBtb3JlDQorICogY29tcGxleCBlbmQgb2YgbGlzdCBkZXRlY3Rpb24u DQorICoNCisgKiBGb3IgZGV0YWlscyBvbiB0aGUgdXNlIG9mIHRoZXNlIG1hY3Jvcywgc2Vl IHRoZSBxdWV1ZSgzKSBtYW51YWwgcGFnZS4NCisgKi8NCisNCisvKg0KKyAqIExpc3QgZGVm aW5pdGlvbnMuDQorICovDQorI2RlZmluZSBMSVNUX0hFQUQobmFtZSwgdHlwZSkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KK3N0cnVjdCBuYW1lIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCisgICAgICAgIHN0cnVjdCB0eXBlICpsaF9maXJzdDsgIC8qIGZpcnN0IGVsZW1l bnQgKi8gICAgICAgICAgICAgICAgICAgICBcDQorfQ0KKw0KKyNkZWZpbmUgTElTVF9IRUFE X0lOSVRJQUxJWkVSKGhlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCisgICAgICAgIHsgTlVMTCB9DQorDQorI2RlZmluZSBMSVNUX0VOVFJZKHR5cGUpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KK3N0cnVj dCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCisgICAgICAgIHN0cnVjdCB0eXBlICpsZV9uZXh0OyAgIC8qIG5l eHQgZWxlbWVudCAqLyAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBzdHJ1Y3Qg dHlwZSAqKmxlX3ByZXY7ICAvKiBhZGRyZXNzIG9mIHByZXZpb3VzIG5leHQgZWxlbWVudCAq LyAgXA0KK30NCisNCisvKg0KKyAqIExpc3QgZnVuY3Rpb25zLg0KKyAqLw0KKyNkZWZpbmUg TElTVF9JTklUKGhlYWQpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCisgICAgICAgIChoZWFkKS0+bGhfZmlyc3QgPSBOVUxMOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorfSB3aGlsZSAoLypDT05TVENP TkQqLzApDQorDQorI2RlZmluZSBMSVNUX0lOU0VSVF9BRlRFUihsaXN0ZWxtLCBlbG0sIGZp ZWxkKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgaWYgKCgoZWxtKS0+ ZmllbGQubGVfbmV4dCA9IChsaXN0ZWxtKS0+ZmllbGQubGVfbmV4dCkgIT0gTlVMTCkgIFwN CisgICAgICAgICAgICAgICAgKGxpc3RlbG0pLT5maWVsZC5sZV9uZXh0LT5maWVsZC5sZV9w cmV2ID0gICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgICAgICAmKGVsbSktPmZp ZWxkLmxlX25leHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAg KGxpc3RlbG0pLT5maWVsZC5sZV9uZXh0ID0gKGVsbSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCisgICAgICAgIChlbG0pLT5maWVsZC5sZV9wcmV2ID0gJihsaXN0ZWxt KS0+ZmllbGQubGVfbmV4dDsgICAgICAgICAgICAgICBcDQorfSB3aGlsZSAoLypDT05TVENP TkQqLzApDQorDQorI2RlZmluZSBMSVNUX0lOU0VSVF9CRUZPUkUobGlzdGVsbSwgZWxtLCBm aWVsZCkgZG8geyAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKGVsbSktPmZpZWxk LmxlX3ByZXYgPSAobGlzdGVsbSktPmZpZWxkLmxlX3ByZXY7ICAgICAgICAgICAgICAgIFwN CisgICAgICAgIChlbG0pLT5maWVsZC5sZV9uZXh0ID0gKGxpc3RlbG0pOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAqKGxpc3RlbG0pLT5maWVsZC5sZV9w cmV2ID0gKGVsbSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAg KGxpc3RlbG0pLT5maWVsZC5sZV9wcmV2ID0gJihlbG0pLT5maWVsZC5sZV9uZXh0OyAgICAg ICAgICAgICAgIFwNCit9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkNCisNCisjZGVmaW5lIExJ U1RfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgICAgICAg ICAgICAgICBcDQorICAgICAgICBpZiAoKChlbG0pLT5maWVsZC5sZV9uZXh0ID0gKGhlYWQp LT5saF9maXJzdCkgIT0gTlVMTCkgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAoaGVh ZCktPmxoX2ZpcnN0LT5maWVsZC5sZV9wcmV2ID0gJihlbG0pLT5maWVsZC5sZV9uZXh0O1wN CisgICAgICAgIChoZWFkKS0+bGhfZmlyc3QgPSAoZWxtKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAoZWxtKS0+ZmllbGQubGVfcHJldiA9 ICYoaGVhZCktPmxoX2ZpcnN0OyAgICAgICAgICAgICAgICAgICAgICAgXA0KK30gd2hpbGUg KC8qQ09OU1RDT05EKi8wKQ0KKw0KKyNkZWZpbmUgTElTVF9SRU1PVkUoZWxtLCBmaWVsZCkg ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIGlm ICgoZWxtKS0+ZmllbGQubGVfbmV4dCAhPSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQorICAgICAgICAgICAgICAgIChlbG0pLT5maWVsZC5sZV9uZXh0LT5maWVs ZC5sZV9wcmV2ID0gICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAgICAg KGVsbSktPmZpZWxkLmxlX3ByZXY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN CisgICAgICAgICooZWxtKS0+ZmllbGQubGVfcHJldiA9IChlbG0pLT5maWVsZC5sZV9uZXh0 OyAgICAgICAgICAgICAgICAgICBcDQorfSB3aGlsZSAoLypDT05TVENPTkQqLzApDQorDQor I2RlZmluZSBMSVNUX0ZPUkVBQ0godmFyLCBoZWFkLCBmaWVsZCkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgZm9yICgodmFyKSA9ICgoaGVhZCktPmxo X2ZpcnN0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAg ICAgICAgKHZhcik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQorICAgICAgICAgICAgICAgICh2YXIpID0gKCh2YXIpLT5maWVsZC5sZV9u ZXh0KSkNCisNCisvKg0KKyAqIExpc3QgYWNjZXNzIG1ldGhvZHMuDQorICovDQorI2RlZmlu ZSBMSVNUX0VNUFRZKGhlYWQpICAgICAgICAgICAgICAgICgoaGVhZCktPmxoX2ZpcnN0ID09 IE5VTEwpDQorI2RlZmluZSBMSVNUX0ZJUlNUKGhlYWQpICAgICAgICAgICAgICAgICgoaGVh ZCktPmxoX2ZpcnN0KQ0KKyNkZWZpbmUgTElTVF9ORVhUKGVsbSwgZmllbGQpICAgICAgICAg ICAoKGVsbSktPmZpZWxkLmxlX25leHQpDQorDQorDQorLyoNCisgKiBUYWlsIHF1ZXVlIGRl ZmluaXRpb25zLg0KKyAqLw0KKyNkZWZpbmUgX1RBSUxRX0hFQUQobmFtZSwgdHlwZSwgcXVh bCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCitzdHJ1Y3QgbmFtZSB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQorICAgICAgICBxdWFsIHR5cGUgKnRxaF9maXJzdDsgICAgICAgICAgIC8qIGZp cnN0IGVsZW1lbnQgKi8gICAgICAgICAgICAgXA0KKyAgICAgICAgcXVhbCB0eXBlICpxdWFs ICp0cWhfbGFzdDsgICAgICAvKiBhZGRyIG9mIGxhc3QgbmV4dCBlbGVtZW50ICovIFwNCit9 DQorI2RlZmluZSBUQUlMUV9IRUFEKG5hbWUsIHR5cGUpICBfVEFJTFFfSEVBRChuYW1lLCBz dHJ1Y3QgdHlwZSwpDQorDQorI2RlZmluZSBUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgeyBOVUxM LCAmKGhlYWQpLnRxaF9maXJzdCB9DQorDQorI2RlZmluZSBfVEFJTFFfRU5UUlkodHlwZSwg cXVhbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KK3N0cnVj dCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCisgICAgICAgIHF1YWwgdHlwZSAqdHFlX25leHQ7ICAgICAgICAg ICAgLyogbmV4dCBlbGVtZW50ICovICAgICAgICAgICAgICBcDQorICAgICAgICBxdWFsIHR5 cGUgKnF1YWwgKnRxZV9wcmV2OyAgICAgIC8qIGFkZHJlc3Mgb2YgcHJldmlvdXMgbmV4dCBl bGVtZW50ICovXA0KK30NCisjZGVmaW5lIFRBSUxRX0VOVFJZKHR5cGUpICAgICAgIF9UQUlM UV9FTlRSWShzdHJ1Y3QgdHlwZSwpDQorDQorLyoNCisgKiBUYWlsIHF1ZXVlIGZ1bmN0aW9u cy4NCisgKi8NCisjZGVmaW5lIFRBSUxRX0lOSVQoaGVhZCkgZG8geyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAoaGVhZCktPnRxaF9m aXJzdCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K KyAgICAgICAgKGhlYWQpLT50cWhfbGFzdCA9ICYoaGVhZCktPnRxaF9maXJzdDsgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCit9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkNCisNCisj ZGVmaW5lIFRBSUxRX0lOU0VSVF9IRUFEKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsgICAgICAg ICAgICAgICAgICAgICAgICBcDQorICAgICAgICBpZiAoKChlbG0pLT5maWVsZC50cWVfbmV4 dCA9IChoZWFkKS0+dHFoX2ZpcnN0KSAhPSBOVUxMKSAgICAgICAgXA0KKyAgICAgICAgICAg ICAgICAoaGVhZCktPnRxaF9maXJzdC0+ZmllbGQudHFlX3ByZXYgPSAgICAgICAgICAgICAg ICAgICAgIFwNCisgICAgICAgICAgICAgICAgICAgICYoZWxtKS0+ZmllbGQudHFlX25leHQ7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBlbHNlICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K KyAgICAgICAgICAgICAgICAoaGVhZCktPnRxaF9sYXN0ID0gJihlbG0pLT5maWVsZC50cWVf bmV4dDsgICAgICAgICAgICAgIFwNCisgICAgICAgIChoZWFkKS0+dHFoX2ZpcnN0ID0gKGVs bSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAo ZWxtKS0+ZmllbGQudHFlX3ByZXYgPSAmKGhlYWQpLT50cWhfZmlyc3Q7ICAgICAgICAgICAg ICAgICAgICAgXA0KK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQ0KKw0KKyNkZWZpbmUgVEFJ TFFfSU5TRVJUX1RBSUwoaGVhZCwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgICAgICAg ICAgICAgIFwNCisgICAgICAgIChlbG0pLT5maWVsZC50cWVfbmV4dCA9IE5VTEw7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAoZWxtKS0+ZmllbGQu dHFlX3ByZXYgPSAoaGVhZCktPnRxaF9sYXN0OyAgICAgICAgICAgICAgICAgICAgICAgXA0K KyAgICAgICAgKihoZWFkKS0+dHFoX2xhc3QgPSAoZWxtKTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIChoZWFkKS0+dHFoX2xhc3QgPSAmKGVs bSktPmZpZWxkLnRxZV9uZXh0OyAgICAgICAgICAgICAgICAgICAgICBcDQorfSB3aGlsZSAo LypDT05TVENPTkQqLzApDQorDQorI2RlZmluZSBUQUlMUV9JTlNFUlRfQUZURVIoaGVhZCwg bGlzdGVsbSwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgICAgXA0KKyAgICAgICAgaWYg KCgoZWxtKS0+ZmllbGQudHFlX25leHQgPSAobGlzdGVsbSktPmZpZWxkLnRxZV9uZXh0KSAh PSBOVUxMKVwNCisgICAgICAgICAgICAgICAgKGVsbSktPmZpZWxkLnRxZV9uZXh0LT5maWVs ZC50cWVfcHJldiA9ICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgICAgICAm KGVsbSktPmZpZWxkLnRxZV9uZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K KyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKGhlYWQpLT50cWhfbGFz dCA9ICYoZWxtKS0+ZmllbGQudHFlX25leHQ7ICAgICAgICAgICAgICBcDQorICAgICAgICAo bGlzdGVsbSktPmZpZWxkLnRxZV9uZXh0ID0gKGVsbSk7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KKyAgICAgICAgKGVsbSktPmZpZWxkLnRxZV9wcmV2ID0gJihsaXN0ZWxt KS0+ZmllbGQudHFlX25leHQ7ICAgICAgICAgICAgIFwNCit9IHdoaWxlICgvKkNPTlNUQ09O RCovMCkNCisNCisjZGVmaW5lIFRBSUxRX0lOU0VSVF9CRUZPUkUobGlzdGVsbSwgZWxtLCBm aWVsZCkgZG8geyAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAoZWxtKS0+ZmllbGQu dHFlX3ByZXYgPSAobGlzdGVsbSktPmZpZWxkLnRxZV9wcmV2OyAgICAgICAgICAgICAgXA0K KyAgICAgICAgKGVsbSktPmZpZWxkLnRxZV9uZXh0ID0gKGxpc3RlbG0pOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICoobGlzdGVsbSktPmZpZWxkLnRxZV9w cmV2ID0gKGVsbSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAo bGlzdGVsbSktPmZpZWxkLnRxZV9wcmV2ID0gJihlbG0pLT5maWVsZC50cWVfbmV4dDsgICAg ICAgICAgICAgXA0KK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQ0KKw0KKyNkZWZpbmUgVEFJ TFFfUkVNT1ZFKGhlYWQsIGVsbSwgZmllbGQpIGRvIHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCisgICAgICAgIGlmICgoKGVsbSktPmZpZWxkLnRxZV9uZXh0KSAhPSBOVUxM KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgIChlbG0p LT5maWVsZC50cWVfbmV4dC0+ZmllbGQudHFlX3ByZXYgPSAgICAgICAgICAgICAgICAgXA0K KyAgICAgICAgICAgICAgICAgICAgKGVsbSktPmZpZWxkLnRxZV9wcmV2OyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAg ICAgICAgIChoZWFkKS0+dHFoX2xhc3QgPSAoZWxtKS0+ZmllbGQudHFlX3ByZXY7ICAgICAg ICAgICAgICAgXA0KKyAgICAgICAgKihlbG0pLT5maWVsZC50cWVfcHJldiA9IChlbG0pLT5m aWVsZC50cWVfbmV4dDsgICAgICAgICAgICAgICAgIFwNCit9IHdoaWxlICgvKkNPTlNUQ09O RCovMCkNCisNCisjZGVmaW5lIFRBSUxRX0ZPUkVBQ0godmFyLCBoZWFkLCBmaWVsZCkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBmb3IgKCh2YXIpID0g KChoZWFkKS0+dHFoX2ZpcnN0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K KyAgICAgICAgICAgICAgICAodmFyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKHZhcikgPSAoKHZhcikt PmZpZWxkLnRxZV9uZXh0KSkNCisNCisjZGVmaW5lIFRBSUxRX0ZPUkVBQ0hfUkVWRVJTRSh2 YXIsIGhlYWQsIGhlYWRuYW1lLCBmaWVsZCkgICAgICAgICAgICAgICBcDQorICAgICAgICBm b3IgKCh2YXIpID0gKCooKChzdHJ1Y3QgaGVhZG5hbWUgKikoKGhlYWQpLT50cWhfbGFzdCkp LT50cWhfbGFzdCkpOyAgICBcDQorICAgICAgICAgICAgICAgICh2YXIpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAg ICAgICAodmFyKSA9ICgqKCgoc3RydWN0IGhlYWRuYW1lICopKCh2YXIpLT5maWVsZC50cWVf cHJldikpLT50cWhfbGFzdCkpKQ0KKw0KKy8qDQorICogVGFpbCBxdWV1ZSBhY2Nlc3MgbWV0 aG9kcy4NCisgKi8NCisjZGVmaW5lIFRBSUxRX0VNUFRZKGhlYWQpICAgICAgICAgICAgICAg KChoZWFkKS0+dHFoX2ZpcnN0ID09IE5VTEwpDQorI2RlZmluZSBUQUlMUV9GSVJTVChoZWFk KSAgICAgICAgICAgICAgICgoaGVhZCktPnRxaF9maXJzdCkNCisjZGVmaW5lIFRBSUxRX05F WFQoZWxtLCBmaWVsZCkgICAgICAgICAgKChlbG0pLT5maWVsZC50cWVfbmV4dCkNCisNCisj ZGVmaW5lIFRBSUxRX0xBU1QoaGVhZCwgaGVhZG5hbWUpIFwNCisgICAgICAgICgqKCgoc3Ry dWN0IGhlYWRuYW1lICopKChoZWFkKS0+dHFoX2xhc3QpKS0+dHFoX2xhc3QpKQ0KKyNkZWZp bmUgVEFJTFFfUFJFVihlbG0sIGhlYWRuYW1lLCBmaWVsZCkgXA0KKyAgICAgICAgKCooKChz dHJ1Y3QgaGVhZG5hbWUgKikoKGVsbSktPmZpZWxkLnRxZV9wcmV2KSktPnRxaF9sYXN0KSkN CisNCisNCisvKg0KKyAqIENpcmN1bGFyIHF1ZXVlIGRlZmluaXRpb25zLg0KKyAqLw0KKyNk ZWZpbmUgQ0lSQ0xFUV9IRUFEKG5hbWUsIHR5cGUpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCitzdHJ1Y3QgbmFtZSB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBzdHJ1 Y3QgdHlwZSAqY3FoX2ZpcnN0OyAgICAgICAgIC8qIGZpcnN0IGVsZW1lbnQgKi8gICAgICAg ICAgICAgXA0KKyAgICAgICAgc3RydWN0IHR5cGUgKmNxaF9sYXN0OyAgICAgICAgICAvKiBs YXN0IGVsZW1lbnQgKi8gICAgICAgICAgICAgIFwNCit9DQorDQorI2RlZmluZSBDSVJDTEVR X0hFQURfSU5JVElBTElaRVIoaGVhZCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KKyAgICAgICAgeyAodm9pZCAqKSZoZWFkLCAodm9pZCAqKSZoZWFkIH0NCisNCisj ZGVmaW5lIENJUkNMRVFfRU5UUlkodHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQorc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgc3Ry dWN0IHR5cGUgKmNxZV9uZXh0OyAgICAgICAgICAvKiBuZXh0IGVsZW1lbnQgKi8gICAgICAg ICAgICAgIFwNCisgICAgICAgIHN0cnVjdCB0eXBlICpjcWVfcHJldjsgICAgICAgICAgLyog cHJldmlvdXMgZWxlbWVudCAqLyAgICAgICAgICBcDQorfQ0KKw0KKy8qDQorICogQ2lyY3Vs YXIgcXVldWUgZnVuY3Rpb25zLg0KKyAqLw0KKyNkZWZpbmUgQ0lSQ0xFUV9JTklUKGhlYWQp IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAg ICAgIChoZWFkKS0+Y3FoX2ZpcnN0ID0gKHZvaWQgKikoaGVhZCk7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQorICAgICAgICAoaGVhZCktPmNxaF9sYXN0ID0gKHZvaWQgKiko aGVhZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KK30gd2hpbGUgKC8qQ09O U1RDT05EKi8wKQ0KKw0KKyNkZWZpbmUgQ0lSQ0xFUV9JTlNFUlRfQUZURVIoaGVhZCwgbGlz dGVsbSwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAgICAgIFwNCisgICAgICAgIChlbG0pLT5m aWVsZC5jcWVfbmV4dCA9IChsaXN0ZWxtKS0+ZmllbGQuY3FlX25leHQ7ICAgICAgICAgICAg ICBcDQorICAgICAgICAoZWxtKS0+ZmllbGQuY3FlX3ByZXYgPSAobGlzdGVsbSk7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgaWYgKChsaXN0ZWxtKS0+Zmll bGQuY3FlX25leHQgPT0gKHZvaWQgKikoaGVhZCkpICAgICAgICAgICAgICAgIFwNCisgICAg ICAgICAgICAgICAgKGhlYWQpLT5jcWhfbGFzdCA9IChlbG0pOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAg ICAobGlzdGVsbSktPmZpZWxkLmNxZV9uZXh0LT5maWVsZC5jcWVfcHJldiA9IChlbG0pOyAg ICAgIFwNCisgICAgICAgIChsaXN0ZWxtKS0+ZmllbGQuY3FlX25leHQgPSAoZWxtKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorfSB3aGlsZSAoLypDT05TVENPTkQqLzAp DQorDQorI2RlZmluZSBDSVJDTEVRX0lOU0VSVF9CRUZPUkUoaGVhZCwgbGlzdGVsbSwgZWxt LCBmaWVsZCkgZG8geyAgICAgICAgICAgXA0KKyAgICAgICAgKGVsbSktPmZpZWxkLmNxZV9u ZXh0ID0gKGxpc3RlbG0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAg ICAgIChlbG0pLT5maWVsZC5jcWVfcHJldiA9IChsaXN0ZWxtKS0+ZmllbGQuY3FlX3ByZXY7 ICAgICAgICAgICAgICBcDQorICAgICAgICBpZiAoKGxpc3RlbG0pLT5maWVsZC5jcWVfcHJl diA9PSAodm9pZCAqKShoZWFkKSkgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAg ICAoaGVhZCktPmNxaF9maXJzdCA9IChlbG0pOyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgIChsaXN0ZWxt KS0+ZmllbGQuY3FlX3ByZXYtPmZpZWxkLmNxZV9uZXh0ID0gKGVsbSk7ICAgICAgXA0KKyAg ICAgICAgKGxpc3RlbG0pLT5maWVsZC5jcWVfcHJldiA9IChlbG0pOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCit9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkNCisNCisjZGVm aW5lIENJUkNMRVFfSU5TRVJUX0hFQUQoaGVhZCwgZWxtLCBmaWVsZCkgZG8geyAgICAgICAg ICAgICAgICAgICAgICBcDQorICAgICAgICAoZWxtKS0+ZmllbGQuY3FlX25leHQgPSAoaGVh ZCktPmNxaF9maXJzdDsgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKGVsbSkt PmZpZWxkLmNxZV9wcmV2ID0gKHZvaWQgKikoaGVhZCk7ICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCisgICAgICAgIGlmICgoaGVhZCktPmNxaF9sYXN0ID09ICh2b2lkICopKGhlYWQp KSAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgICAgIChoZWFkKS0+ Y3FoX2xhc3QgPSAoZWxtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAg ICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKGhlYWQpLT5jcWhfZmlyc3Qt PmZpZWxkLmNxZV9wcmV2ID0gKGVsbSk7ICAgICAgICAgICAgICBcDQorICAgICAgICAoaGVh ZCktPmNxaF9maXJzdCA9IChlbG0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KK30gd2hpbGUgKC8qQ09OU1RDT05EKi8wKQ0KKw0KKyNkZWZpbmUgQ0lSQ0xF UV9JTlNFUlRfVEFJTChoZWFkLCBlbG0sIGZpZWxkKSBkbyB7ICAgICAgICAgICAgICAgICAg ICAgIFwNCisgICAgICAgIChlbG0pLT5maWVsZC5jcWVfbmV4dCA9ICh2b2lkICopKGhlYWQp OyAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICAoZWxtKS0+ZmllbGQuY3Fl X3ByZXYgPSAoaGVhZCktPmNxaF9sYXN0OyAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAg ICAgICAgaWYgKChoZWFkKS0+Y3FoX2ZpcnN0ID09ICh2b2lkICopKGhlYWQpKSAgICAgICAg ICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKGhlYWQpLT5jcWhfZmlyc3Qg PSAoZWxtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICBlbHNl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KKyAgICAgICAgICAgICAgICAoaGVhZCktPmNxaF9sYXN0LT5maWVsZC5jcWVf bmV4dCA9IChlbG0pOyAgICAgICAgICAgICAgIFwNCisgICAgICAgIChoZWFkKS0+Y3FoX2xh c3QgPSAoZWxtKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQor fSB3aGlsZSAoLypDT05TVENPTkQqLzApDQorDQorI2RlZmluZSBDSVJDTEVRX1JFTU9WRSho ZWFkLCBlbG0sIGZpZWxkKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAg ICAgICAgaWYgKChlbG0pLT5maWVsZC5jcWVfbmV4dCA9PSAodm9pZCAqKShoZWFkKSkgICAg ICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgKGhlYWQpLT5jcWhfbGFzdCA9 IChlbG0pLT5maWVsZC5jcWVfcHJldjsgICAgICAgICAgICAgICBcDQorICAgICAgICBlbHNl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KKyAgICAgICAgICAgICAgICAoZWxtKS0+ZmllbGQuY3FlX25leHQtPmZpZWxk LmNxZV9wcmV2ID0gICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAgICAgICAgICAgIChl bG0pLT5maWVsZC5jcWVfcHJldjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQor ICAgICAgICBpZiAoKGVsbSktPmZpZWxkLmNxZV9wcmV2ID09ICh2b2lkICopKGhlYWQpKSAg ICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAoaGVhZCktPmNxaF9maXJz dCA9IChlbG0pLT5maWVsZC5jcWVfbmV4dDsgICAgICAgICAgICAgIFwNCisgICAgICAgIGVs c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQorICAgICAgICAgICAgICAgIChlbG0pLT5maWVsZC5jcWVfcHJldi0+Zmll bGQuY3FlX25leHQgPSAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAgICAg KGVsbSktPmZpZWxkLmNxZV9uZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cit9IHdoaWxlICgvKkNPTlNUQ09ORCovMCkNCisNCisjZGVmaW5lIENJUkNMRVFfRk9SRUFD SCh2YXIsIGhlYWQsIGZpZWxkKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQor ICAgICAgICBmb3IgKCh2YXIpID0gKChoZWFkKS0+Y3FoX2ZpcnN0KTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAodmFyKSAhPSAoY29uc3Qg dm9pZCAqKShoZWFkKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAgICAgICAg ICAgICAgKHZhcikgPSAoKHZhciktPmZpZWxkLmNxZV9uZXh0KSkNCisNCisjZGVmaW5lIENJ UkNMRVFfRk9SRUFDSF9SRVZFUlNFKHZhciwgaGVhZCwgZmllbGQpICAgICAgICAgICAgICAg ICAgICAgICBcDQorICAgICAgICBmb3IgKCh2YXIpID0gKChoZWFkKS0+Y3FoX2xhc3QpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgICAgICAgICAodmFy KSAhPSAoY29uc3Qgdm9pZCAqKShoZWFkKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwN CisgICAgICAgICAgICAgICAgKHZhcikgPSAoKHZhciktPmZpZWxkLmNxZV9wcmV2KSkNCisN CisvKg0KKyAqIENpcmN1bGFyIHF1ZXVlIGFjY2VzcyBtZXRob2RzLg0KKyAqLw0KKyNkZWZp bmUgQ0lSQ0xFUV9FTVBUWShoZWFkKSAgICAgICAgICAgICAoKGhlYWQpLT5jcWhfZmlyc3Qg PT0gKHZvaWQgKikoaGVhZCkpDQorI2RlZmluZSBDSVJDTEVRX0ZJUlNUKGhlYWQpICAgICAg ICAgICAgICgoaGVhZCktPmNxaF9maXJzdCkNCisjZGVmaW5lIENJUkNMRVFfTEFTVChoZWFk KSAgICAgICAgICAgICAgKChoZWFkKS0+Y3FoX2xhc3QpDQorI2RlZmluZSBDSVJDTEVRX05F WFQoZWxtLCBmaWVsZCkgICAgICAgICgoZWxtKS0+ZmllbGQuY3FlX25leHQpDQorI2RlZmlu ZSBDSVJDTEVRX1BSRVYoZWxtLCBmaWVsZCkgICAgICAgICgoZWxtKS0+ZmllbGQuY3FlX3By ZXYpDQorDQorI2RlZmluZSBDSVJDTEVRX0xPT1BfTkVYVChoZWFkLCBlbG0sIGZpZWxkKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKCgoZWxtKS0+ZmllbGQu Y3FlX25leHQgPT0gKHZvaWQgKikoaGVhZCkpICAgICAgICAgICAgICAgICAgICAgIFwNCisg ICAgICAgICAgICA/ICgoaGVhZCktPmNxaF9maXJzdCkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgOiAoZWxtLT5maWVsZC5jcWVfbmV4 dCkpDQorI2RlZmluZSBDSVJDTEVRX0xPT1BfUFJFVihoZWFkLCBlbG0sIGZpZWxkKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICAgICAgKCgoZWxtKS0+ZmllbGQuY3Fl X3ByZXYgPT0gKHZvaWQgKikoaGVhZCkpICAgICAgICAgICAgICAgICAgICAgIFwNCisgICAg ICAgICAgICA/ICgoaGVhZCktPmNxaF9sYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQorICAgICAgICAgICAgOiAoZWxtLT5maWVsZC5jcWVfcHJldikp DQorDQorI2VuZGlmICAvKiAhX1NZU19RVUVVRV9IXyAqLw0KLS0gCjEuNS40LjEKCg== --------------080400000901000603060503--