From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750904AbVKIOSm (ORCPT ); Wed, 9 Nov 2005 09:18:42 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750907AbVKIOSd (ORCPT ); Wed, 9 Nov 2005 09:18:33 -0500 Received: from public.id2-vpn.continvity.gns.novell.com ([195.33.99.129]:58417 "EHLO emea1-mh.id2.novell.com") by vger.kernel.org with ESMTP id S1750875AbVKIOR7 (ORCPT ); Wed, 9 Nov 2005 09:17:59 -0500 Message-Id: <4372135F.76F0.0078.0@novell.com> X-Mailer: Novell GroupWise Internet Agent 7.0 Date: Wed, 09 Nov 2005 15:18:55 +0100 From: "Jan Beulich" To: Subject: [PATCH 22/39] NLKD - core References: <43720DAE.76F0.0078.0@novell.com> <43720E2E.76F0.0078.0@novell.com> <43720E72.76F0.0078.0@novell.com> <43720EAF.76F0.0078.0@novell.com> <43720F5E.76F0.0078.0@novell.com> <43720F95.76F0.0078.0@novell.com> <43720FBA.76F0.0078.0@novell.com> <43720FF6.76F0.0078.0@novell.com> <43721024.76F0.0078.0@novell.com> <4372105B.76F0.0078.0@novell.com> <43721119.76F0.0078.0@novell.com> <43721142.76F0.0078.0@novell.com> <43721184.76F0.0078.0@novell.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=__Part03213F5F.0__=" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a MIME message. If you are reading this text, you may want to consider changing to a mail reader or gateway that understands how to properly handle MIME multipart messages. --=__Part03213F5F.0__= Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Disposition: inline The core NLKD additions. With other debugging code living scattered across the (official or external) tree(s), this tries to atb once establish a common place for debugging code in a new debug/ directory. Note that this depends on the i386 cmpxchg adjustments patch, which isn't in 2.6.14, but has supposedly been merged already into 2.6.15. Signed-Off-By: Jan Beulich (actual patch attached) --=__Part03213F5F.0__= Content-Type: application/octet-stream; name="nlkd.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nlkd.patch" VGhlIGNvcmUgTkxLRCBhZGRpdGlvbnMuCgpXaXRoIG90aGVyIGRlYnVnZ2luZyBjb2RlIGxpdmlu ZyBzY2F0dGVyZWQgYWNyb3NzIHRoZSAob2ZmaWNpYWwgb3IKZXh0ZXJuYWwpIHRyZWUocyksIHRo aXMgdHJpZXMgdG8gYXRiIG9uY2UgZXN0YWJsaXNoIGEgY29tbW9uIHBsYWNlCmZvciBkZWJ1Z2dp bmcgY29kZSBpbiBhIG5ldyBkZWJ1Zy8gZGlyZWN0b3J5LgoKTm90ZSB0aGF0IHRoaXMgZGVwZW5k cyBvbiB0aGUgaTM4NiBjbXB4Y2hnIGFkanVzdG1lbnRzIHBhdGNoLCB3aGljaAppc24ndCBpbiAy LjYuMTQsIGJ1dCBoYXMgc3VwcG9zZWRseSBiZWVuIG1lcmdlZCBhbHJlYWR5IGludG8gMi42LjE1 LgoKU2lnbmVkLU9mZi1CeTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQG5vdmVsbC5jb20+CgpJbmRl eDogMi42LjE0LW5sa2QvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gMi42LjE0LW5sa2Qub3JpZy9N YWtlZmlsZQkyMDA1LTExLTA5IDExOjEyOjQyLjAwMDAwMDAwMCArMDEwMAorKysgMi42LjE0LW5s a2QvTWFrZWZpbGUJMjAwNS0xMS0wNCAxNjoyMDo1Ny4wMDAwMDAwMDAgKzAxMDAKQEAgLTU5Miw2 ICs1OTIsNyBAQCBleHBvcnQgTU9ETElCCiAKIGlmZXEgKCQoS0JVSUxEX0VYVE1PRCksKQogY29y ZS15CQkrPSBrZXJuZWwvIG1tLyBmcy8gaXBjLyBzZWN1cml0eS8gY3J5cHRvLworY29yZS0kKENP TkZJR19ERUJVR19LRVJORUwpICs9IGRlYnVnLwogCiB2bWxpbnV4LWRpcnMJOj0gJChwYXRzdWJz dCAlLywlLCQoZmlsdGVyICUvLCAkKGluaXQteSkgJChpbml0LW0pIFwKIAkJICAgICAkKGNvcmUt eSkgJChjb3JlLW0pICQoZHJpdmVycy15KSAkKGRyaXZlcnMtbSkgXApJbmRleDogMi42LjE0LW5s a2QvZGVidWcvS2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKKysrIDIuNi4xNC1ubGtkL2RlYnVnL0tjb25maWcJMjAwNS0x MS0wNyAxNDowMTo0OC4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSwyMiBAQAorY2hvaWNlCisJ cHJvbXB0ICJLZXJuZWwgZGVidWdnZXIiCisJb3B0aW9uYWwKKwlkZXBlbmRzIG9uIERFQlVHX0tF Uk5FTAorCS0tLWhlbHAtLS0KKwkgIEtlcm5lbCBkZWJ1Z2dlcnMgY29udGFpbiBjb21tYW5kcyB3 aGljaCBhbGxvdyBtZW1vcnkgdG8gYmUgZXhhbWluZWQsCisJICBpbnN0cnVjdGlvbnMgdG8gYmUg ZGlzYXNzZW1ibGVkIGFuZCBicmVha3BvaW50cyB0byBiZSBzZXQuCisKKwkgIElmIHVuc3VyZSwg c2F5IE4uCisKK2NvbmZpZyBOTEtECisJYm9vbCAiTm92ZWxsIExpbnV4IEtlcm5lbCBEZWJ1Z2dl ciIKKwlkZXBlbmRzIG9uIERFQlVHX0tFUk5FTAorCWRlcGVuZHMgb24gKFg4Nl9DTU9WRSAmJiBY ODZfQ01QWENIRzY0ICYmIFg4Nl9UU0MpIHx8IFg4Nl82NAorCWRlcGVuZHMgb24gIVg4NiB8fCAh T1BST0ZJTEUKKwktLS1oZWxwLS0tCisJICBUaGlzIG9wdGlvbiBwcm92aWRlcyBhIGtlcm5lbCBk ZWJ1Z2dlciBmcmFtZXdvcmsuICBTdWItY29tcG9uZW50CisJICBzZWxlY3Rpb24gd2lsbCBmb2xs b3cgbGF0ZXIuCisKK2VuZGNob2ljZQorCitzb3VyY2UgImRlYnVnL25sa2QvS2NvbmZpZyIKSW5k ZXg6IDIuNi4xNC1ubGtkL2RlYnVnL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysgMi42LjE0LW5sa2QvZGVidWcv TWFrZWZpbGUJMjAwNS0xMS0wNCAxNDoxNToyMy4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSBA QAorb2JqLSQoQ09ORklHX05MS0QpICAgICAgICAgICAgKz0gbmxrZC8KSW5kZXg6IDIuNi4xNC1u bGtkL2RlYnVnL25sa2QvS2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrIDIuNi4xNC1ubGtkL2RlYnVnL25sa2QvS2Nv bmZpZwkyMDA1LTExLTA0IDA5OjUyOjM2LjAwMDAwMDAwMCArMDEwMApAQCAtMCwwICsxLDcxIEBA CisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyMqCisjKiAgIEZpbGUgTmFtZTogICAgICBLY29uZmln CisjKiAgIENyZWF0ZWQgYnk6ICAgICBKYW4gQmV1bGljaAorIyogICAldmVyc2lvbjogICAgICAg NSAlCisjKiAgICVkZXJpdmVkX2J5OiAgICBqYmV1bGljaCAlCisjKiAgICVkYXRlX21vZGlmaWVk OiBUaHUgTm92IDAzIDA0OjEyOjI1IDIwMDUgJQorIyoKKyMqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor IyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisjKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyMqIENvcHlyaWdo dCAoYykgMjAwNC0yMDA1IE5vdmVsbCwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAg ICAgICAgICAgKgorIyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisjKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAgICAgICoK KyMqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSAgKgorIyogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisjKiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICoKKyMqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgICAgICAgICAgKgorIyogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICAgICAq CisjKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu IFNlZSB0aGUgICAgICAgICAgICAgICoKKyMqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorIyogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqCisjKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAgICAgICoKKyMqIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOyBpZiBub3QsIGNvbnRhY3QgTm92ZWxsLCBJbmMuICAgICAgICAgICAgICAgICAgICAg KgorIyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqCisjKiBUbyBjb250YWN0IE5vdmVsbCBhYm91dCB0aGlz IGZpbGUgYnkgcGh5c2ljYWwgb3IgZWxlY3Ryb25pYyBtYWlsLCAgICAgICAgICoKKyMqIHlvdSBt YXkgZmluZCBjdXJyZW50IGNvbnRhY3QgaW5mb3JtYXRpb24gYXQgd3d3Lm5vdmVsbC5jb20uICAg ICAgICAgICAgICAgKgorIyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisjKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorIyoKKyMqCUZpbGUgRGVzY3JpcHRpb246CisjKgor IyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCisKK2NvbmZpZyBERUJVR1JUTAorCXRyaXN0YXRlCisJZGVm YXVsdCBuCisKK2NvbmZpZyBDREUKKwl0cmlzdGF0ZSAiQ29yZSBEZWJ1ZyBFbmdpbmUiICN0b2Rv IGlmID8/PworCWRlcGVuZHMgb24gTkxLRAorCXNlbGVjdCBERUJVR1JUTAorCWRlZmF1bHQgTkxL RAorCS0tLWhlbHAtLS0KKwkgIFRoaXMgZW5hYmxlcyBOTEtEJ3MgY29yZSBjb21wb25lbnQuICBG cm9udC1lbmQgKGFnZW50KSBzZWxlY3Rpb24KKwkgIHdpbGwgZm9sbG93IGxhdGVyLgorCisJICBJ ZiBjb21waWxlZCBhcyBhIG1vZHVsZSwgdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBjZGUuCisK K2NvbmZpZyBDREEKKwl0cmlzdGF0ZSAiQ29uc29sZSBEZWJ1ZyBBZ2VudCIKKwlkZXBlbmRzIG9u IENERSAmJiAoVkdBX0NPTlNPTEUgfHwgRlJBTUVCVUZGRVJfQ09OU09MRSkgJiYgU0VSSU9fSTgw NDIKKwlkZWZhdWx0IENERQorCS0tLWhlbHAtLS0KKwkgIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGEg Y29uc29sZSBiYXNlZCBrZXJuZWwgZGVidWdnZXIgZnJvbnQtZW5kLgorCSAgU2VlIERvY3VtZW50 YXRpb24vY2RhLnR4dCBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4KKworCSAgVG8gY29tcGls ZSB0aGlzIGFnZW50IGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUKKwkgIG1vZHVsZSB3 aWxsIGJlIGNhbGxlZCBjZGEuCisKK2NvbmZpZyBSREEKKwl0cmlzdGF0ZSAiUmVtb3RlIERlYnVn IEFnZW50IChFWFBFUklNRU5UQUwpIgorCWRlcGVuZHMgb24gQ0RFICYmIEVYUEVSSU1FTlRBTAor CWRlZmF1bHQgbgorCS0tLWhlbHAtLS0KKwkgIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGEgcmVtb3Rl IGtlcm5lbCBkZWJ1Z2dlciBpbnRlcmZhY2Ugc3VwcG9ydGluZworCSAgZ2RiJ3MgcHJvdG9jb2wu CisKKwkgIFRvIGNvbXBpbGUgdGhpcyBhZ2VudCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTog dGhlCisJICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgcmRhLgpJbmRleDogMi42LjE0LW5sa2QvZGVi dWcvbmxrZC9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKKysrIDIuNi4xNC1ubGtkL2RlYnVnL25sa2QvTWFrZWZpbGUJ MjAwNS0xMS0wOSAxMDo1MDozOS4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSwxMDggQEAKKyMq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorIyoKKyMqICAgRmlsZSBOYW1lOiAgICAgIE1ha2VmaWxlCisj KiAgIENyZWF0ZWQgYnk6ICAgICBKYW4gQmV1bGljaAorIyogICAldmVyc2lvbjogICAgICAgMTIg JQorIyogICAlZGVyaXZlZF9ieTogICAgamJldWxpY2ggJQorIyogICAlZGF0ZV9tb2RpZmllZDog VGh1IE5vdiAwMyAwNDoxMjo1NCAyMDA1ICUKKyMqCisjKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorIyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisjKiBDb3B5cmlnaHQg KGMpIDIwMDQtMjAwNSBOb3ZlbGwsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAg ICAgICAgICoKKyMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorIyogVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgICAgICAgICAqCisj KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgICoKKyMqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorIyogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqCisjKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAgICAgICoKKyMqIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAgICAgKgor IyogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBT ZWUgdGhlICAgICAgICAgICAgICAqCisjKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyMqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKgorIyogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgICAgICAgICAqCisjKiBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCBjb250YWN0IE5vdmVsbCwgSW5jLiAgICAgICAgICAgICAgICAgICAgICoK KyMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKgorIyogVG8gY29udGFjdCBOb3ZlbGwgYWJvdXQgdGhpcyBm aWxlIGJ5IHBoeXNpY2FsIG9yIGVsZWN0cm9uaWMgbWFpbCwgICAgICAgICAqCisjKiB5b3UgbWF5 IGZpbmQgY3VycmVudCBjb250YWN0IGluZm9ybWF0aW9uIGF0IHd3dy5ub3ZlbGwuY29tLiAgICAg ICAgICAgICAgICoKKyMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorIyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKKyMqCisjKglGaWxlIERlc2NyaXB0aW9uOgorIyoKKyMq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKgorCitpZmVxICgkKENPTkZJR19ERUJVR1JUTCkseSkKK2RiZyAg IDo9IG9iagorZW5kaWYKK2lmZXEgKCQoQ09ORklHX0RFQlVHUlRMKSxtKQorZGJnICAgOj0gZGVi dWdydGwKK29iai1tIDo9IGRlYnVncnRsLm8KK2RiZy15IDo9CitlbmRpZgorCitpZmVxICgkKENP TkZJR19DREUpLHkpCitjZGUgICA6PSBvYmoKK2VuZGlmCitpZmVxICgkKENPTkZJR19DREUpLG0p CitjZGUgICA6PSBjZGUKK29iai1tIDo9IGNkZS5vCitjZGUteSA6PQorZW5kaWYKKworYXJjaC0k KENPTkZJR19YODYpICAgICAgICA6PSAkKGlmICQoQ09ORklHX1g4Nl82NCksQU1ENjQsSUEzMikK K2FyY2gtJChDT05GSUdfSUE2NCkgICAgICAgOj0gSUE2NAorZXhwb3J0IGFyY2gteQorCitvYmot eSAgICAgICAgICAgICAgICAgICAgIDo9IG5sa2QubyBubGtkJChhcmNoLXkpLm8KKyQoZGJnKS0k KENPTkZJR19ERUJVR1JUTCkgKz0gZGJndXRpbC5vIGRiZyQoYXJjaC15KS5vCiskKGNkZSkteSAg ICAgICAgICAgICAgICAgICs9IGNkZSQoYXJjaC15KS5vIGNkZWV4dC5vIGNkZWZvY3VzLm8gY2Rl bWFpbi5vIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RlJChhcmNoLXkpbG9jay5v IGNkZW1lbS5vIGNkZXN0YXRlbWFjaC5vIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2Rlc3ltLm8gJChpZiAkKENPTkZJR19JQTY0KSwsY2RldW53aW5kLm8pIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2RldXRpbC5vIGNkZSQoYXJjaC15KXV0aWwubworJChjZGUpLSQo Q09ORklHX01PRFVMRVMpICArPSBjZGVfc3ltcy5vCiskKGNkZSktJChDT05GSUdfU01QKSAgICAg ICs9IGNkZXJlbmRlenZvdXMubyBjZGVycGMubworJChjZGUpLSQoQ09ORklHX0VGSSkgICAgICAr PSBjZGVlZmkubworJChjZGUpLSQoQ09ORklHX1g4NikgICAgICArPSBjZGVYODZicmtwLm8KKyQo Y2RlKS0kKENPTkZJR19JQTY0KSAgICAgKz0gY2RlSUE2NGJya3AubworCitvYmotJChDT05GSUdf Q0RBKSAgICAgICAgICs9IGNkYS8KK29iai0kKENPTkZJR19SREEpICAgICAgICAgKz0gcmRhLwor CitFWFRSQV9BRkxBR1MgOj0gLVdhLC0tc3RyaXAtbG9jYWwtYWJzb2x1dGUKKworIyBOZWVkIGEg dmVyc2lvbiBvZiAnYXMnIHRoYXQgc3VwcG9ydHMgdmFyaW91cyBmZWF0dXJlcyBub3QgcHJlc2Vu dCBvciBicm9rZW4KKyMgaW4gb2xkZXIgYmludXRpbHMgdmVyc2lvbnMuIEJ1dCBzaW5jZSBvbmUg Y2FuJ3QgdGVsbCBnY2Mgd2hhdCBhc3NlbWJsZXIKKyMgYmluYXJ5IHRvIHVzZSB3ZSBoYXZlIHRv IHVzZSBhbm90aGVyIGNvbXBpbGVyIGRyaXZlciB0aGF0IHdpbGwgZmluZCB0aGUKKyMgcmlnaHQg YXNzZW1ibGVyIGlmIHRoZSBkZWZhdWx0IG9uZSBkb2Vzbid0IGZpdCBvdXIgbmVlZHMuIChOb3Rl IHRoYXQgLVdhLC1aCisjIGJlbG93IGlzIG5lY2Vzc2FyeSBiZWNhdXNlIG90aGVyd2lzZSwgdXAg dG8gdmVyc2lvbiAyLjE1LCBpdCB3aWxsIFt0cnkgdG9dCisjIHVubGluayAvZGV2L251bGwgW2Fu ZCBzdWNjZWVkIGF0IGxlYXN0IHdoZW4gcnVuIGFzIHJvb3RdKS4KKworYXNzZW1ibGVyX3Rlc3Rf Ym9keS15IDo9IC5hbHRtYWNybzsKK2Fzc2VtYmxlcl90ZXN0X2JvZHkteSArPSAubWFjcm8gLnh5 ejsgLmVuZG07IC54eXo7Cithc3NlbWJsZXJfdGVzdF9ib2R5LXkgKz0gLnN0cnVjdDsgLnByZXZp b3VzOworaWZuZXEgKCQoQ09ORklHX0lBNjQpLHkpCithc3NlbWJsZXJfdGVzdF9ib2R5LSQoQ09O RklHX1VOV0lORF9JTkZPKSArPSAuY2ZpX3N0YXJ0cHJvYzsKK2lmZXEgKCQoQ09ORklHX1g4Niks eSkKK2Fzc2VtYmxlcl90ZXN0X2JvZHktJChDT05GSUdfVU5XSU5EX0lORk8pICs9IC5jZmlfcmVs X29mZnNldCAkKGlmICQoQ09ORklHX1g4Nl82NCkscixlKWZsYWdzLCAwOworZW5kaWYKK2Fzc2Vt Ymxlcl90ZXN0X2JvZHktJChDT05GSUdfVU5XSU5EX0lORk8pICs9IC5jZmlfZW5kcHJvYzsKK2Vu ZGlmCithc3NlbWJsZXJfdGVzdF9ib2R5LSQoQ09ORklHX1g4NikgKz0gLmludGVsX3N5bnRheCBu b3ByZWZpeDsKK2Fzc2VtYmxlcl90ZXN0X2JvZHktJChDT05GSUdfWDg2KSArPSAuYnNzOyAucHJl dmlvdXM7Cithc3NlbWJsZXJfdGVzdF9ib2R5LSQoQ09ORklHX1g4NikgKz0gcHVzaCAoMSBzaGwg MSkgb3Igbm90ICgxIHNociAxKSBtb2QgKDEgYW5kIDEgeG9yIDIpOworYXNzZW1ibGVyX3Rlc3Rf Ym9keS0kKENPTkZJR19YODYpICs9IC5lcXVpdiBkd29yZCwgNDsgLmVxdWl2IHJlZywgZWF4OyBs ZWEgcmVnLCBbcmVnKmR3b3JkXTsKKworYXNzZW1ibGVyX3Rlc3QgPSAkKHNoZWxsIGVjaG8gJyQo YXNzZW1ibGVyX3Rlc3RfYm9keS15KScgXAorICAgICAgICAgICAgICAgICAgIHwgJCgxKSAtYyAt byAvZGV2L251bGwgLVdhLC1aIC14YXNzZW1ibGVyLXdpdGgtY3BwIC0gMj4mMSA+L2Rldi9udWxs KQorCitpZm5lcSAoJChjYWxsIGFzc2VtYmxlcl90ZXN0LCQoQ0MpKSwpCitDQ3ggOj0gJChzaGVs bCBlY2hvICckKENDKScgfCBzZWQgJ3MsXCheXHxbWzpzcGFjZTpdXVwpXChbXj1bOnNwYWNlOl1d XCtcKVwoW1s6c3BhY2U6XV1cfCQkXCksXDFcMnhcMywnKQoraWZuZXEgKCQoc2hlbGwgd2hpY2gg JChmaWx0ZXItb3V0IC0lLCQoQ0N4KSkgMj4vZGV2L251bGwgfCBncmVwICcvJChDQ3gpJCQnKSwp CitpZm5lcSAoJChjYWxsIGFzc2VtYmxlcl90ZXN0LCQoQ0N4KSksKQorQ0N4IDo9IGVjaG8gIkFz c2VtYmxlciB1cGRhdGUgbmVlZGVkIiA+JjIgJiYgL2Jpbi9mYWxzZQorZW5kaWYKK2VuZGlmCitv dmVycmlkZSBjbWRfYXNfb19TICAgPSAkKENDeCkgJChhX2ZsYWdzKSAtYyAtbyAkQCAkPAorZW5k aWYKSW5kZXg6IDIuNi4xNC1ubGtkL2RlYnVnL25sa2QvbmxrZC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysgMi42LjE0LW5s a2QvZGVidWcvbmxrZC9ubGtkLmMJMjAwNS0xMS0wMyAxMjoyMzo0My4wMDAwMDAwMDAgKzAxMDAK QEAgLTAsMCArMSwxNjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICAgRmlsZSBO YW1lOiAgICAgIG5sa2QuYworICogICBDcmVhdGVkIGJ5OiAgICAgSmFuIEJldWxpY2gKKyAqICAg JXZlcnNpb246ICAgICAgIDQgJQorICogICAlZGVyaXZlZF9ieTogICAgamJldWxpY2ggJQorICog ICAlZGF0ZV9tb2RpZmllZDogVGh1IE5vdiAwMyAwNDoyMzozMCAyMDA1ICUKKyAqCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDUgTm92ZWxsLCBJbmMuIEFsbCBSaWdodHMg UmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgICAgICAgICAgICAgKgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB2ZXJzaW9u IDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAqCisgKiBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgICAgICAgICAqCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZiAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSAgICAgICAgICAgICAgKgorICogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgICAgICAgKgorICog YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgY29udGFjdCBOb3ZlbGwsIEluYy4gICAg ICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRvIGNvbnRhY3Qg Tm92ZWxsIGFib3V0IHRoaXMgZmlsZSBieSBwaHlzaWNhbCBvciBlbGVjdHJvbmljIG1haWwsICAg ICAgICAgKgorICogeW91IG1heSBmaW5kIGN1cnJlbnQgY29udGFjdCBpbmZvcm1hdGlvbiBhdCB3 d3cubm92ZWxsLmNvbS4gICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqCUZpbGUg RGVzY3JpcHRpb246CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvbmxrZC5oPgorI2luY2x1ZGUgPGFzbS9mdGEt ZnJhbWUuaD4KKyNpbmNsdWRlIDxhc20vZnRhLXR5cGUuaD4KKyNpbmNsdWRlIDxhc20vc2VnbWVu dC5oPgorI2luY2x1ZGUgIm5sa2QuaCIKKworI2lmIGRlZmluZWQoX01fSUE2NCkgfHwgZGVmaW5l ZChfX2lhNjRfXykKKyMgaW5jbHVkZSAibmxrZElBNjQuaCIKKyNlbGlmIGRlZmluZWQoX01fSVg4 NikgfHwgZGVmaW5lZChfX2kzODZfXykKKyMgaW5jbHVkZSAibmxrZElBMzIuaCIKKyNlbGlmIGRl ZmluZWQoX01fQU1ENjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykKKyMgaW5jbHVkZSAibmxrZEFN RDY0LmgiCisjZW5kaWYKKworRVhQT1JUX1NZTUJPTChubGtkQXNzZXJ0KTsKK0VYUE9SVF9TWU1C T0wobmxrZERlYnVnRXZlbnQpOworRVhQT1JUX1NZTUJPTChubGtkRW50ZXJEZWJ1Z2dlcik7CitF WFBPUlRfU1lNQk9MKG5sa2RQYW5pYyk7CisKKyNpZmRlZiBDT05GSUdfTkxLRF9GVEEKK3N0cnVj dCBub3RpZmllcl9ibG9jayAqbmxrZF9rZXlwcmVzc19jaGFpbiA9IE5VTEw7CitFWFBPUlRfU1lN Qk9MKG5sa2Rfa2V5cHJlc3NfY2hhaW4pOworI2VuZGlmCisKK3ZvbGF0aWxlIGludCBubGtkQWdl bnRDb3VudCA9IC0xOworI2lmbmRlZiBDT05GSUdfQ0RFCitFWFBPUlRfU1lNQk9MKG5sa2RBZ2Vu dENvdW50KTsKK2NvbnN0IHN0cnVjdCBubGtkQlBYZmFjZV9zKm5sa2RCUFhmYWNlID0gTlVMTDsK K0VYUE9SVF9TWU1CT0wobmxrZEJQWGZhY2UpOworI2VuZGlmCisKKyNpZm5kZWYgQ09ORklHX0NE RQorIyBpbmNsdWRlIDxhc20vZGVidWdyZWcuaD4KK3ZvaWQgKCpzZXRfZGVidWdyZWcpKHVpbnRw dHJfdCB2YWx1ZSwgbnVpbnRfdCByZWdudW0pID0gX3NldF9kZWJ1Z3JlZzsKK0VYUE9SVF9TWU1C T0woc2V0X2RlYnVncmVnKTsKK3N0YXRpYyBpbnQgX2VuYWJsZV9kZWJ1Z3JlZyhzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRhc2ssIG51aW50X3QgcmVnbnVtLCB1aW50cHRyX3QgdmFsdWUpIHt9CitpbnQg KCplbmFibGVfZGVidWdyZWcpKHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBudWludF90LCB1aW50cHRy X3QpID0gX2VuYWJsZV9kZWJ1Z3JlZzsKK0VYUE9SVF9TWU1CT0woZW5hYmxlX2RlYnVncmVnKTsK K2ludCAoKmRpc2FibGVfZGVidWdyZWcpKHN0cnVjdCBwdF9yZWdzICosIG51aW50X3QpID0gX2Rp c2FibGVfZGVidWdyZWc7CitFWFBPUlRfU1lNQk9MKGRpc2FibGVfZGVidWdyZWcpOworaW50ICgq cmVzdG9yZV9kZWJ1Z3JlZykodm9pZCkgPSBfcmVzdG9yZV9kZWJ1Z3JlZzsKK0VYUE9SVF9TWU1C T0wocmVzdG9yZV9kZWJ1Z3JlZyk7CisjZW5kaWYKKworI2lmIGRlZmluZWQoQ09ORklHX1g4NikK KyMgaWZkZWYgQ09ORklHX1g4Nl82NAorIyAgZGVmaW5lIFBMVCh4KSBBTUQ2NF8jI3gKKyMgIGRl ZmluZSBQQyByaXAKKyMgZWxzZQorIyAgZGVmaW5lIFBMVCh4KSBJQTMyXyMjeAorIyAgZGVmaW5l IFBDIGVpcAorIyBlbmRpZgorIyBkZWZpbmUgVFlQRSBQTFQoQlJFQUtQT0lOVCkKKyMgZGVmaW5l IFNVQlRZUEUgZWF4CisjIGRlZmluZSBUQVJHRVQgX25sa2RFbnRlckRlYnVnZ2VySW5zdHJ1Y3Rp b25fCisjIGRlZmluZSBFWFRSQSBGUkFNRV9QVFJFR1MoZnJhbWUsIGNzKSA9PSBfX0tFUk5FTF9D UworIyBkZWZpbmUgSVBJX1RZUEUgUExUKE5NSSkKKyMgZGVmaW5lIElQSV9TVUJUWVBFIGNyMgor I2VsaWYgZGVmaW5lZChDT05GSUdfSUE2NCkKKyMgZGVmaW5lIFBDIGlpcAorIyBkZWZpbmUgVFlQ RSBJQTY0X0JSRUFLRkxUCisjIGRlZmluZSBTVUJUWVBFIHI4CisjIGRlZmluZSBUQVJHRVQgX25s a2RFbnRlckRlYnVnZ2VyQnVuZGxlXworIyBkZWZpbmUgRVhUUkEgZnJhbWUtPmlpbSA9PSBCUkVB S19FTlRFUl9ERUJVR0dFUgorIyBkZWZpbmUgSVBJX1RZUEUgUExUKE5NSSkKKyMgZGVmaW5lIElQ SV9TVUJUWVBFIGlpbQorI2VuZGlmCisKK2ludCBubGtkSXNEZWJ1Z0V2ZW50KGNvbnN0IHN0cnVj dCBmdGFJbnRlcnJ1cHRpb25DdHhfcypmcmFtZSkgeworCWV4dGVybiBjb25zdCBjaGFyIFRBUkdF VFtdOworCisJcmV0dXJuIGZyYW1lLT50eXBlID09IFRZUEUKKwkgICAgICAgJiYgRlJBTUVfUFRS RUdTKGZyYW1lLCBQQykgPT0gKHVpbnRwdHJfdClUQVJHRVQKKwkgICAgICAgJiYgRVhUUkE7Cit9 CitFWFBPUlRfU1lNQk9MKG5sa2RJc0RlYnVnRXZlbnQpOworCisjaWZuZGVmIENPTkZJR19OTEtE X0ZUQQordm9pZCBubGtkU2V0RGVidWdFdmVudFR5cGUoc3RydWN0IGZ0YUludGVycnVwdGlvbkN0 eF9zKmZyYW1lKSB7CisJaWYoIWZyYW1lLT5zdWJfdHlwZSkgeworCQlpZihubGtkSXNEZWJ1Z0V2 ZW50KGZyYW1lKSkKKwkJCWZyYW1lLT5zdWJfdHlwZSA9IEZSQU1FX1BUUkVHUyhmcmFtZSwgU1VC VFlQRSk7CisJCWVsc2UgaWYoZnJhbWUtPnR5cGUgPT0gSVBJX1RZUEUpIHsKKwkJCWZyYW1lLT5z dWJfdHlwZSA9IGZyYW1lLT5JUElfU1VCVFlQRTsKKwkJCWZyYW1lLT5JUElfU1VCVFlQRSA9IDA7 CisJCX0KKwl9Cit9CitFWFBPUlRfU1lNQk9MKG5sa2RTZXREZWJ1Z0V2ZW50VHlwZSk7CisjZW5k aWYKKworI3VuZGVmIElQSV9UWVBFCisjdW5kZWYgSVBJX1NVQlRZUEUKKyN1bmRlZiBFWFRSQQor I3VuZGVmIFRBUkdFVAorI3VuZGVmIFNVQlRZUEUKKyN1bmRlZiBUWVBFCisjdW5kZWYgUEMKKyN1 bmRlZiBQTFQKKwordm9pZCBubGtkX2luaXQoKSB7CisJZXh0ZXJuIG5sa2RFeHRlbnNpb25fdCBf X3N0YXJ0X25sa2RfZXh0W10sIF9fc3RvcF9ubGtkX2V4dFtdOworCW5sa2RFeHRlbnNpb25fdCpl eHQ7CisKKwlmb3IoZXh0ID0gX19zdGFydF9ubGtkX2V4dDsgZXh0IDwgX19zdG9wX25sa2RfZXh0 OyArK2V4dCkgeworCQlMU1RBVFVTIHN0YXR1cyA9IG5sa2RFeHRSZWdpc3RlcihleHQtPmlkLAor CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHQtPmhhbmRsZXIsCisJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dC0+aGFuZGxlckNvbnRleHQsCisJCSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpleHQtPnBNb2R1bGVJZCwKKwkJICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZXh0LT5kZXNjcmlwdGlvbiwKKwkJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXh0LT5mbGFncyk7CisJCWlmKHN0YXR1cyAhPSBMU1RBVFVT X1NVQ0NFU1MpCisJCQlwcmludGsoS0VSTl9XQVJOSU5HICJSZWdpc3RyYXRpb24gb2YgJXMgZGVi dWcgZXh0ZW5zaW9uIGZhaWxlZCAoJTA4Ik5QUklYIilcbiIsCisJCQkgICAgICAgZXh0LT5pZCwK KwkJCSAgICAgICBzdGF0dXMpOworCX0KKwljZGVfaW5pdCgpOworfQorCit2b2lkIG5sa2RfaW5p dF9kb25lKCkgeworCWNkZV9pbml0X2RvbmUoKTsKK30KKworI2RlZmluZSBOTEtECisjaW5jbHVk ZSAiY2RlZXh0LmMiCkluZGV4OiAyLjYuMTQtbmxrZC9kZWJ1Zy9ubGtkL25sa2QuaAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysr IDIuNi4xNC1ubGtkL2RlYnVnL25sa2QvbmxrZC5oCTIwMDUtMTAtMDcgMTc6MTg6MTguMDAwMDAw MDAwICswMjAwCkBAIC0wLDAgKzEsNDggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAq ICAgRmlsZSBOYW1lOiAgICAgIG5sa2QuaAorICogICBDcmVhdGVkIGJ5OiAgICAgSmFuIEJldWxp Y2gKKyAqICAgJXZlcnNpb246ICAgICAgIDIgJQorICogICAlZGVyaXZlZF9ieTogICAgamJldWxp Y2ggJQorICogICAlZGF0ZV9tb2RpZmllZDogRnJpIE9jdCAwNyAwOToxODowOCAyMDA1ICUKKyAq CisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKgorICogQ29weXJpZ2h0IChjKSAxOTk5LTIwMDUgTm92ZWxsLCBJbmMuIEFs bCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgICAgICAgICAgICAgKgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB2ZXJzaW9uIDIgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAqCisgKiBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgICAgICAg ICAqCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZiAgICAgICAgICAgICoKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSAgICAgICAgICAgICAgKgorICogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICAgICAg ICAgKgorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgY29udGFjdCBOb3ZlbGws IEluYy4gICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRv IGNvbnRhY3QgTm92ZWxsIGFib3V0IHRoaXMgZmlsZSBieSBwaHlzaWNhbCBvciBlbGVjdHJvbmlj IG1haWwsICAgICAgICAgKgorICogeW91IG1heSBmaW5kIGN1cnJlbnQgY29udGFjdCBpbmZvcm1h dGlvbiBhdCB3d3cubm92ZWxsLmNvbS4gICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoK KyAqCUZpbGUgRGVzY3JpcHRpb246CisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitleHRl cm4gdm9sYXRpbGUgaW50IG5sa2RBZ2VudENvdW50OworCisjaWZkZWYgQ09ORklHX0NERQorCit2 b2lkIGNkZV9pbml0KHZvaWQpOwordm9pZCBjZGVfaW5pdF9kb25lKHZvaWQpOworCisjZWxzZQor CisjIGRlZmluZSBjZGVfaW5pdCgpCisjIGRlZmluZSBjZGVfaW5pdF9kb25lKCkKKworI2VuZGlm CkluZGV4OiAyLjYuMTQtbmxrZC9pbmNsdWRlL2xpbnV4L2Z0YS5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysgMi42LjE0LW5s a2QvaW5jbHVkZS9saW51eC9mdGEuaAkyMDA1LTExLTAzIDEyOjAzOjM3LjAwMDAwMDAwMCArMDEw MApAQCAtMCwwICsxLDI2MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogICBGaWxl IE5hbWU6ICAgICAgZnRhLmgKKyAqICAgQ3JlYXRlZCBieTogICAgIEphbiBCZXVsaWNoCisgKiAg ICV2ZXJzaW9uOiAgICAgICAxMiAlCisgKiAgICVkZXJpdmVkX2J5OiAgICBqYmV1bGljaCAlCisg KiAgICVkYXRlX21vZGlmaWVkOiBUaHUgTm92IDAzIDA0OjAzOjI0IDIwMDUgJQorICoKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQtMjAwNSBOb3ZlbGwsIEluYy4gQWxsIFJpZ2h0 cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciAgICAgICAgICAgICAqCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNp b24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgICoKKyAqIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAgICAgICoKKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlICAgICAgICAgICAgICAqCisgKiBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgICAgICAgICAqCisg KiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBjb250YWN0IE5vdmVsbCwgSW5jLiAg ICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVG8gY29udGFj dCBOb3ZlbGwgYWJvdXQgdGhpcyBmaWxlIGJ5IHBoeXNpY2FsIG9yIGVsZWN0cm9uaWMgbWFpbCwg ICAgICAgICAqCisgKiB5b3UgbWF5IGZpbmQgY3VycmVudCBjb250YWN0IGluZm9ybWF0aW9uIGF0 IHd3dy5ub3ZlbGwuY29tLiAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICoJRmls ZSBEZXNjcmlwdGlvbjoKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmIF9MSU5V WF9GVEFfSAorIyBkZWZpbmUgX0xJTlVYX0ZUQV9ICisKKyMgaW5jbHVkZSA8bGludXgvY29uZmln Lmg+CisjIGluY2x1ZGUgPGFzbS9mdGEtdHlwZS5oPgorCit0eXBlZGVmIGVudW0gZnRhSW50ZXJy dXB0aW9uSWRfZSBmdGFJbnRlcnJ1cHRpb25JZF90OwordHlwZWRlZiBzdHJ1Y3QgZnRhSW50ZXJy dXB0aW9uQ3R4X3MgZnRhRnVsbEludGVycnVwdGlvbkN0eF90OworCisjIGlmZGVmIENPTkZJR19O TEtEX0ZUQQorIyAgaW5jbHVkZSA8bGludXgvbGlua2FnZS5oPgorIyAgaW5jbHVkZSA8bGludXgv bHN0YXR1cy5oPgorIyAgaW5jbHVkZSA8bGludXgvbW9kdWxlLWlkLmg+CisjICBpbmNsdWRlIDxs aW51eC9uaW50Lmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogTFNUQVRVUyBEZWZp bmVzIGZvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICovCisvKiBmdGFGYXVsdEludGVycnVwdGlvbi4uLiwgZnRhVHJhcEludGVycnVwdGlv bi4uLiBhbmQgZnRhQWJvcnRJbnRlcnJ1cHRpb24uLi4gKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSAqLworCisjICBkZWZpbmUgTFNUQVRVU19GVEFfSEFORExFRCAgICAgICAgICAgICAgTUFLRV9M U1RBVFVTKEZUQSwgU1VDQ0VTUywgMCkKKyMgIGRlZmluZSBMU1RBVFVTX0ZUQV9OT1RfSEFORExF RCAgICAgICAgICBNQUtFX0xTVEFUVVMoRlRBLCBJTkZPUk1BVElPTiwgMHgwMTAwKQorIyAgZGVm aW5lIExTVEFUVVNfRlRBX0lEX0lOVkFMSUQgICAgICAgICAgIE1BS0VfTFNUQVRVUyhGVEEsIEVS Uk9SLCAweDAxMDApCisjICBkZWZpbmUgTFNUQVRVU19GVEFfUk9VVElORV9BRERSX0lOVkFMSUQg TUFLRV9MU1RBVFVTKEZUQSwgRVJST1IsIDB4MDEwMSkKKyMgIGRlZmluZSBMU1RBVFVTX0ZUQV9T VEFHRV9JTlZBTElEICAgICAgICBNQUtFX0xTVEFUVVMoRlRBLCBFUlJPUiwgMHgwMTAyKQorIyAg ZGVmaW5lIExTVEFUVVNfRlRBX1NUQUdFX05PVF9BVkFJTEFCTEUgIE1BS0VfTFNUQVRVUyhGVEEs IEVSUk9SLCAweDAxMDMpCisjICBkZWZpbmUgTFNUQVRVU19GVEFfVEFHX0FMTE9DX0ZBSUxVUkUg ICAgTUFLRV9MU1RBVFVTKEZUQSwgRVJST1IsIDB4MDEwNCkKKyMgIGRlZmluZSBMU1RBVFVTX0ZU QV9TSUdOQVRVUkVfSU5WQUxJRCAgICBNQUtFX0xTVEFUVVMoRlRBLCBFUlJPUiwgMHgwMTA1KQor IyAgZGVmaW5lIExTVEFUVVNfRlRBX1RBR19JTlZBTElEICAgICAgICAgIE1BS0VfTFNUQVRVUyhG VEEsIEVSUk9SLCAweDAxMDYpCisKK3R5cGVkZWYgZW51bSBmdGFJbnRlcnJ1cHRpb25JZF9lIGZ0 YV9pZF90Oworc3RydWN0IHB0X3JlZ3M7CisKKy8qCisgKiBmdGFJbnRlcnJ1cHRpb25UYWdfdAor ICoKKyAqIGZ0YUludGVycnVwdGlvblRhZ190IGlzIHVzZWQgYXMgYSBoYW5kbGUuICBXaGVuIGZ0 YUludGVycnVwdGlvblNldHVwKCkKKyAqIGlzIGNhbGxlZCBpdCBpcyBwYXNzZWQgdGhlIGFkZHJl c3Mgb2YgYSB2YXJpYWJsZSB0eXBlIG9mIGZ0YUludGVycnVwdGlvblRhZ190LgorICoKKyAqIFdo ZW4gZnRhSW50ZXJydXB0aW9uU2V0dXAoKSBzdWNjZXNzZnVsbHkgY29tcGxldGVzIGZ0YUludGVy cnVwdGlvblRhZ190CisgKiBjb250YWlucyBhIHZhbGlkIHZhbHVlIHRoYXQgY2FuIHNob3VsZCBi ZSB1c2VkIGFzIGEgcGFyYW1ldGVyIHdoZW4KKyAqIGZ0YUludGVycnVwdGlvbkNsZWFyKCkgaXMg Y2FsbGVkLgorICovCit0eXBlZGVmIHN0cnVjdCBmdGFJbnRlcnJ1cHRpb24gKmZ0YUludGVycnVw dGlvblRhZ190LCAqZnRhX3RhZ190OworCisvKgorICogU3BlY2lhbCBmbGFncyBmb3IgdGhpcyBp bnRlcnJ1cHRpb24gaGFuZGxlci4KKyAqLwordHlwZWRlZiB1aW50NjRfdAlmdGFJbnRlcnJ1cHRp b25GbGFnc190OworCisvKgorICogZnRhSW50ZXJydXB0aW9uU3RhZ2VfdAorICoKKyAqIGZ0YUlu dGVycnVwdGlvblN0YWdlX3QgaXMgdXNlZCBhcyBhIHBhcmFtZXRlciB0byBmdGFUcmFwSW50ZXJy dXB0aW9uU2V0dXAoKSwKKyAqIGZ0YUZhdWx0SW50ZXJydXB0aW9uU2V0dXAoKSBhbmQgZnRhQWJv cnRJbnRlcnJ1cHRpb25TZXR1cCgpLgorICoKKyAqIEl0IGlzIHVzZWQgdG8gaW5kaWNhdGUgZHVy aW5nIHdoaWNoIHN0YWdlIHRoZSBpbnRlcnJ1cHRpb24gaGFuZGxlciBzaG91bGQKKyAqIGJlIGNh bGxlZC4gIEZvciBlYWNoIGludGVycnVwdGlvbiB0aGVyZSBtYXkgYmUgYSBzcGVjaWZpYyBvcmRl ciBpbiB3aGljaAorICogZGlmZmVyZW50IGhhbmRsZXJzIHNob3VsZCBiZSBjYWxsZWQuICBUaGUg Y2FsbG91dCBvcmRlciBpcyByZWZlcnJlZCB0byBhcworICogdGhlIHN0YWdlIGFuZCBtYXkgYmUg aW50ZXJydXB0aW9uIHNwZWNpZmljLiAgUHJvdmlkaW5nIGZvciBhIHN0YWdlCisgKiBkZWZpbml0 aW9uIGZvciBoYW5kbGVycyBhbGxvd3MgdGhlIGluZnJhc3RydWN0dXJlIHRvIHByaW9yaXRpemUg dGhlIGNhbGxvdXQKKyAqIG9yZGVyIG9mIGhhbmRsZXJzIGJ5IHN0YWdlIHR5cGUuCisgKgorICog SW50ZXJydXB0aW9uIHN0YWdlcyBhcyBkZWZpbmVkIGFzIGZvbGxvd3M6CisgKgorICogRlRBX0lO VEVSUlVQVElPTl9OT1RJRklFUl9FTlRSWQorICogICAgIEZyYW1lIE1vZGlmaWNhdGlvbjogTm90 IEFsbG93ZWQKKyAqICAgICBOdW1iZXIgT2YgSGFuZGxlcnM6IE11bHRpcGxlCisgKiAgICAgICAg ICAgIE90aGVyIE5vdGVzOiBFbnRyeSBub3RpZmllciBzbG90cyBhcmUgcHJvdmlkZWQgZm9yIGRl YnVnIHB1cnBvc2VzLgorICogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGhhbmRsZXIgaXMg aW52b2tlZCBqdXN0IGFmdGVyIHRoZSBmcmFtZSBoYXMgYmVlbgorICogICAgICAgICAgICAgICAg ICAgICAgICAgc2F2ZWQgYnV0IGJlZm9yZSBhbnkgb3RoZXIgaGFuZGxlcnMgYXJlIGNhbGxlZC4K KyAqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGhhbmRsZXJzIG1heSBleGFtaW5lIHRo ZSBmcmFtZSBidXQgbWF5IG5vdAorICogICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZ5IGl0 IGluIGFueSB3YXkgd2hhdHNvZXZlci4gIE5vdGlmaWVycyBhcmUKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgIG1haW50YWluZWQgb24gYSBsaW5rZWQgbGlzdCBhbmQgYXJlIGNhbGxlZCBvbiBh CisgKiAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCBsaW5rZWQsIGZpcnN0IGNhbGxlZCBi YXNpcy4KKyAqCisgKiBGVEFfSU5URVJSVVBUSU9OX05PVElGSUVSX0VYSVQKKyAqICAgICBGcmFt ZSBNb2RpZmljYXRpb246IE5vdCBBbGxvd2VkCisgKiAgICAgTnVtYmVyIE9mIEhhbmRsZXJzOiBN dWx0aXBsZQorICogICAgICAgICAgICBPdGhlciBOb3RlczogRXhpdCBub3RpZmllciBzbG90cyBh cmUgcHJvdmlkZWQgZm9yIGRlYnVnIHB1cnBvc2VzLgorICogICAgICAgICAgICAgICAgICAgICAg ICAgVGhlIGhhbmRsZXIgaXMgaW52b2tlZCBhZnRlciBvdGhlciBoYW5kbGVycyBoYXZlCisgKiAg ICAgICAgICAgICAgICAgICAgICAgICBiZWVuIGNhbGxlZCBhbmQganVzdCBiZWZvcmUgdGhlIHN0 YWNrIGZyYW1lIGlzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlZCBwcmlvciB0 byBhIHJldHVybiBmcm9tIGludGVycnVwdGlvbi4KKyAqICAgICAgICAgICAgICAgICAgICAgICAg IFRoZXNlIGhhbmRsZXJzIG1heSBleGFtaW5lIHRoZSBmcmFtZSBidXQgbWF5IG5vdAorICogICAg ICAgICAgICAgICAgICAgICAgICAgbW9kaWZ5IGl0IGluIGFueSB3YXkgd2hhdHNvZXZlci4gIE5v dGlmaWVycyBhcmUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50YWluZWQgb24gYSBs aW5rZWQgbGlzdCBhbmQgYXJlIGNhbGxlZCBvbiBhCisgKiAgICAgICAgICAgICAgICAgICAgICAg ICBmaXJzdCBsaW5rZWQsIGZpcnN0IGNhbGxlZCBiYXNpcy4KKyAqCisgKiBGVEFfSU5URVJSVVBU SU9OX0hBTkRMRVJfREVGQVVMVAorICogICAgIEZyYW1lIE1vZGlmaWNhdGlvbjogQWxsb3dlZAor ICogICAgIE51bWJlciBPZiBIYW5kbGVyczogT25lCisgKiAgICAgICAgICAgIE90aGVyIE5vdGVz OiBUaGlzIGlzIHRoZSBPUyBkZWZhdWx0IGhhbmRsZXIgZm9yIHRoZSBpbnRlcnJ1cHRpb24uCisg KiAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGhhbmRsZXIgc2xvdCBpcyByZXNlcnZlZCBm b3IgT1Mga2VybmVsIHVzZSBvbmx5LgorICogICAgICAgICAgICAgICAgICAgICAgICAgQW4gYXR0 ZW1wdCB0byByZWdpc3RlciBmb3IgdGhpcyBoYW5kbGVyIHNsb3Qgd2lsbCBmYWlsCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICB1bnRpbCB0aGUgcHJldmlvdXMgaGFuZGxlciBoYXMgYmVlbiBj bGVhcmVkLgorICoKKyAqIEZUQV9JTlRFUlJVUFRJT05fSEFORExFUl9HRU5FUkFMX1BVUlBPU0UK KyAqICAgICBGcmFtZSBNb2RpZmljYXRpb246IEFsbG93ZWQKKyAqICAgICBOdW1iZXIgT2YgSGFu ZGxlcnM6IE11bHRpcGxlCisgKiAgICAgICAgICAgIE90aGVyIE5vdGVzOiBHZW5lcmFsIHB1cnBv c2UgaGFuZGxlcnMgYXJlIG1haW50YWluZWQgb24gYQorICogICAgICAgICAgICAgICAgICAgICAg ICAgbGlua2VkIGxpc3QgYW5kIGFyZSBjYWxsZWQgb24gYSBmaXJzdCBsaW5rZWQsIGZpcnN0Cisg KiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgYmFzaXMuICBXaGVuIGEgaGFuZGxlciBv ZiB0aGlzIHR5cGUgY2xhaW1zCisgKiAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgaW50ZXJy dXB0aW9uIGhhcyBiZWVuIGhhbmRsZWQgYnkgaXRzIHJldHVybgorICogICAgICAgICAgICAgICAg ICAgICAgICAgc3RhdHVzIG90aGVyIGdlbmVyYWwgcHVycG9zZSBoYW5kbGVycyB3aWxsIG5vdCBi ZQorICogICAgICAgICAgICAgICAgICAgICAgICAgaW52b2tlZC4KKyAqCisgKiBGVEFfSU5URVJS VVBUSU9OX0hBTkRMRVJfSEVBTFRIX01PTklUT1IKKyAqICAgICBGcmFtZSBNb2RpZmljYXRpb246 IE5vdCBBbGxvd2VkCisgKiAgICAgTnVtYmVyIE9mIEhhbmRsZXJzOiBPbmUKKyAqICAgICAgICAg ICAgT3RoZXIgTm90ZXM6IFRoZSBoZWFsdGggZHJpdmVyIG1heSBwZXJmb3JtIHN1Y2ggYWN0aW9u cyBhcworICogICAgICAgICAgICAgICAgICAgICAgICAgbW9uaXRvcmluZyB0aGUgaGVhbHRoIG9m IHRoZSBzeXN0ZW0gb3IgbG9nZ2luZworICogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGNh dXNlIG9mIGNyaXRpY2FsIGVycm9ycyB0byBOVlJBTSBwcmlvciB0byBhCisgKiAgICAgICAgICAg ICAgICAgICAgICAgICBzeXN0ZW0gY3Jhc2guICBBIGhlYWx0aCBoYW5kbGVyIG1heSB2aWV3IHRo ZSBjb250ZW50cworICogICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGZyYW1lIGJ1dCBz aG91bGQgbm90IG1vZGlmeSB0aGUgZnJhbWUgY29udGVudHMuCisgKiAgICAgICAgICAgICAgICAg ICAgICAgICBJZiBtb2RpZmljYXRpb24gb2YgdGhlIGZyYW1lIGlzIHJlcXVpcmVkIGEgc2VwYXJh dGUKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYWwgcHVycG9zZSBoYW5kbGVyIHNo b3VsZCBiZSByZWdpc3RlcmVkLgorICogICAgICAgICAgICAgICAgICAgICAgICAgQW4gYXR0ZW1w dCB0byByZWdpc3RlciBmb3IgdGhpcyBoYW5kbGVyIHNsb3Qgd2lsbCBmYWlsCisgKiAgICAgICAg ICAgICAgICAgICAgICAgICB1bnRpbCB0aGUgcHJldmlvdXMgaGFuZGxlciBoYXMgYmVlbiBjbGVh cmVkLgorICoKKyAqIEZUQV9JTlRFUlJVUFRJT05fSEFORExFUl9BUFBMSUNBVElPTl9ERUJVR0dF UgorICogICAgIEZyYW1lIE1vZGlmaWNhdGlvbjogQWxsb3dlZAorICogICAgIE51bWJlciBPZiBI YW5kbGVyczogTXVsdGlwbGUKKyAqICAgICAgICAgICAgT3RoZXIgTm90ZXM6IEFuIGFwcGxpY2F0 aW9uIGxldmVsIGRlYnVnZ2VyIHJlZ2lzdHJhdGlvbiB3aWxsCisgKiAgICAgICAgICAgICAgICAg ICAgICAgICB0YWtlIHByZWNlZGVuY2Ugb3ZlciBrZXJuZWwgbGV2ZWwgZGVidWdnZXJzLgorICoK KyAqIEZUQV9JTlRFUlJVUFRJT05fSEFORExFUl9DT1JFX0RFQlVHX0VOR0lORQorICogICAgIEZy YW1lIE1vZGlmaWNhdGlvbjogQWxsb3dlZAorICogICAgIE51bWJlciBPZiBIYW5kbGVyczogT25l CisgKiAgICAgICAgICAgIE90aGVyIE5vdGVzOiBUaGUgaW50ZW50aW9uIGhlcmUgaXMgdG8gYWxs b3cgdGhlIENERSBhbiBlYXJseSBwZWVrIGF0IHRoZQorICogICAgICAgICAgICAgICAgICAgICAg ICAgdGhlIGZyYW1lIHRvIHJlY292ZXIgZnJvbSBpbnRlcm5hbGx5IGdlbmVyYXRlZCBpbnRlcnJ1 cHRpb25zLgorICoKKyAqIEZUQV9JTlRFUlJVUFRJT05fUEFUQ0hfUkVQTEFDRU1FTlQKKyAqICAg ICBGcmFtZSBNb2RpZmljYXRpb246IEFsbG93ZWQKKyAqICAgICBOdW1iZXIgT2YgSGFuZGxlcnM6 IE9uZQorICogICAgICAgICAgICBPdGhlciBOb3RlczogQSBwYXRjaCByZXBsYWNlbWVudCBoYW5k bGVyIHByb3ZpZGVzIGEgbWVjaGFuaXNtIHdoZXJlYnkKKyAqICAgICAgICAgICAgICAgICAgICAg ICAgIHRoZSBpbmZyYXN0cnVjdHVyZSBmb3IgYSBnaXZlbiBpbnRlcnJ1cHRpb24gbWF5IGJlCisg KiAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWx5IHJlcGxhY2VkLiAgVGhlIHdyaXRl ciBvZiB0aGlzIGhhbmRsZXIgc2hvdWxkCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBiZSBp bnRpbWF0ZWx5IGZhbWlsaWFyIHdpdGggdGhlIHJlcXVpcmVtZW50cyBvZiB0aGUKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgIGludGVycnVwdGlvbiBldmVudC4gIFRoaXMgc2xvdCBpcyBwcm92 aWRlZCBhcyBhIG1lYW5zCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCByZXBsYWNl bWVudCBvZiB0aGUgaW50ZXJydXB0aW9uIGhhbmRsaW5nIGluZnJhc3RydWN0dXJlCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICBtYXkgYmUgcmVwbGFjZWQuICBQbGVhc2Ugc2VlIGZ0YUdldElu dGVycnVwdGlvbkhhbmRsZXJzKCkKKyAqICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBtb3Jl IGluZm9ybWF0aW9uIG9uIGhvdyB0byBmaW5kIGFuZCBjYWxsIHJlZ2lzdGVyZWQKKyAqICAgICAg ICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzIGZvciB0aGUgZ2l2ZW4gaW50ZXJydXB0aW9uIElE LgorICogICAgICAgICAgICAgICAgICAgICAgICAgQW4gYXR0ZW1wdCB0byByZWdpc3RlciBmb3Ig dGhpcyBoYW5kbGVyIHNsb3Qgd2lsbCBmYWlsCisgKiAgICAgICAgICAgICAgICAgICAgICAgICB1 bnRpbCB0aGUgcHJldmlvdXMgaGFuZGxlciBoYXMgYmVlbiBjbGVhcmVkLgorICovCit0eXBlZGVm IGVudW0geworCUZUQV9JTlRFUlJVUFRJT05fTk9USUZJRVJfRU5UUlksCisJRlRBX0lOVEVSUlVQ VElPTl9OT1RJRklFUl9FWElULAorCUZUQV9JTlRFUlJVUFRJT05fSEFORExFUl9ERUZBVUxULAor CUZUQV9JTlRFUlJVUFRJT05fSEFORExFUl9HRU5FUkFMX1BVUlBPU0UsCisJRlRBX0lOVEVSUlVQ VElPTl9IQU5ETEVSX0hFQUxUSF9NT05JVE9SLAorCUZUQV9JTlRFUlJVUFRJT05fSEFORExFUl9B UFBMSUNBVElPTl9ERUJVR0dFUiwKKwlGVEFfSU5URVJSVVBUSU9OX0hBTkRMRVJfQ09SRV9ERUJV R19FTkdJTkUsCisJRlRBX0lOVEVSUlVQVElPTl9QQVRDSF9SRVBMQUNFTUVOVAorfSBmdGFJbnRl cnJ1cHRpb25TdGFnZV90OworCit0eXBlZGVmIGVudW0geworCUZUQV9OT1RJRklFUl9FTlRSWSA9 IEZUQV9JTlRFUlJVUFRJT05fTk9USUZJRVJfRU5UUlksCisJRlRBX05PVElGSUVSX0VYSVQgPSBG VEFfSU5URVJSVVBUSU9OX05PVElGSUVSX0VYSVQsCisJRlRBX0hBTkRMRVJfREVGQVVMVCA9IEZU QV9JTlRFUlJVUFRJT05fSEFORExFUl9ERUZBVUxULAorCUZUQV9IQU5ETEVSX0dFTkVSQUxfUFVS UE9TRSA9IEZUQV9JTlRFUlJVUFRJT05fSEFORExFUl9HRU5FUkFMX1BVUlBPU0UsCisJRlRBX0hB TkRMRVJfSEVBTFRIX01PTklUT1IgPSBGVEFfSU5URVJSVVBUSU9OX0hBTkRMRVJfSEVBTFRIX01P TklUT1IsCisJRlRBX0hBTkRMRVJfQVBQTElDQVRJT05fREVCVUdHRVIgPSBGVEFfSU5URVJSVVBU SU9OX0hBTkRMRVJfQVBQTElDQVRJT05fREVCVUdHRVIKK30gZnRhX3N0YWdlX3Q7CisKK3R5cGVk ZWYgZW51bSB7CisJZnRhX25vX2FzeW5jLAorCWZ0YV9hc3luY19icmVha3BvaW50cywKKwlmdGFf YXN5bmNfaW50ZXJydXB0cywKKwlmdGFfYXN5bmNfcHJlZW1wdGlvbgorfSBmdGFfYXN5bmNfbGV2 ZWxfdDsKKworIyAgaWZuZGVmIE1PRFVMRQordm9pZCBhc21saW5rYWdlIGZ0YUFiYW5kb25GcmFt ZShjb25zdCBmdGFGdWxsSW50ZXJydXB0aW9uQ3R4X3QgKik7CisjICBlbmRpZgorCisjICBpZm5k ZWYgRlRBX0VYUE9SVAorIyAgIGRlZmluZSBGVEFfRVhQT1JUKHR5cGUsIG5hbWUsIC4uLikgdHlw ZSBuYW1lKF9fVkFfQVJHU19fKQorIyAgZW5kaWYKKworIyBlbHNlIC8qIENPTkZJR19OTEtEX0ZU QSAqLworIyAgdW5kZWYgRlRBX0VYUE9SVAorIyBlbmRpZiAvKiBDT05GSUdfTkxLRF9GVEEgKi8K KyNlbmRpZiAvKiBfTElOVVhfRlRBX0ggKi8KKworI2lmZGVmIEZUQV9FWFBPUlQKKyMgaW5jbHVk ZSA8YXNtL2Z0YS5oPgorCitGVEFfRVhQT1JUKExTVEFUVVMsIGZ0YUludGVycnVwdGlvblNldHVw LAorCWZ0YUludGVycnVwdGlvbklkX3QsCisJTFNUQVRVUyAoKikodm9pZCAqLCBmdGFGdWxsSW50 ZXJydXB0aW9uQ3R4X3QgKiksCisJdm9pZCAqLAorCWZ0YUludGVycnVwdGlvbkZsYWdzX3QsCisJ ZnRhSW50ZXJydXB0aW9uU3RhZ2VfdCwKKwltb2R1bGVJZF90LAorCWZ0YUludGVycnVwdGlvblRh Z190ICopOworRlRBX0VYUE9SVChMU1RBVFVTLCBmdGFJbnRlcnJ1cHRpb25DbGVhciwgZnRhSW50 ZXJydXB0aW9uVGFnX3QpOworCitGVEFfRVhQT1JUKGZ0YV9hc3luY19sZXZlbF90LCBmdGFFbmFi bGUsCisJZnRhRnVsbEludGVycnVwdGlvbkN0eF90ICosCisJZnRhX2FzeW5jX2xldmVsX3QpOwor RlRBX0VYUE9SVChjb25zdCBjaGFyKiwgZnRhR2V0SW50ZXJydXB0aW9uTmFtZSwKKwljb25zdCBm dGFGdWxsSW50ZXJydXB0aW9uQ3R4X3QgKik7CitGVEFfRVhQT1JUKHZvaWQsIGZ0YVJlc3RvcmUs IGZ0YUZ1bGxJbnRlcnJ1cHRpb25DdHhfdCAqLCBmdGFfYXN5bmNfbGV2ZWxfdCk7CisKK0ZUQV9F WFBPUlQoaW50LCBmdGFfcmVnaXN0ZXJfaGFuZGxlciwKKwlmdGFfaWRfdCwKKwlpbnQoKikoc3Ry dWN0IHB0X3JlZ3MgKiwgdm9pZCAqKSwKKwl2b2lkICosCisJdW5zaWduZWQgbG9uZyBmbGFncywK KwlmdGFfc3RhZ2VfdCwKKwltb2R1bGVJZF90LAorCWZ0YV90YWdfdCAqKTsKK0ZUQV9FWFBPUlQo aW50LCBmdGFfZGVyZWdpc3Rlcl9oYW5kbGVyLCBmdGFfdGFnX3QpOworCitGVEFfRVhQT1JUKGZ0 YV9pZF90LCBmdGFfdHlwZSwgY29uc3Qgc3RydWN0IHB0X3JlZ3MgKik7CitGVEFfRVhQT1JUKGlu dCwgZnRhX3N1YnR5cGUsIGNvbnN0IHN0cnVjdCBwdF9yZWdzICopOworRlRBX0VYUE9SVCh2b2lk LCBmdGFfc3VidHlwZV9zZXQsIHN0cnVjdCBwdF9yZWdzICosIGludCk7CitGVEFfRVhQT1JUKGlu dCwgZnRhX2Zyb21fa2VybmVsLCBjb25zdCBzdHJ1Y3QgcHRfcmVncyAqKTsKKworRlRBX0VYUE9S VCh2b2lkLCBmdGFfYWJhbmRvbiwgY29uc3Qgc3RydWN0IHB0X3JlZ3MgKik7CitGVEFfRVhQT1JU KGZ0YV9hc3luY19sZXZlbF90LCBmdGFfZW5hYmxlLCBzdHJ1Y3QgcHRfcmVncyAqLCBmdGFfYXN5 bmNfbGV2ZWxfdCk7CitGVEFfRVhQT1JUKHZvaWQsIGZ0YV9yZXN0b3JlLCBzdHJ1Y3QgcHRfcmVn cyAqLCBmdGFfYXN5bmNfbGV2ZWxfdCk7CisKKyMgdW5kZWYgRlRBX0VYUE9SVAorI2VuZGlmIC8q IEZUQV9FWFBPUlQgKi8KSW5kZXg6IDIuNi4xNC1ubGtkL2luY2x1ZGUvbGludXgvbHN0YXR1cy5o Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAorKysgMi42LjE0LW5sa2QvaW5jbHVkZS9saW51eC9sc3RhdHVzLmgJMjAwNS0wNi0yNyAx Mjo0OToyMi4wMDAwMDAwMDAgKzAyMDAKQEAgLTAsMCArMSwyNDEgQEAKKy8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICoKKyAqICAgRmlsZSBOYW1lOiAgICAgIGxzdGF0dXMuaAorICogICBDcmVhdGVk IGJ5OiAgICAgQ2x5ZGUgR3JpZmZpbgorICogICBEYXRlIGNyZWF0ZWQ6ICAgMTEvMS8xOTk4Cisg KgorICogICAldmVyc2lvbjogICAgICAgNiAlCisgKiAgICVkZXJpdmVkX2J5OiAgICBqYmV1bGlj aCAlCisgKiAgICVkYXRlX21vZGlmaWVkOiBNb24gSnVuIDI3IDA0OjQ5OjExIDIwMDUgJQorICoK KyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNSBOb3ZlbGwsIEluYy4gQWxs IFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciAgICAgICAgICAgICAqCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgICoKKyAqIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAgICAgICAg ICoKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mICAgICAgICAgICAgKgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlICAgICAgICAgICAgICAqCisgKiBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgICAgICAg ICAqCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBjb250YWN0IE5vdmVsbCwg SW5jLiAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVG8g Y29udGFjdCBOb3ZlbGwgYWJvdXQgdGhpcyBmaWxlIGJ5IHBoeXNpY2FsIG9yIGVsZWN0cm9uaWMg bWFpbCwgICAgICAgICAqCisgKiB5b3UgbWF5IGZpbmQgY3VycmVudCBjb250YWN0IGluZm9ybWF0 aW9uIGF0IHd3dy5ub3ZlbGwuY29tLiAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgor ICoJRmlsZSBEZXNjcmlwdGlvbjoKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5k ZWYgX0xJTlVYX0xTVEFUVVNfSAorI2RlZmluZSBfTElOVVhfTFNUQVRVU19ICisKKyNpbmNsdWRl IDxsaW51eC9jb25maWcuaD4KKyNpZmRlZiBfX0FTU0VNQkxZX18KKyMgZGVmaW5lIE5VSU5UX0Mo dikgdgorI2Vsc2UKKyMgaW5jbHVkZSA8bGludXgvbmludC5oPgorI2VuZGlmCisKKy8qCisgKiAg ICBUaGUgcHVycG9zZSBvZiB0aGlzIGZpbGUgaXMgdG8gcHJvdmlkZSBhIGNvbW1vbiBmb3JtYXQg YW5kIGVuY29kaW5nCisgKiAgICBzY2hlbWUgZm9yIEFQSSBzdGF0dXMgY29kZXMuCisgKiAgICBU aGUgc3RhdHVzIGNsYXNzaWZpY2F0aW9uIGFuZCBuYW1pbmcgY29udmVudGlvbnMgdXNlZCBpbiB0 aGlzIGZpbGUgYXJlCisgKiAgICBhcyBmb2xsb3dzLgorICoKKyAqICAgIExTVEFUVVMgaXMgZGVm aW5lZCBhcyBhIG5hdGl2ZSB1bnNpZ25lZCByZXR1cm4gY29kZS4gVGhlcmUgYXJlIGZvdXIKKyAq ICAgIHBhcnRzIHRvIHRoZSBzdGF0dXMuICBUaGUgbG93IGJpdHMgY29udGFpbiB0aGUgc3RhdHVz IGNvZGUuICBUaGUgbmV4dAorICogICAgcG9ydGlvbiBjb250YWlucyB0aGUgc3lic3lzdGVtIGlk ZW50aWZpZXIsIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsCisgKiAgICBzdWJzeXN0ZW0gc3BlY2lm aWMgdW5pcXVlIGlkZW50aWZpZXIuICBUaGUgdG9wIGJpdHMKKyAqICAgIFRoZSB1bmlxdWUgSUQg bWF5IGJlIHVzZWQgaW4gYSBudW1iZXIgb2Ygd2F5cyBhbmQgaXMgc3Vic3lzdGVtCisgKiAgICBz cGVjaWZpYy4gIEl0IGlzIG9wdGlvbmFsIGFuZCBzaG91bGQgYmUgemVybyBpZiBub3QgdXNlZC4K KyAqCisgKiAgICBUaGUgTFNUQVRVUyByZXR1cm4gY29kZSBtYXkgYmUgdmlld2VkIGFzIGEgdW5p b24gZGVmaW5lZCBhcyBmb2xsb3dzOgorICoKKyAqICAgIHR5cGVkZWYgdW5pb24geworICogICAg CXN0cnVjdCB7CisgKiAgICAJCW51aW50X3QJc3RhdHVzOk4xOworICogICAgCQludWludF90CXN1 YnN5c3RlbTpOMjsKKyAqICAgIAkJbnVpbnRfdAl1bmlxdWVJZDpOMzsKKyAqICAgIAkJbnVpbnRf dAljYXRlZ29yeTpONDsKKyAqICAgIAl9IGZpZWxkczsKKyAqICAgIAlMU1RBVFVTIHN0YXR1czsK KyAqICAgIH0gbFN0YXR1c190OworICoKKyAqICAgIEVhY2ggbWFqb3Igc3Vic3lzdGVtIHdpdGhp biBtYXkgYWxsb2NhdGUgYSByYW5nZSBvZiBzdGF0dXMgY29kZXMgYnkKKyAqICAgIGFkZGluZyBh ICNkZWZpbmUgdG8gdGhlIGNsYXNzaWZpY2F0aW9uIHNlY3Rpb24gYmVsb3cuCisgKiAgICBUaGUg Y29udmVudGlvbiBhbGxvd3MgZm9yIDI1NS82NTUzNSBzdWJzeXN0ZW1zIGluIHRoZSBzeXN0ZW0g d2l0aCBlYWNoCisgKiAgICBzdWJzeXN0ZW0gYmVpbmcgYWxsb3dlZCB0byBkZWZpbmUgdXAgdG8g YXMgbWFueSBhcyA0MDk1LzY1NTM1IHVuaXF1ZQorICogICAgc3RhdHVzIGNvZGVzIG9yIGVycm9y cy4gVGhpcyBzaG91bGQgYmUgYWRlcXVhdGUuCisgKgorICogICAgVGhlIGZpcnN0IHN1YnN5c3Rl bSBrbm93biBhcyBMU1RBVFVTXyBpcyBhIGdlbmVyYWwgcHVycG9zZQorICogICAgY2xhc3NpZmlj YXRpb24gdG8gYmUgdXNlZCBmb3Igc21hbGxlciBzdWJzeXN0ZW1zLCBjb21wb25lbnRzIG9yCisg KiAgICBzdGFuZCBhbG9uZSBBUElzIHdoaWNoIGRvIG5vdCBjbGVhcmx5IGZpdCBpbnRvIGEgbGFy Z2VyIGdyb3VwaW5nLgorICogICAgU3RhdHVzIGNvZGUgYWRkaXRpb25zIHRvIHRoZSBnZW5lcmFs IGFyZWEgc2hvdWxkIGJlIGNhcmVmdWxseSBjaG9zZW4KKyAqICAgIGFuZCBzb21ld2hhdCBnZW5l cmljIGluIGZsYXZvciBhcyBhbm90aGVyIGRldmVsb3BlciBvZiBhIGRpZmZlcmVudAorICogICAg Y29tcG9uZW50IG1heSBhbHNvIHVzZSB0aGF0IGRlZmluZWQgc3RhdHVzL2Vycm9yIGNvZGUuCisg KgorICogICAgSW4gZ2VuZXJhbCB5b3UgYXJlIGVuY291cmFnZWQgdG8gY3JlYXRlIHVuaXF1ZSBj bGFzc2lmaWNhdGlvbnMKKyAqICAgIGZvciBsYXJnZSBhbmQgbWlkZGxlIHNpemVkIHN1YmNvbXBv bmVudHMgb2YgdGhlIGtlcm5lbC4KKyAqCisgKiAgICBTdGF0dXMgY29kZSByZXR1cm4gdHlwZXMg YXJlIDMyLzY0IGJpdHMgaW4gc2l6ZS4KKyAqCisgKiAgICBOYW5vIGtlcm5lbCBzdWJzeXN0ZW1z IGFyZSBudW1iZXJlZCB1c2luZyBiaXRzIDMxOjE2LgorICoKKyAqICAgIFN0YXR1cyBjb2RlcyB3 aXRoaW4gZWFjaCBzdWJzeXN0ZW0gYXJlIGRlZmluZWQgdXNpbmcgYml0cyAxNTowLgorICoKKyAq ICAgIFRoZSBzdGF0dXMgY29kZXMgMC0yNTUgaW4gZWFjaCB7Y2F0ZWdvcnksc3Vic3lzdGVtfSBt dXN0IGJlIGlkZW50aWNhbAorICogICAgdG8gdGhvc2UgaW4gdGhlIGdlbmVyaWMgc3Vic3lzdGVt LiAgVGhlIGZpcnN0IHVuaXF1ZSBzdGF0dXMgY29kZSBpbiBhbnkKKyAqICAgIGdpdmVuIHN1YnN5 c3RlbSBzaG91bGQgbm90IGJlIGxlc3MgdGhhbiAyNTYuICBUaGlzIGNvbnZlbnRpb24gd2lsbAor ICogICAgYWxsb3cgdXMgdG8gYmVjb21lIGZhbWlsaWFyIHdpdGggcmV0dXJuIGNvZGVzIDwgMjU2 IHJlZ2FyZGxlc3Mgb2Ygd2hhdAorICogICAgc3Vic3lzdGVtIHRoZSBzdGF0dXMgY29kZSBjYW1l IGZyb20uCisgKgorICogICAgV2UgZG8gbm90IGV4cGVjdCB0byBoYXZlIG1vcmUgdGhhdCAyNTYg Z2VuZXJpYyBzdGF0dXMgY29kZXMuCisgKgorICogICAgU3BlY2lmaWMgc3RhdHVzIGRlZmluaXRp b25zIHdpdGhpbiBhIGdlbmVyYWwgY2xhc3NpZmljYXRpb24gbWF5IGJlCisgKiAgICBkZWZpbmVk IGluIGFub3RoZXIgaGVhZGVyIGZpbGUgbW9yZSBzcGVjaWZpYyB0byB0aGUgc3ViY29tcG9uZW50 LgorICogICAgSG93ZXZlciwgZ2VuZXJhbCBzdWJzeXN0ZW0gY2xhc3NpZmljYXRpb25zIG11c3Qg YmUgZGVmaW5lZCBpbiB0aGlzCisgKiAgICBmaWxlIGFuZCBsaXN0ZWQgaW4gbnVtZXJpYyBvcmRl ci4gIFN0YXR1cyBjb2RlIGRlZmluaXRpb25zIGluIHRoZSBnZW5lcmljCisgKiAgICBjbGFzc2lm aWNhdGlvbiwgTFNUQVRVU18sIG11c3QgYWxzbyBiZSBsaXN0ZWQgaW4gdGhpcyBmaWxlLgorICoK KyAqICAgIEFQSXMgcmV0dXJuaW5nIHN0YXR1cyBjb2RlcyBkZWZpbmVkIGJ5IHRoaXMgZmlsZSBt dXN0IGJlIGRlY2xhcmVkIHRvCisgKiAgICByZXR1cm4gTFNUQVRVUy4gIExTVEFUVVMgaXMgZGVm aW5lZCBhcyBhIG51aW50X3QuCisgKgorICoKKyAqIE5hbWluZzoKKyAqIAkgRm9yIHRoZSBwdXJw b3NlcyBvZiBwcm92aWRpbmcgYSBjb21tb24gbG9vayBhbmQgZmVlbCwgYW5kIHRvIGF2b2lkCisg KiAgICBuYW1pbmcgY29uZmxpY3RzIHRoZSBkZWZpbmVkIG5hbWVzIG9mIGVhY2ggc3RhdHVzIGNv ZGUgc2hhbGwgZm9sbG93IHRoZQorICogICAgcnVsZXMgYmVsb3cuCisgKgorICogCSAgMSkgVGhl IHN0YXR1cyBjb2RlIHdpbGwgYmUgZGVzY3JpYmVkIGluIGFsbCBjYXBpdGFsIGxldHRlcnMgd2l0 aCB0aGUgdW5kZXIKKyAqICAgICAgICBzY29yZSBjaGFyYXJhY3RlciBzZXBhcmF0aW5nIGRlc2Ny aXB0aXZlIHdvcmRzLgorICoKKyAqIAkgIDIpIFRoZSBzdGF0dXMgY29kZSB3aWxsIGJlIHByZWZp eGVkIHdpdGggdGhlIGNsYXNzaWZpY2F0aW9uIG5hbWUuCisgKiAgICAgICAgRXhhbXBsZTogIFN0 YXR1cyBjb2RlcyBpbiB0aGUgU0NIRUQgc3ViY2xhc3NpZmljYXRpb24gd2lsbCBiZWdpbgorICog ICAgICAgIHdpdGggTFNUQVRVU19TQ0hFRC4KKyAqCisgKiAJICAzKSBUaGUgZGVzY3JpcHRpdmUg cG9ydGlvbiBvZiB0aGUgc3RhdHVzIGNvZGUgZGVmaW5pdGlvbiB3aWxsIGZvbGxvdyB0aGUKKyAq ICAgICAgICB0aGUgZ2VuZXJhbCBjbGFzc2lmaWNhdGlvbi4KKyAqICAgICAgICBFeGFtcGxlOiBM U1RBVFVTX1NDSEVEX1BBUkFNRVRFUl9JTlZBTElELgorICoKKyAqLworCisjaWYgZGVmaW5lZChD T05GSUdfWDg2XzY0KSB8fCAhZGVmaW5lZChDT05GSUdfNjRCSVQpCisjIGRlZmluZSBMU1RBVFVT X1dJRFRIX1NUQVRVUwkJMTIKKyMgZGVmaW5lIExTVEFUVVNfV0lEVEhfU1VCU1lTVEVNCTgKKyMg ZGVmaW5lIExTVEFUVVNfV0lEVEhfVU5JUVVFSUQJOQorIyBkZWZpbmUgTFNUQVRVU19XSURUSF9D QVRFR09SWQkzCisjZWxzZQorIyBkZWZpbmUgTFNUQVRVU19XSURUSF9TVEFUVVMJCTE2CisjIGRl ZmluZSBMU1RBVFVTX1dJRFRIX1NVQlNZU1RFTQkxNgorIyBkZWZpbmUgTFNUQVRVU19XSURUSF9V TklRVUVJRAkyOAorIyBkZWZpbmUgTFNUQVRVU19XSURUSF9DQVRFR09SWQk0CisjZW5kaWYKKwor I2lmbmRlZiBfX0FTU0VNQkxZX18KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qCisgKgorICogVXNlIExTVEFUVVMgd2hl biBkZWNsYXJpbmcgQVBJcyB0aGF0IHJldHVybiBzdGF0dXMgY29kZSBkZWZpbml0aW9ucyBkZWZp bmVkCisgKiB1c2luZyB0aGUgY29udmVudGlvbnMgb3V0bGluZWQgaW4gdGhpcyBmaWxlLgorICoK KyAqIEV4YW1wbGU6IExTVEFUVVMgZm9vKHZvaWQpOworICovCit0eXBlZGVmIG51aW50X3QgTFNU QVRVUzsKKwordHlwZWRlZiB1bmlvbiB7CisJc3RydWN0IHsKKwkJbnVpbnRfdCBzdGF0dXM6TFNU QVRVU19XSURUSF9TVEFUVVM7CisJCW51aW50X3Qgc3Vic3lzdGVtOkxTVEFUVVNfV0lEVEhfU1VC U1lTVEVNOworCQludWludF90IHVuaXF1ZUlkOkxTVEFUVVNfV0lEVEhfVU5JUVVFSUQ7CisJCW51 aW50X3QgY2F0ZWdvcnk6TFNUQVRVU19XSURUSF9DQVRFR09SWTsKKwl9IGZpZWxkczsKKwlMU1RB VFVTIHN0YXR1czsKK30gbFN0YXR1c190OworCit0eXBlZGVmIHN0cnVjdCB7IGludCBfOnNpemVv ZihsU3RhdHVzX3QpIDw9IHNpemVvZihMU1RBVFVTKTsgfSBsU3RhdHVzX1NpemVfQXNzZXJ0Owor CisjZW5kaWYgLyogX19BU1NFTUJMWV9fICovCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qCisgKiBTdGF0dXMgY29k ZSBjYXRlZ29yeSBjbGFzc2lmaWNhdGlvbnMuCisgKi8KKyNkZWZpbmUgTFNUQVRVU19DQVRFR09S WV9TVUNDRVNTICAgICAgIE5VSU5UX0MoMCkKKyNkZWZpbmUgTFNUQVRVU19DQVRFR09SWV9JTkZP Uk1BVElPTiAgIE5VSU5UX0MoMSkKKyNkZWZpbmUgTFNUQVRVU19DQVRFR09SWV9OT1RJQ0UgICAg ICAgIE5VSU5UX0MoMikKKyNkZWZpbmUgTFNUQVRVU19DQVRFR09SWV9XQVJOSU5HICAgICAgIE5V SU5UX0MoMykKKyNkZWZpbmUgTFNUQVRVU19DQVRFR09SWV9FUlJPUiAgICAgICAgICgoTlVJTlRf QygxKSA8PCBMU1RBVFVTX1dJRFRIX0NBVEVHT1JZKSAtIDQpCisjZGVmaW5lIExTVEFUVVNfQ0FU RUdPUllfRkFUQUwgICAgICAgICAoKE5VSU5UX0MoMSkgPDwgTFNUQVRVU19XSURUSF9DQVRFR09S WSkgLSAxKQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tICovCisvKgorICogU3RhdHVzIGNvZGUgc3Vic3lzdGVtIGNsYXNzaWZp Y2F0aW9ucy4KKyAqLworI2RlZmluZSBMU1RBVFVTX1NVQlNZU18gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAKKyNkZWZpbmUgTFNUQVRVU19TVUJTWVNfU0NI RUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAxCisjZGVmaW5lIExT VEFUVVNfU1VCU1lTX01FTU9SWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDAwMgorI2RlZmluZSBMU1RBVFVTX1NVQlNZU19NTVUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAweDAwMDMKKyNkZWZpbmUgTFNUQVRVU19TVUJTWVNfSU5UUiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA0CisjZGVmaW5lIExTVEFUVVNfU1VC U1lTX0ZUQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNQorI2Rl ZmluZSBMU1RBVFVTX1NVQlNZU19DUFUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDAwMDYKKyNkZWZpbmUgTFNUQVRVU19TVUJTWVNfUkVTT1VSQ0UgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgMHgwMDA3CisjZGVmaW5lIExTVEFUVVNfU1VCU1lTX0NPTlNP TEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwOAorI2RlZmluZSBMU1RB VFVTX1NVQlNZU19DSU9TICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAw MDkKKyNkZWZpbmUgTFNUQVRVU19TVUJTWVNfUFNNICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMDBBCisjZGVmaW5lIExTVEFUVVNfU1VCU1lTX1RJTUVPVVQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwQgorCisKKy8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qCisgKiBM U1RBVFVTIGNvbnN0cnVjdGlvbi4KKyAqLworI2RlZmluZSBNQUtFX0xTVEFUVVMoc3ViLCBjYXQs IGNvZGUpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwkoKCgoKExTVEFUVVNfQ0FURUdPUllf IyNjYXQgPDwgTFNUQVRVU19XSURUSF9VTklRVUVJRCkgIFwKKwkgICAgPDwgTFNUQVRVU19XSURU SF9TVUJTWVNURU0pIHwgTFNUQVRVU19TVUJTWVNfIyNzdWIpIFwKKwkgIDw8IExTVEFUVVNfV0lE VEhfU1RBVFVTKSB8IChjb2RlKSkKKyNkZWZpbmUgTUFLRV9MU1RBVFVTX1VOSVFVRShzdWIsIGNh dCwgdWlkLCBjb2RlKSAgICAgICAgICAgICBcCisJKCgoKCgoTFNUQVRVU19DQVRFR09SWV8jI2Nh dCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJICAgICAgPDwgTFNUQVRVU19XSURUSF9V TklRVUVJRCkgfCAodWlkKSkgICAgICAgICAgICAgICBcCisJICAgIDw8IExTVEFUVVNfV0lEVEhf U1VCU1lTVEVNKSB8IExTVEFUVVNfU1VCU1lTXyMjc3ViKSBcCisJICA8PCBMU1RBVFVTX1dJRFRI X1NUQVRVUykgfCAoY29kZSkpCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qCisgKiBMU1RBVFVTXyBjbGFzc2lmaWNh dGlvbi4KKyAqCisgKiBMU1RBVFVTXyBpcyBhIGdlbmVyaWMgY2xhc3NpZmljYXRpb24uICBUaGVz ZSBkZWZpbml0aW9ucyBtYXkgYmUgdXNlZAorICogYnkgc21hbGwgc3Vic3lzdGVtcyBvciBzdGFu ZCBhbG9uZSBBUElzIHdoaWNoIGRvIG5vdCByZXF1aXJlIHN0YXR1cworICogY29kZSBkZWZpbml0 aW9ucyB3aXRoaW4gYSB1bmlxdWUgcmFuZ2UuCisgKi8KKyNkZWZpbmUgTFNUQVRVU19TVUNDRVNT ICAgICAgICAgICAgICAgICAgICAgICBNQUtFX0xTVEFUVVMoLCBTVUNDRVNTLCAweDAwMDApCisj ZGVmaW5lIExTVEFUVVNfREVGRVJSRUQgICAgICAgICAgICAgICAgICAgICAgTUFLRV9MU1RBVFVT KCwgU1VDQ0VTUywgMHgwMDAxKQorI2RlZmluZSBMU1RBVFVTX0ZBSUxVUkUgICAgICAgICAgICAg ICAgICAgICAgICAgTUFLRV9MU1RBVFVTKCwgRVJST1IsIDB4MDAwMSkKKyNkZWZpbmUgTFNUQVRV U19QQVJBTUVURVJfSU5WQUxJRCAgICAgICAgICAgICAgIE1BS0VfTFNUQVRVUygsIEVSUk9SLCAw eDAwMDIpCisjZGVmaW5lIExTVEFUVVNfUEFSQU1FVEVSX05VTEwgICAgICAgICAgICAgICAgICBN QUtFX0xTVEFUVVMoLCBFUlJPUiwgMHgwMDAzKQorI2RlZmluZSBMU1RBVFVTX1BBUkFNRVRFUl9P VVRfT0ZfUkFOR0UgICAgICAgICAgTUFLRV9MU1RBVFVTKCwgRVJST1IsIDB4MDAwNCkKKyNkZWZp bmUgTFNUQVRVU19QQVJBTUVURVJfSU5DT1JSRUNUX1RZUEUgICAgICAgIE1BS0VfTFNUQVRVUygs IEVSUk9SLCAweDAwMDUpCisjZGVmaW5lIExTVEFUVVNfSU5WQUxJRF9NT0RVTEVfSUQgICAgICAg ICAgICAgICBNQUtFX0xTVEFUVVMoLCBFUlJPUiwgMHgwMDA2KQorI2RlZmluZSBMU1RBVFVTX0JV RkZFUl9NSVNBTElHTkVEICAgICAgICAgICAgICAgTUFLRV9MU1RBVFVTKCwgRVJST1IsIDB4MDAw NykKKworI2RlZmluZSBMU1RBVFVTX01FTU9SWV9VTkFWQUlMQUJMRSAgICAgICAgTUFLRV9MU1RB VFVTKE1FTU9SWSwgRVJST1IsIDB4MDAwMCkKKworI2VuZGlmIC8qIF9MSU5VWF9MU1RBVFVTX0gg Ki8KSW5kZXg6IDIuNi4xNC1ubGtkL2luY2x1ZGUvbGludXgvbW9kdWxlLWlkLmgKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKyAy LjYuMTQtbmxrZC9pbmNsdWRlL2xpbnV4L21vZHVsZS1pZC5oCTIwMDUtMDYtMjcgMTI6NDk6NDcu MDAwMDAwMDAwICswMjAwCkBAIC0wLDAgKzEsNTMgQEAKKy8qKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICoKKyAqICAgRmlsZSBOYW1lOiAgICAgIG1vZHVsZS1pZC5oCisgKiAgIENyZWF0ZWQgYnk6ICAg ICBDbHlkZSBHcmlmZmluCisgKiAgIERhdGUgY3JlYXRlZDogICAxMS8xLzE5OTgKKyAqCisgKiAg ICV2ZXJzaW9uOiAgICAgICA1ICUKKyAqICAgJWRlcml2ZWRfYnk6ICAgIGpiZXVsaWNoICUKKyAq ICAgJWRhdGVfbW9kaWZpZWQ6IE1vbiBKdW4gMjcgMDQ6NDk6MzYgMjAwNSAlCisgKgorICoqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA1IE5vdmVsbCwgSW5jLiBBbGwgUmlnaHRz IFJlc2VydmVkLiAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yICAgICAgICAgICAgICoKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lv biAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgKgorICogYXMgcHVibGlzaGVk IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgICAgICAgICAgKgorICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YgICAgICAgICAgICAqCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgICAgICAgICAgICAgICoKKyAqIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAgICAgICAgICoKKyAq IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIGNvbnRhY3QgTm92ZWxsLCBJbmMuICAg ICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBUbyBjb250YWN0 IE5vdmVsbCBhYm91dCB0aGlzIGZpbGUgYnkgcGh5c2ljYWwgb3IgZWxlY3Ryb25pYyBtYWlsLCAg ICAgICAgICoKKyAqIHlvdSBtYXkgZmluZCBjdXJyZW50IGNvbnRhY3QgaW5mb3JtYXRpb24gYXQg d3d3Lm5vdmVsbC5jb20uICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisg KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKglGaWxl IERlc2NyaXB0aW9uOgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfTElO VVhfTU9EVUxFX0lEX0gKKyNkZWZpbmUgX0xJTlVYX01PRFVMRV9JRF9ICisKK3R5cGVkZWYgc3Ry dWN0IG1vZHVsZSAqIG1vZHVsZUlkX3Q7CisKKy8qIFNpbmNlIFRISVNfTU9EVUxFIGlzIE5VTEwg Zm9yIGNvbXBvbmVudHMgbm90IGJ1aWx0IGFzIG1vZHVsZSwgYW5kCisgICBzaW5jZSB3ZSBuZWVk IGEgbm9uLU5VTEwgdW5pcXVlIHBlci1jb21wb25lbnQgSUQgaW4gdmFyaW91cyBwbGFjZXMsCisg ICB3ZSBmYWtlIHRoaW5ncyBoZXJlLiAqLworI2lmZGVmIE1PRFVMRQorZXh0ZXJuIHN0cnVjdCBt b2R1bGUgX190aGlzX21vZHVsZTsKKyMgZGVmaW5lIFRISVNfTU9EVUxFX0lEKGlkZW50KSBjb25z dCBtb2R1bGVJZF90IGlkZW50ID0gJl9fdGhpc19tb2R1bGUKKyNlbHNlCisjIGRlZmluZSBUSElT X01PRFVMRV9JRChpZGVudCkgY29uc3QgbW9kdWxlSWRfdCBpZGVudCA9IChtb2R1bGVJZF90KSZp ZGVudAorI2VuZGlmCisKKyNlbmRpZiAvKiBfTElOVVhfTU9EVUxFX0lEX0ggKi8KSW5kZXg6IDIu Ni4xNC1ubGtkL2luY2x1ZGUvbGludXgvbmludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysgMi42LjE0LW5sa2QvaW5jbHVk ZS9saW51eC9uaW50LmgJMjAwNS0wNi0yNyAxNDowNTo0OC4wMDAwMDAwMDAgKzAyMDAKQEAgLTAs MCArMSwyNDAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICAgRmlsZSBOYW1lOiAg ICAgIG5pbnQuaAorICogICBDcmVhdGVkIGJ5OiAgICAgQ2x5ZGUgR3JpZmZpbgorICogICBEYXRl IGNyZWF0ZWQ6ICAgMTEvMS8xOTk4CisgKgorICogICAldmVyc2lvbjogICAgICAgNSAlCisgKiAg ICVkZXJpdmVkX2J5OiAgICBqYmV1bGljaCAlCisgKiAgICVkYXRlX21vZGlmaWVkOiBNb24gSnVu IDI3IDA0OjUwOjAxIDIwMDUgJQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBDb3B5cmlnaHQgKGMpIDE5 OTgtMjAwNSBOb3ZlbGwsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAg ICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgICAgICAgICAqCisgKiBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHZlcnNpb24gMiBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgICoKKyAqIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwgICAgICAgICAgICoKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgICAgICAgICAgKgorICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhl ICAgICAgICAgICAgICAqCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgICAgICAgICAqCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCBjb250YWN0IE5vdmVsbCwgSW5jLiAgICAgICAgICAgICAgICAgICAgICoKKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKgorICogVG8gY29udGFjdCBOb3ZlbGwgYWJvdXQgdGhpcyBmaWxlIGJ5 IHBoeXNpY2FsIG9yIGVsZWN0cm9uaWMgbWFpbCwgICAgICAgICAqCisgKiB5b3UgbWF5IGZpbmQg Y3VycmVudCBjb250YWN0IGluZm9ybWF0aW9uIGF0IHd3dy5ub3ZlbGwuY29tLiAgICAgICAgICAg ICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKgorICogICAgRmlsZSBEZXNjcmlwdGlvbjoKKyAqCisgKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX0xJTlVYX05JTlRfSAorI2RlZmluZSBfTElO VVhfTklOVF9ICisKKyNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KKyNpbmNsdWRlIDxsaW51eC9z dGRkZWYuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L25scy5o PiAvKiBmb3Igd2NoYXJfdCAqLworCisvKgorICogQWxpZ25tZW50IE1hY3JvcyBmb3IgTG9IaSBN YWNoaW5lIFR5cGVzCisgKi8KKyNpZm5kZWYgU1RSSUNUX0FMSUdOTUVOVAorIyBpZiBkZWZpbmVk KF9NX0lYODYpIHx8IGRlZmluZWQoX19pMzg2X18pIFwKKyAgfHwgZGVmaW5lZChfTV9BTUQ2NCkg fHwgZGVmaW5lZChfX3g4Nl82NF9fKQorIyAgZGVmaW5lIFNUUklDVF9BTElHTk1FTlQgMAorIyBl bHNlCisjICBkZWZpbmUgU1RSSUNUX0FMSUdOTUVOVCAxCisjIGVuZGlmCisjZW5kaWYKKyNpZm5k ZWYgVU5BTElHTkVEX1NVUFBPUlQKKyMgaWYgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSB8fCAo ZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfTV9JQTY0KSkKKyMgIGRlZmluZSBVTkFMSUdO RURfU1VQUE9SVCBfX3VuYWxpZ25lZAorIyBlbGlmICFTVFJJQ1RfQUxJR05NRU5UCisjICBkZWZp bmUgVU5BTElHTkVEX1NVUFBPUlQKKyMgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChfTV9J QTY0KSB8fCBkZWZpbmVkKF9faWE2NF9fKQorCisjIGRlZmluZSBOQVRJVkVfQVBQRU5EXyhwKQkJ cCMjNjQKKyMgZGVmaW5lIE5BVElWRV9FTUJFRF8ocCwgcykJCXAjIzY0IyNzCisjIGRlZmluZSBQ SFlTQUREUl9BUFBFTkRfKHApCQlwIyM2NAorIyBkZWZpbmUgUEhZU0FERFJfRU1CRURfKHAsIHMp CXAjIzY0IyNzCisKKyNlbGlmIGRlZmluZWQoX01fSVg4NikgfHwgZGVmaW5lZChfX2kzODZfXykg XAorICAgfHwgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQorCisjIGRl ZmluZSBOQVRJVkVfQVBQRU5EXyhwKQkJcCMjMzIKKyMgZGVmaW5lIE5BVElWRV9FTUJFRF8ocCwg cykJCXAjIzMyIyNzCisjIGRlZmluZSBQSFlTQUREUl9BUFBFTkRfKHApCQlwIyM2NAorIyBkZWZp bmUgUEhZU0FERFJfRU1CRURfKHAsIHMpCXAjIzY0IyNzCisKKyNlbGlmICFkZWZpbmVkKE5BVElW RV9BUFBFTkRfKSB8fCAhZGVmaW5lZChOQVRJVkVfRU1CRURfKSB8fCAhZGVmaW5lZChQSFlTQURE Ul9BUFBFTkRfKSB8fCAhZGVmaW5lZChQSFlTQUREUl9FTUJFRF8pCisjIGVycm9yIFVuaW1wbGVt ZW50ZWQhCisjZW5kaWYKKworI2lmZGVmIENPTkZJR182NEJJVAorIyBkZWZpbmUgUE9JTlRFUl9B UFBFTkRfKHApCQlwIyM2NAorIyBkZWZpbmUgUE9JTlRFUl9FTUJFRF8ocCwgcykJCXAjIzY0IyNz CisjZWxzZQorIyBkZWZpbmUgUE9JTlRFUl9BUFBFTkRfKHApCQlwIyMzMgorIyBkZWZpbmUgUE9J TlRFUl9FTUJFRF8ocCwgcykJCXAjIzMyIyNzCisjZW5kaWYKKwordHlwZWRlZiBQT0lOVEVSX0VN QkVEXyhpbnQsIF90KQlpbnRwdHJfdDsKK3R5cGVkZWYgUE9JTlRFUl9FTUJFRF8odWludCwgX3Qp CXVpbnRwdHJfdDsKK3R5cGVkZWYgTkFUSVZFX0VNQkVEXyhpbnQsIF90KQluaW50X3Q7Cit0eXBl ZGVmIE5BVElWRV9FTUJFRF8odWludCwgX3QpCW51aW50X3Q7Cit0eXBlZGVmIFBIWVNBRERSX0VN QkVEXyh1aW50LCBfdCkJcGh5c2FkZHJfdDsKKworI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVzKSB8 fCBkZWZpbmVkKF9fU1REQ19MSU1JVF9NQUNST1MpCisjIGlmbmRlZiBJTlQzMl9NQVgKKyMgIGRl ZmluZSBJTlQ4X01BWAkJSU5UOF9DICgweDdmKQorIyAgZGVmaW5lIElOVDhfTUlOCQkoLUlOVDhf TUFYLTEpCisjICBkZWZpbmUgSU5UMTZfTUFYCQlJTlQxNl9DKDB4N2ZmZikKKyMgIGRlZmluZSBJ TlQxNl9NSU4JCSgtSU5UMTZfTUFYLTEpCisjICBkZWZpbmUgSU5UMzJfTUFYCQlJTlQzMl9DKDB4 N2ZmZmZmZmYpCisjICBkZWZpbmUgSU5UMzJfTUlOCQkoLUlOVDMyX01BWC0xKQorIyAgZGVmaW5l IElOVDY0X01BWAkJSU5UNjRfQygweDdmZmZmZmZmZmZmZmZmZmYpCisjICBkZWZpbmUgSU5UNjRf TUlOCQkoLUlOVDY0X01BWC0xKQorIyBlbmRpZgorIyBpZm5kZWYgVUlOVDMyX01BWAorIyAgZGVm aW5lIFVJTlQ4X01BWAkJVUlOVDhfQyAoMHhmZikKKyMgIGRlZmluZSBVSU5UMTZfTUFYCVVJTlQx Nl9DKDB4ZmZmZikKKyMgIGRlZmluZSBVSU5UMzJfTUFYCVVJTlQzMl9DKDB4ZmZmZmZmZmYpCisj ICBkZWZpbmUgVUlOVDY0X01BWAlVSU5UNjRfQygweGZmZmZmZmZmZmZmZmZmZmYpCisjIGVuZGlm CisjIGRlZmluZSBJTlRQVFJfTUlOCQlQT0lOVEVSX0VNQkVEXyhJTlQsIF9NSU4pCisjIGRlZmlu ZSBJTlRQVFJfTUFYCQlQT0lOVEVSX0VNQkVEXyhJTlQsIF9NQVgpCisjIGRlZmluZSBVSU5UUFRS X01BWAlQT0lOVEVSX0VNQkVEXyhVSU5ULCBfTUFYKQorIyBkZWZpbmUgTklOVF9NSU4JCU5BVElW RV9FTUJFRF8oSU5ULCBfTUlOKQorIyBkZWZpbmUgTklOVF9NQVgJCU5BVElWRV9FTUJFRF8oSU5U LCBfTUFYKQorIyBkZWZpbmUgTlVJTlRfTUFYCQlOQVRJVkVfRU1CRURfKFVJTlQsIF9NQVgpCisj IGRlZmluZSBQSFlTQUREUl9NQVgJUEhZU0FERFJfRU1CRURfKFVJTlQsIF9NQVgpCisjZW5kaWYK KworI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVzKSB8fCBkZWZpbmVkKF9fU1REQ19DT05TVEFOVF9N QUNST1MpCisjIGlmbmRlZiBJTlQzMl9DCisjICBkZWZpbmUgSU5UOF9DKG4pCQkobikKKyMgIGRl ZmluZSBJTlQxNl9DKG4pCShuKQorIyAgZGVmaW5lIElOVDMyX0MobikJKG4pCisjICBkZWZpbmUg SU5UNjRfQyhuKQkobiMjTEwpCisjIGVuZGlmCisjIGlmbmRlZiBVSU5UMzJfQworIyAgZGVmaW5l IFVJTlQ4X0MobikJKG4pCisjICBkZWZpbmUgVUlOVDE2X0MobikJKG4pCisjICBkZWZpbmUgVUlO VDMyX0MobikJKG4jI1UpCisjICBkZWZpbmUgVUlOVDY0X0MobikJKG4jI1VMTCkKKyMgZW5kaWYK KyMgZGVmaW5lIElOVFBUUl9DCQlQT0lOVEVSX0VNQkVEXyhJTlQsIF9DKQorIyBkZWZpbmUgVUlO VFBUUl9DCQlQT0lOVEVSX0VNQkVEXyhVSU5ULCBfQykKKyMgZGVmaW5lIE5JTlRfQwkJTkFUSVZF X0VNQkVEXyhJTlQsIF9DKQorIyBkZWZpbmUgTlVJTlRfQwkJTkFUSVZFX0VNQkVEXyhVSU5ULCBf QykKKyMgZGVmaW5lIFBIWVNBRERSX0MJCVBIWVNBRERSX0VNQkVEXyhVSU5ULCBfQykKKyNlbmRp ZgorCisjaWYgIWRlZmluZWQoX19jcGx1c3BsdXMpIHx8IGRlZmluZWQoX19TVERDX0ZPUk1BVF9N QUNST1MpCisjIGlmbmRlZiBQUklkMzIKKyMgIGRlZmluZSBQUklfOCh0KSAgI3QKKyMgIGRlZmlu ZSBQUklkOCBQUklfOChkKQorIyAgZGVmaW5lIFBSSWk4IFBSSV84KGkpCisjICBkZWZpbmUgUFJJ bzggUFJJXzgobykKKyMgIGRlZmluZSBQUkl1OCBQUklfOCh1KQorIyAgZGVmaW5lIFBSSXg4IFBS SV84KHgpCisjICBkZWZpbmUgUFJJWDggUFJJXzgoWCkKKworIyAgZGVmaW5lIFBSSV8xNih0KSAj dAorIyAgZGVmaW5lIFBSSWQxNiBQUklfMTYoZCkKKyMgIGRlZmluZSBQUklpMTYgUFJJXzE2KGkp CisjICBkZWZpbmUgUFJJbzE2IFBSSV8xNihvKQorIyAgZGVmaW5lIFBSSXUxNiBQUklfMTYodSkK KyMgIGRlZmluZSBQUkl4MTYgUFJJXzE2KHgpCisjICBkZWZpbmUgUFJJWDE2IFBSSV8xNihYKQor CisjICBkZWZpbmUgUFJJXzMyKHQpICN0CisjICBkZWZpbmUgUFJJZDMyIFBSSV8zMihkKQorIyAg ZGVmaW5lIFBSSWkzMiBQUklfMzIoaSkKKyMgIGRlZmluZSBQUklvMzIgUFJJXzMyKG8pCisjICBk ZWZpbmUgUFJJdTMyIFBSSV8zMih1KQorIyAgZGVmaW5lIFBSSXgzMiBQUklfMzIoeCkKKyMgIGRl ZmluZSBQUklYMzIgUFJJXzMyKFgpCisKKyMgIGRlZmluZSBQUklfNjQodCkgIkwiI3QKKyMgIGRl ZmluZSBQUklkNjQgUFJJXzY0KGQpCisjICBkZWZpbmUgUFJJaTY0IFBSSV82NChpKQorIyAgZGVm aW5lIFBSSW82NCBQUklfNjQobykKKyMgIGRlZmluZSBQUkl1NjQgUFJJXzY0KHUpCisjICBkZWZp bmUgUFJJeDY0IFBSSV82NCh4KQorIyAgZGVmaW5lIFBSSVg2NCBQUklfNjQoWCkKKworIyBlbmRp ZgorIyBkZWZpbmUgTlBSSWQJCU5BVElWRV9BUFBFTkRfKFBSSWQpCisjIGRlZmluZSBOUFJJaQkJ TkFUSVZFX0FQUEVORF8oUFJJaSkKKyMgZGVmaW5lIE5QUklvCQlOQVRJVkVfQVBQRU5EXyhQUklv KQorIyBkZWZpbmUgTlBSSXUJCU5BVElWRV9BUFBFTkRfKFBSSXUpCisjIGRlZmluZSBOUFJJeAkJ TkFUSVZFX0FQUEVORF8oUFJJeCkKKyMgZGVmaW5lIE5QUklYCQlOQVRJVkVfQVBQRU5EXyhQUklY KQorIyBkZWZpbmUgTlNDTmQJCU5BVElWRV9BUFBFTkRfKFNDTmQpCisjIGRlZmluZSBOU0NOaQkJ TkFUSVZFX0FQUEVORF8oU0NOaSkKKyMgZGVmaW5lIE5TQ05vCQlOQVRJVkVfQVBQRU5EXyhTQ05v KQorIyBkZWZpbmUgTlNDTnUJCU5BVElWRV9BUFBFTkRfKFNDTnUpCisjIGRlZmluZSBOU0NOeAkJ TkFUSVZFX0FQUEVORF8oU0NOeCkKKyMgZGVmaW5lIFBQUklkCQlQSFlTQUREUl9BUFBFTkRfKFBS SWQpCisjIGRlZmluZSBQUFJJaQkJUEhZU0FERFJfQVBQRU5EXyhQUklpKQorIyBkZWZpbmUgUFBS SW8JCVBIWVNBRERSX0FQUEVORF8oUFJJbykKKyMgZGVmaW5lIFBQUkl1CQlQSFlTQUREUl9BUFBF TkRfKFBSSXUpCisjIGRlZmluZSBQUFJJeAkJUEhZU0FERFJfQVBQRU5EXyhQUkl4KQorIyBkZWZp bmUgUFBSSVgJCVBIWVNBRERSX0FQUEVORF8oUFJJWCkKKyMgZGVmaW5lIFBTQ05kCQlQSFlTQURE Ul9BUFBFTkRfKFNDTmQpCisjIGRlZmluZSBQU0NOaQkJUEhZU0FERFJfQVBQRU5EXyhTQ05pKQor IyBkZWZpbmUgUFNDTm8JCVBIWVNBRERSX0FQUEVORF8oU0NObykKKyMgZGVmaW5lIFBTQ051CQlQ SFlTQUREUl9BUFBFTkRfKFNDTnUpCisjIGRlZmluZSBQU0NOeAkJUEhZU0FERFJfQVBQRU5EXyhT Q054KQorI2VuZGlmCisKKyNkZWZpbmUgR0VUUFRSKGFkZHIpCVBPSU5URVJfQVBQRU5EXyhHRVQp KGFkZHIpCisjZGVmaW5lIFBVVFBUUihuLCBhZGRyKQlQT0lOVEVSX0FQUEVORF8oUFVUKShuLCBh ZGRyKQorI2RlZmluZSBHRVROKGFkZHIpCQlOQVRJVkVfQVBQRU5EXyhHRVQpKGFkZHIpCisjZGVm aW5lIFBVVE4obiwgYWRkcikJTkFUSVZFX0FQUEVORF8oUFVUKShuLCBhZGRyKQorI2RlZmluZSBH RVRQSFlTKGFkZHIpCVBIWVNBRERSX0FQUEVORF8oR0VUKShhZGRyKQorI2RlZmluZSBQVVRQSFlT KHBhLCBhZGRyKSBQSFlTQUREUl9BUFBFTkRfKFBVVCkocGEsIGFkZHIpCisKKy8qCisgKiBEZWZp bmUgYSB0eXBlIHN1aXRhYmxlIGZvciBmb3JjaW5nIDEyOC1iaXQgKDE2LWJ5dGUpIHN0cnVjdHVy ZSBhbGlnbm1lbnQKKyAqLworI2lmIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKKwordHlwZWRl ZiBsb25nIGxvbmcgX19tMTI4OwordHlwZWRlZiBfX20xMjggYWxpZ24xMjhfdDsKKworI2VsaWYg ZGVmaW5lZChfX0VDTCkKKwordHlwZWRlZiBfX2ludDEyOCBhbGlnbjEyOF90OworCisjZWxpZiBk ZWZpbmVkKF9fR05VQ19fKQorCit0eXBlZGVmIHN0cnVjdCB7CisJY2hhciBfOworfSBhbGlnbjEy OF90IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDE2KSkpOworCisjZW5kaWYKKwordHlwZWRl ZiB1bmlvbiB7CisjaWYgZGVmaW5lZChfTV9JQTY0KSB8fCBkZWZpbmVkKF9faWE2NF9fKQorCWFs aWduMTI4X3QgICAgICAgIGZwMTI4OworI2VuZGlmCisJc3RydWN0IHsKKwkJdWludDY0X3QgbG9m bHQ7CisJCXVpbnQ2NF90IGhpZmx0OworCX0gcmVhbF9mcDsKK30gZmxvYXQxMjhfdDsKKworI2Vu ZGlmIC8qIF9MSU5VWF9OSU5UX0ggKi8KSW5kZXg6IDIuNi4xNC1ubGtkL2luY2x1ZGUvbGludXgv bmxrZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAorKysgMi42LjE0LW5sa2QvaW5jbHVkZS9saW51eC9ubGtkLmgJMjAwNS0xMS0w MyAxMjowNDoxMi4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSwyNDEgQEAKKy8qKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorICoKKyAqICAgRmlsZSBOYW1lOiAgICAgIG5sa2QuaAorICogICBDcmVhdGVk IGJ5OiAgICAgSmFuIEJldWxpY2gKKyAqICAgJXZlcnNpb246ICAgICAgIDE3ICUKKyAqICAgJWRl cml2ZWRfYnk6ICAgIGpiZXVsaWNoICUKKyAqICAgJWRhdGVfbW9kaWZpZWQ6IFRodSBOb3YgMDMg MDQ6MDM6NTcgMjAwNSAlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqIENvcHlyaWdodCAoYykgMTk5OS0y MDA1IE5vdmVsbCwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgKgor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAgICAgICAgICoKKyAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdmVyc2lvbiAyIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSAgKgorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoK KyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLCAgICAgICAgICAgKgorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgICAgICAgICAqCisgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgICAg ICAgICAgICAgICoKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSAgICAgICAgICoKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIGNvbnRhY3QgTm92ZWxsLCBJbmMuICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAqCisgKiBUbyBjb250YWN0IE5vdmVsbCBhYm91dCB0aGlzIGZpbGUgYnkgcGh5 c2ljYWwgb3IgZWxlY3Ryb25pYyBtYWlsLCAgICAgICAgICoKKyAqIHlvdSBtYXkgZmluZCBjdXJy ZW50IGNvbnRhY3QgaW5mb3JtYXRpb24gYXQgd3d3Lm5vdmVsbC5jb20uICAgICAgICAgICAgICAg KgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqCisgKglGaWxlIERlc2NyaXB0aW9uOgorICoKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKi8KKworI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgorCisjaWZuZGVmIERFQlVH X0VWRU5UX0VOVEVSX0RFQlVHR0VSCisjIGRlZmluZSBERUJVR19FVkVOVF9FTlRFUl9ERUJVR0dF UgkJMAorCisvKiBuZWdhdGl2ZSB2YWx1ZXMgYXJlIGVycm9yIGNvbmRpdGlvbnMgKi8KKyMgZGVm aW5lIERFQlVHX0VWRU5UX1BBTklDCQkJKC0xKQorIyBkZWZpbmUgREVCVUdfRVZFTlRfQVNTRVJU CQkJKC0yKQorCisvKiBwb3NpdGl2ZSB2YWx1ZXMgYXJlIGluZm9ybWF0aW9uYWwgKi8KKyMgZGVm aW5lIERFQlVHX0VWRU5UX01FU1NBR0UJCQkxCisjIGRlZmluZSBERUJVR19FVkVOVF9NT0RVTEVf TE9BRAkJMgorIyBkZWZpbmUgREVCVUdfRVZFTlRfTU9EVUxFX1VOTE9BRAkJMworIyBkZWZpbmUg REVCVUdfRVZFTlRfVEhSRUFEX0NSRUFURQkJNAorIyBkZWZpbmUgREVCVUdfRVZFTlRfVEhSRUFE X0RFU1RST1kJNQorCisjIGlmbmRlZiBfX0FTU0VNQkxZX18KKyMgIGlmZGVmIENPTkZJR19OTEtE CisKKyMgICBpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CisjICAgaW5jbHVkZSA8bGludXgvY29t cGlsZXIuaD4KKworYXNtbGlua2FnZSB2b2lkIG5sa2RBc3NlcnQoY29uc3QgY2hhcipzdHJpbmcs CisJY29uc3QgY2hhcipmaWxlLAorCWNvbnN0IGNoYXIqZnVuYywKKwl1bnNpZ25lZCBsaW5lKTsK K2FzbWxpbmthZ2Ugdm9pZCBubGtkRGVidWdFdmVudChpbnQgZXZlbnRDb2RlLCAuLi4pOworYXNt bGlua2FnZSB2b2lkIG5sa2RFbnRlckRlYnVnZ2VyKHZvaWQpOworYXNtbGlua2FnZSB2b2lkIG5s a2RQYW5pYyhjb25zdCBjaGFyKiwgLi4uKTsKK3N0cnVjdCBmdGFJbnRlcnJ1cHRpb25DdHhfczsK K2ludCBubGtkSXNEZWJ1Z0V2ZW50KGNvbnN0IHN0cnVjdCBmdGFJbnRlcnJ1cHRpb25DdHhfcyop OworIyAgIGlmbmRlZiBDT05GSUdfTkxLRF9GVEEKK3ZvaWQgbmxrZFNldERlYnVnRXZlbnRUeXBl KHN0cnVjdCBmdGFJbnRlcnJ1cHRpb25DdHhfcyopOworIyAgIGVuZGlmCisKKyMgICBpZiBkZWZp bmVkKF9fR05VQ19fKQorIyAgICBkZWZpbmUgcnRBU1NFUlQoZSkgKCh2b2lkKShsaWtlbHkoZSkg fHwgKG5sa2RBc3NlcnQoI2UsIF9fRklMRV9fLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBfX0xJTkVf XyksIDApKSkKKyMgICBlbGlmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTAorIyAgICBkZWZp bmUgcnRBU1NFUlQoZSkgKCh2b2lkKShsaWtlbHkoZSkgfHwgKG5sa2RBc3NlcnQoI2UsIF9fRklM RV9fLCBfX2Z1bmNfXywgX19MSU5FX18pLCAwKSkpCisjICAgZWxzZQorIyAgICBkZWZpbmUgcnRB U1NFUlQoZSkgKCh2b2lkKShsaWtlbHkoZSkgfHwgKG5sa2RBc3NlcnQoI2UsIF9fRklMRV9fLCBO VUxMLCBfX0xJTkVfXyksIDApKSkKKyMgICBlbmRpZgorCisjICBlbHNlIC8qIENPTkZJR19OTEtE ICovCisKKyMgICBpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKworc3RhdGljIGlubGluZSB2b2lk IG5sa2REZWJ1Z0V2ZW50KGludCBldmVudENvZGUsIC4uLikge30KKyMgICBkZWZpbmUgbmxrZFBh bmljIHBhbmljCisKKyMgIGVuZGlmIC8qIENPTkZJR19OTEtEICovCisjIGVuZGlmIC8qICFfX0FT U0VNQkxZX18gKi8KKyNlbmRpZiAvKiBERUJVR19FVkVOVF94eHggKi8KKworI2lmbmRlZiBfTElO VVhfTkxLRF9ICisjZGVmaW5lIF9MSU5VWF9OTEtEX0gKKyMgaWZuZGVmIF9fQVNTRU1CTFlfXwor CisjICBpZmRlZiBDT05GSUdfTkxLRAorCisjICAgaW5jbHVkZSA8bGludXgvbW9kdWxlLWlkLmg+ CisjICAgaW5jbHVkZSA8bGludXgvbmludC5oPgorIyAgIGluY2x1ZGUgPGxpbnV4L2xzdGF0dXMu aD4KKyMgICBpbmNsdWRlIDxzdGRhcmcuaD4KKwordm9pZCBubGtkX2luaXQodm9pZCk7Cit2b2lk IG5sa2RfaW5pdF9kb25lKHZvaWQpOworCisjICAgZGVmaW5lIE5MS0RfRVhUX0lEX01BWCAzMgor Cit0eXBlZGVmIHZvaWQgbmxrZEV4dEhhbmRsZXJfdCh2b2lkKmNvbnRleHQsIGNvbnN0IGNoYXIq Y29tbWFuZCk7CisKK3ZvaWQgbmxrZEV4dElucHV0U3RyaW5nKGNoYXIqYnVmZmVyLCBudWludF90 IGJ1ZmZlclNpemUpOwordm9pZCBubGtkRXh0T3V0cHV0U3RyaW5nKGNvbnN0IGNoYXIqKTsKK2lu dCBubGtkRXh0UHJpbnRmKGNvbnN0IGNoYXIqLCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0 X18oX19wcmludGZfXywgMSwgMikpKTsKK0xTVEFUVVMgbmxrZEV4dFJlZ2lzdGVyKGNvbnN0IGNo YXIqaWQsCisJbmxrZEV4dEhhbmRsZXJfdCosCisJdm9pZCpoYW5kbGVyQ29udGV4dCwKKwltb2R1 bGVJZF90LAorCWNvbnN0IGNoYXIqZGVzY3JpcHRpb24sCisJbnVpbnRfdCBmbGFncyk7CitMU1RB VFVTIG5sa2RFeHRVbnJlZ2lzdGVyKGNvbnN0IGNoYXIqaWQsIG1vZHVsZUlkX3QpOworaW50IG5s a2RFeHRWcHJpbnRmKGNvbnN0IGNoYXIqLCB2YV9saXN0KTsKKworIyAgIGlmbmRlZiBNT0RVTEUK Ky8qIEZvciBjb2RlIG5lZWRpbmcgbm8gaW5pdGlhbGl6YXRpb24gKGUuZy4gcHJpbnRrKSwgcHJv dmlkZSBhIHdheSB0byBzdG9yZQorICAgdGhlIGhhbmRsZXIgaW5mb3JtYXRpb24gd2l0aG91dCB0 aGUgbmVlZCB0byBjYWxsIG5sa2RFeHRSZWdpc3RlcigpLiAqLwordHlwZWRlZiBjb25zdCBzdHJ1 Y3QgeworCWNvbnN0IGNoYXIqaWQ7CisJbmxrZEV4dEhhbmRsZXJfdCpoYW5kbGVyOworCXZvaWQq aGFuZGxlckNvbnRleHQ7CisJY29uc3QgbW9kdWxlSWRfdCpwTW9kdWxlSWQ7CisJY29uc3QgY2hh cipkZXNjcmlwdGlvbjsKKwludWludF90IGZsYWdzOworfSBubGtkRXh0ZW5zaW9uX3Q7CisjICAg IGRlZmluZSBOTEtEX0VYVEVOU0lPTihpZCwgaGFuZGxlciwgY3R4LCBtb2QsIGRlc2NyLCBmbGcp IFwKKwlzdGF0aWMgbmxrZEV4dGVuc2lvbl90IF9fbmxrZF9leHRfIyNpZCAgICAgICAgICAgICAg ICBcCisJCV9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKCIubmxrZC5leHQiKSkpICAgICBcCisJ CV9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHNpemVvZih2b2lkKikpKSkgICBcCisJCV9fYXR0 cmlidXRlX3VzZWRfXyA9IHsgICAgICAgICAgICAgICAgICAgICAgICBcCisJCSNpZCwgaGFuZGxl ciwgY3R4LCAmbW9kLCBkZXNjciwgZmxnICAgICAgICAgICBcCisJfQorIyAgIGVuZGlmCisKK3N0 cnVjdCBwdF9yZWdzOworc3RydWN0IGNkZUJQU3RydWN0X3M7CisKKyMgICBpZmRlZiBDT05GSUdf Q0RFCisjICAgIGRlZmluZSBNQVlCRV9JTkRJUih4KSBjZGVCUCMjeAorIyAgIGVsc2UKKyMgICAg ZGVmaW5lIE1BWUJFX0lORElSKHgpICgqeCkKK2V4dGVybiBzdHJ1Y3QgbmxrZEJQWGZhY2VfcyB7 CisjICAgZW5kaWYKKworLyoKKyAqCisgKi8KK3ZvaWQgTUFZQkVfSU5ESVIoTG9hZCkoCisJdm9p ZCk7CisKKy8qCisgKgorICovCit2b2lkIE1BWUJFX0lORElSKEVudkNsZWFyQWxsKSgKKwlzdHJ1 Y3QgY2RlQlBTdHJ1Y3RfcyAqICogYnBIZWFkKTsKKworLyoKKyAqCisgKi8KK3ZvaWQgTUFZQkVf SU5ESVIoRW52RGlzYWJsZUFsbCkoCisJY29uc3Qgc3RydWN0IGNkZUJQU3RydWN0X3MgKiBjb25z dCAqIGJwSGVhZCk7CisKKy8qCisgKgorICovCit2b2lkIE1BWUJFX0lORElSKEVudkVuYWJsZUFs bCkoCisJY29uc3Qgc3RydWN0IGNkZUJQU3RydWN0X3MgKiBjb25zdCAqIGJwSGVhZCk7CisKKy8q CisgKgorICovCitpbnQgTUFZQkVfSU5ESVIoRW52Q2hlY2tBbGwpKAorCWNvbnN0IHN0cnVjdCBw dF9yZWdzICosCisJY29uc3Qgc3RydWN0IGNkZUJQU3RydWN0X3MgKiBjb25zdCAqIGJwSGVhZCk7 CisKKyMgICB1bmRlZiBNQVlCRV9JTkRJUgorIyAgIGlmbmRlZiBDT05GSUdfQ0RFCit9IGNvbnN0 ICogbmxrZEJQWGZhY2U7CisjICAgZW5kaWYKKworIyAgZWxzZQorCisjICAgZGVmaW5lIG5sa2Rf aW5pdCgpCisjICAgZGVmaW5lIG5sa2RfaW5pdF9kb25lKCkKKworIyAgZW5kaWYKKworIyAgaWZu ZGVmIGJwX2xpc3RfaGFuZGxlCisjICAgaWYgZGVmaW5lZChDT05GSUdfQ0RFKQorIyAgICBkZWZp bmUgYnBfbGlzdF9oYW5kbGUod2hhdCwgY29uZCwgb2JqKSAoKGNvbmQpIFwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2RlQlBFbnYjI3doYXQjI0FsbCgm KG9iaiktPmJwTGlzdCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiAodm9pZCkob2JqKSkKKyMgICAgZGVmaW5lIGJwX2xpc3RfY2xlYXIob2JqKSBicF9s aXN0X2hhbmRsZShDbGVhciwgKG9iaiktPmJwTGlzdCwgb2JqKQorIyAgICBkZWZpbmUgYnBfbGlz dF9jaGVjayhyZWdzLCBvYmopICgob2JqKS0+YnBMaXN0IFwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPyBjZGVCUEVudkNoZWNrQWxsKHJlZ3MsICYob2JqKS0+YnBMaXN0 KSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKCh2b2lkKShyZWdz KSwgKHZvaWQpKG9iaiksIC0xKSkKKyMgICAgZGVmaW5lIGJwX2xvYWQoKSBjZGVCUExvYWQoKQor IyAgIGVsaWYgZGVmaW5lZChDT05GSUdfTkxLRCkKKyMgICAgZGVmaW5lIGJwX2xpc3RfaGFuZGxl KHdoYXQsIGNvbmQsIG9iaikgKChjb25kKSAmJiBubGtkQlBYZmFjZSBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IG5sa2RCUFhmYWNlLT5FbnYjI3doYXQj I0FsbCgmKG9iaiktPmJwTGlzdCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiAodm9pZCkob2JqKSkKKyMgICAgZGVmaW5lIGJwX2xpc3RfY2xlYXIob2Jq KSBicF9saXN0X2hhbmRsZShDbGVhciwgKG9iaiktPmJwTGlzdCwgb2JqKQorIyAgICBkZWZpbmUg YnBfbGlzdF9jaGVjayhyZWdzLCBvYmopICgob2JqKS0+YnBMaXN0ICYmIG5sa2RCUFhmYWNlIFwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBubGtkQlBYZmFjZS0+RW52 Q2hlY2tBbGwocmVncywgJihvYmopLT5icExpc3QpIFwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOiAoKHZvaWQpKHJlZ3MpLCAodm9pZCkob2JqKSwgMCkpCisjICAgIGRl ZmluZSBicF9sb2FkKCkgKG5sa2RCUFhmYWNlID8gbmxrZEJQWGZhY2UtPkxvYWQoKSA6ICh2b2lk KTApCisjICAgZWxzZQorIyAgICBkZWZpbmUgYnBfbGlzdF9oYW5kbGUod2hhdCwgY29uZCwgb2Jq KSAoKHZvaWQpKGNvbmQpLCAodm9pZCkob2JqKSkKKyMgICAgZGVmaW5lIGJwX2xpc3RfY2xlYXIo b2JqKSAoKHZvaWQpKG9iaikpCisjICAgIGRlZmluZSBicF9saXN0X2NoZWNrKHJlZ3MsIG9iaikg KCh2b2lkKShyZWdzKSwgKHZvaWQpKG9iaiksIC0xKQorIyAgICBkZWZpbmUgYnBfbG9hZCgpICgo dm9pZCkwKQorIyAgIGVuZGlmCisjICAgZGVmaW5lIGJwX2xpc3RfZGlzYWJsZShjb25kLCBvYmop IGJwX2xpc3RfaGFuZGxlKERpc2FibGUsIGNvbmQsIG9iaikKKyMgICBkZWZpbmUgYnBfbGlzdF9l bmFibGUoY29uZCwgb2JqKSBicF9saXN0X2hhbmRsZShFbmFibGUsIGNvbmQsIG9iaikKKyMgIGVu ZGlmCisKKyMgIGRlZmluZSBjdEFTU0VSVF9HTFVFKHgsIHkpIHgjI3kKKyMgIGRlZmluZSBjdEFT U0VSVF9OQU1FKHRhZykgY3RBU1NFUlRfR0xVRShfY3Rhc3NlcnRfLCB0YWcpCisjICBkZWZpbmUg Q1RBU1NFUlRfREVDTChlKSBzdHJ1Y3QgY3RBU1NFUlRfTkFNRShfX0xJTkVfXykge3Vuc2lnbmVk IF86ISEoZSk7fQorIyAgZGVmaW5lIENUQVNTRVJUX1RZUEVEX0VYUFIodCwgZSkgKCh0KXNpemVv ZihjaGFyWzEgLSAyICogIShlKV0pKQorIyAgZGVmaW5lIENUQVNTRVJUX0VYUFIoZSkgQ1RBU1NF UlRfVFlQRURfRVhQUih2b2lkLCBlKQorCisjIGVuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworI2Vu ZGlmIC8qIF9MSU5VWF9OTEtEX0ggKi8KKworI3VuZGVmIFJUQVNTRVJUCisjdW5kZWYgUlRWRVJJ RlkKKyNpZm5kZWYgX19BU1NFTUJMWV9fCisjIGlmICFkZWZpbmVkKENPTkZJR19OTEtEKSB8fCAh ZGVmaW5lZChDT05GSUdfREVCVUdfS0VSTkVMKSB8fCBkZWZpbmVkKE5ERUJVRykKKyMgIGRlZmlu ZSBSVEFTU0VSVChlKSAoKHZvaWQpMCkKKyMgIGRlZmluZSBSVFZFUklGWShlKSAoKHZvaWQpKGUp KQorIyBlbHNlCisjICBkZWZpbmUgUlRBU1NFUlQgcnRBU1NFUlQKKyMgIGRlZmluZSBSVFZFUklG WSBydEFTU0VSVAorIyBlbmRpZgorI2VuZGlmIC8qICFfX0FTU0VNQkxZX18gKi8K --=__Part03213F5F.0__=--