From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Alexandre Adolphe Newsgroups: gmane.emacs.bugs Subject: bug#13011: [PATCH] Text flickering moving cursor with box around text enabled Date: Sat, 10 Aug 2019 23:21:32 +0200 Message-ID: References: <793025287.20121127114224@virgilio.it> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000a7e3cf058fc9e070" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="51203"; mail-complaints-to="usenet@blaine.gmane.org" To: 13011@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Aug 10 23:22:25 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hwYoi-000DB0-Tc for geb-bug-gnu-emacs@m.gmane.org; Sat, 10 Aug 2019 23:22:25 +0200 Original-Received: from localhost ([::1]:38108 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwYoh-0004Uv-SQ for geb-bug-gnu-emacs@m.gmane.org; Sat, 10 Aug 2019 17:22:23 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56825) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hwYoQ-0004Tb-IA for bug-gnu-emacs@gnu.org; Sat, 10 Aug 2019 17:22:10 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hwYoM-0000OJ-9w for bug-gnu-emacs@gnu.org; Sat, 10 Aug 2019 17:22:06 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:35697) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hwYoL-0000Nl-VB for bug-gnu-emacs@gnu.org; Sat, 10 Aug 2019 17:22:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hwYoL-00080f-Ov for bug-gnu-emacs@gnu.org; Sat, 10 Aug 2019 17:22:01 -0400 X-Loop: help-debbugs@gnu.org In-Reply-To: <793025287.20121127114224@virgilio.it> Resent-From: Alexandre Adolphe Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 10 Aug 2019 21:22:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 13011 X-GNU-PR-Package: emacs Original-Received: via spool by 13011-submit@debbugs.gnu.org id=B13011.156547211530769 (code B ref 13011); Sat, 10 Aug 2019 21:22:01 +0000 Original-Received: (at 13011) by debbugs.gnu.org; 10 Aug 2019 21:21:55 +0000 Original-Received: from localhost ([127.0.0.1]:44518 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hwYoD-000807-NC for submit@debbugs.gnu.org; Sat, 10 Aug 2019 17:21:55 -0400 Original-Received: from mail-lf1-f45.google.com ([209.85.167.45]:35273) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hwYoA-0007zj-3e for 13011@debbugs.gnu.org; Sat, 10 Aug 2019 17:21:52 -0400 Original-Received: by mail-lf1-f45.google.com with SMTP id p197so71853467lfa.2 for <13011@debbugs.gnu.org>; Sat, 10 Aug 2019 14:21:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=fkmzh2b0EsrpPWNIyb17ob5ICgZKuYw5VrvXodMM13Q=; b=Z9MMtlkSt/CDAOwYpP7ZuHk7Yb9fMA9JN+qnrQGhRlvouEFRwqid1zoRFyHzi+aeLg TTAJ6DkrcEYrnm8iojV/QuBo30E+un+yVNCaG9ecuJk+AcEemK7JrxVGqpZRP0ah58A/ ++GaE3i2PcCOfSKOYcYFYoIX+ou4ZrVJ+hw9JMWj8Yflf6Ew0l3+W+2hPoflGv27x21O 4ByHj02uLYH0AnO+rNSvCvxUZuD1UV0WtPPLJT87duWoB7GWWo0DPycljMChm56GYXRn 32NmDuH3hR8EzOKiCUbxOikVWqSEBj5QOCGrEVSxFeeDHkRmpQRdjZVDNUWsNpMvpcNJ HUlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=fkmzh2b0EsrpPWNIyb17ob5ICgZKuYw5VrvXodMM13Q=; b=bdkuN7foh1hTgnrVV5zX8fsHg65eTByONdzUG9No5mzsq/s96nsMx+0l+K38I5dpDt hThu8U49h1bg7wkHDc59CjruerNG9AIDJNqr5haO+7EzgKJ68EU4JjfLl9ePb/ov/HbF MuMNhbteQCgnL2brachYhZcp2O3AXEHCrt3826DMLKl2HGSnSH5BdYNIgxo7sLq/bR8z xr6l5CdNImcZ8kRQdGTlpnYWpec4HzXoQeSqgj9iLLfjmH89qckmVU8+t/Uc7bBD5PV2 cVDuL71AQtymVy8spQwLojh001IjJrnj5r2LLYPLNcQ+QY36bH4Ev7yWRisI27n2QU6n 0dDA== X-Gm-Message-State: APjAAAW6AwX0PZFe9MG8SWtsgWu0y+TQGqh3rqi/VpTCKDHCxSO6Zcg7 fG8nqwHy3hsqMO0cpo2/U7lGHjTet1MVDzN7UgeFrg== X-Google-Smtp-Source: APXvYqzRe7PK26153UwO7gPd1+1NWoZtEWjV9myrCqWwP5WekQV9EX+w6pBkBLnNLxk5+JFSfRuPTkHT1JiVEvdpFAI= X-Received: by 2002:a19:4aca:: with SMTP id x193mr15864543lfa.146.1565472103810; Sat, 10 Aug 2019 14:21:43 -0700 (PDT) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:164863 Archived-At: --000000000000a7e3cf058fc9e070 Content-Type: multipart/alternative; boundary="000000000000a7e3c9058fc9e06e" --000000000000a7e3c9058fc9e06e Content-Type: text/plain; charset="UTF-8" Hi, After seeing that some people were interrest about this issue on reddit, I rejump in this change. I saw that the customization of box were not correctly done so I correct it. Here is the updated patch. Thanks, Alexandre --000000000000a7e3c9058fc9e06e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

After seeing that some people were = interrest about this issue on reddit, I rejump in this change. I saw that t= he customization of box were not correctly done so I correct it.
= Here is the updated patch.

