From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.devel Subject: Re: Using __builtin_expect (likely/unlikely macros) Date: Thu, 18 Apr 2019 01:25:31 -0700 Organization: UCLA Computer Science Department Message-ID: <66b74701-012a-902e-4a5b-6bc30efa87c0@cs.ucla.edu> References: <87a7gst973.fsf@gmail.com> <875zrgt12q.fsf@gmail.com> <6919a4c8-df76-ea1e-34db-1fa62a360e5a@cs.ucla.edu> <87h8aykdod.fsf@gmail.com> <4fa7885e-8c66-c7c4-ff71-a013505863af@cs.ucla.edu> <2dfb837d-989d-c736-b6e6-b20c0e940596@cs.ucla.edu> <87o956c4n4.fsf@gmail.com> <1fbd2fca-18f0-0a90-7a45-58419a9e11ee@cs.ucla.edu> <1555450070.23658.4@yandex.ru> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------9812674D84D2B43D7FA4B71E" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="231679"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 Cc: Stefan Monnier , Alex Gramiak , emacs-devel@gnu.org To: Konstantin Kharlamov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Apr 18 10:26:05 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hH2Mu-000y4x-5Y for ged-emacs-devel@m.gmane.org; Thu, 18 Apr 2019 10:26:04 +0200 Original-Received: from localhost ([127.0.0.1]:37920 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hH2Mt-0000fs-4I for ged-emacs-devel@m.gmane.org; Thu, 18 Apr 2019 04:26:03 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:45234) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hH2Mh-0000fD-Nv for emacs-devel@gnu.org; Thu, 18 Apr 2019 04:25:55 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hH2Mc-0006vP-JI for emacs-devel@gnu.org; Thu, 18 Apr 2019 04:25:51 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:34094) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hH2Mb-0006rf-Vp for emacs-devel@gnu.org; Thu, 18 Apr 2019 04:25:46 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id CA1651617A0; Thu, 18 Apr 2019 01:25:38 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id 5XBkJXZDXGTG; Thu, 18 Apr 2019 01:25:35 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id DBD7D1617A2; Thu, 18 Apr 2019 01:25:35 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id 6AKzenxImq40; Thu, 18 Apr 2019 01:25:35 -0700 (PDT) Original-Received: from [192.168.1.9] (cpe-23-242-74-103.socal.res.rr.com [23.242.74.103]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 9D7F21616CC; Thu, 18 Apr 2019 01:25:35 -0700 (PDT) In-Reply-To: <1555450070.23658.4@yandex.ru> Content-Language: en-US X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 131.179.128.68 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:235614 Archived-At: This is a multi-part message in MIME format. --------------9812674D84D2B43D7FA4B71E Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Konstantin Kharlamov wrote: > I was told that e.g. "cold" > attribute can sometimes produce unbearably slow code > https://gcc.gnu.org/ml/gcc-help/2019-01/msg00035.html Although cold functions can be slow, it appears that overall it's a win for Emacs to mark _Noreturn error function declarations as cold: on my platform, 'make compile-always' ran about 1.3% faster. So I installed the attached patch into master. (Like Stefan, I'm wary of marking functions 'hot' so I didn't do that.) This patch also adds a convenience macro AVOID for the now-common pattern '_Noreturn ATTRIBUTE_COLD void'. --------------9812674D84D2B43D7FA4B71E Content-Type: text/plain; charset=UTF-8; name="0001-Mark-_Noreturn-error-functions-as-cold.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Mark-_Noreturn-error-functions-as-cold.txt" RnJvbSA2ZDZjNTVkYjJjZGZiNmIzNTQ4NzNmMTcyODVhM2Y2MDJlMDExODE3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBUaHUsIDE4IEFwciAyMDE5IDAwOjMwOjI0IC0wNzAwClN1YmplY3Q6IFtQQVRD SF0gTWFyayBfTm9yZXR1cm4gZXJyb3IgZnVuY3Rpb25zIGFzIGNvbGQKTUlNRS1WZXJzaW9u OiAxLjAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQt VHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKCk9uIG15IHBsYXRmb3JtIHRoaXMgbWFkZSDigJht YWtlIGNvbXBpbGUtYWx3YXlz4oCZIDEuMyUgZmFzdGVyLgpTdWdnZXN0ZWQgYnkgQWxleCBH cmFtaWFrIGluOgpodHRwczovL2xpc3RzLmdudS5vcmcvci9lbWFjcy1kZXZlbC8yMDE5LTA0 L21zZzAwNjg0Lmh0bWwKKiBjb25maWd1cmUuYWMgKG53KTogRG9u4oCZdCB1c2UgLVdzdWdn ZXN0LWF0dHJpYnV0ZT1jb2xkLgoqIGxpYi1zcmMvbWFrZS1kb2NmaWxlLmMgKHdyaXRlX2ds b2JhbHMpOgpNYXJrIG5vcmV0dXJuIGZ1bmN0aW9ucyBhcyBjb2xkLgoqIHNyYy9jYWxscHJv Yy5jIChleGVjX2ZhaWxlZCk6Ciogc3JjL2RhdGEuYyAod3JvbmdfbGVuZ3RoX2FyZ3VtZW50 LCB3cm9uZ190eXBlX2FyZ3VtZW50KToKKiBzcmMvZW1hY3MtbW9kdWxlLmMgKG1vZHVsZV9h Ym9ydCk6Ciogc3JjL2VtYWNzLmMgKHRlcm1pbmF0ZV9kdWVfdG9fc2lnbmFsKToKKiBzcmMv ZXZhbC5jICh1bndpbmRfdG9fY2F0Y2gpOgoqIHNyYy9pbWFnZS5jIChteV9wbmdfZXJyb3Is IG15X2Vycm9yX2V4aXQpOgoqIHNyYy9qc29uLmMgKGpzb25fb3V0X29mX21lbW9yeSwganNv bl9wYXJzZV9lcnJvcik6Ciogc3JjL2tleWJvYXJkLmMgKHF1aXRfdGhyb3dfdG9fcmVhZF9j aGFyLCB1c2VyX2Vycm9yKToKKiBzcmMvbGlzcC5oIChkaWUsIHdyb25nX3R5cGVfYXJndW1l bnQsIHdyb25nX2Nob2ljZSkKKGFyZ3Nfb3V0X29mX3JhbmdlLCBhcmdzX291dF9vZl9yYW5n ZV8zLCBjaXJjdWxhcl9saXN0KQooYnVmZmVyX292ZXJmbG93LCBtZW1vcnlfZnVsbCwgYnVm ZmVyX21lbW9yeV9mdWxsKQooc3RyaW5nX292ZXJmbG93LCB4c2lnbmFsLCB4c2lnbmFsMCwg eHNpZ25hbDEsIHhzaWduYWwyKQooeHNpZ25hbDMsIHNpZ25hbF9lcnJvciwgb3ZlcmZsb3df ZXJyb3IsIGVycm9yLCB2ZXJyb3IpCihuc2JlcnJvciwgcmVwb3J0X2ZpbGVfZXJybm8sIHJl cG9ydF9maWxlX2Vycm9yKQoocmVwb3J0X2ZpbGVfbm90aWZ5X2Vycm9yLCB0ZXJtaW5hdGVf ZHVlX3RvX3NpZ25hbCkKKGVtYWNzX2Fib3J0LCBmYXRhbCk6Ciogc3JjL2xyZWFkLmMgKGxv YWRfZXJyb3Jfb2xkX3N0eWxlX2JhY2txdW90ZXMpCihlbmRfb2ZfZmlsZV9lcnJvciwgaW52 YWxpZF9zeW50YXgpOgoqIHNyYy9wZHVtcGVyLmMgKGVycm9yX3Vuc3VwcG9ydGVkX2R1bXBf b2JqZWN0KToKKiBzcmMvcHVyZXNpemUuaCAocHVyZV93cml0ZV9lcnJvcik6Ciogc3JjL3Nl YXJjaC5jIChtYXRjaGVyX292ZXJmbG93KToKKiBzcmMvc291bmQuYyAoc291bmRfcGVycm9y LCBhbHNhX3NvdW5kX3BlcnJvcik6Ciogc3JjL3N5c2RlcC5jIChoYW5kbGVfYXJpdGhfc2ln bmFsKToKKiBzcmMvc3lzdGltZS5oICh0aW1lX292ZXJmbG93KToKKiBzcmMvdGVybS5jICht YXliZV9mYXRhbCwgdmZhdGFsKToKKiBzcmMvdGV4dHByb3AuYyAodGV4dF9yZWFkX29ubHkp OgoqIHNyYy90aW1lZm5zLmMgKGludmFsaWRfdGltZV96b25lX3NwZWNpZmljYXRpb24pCih0 aW1lX2Vycm9yLCBpbnZhbGlkX2h6KToKKiBzcmMveHRlcm0uYyAoeF9jb25uZWN0aW9uX2Ns b3NlZCk6ClVzZSBBVk9JRCBpbnN0ZWFkIG9mIF9Ob3JldHVybiB2b2lkLCBzbyB0aGF0IGl0 4oCZcyBtYXJrZWQgY29sZC4KKiBzcmMvY29uZl9wb3N0LmggKF9faGFzX2F0dHJpYnV0ZV9j b2xkKSBbIV9faGFzX2F0dHJpYnV0ZV06Ck5ldyBtYWNyby4KKEFUVFJJQlVURV9DT0xEKTog TmV3IG1hY3JvLgoqIHNyYy9mcmFtZS5oIChXSU5ET1dfU1lTVEVNX1JFVFVSTik6IEFkZCBB VFRSSUJVVEVfQ09MRC4KKiBzcmMvbGlzcC5oIChBVk9JRCk6IE5ldyBtYWNyby4KKiBzcmMv eHRlcm0uYzogT21pdCB1bm5lY2Vzc2FyeSBzdGF0aWMgZGVjbHMsIHNvIHRoYXQgd2UgbmVl ZG7igJl0CndvcnJ5IGFib3V0IHdoaWNoIGZ1bmN0aW9ucyBzaG91bGQgYmUgbWFya2VkIGNv bGQuCih4X2lvX2Vycm9yX3F1aXR0ZXIpOiBNYXJrIGFzIGNvbGQuCi0tLQogY29uZmlndXJl LmFjICAgICAgICAgICB8ICAzICsrKwogbGliLXNyYy9tYWtlLWRvY2ZpbGUuYyB8ICAyICsr CiBzcmMvY2FsbHByb2MuYyAgICAgICAgIHwgIDIgKy0KIHNyYy9jb25mX3Bvc3QuaCAgICAg ICAgfCAgNyArKysrKwogc3JjL2RhdGEuYyAgICAgICAgICAgICB8ICA0ICstLQogc3JjL2Vt YWNzLW1vZHVsZS5jICAgICB8ICA2ICsrLS0tCiBzcmMvZW1hY3MuYyAgICAgICAgICAgIHwg IDIgKy0KIHNyYy9ldmFsLmMgICAgICAgICAgICAgfCAgMiArLQogc3JjL2ZyYW1lLmggICAg ICAgICAgICB8ICAyICstCiBzcmMvaW1hZ2UuYyAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMv anNvbi5jICAgICAgICAgICAgIHwgIDQgKy0tCiBzcmMva2V5Ym9hcmQuYyAgICAgICAgIHwg IDYgKystLS0KIHNyYy9saXNwLmggICAgICAgICAgICAgfCA1OCArKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9scmVhZC5jICAgICAgICAgICAgfCAg NiArKy0tLQogc3JjL3BkdW1wZXIuYyAgICAgICAgICB8ICAzICstLQogc3JjL3B1cmVzaXpl LmggICAgICAgICB8ICAyICstCiBzcmMvc2VhcmNoLmMgICAgICAgICAgIHwgIDIgKy0KIHNy Yy9zb3VuZC5jICAgICAgICAgICAgfCAgNCArLS0KIHNyYy9zeXNkZXAuYyAgICAgICAgICAg fCAgMiArLQogc3JjL3N5c3RpbWUuaCAgICAgICAgICB8ICAyICstCiBzcmMvdGVybS5jICAg ICAgICAgICAgIHwgIDcgKysrLS0KIHNyYy90ZXh0cHJvcC5jICAgICAgICAgfCAgMiArLQog c3JjL3RpbWVmbnMuYyAgICAgICAgICB8ICA2ICsrLS0tCiBzcmMveHRlcm0uYyAgICAgICAg ICAgIHwgMzUgKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMjQgZmlsZXMgY2hhbmdlZCwg NzUgaW5zZXJ0aW9ucygrKSwgOTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29uZmln dXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDNjZWJmM2Q3OGMuLjlkMzliZGQ3NmIgMTAw NjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTEwNjgsNiAr MTA2OCw5IEBAIEFDX0RFRlVOCiAgICMgRW1hY3MncyB1c2Ugb2YgYWxsb2NhIGluaGliaXRz IHByb3RlY3RpbmcgdGhlIHN0YWNrLgogICBudz0iJG53IC1Xc3RhY2stcHJvdGVjdG9yIgog CisgICMgRW1hY3MncyB1c2Ugb2YgX19hdHRyaWJ1dGVfXyAoKGNvbGQpKSBjYXVzZXMgZmFs c2UgYWxhcm1zIHdpdGggdGhpcyBvcHRpb24uCisgIG53PSIkbncgLVdzdWdnZXN0LWF0dHJp YnV0ZT1jb2xkIgorCiAgICMgRW1hY3MncyB1c2Ugb2YgcGFydGx5LWNvbnN0IGZ1bmN0aW9u cyBzdWNoIGFzIEZnbnV0bHNfYXZhaWxhYmxlX3AKICAgIyBtYWtlIHRoaXMgb3B0aW9uIHBy b2JsZW1hdGljLgogICBudz0iJG53IC1Xc3VnZ2VzdC1hdHRyaWJ1dGU9Y29uc3QiCmRpZmYg LS1naXQgYS9saWItc3JjL21ha2UtZG9jZmlsZS5jIGIvbGliLXNyYy9tYWtlLWRvY2ZpbGUu YwppbmRleCBjY2QyNDVlMDEzLi40ZDI1YjBhNmI5IDEwMDY0NAotLS0gYS9saWItc3JjL21h a2UtZG9jZmlsZS5jCisrKyBiL2xpYi1zcmMvbWFrZS1kb2NmaWxlLmMKQEAgLTc0Nyw2ICs3 NDcsOCBAQCB3cml0ZV9nbG9iYWxzICh2b2lkKQogCSAgICBwcmludGYgKCIlZCIsIGdsb2Jh bHNbaV0udi52YWx1ZSk7CiAJICBwdXRjaGFyICgnKScpOwogCisJICBpZiAoZ2xvYmFsc1tp XS5mbGFncyAmIERFRlVOX25vcmV0dXJuKQorCSAgICBmcHV0cyAoIiBBVFRSSUJVVEVfQ09M RCIsIHN0ZG91dCk7CiAJICBpZiAoZ2xvYmFsc1tpXS5mbGFncyAmIERFRlVOX2NvbnN0KQog CSAgICBmcHV0cyAoIiBBVFRSSUJVVEVfQ09OU1QiLCBzdGRvdXQpOwogCmRpZmYgLS1naXQg YS9zcmMvY2FsbHByb2MuYyBiL3NyYy9jYWxscHJvYy5jCmluZGV4IDJjZGY4NGQ5YTguLjk4 YzY3MzEyYjQgMTAwNjQ0Ci0tLSBhL3NyYy9jYWxscHJvYy5jCisrKyBiL3NyYy9jYWxscHJv Yy5jCkBAIC0xMTM1LDcgKzExMzUsNyBAQCBhZGRfZW52IChjaGFyICoqZW52LCBjaGFyICoq bmV3X2VudiwgY2hhciAqc3RyaW5nKQogICAgbWVzcyB1cCB0aGUgYWxsb2NhdG9yJ3MgZGF0 YSBzdHJ1Y3R1cmVzIGluIHRoZSBwYXJlbnQuCiAgICBSZXBvcnQgdGhlIGVycm9yIGFuZCBl eGl0IHRoZSBjaGlsZC4gICovCiAKLXN0YXRpYyBfTm9yZXR1cm4gdm9pZAorc3RhdGljIEFW T0lECiBleGVjX2ZhaWxlZCAoY2hhciBjb25zdCAqbmFtZSwgaW50IGVycikKIHsKICAgLyog QXZvaWQgZGVhZGxvY2sgaWYgdGhlIGNoaWxkJ3MgcGVycm9yIHdyaXRlcyB0byBhIGZ1bGwg cGlwZTsgdGhlCmRpZmYgLS1naXQgYS9zcmMvY29uZl9wb3N0LmggYi9zcmMvY29uZl9wb3N0 LmgKaW5kZXggZjgyNTRjZmE5ZC4uNmVhMmM3YjY2NCAxMDA2NDQKLS0tIGEvc3JjL2NvbmZf cG9zdC5oCisrKyBiL3NyYy9jb25mX3Bvc3QuaApAQCAtNzMsNiArNzMsNyBAQCB0eXBlZGVm IGJvb2wgYm9vbF9iZjsKICMgZGVmaW5lIF9faGFzX2F0dHJpYnV0ZShhKSBfX2hhc19hdHRy aWJ1dGVfIyNhCiAjIGRlZmluZSBfX2hhc19hdHRyaWJ1dGVfYWxsb2Nfc2l6ZSBHTlVDX1BS RVJFUSAoNCwgMywgMCkKICMgZGVmaW5lIF9faGFzX2F0dHJpYnV0ZV9jbGVhbnVwIEdOVUNf UFJFUkVRICgzLCA0LCAwKQorIyBkZWZpbmUgX19oYXNfYXR0cmlidXRlX2NvbGQgR05VQ19Q UkVSRVEgKDQsIDMsIDApCiAjIGRlZmluZSBfX2hhc19hdHRyaWJ1dGVfZXh0ZXJuYWxseV92 aXNpYmxlIEdOVUNfUFJFUkVRICg0LCAxLCAwKQogIyBkZWZpbmUgX19oYXNfYXR0cmlidXRl X25vX2FkZHJlc3Nfc2FmZXR5X2FuYWx5c2lzIGZhbHNlCiAjIGRlZmluZSBfX2hhc19hdHRy aWJ1dGVfbm9fc2FuaXRpemVfYWRkcmVzcyBHTlVDX1BSRVJFUSAoNCwgOCwgMCkKQEAgLTIy Myw2ICsyMjQsMTIgQEAgZXh0ZXJuIHZvaWQgX0RlYlByaW50IChjb25zdCBjaGFyICpmbXQs IC4uLik7CiBleHRlcm4gY2hhciAqZW1hY3NfZ2V0ZW52X1RaICh2b2lkKTsKIGV4dGVybiBp bnQgZW1hY3Nfc2V0ZW52X1RaIChjaGFyIGNvbnN0ICopOwogCisjaWYgX19oYXNfYXR0cmli dXRlIChjb2xkKQorIyBkZWZpbmUgQVRUUklCVVRFX0NPTEQgX19hdHRyaWJ1dGVfXyAoKGNv bGQpKQorI2Vsc2UKKyMgZGVmaW5lIEFUVFJJQlVURV9DT0xECisjZW5kaWYKKwogI2lmIF9f R05VQ19fID49IDMgIC8qIE9uIEdDQyAzLjAgd2UgbWlnaHQgZ2V0IGEgd2FybmluZy4gICov CiAjZGVmaW5lIE5PX0lOTElORSBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpCiAjZWxzZQpk aWZmIC0tZ2l0IGEvc3JjL2RhdGEuYyBiL3NyYy9kYXRhLmMKaW5kZXggMTFjZDU5OGVkOC4u MWIyNDMxMDExZSAxMDA2NDQKLS0tIGEvc3JjL2RhdGEuYworKysgYi9zcmMvZGF0YS5jCkBA IC0xMzAsNyArMTMwLDcgQEAgc2V0X2Jsdl92YWxjZWxsIChzdHJ1Y3QgTGlzcF9CdWZmZXJf TG9jYWxfVmFsdWUgKmJsdiwgTGlzcF9PYmplY3QgdmFsKQogICBibHYtPnZhbGNlbGwgPSB2 YWw7CiB9CiAKLXN0YXRpYyBfTm9yZXR1cm4gdm9pZAorc3RhdGljIEFWT0lECiB3cm9uZ19s ZW5ndGhfYXJndW1lbnQgKExpc3BfT2JqZWN0IGExLCBMaXNwX09iamVjdCBhMiwgTGlzcF9P YmplY3QgYTMpCiB7CiAgIExpc3BfT2JqZWN0IHNpemUxID0gbWFrZV9maXhudW0gKGJvb2xf dmVjdG9yX3NpemUgKGExKSk7CkBAIC0xNDIsNyArMTQyLDcgQEAgd3JvbmdfbGVuZ3RoX2Fy Z3VtZW50IChMaXNwX09iamVjdCBhMSwgTGlzcF9PYmplY3QgYTIsIExpc3BfT2JqZWN0IGEz KQogCSAgICAgIG1ha2VfZml4bnVtIChib29sX3ZlY3Rvcl9zaXplIChhMykpKTsKIH0KIAot X05vcmV0dXJuIHZvaWQKK0FWT0lECiB3cm9uZ190eXBlX2FyZ3VtZW50IChyZWdpc3RlciBM aXNwX09iamVjdCBwcmVkaWNhdGUsIHJlZ2lzdGVyIExpc3BfT2JqZWN0IHZhbHVlKQogewog ICAvKiBJZiBWQUxVRSBpcyBub3QgZXZlbiBhIHZhbGlkIExpc3Agb2JqZWN0LCB3ZSdkIHdh bnQgdG8gYWJvcnQgaGVyZQpkaWZmIC0tZ2l0IGEvc3JjL2VtYWNzLW1vZHVsZS5jIGIvc3Jj L2VtYWNzLW1vZHVsZS5jCmluZGV4IDQ3Y2EzMzY4YzAuLjA5YTc2OGUxOGUgMTAwNjQ0Ci0t LSBhL3NyYy9lbWFjcy1tb2R1bGUuYworKysgYi9zcmMvZW1hY3MtbW9kdWxlLmMKQEAgLTE0 Nyw4ICsxNDcsNyBAQCBzdGF0aWMgZW51bSBlbWFjc19mdW5jYWxsX2V4aXQgbW9kdWxlX25v bl9sb2NhbF9leGl0X2NoZWNrIChlbWFjc19lbnYgKik7CiBzdGF0aWMgdm9pZCBtb2R1bGVf YXNzZXJ0X3RocmVhZCAodm9pZCk7CiBzdGF0aWMgdm9pZCBtb2R1bGVfYXNzZXJ0X3J1bnRp bWUgKHN0cnVjdCBlbWFjc19ydW50aW1lICopOwogc3RhdGljIHZvaWQgbW9kdWxlX2Fzc2Vy dF9lbnYgKGVtYWNzX2VudiAqKTsKLXN0YXRpYyBfTm9yZXR1cm4gdm9pZCBtb2R1bGVfYWJv cnQgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotICBBVFRSSUJVVEVfRk9STUFUX1BSSU5U RigxLCAyKTsKK3N0YXRpYyBBVk9JRCBtb2R1bGVfYWJvcnQgKGNvbnN0IGNoYXIgKiwgLi4u KSBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMik7CiBzdGF0aWMgZW1hY3NfZW52ICpp bml0aWFsaXplX2Vudmlyb25tZW50IChlbWFjc19lbnYgKiwKIAkJCQkJICBzdHJ1Y3QgZW1h Y3NfZW52X3ByaXZhdGUgKik7CiBzdGF0aWMgdm9pZCBmaW5hbGl6ZV9lbnZpcm9ubWVudCAo ZW1hY3NfZW52ICopOwpAQCAtMTE2Myw4ICsxMTYyLDcgQEAgaW5pdF9tb2R1bGVfYXNzZXJ0 aW9ucyAoYm9vbCBlbmFibGUpCiAgIGluaXRpYWxpemVfc3RvcmFnZSAoJmdsb2JhbF9zdG9y YWdlKTsKIH0KIAotc3RhdGljIF9Ob3JldHVybiB2b2lkCi1BVFRSSUJVVEVfRk9STUFUX1BS SU5URigxLCAyKQorc3RhdGljIEFWT0lEIEFUVFJJQlVURV9GT1JNQVRfUFJJTlRGICgxLCAy KQogbW9kdWxlX2Fib3J0IChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgZnB1dHMg KCJFbWFjcyBtb2R1bGUgYXNzZXJ0aW9uOiAiLCBzdGRlcnIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2VtYWNzLmMgYi9zcmMvZW1hY3MuYwppbmRleCA2ZWQ0YjBlZDg3Li41ZWJhODhjNzRmIDEw MDY0NAotLS0gYS9zcmMvZW1hY3MuYworKysgYi9zcmMvZW1hY3MuYwpAQCAtMzcwLDcgKzM3 MCw3IEBAIHVzaW5nX3V0ZjggKHZvaWQpCiAKIC8qIFJlcG9ydCBhIGZhdGFsIGVycm9yIGR1 ZSB0byBzaWduYWwgU0lHLCBvdXRwdXQgYSBiYWNrdHJhY2Ugb2YgYXQKICAgIG1vc3QgQkFD S1RSQUNFX0xJTUlUIGxpbmVzLCBhbmQgZXhpdC4gICovCi1fTm9yZXR1cm4gdm9pZAorQVZP SUQKIHRlcm1pbmF0ZV9kdWVfdG9fc2lnbmFsIChpbnQgc2lnLCBpbnQgYmFja3RyYWNlX2xp bWl0KQogewogICBzaWduYWwgKHNpZywgU0lHX0RGTCk7CmRpZmYgLS1naXQgYS9zcmMvZXZh bC5jIGIvc3JjL2V2YWwuYwppbmRleCBmYTdiMmQwNjAzLi5jMmU5OTZhOTQ3IDEwMDY0NAot LS0gYS9zcmMvZXZhbC5jCisrKyBiL3NyYy9ldmFsLmMKQEAgLTExMzMsNyArMTEzMyw3IEBA IGludGVybmFsX2NhdGNoIChMaXNwX09iamVjdCB0YWcsCiAKICAgIFRoaXMgaXMgdXNlZCBm b3IgY29ycmVjdCB1bndpbmRpbmcgaW4gRnRocm93IGFuZCBGc2lnbmFsLiAgKi8KIAotc3Rh dGljIF9Ob3JldHVybiB2b2lkCitzdGF0aWMgQVZPSUQKIHVud2luZF90b19jYXRjaCAoc3Ry dWN0IGhhbmRsZXIgKmNhdGNoLCBMaXNwX09iamVjdCB2YWx1ZSkKIHsKICAgYm9vbCBsYXN0 X3RpbWU7CmRpZmYgLS1naXQgYS9zcmMvZnJhbWUuaCBiL3NyYy9mcmFtZS5oCmluZGV4IGVj OGY2MTQ2NWYuLmUyZThlYWFiOWIgMTAwNjQ0Ci0tLSBhL3NyYy9mcmFtZS5oCisrKyBiL3Ny Yy9mcmFtZS5oCkBAIC0xMjYyLDcgKzEyNjIsNyBAQCBleHRlcm4gaW50IGZyYW1lX2RlZmF1 bHRfdG9vbF9iYXJfaGVpZ2h0OwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQogIyBkZWZp bmUgV0lORE9XX1NZU1RFTV9SRVRVUk4KICNlbHNlCi0jIGRlZmluZSBXSU5ET1dfU1lTVEVN X1JFVFVSTiBfTm9yZXR1cm4KKyMgZGVmaW5lIFdJTkRPV19TWVNURU1fUkVUVVJOIF9Ob3Jl dHVybiBBVFRSSUJVVEVfQ09MRAogI2VuZGlmCiAKIGV4dGVybiBXSU5ET1dfU1lTVEVNX1JF VFVSTiBzdHJ1Y3QgZnJhbWUgKgpkaWZmIC0tZ2l0IGEvc3JjL2ltYWdlLmMgYi9zcmMvaW1h Z2UuYwppbmRleCBjMWEyM2VkZWZjLi44ZTNhOWE0OTMwIDEwMDY0NAotLS0gYS9zcmMvaW1h Z2UuYworKysgYi9zcmMvaW1hZ2UuYwpAQCAtNjA3OSw3ICs2MDc5LDcgQEAgaW5pdF9wbmdf ZnVuY3Rpb25zICh2b2lkKQogLyogRXJyb3IgYW5kIHdhcm5pbmcgaGFuZGxlcnMgaW5zdGFs bGVkIHdoZW4gdGhlIFBORyBsaWJyYXJ5CiAgICBpcyBpbml0aWFsaXplZC4gICovCiAKLXN0 YXRpYyBfTm9yZXR1cm4gdm9pZAorc3RhdGljIEFWT0lECiBteV9wbmdfZXJyb3IgKHBuZ19z dHJ1Y3QgKnBuZ19wdHIsIGNvbnN0IGNoYXIgKm1zZykKIHsKICAgZWFzc2VydCAocG5nX3B0 ciAhPSBOVUxMKTsKQEAgLTY3MTgsNyArNjcxOCw3IEBAIHN0cnVjdCBteV9qcGVnX2Vycm9y X21ncgogfTsKIAogCi1zdGF0aWMgX05vcmV0dXJuIHZvaWQKK3N0YXRpYyBBVk9JRAogbXlf ZXJyb3JfZXhpdCAoal9jb21tb25fcHRyIGNpbmZvKQogewogICBzdHJ1Y3QgbXlfanBlZ19l cnJvcl9tZ3IgKm1nciA9IChzdHJ1Y3QgbXlfanBlZ19lcnJvcl9tZ3IgKikgY2luZm8tPmVy cjsKZGlmZiAtLWdpdCBhL3NyYy9qc29uLmMgYi9zcmMvanNvbi5jCmluZGV4IDc0ZTA1MzQw NjUuLjU5MTcyMTI4OTkgMTAwNjQ0Ci0tLSBhL3NyYy9qc29uLmMKKysrIGIvc3JjL2pzb24u YwpAQCAtMjU1LDcgKzI1NSw3IEBAIGpzb25fZW5jb2RlIChMaXNwX09iamVjdCBzdHJpbmcp CiAgIHJldHVybiBjb2RlX2NvbnZlcnRfc3RyaW5nIChzdHJpbmcsIFF1dGZfOF91bml4LCBR dCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CiB9CiAKLXN0YXRpYyBfTm9yZXR1cm4gdm9pZAorc3Rh dGljIEFWT0lECiBqc29uX291dF9vZl9tZW1vcnkgKHZvaWQpCiB7CiAgIHhzaWduYWwwIChR anNvbl9vdXRfb2ZfbWVtb3J5KTsKQEAgLTI2Myw3ICsyNjMsNyBAQCBqc29uX291dF9vZl9t ZW1vcnkgKHZvaWQpCiAKIC8qIFNpZ25hbCBhIExpc3AgZXJyb3IgY29ycmVzcG9uZGluZyB0 byB0aGUgSlNPTiBFUlJPUi4gICovCiAKLXN0YXRpYyBfTm9yZXR1cm4gdm9pZAorc3RhdGlj IEFWT0lECiBqc29uX3BhcnNlX2Vycm9yIChjb25zdCBqc29uX2Vycm9yX3QgKmVycm9yKQog ewogICBMaXNwX09iamVjdCBzeW1ib2w7CmRpZmYgLS1naXQgYS9zcmMva2V5Ym9hcmQuYyBi L3NyYy9rZXlib2FyZC5jCmluZGV4IDhmYjZkYjk4N2IuLmRmZjhmNmIyZmMgMTAwNjQ0Ci0t LSBhL3NyYy9rZXlib2FyZC5jCisrKyBiL3NyYy9rZXlib2FyZC5jCkBAIC0zNjQsNyArMzY0 LDcgQEAgc3RhdGljIHZvaWQgcmVzdG9yZV9nZXRjam1wICh2b2lkICopOwogc3RhdGljIExp c3BfT2JqZWN0IGFwcGx5X21vZGlmaWVycyAoaW50LCBMaXNwX09iamVjdCk7CiBzdGF0aWMg dm9pZCByZXN0b3JlX2tib2FyZF9jb25maWd1cmF0aW9uIChpbnQpOwogc3RhdGljIHZvaWQg aGFuZGxlX2ludGVycnVwdCAoYm9vbCk7Ci1zdGF0aWMgX05vcmV0dXJuIHZvaWQgcXVpdF90 aHJvd190b19yZWFkX2NoYXIgKGJvb2wpOworc3RhdGljIEFWT0lEIHF1aXRfdGhyb3dfdG9f cmVhZF9jaGFyIChib29sKTsKIHN0YXRpYyB2b2lkIHRpbWVyX3N0YXJ0X2lkbGUgKHZvaWQp Owogc3RhdGljIHZvaWQgdGltZXJfc3RvcF9pZGxlICh2b2lkKTsKIHN0YXRpYyB2b2lkIHRp bWVyX3Jlc3VtZV9pZGxlICh2b2lkKTsKQEAgLTExMzEsMTMgKzExMzEsMTIgQEAgVGhpcyBh bHNvIGV4aXRzIGFsbCBhY3RpdmUgbWluaWJ1ZmZlcnMuICAqLwogICBGdGhyb3cgKFF0b3Bf bGV2ZWwsIFFuaWwpOwogfQogCi1zdGF0aWMgX05vcmV0dXJuIHZvaWQKK3N0YXRpYyBBVk9J RAogdXNlcl9lcnJvciAoY29uc3QgY2hhciAqbXNnKQogewogICB4c2lnbmFsMSAoUXVzZXJf ZXJyb3IsIGJ1aWxkX3N0cmluZyAobXNnKSk7CiB9CiAKLS8qIF9Ob3JldHVybiB3aWxsIGJl IGFkZGVkIHRvIHByb3RvdHlwZSBieSBtYWtlLWRvY2ZpbGUuICAqLwogREVGVU4gKCJleGl0 LXJlY3Vyc2l2ZS1lZGl0IiwgRmV4aXRfcmVjdXJzaXZlX2VkaXQsIFNleGl0X3JlY3Vyc2l2 ZV9lZGl0LCAwLCAwLCAiIiwKICAgICAgICBkb2M6IC8qIEV4aXQgZnJvbSB0aGUgaW5uZXJt b3N0IHJlY3Vyc2l2ZSBlZGl0IG9yIG1pbmlidWZmZXIuICAqLwogICAgICAgIGF0dHJpYnV0 ZXM6IG5vcmV0dXJuKQpAQCAtMTE0OSw3ICsxMTQ4LDYgQEAgREVGVU4gKCJleGl0LXJlY3Vy c2l2ZS1lZGl0IiwgRmV4aXRfcmVjdXJzaXZlX2VkaXQsIFNleGl0X3JlY3Vyc2l2ZV9lZGl0 LCAwLCAwLAogICB1c2VyX2Vycm9yICgiTm8gcmVjdXJzaXZlIGVkaXQgaXMgaW4gcHJvZ3Jl c3MiKTsKIH0KIAotLyogX05vcmV0dXJuIHdpbGwgYmUgYWRkZWQgdG8gcHJvdG90eXBlIGJ5 IG1ha2UtZG9jZmlsZS4gICovCiBERUZVTiAoImFib3J0LXJlY3Vyc2l2ZS1lZGl0IiwgRmFi b3J0X3JlY3Vyc2l2ZV9lZGl0LCBTYWJvcnRfcmVjdXJzaXZlX2VkaXQsIDAsIDAsICIiLAog ICAgICAgIGRvYzogLyogQWJvcnQgdGhlIGNvbW1hbmQgdGhhdCByZXF1ZXN0ZWQgdGhpcyBy ZWN1cnNpdmUgZWRpdCBvciBtaW5pYnVmZmVyIGlucHV0LiAgKi8KICAgICAgICBhdHRyaWJ1 dGVzOiBub3JldHVybikKZGlmZiAtLWdpdCBhL3NyYy9saXNwLmggYi9zcmMvbGlzcC5oCmlu ZGV4IDI5MTU5NDRmZmUuLjI1ZDBhM2Q2YWMgMTAwNjQ0Ci0tLSBhL3NyYy9saXNwLmgKKysr IGIvc3JjL2xpc3AuaApAQCAtMTY2LDYgKzE2Niw5IEBAIHR5cGVkZWYgRU1BQ1NfVUlOVCB1 cHJpbnRtYXhfdDsKICMgZGVmaW5lIHBEICJ0IgogI2VuZGlmCiAKKy8qIENvbnZlbmllbmNl IG1hY3JvIGZvciByYXJlbHktdXNlZCBmdW5jdGlvbnMgdGhhdCBkbyBub3QgcmV0dXJuLiAg Ki8KKyNkZWZpbmUgQVZPSUQgX05vcmV0dXJuIEFUVFJJQlVURV9DT0xEIHZvaWQKKwogLyog RXh0cmEgaW50ZXJuYWwgdHlwZSBjaGVja2luZz8gICovCiAKIC8qIERlZmluZSBFbWFjcyB2 ZXJzaW9ucyBvZiA8YXNzZXJ0Lmg+J3MgJ2Fzc2VydCAoQ09ORCknIGFuZCA8dmVyaWZ5Lmg+ J3MKQEAgLTE5Niw3ICsxOTksNyBAQCB0eXBlZGVmIEVNQUNTX1VJTlQgdXByaW50bWF4X3Q7 CiAjIGRlZmluZSBlYXNzdW1lKGNvbmQpIGFzc3VtZSAoY29uZCkKICNlbHNlIC8qIEVOQUJM RV9DSEVDS0lORyAqLwogCi1leHRlcm4gX05vcmV0dXJuIHZvaWQgZGllIChjb25zdCBjaGFy ICosIGNvbnN0IGNoYXIgKiwgaW50KTsKK2V4dGVybiBBVk9JRCBkaWUgKGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqLCBpbnQpOwogCiBleHRlcm4gYm9vbCBzdXBwcmVzc19jaGVja2lu ZyBFWFRFUk5BTExZX1ZJU0lCTEU7CiAKQEAgLTYyMSw3ICs2MjQsNyBAQCBleHRlcm4gTGlz cF9PYmplY3QgY2hhcl90YWJsZV9yZWYgKExpc3BfT2JqZWN0LCBpbnQpOwogZXh0ZXJuIHZv aWQgY2hhcl90YWJsZV9zZXQgKExpc3BfT2JqZWN0LCBpbnQsIExpc3BfT2JqZWN0KTsKIAog LyogRGVmaW5lZCBpbiBkYXRhLmMuICAqLwotZXh0ZXJuIF9Ob3JldHVybiB2b2lkIHdyb25n X3R5cGVfYXJndW1lbnQgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCk7CitleHRlcm4gQVZP SUQgd3JvbmdfdHlwZV9hcmd1bWVudCAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKIAog CiAvKiBEZWZpbmVkIGluIGVtYWNzLmMuICAqLwpAQCAtMzUyOCw3ICszNTMxLDcgQEAgbW9k aWZmX3RvX2ludGVnZXIgKG1vZGlmZl9jb3VudCBhKQogfQogCiAvKiBEZWZpbmVkIGluIGRh dGEuYy4gICovCi1leHRlcm4gX05vcmV0dXJuIHZvaWQgd3JvbmdfY2hvaWNlIChMaXNwX09i amVjdCwgTGlzcF9PYmplY3QpOworZXh0ZXJuIEFWT0lEIHdyb25nX2Nob2ljZSAoTGlzcF9P YmplY3QsIExpc3BfT2JqZWN0KTsKIGV4dGVybiB2b2lkIG5vdGlmeV92YXJpYWJsZV93YXRj aGVycyAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LAogCQkJCSAgICAgIExpc3BfT2JqZWN0 LCBMaXNwX09iamVjdCk7CiBleHRlcm4gTGlzcF9PYmplY3QgaW5kaXJlY3RfZnVuY3Rpb24g KExpc3BfT2JqZWN0KTsKQEAgLTM1NTUsMTAgKzM1NTgsOSBAQCBleHRlcm4gaW50bWF4X3Qg Y29uc190b19zaWduZWQgKExpc3BfT2JqZWN0LCBpbnRtYXhfdCwgaW50bWF4X3QpOwogZXh0 ZXJuIHVpbnRtYXhfdCBjb25zX3RvX3Vuc2lnbmVkIChMaXNwX09iamVjdCwgdWludG1heF90 KTsKIAogZXh0ZXJuIHN0cnVjdCBMaXNwX1N5bWJvbCAqaW5kaXJlY3RfdmFyaWFibGUgKHN0 cnVjdCBMaXNwX1N5bWJvbCAqKTsKLWV4dGVybiBfTm9yZXR1cm4gdm9pZCBhcmdzX291dF9v Zl9yYW5nZSAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKLWV4dGVybiBfTm9yZXR1cm4g dm9pZCBhcmdzX291dF9vZl9yYW5nZV8zIChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCi0J CQkJCSAgIExpc3BfT2JqZWN0KTsKLWV4dGVybiBfTm9yZXR1cm4gdm9pZCBjaXJjdWxhcl9s aXN0IChMaXNwX09iamVjdCk7CitleHRlcm4gQVZPSUQgYXJnc19vdXRfb2ZfcmFuZ2UgKExp c3BfT2JqZWN0LCBMaXNwX09iamVjdCk7CitleHRlcm4gQVZPSUQgYXJnc19vdXRfb2ZfcmFu Z2VfMyAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCk7CitleHRlcm4g QVZPSUQgY2lyY3VsYXJfbGlzdCAoTGlzcF9PYmplY3QpOwogZXh0ZXJuIExpc3BfT2JqZWN0 IGRvX3N5bXZhbF9mb3J3YXJkaW5nIChsaXNwZndkKTsKIGVudW0gU2V0X0ludGVybmFsX0Jp bmQgewogICBTRVRfSU5URVJOQUxfU0VULApAQCAtMzY2Niw3ICszNjY4LDcgQEAgZXh0ZXJu IHZvaWQgc3ltc19vZl9qc29uICh2b2lkKTsKIAogLyogRGVmaW5lZCBpbiBpbnNkZWwuYy4g ICovCiBleHRlcm4gdm9pZCBtb3ZlX2dhcF9ib3RoIChwdHJkaWZmX3QsIHB0cmRpZmZfdCk7 Ci1leHRlcm4gX05vcmV0dXJuIHZvaWQgYnVmZmVyX292ZXJmbG93ICh2b2lkKTsKK2V4dGVy biBBVk9JRCBidWZmZXJfb3ZlcmZsb3cgKHZvaWQpOwogZXh0ZXJuIHZvaWQgbWFrZV9nYXAg KHB0cmRpZmZfdCk7CiBleHRlcm4gdm9pZCBtYWtlX2dhcF8xIChzdHJ1Y3QgYnVmZmVyICos IHB0cmRpZmZfdCk7CiBleHRlcm4gcHRyZGlmZl90IGNvcHlfdGV4dCAoY29uc3QgdW5zaWdu ZWQgY2hhciAqLCB1bnNpZ25lZCBjaGFyICosCkBAIC0zNzY2LDggKzM3NjgsOCBAQCBleHRl cm4gdm9pZCAqbXlfaGVhcF9zdGFydCAodm9pZCk7CiBleHRlcm4gdm9pZCBjaGVja19wdXJl X3NpemUgKHZvaWQpOwogZXh0ZXJuIHZvaWQgYWxsb2NhdGVfc3RyaW5nX2RhdGEgKHN0cnVj dCBMaXNwX1N0cmluZyAqLCBFTUFDU19JTlQsIEVNQUNTX0lOVCk7CiBleHRlcm4gdm9pZCBt YWxsb2Nfd2FybmluZyAoY29uc3QgY2hhciAqKTsKLWV4dGVybiBfTm9yZXR1cm4gdm9pZCBt ZW1vcnlfZnVsbCAoc2l6ZV90KTsKLWV4dGVybiBfTm9yZXR1cm4gdm9pZCBidWZmZXJfbWVt b3J5X2Z1bGwgKHB0cmRpZmZfdCk7CitleHRlcm4gQVZPSUQgbWVtb3J5X2Z1bGwgKHNpemVf dCk7CitleHRlcm4gQVZPSUQgYnVmZmVyX21lbW9yeV9mdWxsIChwdHJkaWZmX3QpOwogZXh0 ZXJuIGJvb2wgc3Vydml2ZXNfZ2NfcCAoTGlzcF9PYmplY3QpOwogZXh0ZXJuIHZvaWQgbWFy a19vYmplY3QgKExpc3BfT2JqZWN0KTsKICNpZiBkZWZpbmVkIFJFTF9BTExPQyAmJiAhZGVm aW5lZCBTWVNURU1fTUFMTE9DICYmICFkZWZpbmVkIEhZQlJJRF9NQUxMT0MKQEAgLTM4NDgs NyArMzg1MCw3IEBAIGxpc3Q0aSAoRU1BQ1NfSU5UIHgsIEVNQUNTX0lOVCB5LCBFTUFDU19J TlQgdywgRU1BQ1NfSU5UIGgpCiAKIGV4dGVybiBMaXNwX09iamVjdCBtYWtlX3VuaW5pdF9i b29sX3ZlY3RvciAoRU1BQ1NfSU5UKTsKIGV4dGVybiBMaXNwX09iamVjdCBib29sX3ZlY3Rv cl9maWxsIChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QpOwotZXh0ZXJuIF9Ob3JldHVybiB2 b2lkIHN0cmluZ19vdmVyZmxvdyAodm9pZCk7CitleHRlcm4gQVZPSUQgc3RyaW5nX292ZXJm bG93ICh2b2lkKTsKIGV4dGVybiBMaXNwX09iamVjdCBtYWtlX3N0cmluZyAoY29uc3QgY2hh ciAqLCBwdHJkaWZmX3QpOwogZXh0ZXJuIExpc3BfT2JqZWN0IG1ha2VfZm9ybWF0dGVkX3N0 cmluZyAoY2hhciAqLCBjb25zdCBjaGFyICosIC4uLikKICAgQVRUUklCVVRFX0ZPUk1BVF9Q UklOVEYgKDIsIDMpOwpAQCAtNDA5NSwxOCArNDA5NywxNyBAQCBleHRlcm4gTGlzcF9PYmpl Y3QgcnVuX2hvb2tfd2l0aF9hcmdzIChwdHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICph cmdzLAogCQkJCSAgICAgICBMaXNwX09iamVjdCAoKmZ1bmNhbGwpCiAJCQkJICAgICAgIChw dHJkaWZmX3QgbmFyZ3MsIExpc3BfT2JqZWN0ICphcmdzKSk7CiBleHRlcm4gTGlzcF9PYmpl Y3QgcXVpdCAodm9pZCk7Ci1JTkxJTkUgX05vcmV0dXJuIHZvaWQKK0lOTElORSBBVk9JRAog eHNpZ25hbCAoTGlzcF9PYmplY3QgZXJyb3Jfc3ltYm9sLCBMaXNwX09iamVjdCBkYXRhKQog ewogICBGc2lnbmFsIChlcnJvcl9zeW1ib2wsIGRhdGEpOwogfQotZXh0ZXJuIF9Ob3JldHVy biB2b2lkIHhzaWduYWwwIChMaXNwX09iamVjdCk7Ci1leHRlcm4gX05vcmV0dXJuIHZvaWQg eHNpZ25hbDEgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCk7Ci1leHRlcm4gX05vcmV0dXJu IHZvaWQgeHNpZ25hbDIgKExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3Qp OwotZXh0ZXJuIF9Ob3JldHVybiB2b2lkIHhzaWduYWwzIChMaXNwX09iamVjdCwgTGlzcF9P YmplY3QsIExpc3BfT2JqZWN0LAotCQkJCUxpc3BfT2JqZWN0KTsKLWV4dGVybiBfTm9yZXR1 cm4gdm9pZCBzaWduYWxfZXJyb3IgKGNvbnN0IGNoYXIgKiwgTGlzcF9PYmplY3QpOwotZXh0 ZXJuIF9Ob3JldHVybiB2b2lkIG92ZXJmbG93X2Vycm9yICh2b2lkKTsKK2V4dGVybiBBVk9J RCB4c2lnbmFsMCAoTGlzcF9PYmplY3QpOworZXh0ZXJuIEFWT0lEIHhzaWduYWwxIChMaXNw X09iamVjdCwgTGlzcF9PYmplY3QpOworZXh0ZXJuIEFWT0lEIHhzaWduYWwyIChMaXNwX09i amVjdCwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0KTsKK2V4dGVybiBBVk9JRCB4c2lnbmFs MyAoTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3Qp OworZXh0ZXJuIEFWT0lEIHNpZ25hbF9lcnJvciAoY29uc3QgY2hhciAqLCBMaXNwX09iamVj dCk7CitleHRlcm4gQVZPSUQgb3ZlcmZsb3dfZXJyb3IgKHZvaWQpOwogZXh0ZXJuIGJvb2wg RlVOQ1RJT05QIChMaXNwX09iamVjdCk7CiBleHRlcm4gTGlzcF9PYmplY3QgZnVuY2FsbF9z dWJyIChzdHJ1Y3QgTGlzcF9TdWJyICpzdWJyLCBwdHJkaWZmX3QgbnVtYXJncywgTGlzcF9P YmplY3QgKmFyZ192ZWN0b3IpOwogZXh0ZXJuIExpc3BfT2JqZWN0IGV2YWxfc3ViIChMaXNw X09iamVjdCBmb3JtKTsKQEAgLTQxNDUsOCArNDE0Niw4IEBAIGV4dGVybiB2b2lkIHNldF91 bndpbmRfcHJvdGVjdF9wdHIgKHB0cmRpZmZfdCwgdm9pZCAoKikgKHZvaWQgKiksIHZvaWQg Kik7CiBleHRlcm4gTGlzcF9PYmplY3QgdW5iaW5kX3RvIChwdHJkaWZmX3QsIExpc3BfT2Jq ZWN0KTsKIGV4dGVybiB2b2lkIHJlYmluZF9mb3JfdGhyZWFkX3N3aXRjaCAodm9pZCk7CiBl eHRlcm4gdm9pZCB1bmJpbmRfZm9yX3RocmVhZF9zd2l0Y2ggKHN0cnVjdCB0aHJlYWRfc3Rh dGUgKik7Ci1leHRlcm4gX05vcmV0dXJuIHZvaWQgZXJyb3IgKGNvbnN0IGNoYXIgKiwgLi4u KSBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMik7Ci1leHRlcm4gX05vcmV0dXJuIHZv aWQgdmVycm9yIChjb25zdCBjaGFyICosIHZhX2xpc3QpCitleHRlcm4gQVZPSUQgZXJyb3Ig KGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMik7Citl eHRlcm4gQVZPSUQgdmVycm9yIChjb25zdCBjaGFyICosIHZhX2xpc3QpCiAgIEFUVFJJQlVU RV9GT1JNQVRfUFJJTlRGICgxLCAwKTsKIGV4dGVybiBMaXNwX09iamVjdCB2Zm9ybWF0X3N0 cmluZyAoY29uc3QgY2hhciAqLCB2YV9saXN0KQogICBBVFRSSUJVVEVfRk9STUFUX1BSSU5U RiAoMSwgMCk7CkBAIC00MjQzLDcgKzQyNDQsNyBAQCBleHRlcm4gdm9pZCBzeW1zX29mX2Vk aXRmbnMgKHZvaWQpOwogLyogRGVmaW5lZCBpbiBidWZmZXIuYy4gICovCiBleHRlcm4gYm9v bCBtb3VzZV9mYWNlX292ZXJsYXlfb3ZlcmxhcHMgKExpc3BfT2JqZWN0KTsKIGV4dGVybiBM aXNwX09iamVjdCBkaXNhYmxlX2xpbmVfbnVtYmVyc19vdmVybGF5X2F0X2VvYiAodm9pZCk7 Ci1leHRlcm4gX05vcmV0dXJuIHZvaWQgbnNiZXJyb3IgKExpc3BfT2JqZWN0KTsKK2V4dGVy biBBVk9JRCBuc2JlcnJvciAoTGlzcF9PYmplY3QpOwogZXh0ZXJuIHZvaWQgYWRqdXN0X292 ZXJsYXlzX2Zvcl9pbnNlcnQgKHB0cmRpZmZfdCwgcHRyZGlmZl90KTsKIGV4dGVybiB2b2lk IGFkanVzdF9vdmVybGF5c19mb3JfZGVsZXRlIChwdHJkaWZmX3QsIHB0cmRpZmZfdCk7CiBl eHRlcm4gdm9pZCBmaXhfc3RhcnRfZW5kX2luX292ZXJsYXlzIChwdHJkaWZmX3QsIHB0cmRp ZmZfdCk7CkBAIC00Mjg2LDkgKzQyODcsOSBAQCBleHRlcm4gdm9pZCBjbG9zZV9maWxlX3Vu d2luZCAoaW50KTsKIGV4dGVybiB2b2lkIGZjbG9zZV91bndpbmQgKHZvaWQgKik7CiBleHRl cm4gdm9pZCByZXN0b3JlX3BvaW50X3Vud2luZCAoTGlzcF9PYmplY3QpOwogZXh0ZXJuIExp c3BfT2JqZWN0IGdldF9maWxlX2Vycm5vX2RhdGEgKGNvbnN0IGNoYXIgKiwgTGlzcF9PYmpl Y3QsIGludCk7Ci1leHRlcm4gX05vcmV0dXJuIHZvaWQgcmVwb3J0X2ZpbGVfZXJybm8gKGNv bnN0IGNoYXIgKiwgTGlzcF9PYmplY3QsIGludCk7Ci1leHRlcm4gX05vcmV0dXJuIHZvaWQg cmVwb3J0X2ZpbGVfZXJyb3IgKGNvbnN0IGNoYXIgKiwgTGlzcF9PYmplY3QpOwotZXh0ZXJu IF9Ob3JldHVybiB2b2lkIHJlcG9ydF9maWxlX25vdGlmeV9lcnJvciAoY29uc3QgY2hhciAq LCBMaXNwX09iamVjdCk7CitleHRlcm4gQVZPSUQgcmVwb3J0X2ZpbGVfZXJybm8gKGNvbnN0 IGNoYXIgKiwgTGlzcF9PYmplY3QsIGludCk7CitleHRlcm4gQVZPSUQgcmVwb3J0X2ZpbGVf ZXJyb3IgKGNvbnN0IGNoYXIgKiwgTGlzcF9PYmplY3QpOworZXh0ZXJuIEFWT0lEIHJlcG9y dF9maWxlX25vdGlmeV9lcnJvciAoY29uc3QgY2hhciAqLCBMaXNwX09iamVjdCk7CiBleHRl cm4gYm9vbCBpbnRlcm5hbF9kZWxldGVfZmlsZSAoTGlzcF9PYmplY3QpOwogZXh0ZXJuIExp c3BfT2JqZWN0IGVtYWNzX3JlYWRsaW5rYXQgKGludCwgY29uc3QgY2hhciAqKTsKIGV4dGVy biBib29sIGZpbGVfZGlyZWN0b3J5X3AgKExpc3BfT2JqZWN0KTsKQEAgLTQ0MDksNyArNDQx MCw3IEBAIGV4dGVybiBib29sIGRpc3BsYXlfYXJnOwogI2VuZGlmCiBleHRlcm4gTGlzcF9P YmplY3QgZGVjb2RlX2Vudl9wYXRoIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgYm9v bCk7CiBleHRlcm4gTGlzcF9PYmplY3QgZW1wdHlfdW5pYnl0ZV9zdHJpbmcsIGVtcHR5X211 bHRpYnl0ZV9zdHJpbmc7Ci1leHRlcm4gX05vcmV0dXJuIHZvaWQgdGVybWluYXRlX2R1ZV90 b19zaWduYWwgKGludCwgaW50KTsKK2V4dGVybiBBVk9JRCB0ZXJtaW5hdGVfZHVlX3RvX3Np Z25hbCAoaW50LCBpbnQpOwogI2lmZGVmIFdJTkRPV1NOVAogZXh0ZXJuIExpc3BfT2JqZWN0 IFZsaWJyYXJ5X2NhY2hlOwogI2VuZGlmCkBAIC00NTc0LDcgKzQ1NzUsNyBAQCBleHRlcm4g RU1BQ1NfSU5UIGdldF9yYW5kb20gKHZvaWQpOwogZXh0ZXJuIHZvaWQgc2VlZF9yYW5kb20g KHZvaWQgKiwgcHRyZGlmZl90KTsKIGV4dGVybiB2b2lkIGluaXRfcmFuZG9tICh2b2lkKTsK IGV4dGVybiB2b2lkIGVtYWNzX2JhY2t0cmFjZSAoaW50KTsKLWV4dGVybiBfTm9yZXR1cm4g dm9pZCBlbWFjc19hYm9ydCAodm9pZCkgTk9fSU5MSU5FOworZXh0ZXJuIEFWT0lEIGVtYWNz X2Fib3J0ICh2b2lkKSBOT19JTkxJTkU7CiBleHRlcm4gaW50IGVtYWNzX29wZW4gKGNvbnN0 IGNoYXIgKiwgaW50LCBpbnQpOwogZXh0ZXJuIGludCBlbWFjc19waXBlIChpbnRbMl0pOwog ZXh0ZXJuIGludCBlbWFjc19jbG9zZSAoaW50KTsKQEAgLTQ2MTUsOCArNDYxNiw3IEBAIGV4 dGVybiBMaXNwX09iamVjdCBkaXJlY3RvcnlfZmlsZXNfaW50ZXJuYWwgKExpc3BfT2JqZWN0 LCBMaXNwX09iamVjdCwKIC8qIERlZmluZWQgaW4gdGVybS5jLiAgKi8KIGV4dGVybiBpbnQg KmNoYXJfaW5zX2RlbF92ZWN0b3I7CiBleHRlcm4gdm9pZCBzeW1zX29mX3Rlcm0gKHZvaWQp OwotZXh0ZXJuIF9Ob3JldHVybiB2b2lkIGZhdGFsIChjb25zdCBjaGFyICptc2dpZCwgLi4u KQotICBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMik7CitleHRlcm4gQVZPSUQgZmF0 YWwgKGNvbnN0IGNoYXIgKm1zZ2lkLCAuLi4pIEFUVFJJQlVURV9GT1JNQVRfUFJJTlRGICgx LCAyKTsKIAogLyogRGVmaW5lZCBpbiB0ZXJtaW5hbC5jLiAgKi8KIGV4dGVybiB2b2lkIHN5 bXNfb2ZfdGVybWluYWwgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2xyZWFkLmMgYi9zcmMv bHJlYWQuYwppbmRleCA1ZjMzZmNkNjk1Li44Y2I0YjYzY2MzIDEwMDY0NAotLS0gYS9zcmMv bHJlYWQuYworKysgYi9zcmMvbHJlYWQuYwpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgbG9hZF9l cnJvcl9oYW5kbGVyIChMaXNwX09iamVjdCBkYXRhKQogICByZXR1cm4gUW5pbDsKIH0KIAot c3RhdGljIF9Ob3JldHVybiB2b2lkCitzdGF0aWMgQVZPSUQKIGxvYWRfZXJyb3Jfb2xkX3N0 eWxlX2JhY2txdW90ZXMgKHZvaWQpCiB7CiAgIGlmIChOSUxQIChWbG9hZF9maWxlX25hbWUp KQpAQCAtMTg3NCw3ICsxODc0LDcgQEAgcmVhZGV2YWxsb29wXzEgKGludCBvbGQpCiAvKiBT aWduYWwgYW4gYGVuZC1vZi1maWxlJyBlcnJvciwgaWYgcG9zc2libGUgd2l0aCBmaWxlIG5h bWUKICAgIGluZm9ybWF0aW9uLiAgKi8KIAotc3RhdGljIF9Ob3JldHVybiB2b2lkCitzdGF0 aWMgQVZPSUQKIGVuZF9vZl9maWxlX2Vycm9yICh2b2lkKQogewogICBpZiAoU1RSSU5HUCAo VmxvYWRfZmlsZV9uYW1lKSkKQEAgLTIyOTcsNyArMjI5Nyw3IEBAIHJlYWRfaW50ZXJuYWxf c3RhcnQgKExpc3BfT2JqZWN0IHN0cmVhbSwgTGlzcF9PYmplY3Qgc3RhcnQsIExpc3BfT2Jq ZWN0IGVuZCkKIC8qIFNpZ25hbCBRaW52YWxpZF9yZWFkX3N5bnRheCBlcnJvci4KICAgIFMg aXMgZXJyb3Igc3RyaW5nIG9mIGxlbmd0aCBOIChpZiA+IDApICAqLwogCi1zdGF0aWMgX05v cmV0dXJuIHZvaWQKK3N0YXRpYyBBVk9JRAogaW52YWxpZF9zeW50YXggKGNvbnN0IGNoYXIg KnMpCiB7CiAgIHhzaWduYWwxIChRaW52YWxpZF9yZWFkX3N5bnRheCwgYnVpbGRfc3RyaW5n IChzKSk7CmRpZmYgLS1naXQgYS9zcmMvcGR1bXBlci5jIGIvc3JjL3BkdW1wZXIuYwppbmRl eCA2MDBjNWIzY2EzLi4yY2M5YWY3ZjU2IDEwMDY0NAotLS0gYS9zcmMvcGR1bXBlci5jCisr KyBiL3NyYy9wZHVtcGVyLmMKQEAgLTY4MCw4ICs2ODAsNyBAQCBzdGF0aWMgdm9pZCBkdW1w X3JlbWVtYmVyX2NvbGRfb3AgKHN0cnVjdCBkdW1wX2NvbnRleHQgKmN0eCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBjb2xkX29wIG9wLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXNwX09iamVjdCBhcmcpOwogCi1fTm9yZXR1 cm4KLXN0YXRpYyB2b2lkCitzdGF0aWMgQVZPSUQKIGVycm9yX3Vuc3VwcG9ydGVkX2R1bXBf b2JqZWN0IChzdHJ1Y3QgZHVtcF9jb250ZXh0ICpjdHgsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzcF9PYmplY3Qgb2JqZWN0LAogCQkJICAgICAgIGNvbnN0IGNoYXIg Km1zZykKZGlmZiAtLWdpdCBhL3NyYy9wdXJlc2l6ZS5oIGIvc3JjL3B1cmVzaXplLmgKaW5k ZXggZjEyMGE0YjMzMC4uZjVmYWQ4YjQyYiAxMDA2NDQKLS0tIGEvc3JjL3B1cmVzaXplLmgK KysrIGIvc3JjL3B1cmVzaXplLmgKQEAgLTc3LDcgKzc3LDcgQEAgSU5MSU5FX0hFQURFUl9C RUdJTgogI2RlZmluZSBQVVJFU0laRSAgKEJBU0VfUFVSRVNJWkUgKiBQVVJFU0laRV9SQVRJ TyAqIFBVUkVTSVpFX0NIRUNLSU5HX1JBVElPKQogI2VuZGlmCiAKLWV4dGVybiBfTm9yZXR1 cm4gdm9pZCBwdXJlX3dyaXRlX2Vycm9yIChMaXNwX09iamVjdCk7CitleHRlcm4gQVZPSUQg cHVyZV93cml0ZV9lcnJvciAoTGlzcF9PYmplY3QpOwogCiBleHRlcm4gRU1BQ1NfSU5UIHB1 cmVbXTsKIApkaWZmIC0tZ2l0IGEvc3JjL3NlYXJjaC5jIGIvc3JjL3NlYXJjaC5jCmluZGV4 IGE0NTBlOTIwYjAuLjdhNmU2ODA2ODUgMTAwNjQ0Ci0tLSBhL3NyYy9zZWFyY2guYworKysg Yi9zcmMvc2VhcmNoLmMKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIEVNQUNTX0lOVCBzZWFy Y2hfYnVmZmVyIChMaXNwX09iamVjdCwgcHRyZGlmZl90LCBwdHJkaWZmX3QsCiAKIExpc3Bf T2JqZWN0IHJlX21hdGNoX29iamVjdDsKIAotc3RhdGljIF9Ob3JldHVybiB2b2lkCitzdGF0 aWMgQVZPSUQKIG1hdGNoZXJfb3ZlcmZsb3cgKHZvaWQpCiB7CiAgIGVycm9yICgiU3RhY2sg b3ZlcmZsb3cgaW4gcmVnZXhwIG1hdGNoZXIiKTsKZGlmZiAtLWdpdCBhL3NyYy9zb3VuZC5j IGIvc3JjL3NvdW5kLmMKaW5kZXggMmI4NzE1MDEwZS4uNGJhODI2ZTgyYyAxMDA2NDQKLS0t IGEvc3JjL3NvdW5kLmMKKysrIGIvc3JjL3NvdW5kLmMKQEAgLTI5Nyw3ICsyOTcsNyBAQCBz dGF0aWMgaW50IGRvX3BsYXlfc291bmQgKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgbG9uZyk7 CiAjaWZuZGVmIFdJTkRPV1NOVAogLyogTGlrZSBwZXJyb3IsIGJ1dCBzaWduYWxzIGFuIGVy cm9yLiAgKi8KIAotc3RhdGljIF9Ob3JldHVybiB2b2lkCitzdGF0aWMgQVZPSUQKIHNvdW5k X3BlcnJvciAoY29uc3QgY2hhciAqbXNnKQogewogICBpbnQgc2F2ZWRfZXJybm8gPSBlcnJu bzsKQEAgLTg3NCw3ICs4NzQsNyBAQCB2b3hfd3JpdGUgKHN0cnVjdCBzb3VuZF9kZXZpY2Ug KnNkLCBjb25zdCBjaGFyICpidWZmZXIsIHB0cmRpZmZfdCBuYnl0ZXMpCiAjZGVmaW5lIERF RkFVTFRfQUxTQV9TT1VORF9ERVZJQ0UgImRlZmF1bHQiCiAjZW5kaWYKIAotc3RhdGljIF9O b3JldHVybiB2b2lkCitzdGF0aWMgQVZPSUQKIGFsc2Ffc291bmRfcGVycm9yIChjb25zdCBj aGFyICptc2csIGludCBlcnIpCiB7CiAgIGVycm9yICgiJXM6ICVzIiwgbXNnLCBzbmRfc3Ry ZXJyb3IgKGVycikpOwpkaWZmIC0tZ2l0IGEvc3JjL3N5c2RlcC5jIGIvc3JjL3N5c2RlcC5j CmluZGV4IDU3ZWE4MjIwY2EuLmJjODhlNzBkY2IgMTAwNjQ0Ci0tLSBhL3NyYy9zeXNkZXAu YworKysgYi9zcmMvc3lzZGVwLmMKQEAgLTE4MDUsNyArMTgwNSw3IEBAIGRlbGl2ZXJfZmF0 YWxfdGhyZWFkX3NpZ25hbCAoaW50IHNpZykKICAgZGVsaXZlcl90aHJlYWRfc2lnbmFsIChz aWcsIGhhbmRsZV9mYXRhbF9zaWduYWwpOwogfQogCi1zdGF0aWMgX05vcmV0dXJuIHZvaWQK K3N0YXRpYyBBVk9JRAogaGFuZGxlX2FyaXRoX3NpZ25hbCAoaW50IHNpZykKIHsKICAgcHRo cmVhZF9zaWdtYXNrIChTSUdfU0VUTUFTSywgJmVtcHR5X21hc2ssIDApOwpkaWZmIC0tZ2l0 IGEvc3JjL3N5c3RpbWUuaCBiL3NyYy9zeXN0aW1lLmgKaW5kZXggOTA4MGNkMmJiYS4uODlh ZjBjNWUzZCAxMDA2NDQKLS0tIGEvc3JjL3N5c3RpbWUuaAorKysgYi9zcmMvc3lzdGltZS5o CkBAIC05Miw3ICs5Miw3IEBAIGV4dGVybiBMaXNwX09iamVjdCBtYWtlX2xpc3BfdGltZSAo c3RydWN0IHRpbWVzcGVjKTsKIGV4dGVybiBib29sIGxpc3Q0X3RvX3RpbWVzcGVjIChMaXNw X09iamVjdCwgTGlzcF9PYmplY3QsIExpc3BfT2JqZWN0LAogCQkJICAgICAgIExpc3BfT2Jq ZWN0LCBzdHJ1Y3QgdGltZXNwZWMgKik7CiBleHRlcm4gc3RydWN0IHRpbWVzcGVjIGxpc3Bf dGltZV9hcmd1bWVudCAoTGlzcF9PYmplY3QpOwotZXh0ZXJuIF9Ob3JldHVybiB2b2lkIHRp bWVfb3ZlcmZsb3cgKHZvaWQpOworZXh0ZXJuIEFWT0lEIHRpbWVfb3ZlcmZsb3cgKHZvaWQp OwogZXh0ZXJuIHZvaWQgaW5pdF90aW1lZm5zICh2b2lkKTsKIGV4dGVybiB2b2lkIHN5bXNf b2ZfdGltZWZucyAodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXJtLmMgYi9zcmMvdGVy bS5jCmluZGV4IGE0OTIyNzZjODguLjJkZTBhMGU2NjQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXJt LmMKKysrIGIvc3JjL3Rlcm0uYwpAQCAtNzMsMTEgKzczLDEwIEBAIHN0YXRpYyB2b2lkIGNs ZWFyX3R0eV9ob29rcyAoc3RydWN0IHRlcm1pbmFsICp0ZXJtaW5hbCk7CiBzdGF0aWMgdm9p ZCBzZXRfdHR5X2hvb2tzIChzdHJ1Y3QgdGVybWluYWwgKnRlcm1pbmFsKTsKIHN0YXRpYyB2 b2lkIGRpc3NvY2lhdGVfaWZfY29udHJvbGxpbmdfdHR5IChpbnQgZmQpOwogc3RhdGljIHZv aWQgZGVsZXRlX3R0eSAoc3RydWN0IHRlcm1pbmFsICopOwotc3RhdGljIF9Ob3JldHVybiB2 b2lkIG1heWJlX2ZhdGFsIChib29sLCBzdHJ1Y3QgdGVybWluYWwgKiwKLQkJCQkgICBjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKQorc3RhdGljIEFWT0lEIG1heWJlX2ZhdGFs IChib29sLCBzdHJ1Y3QgdGVybWluYWwgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICos CisJCQkgIC4uLikKICAgQVRUUklCVVRFX0ZPUk1BVF9QUklOVEYgKDMsIDUpIEFUVFJJQlVU RV9GT1JNQVRfUFJJTlRGICg0LCA1KTsKLXN0YXRpYyBfTm9yZXR1cm4gdm9pZCB2ZmF0YWwg KGNvbnN0IGNoYXIgKnN0ciwgdmFfbGlzdCBhcCkKLSAgQVRUUklCVVRFX0ZPUk1BVF9QUklO VEYgKDEsIDApOworc3RhdGljIEFWT0lEIHZmYXRhbCAoY29uc3QgY2hhciAqLCB2YV9saXN0 KSBBVFRSSUJVVEVfRk9STUFUX1BSSU5URiAoMSwgMCk7CiAKIAogI2RlZmluZSBPVVRQVVQo dHR5LCBhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKZGlm ZiAtLWdpdCBhL3NyYy90ZXh0cHJvcC5jIGIvc3JjL3RleHRwcm9wLmMKaW5kZXggYmIwNjNk M2VhYS4uYWU0MmM0NDE4NSAxMDA2NDQKLS0tIGEvc3JjL3RleHRwcm9wLmMKKysrIGIvc3Jj L3RleHRwcm9wLmMKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIExpc3BfT2JqZWN0IGludGVy dmFsX2luc2VydF9pbl9mcm9udF9ob29rczsKIC8qIFNpZ25hbCBhIGB0ZXh0LXJlYWQtb25s eScgZXJyb3IuICBUaGlzIGZ1bmN0aW9uIG1ha2VzIGl0IGVhc2llcgogICAgdG8gY2FwdHVy ZSB0aGF0IGVycm9yIGluIEdEQiBieSBwdXR0aW5nIGEgYnJlYWtwb2ludCBvbiBpdC4gICov CiAKLXN0YXRpYyBfTm9yZXR1cm4gdm9pZAorc3RhdGljIEFWT0lECiB0ZXh0X3JlYWRfb25s eSAoTGlzcF9PYmplY3QgcHJvcHZhbCkKIHsKICAgaWYgKFNUUklOR1AgKHByb3B2YWwpKQpk aWZmIC0tZ2l0IGEvc3JjL3RpbWVmbnMuYyBiL3NyYy90aW1lZm5zLmMKaW5kZXggNTE0ZmEy NGY4Yi4uY2I5NTNkMWI0YyAxMDA2NDQKLS0tIGEvc3JjL3RpbWVmbnMuYworKysgYi9zcmMv dGltZWZucy5jCkBAIC0xNzIsNyArMTcyLDcgQEAgZW1hY3NfbG9jYWx0aW1lX3J6ICh0aW1l em9uZV90IHR6LCB0aW1lX3QgY29uc3QgKnQsIHN0cnVjdCB0bSAqdG0pCiAgIHJldHVybiB0 bTsKIH0KIAotc3RhdGljIF9Ob3JldHVybiB2b2lkCitzdGF0aWMgQVZPSUQKIGludmFsaWRf dGltZV96b25lX3NwZWNpZmljYXRpb24gKExpc3BfT2JqZWN0IHpvbmUpCiB7CiAgIHhzaWdu YWwyIChRZXJyb3IsIGJ1aWxkX3N0cmluZyAoIkludmFsaWQgdGltZSB6b25lIHNwZWNpZmlj YXRpb24iKSwgem9uZSk7CkBAIC0zMzcsNyArMzM3LDcgQEAgdGltZV9vdmVyZmxvdyAodm9p ZCkKICAgZXJyb3IgKCJTcGVjaWZpZWQgdGltZSBpcyBub3QgcmVwcmVzZW50YWJsZSIpOwog fQogCi1zdGF0aWMgX05vcmV0dXJuIHZvaWQKK3N0YXRpYyBBVk9JRAogdGltZV9lcnJvciAo aW50IGVycikKIHsKICAgc3dpdGNoIChlcnIpCkBAIC0zNDgsNyArMzQ4LDcgQEAgdGltZV9l cnJvciAoaW50IGVycikKICAgICB9CiB9CiAKLXN0YXRpYyBfTm9yZXR1cm4gdm9pZAorc3Rh dGljIEFWT0lECiBpbnZhbGlkX2h6IChMaXNwX09iamVjdCBoeikKIHsKICAgeHNpZ25hbDIg KFFlcnJvciwgYnVpbGRfc3RyaW5nICgiSW52YWxpZCB0aW1lIGZyZXF1ZW5jeSIpLCBoeik7 CmRpZmYgLS1naXQgYS9zcmMveHRlcm0uYyBiL3NyYy94dGVybS5jCmluZGV4IDBmYWNiNTI0 NTQuLjBiODMyNjNhMGUgMTAwNjQ0Ci0tLSBhL3NyYy94dGVybS5jCisrKyBiL3NyYy94dGVy bS5jCkBAIC0xNTA1LDM3ICsxNTA1LDggQEAgeF9kcmF3X2ZyaW5nZV9iaXRtYXAgKHN0cnVj dCB3aW5kb3cgKncsIHN0cnVjdCBnbHlwaF9yb3cgKnJvdywgc3RydWN0IGRyYXdfZnJpbmcK IAkJCSAgICBHbHlwaCBkaXNwbGF5CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKLQotCi1zdGF0 aWMgdm9pZCB4X3NldF9nbHlwaF9zdHJpbmdfY2xpcHBpbmcgKHN0cnVjdCBnbHlwaF9zdHJp bmcgKik7Ci1zdGF0aWMgdm9pZCB4X3NldF9nbHlwaF9zdHJpbmdfZ2MgKHN0cnVjdCBnbHlw aF9zdHJpbmcgKik7Ci1zdGF0aWMgdm9pZCB4X2RyYXdfZ2x5cGhfc3RyaW5nX2ZvcmVncm91 bmQgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKik7Ci1zdGF0aWMgdm9pZCB4X2RyYXdfY29tcG9z aXRlX2dseXBoX3N0cmluZ19mb3JlZ3JvdW5kIChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICopOwot c3RhdGljIHZvaWQgeF9kcmF3X2dseXBoX3N0cmluZ19ib3ggKHN0cnVjdCBnbHlwaF9zdHJp bmcgKik7Ci1zdGF0aWMgdm9pZCB4X2RyYXdfZ2x5cGhfc3RyaW5nICAoc3RydWN0IGdseXBo X3N0cmluZyAqKTsKLXN0YXRpYyBfTm9yZXR1cm4gdm9pZCB4X2RlbGV0ZV9nbHlwaHMgKHN0 cnVjdCBmcmFtZSAqLCBpbnQpOwotc3RhdGljIHZvaWQgeF9jb21wdXRlX2dseXBoX3N0cmlu Z19vdmVyaGFuZ3MgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKik7Ci1zdGF0aWMgdm9pZCB4X3Nl dF9jdXJzb3JfZ2MgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKik7Ci1zdGF0aWMgdm9pZCB4X3Nl dF9tb2RlX2xpbmVfZmFjZV9nYyAoc3RydWN0IGdseXBoX3N0cmluZyAqKTsKLXN0YXRpYyB2 b2lkIHhfc2V0X21vdXNlX2ZhY2VfZ2MgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKik7CiBzdGF0 aWMgYm9vbCB4X2FsbG9jX2xpZ2h0ZXJfY29sb3IgKHN0cnVjdCBmcmFtZSAqLCBEaXNwbGF5 ICosIENvbG9ybWFwLAogCQkJCSAgIHVuc2lnbmVkIGxvbmcgKiwgZG91YmxlLCBpbnQpOwot c3RhdGljIHZvaWQgeF9zZXR1cF9yZWxpZWZfY29sb3IgKHN0cnVjdCBmcmFtZSAqLCBzdHJ1 Y3QgcmVsaWVmICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91Ymxl LCBpbnQsIHVuc2lnbmVkIGxvbmcpOwotc3RhdGljIHZvaWQgeF9zZXR1cF9yZWxpZWZfY29s b3JzIChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICopOwotc3RhdGljIHZvaWQgeF9kcmF3X2ltYWdl X2dseXBoX3N0cmluZyAoc3RydWN0IGdseXBoX3N0cmluZyAqKTsKLXN0YXRpYyB2b2lkIHhf ZHJhd19pbWFnZV9yZWxpZWYgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKik7Ci1zdGF0aWMgdm9p ZCB4X2RyYXdfaW1hZ2VfZm9yZWdyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqKTsKLSNp Zm5kZWYgVVNFX0NBSVJPCi1zdGF0aWMgdm9pZCB4X2RyYXdfaW1hZ2VfZm9yZWdyb3VuZF8x IChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICosIFBpeG1hcCk7Ci0jZW5kaWYKLXN0YXRpYyB2b2lk IHhfY2xlYXJfZ2x5cGhfc3RyaW5nX3JlY3QgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKiwgaW50 LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBpbnQsIGlu dCk7Ci1zdGF0aWMgdm9pZCB4X2RyYXdfcmVsaWVmX3JlY3QgKHN0cnVjdCBmcmFtZSAqLCBp bnQsIGludCwgaW50LCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgWFJlY3RhbmdsZSAqKTsKLXN0YXRpYyB2b2lkIHhfZHJhd19ib3hfcmVj dCAoc3RydWN0IGdseXBoX3N0cmluZyAqLCBpbnQsIGludCwgaW50LCBpbnQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCwgYm9vbCwgYm9vbCwgWFJlY3RhbmdsZSAqKTsK IHN0YXRpYyB2b2lkIHhfc2Nyb2xsX2Jhcl9jbGVhciAoc3RydWN0IGZyYW1lICopOwogCiAj aWZkZWYgR0xZUEhfREVCVUcKQEAgLTM5NzUsNyArMzk0Niw3IEBAIHhfc2hpZnRfZ2x5cGhz X2Zvcl9pbnNlcnQgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgs IGludCBoZWlnaHQsCiAgICBmb3IgWCBmcmFtZXMuICAqLwogCiBzdGF0aWMgdm9pZAoteF9k ZWxldGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIHJlZ2lzdGVyIGludCBuKQoreF9kZWxl dGVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBuKQogewogICBlbWFjc19hYm9ydCAo KTsKIH0KQEAgLTk4NDIsNyArOTgxMyw3IEBAIHN0YXRpYyBjaGFyICplcnJvcl9tc2c7CiAv KiBIYW5kbGUgdGhlIGxvc3Mgb2YgY29ubmVjdGlvbiB0byBkaXNwbGF5IERQWS4gIEVSUk9S X01FU1NBR0UgaXMKICAgIHRoZSB0ZXh0IG9mIGFuIGVycm9yIG1lc3NhZ2UgdGhhdCBsZWFk IHRvIHRoZSBjb25uZWN0aW9uIGxvc3MuICAqLwogCi1zdGF0aWMgX05vcmV0dXJuIHZvaWQK K3N0YXRpYyBBVk9JRAogeF9jb25uZWN0aW9uX2Nsb3NlZCAoRGlzcGxheSAqZHB5LCBjb25z dCBjaGFyICplcnJvcl9tZXNzYWdlLCBib29sIGlvZXJyb3IpCiB7CiAgIHN0cnVjdCB4X2Rp c3BsYXlfaW5mbyAqZHB5aW5mbyA9IHhfZGlzcGxheV9pbmZvX2Zvcl9kaXNwbGF5IChkcHkp OwpAQCAtMTAwMDUsNyArOTk3Niw3IEBAIHhfZXJyb3JfcXVpdHRlciAoRGlzcGxheSAqZGlz cGxheSwgWEVycm9yRXZlbnQgKmV2ZW50KQogICAgSXQga2lsbHMgYWxsIGZyYW1lcyBvbiB0 aGUgZGlzcGxheSB0aGF0IHdlIGxvc3QgdG91Y2ggd2l0aC4KICAgIElmIHRoYXQgd2FzIHRo ZSBvbmx5IG9uZSwgaXQgcHJpbnRzIGFuIGVycm9yIG1lc3NhZ2UgYW5kIGtpbGxzIEVtYWNz LiAgKi8KIAotc3RhdGljIF9Ob3JldHVybiBpbnQKK3N0YXRpYyBfTm9yZXR1cm4gQVRUUklC VVRFX0NPTEQgaW50CiB4X2lvX2Vycm9yX3F1aXR0ZXIgKERpc3BsYXkgKmRpc3BsYXkpCiB7 CiAgIGNoYXIgYnVmWzI1Nl07Ci0tIAoyLjE3LjEKCg== --------------9812674D84D2B43D7FA4B71E--