Thanks,
Alexa= ndre
--000000000000a7e3c9058fc9e06e-- --000000000000a7e3cf058fc9e070 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Allow-negative-line-width-for-box-face-attribute.patch" Content-Disposition: attachment; filename="0001-Allow-negative-line-width-for-box-face-attribute.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jz61l9eg0 RnJvbSA1NzMxOGFjZmY1N2Y5OTg4MDUwMTdhZTkzMjc2MDE3NzNlNDg4MWM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kcmUgQWRvbHBoZSA8YWxleGFuZHJlLmFkb2xwaGVA Z21haWwuY29tPgpEYXRlOiBTYXQsIDEwIEF1ZyAyMDE5IDIyOjU3OjI0ICswMjAwClN1YmplY3Q6 IFtQQVRDSF0gQWxsb3cgbmVnYXRpdmUgbGluZSB3aWR0aCBmb3IgOmJveCBmYWNlIGF0dHJpYnV0 ZQoKU2VwYXJhdGUgdmFsdWVzIGZvciBib3ggbGluZSB3aWR0aCBhbmQgaGVpZ2h0IGFuZCBhbGxv dyBib3RoIHRvIGJlCm5lZ2F0aXZlIHdoaWNoIG1ha2VzIHRoZSB2aXN1YWwgd2lkdGggYW5kIGhl aWdodCBvZiB0aGUgYm94ZWQgc3RyaW5nCnVuY2hhbmdlZCAoQnVnIzEzMDExKS4KCiogZG9jL2xp c3ByZWYvZGlzcGxheS50ZXhpIChGYWNlIEF0dHJpYnV0ZXMpOiBNb2RpZnkgOmJveCBhdHRyaWJ1 dGUKICBkZXNjcmlwdGlvbiB0byByZWZsZWN0IHRoZSBuZXcgcG9zc2liaWxpdGllcy4KKiBsaXNw L2N1cy1mYWNlLmVsIChjdXN0b20tZmFjZS1hdHRyaWJ1dGVzKTogU2V0IGJveCBhdHRyaWJ1dGUg dG8gZ2V0CiAgdHdvIGludGVnZXIgdG8gc2V0IHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHdpZHRo IGFuZCBtb2RpZnkgcHJlLWZpbHRlcgogIHRvIGFjY2VwdCBkb3R0ZWQgbGlzdCBvZiB0d28gaW50 IGFzIHZhbGlkIGJveCBhdHRyaWJ1dGUuCiogc3JjL2Rpc3BleHRlcm4uaCAoZmFjZSk6IFVzZSB0 d28gaW50IGZvciBib3ggaG9yaXpvbnRhbCBhbmQgdmVydGljYWwKICBsaW5lIHdpZHRoLgoKKiBz cmMvbnNmb250Lm0gKG5zZm9udF9kcmF3KTogVXNlIG5ldyBmYWNlIGF0dHJpYnV0ZXMuCiogc3Jj L25zdGVybS5tIChuc19kcmF3X2JveCwgbnNfZHJhd19yZWxpZWYpOiBTdXBwb3J0IHNlcGFyYXRl ZAogIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGJveCBsaW5lIHdpZHRoLgogIChuc19kdW1wZ2x5 cGhzX2JveF9vcl9yZWxpZWYsIG5zX21heWJlX2R1bXBnbHlwaHNfYmFja2dyb3VuZCkKICAobnNf ZHVtcGdseXBoc19pbWFnZSwgbnNfZHJhd19nbHlwaF9zdHJpbmdfZm9yZWdyb3VuZCkKICAobnNf ZHJhd19jb21wb3NpdGVfZ2x5cGhfc3RyaW5nX2ZvcmVncm91bmQpOiBVc2UgbmV3IGZhY2UgYXR0 cmlidXRlcy4KCiogc3JjL3czMnRlcm0uYyAodzMyX2RyYXdfYm94X3JlY3QsIHczMl9kcmF3X3Jl bGllZl9yZWN0KTogU3VwcG9ydAogIHNlcGFyYXRlZCBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBi b3ggbGluZSB3aWR0aC4KICAoeF9kcmF3X2dseXBoX3N0cmluZ19iYWNrZ3JvdW5kLCB4X2RyYXdf Z2x5cGhfc3RyaW5nX2ZvcmVncm91bmQpCiAgKHhfZHJhd19jb21wb3NpdGVfZ2x5cGhfc3RyaW5n X2ZvcmVncm91bmQpCiAgKHhfZHJhd19nbHlwaGxlc3NfZ2x5cGhfc3RyaW5nX2ZvcmVncm91bmQp CiAgKHhfZHJhd19nbHlwaF9zdHJpbmdfYm94LCB4X2RyYXdfaW1hZ2VfZm9yZWdyb3VuZCkKICAo eF9kcmF3X2ltYWdlX3JlbGllZiwgdzMyX2RyYXdfaW1hZ2VfZm9yZWdyb3VuZF8xKQogICh4X2Ry YXdfaW1hZ2VfZ2x5cGhfc3RyaW5nKTogVXNlIG5ldyBmYWNlIGF0dHJpYnV0ZXMuCgoqIHNyYy94 ZmFjZXMuYyAoU2ludGVybmFsX3NldF9saXNwX2ZhY2VfYXR0cmlidXRlLCByZWFsaXplX3hfZmFj ZSk6CiAgQWNjZXB0IGJveCBhdHRyaWJ1dGUgYXMgYSBsaXN0IG9mIHR3byBpbnRzLgoKKiBzcmMv eGRpc3AuYyAoZXN0aW1hdGVfbW9kZV9saW5lX2hlaWdodCwgcHJvZHVjZV9pbWFnZV9nbHlwaCkK ICAocHJvZHVjZV94d2lkZ2V0X2dseXBoLCB4X3Byb2R1Y2VfZ2x5cGhzKTogVXNlIG5ldyBmYWNl IGF0dHJpYnV0ZXMuCiogc3JjL3h0ZXJtLmMgKHhfZHJhd19ib3hfcmVjdCwgeF9kcmF3X3JlbGll Zl9yZWN0KTogU3VwcG9ydCBzZXBhcmF0ZWQKICBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBib3gg bGluZSB3aWR0aC4KICAoeF9kcmF3X2dseXBoX3N0cmluZ19iYWNrZ3JvdW5kLCB4X2RyYXdfZ2x5 cGhfc3RyaW5nX2ZvcmVncm91bmQpCiAgKHhfZHJhd19jb21wb3NpdGVfZ2x5cGhfc3RyaW5nX2Zv cmVncm91bmQpCiAgKHhfZHJhd19nbHlwaGxlc3NfZ2x5cGhfc3RyaW5nX2ZvcmVncm91bmQpCiAg KHhfZHJhd19nbHlwaF9zdHJpbmdfYm94LCB4X2RyYXdfaW1hZ2VfZm9yZWdyb3VuZCkKICAoeF9k cmF3X2ltYWdlX3JlbGllZiwgeF9kcmF3X2ltYWdlX2ZvcmVncm91bmRfMSkKICAoeF9kcmF3X2lt YWdlX2dseXBoX3N0cmluZyk6IFVzZSBuZXcgZmFjZSBhdHRyaWJ1dGVzLgotLS0KIGRvYy9saXNw cmVmL2Rpc3BsYXkudGV4aSB8ICAxNSArKystLQogbGlzcC9jdXMtZmFjZS5lbCAgICAgICAgIHwg IDE2ICsrKy0tCiBzcmMvZGlzcGV4dGVybi5oICAgICAgICAgfCAgMTcgKysrKy0tCiBzcmMvbnNm b250Lm0gICAgICAgICAgICAgfCAgIDcgKystCiBzcmMvbnN0ZXJtLm0gICAgICAgICAgICAgfCAg NTYgKysrKysrKysrLS0tLS0tLS0tCiBzcmMvdzMydGVybS5jICAgICAgICAgICAgfCAgNTkgKysr KysrKysrKy0tLS0tLS0tLQogc3JjL3hkaXNwLmMgICAgICAgICAgICAgIHwgMTIzICsrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL3hmYWNlcy5jICAgICAgICAgICAg IHwgIDMyICsrKysrKysrLS0KIHNyYy94dGVybS5jICAgICAgICAgICAgICB8IDExNSArKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIDkgZmlsZXMgY2hhbmdlZCwgMjI3IGluc2Vy dGlvbnMoKyksIDIxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9kaXNw bGF5LnRleGkgYi9kb2MvbGlzcHJlZi9kaXNwbGF5LnRleGkKaW5kZXggN2MwYTU2ZGNhZC4uMzU4 OGM1ZmQ0NCAxMDA2NDQKLS0tIGEvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCisrKyBiL2RvYy9s aXNwcmVmL2Rpc3BsYXkudGV4aQpAQCAtMjQxMywxMiArMjQxMywxNSBAQCBGYWNlIEF0dHJpYnV0 ZXMKIEBpdGVtIEB2YXJ7Y29sb3J9CiBEcmF3IGEgYm94IHdpdGggbGluZXMgb2Ygd2lkdGggMSwg aW4gY29sb3IgQHZhcntjb2xvcn0uCiAKLUBpdGVtIEBjb2Rleyg6bGluZS13aWR0aCBAdmFye3dp ZHRofSA6Y29sb3IgQHZhcntjb2xvcn0gOnN0eWxlIEB2YXJ7c3R5bGV9KX0KLVRoaXMgd2F5IHlv dSBjYW4gZXhwbGljaXRseSBzcGVjaWZ5IGFsbCBhc3BlY3RzIG9mIHRoZSBib3guICBUaGUgdmFs dWUKLUB2YXJ7d2lkdGh9IHNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIGxpbmVzIHRvIGRyYXc7 IGl0IGRlZmF1bHRzIHRvCi0xLiAgQSBuZWdhdGl2ZSB3aWR0aCBAbWludXN7fUB2YXJ7bn0gbWVh bnMgdG8gZHJhdyBhIGxpbmUgb2Ygd2lkdGggQHZhcntufQotd2hvc2UgdG9wIGFuZCBib3R0b20g cGFydHMgb2NjdXB5IHRoZSBzcGFjZSBvZiB0aGUgdW5kZXJseWluZyB0ZXh0LAotdGh1cyBhdm9p ZGluZyBhbnkgaW5jcmVhc2UgaW4gdGhlIGNoYXJhY3RlciBoZWlnaHQuCitAaXRlbSBAY29kZXso OmxpbmUtd2lkdGggKEB2YXJ7dndpZHRofSAuIEB2YXJ7aHdpZHRofSkgOmNvbG9yIEB2YXJ7Y29s b3J9IDpzdHlsZSBAdmFye3N0eWxlfSl9CitUaGlzIHdheSB5b3UgY2FuIGV4cGxpY2l0bHkgc3Bl Y2lmeSBhbGwgYXNwZWN0cyBvZiB0aGUgYm94LiAgVGhlIHZhbHVlcworQHZhcnt2d2lkdGh9IGFu ZCBAdmFye2h3aWR0aH0gc3BlY2lmaWVzIHJlc3BlY3RpdmVseSB0aGUgd2lkdGggb2YgdGhlCit2 ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBsaW5lcyB0byBkcmF3OyB0aGV5IGRlZmF1bHQgdG8gKDEg LiAxKS4KK0EgbmVnYXRpdmUgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCB3aWR0aCBAbWludXN7fUB2 YXJ7bn0gbWVhbnMgdG8gZHJhdyBhIGxpbmUKK29mIHdpZHRoIEB2YXJ7bn0gdGhhdCBvY2N1cGll cyB0aGUgc3BhY2Ugb2YgdGhlIHVuZGVybHlpbmcgdGV4dCwgdGh1cworYXZvaWRpbmcgYW55IGlu Y3JlYXNlIGluIHRoZSBjaGFyYWN0ZXIgaGVpZ2h0IG9yIHdpZHRoLiBGb3Igc2ltcGxpZmljYXRp b24KK3RoZSB3aWR0aCBjb3VsZCBiZSBzcGVjaWZpZWQgd2l0aCBvbmx5IGEgc2luZ2xlIG51bWJl ciBAdmFye259IGluc3RlYWQKK29mIGEgbGlzdCwgc3VjaCBjYXNlIGlzIGVxdWl2YWxlbnQgdG8g QGNvZGV7KChhYnMgQHZhcntufSkgLiBAdmFye259KX0uCiAKIFRoZSB2YWx1ZSBAdmFye2NvbG9y fSBzcGVjaWZpZXMgdGhlIGNvbG9yIHRvIGRyYXcgd2l0aC4gIFRoZSBkZWZhdWx0IGlzCiB0aGUg Zm9yZWdyb3VuZCBjb2xvciBvZiB0aGUgZmFjZSBmb3Igc2ltcGxlIGJveGVzLCBhbmQgdGhlIGJh Y2tncm91bmQKZGlmZiAtLWdpdCBhL2xpc3AvY3VzLWZhY2UuZWwgYi9saXNwL2N1cy1mYWNlLmVs CmluZGV4IDBlZTZhOGRjYzguLmFhYzQ2ZGE1MzEgMTAwNjQ0Ci0tLSBhL2xpc3AvY3VzLWZhY2Uu ZWwKKysrIGIvbGlzcC9jdXMtZmFjZS5lbApAQCAtMTY2LDkgKzE2NiwxMSBAQCBjdXN0b20tZmFj ZS1hdHRyaWJ1dGVzCiAJICAgICA6aGVscC1lY2hvICJDb250cm9sIGJveCBhcm91bmQgdGV4dC4i CiAJICAgICAoY29uc3QgOnRhZyAiT2ZmIiBuaWwpCiAJICAgICAobGlzdCA6dGFnICJCb3giCi0J CSAgIDp2YWx1ZSAoOmxpbmUtd2lkdGggMiA6Y29sb3IgImdyZXk3NSIgOnN0eWxlIHJlbGVhc2Vk LWJ1dHRvbikKLQkJICAgKGNvbnN0IDpmb3JtYXQgIiIgOnZhbHVlIDpsaW5lLXdpZHRoKQotCQkg ICAoaW50ZWdlciA6dGFnICJXaWR0aCIpCisJCSAgIDp2YWx1ZSAoOmxpbmUtd2lkdGggKDIgLiAy KSA6Y29sb3IgImdyZXk3NSIgOnN0eWxlIHJlbGVhc2VkLWJ1dHRvbikKKyAgICAgICAgICAgICAg ICAgICAoY29uc3QgOmZvcm1hdCAiIiA6dmFsdWUgOmxpbmUtd2lkdGgpCisgICAgICAgICAgICAg ICAgICAgKGNvbnMgOnRhZyAiV2lkdGgiIDpleHRyYS1vZmZzZXQgMgorCQkgICAgKGludGVnZXIg OnRhZyAiVmVydGljYWwiKQorCQkgICAgKGludGVnZXIgOnRhZyAiSG9yaXpvbnRhbCIpKQogCQkg ICAoY29uc3QgOmZvcm1hdCAiIiA6dmFsdWUgOmNvbG9yKQogCQkgICAoY2hvaWNlIDp0YWcgIkNv bG9yIiAoY29uc3QgOnRhZyAiKiIgbmlsKSBjb2xvcikKIAkJICAgKGNvbnN0IDpmb3JtYXQgIiIg OnZhbHVlIDpzdHlsZSkKQEAgLTE4MSwxNSArMTgzLDE5IEBAIGN1c3RvbS1mYWNlLWF0dHJpYnV0 ZXMKICAgICAgICAoYW5kIHJlYWwtdmFsdWUKIAkgICAgKGxldCAoKGx3aWR0aAogCQkgICAob3Ig KGFuZCAoY29uc3AgcmVhbC12YWx1ZSkKLQkJCSAgICAocGxpc3QtZ2V0IHJlYWwtdmFsdWUgOmxp bmUtd2lkdGgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobGlzdHAgKGNkciBy ZWFsLXZhbHVlKSkKKwkJCSAgICAgICAgKHBsaXN0LWdldCByZWFsLXZhbHVlIDpsaW5lLXdpZHRo KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbC12YWx1ZSkpCiAJCSAgICAgICAo YW5kIChpbnRlZ2VycCByZWFsLXZhbHVlKSByZWFsLXZhbHVlKQotCQkgICAgICAgMSkpCisJCSAg ICAgICAnKDEgLiAxKSkpCiAJCSAgKGNvbG9yCiAJCSAgIChvciAoYW5kIChjb25zcCByZWFsLXZh bHVlKSAocGxpc3QtZ2V0IHJlYWwtdmFsdWUgOmNvbG9yKSkKIAkJICAgICAgIChhbmQgKHN0cmlu Z3AgcmVhbC12YWx1ZSkgcmVhbC12YWx1ZSkKIAkJICAgICAgIG5pbCkpCiAJCSAgKHN0eWxlCiAJ CSAgIChhbmQgKGNvbnNwIHJlYWwtdmFsdWUpIChwbGlzdC1nZXQgcmVhbC12YWx1ZSA6c3R5bGUp KSkpCisgICAgICAgICAgICAgIChpZiAoaW50ZWdlcnAgbHdpZHRoKQorICAgICAgICAgICAgICAg ICAgKHNldHEgbHdpZHRoIChjb25zIChhYnMgbHdpZHRoKSBsd2lkdGgpKSkKIAkgICAgICAobGlz dCA6bGluZS13aWR0aCBsd2lkdGggOmNvbG9yIGNvbG9yIDpzdHlsZSBzdHlsZSkpKSkKICAgICAg OzsgZmlsdGVyIHRvIG1ha2UgY3VzdG9taXplZC12YWx1ZSBzdWl0YWJsZSBmb3Igc3RvcmluZwog ICAgICAobGFtYmRhIChjdXMtdmFsdWUpCmRpZmYgLS1naXQgYS9zcmMvZGlzcGV4dGVybi5oIGIv c3JjL2Rpc3BleHRlcm4uaAppbmRleCA0ZTk0N2RhYTI1Li4yZDVhYjYyODA2IDEwMDY0NAotLS0g YS9zcmMvZGlzcGV4dGVybi5oCisrKyBiL3NyYy9kaXNwZXh0ZXJuLmgKQEAgLTE2NDgsMTIgKzE2 NDgsMTcgQEAgI2RlZmluZSBGT05UX1RPT19ISUdIKGZ0KQkJCQkJCVwKICAgaW50IGZvbnRzZXQ7 CiAKICAgLyogTm9uLXplcm8gbWVhbnMgY2hhcmFjdGVycyBpbiB0aGlzIGZhY2UgaGF2ZSBhIGJv eCBvZiB0aGF0Ci0gICAgIHRoaWNrbmVzcyBhcm91bmQgdGhlbS4gIElmIHRoaXMgdmFsdWUgaXMg bmVnYXRpdmUsIGl0cyBhYnNvbHV0ZQotICAgICB2YWx1ZSBpbmRpY2F0ZXMgdGhlIHRoaWNrbmVz cywgYW5kIHRoZSBob3Jpem9udGFsICh0b3AgYW5kCi0gICAgIGJvdHRvbSkgYm9yZGVycyBvZiBi b3ggYXJlIGRyYXduIGluc2lkZSBvZiB0aGUgY2hhcmFjdGVyIGdseXBocycKLSAgICAgYXJlYS4g IFRoZSB2ZXJ0aWNhbCAobGVmdCBhbmQgcmlnaHQpIGJvcmRlcnMgb2YgdGhlIGJveCBhcmUgZHJh d24KLSAgICAgaW4gdGhlIHNhbWUgd2F5IGFzIHdoZW4gdGhpcyB2YWx1ZSBpcyBwb3NpdGl2ZS4g ICovCi0gIGludCBib3hfbGluZV93aWR0aDsKKyAgICAgdGhpY2tuZXNzIGFyb3VuZCB0aGVtLiBW ZXJ0aWNhbCAobGVmdCBhbmQgcmlnaHQpIGFuZCBob3Jpem9udGFsCisgICAgICh0b3AgYW5kIGJv dHRvbSkgYm9yZGVycyBzaXplIGNhbiBiZSBzZXQgc2VwYXJhdGVkbHkgdXNpbmcgYW4KKyAgICAg YXNzb2NpYXRlZCBsaXN0IG9mIHR3byBpbnRzIGluIHRoZSBmb3JtCisgICAgICh2ZXJ0aWNhbF9z aXplIC4gaG9yaXpvbnRhbF9zaXplKS4gSW4gY2FzZSBvbmUgb2YgdGhlIHZhbHVlIGlzCisgICAg IG5lZ2F0aXZlLCBpdHMgYWJzb2x1dGUgdmFsdWUgaW5kaWNhdGVzIHRoZSB0aGlja25lc3MsIGFu ZCB0aGUKKyAgICAgYm9yZGVycyBvZiBib3ggYXJlIGRyYXduIGluc2lkZSBvZiB0aGUgY2hhcmFj dGVyIGdseXBocycgYXJlYQorICAgICBwb3RlbnRpYWxseSBvdmVyIHRoZSBnbHlwaCBpdHNlbGYg YnV0IHRoZSBnbHlwaCBkcmF3aW5nIHNpemUgaXMKKyAgICAgbm90IGluY3JlYXNlLiBJZiBhIChz aWduZWQpIGludCBOIGlzIHVzZSBpbnN0ZWFkIG9mIGEgbGlzdCwgaXQKKyAgICAgaXMgdGhlIHNh bWUgYXMgc2V0dGluZyAoIGFicyhOKSAuIE4gKSB2YWx1ZXMuICovCisgIGludCBib3hfdmVydGlj YWxfbGluZV93aWR0aDsKKyAgaW50IGJveF9ob3Jpem9udGFsX2xpbmVfd2lkdGg7CiAKICAgLyog VHlwZSBvZiBib3ggZHJhd24uICBBIHZhbHVlIG9mIEZBQ0VfTk9fQk9YIG1lYW5zIG5vIGJveCBp cyBkcmF3bgogICAgICBhcm91bmQgdGV4dCBpbiB0aGlzIGZhY2UuICBBIHZhbHVlIG9mIEZBQ0Vf U0lNUExFX0JPWCBtZWFucyBhIGJveApkaWZmIC0tZ2l0IGEvc3JjL25zZm9udC5tIGIvc3JjL25z Zm9udC5tCmluZGV4IDdhNDBkNjcyYjUuLjBjYzlmNDk3MDUgMTAwNjQ0Ci0tLSBhL3NyYy9uc2Zv bnQubQorKysgYi9zcmMvbnNmb250Lm0KQEAgLTEwNDMsNyArMTA0Myw3IEBAIGlzIGZhbHNlIHdo ZW4gKEZST00gPiAwIHx8IFRPIDwgUy0+bmNoYXJzKS4gICovCiAKICAgci5vcmlnaW4ueCA9IHMt Png7CiAgIGlmIChzLT5mYWNlLT5ib3ggIT0gRkFDRV9OT19CT1ggJiYgcy0+Zmlyc3RfZ2x5cGgt PmxlZnRfYm94X2xpbmVfcCkKLSAgICByLm9yaWdpbi54ICs9IGFicyAocy0+ZmFjZS0+Ym94X2xp bmVfd2lkdGgpOworICAgIHIub3JpZ2luLnggKz0gbWF4IChzLT5mYWNlLT5ib3hfdmVydGljYWxf bGluZV93aWR0aCwgMCk7CiAKICAgci5vcmlnaW4ueSA9IHMtPnk7CiAgIHIuc2l6ZS5oZWlnaHQg PSBGT05UX0hFSUdIVCAoZm9udCk7CkBAIC0xMTA1LDcgKzExMDUsNyBAQCBpcyBmYWxzZSB3aGVu IChGUk9NID4gMCB8fCBUTyA8IFMtPm5jaGFycykuICAqLwogICAgIHsKICAgICAgIE5TUmVjdCBi ciA9IHI7CiAgICAgICBpbnQgZmlidyA9IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAocy0+ Zik7Ci0gICAgICBpbnQgbWJveF9saW5lX3dpZHRoID0gbWF4IChzLT5mYWNlLT5ib3hfbGluZV93 aWR0aCwgMCk7CisgICAgICBpbnQgbWJveF9saW5lX3dpZHRoID0gbWF4IChzLT5mYWNlLT5ib3hf dmVydGljYWxfbGluZV93aWR0aCwgMCk7CiAKICAgICAgIGlmIChzLT5yb3ctPmZ1bGxfd2lkdGhf cCkKICAgICAgICAgewpAQCAtMTEyOSw5ICsxMTI5LDEwIEBAIGlzIGZhbHNlIHdoZW4gKEZST00g PiAwIHx8IFRPIDwgUy0+bmNoYXJzKS4gICovCiAgICAgICAgIH0KICAgICAgIGVsc2UKICAgICAg ICAgewotICAgICAgICAgIGludCBjb3JyZWN0aW9uID0gYWJzIChzLT5mYWNlLT5ib3hfbGluZV93 aWR0aCkrMTsKKyAgICAgICAgICBpbnQgY29ycmVjdGlvbiA9IGFicyAocy0+ZmFjZS0+Ym94X2hv cml6b250YWxfbGluZV93aWR0aCkrMTsKICAgICAgICAgICBici5vcmlnaW4ueSArPSBjb3JyZWN0 aW9uOwogICAgICAgICAgIGJyLnNpemUuaGVpZ2h0IC09IDIqY29ycmVjdGlvbjsKKyAgICAgICAg ICBjb3JyZWN0aW9uID0gYWJzIChzLT5mYWNlLT5ib3hfdmVydGljYWxfbGluZV93aWR0aCkrMTsK ICAgICAgICAgICBici5vcmlnaW4ueCArPSBjb3JyZWN0aW9uOwogICAgICAgICAgIGJyLnNpemUu d2lkdGggLT0gMipjb3JyZWN0aW9uOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9zcmMvbnN0ZXJt Lm0gYi9zcmMvbnN0ZXJtLm0KaW5kZXggNDJlZjRkZDAxMC4uMjM3ZGRjNTI0NyAxMDA2NDQKLS0t IGEvc3JjL25zdGVybS5tCisrKyBiL3NyYy9uc3Rlcm0ubQpAQCAtMzUzMCw4ICszNTMwLDggQEAg bGFyZ2VyIGlmIHRoZXJlIGFyZSB0YWxsZXIgZGlzcGxheSBlbGVtZW50cyAoZS5nLiwgY2hhcmFj dGVycwogfQogCiBzdGF0aWMgdm9pZAotbnNfZHJhd19ib3ggKE5TUmVjdCByLCBDR0Zsb2F0IHRo aWNrbmVzcywgTlNDb2xvciAqY29sLAotICAgICAgICAgICAgIGNoYXIgbGVmdF9wLCBjaGFyIHJp Z2h0X3ApCituc19kcmF3X2JveCAoTlNSZWN0IHIsIENHRmxvYXQgaHRoaWNrbmVzcywgQ0dGbG9h dCB2dGhpY2tuZXNzLAorICAgICAgICAgICAgIE5TQ29sb3IgKmNvbCwgY2hhciBsZWZ0X3AsIGNo YXIgcmlnaHRfcCkKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgRHJhdyBhbiB1bmZpbGxlZCBy ZWN0IGluc2lkZSByLCBvcHRpb25hbGx5IGxlYXZpbmcgbGVmdCBhbmQvb3IgcmlnaHQgb3Blbi4K ICAgICBOb3RlIHdlIGNhbid0IGp1c3QgdXNlIGFuIE5TRHJhd1JlY3QgY29tbWFuZCwgYmVjYXVz ZSBvZiB0aGUgcG9zc2liaWxpdHkKQEAgLTM1NDIsMjggKzM1NDIsMjggQEAgbGFyZ2VyIGlmIHRo ZXJlIGFyZSB0YWxsZXIgZGlzcGxheSBlbGVtZW50cyAoZS5nLiwgY2hhcmFjdGVycwogICBbY29s IHNldF07CiAKICAgLyogdG9wLCBib3R0b20gKi8KLSAgcy5zaXplLmhlaWdodCA9IHRoaWNrbmVz czsKKyAgcy5zaXplLmhlaWdodCA9IGh0aGlja25lc3M7CiAgIE5TUmVjdEZpbGwgKHMpOwotICBz Lm9yaWdpbi55ICs9IHIuc2l6ZS5oZWlnaHQgLSB0aGlja25lc3M7CisgIHMub3JpZ2luLnkgKz0g ci5zaXplLmhlaWdodCAtIGh0aGlja25lc3M7CiAgIE5TUmVjdEZpbGwgKHMpOwogCiAgIHMuc2l6 ZS5oZWlnaHQgPSByLnNpemUuaGVpZ2h0OwogICBzLm9yaWdpbi55ID0gci5vcmlnaW4ueTsKIAog ICAvKiBsZWZ0LCByaWdodCAob3B0aW9uYWwpICovCi0gIHMuc2l6ZS53aWR0aCA9IHRoaWNrbmVz czsKKyAgcy5zaXplLndpZHRoID0gdnRoaWNrbmVzczsKICAgaWYgKGxlZnRfcCkKICAgICBOU1Jl Y3RGaWxsIChzKTsKICAgaWYgKHJpZ2h0X3ApCiAgICAgewotICAgICAgcy5vcmlnaW4ueCArPSBy LnNpemUud2lkdGggLSB0aGlja25lc3M7CisgICAgICBzLm9yaWdpbi54ICs9IHIuc2l6ZS53aWR0 aCAtIHZ0aGlja25lc3M7CiAgICAgICBOU1JlY3RGaWxsIChzKTsKICAgICB9CiB9CiAKIAogc3Rh dGljIHZvaWQKLW5zX2RyYXdfcmVsaWVmIChOU1JlY3QgciwgaW50IHRoaWNrbmVzcywgY2hhciBy YWlzZWRfcCwKK25zX2RyYXdfcmVsaWVmIChOU1JlY3QgciwgaW50IGh0aGlja25lc3MsIGludCB2 dGhpY2tuZXNzLCBjaGFyIHJhaXNlZF9wLAogICAgICAgICAgICAgICAgY2hhciB0b3BfcCwgY2hh ciBib3R0b21fcCwgY2hhciBsZWZ0X3AsIGNoYXIgcmlnaHRfcCwKICAgICAgICAgICAgICAgIHN0 cnVjdCBnbHlwaF9zdHJpbmcgKnMpCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzYxMywyNyAr MzYxMywyNyBAQCBsYXJnZXIgaWYgdGhlcmUgYXJlIHRhbGxlciBkaXNwbGF5IGVsZW1lbnRzIChl LmcuLCBjaGFyYWN0ZXJzCiAgIC8qIFRPRE86IG1pdGVyaW5nLiBVc2luZyBOU0JlemllclBhdGgg ZG9lc24ndCB3b3JrIGJlY2F1c2Ugb2YgY29sb3Igc3dpdGNoLiAgKi8KIAogICAvKiB0b3AgKi8K LSAgc3Iuc2l6ZS5oZWlnaHQgPSB0aGlja25lc3M7CisgIHNyLnNpemUuaGVpZ2h0ID0gaHRoaWNr bmVzczsKICAgaWYgKHRvcF9wKSBOU1JlY3RGaWxsIChzcik7CiAKICAgLyogbGVmdCAqLwogICBz ci5zaXplLmhlaWdodCA9IHIuc2l6ZS5oZWlnaHQ7Ci0gIHNyLnNpemUud2lkdGggPSB0aGlja25l c3M7CisgIHNyLnNpemUud2lkdGggPSB2dGhpY2tuZXNzOwogICBpZiAobGVmdF9wKSBOU1JlY3RG aWxsIChzcik7CiAKICAgWyhyYWlzZWRfcCA/IGRhcmtDb2wgOiBsaWdodENvbCkgc2V0XTsKIAog ICAvKiBib3R0b20gKi8KICAgc3Iuc2l6ZS53aWR0aCA9IHIuc2l6ZS53aWR0aDsKLSAgc3Iuc2l6 ZS5oZWlnaHQgPSB0aGlja25lc3M7Ci0gIHNyLm9yaWdpbi55ICs9IHIuc2l6ZS5oZWlnaHQgLSB0 aGlja25lc3M7CisgIHNyLnNpemUuaGVpZ2h0ID0gaHRoaWNrbmVzczsKKyAgc3Iub3JpZ2luLnkg Kz0gci5zaXplLmhlaWdodCAtIGh0aGlja25lc3M7CiAgIGlmIChib3R0b21fcCkgTlNSZWN0Rmls bCAoc3IpOwogCiAgIC8qIHJpZ2h0ICovCiAgIHNyLnNpemUuaGVpZ2h0ID0gci5zaXplLmhlaWdo dDsKICAgc3Iub3JpZ2luLnkgPSByLm9yaWdpbi55OwotICBzci5zaXplLndpZHRoID0gdGhpY2tu ZXNzOwotICBzci5vcmlnaW4ueCArPSByLnNpemUud2lkdGggLSB0aGlja25lc3M7CisgIHNyLnNp emUud2lkdGggPSB2dGhpY2tuZXNzOworICBzci5vcmlnaW4ueCArPSByLnNpemUud2lkdGggLSB2 dGhpY2tuZXNzOwogICBpZiAocmlnaHRfcCkgTlNSZWN0RmlsbCAoc3IpOwogfQogCkBAIC0zNjQ5 LDcgKzM2NDksNyBAQCBGdW5jdGlvbiBtb2RlbGVkIGFmdGVyIHhfZHJhd19nbHlwaF9zdHJpbmdf Ym94ICgpLgogICBjaGFyIGxlZnRfcCwgcmlnaHRfcDsKICAgc3RydWN0IGdseXBoICpsYXN0X2ds eXBoOwogICBOU1JlY3QgcjsKLSAgaW50IHRoaWNrbmVzczsKKyAgaW50IGh0aGlja25lc3MsIHZ0 aGlja25lc3M7CiAgIHN0cnVjdCBmYWNlICpmYWNlOwogCiAgIGlmIChzLT5obCA9PSBEUkFXX01P VVNFX0ZBQ0UpCkBAIC0zNjYyLDcgKzM2NjIsOCBAQCBGdW5jdGlvbiBtb2RlbGVkIGFmdGVyIHhf ZHJhd19nbHlwaF9zdHJpbmdfYm94ICgpLgogICBlbHNlCiAgICAgZmFjZSA9IHMtPmZhY2U7CiAK LSAgdGhpY2tuZXNzID0gZmFjZS0+Ym94X2xpbmVfd2lkdGg7CisgIHZ0aGlja25lc3MgPSBmYWNl LT5ib3hfdmVydGljYWxfbGluZV93aWR0aDsKKyAgaHRoaWNrbmVzcyA9IGZhY2UtPmJveF9ob3Jp em9udGFsX2xpbmVfd2lkdGg7CiAKICAgTlNUUkFDRSAoIm5zX2R1bXBnbHlwaHNfYm94X29yX3Jl bGllZiIpOwogCkBAIC0zNjg3LDE0ICszNjg4LDE1IEBAIEZ1bmN0aW9uIG1vZGVsZWQgYWZ0ZXIg eF9kcmF3X2dseXBoX3N0cmluZ19ib3ggKCkuCiAgIC8qIFRPRE86IFNvbWV0aW1lcyBib3hfY29s b3IgaXMgMCBhbmQgdGhpcyBzZWVtcyB3cm9uZzsgc2hvdWxkIGludmVzdGlnYXRlLiAgKi8KICAg aWYgKHMtPmZhY2UtPmJveCA9PSBGQUNFX1NJTVBMRV9CT1ggJiYgcy0+ZmFjZS0+Ym94X2NvbG9y KQogICAgIHsKLSAgICAgIG5zX2RyYXdfYm94IChyLCBhYnMgKHRoaWNrbmVzcyksCisgICAgICBu c19kcmF3X2JveCAociwgYWJzIChodGhpY2tuZXNzKSwgYWJzICh2dGhpY2tuZXNzKSwKICAgICAg ICAgICAgICAgICAgICBuc19sb29rdXBfaW5kZXhlZF9jb2xvciAoZmFjZS0+Ym94X2NvbG9yLCBz LT5mKSwKLSAgICAgICAgICAgICAgICAgIGxlZnRfcCwgcmlnaHRfcCk7CisgICAgICAgICAgICAg ICAgICAgbGVmdF9wLCByaWdodF9wKTsKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBuc19k cmF3X3JlbGllZiAociwgYWJzICh0aGlja25lc3MpLCBzLT5mYWNlLT5ib3ggPT0gRkFDRV9SQUlT RURfQk9YLAotICAgICAgICAgICAgICAgICAgICAgMSwgMSwgbGVmdF9wLCByaWdodF9wLCBzKTsK KyAgICAgIG5zX2RyYXdfcmVsaWVmIChyLCBhYnMgKGh0aGlja25lc3MpLCBhYnMgKHZ0aGlja25l c3MpLAorICAgICAgICAgICAgICAgICAgICAgIHMtPmZhY2UtPmJveCA9PSBGQUNFX1JBSVNFRF9C T1gsCisgICAgICAgICAgICAgICAgICAgICAgMSwgMSwgbGVmdF9wLCByaWdodF9wLCBzKTsKICAg ICB9CiB9CiAKQEAgLTM3MTAsNyArMzcxMiw3IEBAIEZ1bmN0aW9uIG1vZGVsZWQgYWZ0ZXIgeF9k cmF3X2dseXBoX3N0cmluZ19ib3ggKCkuCiAKICAgaWYgKCFzLT5iYWNrZ3JvdW5kX2ZpbGxlZF9w LyogfHwgcy0+aGwgPT0gRFJBV19NT1VTRV9GQUNFKi8pCiAgICAgewotICAgICAgaW50IGJveF9s aW5lX3dpZHRoID0gbWF4IChzLT5mYWNlLT5ib3hfbGluZV93aWR0aCwgMCk7CisgICAgICBpbnQg Ym94X2xpbmVfd2lkdGggPSBtYXggKHMtPmZhY2UtPmJveF9ob3Jpem9udGFsX2xpbmVfd2lkdGgs IDApOwogICAgICAgaWYgKEZPTlRfSEVJR0hUIChzLT5mb250KSA8IHMtPmhlaWdodCAtIDIgKiBi b3hfbGluZV93aWR0aAogCSAgLyogV2hlbiB4ZGlzcC5jIGlnbm9yZXMgRk9OVF9IRUlHSFQsIHdl IGNhbm5vdCB0cnVzdCBmb250CiAJICAgICBkaW1lbnNpb25zLCBzaW5jZSB0aGUgYWN0dWFsIGds eXBocyBtaWdodCBiZSBtdWNoCkBAIC0zNzYxLDcgKzM3NjMsNyBAQCBGdW5jdGlvbiBtb2RlbGVk IGFmdGVyIHhfZHJhd19nbHlwaF9zdHJpbmdfYm94ICgpLgogICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g Ki8KIHsKICAgRW1hY3NJbWFnZSAqaW1nID0gcy0+aW1nLT5waXhtYXA7Ci0gIGludCBib3hfbGlu ZV92d2lkdGggPSBtYXggKHMtPmZhY2UtPmJveF9saW5lX3dpZHRoLCAwKTsKKyAgaW50IGJveF9s aW5lX3Z3aWR0aCA9IG1heCAocy0+ZmFjZS0+Ym94X2hvcml6b250YWxfbGluZV93aWR0aCwgMCk7 CiAgIGludCB4ID0gcy0+eCwgeSA9IHMtPnliYXNlIC0gaW1hZ2VfYXNjZW50IChzLT5pbWcsIHMt PmZhY2UsICZzLT5zbGljZSk7CiAgIGludCBiZ194LCBiZ195LCBiZ19oZWlnaHQ7CiAgIGludCB0 aDsKQEAgLTM3NzQsNyArMzc3Niw3IEBAIEZ1bmN0aW9uIG1vZGVsZWQgYWZ0ZXIgeF9kcmF3X2ds eXBoX3N0cmluZ19ib3ggKCkuCiAKICAgaWYgKHMtPmZhY2UtPmJveCAhPSBGQUNFX05PX0JPWAog ICAgICAgJiYgcy0+Zmlyc3RfZ2x5cGgtPmxlZnRfYm94X2xpbmVfcCAmJiBzLT5zbGljZS54ID09 IDApCi0gICAgeCArPSBhYnMgKHMtPmZhY2UtPmJveF9saW5lX3dpZHRoKTsKKyAgICB4ICs9IG1h eCAocy0+ZmFjZS0+Ym94X3ZlcnRpY2FsX2xpbmVfd2lkdGgsIDApOwogCiAgIGJnX3ggPSB4Owog ICBiZ195ID0gIHMtPnNsaWNlLnkgPT0gMCA/IHMtPnkgOiBzLT55ICsgYm94X2xpbmVfdndpZHRo OwpAQCAtMzg4Nyw3ICszODg5LDcgQEAgRnVuY3Rpb24gbW9kZWxlZCBhZnRlciB4X2RyYXdfZ2x5 cGhfc3RyaW5nX2JveCAoKS4KICAgICAgIHIub3JpZ2luLnkgPSB5IC0gdGg7CiAgICAgICByLnNp emUud2lkdGggPSBzLT5zbGljZS53aWR0aCArIDIqdGgtMTsKICAgICAgIHIuc2l6ZS5oZWlnaHQg PSBzLT5zbGljZS5oZWlnaHQgKyAyKnRoLTE7Ci0gICAgICBuc19kcmF3X3JlbGllZiAociwgdGgs IHJhaXNlZF9wLAorICAgICAgbnNfZHJhd19yZWxpZWYgKHIsIHRoLCB0aCwgcmFpc2VkX3AsCiAg ICAgICAgICAgICAgICAgICAgICAgcy0+c2xpY2UueSA9PSAwLAogICAgICAgICAgICAgICAgICAg ICAgIHMtPnNsaWNlLnkgKyBzLT5zbGljZS5oZWlnaHQgPT0gcy0+aW1nLT5oZWlnaHQsCiAgICAg ICAgICAgICAgICAgICAgICAgcy0+c2xpY2UueCA9PSAwLApAQCAtMzkwMSw3ICszOTAzLDcgQEAg RnVuY3Rpb24gbW9kZWxlZCBhZnRlciB4X2RyYXdfZ2x5cGhfc3RyaW5nX2JveCAoKS4KICAgICB7 CiAgICAgICBpbnQgdGhpY2tuZXNzID0gYWJzIChzLT5pbWctPnJlbGllZik7CiAgICAgICBpZiAo dGhpY2tuZXNzID09IDApIHRoaWNrbmVzcyA9IDE7Ci0gICAgICBuc19kcmF3X2JveCAoYnIsIHRo aWNrbmVzcywgRlJBTUVfQ1VSU09SX0NPTE9SIChzLT5mKSwgMSwgMSk7CisgICAgICBuc19kcmF3 X2JveCAoYnIsIHRoaWNrbmVzcywgdGhpY2tuZXNzLCBGUkFNRV9DVVJTT1JfQ09MT1IgKHMtPmYp LCAxLCAxKTsKICAgICB9CiB9CiAKQEAgLTQwMDgsNyArNDAxMCw3IEBAIG92ZXJ3cml0aW5nIGN1 cnNvciAodXN1YWxseSB3aGVuIGN1cnNvciBvbiBhIHRhYikuICAqLwogICAgICBvZiBTIHRvIHRo ZSByaWdodCBvZiB0aGF0IGJveCBsaW5lLiAgKi8KICAgaWYgKHMtPmZhY2UgJiYgcy0+ZmFjZS0+ Ym94ICE9IEZBQ0VfTk9fQk9YCiAgICAgICAmJiBzLT5maXJzdF9nbHlwaC0+bGVmdF9ib3hfbGlu ZV9wKQotICAgIHggPSBzLT54ICsgZWFicyAocy0+ZmFjZS0+Ym94X2xpbmVfd2lkdGgpOworICAg IHggPSBzLT54ICsgbWF4IChzLT5mYWNlLT5ib3hfdmVydGljYWxfbGluZV93aWR0aCwgMCk7CiAg IGVsc2UKICAgICB4ID0gcy0+eDsKIApAQCAtNDAzNCw3ICs0MDM2LDcgQEAgb3ZlcndyaXRpbmcg Y3Vyc29yICh1c3VhbGx5IHdoZW4gY3Vyc29yIG9uIGEgdGFiKS4gICovCiAgICAgIG9mIFMgdG8g dGhlIHJpZ2h0IG9mIHRoYXQgYm94IGxpbmUuICAqLwogICBpZiAocy0+ZmFjZSAmJiBzLT5mYWNl LT5ib3ggIT0gRkFDRV9OT19CT1gKICAgICAgICYmIHMtPmZpcnN0X2dseXBoLT5sZWZ0X2JveF9s aW5lX3ApCi0gICAgeCA9IHMtPnggKyBlYWJzIChzLT5mYWNlLT5ib3hfbGluZV93aWR0aCk7Cisg ICAgeCA9IHMtPnggKyBtYXggKHMtPmZhY2UtPmJveF92ZXJ0aWNhbF9saW5lX3dpZHRoLCAwKTsK ICAgZWxzZQogICAgIHggPSBzLT54OwogCkBAIC00MDUwLDcgKzQwNTIsNyBAQCBvdmVyd3JpdGlu ZyBjdXJzb3IgKHVzdWFsbHkgd2hlbiBjdXJzb3Igb24gYSB0YWIpLiAgKi8KICAgICAgIGlmIChz LT5jbXBfZnJvbSA9PSAwKQogICAgICAgICB7CiAgICAgICAgICAgTlNSZWN0IHIgPSBOU01ha2VS ZWN0IChzLT54LCBzLT55LCBzLT53aWR0aC0xLCBzLT5oZWlnaHQgLTEpOwotICAgICAgICAgIG5z X2RyYXdfYm94IChyLCAxLCBGUkFNRV9DVVJTT1JfQ09MT1IgKHMtPmYpLCAxLCAxKTsKKyAgICAg ICAgICBuc19kcmF3X2JveCAociwgMSwgMSwgRlJBTUVfQ1VSU09SX0NPTE9SIChzLT5mKSwgMSwg MSk7CiAgICAgICAgIH0KICAgICB9CiAgIGVsc2UgaWYgKCEgcy0+Zmlyc3RfZ2x5cGgtPnUuY21w LmF1dG9tYXRpYykKZGlmZiAtLWdpdCBhL3NyYy93MzJ0ZXJtLmMgYi9zcmMvdzMydGVybS5jCmlu ZGV4IGFkOTYyODdhNDMuLjI0ZDIxODk3ZmYgMTAwNjQ0Ci0tLSBhL3NyYy93MzJ0ZXJtLmMKKysr IGIvc3JjL3czMnRlcm0uYwpAQCAtODg0LDEwICs4ODQsMTAgQEAgdzMyX2Rlc3Ryb3lfZnJpbmdl X2JpdG1hcCAoaW50IHdoaWNoKQogc3RhdGljIHZvaWQgdzMyX2NsZWFyX2dseXBoX3N0cmluZ19y ZWN0IChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICosIGludCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50LCBpbnQsIGludCk7CiBzdGF0aWMgdm9pZCB3MzJfZHJhd19y ZWxpZWZfcmVjdCAoc3RydWN0IGZyYW1lICosIGludCwgaW50LCBpbnQsIGludCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgaW50LCBpbnQsIGludCwgaW50 LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUNUICopOwog c3RhdGljIHZvaWQgdzMyX2RyYXdfYm94X3JlY3QgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKiwgaW50 LCBpbnQsIGludCwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgYm9v bCwgYm9vbCwgUkVDVCAqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGlu dCwgYm9vbCwgYm9vbCwgUkVDVCAqKTsKIAogCiAvKiBTZXQgUy0+Z2MgdG8gYSBzdWl0YWJsZSBH QyBmb3IgZHJhd2luZyBnbHlwaCBzdHJpbmcgUyBpbiBjdXJzb3IKQEAgLTExNTYsNyArMTE1Niw3 IEBAIHczMl9kcmF3X2dseXBoX3N0cmluZ19iYWNrZ3JvdW5kIChzdHJ1Y3QgZ2x5cGhfc3RyaW5n ICpzLCBib29sIGZvcmNlX3ApCiAgICAgIHNob3VsZG4ndCBiZSBkcmF3biBpbiB0aGUgZmlyc3Qg cGxhY2UuICAqLwogICBpZiAoIXMtPmJhY2tncm91bmRfZmlsbGVkX3ApCiAgICAgewotICAgICAg aW50IGJveF9saW5lX3dpZHRoID0gbWF4IChzLT5mYWNlLT5ib3hfbGluZV93aWR0aCwgMCk7Cisg ICAgICBpbnQgYm94X2xpbmVfd2lkdGggPSBtYXggKHMtPmZhY2UtPmJveF9ob3Jpem9udGFsX2xp bmVfd2lkdGgsIDApOwogCiAjaWYgMCAvKiBUT0RPOiBzdGlwcGxlICovCiAgICAgICBpZiAocy0+ c3RpcHBsZWRfcCkKQEAgLTEyMDIsNyArMTIwMiw3IEBAIHczMl9kcmF3X2dseXBoX3N0cmluZ19m b3JlZ3JvdW5kIChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzKQogICAgICBvZiBTIHRvIHRoZSByaWdo dCBvZiB0aGF0IGJveCBsaW5lLiAgKi8KICAgaWYgKHMtPmZhY2UtPmJveCAhPSBGQUNFX05PX0JP WAogICAgICAgJiYgcy0+Zmlyc3RfZ2x5cGgtPmxlZnRfYm94X2xpbmVfcCkKLSAgICB4ID0gcy0+ eCArIGVhYnMgKHMtPmZhY2UtPmJveF9saW5lX3dpZHRoKTsKKyAgICB4ID0gcy0+eCArIG1heCAo cy0+ZmFjZS0+Ym94X3ZlcnRpY2FsX2xpbmVfd2lkdGgsIDApOwogICBlbHNlCiAgICAgeCA9IHMt Png7CiAKQEAgLTEyNjAsNyArMTI2MCw3IEBAIHczMl9kcmF3X2NvbXBvc2l0ZV9nbHlwaF9zdHJp bmdfZm9yZWdyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKICAgICAgb2YgUyB0byB0aGUg cmlnaHQgb2YgdGhhdCBib3ggbGluZS4gICovCiAgIGlmIChzLT5mYWNlICYmIHMtPmZhY2UtPmJv eCAhPSBGQUNFX05PX0JPWAogICAgICAgJiYgcy0+Zmlyc3RfZ2x5cGgtPmxlZnRfYm94X2xpbmVf cCkKLSAgICB4ID0gcy0+eCArIGVhYnMgKHMtPmZhY2UtPmJveF9saW5lX3dpZHRoKTsKKyAgICB4 ID0gcy0+eCArIG1heCAocy0+ZmFjZS0+Ym94X3ZlcnRpY2FsX2xpbmVfd2lkdGgsIDApOwogICBl bHNlCiAgICAgeCA9IHMtPng7CiAKQEAgLTEzNTcsNyArMTM1Nyw3IEBAIHczMl9kcmF3X2dseXBo bGVzc19nbHlwaF9zdHJpbmdfZm9yZWdyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKICAg ICAgb2YgUyB0byB0aGUgcmlnaHQgb2YgdGhhdCBib3ggbGluZS4gICovCiAgIGlmIChzLT5mYWNl LT5ib3ggIT0gRkFDRV9OT19CT1gKICAgICAgICYmIHMtPmZpcnN0X2dseXBoLT5sZWZ0X2JveF9s aW5lX3ApCi0gICAgeCA9IHMtPnggKyBlYWJzIChzLT5mYWNlLT5ib3hfbGluZV93aWR0aCk7Cisg ICAgeCA9IHMtPnggKyBtYXggKHMtPmZhY2UtPmJveF92ZXJ0aWNhbF9saW5lX3dpZHRoLCAwKTsK ICAgZWxzZQogICAgIHggPSBzLT54OwogCkBAIC0xNjEzLDcgKzE2MTMsNyBAQCB3MzJfc2V0dXBf cmVsaWVmX2NvbG9ycyAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKIHN0YXRpYyB2b2lkCiB3MzJf ZHJhd19yZWxpZWZfcmVjdCAoc3RydWN0IGZyYW1lICpmLAogCQkgICAgICBpbnQgbGVmdF94LCBp bnQgdG9wX3ksIGludCByaWdodF94LCBpbnQgYm90dG9tX3ksCi0JCSAgICAgIGludCB3aWR0aCwg aW50IHJhaXNlZF9wLAorCQkgICAgICBpbnQgaHdpZHRoLCBpbnQgdndpZHRoLCBpbnQgcmFpc2Vk X3AsCiAJCSAgICAgIGludCB0b3BfcCwgaW50IGJvdF9wLCBpbnQgbGVmdF9wLCBpbnQgcmlnaHRf cCwKIAkJICAgICAgUkVDVCAqY2xpcF9yZWN0KQogewpAQCAtMTYzMCwxNCArMTYzMCwxNCBAQCB3 MzJfZHJhd19yZWxpZWZfcmVjdCAoc3RydWN0IGZyYW1lICpmLAogCiAgIC8qIFRvcC4gICovCiAg IGlmICh0b3BfcCkKLSAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7ICsraSkKKyAgICBmb3IgKGkg PSAwOyBpIDwgaHdpZHRoOyArK2kpCiAgICAgICB3MzJfZmlsbF9hcmVhIChmLCBoZGMsIGdjLmZv cmVncm91bmQsCiAJCSAgICAgbGVmdF94ICsgaSAqIGxlZnRfcCwgdG9wX3kgKyBpLAogCQkgICAg IHJpZ2h0X3ggLSBsZWZ0X3ggLSBpICogKGxlZnRfcCArIHJpZ2h0X3AgKSArIDEsIDEpOwogCiAg IC8qIExlZnQuICAqLwogICBpZiAobGVmdF9wKQotICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aDsg KytpKQorICAgIGZvciAoaSA9IDA7IGkgPCB2d2lkdGg7ICsraSkKICAgICAgIHczMl9maWxsX2Fy ZWEgKGYsIGhkYywgZ2MuZm9yZWdyb3VuZCwKIAkJICAgICBsZWZ0X3ggKyBpLCB0b3BfeSArIChp ICsgMSkgKiB0b3BfcCwgMSwKIAkJICAgICBib3R0b21feSAtIHRvcF95IC0gKGkgKyAxKSAqIChi b3RfcCArIHRvcF9wKSArIDEpOwpAQCAtMTY0OSwxNCArMTY0OSwxNCBAQCB3MzJfZHJhd19yZWxp ZWZfcmVjdCAoc3RydWN0IGZyYW1lICpmLAogCiAgIC8qIEJvdHRvbS4gICovCiAgIGlmIChib3Rf cCkKLSAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7ICsraSkKKyAgICBmb3IgKGkgPSAwOyBpIDwg aHdpZHRoOyArK2kpCiAgICAgICB3MzJfZmlsbF9hcmVhIChmLCBoZGMsIGdjLmZvcmVncm91bmQs CiAJCSAgICAgbGVmdF94ICsgaSAqIGxlZnRfcCwgYm90dG9tX3kgLSBpLAogCQkgICAgIHJpZ2h0 X3ggLSBsZWZ0X3ggLSBpICogKGxlZnRfcCArIHJpZ2h0X3ApICsgMSwgMSk7CiAKICAgLyogUmln aHQuICAqLwogICBpZiAocmlnaHRfcCkKLSAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7ICsraSkK KyAgICBmb3IgKGkgPSAwOyBpIDwgdndpZHRoOyArK2kpCiAgICAgICB3MzJfZmlsbF9hcmVhIChm LCBoZGMsIGdjLmZvcmVncm91bmQsCiAJCSAgICAgcmlnaHRfeCAtIGksIHRvcF95ICsgKGkgKyAx KSAqIHRvcF9wLCAxLAogCQkgICAgIGJvdHRvbV95IC0gdG9wX3kgLSAoaSArIDEpICogKGJvdF9w ICsgdG9wX3ApICsgMSk7CkBAIC0xNjc2LDMxICsxNjc2LDMxIEBAIHczMl9kcmF3X3JlbGllZl9y ZWN0IChzdHJ1Y3QgZnJhbWUgKmYsCiAKIHN0YXRpYyB2b2lkCiB3MzJfZHJhd19ib3hfcmVjdCAo c3RydWN0IGdseXBoX3N0cmluZyAqcywKLQkJICAgaW50IGxlZnRfeCwgaW50IHRvcF95LCBpbnQg cmlnaHRfeCwgaW50IGJvdHRvbV95LCBpbnQgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgYm9v bCBsZWZ0X3AsIGJvb2wgcmlnaHRfcCwgUkVDVCAqY2xpcF9yZWN0KQorCQkgICBpbnQgbGVmdF94 LCBpbnQgdG9wX3ksIGludCByaWdodF94LCBpbnQgYm90dG9tX3ksIGludCBod2lkdGgsCisJCSAg IGludCB2d2lkdGgsIGJvb2wgbGVmdF9wLCBib29sIHJpZ2h0X3AsIFJFQ1QgKmNsaXBfcmVjdCkK IHsKICAgdzMyX3NldF9jbGlwX3JlY3RhbmdsZSAocy0+aGRjLCBjbGlwX3JlY3QpOwogCiAgIC8q IFRvcC4gICovCiAgIHczMl9maWxsX2FyZWEgKHMtPmYsIHMtPmhkYywgcy0+ZmFjZS0+Ym94X2Nv bG9yLAotCQkgIGxlZnRfeCwgdG9wX3ksIHJpZ2h0X3ggLSBsZWZ0X3ggKyAxLCB3aWR0aCk7CisJ CSAgbGVmdF94LCB0b3BfeSwgcmlnaHRfeCAtIGxlZnRfeCArIDEsIGh3aWR0aCk7CiAKICAgLyog TGVmdC4gICovCiAgIGlmIChsZWZ0X3ApCiAgICAgewogICAgICAgdzMyX2ZpbGxfYXJlYSAocy0+ Ziwgcy0+aGRjLCBzLT5mYWNlLT5ib3hfY29sb3IsCi0gICAgICAgICAgICAgICAgICAgICBsZWZ0 X3gsIHRvcF95LCB3aWR0aCwgYm90dG9tX3kgLSB0b3BfeSArIDEpOworICAgICAgICAgICAgICAg ICAgICAgbGVmdF94LCB0b3BfeSwgdndpZHRoLCBib3R0b21feSAtIHRvcF95ICsgMSk7CiAgICAg fQogCiAgIC8qIEJvdHRvbS4gICovCiAgIHczMl9maWxsX2FyZWEgKHMtPmYsIHMtPmhkYywgcy0+ ZmFjZS0+Ym94X2NvbG9yLAotICAgICAgICAgICAgICAgICBsZWZ0X3gsIGJvdHRvbV95IC0gd2lk dGggKyAxLCByaWdodF94IC0gbGVmdF94ICsgMSwgd2lkdGgpOworICAgICAgICAgICAgICAgICBs ZWZ0X3gsIGJvdHRvbV95IC0gaHdpZHRoICsgMSwgcmlnaHRfeCAtIGxlZnRfeCArIDEsIGh3aWR0 aCk7CiAKICAgLyogUmlnaHQuICAqLwogICBpZiAocmlnaHRfcCkKICAgICB7CiAgICAgICB3MzJf ZmlsbF9hcmVhIChzLT5mLCBzLT5oZGMsIHMtPmZhY2UtPmJveF9jb2xvciwKLSAgICAgICAgICAg ICAgICAgICAgIHJpZ2h0X3ggLSB3aWR0aCArIDEsIHRvcF95LCB3aWR0aCwgYm90dG9tX3kgLSB0 b3BfeSArIDEpOworICAgICAgICAgICAgICAgICAgICAgcmlnaHRfeCAtIHZ3aWR0aCArIDEsIHRv cF95LCB2d2lkdGgsIGJvdHRvbV95IC0gdG9wX3kgKyAxKTsKICAgICB9CiAKICAgdzMyX3NldF9j bGlwX3JlY3RhbmdsZSAocy0+aGRjLCBOVUxMKTsKQEAgLTE3MTIsNyArMTcxMiw3IEBAIHczMl9k cmF3X2JveF9yZWN0IChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzLAogc3RhdGljIHZvaWQKIHczMl9k cmF3X2dseXBoX3N0cmluZ19ib3ggKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMpCiB7Ci0gIGludCB3 aWR0aCwgbGVmdF94LCByaWdodF94LCB0b3BfeSwgYm90dG9tX3ksIGxhc3RfeDsKKyAgaW50IGh3 aWR0aCwgdndpZHRoLCBsZWZ0X3gsIHJpZ2h0X3gsIHRvcF95LCBib3R0b21feSwgbGFzdF94Owog ICBib29sIGxlZnRfcCwgcmlnaHRfcCwgcmFpc2VkX3A7CiAgIHN0cnVjdCBnbHlwaCAqbGFzdF9n bHlwaDsKICAgUkVDVCBjbGlwX3JlY3Q7CkBAIC0xNzI2LDcgKzE3MjYsOCBAQCB3MzJfZHJhd19n bHlwaF9zdHJpbmdfYm94IChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzKQogCQk/IHMtPmZpcnN0X2ds eXBoCiAJCTogcy0+Zmlyc3RfZ2x5cGggKyBzLT5uY2hhcnMgLSAxKTsKIAotICB3aWR0aCA9IGVh YnMgKHMtPmZhY2UtPmJveF9saW5lX3dpZHRoKTsKKyAgdndpZHRoID0gZWFicyAocy0+ZmFjZS0+ Ym94X3ZlcnRpY2FsX2xpbmVfd2lkdGgpOworICBod2lkdGggPSBlYWJzIChzLT5mYWNlLT5ib3hf aG9yaXpvbnRhbF9saW5lX3dpZHRoKTsKICAgcmFpc2VkX3AgPSBzLT5mYWNlLT5ib3ggPT0gRkFD RV9SQUlTRURfQk9YOwogICBsZWZ0X3ggPSBzLT54OwogICByaWdodF94ID0gKChzLT5yb3ctPmZ1 bGxfd2lkdGhfcCAmJiBzLT5leHRlbmRzX3RvX2VuZF9vZl9saW5lX3AKQEAgLTE3NDcsMTMgKzE3 NDgsMTMgQEAgdzMyX2RyYXdfZ2x5cGhfc3RyaW5nX2JveCAoc3RydWN0IGdseXBoX3N0cmluZyAq cykKICAgZ2V0X2dseXBoX3N0cmluZ19jbGlwX3JlY3QgKHMsICZjbGlwX3JlY3QpOwogCiAgIGlm IChzLT5mYWNlLT5ib3ggPT0gRkFDRV9TSU1QTEVfQk9YKQotICAgIHczMl9kcmF3X2JveF9yZWN0 IChzLCBsZWZ0X3gsIHRvcF95LCByaWdodF94LCBib3R0b21feSwgd2lkdGgsCi0gICAgICAgICAg ICAgICAgICAgICAgIGxlZnRfcCwgcmlnaHRfcCwgJmNsaXBfcmVjdCk7CisgICAgdzMyX2RyYXdf Ym94X3JlY3QgKHMsIGxlZnRfeCwgdG9wX3ksIHJpZ2h0X3gsIGJvdHRvbV95LCBod2lkdGgsCisg ICAgICAgICAgICAgICAgICAgICAgIHZ3aWR0aCwgbGVmdF9wLCByaWdodF9wLCAmY2xpcF9yZWN0 KTsKICAgZWxzZQogICAgIHsKICAgICAgIHczMl9zZXR1cF9yZWxpZWZfY29sb3JzIChzKTsKLSAg ICAgIHczMl9kcmF3X3JlbGllZl9yZWN0IChzLT5mLCBsZWZ0X3gsIHRvcF95LCByaWdodF94LCBi b3R0b21feSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcmFpc2VkX3AsIDEs IDEsIGxlZnRfcCwgcmlnaHRfcCwgJmNsaXBfcmVjdCk7CisgICAgICB3MzJfZHJhd19yZWxpZWZf cmVjdCAocy0+ZiwgbGVmdF94LCB0b3BfeSwgcmlnaHRfeCwgYm90dG9tX3ksIGh3aWR0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2d2lkdGgsIHJhaXNlZF9wLCAxLCAxLCBsZWZ0X3As IHJpZ2h0X3AsICZjbGlwX3JlY3QpOwogICAgIH0KIH0KIApAQCAtMTc5MSw3ICsxNzkyLDcgQEAg dzMyX2RyYXdfaW1hZ2VfZm9yZWdyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKICAgaWYg KHMtPmZhY2UtPmJveCAhPSBGQUNFX05PX0JPWAogICAgICAgJiYgcy0+Zmlyc3RfZ2x5cGgtPmxl ZnRfYm94X2xpbmVfcAogICAgICAgJiYgcy0+c2xpY2UueCA9PSAwKQotICAgIHggKz0gZWFicyAo cy0+ZmFjZS0+Ym94X2xpbmVfd2lkdGgpOworICAgIHggKz0gbWF4IChzLT5mYWNlLT5ib3hfdmVy dGljYWxfbGluZV93aWR0aCwgMCk7CiAKICAgLyogSWYgdGhlcmUgaXMgYSBtYXJnaW4gYXJvdW5k IHRoZSBpbWFnZSwgYWRqdXN0IHgtIGFuZCB5LXBvc2l0aW9uCiAgICAgIGJ5IHRoYXQgbWFyZ2lu LiAgKi8KQEAgLTE5NzgsNyArMTk3OSw3IEBAIHczMl9kcmF3X2ltYWdlX3JlbGllZiAoc3RydWN0 IGdseXBoX3N0cmluZyAqcykKICAgaWYgKHMtPmZhY2UtPmJveCAhPSBGQUNFX05PX0JPWAogICAg ICAgJiYgcy0+Zmlyc3RfZ2x5cGgtPmxlZnRfYm94X2xpbmVfcAogICAgICAgJiYgcy0+c2xpY2Uu eCA9PSAwKQotICAgIHggKz0gZWFicyAocy0+ZmFjZS0+Ym94X2xpbmVfd2lkdGgpOworICAgIHgg Kz0gbWF4IChzLT5mYWNlLT5ib3hfdmVydGljYWxfbGluZV93aWR0aCwgMCk7CiAKICAgLyogSWYg dGhlcmUgaXMgYSBtYXJnaW4gYXJvdW5kIHRoZSBpbWFnZSwgYWRqdXN0IHgtIGFuZCB5LXBvc2l0 aW9uCiAgICAgIGJ5IHRoYXQgbWFyZ2luLiAgKi8KQEAgLTIwMzAsNyArMjAzMSw3IEBAIHczMl9k cmF3X2ltYWdlX3JlbGllZiAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKIAogICB3MzJfc2V0dXBf cmVsaWVmX2NvbG9ycyAocyk7CiAgIGdldF9nbHlwaF9zdHJpbmdfY2xpcF9yZWN0IChzLCAmcik7 Ci0gIHczMl9kcmF3X3JlbGllZl9yZWN0IChzLT5mLCB4LCB5LCB4MSwgeTEsIHRoaWNrLCByYWlz ZWRfcCwKKyAgdzMyX2RyYXdfcmVsaWVmX3JlY3QgKHMtPmYsIHgsIHksIHgxLCB5MSwgdGhpY2ss IHRoaWNrLCByYWlzZWRfcCwKIAkJCXRvcF9wLCBib3RfcCwgbGVmdF9wLCByaWdodF9wLCAmcik7 CiB9CiAKQEAgLTIwNTAsNyArMjA1MSw3IEBAIHczMl9kcmF3X2ltYWdlX2ZvcmVncm91bmRfMSAo c3RydWN0IGdseXBoX3N0cmluZyAqcywgSEJJVE1BUCBwaXhtYXApCiAgIGlmIChzLT5mYWNlLT5i b3ggIT0gRkFDRV9OT19CT1gKICAgICAgICYmIHMtPmZpcnN0X2dseXBoLT5sZWZ0X2JveF9saW5l X3AKICAgICAgICYmIHMtPnNsaWNlLnggPT0gMCkKLSAgICB4ICs9IGVhYnMgKHMtPmZhY2UtPmJv eF9saW5lX3dpZHRoKTsKKyAgICB4ICs9IG1heCAocy0+ZmFjZS0+Ym94X3ZlcnRpY2FsX2xpbmVf d2lkdGgsIDApOwogCiAgIC8qIElmIHRoZXJlIGlzIGEgbWFyZ2luIGFyb3VuZCB0aGUgaW1hZ2Us IGFkanVzdCB4LSBhbmQgeS1wb3NpdGlvbgogICAgICBieSB0aGF0IG1hcmdpbi4gICovCkBAIC0y MTYzLDggKzIxNjQsOCBAQCB3MzJfZHJhd19nbHlwaF9zdHJpbmdfYmdfcmVjdCAoc3RydWN0IGds eXBoX3N0cmluZyAqcywgaW50IHgsIGludCB5LCBpbnQgdywgaW50CiB3MzJfZHJhd19pbWFnZV9n bHlwaF9zdHJpbmcgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMpCiB7CiAgIGludCB4LCB5OwotICBp bnQgYm94X2xpbmVfaHdpZHRoID0gZWFicyAocy0+ZmFjZS0+Ym94X2xpbmVfd2lkdGgpOwotICBp bnQgYm94X2xpbmVfdndpZHRoID0gbWF4IChzLT5mYWNlLT5ib3hfbGluZV93aWR0aCwgMCk7Cisg IGludCBib3hfbGluZV9od2lkdGggPSBtYXggKHMtPmZhY2UtPmJveF92ZXJ0aWNhbF9saW5lX3dp ZHRoLCAwKTsKKyAgaW50IGJveF9saW5lX3Z3aWR0aCA9IG1heCAocy0+ZmFjZS0+Ym94X2hvcml6 b250YWxfbGluZV93aWR0aCwgMCk7CiAgIGludCBoZWlnaHQsIHdpZHRoOwogICBIQklUTUFQIHBp eG1hcCA9IDA7CiAKZGlmZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXgg NzMzOGQyYjdkNC4uYjJjYWUxMTMxZiAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMKKysrIGIvc3Jj L3hkaXNwLmMKQEAgLTE5MzcsOCArMTkzNyw4IEBAIGVzdGltYXRlX21vZGVfbGluZV9oZWlnaHQg KHN0cnVjdCBmcmFtZSAqZiwgZW51bSBmYWNlX2lkIGZhY2VfaWQpCiAJICAgIHsKIAkgICAgICBp ZiAoZmFjZS0+Zm9udCkKIAkJaGVpZ2h0ID0gbm9ybWFsX2NoYXJfaGVpZ2h0IChmYWNlLT5mb250 LCAtMSk7Ci0JICAgICAgaWYgKGZhY2UtPmJveF9saW5lX3dpZHRoID4gMCkKLQkJaGVpZ2h0ICs9 IDIgKiBmYWNlLT5ib3hfbGluZV93aWR0aDsKKwkgICAgICBpZiAoZmFjZS0+Ym94X2hvcml6b250 YWxfbGluZV93aWR0aCA+IDApCisJCWhlaWdodCArPSAyICogZmFjZS0+Ym94X2hvcml6b250YWxf bGluZV93aWR0aDsKIAkgICAgfQogCX0KIApAQCAtMjc2MDUsMTggKzI3NjA1LDIxIEBAIHByb2R1 Y2VfaW1hZ2VfZ2x5cGggKHN0cnVjdCBpdCAqaXQpCiAKICAgaWYgKGZhY2UtPmJveCAhPSBGQUNF X05PX0JPWCkKICAgICB7Ci0gICAgICBpZiAoZmFjZS0+Ym94X2xpbmVfd2lkdGggPiAwKQorICAg ICAgaWYgKGZhY2UtPmJveF9ob3Jpem9udGFsX2xpbmVfd2lkdGggPiAwKQogCXsKIAkgIGlmIChz bGljZS55ID09IDApCi0JICAgIGl0LT5hc2NlbnQgKz0gZmFjZS0+Ym94X2xpbmVfd2lkdGg7CisJ ICAgIGl0LT5hc2NlbnQgKz0gZmFjZS0+Ym94X2hvcml6b250YWxfbGluZV93aWR0aDsKIAkgIGlm IChzbGljZS55ICsgc2xpY2UuaGVpZ2h0ID09IGltZy0+aGVpZ2h0KQotCSAgICBpdC0+ZGVzY2Vu dCArPSBmYWNlLT5ib3hfbGluZV93aWR0aDsKKwkgICAgaXQtPmRlc2NlbnQgKz0gZmFjZS0+Ym94 X2hvcml6b250YWxfbGluZV93aWR0aDsKIAl9CiAKLSAgICAgIGlmIChpdC0+c3RhcnRfb2ZfYm94 X3J1bl9wICYmIHNsaWNlLnggPT0gMCkKLQlpdC0+cGl4ZWxfd2lkdGggKz0gZWFicyAoZmFjZS0+ Ym94X2xpbmVfd2lkdGgpOwotICAgICAgaWYgKGl0LT5lbmRfb2ZfYm94X3J1bl9wICYmIHNsaWNl LnggKyBzbGljZS53aWR0aCA9PSBpbWctPndpZHRoKQotCWl0LT5waXhlbF93aWR0aCArPSBlYWJz IChmYWNlLT5ib3hfbGluZV93aWR0aCk7CisgICAgICBpZiAoZmFjZS0+Ym94X3ZlcnRpY2FsX2xp bmVfd2lkdGggPiAwKQorCXsKKwkgIGlmIChpdC0+c3RhcnRfb2ZfYm94X3J1bl9wICYmIHNsaWNl LnggPT0gMCkKKwkgICAgaXQtPnBpeGVsX3dpZHRoICs9IGZhY2UtPmJveF92ZXJ0aWNhbF9saW5l X3dpZHRoOworCSAgaWYgKGl0LT5lbmRfb2ZfYm94X3J1bl9wICYmIHNsaWNlLnggKyBzbGljZS53 aWR0aCA9PSBpbWctPndpZHRoKQorCSAgICBpdC0+cGl4ZWxfd2lkdGggKz0gZmFjZS0+Ym94X3Zl cnRpY2FsX2xpbmVfd2lkdGg7CisJfQogICAgIH0KIAogICB0YWtlX3ZlcnRpY2FsX3Bvc2l0aW9u X2ludG9fYWNjb3VudCAoaXQpOwpAQCAtMjc3MTQsMTUgKzI3NzE3LDE4IEBAIHByb2R1Y2VfeHdp ZGdldF9nbHlwaCAoc3RydWN0IGl0ICppdCkKIAogICBpZiAoZmFjZS0+Ym94ICE9IEZBQ0VfTk9f Qk9YKQogICAgIHsKLSAgICAgIGlmIChmYWNlLT5ib3hfbGluZV93aWR0aCA+IDApCisgICAgICBp ZiAoZmFjZS0+Ym94X2hvcml6b250YWxfbGluZV93aWR0aCA+IDApCiAJewotCSAgaXQtPmFzY2Vu dCArPSBmYWNlLT5ib3hfbGluZV93aWR0aDsKLQkgIGl0LT5kZXNjZW50ICs9IGZhY2UtPmJveF9s aW5lX3dpZHRoOworCSAgaXQtPmFzY2VudCArPSBmYWNlLT5ib3hfaG9yaXpvbnRhbF9saW5lX3dp ZHRoOworCSAgaXQtPmRlc2NlbnQgKz0gZmFjZS0+Ym94X2hvcml6b250YWxfbGluZV93aWR0aDsK IAl9CiAKLSAgICAgIGlmIChpdC0+c3RhcnRfb2ZfYm94X3J1bl9wKQotCWl0LT5waXhlbF93aWR0 aCArPSBlYWJzIChmYWNlLT5ib3hfbGluZV93aWR0aCk7Ci0gICAgICBpdC0+cGl4ZWxfd2lkdGgg Kz0gZWFicyAoZmFjZS0+Ym94X2xpbmVfd2lkdGgpOworICAgICAgaWYgKGZhY2UtPmJveF92ZXJ0 aWNhbF9saW5lX3dpZHRoID4gMCkKKwl7CisJICBpZiAoaXQtPnN0YXJ0X29mX2JveF9ydW5fcCkK KwkgICAgaXQtPnBpeGVsX3dpZHRoICs9IGZhY2UtPmJveF92ZXJ0aWNhbF9saW5lX3dpZHRoOwor CSAgaXQtPnBpeGVsX3dpZHRoICs9IGZhY2UtPmJveF92ZXJ0aWNhbF9saW5lX3dpZHRoOworCX0K ICAgICB9CiAKICAgdGFrZV92ZXJ0aWNhbF9wb3NpdGlvbl9pbnRvX2FjY291bnQgKGl0KTsKQEAg LTI4NDg1LDYgKzI4NDkxLDMxIEBAIHByb2R1Y2VfZ2x5cGhsZXNzX2dseXBoIChzdHJ1Y3QgaXQg Kml0LCBib29sIGZvcl9ub19mb250LCBMaXNwX09iamVjdCBhY3JvbnltKQogfQogCiAKKy8qIElm IGZhY2UgaGFzIGEgYm94LCBhZGQgdGhlIGJveCB0aGlja25lc3MgdG8gdGhlIGNoYXJhY3Rlcgor ICAgaGVpZ2h0LiAgSWYgY2hhcmFjdGVyIGhhcyBhIGJveCBsaW5lIHRvIHRoZSBsZWZ0IGFuZC9v cgorICAgcmlnaHQsIGFkZCB0aGUgYm94IGxpbmUgd2lkdGggdG8gdGhlIGNoYXJhY3RlcidzIHdp ZHRoLiAgKi8KKyNkZWZpbmUgSVRfQVBQTFlfRkFDRV9CT1goaXQsIGZhY2UpCQkJCVwKKyAgZG8g ewkJCQkJCQkJXAorICAgIGlmIChmYWNlLT5ib3ggIT0gRkFDRV9OT19CT1gpCQkJCVwKKyAgICAg IHsJCQkJCQkJCVwKKwlpbnQgdGhpY2sgPSBmYWNlLT5ib3hfaG9yaXpvbnRhbF9saW5lX3dpZHRo OwkJXAorCWlmICh0aGljayA+IDApCQkJCQkJXAorCSAgewkJCQkJCQlcCisJICAgIGl0LT5hc2Nl bnQgKz0gdGhpY2s7CQkJCVwKKwkgICAgaXQtPmRlc2NlbnQgKz0gdGhpY2s7CQkJCVwKKwkgIH0J CQkJCQkJXAorCQkJCQkJCQlcCisJdGhpY2sgPSBmYWNlLT5ib3hfdmVydGljYWxfbGluZV93aWR0 aDsJCQlcCisJaWYgKHRoaWNrID4gMCkJCQkJCQlcCisJICB7CQkJCQkJCVwKKwkgICAgaWYgKGl0 LT5zdGFydF9vZl9ib3hfcnVuX3ApCQkJCVwKKwkgICAgICBpdC0+cGl4ZWxfd2lkdGggKz0gdGhp Y2s7CQkJCVwKKwkgICAgaWYgKGl0LT5lbmRfb2ZfYm94X3J1bl9wKQkJCQlcCisJICAgICAgaXQt PnBpeGVsX3dpZHRoICs9IHRoaWNrOwkJCQlcCisJICB9CQkJCQkJCVwKKyAgICAgIH0JCQkJCQkJ CVwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwogLyogUklGOgogICAgUHJvZHVjZSBnbHlwaHMvZ2V0 IGRpc3BsYXkgbWV0cmljcyBmb3IgdGhlIGRpc3BsYXkgZWxlbWVudCBJVCBpcwogICAgbG9hZGVk IHdpdGguICBTZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHN0cnVjdCBpdCBpbiBkaXNwZXh0ZXJuLmgK QEAgLTI4NjAwLDI2ICsyODYzMSw3IEBAIGd1aV9wcm9kdWNlX2dseXBocyAoc3RydWN0IGl0ICpp dCkKIAkgIGlmIChzdHJldGNoZWRfcCkKIAkgICAgaXQtPnBpeGVsX3dpZHRoICo9IFhGTE9BVElO VCAoaXQtPnNwYWNlX3dpZHRoKTsKIAotCSAgLyogSWYgZmFjZSBoYXMgYSBib3gsIGFkZCB0aGUg Ym94IHRoaWNrbmVzcyB0byB0aGUgY2hhcmFjdGVyCi0JICAgICBoZWlnaHQuICBJZiBjaGFyYWN0 ZXIgaGFzIGEgYm94IGxpbmUgdG8gdGhlIGxlZnQgYW5kL29yCi0JICAgICByaWdodCwgYWRkIHRo ZSBib3ggbGluZSB3aWR0aCB0byB0aGUgY2hhcmFjdGVyJ3Mgd2lkdGguICAqLwotCSAgaWYgKGZh Y2UtPmJveCAhPSBGQUNFX05PX0JPWCkKLQkgICAgewotCSAgICAgIGludCB0aGljayA9IGZhY2Ut PmJveF9saW5lX3dpZHRoOwotCi0JICAgICAgaWYgKHRoaWNrID4gMCkKLQkJewotCQkgIGl0LT5h c2NlbnQgKz0gdGhpY2s7Ci0JCSAgaXQtPmRlc2NlbnQgKz0gdGhpY2s7Ci0JCX0KLQkgICAgICBl bHNlCi0JCXRoaWNrID0gLXRoaWNrOwotCi0JICAgICAgaWYgKGl0LT5zdGFydF9vZl9ib3hfcnVu X3ApCi0JCWl0LT5waXhlbF93aWR0aCArPSB0aGljazsKLQkgICAgICBpZiAoaXQtPmVuZF9vZl9i b3hfcnVuX3ApCi0JCWl0LT5waXhlbF93aWR0aCArPSB0aGljazsKLQkgICAgfQorCSAgSVRfQVBQ TFlfRkFDRV9CT1goaXQsIGZhY2UpOwogCiAJICAvKiBJZiBmYWNlIGhhcyBhbiBvdmVybGluZSwg YWRkIHRoZSBoZWlnaHQgb2YgdGhlIG92ZXJsaW5lCiAJICAgICAoMSBwaXhlbCkgYW5kIGEgMSBw aXhlbCBtYXJnaW4gdG8gdGhlIGNoYXJhY3RlciBoZWlnaHQuICAqLwpAQCAtMjg3MzQsMTAgKzI4 NzQ2LDEwIEBAIGd1aV9wcm9kdWNlX2dseXBocyAoc3RydWN0IGl0ICppdCkKIAogCSAgICAgIGlm ICgoaXQtPm1heF9hc2NlbnQgPiAwIHx8IGl0LT5tYXhfZGVzY2VudCA+IDApCiAJCSAgJiYgZmFj ZS0+Ym94ICE9IEZBQ0VfTk9fQk9YCi0JCSAgJiYgZmFjZS0+Ym94X2xpbmVfd2lkdGggPiAwKQor CQkgICYmIGZhY2UtPmJveF9ob3Jpem9udGFsX2xpbmVfd2lkdGggPiAwKQogCQl7Ci0JCSAgaXQt PmFzY2VudCArPSBmYWNlLT5ib3hfbGluZV93aWR0aDsKLQkJICBpdC0+ZGVzY2VudCArPSBmYWNl LT5ib3hfbGluZV93aWR0aDsKKwkJICBpdC0+YXNjZW50ICs9IGZhY2UtPmJveF9ob3Jpem9udGFs X2xpbmVfd2lkdGg7CisJCSAgaXQtPmRlc2NlbnQgKz0gZmFjZS0+Ym94X2hvcml6b250YWxfbGlu ZV93aWR0aDsKIAkJfQogCSAgICAgIGlmICghTklMUCAoaGVpZ2h0KQogCQkgICYmIFhGSVhOVU0g KGhlaWdodCkgPiBpdC0+YXNjZW50ICsgaXQtPmRlc2NlbnQpCkBAIC0yOTE0NCwyMyArMjkxNTYs NyBAQCBndWlfcHJvZHVjZV9nbHlwaHMgKHN0cnVjdCBpdCAqaXQpCiAgICAgICBpdC0+cGl4ZWxf d2lkdGggPSBjbXAtPnBpeGVsX3dpZHRoOwogICAgICAgaXQtPmFzY2VudCA9IGl0LT5waHlzX2Fz Y2VudCA9IGNtcC0+YXNjZW50OwogICAgICAgaXQtPmRlc2NlbnQgPSBpdC0+cGh5c19kZXNjZW50 ID0gY21wLT5kZXNjZW50OwotICAgICAgaWYgKGZhY2UtPmJveCAhPSBGQUNFX05PX0JPWCkKLQl7 Ci0JICBpbnQgdGhpY2sgPSBmYWNlLT5ib3hfbGluZV93aWR0aDsKLQotCSAgaWYgKHRoaWNrID4g MCkKLQkgICAgewotCSAgICAgIGl0LT5hc2NlbnQgKz0gdGhpY2s7Ci0JICAgICAgaXQtPmRlc2Nl bnQgKz0gdGhpY2s7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgdGhpY2sgPSAtIHRoaWNrOwotCi0J ICBpZiAoaXQtPnN0YXJ0X29mX2JveF9ydW5fcCkKLQkgICAgaXQtPnBpeGVsX3dpZHRoICs9IHRo aWNrOwotCSAgaWYgKGl0LT5lbmRfb2ZfYm94X3J1bl9wKQotCSAgICBpdC0+cGl4ZWxfd2lkdGgg Kz0gdGhpY2s7Ci0JfQorICAgICAgSVRfQVBQTFlfRkFDRV9CT1goaXQsIGZhY2UpOwogCiAgICAg ICAvKiBJZiBmYWNlIGhhcyBhbiBvdmVybGluZSwgYWRkIHRoZSBoZWlnaHQgb2YgdGhlIG92ZXJs aW5lCiAJICgxIHBpeGVsKSBhbmQgYSAxIHBpeGVsIG1hcmdpbiB0byB0aGUgY2hhcmFjdGVyIGhl aWdodC4gICovCkBAIC0yOTE5NCwyMyArMjkxOTAsOCBAQCBndWlfcHJvZHVjZV9nbHlwaHMgKHN0 cnVjdCBpdCAqaXQpCiAJaXQtPmdseXBoX3Jvdy0+Y29udGFpbnNfb3ZlcmxhcHBpbmdfZ2x5cGhz X3AgPSB0cnVlOwogICAgICAgaXQtPmFzY2VudCA9IGl0LT5waHlzX2FzY2VudCA9IG1ldHJpY3Mu YXNjZW50OwogICAgICAgaXQtPmRlc2NlbnQgPSBpdC0+cGh5c19kZXNjZW50ID0gbWV0cmljcy5k ZXNjZW50OwotICAgICAgaWYgKGZhY2UtPmJveCAhPSBGQUNFX05PX0JPWCkKLQl7Ci0JICBpbnQg dGhpY2sgPSBmYWNlLT5ib3hfbGluZV93aWR0aDsKKyAgICAgIElUX0FQUExZX0ZBQ0VfQk9YKGl0 LCBmYWNlKTsKIAotCSAgaWYgKHRoaWNrID4gMCkKLQkgICAgewotCSAgICAgIGl0LT5hc2NlbnQg Kz0gdGhpY2s7Ci0JICAgICAgaXQtPmRlc2NlbnQgKz0gdGhpY2s7Ci0JICAgIH0KLQkgIGVsc2UK LQkgICAgdGhpY2sgPSAtIHRoaWNrOwotCi0JICBpZiAoaXQtPnN0YXJ0X29mX2JveF9ydW5fcCkK LQkgICAgaXQtPnBpeGVsX3dpZHRoICs9IHRoaWNrOwotCSAgaWYgKGl0LT5lbmRfb2ZfYm94X3J1 bl9wKQotCSAgICBpdC0+cGl4ZWxfd2lkdGggKz0gdGhpY2s7Ci0JfQogICAgICAgLyogSWYgZmFj ZSBoYXMgYW4gb3ZlcmxpbmUsIGFkZCB0aGUgaGVpZ2h0IG9mIHRoZSBvdmVybGluZQogCSAoMSBw aXhlbCkgYW5kIGEgMSBwaXhlbCBtYXJnaW4gdG8gdGhlIGNoYXJhY3RlciBoZWlnaHQuICAqLwog ICAgICAgaWYgKGZhY2UtPm92ZXJsaW5lX3ApCmRpZmYgLS1naXQgYS9zcmMveGZhY2VzLmMgYi9z cmMveGZhY2VzLmMKaW5kZXggYzNjYWU3ZTJhNi4uZTVmNjI3NWQ2NCAxMDA2NDQKLS0tIGEvc3Jj L3hmYWNlcy5jCisrKyBiL3NyYy94ZmFjZXMuYwpAQCAtMjk3Miw2ICsyOTcyLDggQEAgREVGVU4g KCJpbnRlcm5hbC1zZXQtbGlzcC1mYWNlLWF0dHJpYnV0ZSIsIEZpbnRlcm5hbF9zZXRfbGlzcF9m YWNlX2F0dHJpYnV0ZSwKIAl2YWxpZF9wID0gWEZJWE5VTSAodmFsdWUpICE9IDA7CiAgICAgICBl bHNlIGlmIChTVFJJTkdQICh2YWx1ZSkpCiAJdmFsaWRfcCA9IFNDSEFSUyAodmFsdWUpID4gMDsK KyAgICAgIGVsc2UgaWYgKENPTlNQICh2YWx1ZSkgJiYgRklYTlVNUCAoWENBUiAodmFsdWUpKSAm JiBGSVhOVU1QIChYQ0RSICh2YWx1ZSkpKQorCXZhbGlkX3AgPSB0cnVlOwogICAgICAgZWxzZSBp ZiAoQ09OU1AgKHZhbHVlKSkKIAl7CiAJICBMaXNwX09iamVjdCB0ZW07CkBAIC0yOTkwLDcgKzI5 OTIsOSBAQCBERUZVTiAoImludGVybmFsLXNldC1saXNwLWZhY2UtYXR0cmlidXRlIiwgRmludGVy bmFsX3NldF9saXNwX2ZhY2VfYXR0cmlidXRlLAogCiAJICAgICAgaWYgKEVRIChrLCBRQ2xpbmVf d2lkdGgpKQogCQl7Ci0JCSAgaWYgKCFGSVhOVU1QICh2KSB8fCBYRklYTlVNICh2KSA9PSAwKQor CQkgIGlmICgoIUNPTlNQKHYpIHx8ICFGSVhOVU1QIChYQ0FSICh2KSkgfHwgWEZJWE5VTSAoWENB UiAodikpID09IDAKKwkJICAgICAgICAgICAgICAgICB8fCAhRklYTlVNUCAoWENEUiAodikpIHx8 IFhGSVhOVU0gKFhDRFIgKHYpKSA9PSAwKQorCQkgICAgICAmJiAoIUZJWE5VTVAgKHYpIHx8IFhG SVhOVU0gKHYpID09IDApKQogCQkgICAgYnJlYWs7CiAJCX0KIAkgICAgICBlbHNlIGlmIChFUSAo aywgUUNjb2xvcikpCkBAIC01NjMxLDcgKzU2MzUsNyBAQCByZWFsaXplX2d1aV9mYWNlIChzdHJ1 Y3QgZmFjZV9jYWNoZSAqY2FjaGUsIExpc3BfT2JqZWN0IGF0dHJzW0xGQUNFX1ZFQ1RPUl9TSVpF XQogICAgICAgZmFjZS0+Ym94X2NvbG9yID0gbG9hZF9jb2xvciAoZiwgZmFjZSwgYXR0cnNbTEZB Q0VfQk9YX0lOREVYXSwKIAkJCQkgICAgTEZBQ0VfQk9YX0lOREVYKTsKICAgICAgIGZhY2UtPmJv eCA9IEZBQ0VfU0lNUExFX0JPWDsKLSAgICAgIGZhY2UtPmJveF9saW5lX3dpZHRoID0gMTsKKyAg ICAgIGZhY2UtPmJveF92ZXJ0aWNhbF9saW5lX3dpZHRoID0gZmFjZS0+Ym94X2hvcml6b250YWxf bGluZV93aWR0aCA9IDE7CiAgICAgfQogICBlbHNlIGlmIChGSVhOVU1QIChib3gpKQogICAgIHsK QEAgLTU2MzksOSArNTY0MywxOSBAQCByZWFsaXplX2d1aV9mYWNlIChzdHJ1Y3QgZmFjZV9jYWNo ZSAqY2FjaGUsIExpc3BfT2JqZWN0IGF0dHJzW0xGQUNFX1ZFQ1RPUl9TSVpFXQogCSBmYWNlLiAg Ki8KICAgICAgIGVhc3NlcnQgKFhGSVhOVU0gKGJveCkgIT0gMCk7CiAgICAgICBmYWNlLT5ib3gg PSBGQUNFX1NJTVBMRV9CT1g7Ci0gICAgICBmYWNlLT5ib3hfbGluZV93aWR0aCA9IFhGSVhOVU0g KGJveCk7CisgICAgICBmYWNlLT5ib3hfdmVydGljYWxfbGluZV93aWR0aCA9IGVhYnMoWEZJWE5V TSAoYm94KSk7CisgICAgICBmYWNlLT5ib3hfaG9yaXpvbnRhbF9saW5lX3dpZHRoID0gWEZJWE5V TSAoYm94KTsKKyAgICAgIGZhY2UtPmJveF9jb2xvciA9IGZhY2UtPmZvcmVncm91bmQ7CisgICAg ICBmYWNlLT5ib3hfY29sb3JfZGVmYXVsdGVkX3AgPSB0cnVlOworICAgIH0KKyAgZWxzZSBpZiAo Q09OU1AgKGJveCkgJiYgRklYTlVNUCAoWENBUiAoYm94KSkgJiYgRklYTlVNUCAoWENEUiAoYm94 KSkpCisgICAgeworCS8qIGAoVldJRFRIIC4gSFdJRFRIKScuICAqLworICAgICAgZmFjZS0+Ym94 ID0gRkFDRV9TSU1QTEVfQk9YOwogICAgICAgZmFjZS0+Ym94X2NvbG9yID0gZmFjZS0+Zm9yZWdy b3VuZDsKICAgICAgIGZhY2UtPmJveF9jb2xvcl9kZWZhdWx0ZWRfcCA9IHRydWU7CisgICAgICBm YWNlLT5ib3hfdmVydGljYWxfbGluZV93aWR0aCA9IFhGSVhOVU0gKFhDQVIgKGJveCkpOworICAg ICAgZmFjZS0+Ym94X2hvcml6b250YWxfbGluZV93aWR0aCA9IFhGSVhOVU0gKFhDRFIgKGJveCkp OwogICAgIH0KICAgZWxzZSBpZiAoQ09OU1AgKGJveCkpCiAgICAgewpAQCAtNTY1MCw3ICs1NjY0 LDcgQEAgcmVhbGl6ZV9ndWlfZmFjZSAoc3RydWN0IGZhY2VfY2FjaGUgKmNhY2hlLCBMaXNwX09i amVjdCBhdHRyc1tMRkFDRV9WRUNUT1JfU0laRV0KICAgICAgIGZhY2UtPmJveCA9IEZBQ0VfU0lN UExFX0JPWDsKICAgICAgIGZhY2UtPmJveF9jb2xvciA9IGZhY2UtPmZvcmVncm91bmQ7CiAgICAg ICBmYWNlLT5ib3hfY29sb3JfZGVmYXVsdGVkX3AgPSB0cnVlOwotICAgICAgZmFjZS0+Ym94X2xp bmVfd2lkdGggPSAxOworICAgICAgZmFjZS0+Ym94X3ZlcnRpY2FsX2xpbmVfd2lkdGggPSBmYWNl LT5ib3hfaG9yaXpvbnRhbF9saW5lX3dpZHRoID0gMTsKIAogICAgICAgd2hpbGUgKENPTlNQIChi b3gpKQogCXsKQEAgLTU2NjYsOCArNTY4MCwxNCBAQCByZWFsaXplX2d1aV9mYWNlIChzdHJ1Y3Qg ZmFjZV9jYWNoZSAqY2FjaGUsIExpc3BfT2JqZWN0IGF0dHJzW0xGQUNFX1ZFQ1RPUl9TSVpFXQog CiAJICBpZiAoRVEgKGtleXdvcmQsIFFDbGluZV93aWR0aCkpCiAJICAgIHsKLQkgICAgICBpZiAo RklYTlVNUCAodmFsdWUpICYmIFhGSVhOVU0gKHZhbHVlKSAhPSAwKQotCQlmYWNlLT5ib3hfbGlu ZV93aWR0aCA9IFhGSVhOVU0gKHZhbHVlKTsKKwkgICAgICBpZiAoQ09OU1AgKHZhbHVlKSAmJiBG SVhOVU1QIChYQ0FSICh2YWx1ZSkpICYmIEZJWE5VTVAgKFhDRFIgKHZhbHVlKSkpIHsKKwkJICBm YWNlLT5ib3hfdmVydGljYWxfbGluZV93aWR0aCA9IFhGSVhOVU0gKFhDQVIgKHZhbHVlKSk7CisJ CSAgZmFjZS0+Ym94X2hvcml6b250YWxfbGluZV93aWR0aCA9IFhGSVhOVU0gKFhDRFIgKHZhbHVl KSk7CisJICAgICAgfQorCSAgICAgIGVsc2UgaWYgKEZJWE5VTVAgKHZhbHVlKSAmJiBYRklYTlVN ICh2YWx1ZSkgIT0gMCkgeworCQlmYWNlLT5ib3hfdmVydGljYWxfbGluZV93aWR0aCA9IGVhYnMg KFhGSVhOVU0gKHZhbHVlKSk7CisJCWZhY2UtPmJveF9ob3Jpem9udGFsX2xpbmVfd2lkdGggPSBY RklYTlVNICh2YWx1ZSk7CisJICAgICAgfQogCSAgICB9CiAJICBlbHNlIGlmIChFUSAoa2V5d29y ZCwgUUNjb2xvcikpCiAJICAgIHsKZGlmZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0ZXJt LmMKaW5kZXggYmJlNjhlZjYyMi4uM2NjMzVkY2JkOCAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMK KysrIGIvc3JjL3h0ZXJtLmMKQEAgLTE3NTQsNyArMTc1NCw3IEBAIHhfZHJhd19nbHlwaF9zdHJp bmdfYmFja2dyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcywgYm9vbCBmb3JjZV9wKQogICAg ICBzaG91bGRuJ3QgYmUgZHJhd24gaW4gdGhlIGZpcnN0IHBsYWNlLiAgKi8KICAgaWYgKCFzLT5i YWNrZ3JvdW5kX2ZpbGxlZF9wKQogICAgIHsKLSAgICAgIGludCBib3hfbGluZV93aWR0aCA9IG1h eCAocy0+ZmFjZS0+Ym94X2xpbmVfd2lkdGgsIDApOworICAgICAgaW50IGJveF9saW5lX3dpZHRo ID0gbWF4IChzLT5mYWNlLT5ib3hfaG9yaXpvbnRhbF9saW5lX3dpZHRoLCAwKTsKIAogICAgICAg aWYgKHMtPnN0aXBwbGVkX3ApCiAJewpAQCAtMTc5OSw3ICsxNzk5LDcgQEAgeF9kcmF3X2dseXBo X3N0cmluZ19mb3JlZ3JvdW5kIChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzKQogICAgICBvZiBTIHRv IHRoZSByaWdodCBvZiB0aGF0IGJveCBsaW5lLiAgKi8KICAgaWYgKHMtPmZhY2UtPmJveCAhPSBG QUNFX05PX0JPWAogICAgICAgJiYgcy0+Zmlyc3RfZ2x5cGgtPmxlZnRfYm94X2xpbmVfcCkKLSAg ICB4ID0gcy0+eCArIGVhYnMgKHMtPmZhY2UtPmJveF9saW5lX3dpZHRoKTsKKyAgICB4ID0gcy0+ eCArIG1heCAocy0+ZmFjZS0+Ym94X3ZlcnRpY2FsX2xpbmVfd2lkdGgsIDApOwogICBlbHNlCiAg ICAgeCA9IHMtPng7CiAKQEAgLTE4NDksNyArMTg0OSw3IEBAIHhfZHJhd19nbHlwaF9zdHJpbmdf Zm9yZWdyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKIAkgIGlmICghKHMtPmZvcl9vdmVy bGFwcwogCQl8fCAocy0+YmFja2dyb3VuZF9maWxsZWRfcCAmJiBzLT5obCAhPSBEUkFXX0NVUlNP UikpKQogCSAgICB7Ci0JICAgICAgaW50IGJveF9saW5lX3dpZHRoID0gbWF4IChzLT5mYWNlLT5i b3hfbGluZV93aWR0aCwgMCk7CisJICAgICAgaW50IGJveF9saW5lX3dpZHRoID0gbWF4IChzLT5m YWNlLT5ib3hfaG9yaXpvbnRhbF9saW5lX3dpZHRoLCAwKTsKIAogCSAgICAgIGlmIChzLT5zdGlw cGxlZF9wKQogCQl7CkBAIC0xODkzLDcgKzE4OTMsNyBAQCB4X2RyYXdfY29tcG9zaXRlX2dseXBo X3N0cmluZ19mb3JlZ3JvdW5kIChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzKQogICAgICBvZiBTIHRv IHRoZSByaWdodCBvZiB0aGF0IGJveCBsaW5lLiAgKi8KICAgaWYgKHMtPmZhY2UgJiYgcy0+ZmFj ZS0+Ym94ICE9IEZBQ0VfTk9fQk9YCiAgICAgICAmJiBzLT5maXJzdF9nbHlwaC0+bGVmdF9ib3hf bGluZV9wKQotICAgIHggPSBzLT54ICsgZWFicyAocy0+ZmFjZS0+Ym94X2xpbmVfd2lkdGgpOwor ICAgIHggPSBzLT54ICsgbWF4IChzLT5mYWNlLT5ib3hfdmVydGljYWxfbGluZV93aWR0aCwgMCk7 CiAgIGVsc2UKICAgICB4ID0gcy0+eDsKIApAQCAtMjAwNCw3ICsyMDA0LDcgQEAgeF9kcmF3X2ds eXBobGVzc19nbHlwaF9zdHJpbmdfZm9yZWdyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcykK ICAgICAgb2YgUyB0byB0aGUgcmlnaHQgb2YgdGhhdCBib3ggbGluZS4gICovCiAgIGlmIChzLT5m YWNlICYmIHMtPmZhY2UtPmJveCAhPSBGQUNFX05PX0JPWAogICAgICAgJiYgcy0+Zmlyc3RfZ2x5 cGgtPmxlZnRfYm94X2xpbmVfcCkKLSAgICB4ID0gcy0+eCArIGVhYnMgKHMtPmZhY2UtPmJveF9s aW5lX3dpZHRoKTsKKyAgICB4ID0gcy0+eCArIG1heCAocy0+ZmFjZS0+Ym94X3ZlcnRpY2FsX2xp bmVfd2lkdGgsIDApOwogICBlbHNlCiAgICAgeCA9IHMtPng7CiAKQEAgLTI3NzAsNyArMjc3MCw3 IEBAIHhfc2V0dXBfcmVsaWVmX2NvbG9ycyAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKIHN0YXRp YyB2b2lkCiB4X2RyYXdfcmVsaWVmX3JlY3QgKHN0cnVjdCBmcmFtZSAqZiwKIAkJICAgIGludCBs ZWZ0X3gsIGludCB0b3BfeSwgaW50IHJpZ2h0X3gsIGludCBib3R0b21feSwKLQkJICAgIGludCB3 aWR0aCwgYm9vbCByYWlzZWRfcCwgYm9vbCB0b3BfcCwgYm9vbCBib3RfcCwKKwkJICAgIGludCBo d2lkdGgsIGludCB2d2lkdGgsIGJvb2wgcmFpc2VkX3AsIGJvb2wgdG9wX3AsIGJvb2wgYm90X3As CiAJCSAgICBib29sIGxlZnRfcCwgYm9vbCByaWdodF9wLAogCQkgICAgWFJlY3RhbmdsZSAqY2xp cF9yZWN0KQogewpAQCAtMjc5NSw3ICsyNzk1LDcgQEAgeF9kcmF3X3JlbGllZl9yZWN0IChzdHJ1 Y3QgZnJhbWUgKmYsCiAgIGlmIChsZWZ0X3ApCiAgICAgewogICAgICAgeF9maWxsX3JlY3Rhbmds ZSAoZiwgdG9wX2xlZnRfZ2MsIGxlZnRfeCwgdG9wX3ksCi0JCQl3aWR0aCwgYm90dG9tX3kgKyAx IC0gdG9wX3kpOworCQkJdndpZHRoLCBib3R0b21feSArIDEgLSB0b3BfeSk7CiAgICAgICBpZiAo dG9wX3ApCiAJY29ybmVycyB8PSAxIDw8IENPUk5FUl9UT1BfTEVGVDsKICAgICAgIGlmIChib3Rf cCkKQEAgLTI4MDMsOCArMjgwMyw4IEBAIHhfZHJhd19yZWxpZWZfcmVjdCAoc3RydWN0IGZyYW1l ICpmLAogICAgIH0KICAgaWYgKHJpZ2h0X3ApCiAgICAgewotICAgICAgeF9maWxsX3JlY3Rhbmds ZSAoZiwgYm90dG9tX3JpZ2h0X2djLCByaWdodF94ICsgMSAtIHdpZHRoLCB0b3BfeSwKLQkJCXdp ZHRoLCBib3R0b21feSArIDEgLSB0b3BfeSk7CisgICAgICB4X2ZpbGxfcmVjdGFuZ2xlIChmLCBi b3R0b21fcmlnaHRfZ2MsIHJpZ2h0X3ggKyAxIC0gdndpZHRoLCB0b3BfeSwKKwkJCXZ3aWR0aCwg Ym90dG9tX3kgKyAxIC0gdG9wX3kpOwogICAgICAgaWYgKHRvcF9wKQogCWNvcm5lcnMgfD0gMSA8 PCBDT1JORVJfVE9QX1JJR0hUOwogICAgICAgaWYgKGJvdF9wKQpAQCAtMjgxNCwyNSArMjgxNCwy NSBAQCB4X2RyYXdfcmVsaWVmX3JlY3QgKHN0cnVjdCBmcmFtZSAqZiwKICAgICB7CiAgICAgICBp ZiAoIXJpZ2h0X3ApCiAJeF9maWxsX3JlY3RhbmdsZSAoZiwgdG9wX2xlZnRfZ2MsIGxlZnRfeCwg dG9wX3ksCi0JCQkgIHJpZ2h0X3ggKyAxIC0gbGVmdF94LCB3aWR0aCk7CisJCQkgIHJpZ2h0X3gg KyAxIC0gbGVmdF94LCBod2lkdGgpOwogICAgICAgZWxzZQogCXhfZmlsbF90cmFwZXpvaWRfZm9y X3JlbGllZiAoZiwgdG9wX2xlZnRfZ2MsIGxlZnRfeCwgdG9wX3ksCi0JCQkJICAgICByaWdodF94 ICsgMSAtIGxlZnRfeCwgd2lkdGgsIDEpOworCQkJCSAgICAgcmlnaHRfeCArIDEgLSBsZWZ0X3gs IGh3aWR0aCwgMSk7CiAgICAgfQogICBpZiAoYm90X3ApCiAgICAgewogICAgICAgaWYgKCFsZWZ0 X3ApCi0JeF9maWxsX3JlY3RhbmdsZSAoZiwgYm90dG9tX3JpZ2h0X2djLCBsZWZ0X3gsIGJvdHRv bV95ICsgMSAtIHdpZHRoLAotCQkJICByaWdodF94ICsgMSAtIGxlZnRfeCwgd2lkdGgpOworCXhf ZmlsbF9yZWN0YW5nbGUgKGYsIGJvdHRvbV9yaWdodF9nYywgbGVmdF94LCBib3R0b21feSArIDEg LSBod2lkdGgsCisJCQkgIHJpZ2h0X3ggKyAxIC0gbGVmdF94LCBod2lkdGgpOwogICAgICAgZWxz ZQogCXhfZmlsbF90cmFwZXpvaWRfZm9yX3JlbGllZiAoZiwgYm90dG9tX3JpZ2h0X2djLAotCQkJ CSAgICAgbGVmdF94LCBib3R0b21feSArIDEgLSB3aWR0aCwKLQkJCQkgICAgIHJpZ2h0X3ggKyAx IC0gbGVmdF94LCB3aWR0aCwgMCk7CisJCQkJICAgICBsZWZ0X3gsIGJvdHRvbV95ICsgMSAtIGh3 aWR0aCwKKwkJCQkgICAgIHJpZ2h0X3ggKyAxIC0gbGVmdF94LCBod2lkdGgsIDApOwogICAgIH0K LSAgaWYgKGxlZnRfcCAmJiB3aWR0aCAhPSAxKQorICBpZiAobGVmdF9wICYmIHZ3aWR0aCA+IDEp CiAgICAgeF9maWxsX3JlY3RhbmdsZSAoZiwgYm90dG9tX3JpZ2h0X2djLCBsZWZ0X3gsIHRvcF95 LAogCQkgICAgICAxLCBib3R0b21feSArIDEgLSB0b3BfeSk7Ci0gIGlmICh0b3BfcCAmJiB3aWR0 aCAhPSAxKQorICBpZiAodG9wX3AgJiYgaHdpZHRoID4gMSkKICAgICB4X2ZpbGxfcmVjdGFuZ2xl IChmLCBib3R0b21fcmlnaHRfZ2MsIGxlZnRfeCwgdG9wX3ksCiAJCSAgICAgIHJpZ2h0X3ggKyAx IC0gbGVmdF94LCAxKTsKICAgaWYgKGNvcm5lcnMpCkBAIC0yODY2LDEyICsyODY2LDEyIEBAIHhf ZHJhd19yZWxpZWZfcmVjdCAoc3RydWN0IGZyYW1lICpmLAogICAvKiBUb3AuICAqLwogICBpZiAo dG9wX3ApCiAgICAgewotICAgICAgaWYgKHdpZHRoID09IDEpCisgICAgICBpZiAoaHdpZHRoID09 IDEpCiAgICAgICAgIFhEcmF3TGluZSAoZHB5LCBkcmF3YWJsZSwgZ2MsCiAJCSAgIGxlZnRfeCAr IGxlZnRfcCwgdG9wX3ksCiAJCSAgIHJpZ2h0X3ggKyAhcmlnaHRfcCwgdG9wX3kpOwogCi0gICAg ICBmb3IgKGkgPSAxOyBpIDwgd2lkdGg7ICsraSkKKyAgICAgIGZvciAoaSA9IDE7IGkgPCBod2lk dGg7ICsraSkKICAgICAgICAgWERyYXdMaW5lIChkcHksIGRyYXdhYmxlLCBnYywKIAkJICAgbGVm dF94ICArIGkgKiBsZWZ0X3AsIHRvcF95ICsgaSwKIAkJICAgcmlnaHRfeCArIDEgLSBpICogcmln aHRfcCwgdG9wX3kgKyBpKTsKQEAgLTI4ODAsMTMgKzI4ODAsMTAgQEAgeF9kcmF3X3JlbGllZl9y ZWN0IChzdHJ1Y3QgZnJhbWUgKmYsCiAgIC8qIExlZnQuICAqLwogICBpZiAobGVmdF9wKQogICAg IHsKLSAgICAgIGlmICh3aWR0aCA9PSAxKQorICAgICAgaWYgKHZ3aWR0aCA9PSAxKQogICAgICAg ICBYRHJhd0xpbmUgKGRweSwgZHJhd2FibGUsIGdjLCBsZWZ0X3gsIHRvcF95ICsgMSwgbGVmdF94 LCBib3R0b21feSk7CiAKLSAgICAgIHhfY2xlYXJfYXJlYShmLCBsZWZ0X3gsIHRvcF95LCAxLCAx KTsKLSAgICAgIHhfY2xlYXJfYXJlYShmLCBsZWZ0X3gsIGJvdHRvbV95LCAxLCAxKTsKLQotICAg ICAgZm9yIChpID0gKHdpZHRoID4gMSA/IDEgOiAwKTsgaSA8IHdpZHRoOyArK2kpCisgICAgICBm b3IgKGkgPSAxOyBpIDwgdndpZHRoOyArK2kpCiAgICAgICAgIFhEcmF3TGluZSAoZHB5LCBkcmF3 YWJsZSwgZ2MsCiAJCSAgIGxlZnRfeCArIGksIHRvcF95ICsgKGkgKyAxKSAqIHRvcF9wLAogCQkg ICBsZWZ0X3ggKyBpLCBib3R0b21feSArIDEgLSAoaSArIDEpICogYm90X3ApOwpAQCAtMjg5OSwy NiArMjg5NiwyNSBAQCB4X2RyYXdfcmVsaWVmX3JlY3QgKHN0cnVjdCBmcmFtZSAqZiwKICAgICBn YyA9IGYtPm91dHB1dF9kYXRhLngtPndoaXRlX3JlbGllZi5nYzsKICAgWFNldENsaXBSZWN0YW5n bGVzIChkcHksIGdjLCAwLCAwLCBjbGlwX3JlY3QsIDEsIFVuc29ydGVkKTsKIAotICBpZiAod2lk dGggPiAxKQotICAgIHsKLSAgICAgIC8qIE91dGVybW9zdCB0b3AgbGluZS4gICovCi0gICAgICBp ZiAodG9wX3ApCi0gICAgICAgIFhEcmF3TGluZSAoZHB5LCBkcmF3YWJsZSwgZ2MsCi0JCSAgIGxl ZnRfeCAgKyBsZWZ0X3AsIHRvcF95LAotCQkgICByaWdodF94ICsgIXJpZ2h0X3AsIHRvcF95KTsK KyAgLyogT3V0ZXJtb3N0IHRvcCBsaW5lLiAgKi8KKyAgaWYgKHRvcF9wICYmIGh3aWR0aCA+IDEp CisgICAgWERyYXdMaW5lIChkcHksIGRyYXdhYmxlLCBnYywKKwkgICAgICAgbGVmdF94ICArIGxl ZnRfcCwgdG9wX3ksCisJICAgICAgIHJpZ2h0X3ggKyAhcmlnaHRfcCwgdG9wX3kpOwogCi0gICAg ICAvKiBPdXRlcm1vc3QgbGVmdCBsaW5lLiAgKi8KLSAgICAgIGlmIChsZWZ0X3ApCi0gICAgICAg IFhEcmF3TGluZSAoZHB5LCBkcmF3YWJsZSwgZ2MsIGxlZnRfeCwgdG9wX3kgKyAxLCBsZWZ0X3gs IGJvdHRvbV95KTsKLSAgICB9CisgIC8qIE91dGVybW9zdCBsZWZ0IGxpbmUuICAqLworICBpZiAo bGVmdF9wICYmIHZ3aWR0aCA+IDEpCisgICAgWERyYXdMaW5lIChkcHksIGRyYXdhYmxlLCBnYywg bGVmdF94LCB0b3BfeSArIDEsIGxlZnRfeCwgYm90dG9tX3kpOwogCiAgIC8qIEJvdHRvbS4gICov CiAgIGlmIChib3RfcCkKICAgICB7Ci0gICAgICBYRHJhd0xpbmUgKGRweSwgZHJhd2FibGUsIGdj LAotCQkgbGVmdF94ICsgbGVmdF9wLCBib3R0b21feSwKLQkJIHJpZ2h0X3ggKyAhcmlnaHRfcCwg Ym90dG9tX3kpOwotICAgICAgZm9yIChpID0gMTsgaSA8IHdpZHRoOyArK2kpCisgICAgICBpZiAo aHdpZHRoID49IDEpCisgICAgICAgIFhEcmF3TGluZSAoZHB5LCBkcmF3YWJsZSwgZ2MsCisJCSAg IGxlZnRfeCArIGxlZnRfcCwgYm90dG9tX3ksCisJCSAgIHJpZ2h0X3ggKyAhcmlnaHRfcCwgYm90 dG9tX3kpOworCisgICAgICBmb3IgKGkgPSAxOyBpIDwgaHdpZHRoOyArK2kpCiAgICAgICAgIFhE cmF3TGluZSAoZHB5LCBkcmF3YWJsZSwgZ2MsCiAJCSAgIGxlZnRfeCAgKyBpICogbGVmdF9wLCBi b3R0b21feSAtIGksCiAJCSAgIHJpZ2h0X3ggKyAxIC0gaSAqIHJpZ2h0X3AsIGJvdHRvbV95IC0g aSk7CkBAIC0yOTI3LDkgKzI5MjMsNyBAQCB4X2RyYXdfcmVsaWVmX3JlY3QgKHN0cnVjdCBmcmFt ZSAqZiwKICAgLyogUmlnaHQuICAqLwogICBpZiAocmlnaHRfcCkKICAgICB7Ci0gICAgICB4X2Ns ZWFyX2FyZWEoZiwgcmlnaHRfeCwgdG9wX3ksIDEsIDEpOwotICAgICAgeF9jbGVhcl9hcmVhKGYs IHJpZ2h0X3gsIGJvdHRvbV95LCAxLCAxKTsKLSAgICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aDsg KytpKQorICAgICAgZm9yIChpID0gMDsgaSA8IHZ3aWR0aDsgKytpKQogICAgICAgICBYRHJhd0xp bmUgKGRweSwgZHJhd2FibGUsIGdjLAogCQkgICByaWdodF94IC0gaSwgdG9wX3kgKyAoaSArIDEp ICogdG9wX3AsCiAJCSAgIHJpZ2h0X3ggLSBpLCBib3R0b21feSArIDEgLSAoaSArIDEpICogYm90 X3ApOwpAQCAtMjk1MCw4ICsyOTQ0LDggQEAgeF9kcmF3X3JlbGllZl9yZWN0IChzdHJ1Y3QgZnJh bWUgKmYsCiAKIHN0YXRpYyB2b2lkCiB4X2RyYXdfYm94X3JlY3QgKHN0cnVjdCBnbHlwaF9zdHJp bmcgKnMsCi0JCSBpbnQgbGVmdF94LCBpbnQgdG9wX3ksIGludCByaWdodF94LCBpbnQgYm90dG9t X3ksIGludCB3aWR0aCwKLQkJIGJvb2wgbGVmdF9wLCBib29sIHJpZ2h0X3AsIFhSZWN0YW5nbGUg KmNsaXBfcmVjdCkKKwkJIGludCBsZWZ0X3gsIGludCB0b3BfeSwgaW50IHJpZ2h0X3gsIGludCBi b3R0b21feSwgaW50IGh3aWR0aCwKKwkJIGludCB2d2lkdGgsIGJvb2wgbGVmdF9wLCBib29sIHJp Z2h0X3AsIFhSZWN0YW5nbGUgKmNsaXBfcmVjdCkKIHsKICAgRGlzcGxheSAqZGlzcGxheSA9IEZS QU1FX1hfRElTUExBWSAocy0+Zik7CiAgIFhHQ1ZhbHVlcyB4Z2N2OwpAQCAtMjk2MiwyMSArMjk1 NiwyMSBAQCB4X2RyYXdfYm94X3JlY3QgKHN0cnVjdCBnbHlwaF9zdHJpbmcgKnMsCiAKICAgLyog VG9wLiAgKi8KICAgeF9maWxsX3JlY3RhbmdsZSAocy0+Ziwgcy0+Z2MsCi0JCSAgbGVmdF94LCB0 b3BfeSwgcmlnaHRfeCAtIGxlZnRfeCArIDEsIHdpZHRoKTsKKwkJICBsZWZ0X3gsIHRvcF95LCBy aWdodF94IC0gbGVmdF94ICsgMSwgaHdpZHRoKTsKIAogICAvKiBMZWZ0LiAgKi8KICAgaWYgKGxl ZnRfcCkKICAgICB4X2ZpbGxfcmVjdGFuZ2xlIChzLT5mLCBzLT5nYywKLQkJICAgIGxlZnRfeCwg dG9wX3ksIHdpZHRoLCBib3R0b21feSAtIHRvcF95ICsgMSk7CisJCSAgICBsZWZ0X3gsIHRvcF95 LCB2d2lkdGgsIGJvdHRvbV95IC0gdG9wX3kgKyAxKTsKIAogICAvKiBCb3R0b20uICAqLwogICB4 X2ZpbGxfcmVjdGFuZ2xlIChzLT5mLCBzLT5nYywKLQkJICBsZWZ0X3gsIGJvdHRvbV95IC0gd2lk dGggKyAxLCByaWdodF94IC0gbGVmdF94ICsgMSwgd2lkdGgpOworCQkgIGxlZnRfeCwgYm90dG9t X3kgLSBod2lkdGggKyAxLCByaWdodF94IC0gbGVmdF94ICsgMSwgaHdpZHRoKTsKIAogICAvKiBS aWdodC4gICovCiAgIGlmIChyaWdodF9wKQogICAgIHhfZmlsbF9yZWN0YW5nbGUgKHMtPmYsIHMt PmdjLAotCQkgICAgcmlnaHRfeCAtIHdpZHRoICsgMSwgdG9wX3ksIHdpZHRoLCBib3R0b21feSAt IHRvcF95ICsgMSk7CisJCSAgICByaWdodF94IC0gdndpZHRoICsgMSwgdG9wX3ksIHZ3aWR0aCwg Ym90dG9tX3kgLSB0b3BfeSArIDEpOwogCiAgIFhTZXRGb3JlZ3JvdW5kIChkaXNwbGF5LCBzLT5n YywgeGdjdi5mb3JlZ3JvdW5kKTsKICAgeF9yZXNldF9jbGlwX3JlY3RhbmdsZXMgKHMtPmYsIHMt PmdjKTsKQEAgLTI5ODgsNyArMjk4Miw3IEBAIHhfZHJhd19ib3hfcmVjdCAoc3RydWN0IGdseXBo X3N0cmluZyAqcywKIHN0YXRpYyB2b2lkCiB4X2RyYXdfZ2x5cGhfc3RyaW5nX2JveCAoc3RydWN0 IGdseXBoX3N0cmluZyAqcykKIHsKLSAgaW50IHdpZHRoLCBsZWZ0X3gsIHJpZ2h0X3gsIHRvcF95 LCBib3R0b21feSwgbGFzdF94OworICBpbnQgaHdpZHRoLCB2d2lkdGgsIGxlZnRfeCwgcmlnaHRf eCwgdG9wX3ksIGJvdHRvbV95LCBsYXN0X3g7CiAgIGJvb2wgcmFpc2VkX3AsIGxlZnRfcCwgcmln aHRfcDsKICAgc3RydWN0IGdseXBoICpsYXN0X2dseXBoOwogICBYUmVjdGFuZ2xlIGNsaXBfcmVj dDsKQEAgLTMwMDIsNyArMjk5Niw4IEBAIHhfZHJhd19nbHlwaF9zdHJpbmdfYm94IChzdHJ1Y3Qg Z2x5cGhfc3RyaW5nICpzKQogCQk/IHMtPmZpcnN0X2dseXBoCiAJCTogcy0+Zmlyc3RfZ2x5cGgg KyBzLT5uY2hhcnMgLSAxKTsKIAotICB3aWR0aCA9IGVhYnMgKHMtPmZhY2UtPmJveF9saW5lX3dp ZHRoKTsKKyAgdndpZHRoID0gZWFicyAocy0+ZmFjZS0+Ym94X3ZlcnRpY2FsX2xpbmVfd2lkdGgp OworICBod2lkdGggPSBlYWJzIChzLT5mYWNlLT5ib3hfaG9yaXpvbnRhbF9saW5lX3dpZHRoKTsK ICAgcmFpc2VkX3AgPSBzLT5mYWNlLT5ib3ggPT0gRkFDRV9SQUlTRURfQk9YOwogICBsZWZ0X3gg PSBzLT54OwogICByaWdodF94ID0gKHMtPnJvdy0+ZnVsbF93aWR0aF9wICYmIHMtPmV4dGVuZHNf dG9fZW5kX29mX2xpbmVfcApAQCAtMzAyMywxMyArMzAxOCwxMyBAQCB4X2RyYXdfZ2x5cGhfc3Ry aW5nX2JveCAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKICAgZ2V0X2dseXBoX3N0cmluZ19jbGlw X3JlY3QgKHMsICZjbGlwX3JlY3QpOwogCiAgIGlmIChzLT5mYWNlLT5ib3ggPT0gRkFDRV9TSU1Q TEVfQk9YKQotICAgIHhfZHJhd19ib3hfcmVjdCAocywgbGVmdF94LCB0b3BfeSwgcmlnaHRfeCwg Ym90dG9tX3ksIHdpZHRoLAotCQkgICAgIGxlZnRfcCwgcmlnaHRfcCwgJmNsaXBfcmVjdCk7Cisg ICAgeF9kcmF3X2JveF9yZWN0IChzLCBsZWZ0X3gsIHRvcF95LCByaWdodF94LCBib3R0b21feSwg aHdpZHRoLAorCQkgICAgIHZ3aWR0aCwgbGVmdF9wLCByaWdodF9wLCAmY2xpcF9yZWN0KTsKICAg ZWxzZQogICAgIHsKICAgICAgIHhfc2V0dXBfcmVsaWVmX2NvbG9ycyAocyk7Ci0gICAgICB4X2Ry YXdfcmVsaWVmX3JlY3QgKHMtPmYsIGxlZnRfeCwgdG9wX3ksIHJpZ2h0X3gsIGJvdHRvbV95LAot CQkJICB3aWR0aCwgcmFpc2VkX3AsIHRydWUsIHRydWUsIGxlZnRfcCwgcmlnaHRfcCwKKyAgICAg IHhfZHJhd19yZWxpZWZfcmVjdCAocy0+ZiwgbGVmdF94LCB0b3BfeSwgcmlnaHRfeCwgYm90dG9t X3ksIGh3aWR0aCwKKwkJCSAgdndpZHRoLCByYWlzZWRfcCwgdHJ1ZSwgdHJ1ZSwgbGVmdF9wLCBy aWdodF9wLAogCQkJICAmY2xpcF9yZWN0KTsKICAgICB9CiB9CkBAIC0zMDg5LDcgKzMwODQsNyBA QCB4X2RyYXdfaW1hZ2VfZm9yZWdyb3VuZCAoc3RydWN0IGdseXBoX3N0cmluZyAqcykKICAgaWYg KHMtPmZhY2UtPmJveCAhPSBGQUNFX05PX0JPWAogICAgICAgJiYgcy0+Zmlyc3RfZ2x5cGgtPmxl ZnRfYm94X2xpbmVfcAogICAgICAgJiYgcy0+c2xpY2UueCA9PSAwKQotICAgIHggKz0gZWFicyAo cy0+ZmFjZS0+Ym94X2xpbmVfd2lkdGgpOworICAgIHggKz0gbWF4IChzLT5mYWNlLT5ib3hfdmVy dGljYWxfbGluZV93aWR0aCwgMCk7CiAKICAgLyogSWYgdGhlcmUgaXMgYSBtYXJnaW4gYXJvdW5k IHRoZSBpbWFnZSwgYWRqdXN0IHgtIGFuZCB5LXBvc2l0aW9uCiAgICAgIGJ5IHRoYXQgbWFyZ2lu LiAgKi8KQEAgLTMyMDgsNyArMzIwMyw3IEBAIHhfZHJhd19pbWFnZV9yZWxpZWYgKHN0cnVjdCBn bHlwaF9zdHJpbmcgKnMpCiAgIGlmIChzLT5mYWNlLT5ib3ggIT0gRkFDRV9OT19CT1gKICAgICAg ICYmIHMtPmZpcnN0X2dseXBoLT5sZWZ0X2JveF9saW5lX3AKICAgICAgICYmIHMtPnNsaWNlLngg PT0gMCkKLSAgICB4ICs9IGVhYnMgKHMtPmZhY2UtPmJveF9saW5lX3dpZHRoKTsKKyAgICB4ICs9 IG1heCAocy0+ZmFjZS0+Ym94X3ZlcnRpY2FsX2xpbmVfd2lkdGgsIDApOwogCiAgIC8qIElmIHRo ZXJlIGlzIGEgbWFyZ2luIGFyb3VuZCB0aGUgaW1hZ2UsIGFkanVzdCB4LSBhbmQgeS1wb3NpdGlv bgogICAgICBieSB0aGF0IG1hcmdpbi4gICovCkBAIC0zMjYxLDcgKzMyNTYsNyBAQCB4X2RyYXdf aW1hZ2VfcmVsaWVmIChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzKQogCiAgIHhfc2V0dXBfcmVsaWVm X2NvbG9ycyAocyk7CiAgIGdldF9nbHlwaF9zdHJpbmdfY2xpcF9yZWN0IChzLCAmcik7Ci0gIHhf ZHJhd19yZWxpZWZfcmVjdCAocy0+ZiwgeCwgeSwgeDEsIHkxLCB0aGljaywgcmFpc2VkX3AsCisg IHhfZHJhd19yZWxpZWZfcmVjdCAocy0+ZiwgeCwgeSwgeDEsIHkxLCB0aGljaywgdGhpY2ssIHJh aXNlZF9wLAogCQkgICAgICB0b3BfcCwgYm90X3AsIGxlZnRfcCwgcmlnaHRfcCwgJnIpOwogfQog CkBAIC0zMjgwLDcgKzMyNzUsNyBAQCB4X2RyYXdfaW1hZ2VfZm9yZWdyb3VuZF8xIChzdHJ1Y3Qg Z2x5cGhfc3RyaW5nICpzLCBQaXhtYXAgcGl4bWFwKQogICBpZiAocy0+ZmFjZS0+Ym94ICE9IEZB Q0VfTk9fQk9YCiAgICAgICAmJiBzLT5maXJzdF9nbHlwaC0+bGVmdF9ib3hfbGluZV9wCiAgICAg ICAmJiBzLT5zbGljZS54ID09IDApCi0gICAgeCArPSBlYWJzIChzLT5mYWNlLT5ib3hfbGluZV93 aWR0aCk7CisgICAgeCArPSBtYXggKHMtPmZhY2UtPmJveF92ZXJ0aWNhbF9saW5lX3dpZHRoLCAw KTsKIAogICAvKiBJZiB0aGVyZSBpcyBhIG1hcmdpbiBhcm91bmQgdGhlIGltYWdlLCBhZGp1c3Qg eC0gYW5kIHktcG9zaXRpb24KICAgICAgYnkgdGhhdCBtYXJnaW4uICAqLwpAQCAtMzM4MSw4ICsz Mzc2LDggQEAgeF9kcmF3X2dseXBoX3N0cmluZ19iZ19yZWN0IChzdHJ1Y3QgZ2x5cGhfc3RyaW5n ICpzLCBpbnQgeCwgaW50IHksIGludCB3LCBpbnQgaCkKIHN0YXRpYyB2b2lkCiB4X2RyYXdfaW1h Z2VfZ2x5cGhfc3RyaW5nIChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzKQogewotICBpbnQgYm94X2xp bmVfaHdpZHRoID0gZWFicyAocy0+ZmFjZS0+Ym94X2xpbmVfd2lkdGgpOwotICBpbnQgYm94X2xp bmVfdndpZHRoID0gbWF4IChzLT5mYWNlLT5ib3hfbGluZV93aWR0aCwgMCk7CisgIGludCBib3hf bGluZV9od2lkdGggPSBtYXggKHMtPmZhY2UtPmJveF92ZXJ0aWNhbF9saW5lX3dpZHRoLCAwKTsK KyAgaW50IGJveF9saW5lX3Z3aWR0aCA9IG1heCAocy0+ZmFjZS0+Ym94X2hvcml6b250YWxfbGlu ZV93aWR0aCwgMCk7CiAgIGludCBoZWlnaHQ7CiAjaWZuZGVmIFVTRV9DQUlSTwogICBEaXNwbGF5 ICpkaXNwbGF5ID0gRlJBTUVfWF9ESVNQTEFZIChzLT5mKTsKLS0gCjIuMjAuMQoK --000000000000a7e3cf058fc9e070--