From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23166 invoked by alias); 16 Jun 2017 15:39:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 23072 invoked by uid 89); 16 Jun 2017 15:39:58 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy= X-HELO: mailout1.w1.samsung.com Received: from mailout1.w1.samsung.com (HELO mailout1.w1.samsung.com) (210.118.77.11) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 16 Jun 2017 15:39:45 +0000 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0ORN000G5CU8DY10@mailout1.w1.samsung.com> for gcc-patches@gcc.gnu.org; Fri, 16 Jun 2017 16:39:44 +0100 (BST) Received: from eusmges5.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170616153943eucas1p2b7849f98a0b38201e665229d2111cc79~IpFo3yS7H3090430904eucas1p2Z for ; Fri, 16 Jun 2017 15:39:43 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges5.samsung.com (EUCPMTA) with SMTP id A1.55.25577.FBBF3495; Fri, 16 Jun 2017 16:39:43 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170616153942eucas1p1945271f893265484bbb3991a368bcd92~IpFoCoup70211302113eucas1p1H for ; Fri, 16 Jun 2017 15:39:42 +0000 (GMT) Received: from eusync2.samsung.com ( [203.254.199.212]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id BD.50.20206.EBBF3495; Fri, 16 Jun 2017 16:39:42 +0100 (BST) Received: from [106.109.129.179] by eusync2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0ORN009N6CU5IH00@eusync2.samsung.com> for gcc-patches@gcc.gnu.org; Fri, 16 Jun 2017 16:39:42 +0100 (BST) To: GCC Patches From: Denis Khalikov Subject: [PATCH][PR sanitizer/77631] Support separate debug info in libbacktrace Message-id: <2b505c8c-a836-6079-f744-3e9f8acf9356@partner.samsung.com> Date: Fri, 16 Jun 2017 15:39:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-version: 1.0 Content-type: multipart/mixed; boundary=------------509F80EA4462F616B3CE0CFF X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170616153942eucas1p1945271f893265484bbb3991a368bcd92 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?RGVuaXMgS2hhbGlrb3YbU1JSLVNXIFRvb2xzIExhYhvsgrw=?= =?UTF-8?B?7ISx7KCE7J6QG0VuZ2luZWVy?= X-Global-Sender: =?UTF-8?B?RGVuaXMgS2hhbGlrb3YbU1JSLVNXIFRvb2xzIExhYhtTYW1z?= =?UTF-8?B?dW5nIEVsZWN0cm9uaWNzG0VuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1Nw==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170616153942eucas1p1945271f893265484bbb3991a368bcd92 X-RootMTR: 20170616153942eucas1p1945271f893265484bbb3991a368bcd92 References: X-SW-Source: 2017-06/txt/msg01209.txt.bz2 This is a multi-part message in MIME format. --------------509F80EA4462F616B3CE0CFF Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: 7bit Content-length: 141 Hello everyone, This is a patch for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77631 Can some one please review attached patch. Thanks. --------------509F80EA4462F616B3CE0CFF Content-Type: text/x-patch; name="PR-sanitizer-77631.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="PR-sanitizer-77631.patch" Content-length: 53941 RnJvbSBhZTc0Y2YzZDYzMmIwNmE5MWE5ODZlMzJlM2E2YzE2MjIzNzY3YjI0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogRGVuaXMgS2hhbGlr b3YgPGQua2hhbGlrb3ZAcGFydG5lci5zYW1zdW5nLmNvbT4NCkRhdGU6IEZy aSwgMTYgSnVuIDIwMTcgMTI6MTM6MTMgKzAzMDANClN1YmplY3Q6IFtQQVRD SF0gUFIgc2FuaXRpemVyLzc3NjMxDQoNCgkqIE1ha2VmaWxlLmluOiBSZWdl bmVyYXRlZC4NCgkqIGNvbmZpZ3VyZS5hYzogQWRkIHNlYXJjaGluZyBmb3Ig bGltaXRzLmgsIHN5cy9wYXJhbS5oDQoJKiBjb25maWcuaC5pbjogUmVnZW5l cmF0ZWQuDQoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLg0KCSogZWxmLmMg KGVudW0gdHlwZV9vZl9maWxlKTogTmV3IGVudW0uDQoJKGVudW0gdHlwZV9v Zl9lbGYpOiBOZXcgZW51bS4NCgkoZW51bSBkZWJ1Z19wYXRoKTogTmV3IGVu dW0uDQoJKGdldGwzMik6IE5ldyBmdW5jdGlvbi4NCgkoZ251X2RlYnVnbGlu a19jcmMzMik6IE5ldyBmdW5jdGlvbi4gR2VuZXJhdGUgY3JjMzIgc3VtLg0K CShnZXRfY3JjMzIpOiBOZXcgZnVuY3Rpb24uDQoJKHBhdGhsZW4pOiBOZXcg ZnVuY3Rpb24uDQoJKGNoZWNrX3N1bSk6IE5ldyBmdW5jdGlvbi4gVmVyaWZ5 IHN1bS4NCgkocHJvY2Vzc19lbGZfaGVhZGVyKTogTmV3IGZ1bmN0aW9uLiBW ZXJpZnkgZWxmIGhlYWRlci4NCgkoZWxmX2dldF9zZWN0aW9uX2J5X25hbWUp OiBOZXcgZnVuY3Rpb24uIEdldCBzZWN0aW9uIGJ5IG5hbWUuDQoJKGJhY2t0 cmFjZV9yZWFkbGluayk6IE5ldyBmdW5jdGlvbi4gR2V0IHR5cGUgb2YgZmls ZSBmcm9tIGZpbGVuYW1lLg0KCShyZXNvbHZlX3JlYWxuYW1lKTogTmV3IGZ1 bmN0aW9uLiBSZXNvbHZlIHJlYWwgbmFtZSBpZiBmaWxlIGlzIGxpbmsuDQoJ KGJhY2t0cmFjZV9yZXNvbHZlX3JlYWxuYW1lKTogTmV3IGZ1bmN0aW9uLiBS ZXNvbHZlIHJlYWwgbmFtZSBmb3IgYW55DQoJZmlsZSB0eXBlLg0KCShzZWFy Y2hfZm9yX2RlYnVnZmlsZSk6IE5ldyBmdW5jdGlvbi4gU2VhcmNoIGZvciBk ZWJ1ZyBmaWxlIGluIGtub3duDQoJcGF0aHMuDQoJKG9wZW5fZGVidWdmaWxl X2J5X2dudWxpbmspOiBOZXcgZnVuY3Rpb24uIE9wZW4gZGVidWcgZmlsZSB3 aXRoDQoJZ251bGluay4NCgkoaGV4KTogTmV3IGZ1bmN0aW9uLiBDb252ZXJ0 IHRvIGhleC4NCgkoZ2V0X2J1aWxkX2lkX25hbWUpOiBOZXcgZnVuY3Rpb24u IEdlbmVyYXRlIGJ1aWxkLWlkIG5hbWUuDQoJKG9wZW5fZGVidWdmaWxlX2J5 X2J1aWxkX2lkKTogTmV3IGZ1bmN0aW9uLiBPcGVuIGRlYnVnIGZpbGUgd2l0 aA0KCWJ1aWxkLWlkLg0KCShiYWNrdHJhY2Vfb3Blbl9kZWJ1Z2ZpbGUpOiBO ZXcgZnVuY3Rpb24uIE9wZW4gZGVidWcgZmlsZS4NCgkoZWxmX2FkZCk6IE1v dmUgY29kZSB3aGljaCByZWFkcyBlbGYgaGVhZGVyIHRvIGVsZl9oZWFkZXJf aXNfdmFsaWQuDQoJKHBoZHJfY2FsbGJhY2spOiBDYWxsIGJhY2t0cmFjZV9v cGVuX2RlYnVnZmlsZSBmdW5jdGlvbiBmb3Igc2hhcmVkDQoJbGlicmFyeS4N CgkqIGZpbGVsaW5lLmMgKGZpbGVsaW5lX2luaXRpYWxpemUpOiBDYWxsIGJh Y2t0cmFjZV9vcGVuX2RlYnVnZmlsZSBmb3INCglleGVjdXRhYmxlLg0KCSog aW50ZXJuYWwuaDogVXBkYXRlZC4NCi0tLQ0KIGxpYmJhY2t0cmFjZS9DaGFu Z2VMb2cgICAgfCAgMzcgKysNCiBsaWJiYWNrdHJhY2UvTWFrZWZpbGUuaW4g IHwgICAyICstDQogbGliYmFja3RyYWNlL2NvbmZpZy5oLmluICB8ICAgNiAr DQogbGliYmFja3RyYWNlL2NvbmZpZ3VyZSAgICB8ICAyNiArKw0KIGxpYmJh Y2t0cmFjZS9jb25maWd1cmUuYWMgfCAgIDQgKw0KIGxpYmJhY2t0cmFjZS9l bGYuYyAgICAgICAgfCA5NDkgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLQ0KIGxpYmJhY2t0cmFjZS9maWxlbGluZS5j ICAgfCAgMTMgKy0NCiBsaWJiYWNrdHJhY2UvaW50ZXJuYWwuaCAgIHwgICA4 ICsNCiA4IGZpbGVzIGNoYW5nZWQsIDk1OCBpbnNlcnRpb25zKCspLCA4NyBk ZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2xpYmJhY2t0cmFjZS9DaGFu Z2VMb2cgYi9saWJiYWNrdHJhY2UvQ2hhbmdlTG9nDQppbmRleCAwOTZjZWI2 Li40YmQ5N2YzIDEwMDY0NA0KLS0tIGEvbGliYmFja3RyYWNlL0NoYW5nZUxv Zw0KKysrIGIvbGliYmFja3RyYWNlL0NoYW5nZUxvZw0KQEAgLTEsMyArMSw0 MCBAQA0KKzIwMTctMDYtMTYgIERlbmlzIEtoYWxpa292ICA8ZC5raGFsaWtv dkBwYXJ0bmVyLnNhbXN1bmcuY29tPg0KKw0KKwlQUiBzYW5pdGl6ZXIvNzc2 MzENCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZWQuDQorCSogY29uZmln dXJlLmFjOiBBZGQgc2VhcmNoaW5nIGZvciBsaW1pdHMuaCwgc3lzL3BhcmFt LmgNCisJKiBjb25maWcuaC5pbjogUmVnZW5lcmF0ZWQuDQorCSogY29uZmln dXJlOiBSZWdlbmVyYXRlZC4NCisJKiBlbGYuYyAoZW51bSB0eXBlX29mX2Zp bGUpOiBOZXcgZW51bS4NCisJKGVudW0gdHlwZV9vZl9lbGYpOiBOZXcgZW51 bS4NCisJKGVudW0gZGVidWdfcGF0aCk6IE5ldyBlbnVtLg0KKwkoZ2V0bDMy KTogTmV3IGZ1bmN0aW9uLg0KKwkoZ251X2RlYnVnbGlua19jcmMzMik6IE5l dyBmdW5jdGlvbi4gR2VuZXJhdGUgY3JjMzIgc3VtLg0KKwkoZ2V0X2NyYzMy KTogTmV3IGZ1bmN0aW9uLg0KKwkocGF0aGxlbik6IE5ldyBmdW5jdGlvbi4N CisJKGNoZWNrX3N1bSk6IE5ldyBmdW5jdGlvbi4gVmVyaWZ5IHN1bS4NCisJ KHByb2Nlc3NfZWxmX2hlYWRlcik6IE5ldyBmdW5jdGlvbi4gVmVyaWZ5IGVs ZiBoZWFkZXIuDQorCShlbGZfZ2V0X3NlY3Rpb25fYnlfbmFtZSk6IE5ldyBm dW5jdGlvbi4gR2V0IHNlY3Rpb24gYnkgbmFtZS4NCisJKGJhY2t0cmFjZV9y ZWFkbGluayk6IE5ldyBmdW5jdGlvbi4gR2V0IHR5cGUgb2YgZmlsZSBmcm9t IGZpbGVuYW1lLg0KKwkocmVzb2x2ZV9yZWFsbmFtZSk6IE5ldyBmdW5jdGlv bi4gUmVzb2x2ZSByZWFsIG5hbWUgaWYgZmlsZSBpcyBsaW5rLg0KKwkoYmFj a3RyYWNlX3Jlc29sdmVfcmVhbG5hbWUpOiBOZXcgZnVuY3Rpb24uIFJlc29s dmUgcmVhbCBuYW1lIGZvciBhbnkNCisJZmlsZSB0eXBlLg0KKwkoc2VhcmNo X2Zvcl9kZWJ1Z2ZpbGUpOiBOZXcgZnVuY3Rpb24uIFNlYXJjaCBmb3IgZGVi dWcgZmlsZSBpbiBrbm93bg0KKwlwYXRocy4NCisJKG9wZW5fZGVidWdmaWxl X2J5X2dudWxpbmspOiBOZXcgZnVuY3Rpb24uIE9wZW4gZGVidWcgZmlsZSB3 aXRoDQorCWdudWxpbmsuDQorCShoZXgpOiBOZXcgZnVuY3Rpb24uIENvbnZl cnQgdG8gaGV4Lg0KKwkoZ2V0X2J1aWxkX2lkX25hbWUpOiBOZXcgZnVuY3Rp b24uIEdlbmVyYXRlIGJ1aWxkLWlkIG5hbWUuDQorCShvcGVuX2RlYnVnZmls ZV9ieV9idWlsZF9pZCk6IE5ldyBmdW5jdGlvbi4gT3BlbiBkZWJ1ZyBmaWxl IHdpdGgNCisJYnVpbGQtaWQuDQorCShiYWNrdHJhY2Vfb3Blbl9kZWJ1Z2Zp bGUpOiBOZXcgZnVuY3Rpb24uIE9wZW4gZGVidWcgZmlsZS4NCisJKGVsZl9h ZGQpOiBNb3ZlIGNvZGUgd2hpY2ggcmVhZHMgZWxmIGhlYWRlciB0byBlbGZf aGVhZGVyX2lzX3ZhbGlkLg0KKwkocGhkcl9jYWxsYmFjayk6IENhbGwgYmFj a3RyYWNlX29wZW5fZGVidWdmaWxlIGZ1bmN0aW9uIGZvciBzaGFyZWQNCisJ bGlicmFyeS4NCisJKiBmaWxlbGluZS5jIChmaWxlbGluZV9pbml0aWFsaXpl KTogQ2FsbCBiYWNrdHJhY2Vfb3Blbl9kZWJ1Z2ZpbGUgZm9yDQorCWV4ZWN1 dGFibGUuDQorCSogaW50ZXJuYWwuaDogVXBkYXRlZC4NCisNCiAyMDE3LTA1 LTAyICBSZWxlYXNlIE1hbmFnZXINCiANCiAJKiBHQ0MgNy4xLjAgcmVsZWFz ZWQuDQpkaWZmIC0tZ2l0IGEvbGliYmFja3RyYWNlL01ha2VmaWxlLmluIGIv bGliYmFja3RyYWNlL01ha2VmaWxlLmluDQppbmRleCBkZTc0YjVkLi5lNjA0 YjZjIDEwMDY0NA0KLS0tIGEvbGliYmFja3RyYWNlL01ha2VmaWxlLmluDQor KysgYi9saWJiYWNrdHJhY2UvTWFrZWZpbGUuaW4NCkBAIC0xNiw3ICsxNiw3 IEBADQogQFNFVF9NQUtFQA0KIA0KICMgTWFrZWZpbGUuYW0gLS0gQmFja3Ry YWNlIE1ha2VmaWxlLg0KLSMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQorIyBDb3B5cmlnaHQgKEMp IDIwMTItMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCiAN CiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dA0KICMgbW9kaWZpY2F0aW9uLCBh cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zIGFyZQ0KZGlmZiAtLWdpdCBhL2xpYmJhY2t0cmFjZS9jb25maWcu aC5pbiBiL2xpYmJhY2t0cmFjZS9jb25maWcuaC5pbg0KaW5kZXggODdjYjgw NS4uZWRiZDlhZiAxMDA2NDQNCi0tLSBhL2xpYmJhY2t0cmFjZS9jb25maWcu aC5pbg0KKysrIGIvbGliYmFja3RyYWNlL2NvbmZpZy5oLmluDQpAQCAtMjgs NiArMjgsOSBAQA0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8 aW50dHlwZXMuaD4gaGVhZGVyIGZpbGUuICovDQogI3VuZGVmIEhBVkVfSU5U VFlQRVNfSA0KIA0KKy8qIERlZmluZSAxIGlmIDxsaW1pdHMuaD4gaXMgYXZh aWxhYmxlLiAqLw0KKyN1bmRlZiBIQVZFX0xJTUlUU19IDQorDQogLyogRGVm aW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW5rLmg+IGhlYWRlciBmaWxl LiAqLw0KICN1bmRlZiBIQVZFX0xJTktfSA0KIA0KQEAgLTUyLDYgKzU1LDkg QEANCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9tbWFu Lmg+IGhlYWRlciBmaWxlLiAqLw0KICN1bmRlZiBIQVZFX1NZU19NTUFOX0gN CiANCisvKiBEZWZpbmUgMSBpZiA8c3lzL3BhcmFtLmg+IGlzIGF2YWlsYWJs ZS4gKi8NCisjdW5kZWYgSEFWRV9TWVNfUEFSQU1fSA0KKw0KIC8qIERlZmlu ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZp bGUuICovDQogI3VuZGVmIEhBVkVfU1lTX1NUQVRfSA0KIA0KZGlmZiAtLWdp dCBhL2xpYmJhY2t0cmFjZS9jb25maWd1cmUgYi9saWJiYWNrdHJhY2UvY29u ZmlndXJlDQppbmRleCBlZTkwYmM2Li5lZGQ1MGIwIDEwMDc1NQ0KLS0tIGEv bGliYmFja3RyYWNlL2NvbmZpZ3VyZQ0KKysrIGIvbGliYmFja3RyYWNlL2Nv bmZpZ3VyZQ0KQEAgLTEyMzUwLDYgKzEyMzUwLDMyIEBAIGlmIHRlc3QgIiRB TExPQ19GSUxFIiA9ICJhbGxvYy5sbyI7IHRoZW4NCiBmaQ0KIA0KIA0KK2Zv ciBhY19oZWFkZXIgaW4gbGltaXRzLmgNCitkbyA6DQorICBhY19mbl9jX2No ZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAibGltaXRzLmgiICJhY19j dl9oZWFkZXJfbGltaXRzX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCINCitp ZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9saW1pdHNfaCIgPSB4IiJ5ZXM7IHRo ZW4gOg0KKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRg0KKyNkZWZpbmUg SEFWRV9MSU1JVFNfSCAxDQorX0FDRU9GDQorDQorZmkNCisNCitkb25lDQor DQorDQorZm9yIGFjX2hlYWRlciBpbiBzeXMvcGFyYW0uaA0KK2RvIDoNCisg IGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJzeXMv cGFyYW0uaCIgImFjX2N2X2hlYWRlcl9zeXNfcGFyYW1faCIgIiRhY19pbmNs dWRlc19kZWZhdWx0Ig0KK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3N5c19w YXJhbV9oIiA9IHgiInllczsgdGhlbiA6DQorICBjYXQgPj5jb25mZGVmcy5o IDw8X0FDRU9GDQorI2RlZmluZSBIQVZFX1NZU19QQVJBTV9IIDENCitfQUNF T0YNCisNCitmaQ0KKw0KK2RvbmUNCisNCisNCiAjIENoZWNrIGZvciBkbF9p dGVyYXRlX3BoZHIuDQogZm9yIGFjX2hlYWRlciBpbiBsaW5rLmgNCiBkbyA6 DQpkaWZmIC0tZ2l0IGEvbGliYmFja3RyYWNlL2NvbmZpZ3VyZS5hYyBiL2xp YmJhY2t0cmFjZS9jb25maWd1cmUuYWMNCmluZGV4IGY5Y2FkMjEuLjAxYWMy YTEgMTAwNjQ0DQotLS0gYS9saWJiYWNrdHJhY2UvY29uZmlndXJlLmFjDQor KysgYi9saWJiYWNrdHJhY2UvY29uZmlndXJlLmFjDQpAQCAtMzAxLDYgKzMw MSwxMCBAQCBpZiB0ZXN0ICIkQUxMT0NfRklMRSIgPSAiYWxsb2MubG8iOyB0 aGVuDQogZmkNCiBBQ19TVUJTVChCQUNLVFJBQ0VfVVNFU19NQUxMT0MpDQog DQorQUNfQ0hFQ0tfSEVBREVSUyhsaW1pdHMuaCkNCisNCitBQ19DSEVDS19I RUFERVJTKHN5cy9wYXJhbS5oKQ0KKw0KICMgQ2hlY2sgZm9yIGRsX2l0ZXJh dGVfcGhkci4NCiBBQ19DSEVDS19IRUFERVJTKGxpbmsuaCkNCiBpZiB0ZXN0 ICIkYWNfY3ZfaGVhZGVyX2xpbmtfaCIgPSAibm8iOyB0aGVuDQpkaWZmIC0t Z2l0IGEvbGliYmFja3RyYWNlL2VsZi5jIGIvbGliYmFja3RyYWNlL2VsZi5j DQppbmRleCA4OWVkNDJiLi4zMmY2ODcxIDEwMDY0NA0KLS0tIGEvbGliYmFj a3RyYWNlL2VsZi5jDQorKysgYi9saWJiYWNrdHJhY2UvZWxmLmMNCkBAIC0z NSw2ICszNSw5IEBAIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAgKi8N CiAjaW5jbHVkZSA8c3RkbGliLmg+DQogI2luY2x1ZGUgPHN0cmluZy5oPg0K ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCisjaW5jbHVkZSA8c3lzL3N0YXQu aD4NCisjaW5jbHVkZSA8dW5pc3RkLmg+DQorI2luY2x1ZGUgPGVycm5vLmg+ DQogDQogI2lmZGVmIEhBVkVfRExfSVRFUkFURV9QSERSDQogI2luY2x1ZGUg PGxpbmsuaD4NCkBAIC00Miw2ICs0NSwzMiBAQCBQT1NTSUJJTElUWSBPRiBT VUNIIERBTUFHRS4gICovDQogDQogI2luY2x1ZGUgImJhY2t0cmFjZS5oIg0K ICNpbmNsdWRlICJpbnRlcm5hbC5oIg0KKyNpbmNsdWRlICJmaWxlbmFtZXMu aCINCisNCisvKiBUaGUgZm9sbG93aW5nIGlzIGZyb20gcGF0aG1heC5oLiAg Ki8NCisvKiBOb24tUE9TSVggQlNEIHN5c3RlbXMgbWlnaHQgaGF2ZSBnY2Mn cyBsaW1pdHMuaCwgd2hpY2ggZG9lc24ndCBkZWZpbmUNCisgICBQQVRIX01B WCBidXQgbWlnaHQgY2F1c2UgcmVkZWZpbml0aW9uIHdhcm5pbmdzIHdoZW4g c3lzL3BhcmFtLmggaXMNCisgICBsYXRlciBpbmNsdWRlZCAoYXMgb24gTU9S RS9CU0QgNC4zKS4gICovDQorI2lmIGRlZmluZWQgX1BPU0lYX1ZFUlNJT04g fHwgKGRlZmluZWQgSEFWRV9MSU1JVFNfSCAmJiAhZGVmaW5lZCBfX0dOVUNf XykNCisjIGluY2x1ZGUgPGxpbWl0cy5oPg0KKyNlbmRpZg0KKw0KKyNpZm5k ZWYgX1BPU0lYX1BBVEhfTUFYDQorIyBkZWZpbmUgX1BPU0lYX1BBVEhfTUFY IDI1NQ0KKyNlbmRpZg0KKw0KKy8qIERvbid0IGluY2x1ZGUgc3lzL3BhcmFt LmggaWYgaXQgYWxyZWFkeSBoYXMgYmVlbi4gICovDQorI2lmIGRlZmluZWQg SEFWRV9TWVNfUEFSQU1fSCAmJiAhZGVmaW5lZCBQQVRIX01BWCAmJiAhZGVm aW5lZCBNQVhQQVRITEVODQorIyBpbmNsdWRlIDxzeXMvcGFyYW0uaD4NCisj ZW5kaWYNCisNCisjaWYgIWRlZmluZWQgUEFUSF9NQVggJiYgZGVmaW5lZCBN QVhQQVRITEVODQorIyBkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTg0KKyNl bmRpZg0KKw0KKyNpZm5kZWYgUEFUSF9NQVgNCisjIGRlZmluZSBQQVRIX01B WCBfUE9TSVhfUEFUSF9NQVgNCisjZW5kaWYNCiANCiAjaWZuZGVmIEhBVkVf RExfSVRFUkFURV9QSERSDQogDQpAQCAtMjgzLDYgKzMxMiw4MjEgQEAgc3Ry dWN0IGVsZl9zeW1pbmZvX2RhdGENCiAgIHNpemVfdCBjb3VudDsNCiB9Ow0K IA0KKy8qIEluZm9ybWF0aW9uIHRvIHJlYWQgRUxGIG5vdGUgc2VjdGlvbi4g ICovDQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICB1bnNpZ25lZCBjaGFy IG5hbWVzels0XTsNCisgIHVuc2lnbmVkIGNoYXIgZGVzY3N6WzRdOw0KKyAg dW5zaWduZWQgY2hhciB0eXBlWzRdOw0KKyAgdW5zaWduZWQgY2hhciBuYW1l WzFdOw0KK30gRWxmX0V4dGVybmFsX05vdGU7DQorDQorLyogSW5mb3JtYXRp b24gYWJvdXQgdHlwZSBvZiB0aGUgZmlsZS4gICovDQorDQorZW51bSB0eXBl X29mX2ZpbGUNCit7DQorICBMSU5LID0gMSwNCisgIFJFR1VMQVIgPSAyDQor fTsNCisNCisvKiBJbmZvcm1hdGlvbiBhYm91dCBkZWJ1ZyBwYXRocy4gICov DQorDQorZW51bSBkZWJ1Z19wYXRoDQorew0KKyAgQ1VSUkVOVCwNCisgIENV UlJFTlRfREVCVUcsDQorICBVU1JfTElCX0RFQlVHLA0KKyAgVVNSX0xJQl9E RUJVR19QQVRIX1RPX0VYRSwNCisgIERFQlVHX1BBVEhfTUFYDQorfTsNCisN CisvKiBUeXBlIG9mIHRoZSBFTEYgZmlsZS4gICovDQorDQorZW51bSB0eXBl X29mX2VsZg0KK3sNCisgIERZTiA9IC0xLA0KKyAgSU5WQUxJRCA9IDAsDQor ICBFWEVDID0gMQ0KK307DQorDQorLyogUGF0aHMgdG8gZGVidWcgZmlsZS4g ICovDQorDQorc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IGRlYnVnX2ZpbGVf cGF0aFtERUJVR19QQVRIX01BWF0NCisgID0geyIiLCAiLmRlYnVnLyIsICIv dXNyL2xpYi9kZWJ1Zy8iLCAiL3Vzci9saWIvZGVidWcifTsNCisNCisvKiBD YXN0IGZyb20gdm9pZCBwb2ludGVyIHRvIHVpbnQzMl90LiAgKi8NCisNCitz dGF0aWMgdWludDMyX3QNCitnZXRsMzIgKHZvaWQgKnApDQorew0KKyAgY2hh ciAqYWRkciA9IChjaGFyICopIHA7DQorICB1aW50MzJfdCB2ID0gMDsNCisg IHYgPSAqKCh1aW50MzJfdCAqKSBhZGRyKTsNCisgIHJldHVybiB2Ow0KK30N CisNCisvKiBGdW5jdGlvbiB0aGF0IHByb2R1Y2UgYSBjcmMzMiB2YWx1ZSBm b3IgaW5wdXQgYnVmZmVyLiAgKi8NCisNCitzdGF0aWMgdW5zaWduZWQgbG9u Zw0KK2dudV9kZWJ1Z2xpbmtfY3JjMzIgKHVuc2lnbmVkIGxvbmcgY3JjLCBj b25zdCB1bnNpZ25lZCBjaGFyICpidWYsIHNpemVfdCBsZW4pDQorew0KKyAg c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgY3JjMzJfdGFibGVbMjU2XQ0K KyAgICA9IHsweDAwMDAwMDAwLCAweDc3MDczMDk2LCAweGVlMGU2MTJjLCAw eDk5MDk1MWJhLCAweDA3NmRjNDE5LCAweDcwNmFmNDhmLA0KKyAgICAgICAw eGU5NjNhNTM1LCAweDllNjQ5NWEzLCAweDBlZGI4ODMyLCAweDc5ZGNiOGE0 LCAweGUwZDVlOTFlLCAweDk3ZDJkOTg4LA0KKyAgICAgICAweDA5YjY0YzJi LCAweDdlYjE3Y2JkLCAweGU3YjgyZDA3LCAweDkwYmYxZDkxLCAweDFkYjcx MDY0LCAweDZhYjAyMGYyLA0KKyAgICAgICAweGYzYjk3MTQ4LCAweDg0YmU0 MWRlLCAweDFhZGFkNDdkLCAweDZkZGRlNGViLCAweGY0ZDRiNTUxLCAweDgz ZDM4NWM3LA0KKyAgICAgICAweDEzNmM5ODU2LCAweDY0NmJhOGMwLCAweGZk NjJmOTdhLCAweDhhNjVjOWVjLCAweDE0MDE1YzRmLCAweDYzMDY2Y2Q5LA0K KyAgICAgICAweGZhMGYzZDYzLCAweDhkMDgwZGY1LCAweDNiNmUyMGM4LCAw eDRjNjkxMDVlLCAweGQ1NjA0MWU0LCAweGEyNjc3MTcyLA0KKyAgICAgICAw eDNjMDNlNGQxLCAweDRiMDRkNDQ3LCAweGQyMGQ4NWZkLCAweGE1MGFiNTZi LCAweDM1YjVhOGZhLCAweDQyYjI5ODZjLA0KKyAgICAgICAweGRiYmJjOWQ2 LCAweGFjYmNmOTQwLCAweDMyZDg2Y2UzLCAweDQ1ZGY1Yzc1LCAweGRjZDYw ZGNmLCAweGFiZDEzZDU5LA0KKyAgICAgICAweDI2ZDkzMGFjLCAweDUxZGUw MDNhLCAweGM4ZDc1MTgwLCAweGJmZDA2MTE2LCAweDIxYjRmNGI1LCAweDU2 YjNjNDIzLA0KKyAgICAgICAweGNmYmE5NTk5LCAweGI4YmRhNTBmLCAweDI4 MDJiODllLCAweDVmMDU4ODA4LCAweGM2MGNkOWIyLCAweGIxMGJlOTI0LA0K KyAgICAgICAweDJmNmY3Yzg3LCAweDU4Njg0YzExLCAweGMxNjExZGFiLCAw eGI2NjYyZDNkLCAweDc2ZGM0MTkwLCAweDAxZGI3MTA2LA0KKyAgICAgICAw eDk4ZDIyMGJjLCAweGVmZDUxMDJhLCAweDcxYjE4NTg5LCAweDA2YjZiNTFm LCAweDlmYmZlNGE1LCAweGU4YjhkNDMzLA0KKyAgICAgICAweDc4MDdjOWEy LCAweDBmMDBmOTM0LCAweDk2MDlhODhlLCAweGUxMGU5ODE4LCAweDdmNmEw ZGJiLCAweDA4NmQzZDJkLA0KKyAgICAgICAweDkxNjQ2Yzk3LCAweGU2NjM1 YzAxLCAweDZiNmI1MWY0LCAweDFjNmM2MTYyLCAweDg1NjUzMGQ4LCAweGYy NjIwMDRlLA0KKyAgICAgICAweDZjMDY5NWVkLCAweDFiMDFhNTdiLCAweDgy MDhmNGMxLCAweGY1MGZjNDU3LCAweDY1YjBkOWM2LCAweDEyYjdlOTUwLA0K KyAgICAgICAweDhiYmViOGVhLCAweGZjYjk4ODdjLCAweDYyZGQxZGRmLCAw eDE1ZGEyZDQ5LCAweDhjZDM3Y2YzLCAweGZiZDQ0YzY1LA0KKyAgICAgICAw eDRkYjI2MTU4LCAweDNhYjU1MWNlLCAweGEzYmMwMDc0LCAweGQ0YmIzMGUy LCAweDRhZGZhNTQxLCAweDNkZDg5NWQ3LA0KKyAgICAgICAweGE0ZDFjNDZk LCAweGQzZDZmNGZiLCAweDQzNjllOTZhLCAweDM0NmVkOWZjLCAweGFkNjc4 ODQ2LCAweGRhNjBiOGQwLA0KKyAgICAgICAweDQ0MDQyZDczLCAweDMzMDMx ZGU1LCAweGFhMGE0YzVmLCAweGRkMGQ3Y2M5LCAweDUwMDU3MTNjLCAweDI3 MDI0MWFhLA0KKyAgICAgICAweGJlMGIxMDEwLCAweGM5MGMyMDg2LCAweDU3 NjhiNTI1LCAweDIwNmY4NWIzLCAweGI5NjZkNDA5LCAweGNlNjFlNDlmLA0K KyAgICAgICAweDVlZGVmOTBlLCAweDI5ZDljOTk4LCAweGIwZDA5ODIyLCAw eGM3ZDdhOGI0LCAweDU5YjMzZDE3LCAweDJlYjQwZDgxLA0KKyAgICAgICAw eGI3YmQ1YzNiLCAweGMwYmE2Y2FkLCAweGVkYjg4MzIwLCAweDlhYmZiM2I2 LCAweDAzYjZlMjBjLCAweDc0YjFkMjlhLA0KKyAgICAgICAweGVhZDU0NzM5 LCAweDlkZDI3N2FmLCAweDA0ZGIyNjE1LCAweDczZGMxNjgzLCAweGUzNjMw YjEyLCAweDk0NjQzYjg0LA0KKyAgICAgICAweDBkNmQ2YTNlLCAweDdhNmE1 YWE4LCAweGU0MGVjZjBiLCAweDkzMDlmZjlkLCAweDBhMDBhZTI3LCAweDdk MDc5ZWIxLA0KKyAgICAgICAweGYwMGY5MzQ0LCAweDg3MDhhM2QyLCAweDFl MDFmMjY4LCAweDY5MDZjMmZlLCAweGY3NjI1NzVkLCAweDgwNjU2N2NiLA0K KyAgICAgICAweDE5NmMzNjcxLCAweDZlNmIwNmU3LCAweGZlZDQxYjc2LCAw eDg5ZDMyYmUwLCAweDEwZGE3YTVhLCAweDY3ZGQ0YWNjLA0KKyAgICAgICAw eGY5YjlkZjZmLCAweDhlYmVlZmY5LCAweDE3YjdiZTQzLCAweDYwYjA4ZWQ1 LCAweGQ2ZDZhM2U4LCAweGExZDE5MzdlLA0KKyAgICAgICAweDM4ZDhjMmM0 LCAweDRmZGZmMjUyLCAweGQxYmI2N2YxLCAweGE2YmM1NzY3LCAweDNmYjUw NmRkLCAweDQ4YjIzNjRiLA0KKyAgICAgICAweGQ4MGQyYmRhLCAweGFmMGEx YjRjLCAweDM2MDM0YWY2LCAweDQxMDQ3YTYwLCAweGRmNjBlZmMzLCAweGE4 NjdkZjU1LA0KKyAgICAgICAweDMxNmU4ZWVmLCAweDQ2NjliZTc5LCAweGNi NjFiMzhjLCAweGJjNjY4MzFhLCAweDI1NmZkMmEwLCAweDUyNjhlMjM2LA0K KyAgICAgICAweGNjMGM3Nzk1LCAweGJiMGI0NzAzLCAweDIyMDIxNmI5LCAw eDU1MDUyNjJmLCAweGM1YmEzYmJlLCAweGIyYmQwYjI4LA0KKyAgICAgICAw eDJiYjQ1YTkyLCAweDVjYjM2YTA0LCAweGMyZDdmZmE3LCAweGI1ZDBjZjMx LCAweDJjZDk5ZThiLCAweDViZGVhZTFkLA0KKyAgICAgICAweDliNjRjMmIw LCAweGVjNjNmMjI2LCAweDc1NmFhMzljLCAweDAyNmQ5MzBhLCAweDljMDkw NmE5LCAweGViMGUzNjNmLA0KKyAgICAgICAweDcyMDc2Nzg1LCAweDA1MDA1 NzEzLCAweDk1YmY0YTgyLCAweGUyYjg3YTE0LCAweDdiYjEyYmFlLCAweDBj YjYxYjM4LA0KKyAgICAgICAweDkyZDI4ZTliLCAweGU1ZDViZTBkLCAweDdj ZGNlZmI3LCAweDBiZGJkZjIxLCAweDg2ZDNkMmQ0LCAweGYxZDRlMjQyLA0K KyAgICAgICAweDY4ZGRiM2Y4LCAweDFmZGE4MzZlLCAweDgxYmUxNmNkLCAw eGY2YjkyNjViLCAweDZmYjA3N2UxLCAweDE4Yjc0Nzc3LA0KKyAgICAgICAw eDg4MDg1YWU2LCAweGZmMGY2YTcwLCAweDY2MDYzYmNhLCAweDExMDEwYjVj LCAweDhmNjU5ZWZmLCAweGY4NjJhZTY5LA0KKyAgICAgICAweDYxNmJmZmQz LCAweDE2NmNjZjQ1LCAweGEwMGFlMjc4LCAweGQ3MGRkMmVlLCAweDRlMDQ4 MzU0LCAweDM5MDNiM2MyLA0KKyAgICAgICAweGE3NjcyNjYxLCAweGQwNjAx NmY3LCAweDQ5Njk0NzRkLCAweDNlNmU3N2RiLCAweGFlZDE2YTRhLCAweGQ5 ZDY1YWRjLA0KKyAgICAgICAweDQwZGYwYjY2LCAweDM3ZDgzYmYwLCAweGE5 YmNhZTUzLCAweGRlYmI5ZWM1LCAweDQ3YjJjZjdmLCAweDMwYjVmZmU5LA0K KyAgICAgICAweGJkYmRmMjFjLCAweGNhYmFjMjhhLCAweDUzYjM5MzMwLCAw eDI0YjRhM2E2LCAweGJhZDAzNjA1LCAweGNkZDcwNjkzLA0KKyAgICAgICAw eDU0ZGU1NzI5LCAweDIzZDk2N2JmLCAweGIzNjY3YTJlLCAweGM0NjE0YWI4 LCAweDVkNjgxYjAyLCAweDJhNmYyYjk0LA0KKyAgICAgICAweGI0MGJiZTM3 LCAweGMzMGM4ZWExLCAweDVhMDVkZjFiLCAweDJkMDJlZjhkfTsNCisgIGNv bnN0IHVuc2lnbmVkIGNoYXIgKmVuZDsNCisNCisgIGNyYyA9IH5jcmMgJiAw eGZmZmZmZmZmOw0KKyAgZm9yIChlbmQgPSBidWYgKyBsZW47IGJ1ZiA8IGVu ZDsgKytidWYpDQorICAgIGNyYyA9IGNyYzMyX3RhYmxlWyhjcmMgXiAqYnVm KSAmIDB4ZmZdIF4gKGNyYyA+PiA4KTsNCisgIHJldHVybiB+Y3JjICYgMHhm ZmZmZmZmZjsNCit9DQorDQorLyogR2VuZXJhdGUgY3JjMzIgc3VtIGZyb20g dGhlIGZpbGUuICAqLw0KKw0KK3N0YXRpYyB1bnNpZ25lZCBsb25nDQorZ2V0 X2NyYzMyIChpbnQgZGVzY3JpcHRvcikNCit7DQorICB1bnNpZ25lZCBjaGFy IGJ1ZmZlcls4ICogMTAyNF07DQorICBtZW1zZXQgKGJ1ZmZlciwgMCwgOCAq IDEwMjQpOw0KKyAgdW5zaWduZWQgbG9uZyBmaWxlX2NyYyA9IDA7DQorICBz c2l6ZV90IGNvdW50Ow0KKw0KKyAgd2hpbGUgKChjb3VudCA9IHJlYWQgKGRl c2NyaXB0b3IsIGJ1ZmZlciwgc2l6ZW9mIChidWZmZXIpKSkgPiAwKQ0KKyAg ICBmaWxlX2NyYyA9IGdudV9kZWJ1Z2xpbmtfY3JjMzIgKGZpbGVfY3JjLCBi dWZmZXIsIGNvdW50KTsNCisNCisgIHJldHVybiBmaWxlX2NyYzsNCit9DQor DQorLyogR2V0IGxlbmd0aCBvZiB0aGUgcGF0aC4gICovDQorDQorc3RhdGlj IGludA0KK3BhdGhsZW4gKGNvbnN0IGNoYXIgKmJ1ZmZlcikNCit7DQorICBp bnQgbGVuOw0KKw0KKyAgbGVuID0gc3RybGVuIChidWZmZXIpOw0KKyAgd2hp bGUgKGxlbiA+IDEgJiYgIUlTX0RJUl9TRVBBUkFUT1IgKGJ1ZmZlcltsZW4g LSAxXSkpDQorICAgIC0tbGVuOw0KKyAgcmV0dXJuIGxlbiA+IDEgPyBsZW4g OiAtMTsNCit9DQorDQorLyogVmVyaWZ5IGNyYzMyIHN1bS4gICovDQorDQor c3RhdGljIGludA0KK2NoZWNrX3N1bSAoaW50IGRlc2NyaXB0b3IsIGNoYXIg KmRlYnVnX2xpbmssIGludCBvZmZzZXQsIGludCBzZWN0aW9uX3NpemUpDQor ew0KKyAgdW5zaWduZWQgbG9uZyBjcmMzMl9kZWJ1Z19saW5rOw0KKyAgdW5z aWduZWQgbG9uZyBjcmMzMl9kZWJ1Z19maWxlOw0KKyAgb2Zmc2V0ICs9IDE7 DQorICBvZmZzZXQgPSAob2Zmc2V0ICsgMykgJiB+MzsNCisgIGlmIChvZmZz ZXQgPj0gc2VjdGlvbl9zaXplKQ0KKyAgICByZXR1cm4gMDsNCisgIGNyYzMy X2RlYnVnX2xpbmsgPSBnZXRsMzIgKGRlYnVnX2xpbmsgKyBvZmZzZXQpOw0K KyAgY3JjMzJfZGVidWdfZmlsZSA9IGdldF9jcmMzMiAoZGVzY3JpcHRvcik7 DQorICByZXR1cm4gY3JjMzJfZGVidWdfbGluayA9PSBjcmMzMl9kZWJ1Z19m aWxlOw0KK30NCisNCisvKiBQcm9jZXNzIGVsZiBoZWFkZXIuIFZlcmlmeSBt YWdpYyBudW1iZXIsIHZlcnNpb24sIGV0Yywgb2YgdGhlIEVMRg0KKyAgIGhl YWRlci4gUmV0dXJuIDEgaWYgdGhlIGZpbGUgdHlwZSBpcyBFWEUsIC0xIGlm IHR5cGUgb2YgdGhlIGZpbGUNCisgICBpcyBEWU4gYW5kIDAgb24gdGhlIGZh aWwuICAqLw0KKw0KK3N0YXRpYyBpbnQNCitwcm9jZXNzX2VsZl9oZWFkZXIg KHN0cnVjdCBiYWNrdHJhY2Vfc3RhdGUgKnN0YXRlLCBpbnQgZGVzY3JpcHRv ciwNCisJCSAgICBiYWNrdHJhY2VfZXJyb3JfY2FsbGJhY2sgZXJyb3JfY2Fs bGJhY2ssIHZvaWQgKmRhdGEsDQorCQkgICAgaW50IGV4ZSwgb2ZmX3QgKnNo b2ZmX291dCwgdW5zaWduZWQgaW50ICpzaG51bV9vdXQsDQorCQkgICAgdW5z aWduZWQgaW50ICpzaHN0cm5keF9vdXQsIGJfZWxmX2VoZHIgKmVoZHJfb3V0 KQ0KK3sNCisgIHN0cnVjdCBiYWNrdHJhY2VfdmlldyBlaGRyX3ZpZXc7DQor DQorICBpZiAoIWJhY2t0cmFjZV9nZXRfdmlldyAoc3RhdGUsIGRlc2NyaXB0 b3IsIDAsIHNpemVvZiAqZWhkcl9vdXQsDQorCQkJICAgZXJyb3JfY2FsbGJh Y2ssIGRhdGEsICZlaGRyX3ZpZXcpKQ0KKyAgICBnb3RvIGZhaWw7DQorDQor ICBtZW1jcHkgKGVoZHJfb3V0LCBlaGRyX3ZpZXcuZGF0YSwgc2l6ZW9mICpl aGRyX291dCk7DQorDQorICBiYWNrdHJhY2VfcmVsZWFzZV92aWV3IChzdGF0 ZSwgJmVoZHJfdmlldywgZXJyb3JfY2FsbGJhY2ssIGRhdGEpOw0KKw0KKyAg aWYgKGVoZHJfb3V0LT5lX2lkZW50W0VJX01BRzBdICE9IEVMRk1BRzANCisg ICAgICB8fCBlaGRyX291dC0+ZV9pZGVudFtFSV9NQUcxXSAhPSBFTEZNQUcx DQorICAgICAgfHwgZWhkcl9vdXQtPmVfaWRlbnRbRUlfTUFHMl0gIT0gRUxG TUFHMg0KKyAgICAgIHx8IGVoZHJfb3V0LT5lX2lkZW50W0VJX01BRzNdICE9 IEVMRk1BRzMpDQorICAgIHsNCisgICAgICBlcnJvcl9jYWxsYmFjayAoZGF0 YSwgImV4ZWN1dGFibGUgZmlsZSBpcyBub3QgRUxGIiwgMCk7DQorICAgICAg Z290byBmYWlsOw0KKyAgICB9DQorICBpZiAoZWhkcl9vdXQtPmVfaWRlbnRb RUlfVkVSU0lPTl0gIT0gRVZfQ1VSUkVOVCkNCisgICAgew0KKyAgICAgIGVy cm9yX2NhbGxiYWNrIChkYXRhLCAiZXhlY3V0YWJsZSBmaWxlIGlzIHVucmVj b2duaXplZCBFTEYgdmVyc2lvbiIsIDApOw0KKyAgICAgIGdvdG8gZmFpbDsN CisgICAgfQ0KKw0KKyNpZiBCQUNLVFJBQ0VfRUxGX1NJWkUgPT0gMzINCisj ZGVmaW5lIEJBQ0tUUkFDRV9FTEZDTEFTUyBFTEZDTEFTUzMyDQorI2Vsc2UN CisjZGVmaW5lIEJBQ0tUUkFDRV9FTEZDTEFTUyBFTEZDTEFTUzY0DQorI2Vu ZGlmDQorDQorICBpZiAoZWhkcl9vdXQtPmVfaWRlbnRbRUlfQ0xBU1NdICE9 IEJBQ0tUUkFDRV9FTEZDTEFTUykNCisgICAgew0KKyAgICAgIGVycm9yX2Nh bGxiYWNrIChkYXRhLCAiZXhlY3V0YWJsZSBmaWxlIGlzIHVuZXhwZWN0ZWQg RUxGIGNsYXNzIiwgMCk7DQorICAgICAgZ290byBmYWlsOw0KKyAgICB9DQor DQorICBpZiAoZWhkcl9vdXQtPmVfaWRlbnRbRUlfREFUQV0gIT0gRUxGREFU QTJMU0INCisgICAgICAmJiBlaGRyX291dC0+ZV9pZGVudFtFSV9EQVRBXSAh PSBFTEZEQVRBMk1TQikNCisgICAgew0KKyAgICAgIGVycm9yX2NhbGxiYWNr IChkYXRhLCAiZXhlY3V0YWJsZSBmaWxlIGhhcyB1bmtub3duIGVuZGlhbm5l c3MiLCAwKTsNCisgICAgICBnb3RvIGZhaWw7DQorICAgIH0NCisNCisgIC8q IElmIHRoZSBleGVjdXRhYmxlIGlzIEVUX0RZTiwgaXQgaXMgZWl0aGVyIGEg UElFLCBvciB3ZSBhcmUgcnVubmluZw0KKyAgICAgZGlyZWN0bHkgYSBzaGFy ZWQgbGlicmFyeSB3aXRoIC5pbnRlcnAuICBXZSBuZWVkIHRvIHdhaXQgZm9y DQorICAgICBkbF9pdGVyYXRlX3BoZHIgaW4gdGhhdCBjYXNlIHRvIGRldGVy bWluZSB0aGUgYWN0dWFsIGJhc2VfYWRkcmVzcy4gICovDQorICBpZiAoZXhl ICYmIGVoZHJfb3V0LT5lX3R5cGUgPT0gRVRfRFlOKQ0KKyAgICByZXR1cm4g LTE7DQorDQorICAqc2hvZmZfb3V0ID0gZWhkcl9vdXQtPmVfc2hvZmY7DQor ICAqc2hudW1fb3V0ID0gZWhkcl9vdXQtPmVfc2hudW07DQorICAqc2hzdHJu ZHhfb3V0ID0gZWhkcl9vdXQtPmVfc2hzdHJuZHg7DQorDQorICBpZiAoKCpz aG51bV9vdXQgPT0gMCB8fCAqc2hzdHJuZHhfb3V0ID09IFNITl9YSU5ERVgp ICYmICpzaG9mZl9vdXQgIT0gMCkNCisgICAgew0KKyAgICAgIHN0cnVjdCBi YWNrdHJhY2VfdmlldyBzaGRyX3ZpZXc7DQorICAgICAgY29uc3QgYl9lbGZf c2hkciAqc2hkcjsNCisNCisgICAgICBpZiAoIWJhY2t0cmFjZV9nZXRfdmll dyhzdGF0ZSwgZGVzY3JpcHRvciwgKnNob2ZmX291dCwNCisJCQkgICAgICBz aXplb2YgKGJfZWxmX3NoZHIpLCBlcnJvcl9jYWxsYmFjaywNCisJCQkgICAg ICBkYXRhLCAmc2hkcl92aWV3KSkNCisgICAgICAgIGdvdG8gZmFpbDsNCisN CisgICAgICBzaGRyID0gKGNvbnN0IGJfZWxmX3NoZHIgKikgc2hkcl92aWV3 LmRhdGE7DQorDQorICAgICAgaWYgKCpzaG51bV9vdXQgPT0gMCkNCisJKnNo bnVtX291dCA9IHNoZHItPnNoX3NpemU7DQorDQorICAgICAgaWYgKCpzaHN0 cm5keF9vdXQgPT0gU0hOX1hJTkRFWCkNCisJew0KKwkgICpzaHN0cm5keF9v dXQgPSBzaGRyLT5zaF9saW5rOw0KKw0KKwkgIC8qIFZlcnNpb25zIG9mIHRo ZSBHTlUgYmludXRpbHMgYmV0d2VlbiAyLjEyIGFuZCAyLjE4IGRpZA0KKwkg ICAgIG5vdCBoYW5kbGUgb2JqZWN0cyB3aXRoIG1vcmUgdGhhbiBTSE5fTE9S RVNFUlZFIHNlY3Rpb25zDQorCSAgICAgY29ycmVjdGx5LiAgQWxsIGxhcmdl IHNlY3Rpb24gaW5kZXhlcyB3ZXJlIG9mZnNldCBieQ0KKwkgICAgIDB4MTAw LiAgVGhlcmUgaXMgbW9yZSBpbmZvcm1hdGlvbiBhdA0KKwkgICAgIGh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQtNTkw MCAuDQorCSAgICAgRm9ydHVuYXRlbHkgdGhlc2Ugb2JqZWN0IGZpbGVzIGFy ZSBlYXN5IHRvIGRldGVjdCwgYXMgdGhlDQorCSAgICAgR05VIGJpbnV0aWxz IGFsd2F5cyBwdXQgdGhlIHNlY3Rpb24gaGVhZGVyIHN0cmluZyB0YWJsZQ0K KwkgICAgIG5lYXIgdGhlIGVuZCBvZiB0aGUgbGlzdCBvZiBzZWN0aW9ucy4g IFRodXMgaWYgdGhlDQorCSAgICAgc2VjdGlvbiBoZWFkZXIgc3RyaW5nIHRh YmxlIGluZGV4IGlzIGxhcmdlciB0aGFuIHRoZQ0KKwkgICAgIG51bWJlciBv ZiBzZWN0aW9ucywgdGhlbiB3ZSBrbm93IHdlIGhhdmUgdG8gc3VidHJhY3QN CisJICAgICAweDEwMCB0byBnZXQgdGhlIHJlYWwgc2VjdGlvbiBpbmRleC4g ICovDQorCSAgaWYgKCpzaHN0cm5keF9vdXQgPj0gKnNobnVtX291dA0KKwkg ICAgICAmJiAqc2hzdHJuZHhfb3V0ID49IFNITl9MT1JFU0VSVkUgKyAweDEw MCkNCisJICAgICpzaHN0cm5keF9vdXQgLT0gMHgxMDA7DQorCX0NCisgICAg ICBiYWNrdHJhY2VfcmVsZWFzZV92aWV3IChzdGF0ZSwgJnNoZHJfdmlldywg ZXJyb3JfY2FsbGJhY2ssIGRhdGEpOw0KKyAgICB9DQorICByZXR1cm4gMTsN CisgZmFpbDoNCisgIHJldHVybiAwOw0KK30NCisNCisNCisvKiBHZXQgY29u dGVudCBvZiB0aGUgc3BlY2lmeWluZyBzZWN0aW9uLiAgKi8NCisNCitzdGF0 aWMgdW5zaWduZWQgY2hhciAqDQorZWxmX2dldF9zZWN0aW9uX2J5X25hbWUg KHN0cnVjdCBiYWNrdHJhY2Vfc3RhdGUgKnN0YXRlLCBpbnQgZGVzY3JpcHRv ciwNCisJCQkgYmFja3RyYWNlX2Vycm9yX2NhbGxiYWNrIGVycm9yX2NhbGxi YWNrLCB2b2lkICpkYXRhLA0KKwkJCSBpbnQgKnNlY3Rpb25fZGF0YV9sZW5f b3V0LCBjb25zdCBjaGFyICpzZWN0aW9uX25hbWUpDQorew0KKyAgYl9lbGZf ZWhkciBlaGRyOw0KKyAgb2ZmX3Qgc2hvZmY7DQorICB1bnNpZ25lZCBpbnQg c2hudW07DQorICB1bnNpZ25lZCBpbnQgc2hzdHJuZHg7DQorICBzdHJ1Y3Qg YmFja3RyYWNlX3ZpZXcgc2hkcnNfdmlldzsNCisgIGludCBzaGRyc192aWV3 X3ZhbGlkOw0KKyAgY29uc3QgYl9lbGZfc2hkciAqc2hkcnM7DQorICBjb25z dCBiX2VsZl9zaGRyICpzaHN0cmhkcjsNCisgIHNpemVfdCBzaHN0cl9zaXpl Ow0KKyAgb2ZmX3Qgc2hzdHJfb2ZmOw0KKyAgc3RydWN0IGJhY2t0cmFjZV92 aWV3IG5hbWVzX3ZpZXc7DQorICBzdHJ1Y3QgYmFja3RyYWNlX3ZpZXcgc2Vj dGlvbl92aWV3Ow0KKyAgaW50IG5hbWVzX3ZpZXdfdmFsaWQ7DQorICBjb25z dCBjaGFyICpuYW1lczsNCisgIHVuc2lnbmVkIGludCBpOw0KKyAgaW50IHNl Y3Rpb25fdmlld192YWxpZDsNCisgIHVuc2lnbmVkIGNoYXIgKnNlY3Rpb25f ZGF0YTsNCisNCisgIHNlY3Rpb25fdmlld192YWxpZCA9IDA7DQorICBzaGRy c192aWV3X3ZhbGlkID0gMDsNCisgIG5hbWVzX3ZpZXdfdmFsaWQgPSAwOw0K KyAgc2VjdGlvbl9kYXRhID0gTlVMTDsNCisNCisgIGlmICghcHJvY2Vzc19l bGZfaGVhZGVyIChzdGF0ZSwgZGVzY3JpcHRvciwgZXJyb3JfY2FsbGJhY2ss IGRhdGEsIDAsDQorCQkJICAgICZzaG9mZiwgJnNobnVtLCAmc2hzdHJuZHgs ICZlaGRyKSkNCisgICAgZ290byBleGl0Ow0KKw0KKyAgaWYgKCFiYWNrdHJh Y2VfZ2V0X3ZpZXcgKHN0YXRlLCBkZXNjcmlwdG9yLCBzaG9mZiArIHNpemVv ZiAoYl9lbGZfc2hkciksDQorCQkJICAgKHNobnVtIC0gMSkgKiBzaXplb2Yg KGJfZWxmX3NoZHIpLCBlcnJvcl9jYWxsYmFjaywNCisJCQkgICBkYXRhLCAm c2hkcnNfdmlldykpDQorICAgIGdvdG8gZXhpdDsNCisNCisgIHNoZHJzX3Zp ZXdfdmFsaWQgPSAxOw0KKyAgc2hkcnMgPSAoY29uc3QgYl9lbGZfc2hkciAq KSBzaGRyc192aWV3LmRhdGE7DQorDQorICAvKiBSZWFkIHRoZSBzZWN0aW9u IG5hbWVzLiAgKi8NCisNCisgIHNoc3RyaGRyID0gJnNoZHJzW3Noc3RybmR4 IC0gMV07DQorICBzaHN0cl9zaXplID0gc2hzdHJoZHItPnNoX3NpemU7DQor ICBzaHN0cl9vZmYgPSBzaHN0cmhkci0+c2hfb2Zmc2V0Ow0KKw0KKyAgaWYg KCFiYWNrdHJhY2VfZ2V0X3ZpZXcgKHN0YXRlLCBkZXNjcmlwdG9yLCBzaHN0 cl9vZmYsIHNoc3RyX3NpemUsDQorCQkJICAgZXJyb3JfY2FsbGJhY2ssIGRh dGEsICZuYW1lc192aWV3KSkNCisgICAgZ290byBleGl0Ow0KKw0KKyAgbmFt ZXNfdmlld192YWxpZCA9IDE7DQorICBuYW1lcyA9IChjb25zdCBjaGFyICop IG5hbWVzX3ZpZXcuZGF0YTsNCisNCisgIGZvciAoaSA9IDE7IGkgPCBzaG51 bTsgKytpKQ0KKyAgICB7DQorICAgICAgY29uc3QgYl9lbGZfc2hkciAqc2hk cjsNCisgICAgICB1bnNpZ25lZCBpbnQgc2hfbmFtZTsNCisgICAgICBjb25z dCBjaGFyICpuYW1lOw0KKyAgICAgIHNoZHIgPSAmc2hkcnNbaSAtIDFdOw0K KyAgICAgIHNoX25hbWUgPSBzaGRyLT5zaF9uYW1lOw0KKyAgICAgIGlmIChz aF9uYW1lID49IHNoc3RyX3NpemUpDQorCXsNCisJICBlcnJvcl9jYWxsYmFj ayAoZGF0YSwgIkVMRiBzZWN0aW9uIG5hbWUgb3V0IG9mIHJhbmdlIiwgMCk7 DQorCSAgZ290byBleGl0Ow0KKwl9DQorDQorICAgICAgbmFtZSA9IG5hbWVz ICsgc2hfbmFtZTsNCisNCisgICAgICBpZiAoc3RyY21wIChuYW1lLCBzZWN0 aW9uX25hbWUpID09IDApDQorCXsNCisJICBpZiAoYmFja3RyYWNlX2dldF92 aWV3IChzdGF0ZSwgZGVzY3JpcHRvciwgc2hkci0+c2hfb2Zmc2V0LA0KKwkJ CQkgIHNoZHItPnNoX3NpemUsIGVycm9yX2NhbGxiYWNrLCBkYXRhLA0KKwkJ CQkgICZzZWN0aW9uX3ZpZXcpKQ0KKwkgICAgew0KKwkgICAgICBzZWN0aW9u X3ZpZXdfdmFsaWQgPSAxOw0KKwkgICAgICBzZWN0aW9uX2RhdGENCisJCT0g YmFja3RyYWNlX2FsbG9jIChzdGF0ZSwgc2hkci0+c2hfc2l6ZSwgZXJyb3Jf Y2FsbGJhY2ssIGRhdGEpOw0KKwkgICAgICBpZiAoc2VjdGlvbl9kYXRhID09 IE5VTEwpDQorCQlnb3RvIGV4aXQ7DQorCSAgICAgIG1lbWNweSAoc2VjdGlv bl9kYXRhLCBzZWN0aW9uX3ZpZXcuZGF0YSwgc2hkci0+c2hfc2l6ZSk7DQor CSAgICAgICpzZWN0aW9uX2RhdGFfbGVuX291dCA9IHNoZHItPnNoX3NpemU7 DQorCSAgICB9DQorCSAgYnJlYWs7DQorCX0NCisgICAgfQ0KKw0KKyBleGl0 Og0KKyAgaWYgKHNoZHJzX3ZpZXdfdmFsaWQpDQorICAgIGJhY2t0cmFjZV9y ZWxlYXNlX3ZpZXcgKHN0YXRlLCAmc2hkcnNfdmlldywgZXJyb3JfY2FsbGJh Y2ssIGRhdGEpOw0KKyAgaWYgKG5hbWVzX3ZpZXdfdmFsaWQpDQorICAgIGJh Y2t0cmFjZV9yZWxlYXNlX3ZpZXcgKHN0YXRlLCAmbmFtZXNfdmlldywgZXJy b3JfY2FsbGJhY2ssIGRhdGEpOw0KKyAgaWYgKHNlY3Rpb25fdmlld192YWxp ZCkNCisgICAgYmFja3RyYWNlX3JlbGVhc2VfdmlldyAoc3RhdGUsICZzZWN0 aW9uX3ZpZXcsIGVycm9yX2NhbGxiYWNrLCBkYXRhKTsNCisgIHJldHVybiBz ZWN0aW9uX2RhdGE7DQorfQ0KKw0KKw0KKy8qIFZlcmlmeSB0eXBlIG9mIHRo ZSBmaWxlLiAgKi8NCisNCitzdGF0aWMgaW50DQorYmFja3RyYWNlX3JlYWRs aW5rIChjb25zdCBjaGFyICpmaWxlbmFtZSwNCisJCSAgICBiYWNrdHJhY2Vf ZXJyb3JfY2FsbGJhY2sgZXJyb3JfY2FsbGJhY2ssIHZvaWQgKmRhdGEpDQor ew0KKyAgc3RydWN0IHN0YXQgbGlua19zdGF0Ow0KKyAgaW50IGZpbGVfdHlw ZTsNCisgIG1vZGVfdCBtb2RlOw0KKw0KKyAgbWVtc2V0ICgmbGlua19zdGF0 LCAwLCBzaXplb2YgKHN0cnVjdCBzdGF0KSk7DQorDQorICBpZiAobHN0YXQg KGZpbGVuYW1lLCAmbGlua19zdGF0KSA9PSAtMSkNCisgICAgew0KKyAgICAg IGlmIChlcnJubyAhPSBFTk9FTlQpDQorCWVycm9yX2NhbGxiYWNrIChkYXRh LCBmaWxlbmFtZSwgZXJybm8pOw0KKyAgICAgIGZpbGVfdHlwZSA9IC0xOw0K KyAgICB9DQorDQorICBtb2RlID0gbGlua19zdGF0LnN0X21vZGUgJiBTX0lG TVQ7DQorDQorICBzd2l0Y2ggKG1vZGUpDQorICAgIHsNCisgICAgY2FzZSBT X0lGTE5LOg0KKyAgICAgIGZpbGVfdHlwZSA9IExJTks7DQorICAgICAgYnJl YWs7DQorICAgIGNhc2UgU19JRlJFRzoNCisgICAgICBmaWxlX3R5cGUgPSBS RUdVTEFSOw0KKyAgICAgIGJyZWFrOw0KKyAgICBkZWZhdWx0Og0KKyAgICAg IGZpbGVfdHlwZSA9IC0xOw0KKyAgICB9DQorICByZXR1cm4gZmlsZV90eXBl Ow0KK30NCisNCisvKiBSZXNvbHZlIGZ1bGwgbmFtZSBvZiB0aGUgbGluay4g SW4gdGhpcyBjYXNlIHdlIGNhbid0IHVzZSByZWFscGF0aCBmdW5jdGlvbg0K KyAgIGJlY2F1c2UgaXQgY291bGQgYmUgdW5kZWZpbmVkIG9uIHNvbWUgcGxh dGZyb21zLCBhbHNvIGl0IGFsbG9jYXRlcyBtZW1vcnkNCisgICBieSBtYWxs b2MsIHdoaWNoIHdlIGNhbid0IHVzZS4gICovDQorDQorc3RhdGljIGludA0K K3Jlc29sdmVfcmVhbG5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFy ICpidWZmZXIsDQorCQkgIHN0cnVjdCBiYWNrdHJhY2Vfc3RhdGUgKnN0YXRl LA0KKwkJICBiYWNrdHJhY2VfZXJyb3JfY2FsbGJhY2sgZXJyb3JfY2FsbGJh Y2ssIHZvaWQgKmRhdGEpDQorew0KKyAgY2hhciAqdGVtcF9idWZmZXI7DQor ICBpbnQgZmlsZV90eXBlOw0KKyAgaW50IGZpbGVuYW1lX2xlbjsNCisgIGlu dCB0ZW1wX2ZpbGVuYW1lX2xlbjsNCisgIGludCB2YWxpZF90ZW1wX2J1ZmZl cjsNCisgIGludCBwYXRoX2xlbjsNCisNCisgIHZhbGlkX3RlbXBfYnVmZmVy ID0gMDsNCisgIGZpbGVuYW1lX2xlbiA9IC0xOw0KKyAgZmlsZV90eXBlID0g TElOSzsNCisNCisgIC8qIEFsbG9jYXRlIG1lbW9yeSBmb3Igc2l6ZW9mKFBB VEhfTUFYKSArIDEgYnl0ZXMgYmVjYXVzZSBhdCB0aGlzIHRpbWUNCisgICAg IHdlIGRvbid0IGtub3cgaG93IGxvbmcgcGF0aCBjb3VsZCBiZS4gICovDQor ICB0ZW1wX2J1ZmZlciA9IGJhY2t0cmFjZV9hbGxvYyAoc3RhdGUsIFBBVEhf TUFYICsgMSwgZXJyb3JfY2FsbGJhY2ssIGRhdGEpOw0KKyAgaWYgKHRlbXBf YnVmZmVyID09IE5VTEwpDQorICAgIHJldHVybiAtMTsNCisNCisgIHZhbGlk X3RlbXBfYnVmZmVyID0gMTsNCisNCisgIG1lbXNldCAodGVtcF9idWZmZXIs IDAsIFBBVEhfTUFYICsgMSk7DQorICBtZW1jcHkgKHRlbXBfYnVmZmVyLCBm aWxlbmFtZSwgc3RybGVuIChmaWxlbmFtZSkpOw0KKw0KKyAgd2hpbGUgKGZp bGVfdHlwZSA9PSBMSU5LKQ0KKyAgICB7DQorICAgICAgZmlsZW5hbWVfbGVu ID0gcmVhZGxpbmsgKHRlbXBfYnVmZmVyLCBidWZmZXIsIFBBVEhfTUFYKTsN CisgICAgICBpZiAoZmlsZW5hbWVfbGVuIDwgMSkNCisJZ290byBleGl0Ow0K Kw0KKyAgICAgIHRlbXBfZmlsZW5hbWVfbGVuID0gc3RybGVuIChidWZmZXIp Ow0KKw0KKyAgICAgIC8qIEZ1bGwgcGF0aC4gICovDQorICAgICAgaWYgKGJ1 ZmZlclswXSA9PSAnLycpDQorCXsNCisJICBtZW1zZXQgKHRlbXBfYnVmZmVy LCAwLCBQQVRIX01BWCk7DQorCSAgbWVtY3B5ICh0ZW1wX2J1ZmZlciwgYnVm ZmVyLCB0ZW1wX2ZpbGVuYW1lX2xlbik7DQorCX0NCisgICAgICBlbHNlDQor CXsNCisJICAvKiBSZWxhdGl2ZSBwYXRoLiAgKi8NCisJICBwYXRoX2xlbiA9 IHBhdGhsZW4gKHRlbXBfYnVmZmVyKTsNCisJICBpZiAocGF0aF9sZW4gPCAx KQ0KKwkgICAgZ290byBleGl0Ow0KKw0KKwkgIG1lbWNweSAodGVtcF9idWZm ZXIgKyBwYXRoX2xlbiwgYnVmZmVyLCBmaWxlbmFtZV9sZW4pOw0KKwkgIHRl bXBfYnVmZmVyW3BhdGhfbGVuICsgZmlsZW5hbWVfbGVuXSA9ICdcMCc7DQor CX0NCisNCisgICAgICBmaWxlX3R5cGUgPSBiYWNrdHJhY2VfcmVhZGxpbmsg KHRlbXBfYnVmZmVyLCBlcnJvcl9jYWxsYmFjaywgZGF0YSk7DQorICAgICAg bWVtc2V0IChidWZmZXIsIDAsIGZpbGVuYW1lX2xlbik7DQorICAgIH0NCisN CisgIGlmIChmaWxlX3R5cGUgIT0gUkVHVUxBUikNCisgICAgew0KKyAgICAg IGZpbGVuYW1lX2xlbiA9IC0xOw0KKyAgICAgIGdvdG8gZXhpdDsNCisgICAg fQ0KKw0KKyAgZmlsZW5hbWVfbGVuID0gc3RybGVuICh0ZW1wX2J1ZmZlcik7 DQorICBtZW1jcHkgKGJ1ZmZlciwgdGVtcF9idWZmZXIsIGZpbGVuYW1lX2xl bik7DQorDQorIGV4aXQ6DQorICBpZiAodmFsaWRfdGVtcF9idWZmZXIpDQor ICAgIGJhY2t0cmFjZV9mcmVlIChzdGF0ZSwgdGVtcF9idWZmZXIsIFBBVEhf TUFYICsgMSwgZXJyb3JfY2FsbGJhY2ssIGRhdGEpOw0KKyAgcmV0dXJuIGZp bGVuYW1lX2xlbjsNCit9DQorDQorLyogUmVzb2x2ZSByZWFsbmFtZSBvZiB0 aGUgZmlsZW5hbWUuIFRoaXMgZnVuY3Rpb24gdmVyaWZpZXMgZmlsZW5hbWUu DQorICAgSWYgZmlsZW5hbWUgaXMgbmFtZSBvZiB0aGUgZmlsZSBpdCBwb3B1 bGF0ZXMgcmVhbG5hbWUgYnVmZmVyLg0KKyAgIElmIGZpbGVuYW1lIGlzIGxp bmssIGl0IGNhbGxzIHJlc29sdmVfcmVhbG5hbWUgZnVuY3Rpb24uICAqLw0K Kw0KK3N0YXRpYyBjaGFyICoNCitiYWNrdHJhY2VfcmVzb2x2ZV9yZWFsbmFt ZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCAqZmlsZW5hbWVfbGVuLA0K KwkJCSAgICBzdHJ1Y3QgYmFja3RyYWNlX3N0YXRlICpzdGF0ZSwNCisJCQkg ICAgYmFja3RyYWNlX2Vycm9yX2NhbGxiYWNrIGVycm9yX2NhbGxiYWNrLCB2 b2lkICpkYXRhKQ0KK3sNCisgIGludCBmaWxlX3R5cGU7DQorICBjaGFyICpy ZWFsbmFtZTsNCisNCisgICpmaWxlbmFtZV9sZW4gPSAtMTsNCisNCisgIHJl YWxuYW1lID0gYmFja3RyYWNlX2FsbG9jIChzdGF0ZSwgUEFUSF9NQVggKyAx LCBlcnJvcl9jYWxsYmFjaywgZGF0YSk7DQorICBpZiAocmVhbG5hbWUgPT0g TlVMTCkNCisgICAgZ290byBleGl0Ow0KKw0KKyAgZmlsZV90eXBlID0gYmFj a3RyYWNlX3JlYWRsaW5rIChmaWxlbmFtZSwgZXJyb3JfY2FsbGJhY2ssIGRh dGEpOw0KKw0KKyAgaWYgKGZpbGVfdHlwZSA9PSBMSU5LKQ0KKyAgICB7DQor ICAgICAgLyogUmVhZCB0aGUgYWN0dWFsIGZpbGVuYW1lLiAgKi8NCisgICAg ICAqZmlsZW5hbWVfbGVuDQorCT0gcmVzb2x2ZV9yZWFsbmFtZSAoZmlsZW5h bWUsIHJlYWxuYW1lLCBzdGF0ZSwgZXJyb3JfY2FsbGJhY2ssIGRhdGEpOw0K KyAgICAgIGlmICgqZmlsZW5hbWVfbGVuIDwgMCkNCisJZ290byBleGl0Ow0K KyAgICB9DQorICBlbHNlIGlmIChmaWxlX3R5cGUgPT0gUkVHVUxBUikNCisg ICAgew0KKyAgICAgICpmaWxlbmFtZV9sZW4gPSBzdHJsZW4gKGZpbGVuYW1l KTsNCisgICAgICBpZiAoKmZpbGVuYW1lX2xlbiA+IFBBVEhfTUFYKQ0KKwln b3RvIGV4aXQ7DQorDQorICAgICAgbWVtY3B5IChyZWFsbmFtZSwgZmlsZW5h bWUsICpmaWxlbmFtZV9sZW4pOw0KKyAgICB9DQorDQorIGV4aXQ6DQorICBy ZXR1cm4gcmVhbG5hbWU7DQorfQ0KKw0KKy8qIFNlYXJjaCBmb3IgZGVidWcg ZmlsZSBpbnRvIHNwZWNpZnlpbmcgZGlyZWN0b3JpcmVzLiAgKi8NCisNCitz dGF0aWMgaW50DQorc2VhcmNoX2Zvcl9kZWJ1Z2ZpbGUgKGNoYXIgKnJlYWxu YW1lLCBjaGFyICpkZWJ1Z19maWxlbmFtZSwNCisJCSAgICAgIGJhY2t0cmFj ZV9lcnJvcl9jYWxsYmFjayBlcnJvcl9jYWxsYmFjaywgdm9pZCAqZGF0YSwN CisJCSAgICAgIHN0cnVjdCBiYWNrdHJhY2Vfc3RhdGUgKnN0YXRlKQ0KK3sN CisgIGludCBkZWJ1Z19maWxlbmFtZV9sZW47DQorICBpbnQgcGFzczsNCisg IGludCBkZWJ1Z19wYXRoX2xlbjsNCisgIGludCBkZWJ1Z19kb2VzX25vdF9l eGlzdDsNCisgIGludCBkZWJ1Z19kZXNjcmlwdG9yOw0KKyAgaW50IHBhdGhf bGVuOw0KKyAgY2hhciAqYnVmZmVyOw0KKyAgaW50IGJ1ZmZlcl9sZW47DQor ICBpbnQgdmFsaWRfYnVmZmVyOw0KKw0KKyAgZGVidWdfZGVzY3JpcHRvciA9 IC0xOw0KKyAgdmFsaWRfYnVmZmVyID0gMDsNCisNCisgIHBhdGhfbGVuID0g cGF0aGxlbiAocmVhbG5hbWUpOw0KKyAgZGVidWdfZmlsZW5hbWVfbGVuID0g c3RybGVuICgoY29uc3QgY2hhciAqKSBkZWJ1Z19maWxlbmFtZSk7DQorDQor ICBpZiAoZGVidWdfZmlsZW5hbWVfbGVuIDwgMSkNCisgICAgZ290byBleGl0 Ow0KKw0KKyAgYnVmZmVyX2xlbiA9IHBhdGhfbGVuICsgc3RybGVuIChkZWJ1 Z19maWxlX3BhdGhbVVNSX0xJQl9ERUJVR10pDQorCSAgICAgICArIGRlYnVn X2ZpbGVuYW1lX2xlbiArIDE7DQorDQorICBidWZmZXIgPSBiYWNrdHJhY2Vf YWxsb2MgKHN0YXRlLCBidWZmZXJfbGVuLCBlcnJvcl9jYWxsYmFjaywgZGF0 YSk7DQorDQorICBpZiAoYnVmZmVyID09IE5VTEwpDQorICAgIGdvdG8gZXhp dDsNCisgIG1lbXNldCAoYnVmZmVyLCAwLCBidWZmZXJfbGVuKTsNCisgIG1l bWNweSAoYnVmZmVyLCByZWFsbmFtZSwgcGF0aF9sZW4pOw0KKw0KKyAgdmFs aWRfYnVmZmVyID0gMTsNCisgIGZvciAocGFzcyA9IDA7IHBhc3MgPCBERUJV R19QQVRIX01BWDsgKytwYXNzKQ0KKyAgICB7DQorICAgICAgc3dpdGNoIChw YXNzKQ0KKwl7DQorCWNhc2UgQ1VSUkVOVDoNCisJICB7DQorCSAgICBtZW1j cHkgKGJ1ZmZlciArIHBhdGhfbGVuLCBkZWJ1Z19maWxlbmFtZSwgZGVidWdf ZmlsZW5hbWVfbGVuKTsNCisJICAgIGJyZWFrOw0KKwkgIH0NCisJY2FzZSBD VVJSRU5UX0RFQlVHOg0KKwkgIHsNCisJICAgIGRlYnVnX3BhdGhfbGVuID0g c3RybGVuIChkZWJ1Z19maWxlX3BhdGhbQ1VSUkVOVF9ERUJVR10pOw0KKwkg ICAgbWVtY3B5IChidWZmZXIgKyBwYXRoX2xlbiwgZGVidWdfZmlsZV9wYXRo W0NVUlJFTlRfREVCVUddLA0KKwkJICAgIGRlYnVnX3BhdGhfbGVuKTsNCisJ ICAgIG1lbWNweSAoYnVmZmVyICsgcGF0aF9sZW4gKyBkZWJ1Z19wYXRoX2xl biwgZGVidWdfZmlsZW5hbWUsDQorCQkgICAgZGVidWdfZmlsZW5hbWVfbGVu KTsNCisJICAgIGJyZWFrOw0KKwkgIH0NCisJY2FzZSBVU1JfTElCX0RFQlVH Og0KKwkgIHsNCisJICAgIGRlYnVnX3BhdGhfbGVuID0gc3RybGVuIChkZWJ1 Z19maWxlX3BhdGhbVVNSX0xJQl9ERUJVR10pOw0KKwkgICAgbWVtc2V0IChi dWZmZXIsIDAsIGJ1ZmZlcl9sZW4pOw0KKwkgICAgbWVtY3B5IChidWZmZXIs IGRlYnVnX2ZpbGVfcGF0aFtVU1JfTElCX0RFQlVHXSwgZGVidWdfcGF0aF9s ZW4pOw0KKwkgICAgbWVtY3B5IChidWZmZXIgKyBkZWJ1Z19wYXRoX2xlbiwg ZGVidWdfZmlsZW5hbWUsDQorCQkgICAgZGVidWdfZmlsZW5hbWVfbGVuKTsN CisJICAgIGJyZWFrOw0KKwkgIH0NCisJY2FzZSBVU1JfTElCX0RFQlVHX1BB VEhfVE9fRVhFOg0KKwkgIHsNCisJICAgIGRlYnVnX3BhdGhfbGVuDQorCSAg ICAgID0gc3RybGVuIChkZWJ1Z19maWxlX3BhdGhbVVNSX0xJQl9ERUJVR19Q QVRIX1RPX0VYRV0pOw0KKwkgICAgbWVtc2V0IChidWZmZXIsIDAsIGJ1ZmZl cl9sZW4pOw0KKwkgICAgbWVtY3B5IChidWZmZXIsIGRlYnVnX2ZpbGVfcGF0 aFtVU1JfTElCX0RFQlVHX1BBVEhfVE9fRVhFXSwNCisJCSAgICBkZWJ1Z19w YXRoX2xlbik7DQorCSAgICBtZW1jcHkgKGJ1ZmZlciArIGRlYnVnX3BhdGhf bGVuLCByZWFsbmFtZSwgcGF0aF9sZW4pOw0KKwkgICAgbWVtY3B5IChidWZm ZXIgKyBkZWJ1Z19wYXRoX2xlbiArIHBhdGhfbGVuLCBkZWJ1Z19maWxlbmFt ZSwNCisJCSAgICBkZWJ1Z19maWxlbmFtZV9sZW4pOw0KKwkgICAgYnJlYWs7 DQorCSAgfQ0KKwlkZWZhdWx0Og0KKwkgIGdvdG8gZXhpdDsNCisJfQ0KKw0K KyAgICAgIGRlYnVnX2Rlc2NyaXB0b3INCisJPSBiYWNrdHJhY2Vfb3BlbiAo YnVmZmVyLCBlcnJvcl9jYWxsYmFjaywgZGF0YSwgJmRlYnVnX2RvZXNfbm90 X2V4aXN0KTsNCisNCisgICAgICBpZiAoZGVidWdfZGVzY3JpcHRvciA+IDAp DQorCWJyZWFrOw0KKyAgICB9DQorIGV4aXQ6DQorICBpZiAodmFsaWRfYnVm ZmVyKQ0KKyAgICBiYWNrdHJhY2VfZnJlZSAoc3RhdGUsIGJ1ZmZlciwgYnVm ZmVyX2xlbiwgZXJyb3JfY2FsbGJhY2ssIGRhdGEpOw0KKyAgcmV0dXJuIGRl YnVnX2Rlc2NyaXB0b3I7DQorfQ0KKw0KKy8qIE9wZW4gZGVidWcgZmlsZSBi eSBnbnVsaW5rLiAgKi8NCisNCitzdGF0aWMgaW50DQorb3Blbl9kZWJ1Z2Zp bGVfYnlfZ251bGluayAoY2hhciAqcmVhbG5hbWUsIHVuc2lnbmVkIGNoYXIg KnNlY3Rpb25fZGF0YSwNCisJCQkgICBpbnQgc2VjdGlvbl9kYXRhX2xlbiwg c3RydWN0IGJhY2t0cmFjZV9zdGF0ZSAqc3RhdGUsDQorCQkJICAgYmFja3Ry YWNlX2Vycm9yX2NhbGxiYWNrIGVycm9yX2NhbGxiYWNrLCB2b2lkICpkYXRh KQ0KK3sNCisgIGludCBkZWJ1Z19kZXNjcmlwdG9yOw0KKw0KKyAgZGVidWdf ZGVzY3JpcHRvciA9IHNlYXJjaF9mb3JfZGVidWdmaWxlIChyZWFsbmFtZSwg KGNoYXIgKikgc2VjdGlvbl9kYXRhLA0KKwkJCQkJICAgZXJyb3JfY2FsbGJh Y2ssIGRhdGEsIHN0YXRlKTsNCisgIGlmIChkZWJ1Z19kZXNjcmlwdG9yIDwg MCkNCisgICAgZ290byBleGl0Ow0KKw0KKyAgLyogQ2hlY2sgdGhlIGNyYzMy IGNoZWNrc3VtIGlmIGl0IG5vdCB0aGUgc2FtZSByZXR1cm4gLTEuICAqLw0K Kw0KKyAgaWYgKCFjaGVja19zdW0gKGRlYnVnX2Rlc2NyaXB0b3IsIChjaGFy ICopIHNlY3Rpb25fZGF0YSwNCisJCSAgc3RybGVuICgoY2hhciAqKSBzZWN0 aW9uX2RhdGEpLCBzZWN0aW9uX2RhdGFfbGVuKSkNCisgICAgZGVidWdfZGVz Y3JpcHRvciA9IC0xOw0KKw0KKyBleGl0Og0KKyAgcmV0dXJuIGRlYnVnX2Rl c2NyaXB0b3I7DQorfQ0KKw0KKy8qIENvbnZlcnQgY2hhciB0byBoZXggKi8N CisNCitzdGF0aWMgY2hhcg0KK2hleCAoY2hhciBjaCkNCit7DQorICByZXR1 cm4gY2ggPiA5ID8gKCdhJyArIChjaCAtIDEwKSkgOiAoJzAnICsgY2gpOw0K K30NCisNCisvKiBHZXQgYnVpbGQtaWQgbmFtZS4gICovDQorDQorc3RhdGlj IGNoYXIgKg0KK2dldF9idWlsZF9pZF9uYW1lICh1bnNpZ25lZCBjaGFyICpz ZWN0aW9uX2RhdGEsIGludCAqbGVuLA0KKwkJICAgc3RydWN0IGJhY2t0cmFj ZV9zdGF0ZSAqc3RhdGUsDQorCQkgICBiYWNrdHJhY2VfZXJyb3JfY2FsbGJh Y2sgZXJyb3JfY2FsbGJhY2ssIHZvaWQgKmRhdGEpDQorew0KKyAgRWxmX0V4 dGVybmFsX05vdGUgKmJ1aWxkX2lkX3NlY3Rpb247DQorICBjaGFyICpidWls ZF9pZF9uYW1lOw0KKyAgY2hhciAqdGVtcDsNCisgIGNvbnN0IGNoYXIgKmRl YnVnX3Bvc3RmaXg7DQorICBjb25zdCBjaGFyICpkZWJ1Z19wcmVmaXg7DQor ICBzaXplX3QgZGVidWdfcG9zdGZpeF9sZW47DQorICBzaXplX3QgZGVidWdf cHJlZml4X2xlbjsNCisgIHNpemVfdCBuYW1lX3NpemU7DQorICBpbnQgb2Zm c2V0Ow0KKyAgdW5zaWduZWQgY2hhciAqaGFzaF9zdGFydDsNCisgIHVuc2ln bmVkIGxvbmcgaGFzaF9zaXplOw0KKyAgdW5zaWduZWQgbG9uZyBpZGVudGlm aWVyOw0KKw0KKyAgZGVidWdfcG9zdGZpeF9sZW4gPSA2Ow0KKyAgZGVidWdf cHJlZml4X2xlbiA9IDEwOw0KKyAgZGVidWdfcG9zdGZpeCA9ICIuZGVidWci Ow0KKyAgZGVidWdfcHJlZml4ID0gIi5idWlsZC1pZC8iOw0KKyAgKmxlbiA9 IDA7DQorDQorICBidWlsZF9pZF9zZWN0aW9uID0gKEVsZl9FeHRlcm5hbF9O b3RlICopIHNlY3Rpb25fZGF0YTsNCisgIGhhc2hfc2l6ZSA9IGdldGwzMiAo YnVpbGRfaWRfc2VjdGlvbi0+ZGVzY3N6KTsNCisgIGlkZW50aWZpZXIgPSBn ZXRsMzIgKGJ1aWxkX2lkX3NlY3Rpb24tPnR5cGUpOw0KKyAgbmFtZV9zaXpl ID0gZ2V0bDMyIChidWlsZF9pZF9zZWN0aW9uLT5uYW1lc3opOw0KKw0KKyAg aWYgKGlkZW50aWZpZXIgIT0gTlRfR05VX0JVSUxEX0lEIHx8IGhhc2hfc2l6 ZSA9PSAwIHx8IG5hbWVfc2l6ZSAhPSA0DQorICAgICAgfHwgc3RybmNtcCAo KGNoYXIgKikgYnVpbGRfaWRfc2VjdGlvbi0+bmFtZSwgIkdOVSIsIDMpICE9 IDApDQorICAgIHJldHVybiBOVUxMOw0KKw0KKyAgb2Zmc2V0ID0gMTY7DQor ICBoYXNoX3N0YXJ0ID0gc2VjdGlvbl9kYXRhICsgb2Zmc2V0Ow0KKyAgKmxl biA9IGhhc2hfc2l6ZSAqIDIgKyBkZWJ1Z19wb3N0Zml4X2xlbiArIGRlYnVn X3ByZWZpeF9sZW4gKyAxOw0KKyAgYnVpbGRfaWRfbmFtZSA9IGJhY2t0cmFj ZV9hbGxvYyAoc3RhdGUsICpsZW4sIGVycm9yX2NhbGxiYWNrLCBkYXRhKTsN CisNCisgIG1lbXNldCAoYnVpbGRfaWRfbmFtZSwgMCwgKmxlbik7DQorICBt ZW1jcHkgKGJ1aWxkX2lkX25hbWUsIGRlYnVnX3ByZWZpeCwgZGVidWdfcHJl Zml4X2xlbik7DQorICB0ZW1wID0gYnVpbGRfaWRfbmFtZSArIGRlYnVnX3By ZWZpeF9sZW47DQorDQorICAqdGVtcCsrID0gaGV4ICgoKmhhc2hfc3RhcnQg JiAweEYwKSA+PiA0KTsNCisgICp0ZW1wKysgPSBoZXggKCpoYXNoX3N0YXJ0 ICYgMHgwRik7DQorICArK2hhc2hfc3RhcnQ7DQorICAtLWhhc2hfc2l6ZTsN CisNCisgIG1lbWNweSAodGVtcCwgIi8iLCAxKTsNCisgICsrdGVtcDsNCisN CisgIHdoaWxlIChoYXNoX3NpemUtLSkNCisgICAgew0KKyAgICAgICp0ZW1w KysgPSBoZXggKCgqaGFzaF9zdGFydCAmIDB4RjApID4+IDQpOw0KKyAgICAg ICp0ZW1wKysgPSBoZXggKCpoYXNoX3N0YXJ0ICYgMHgwRik7DQorICAgICAg KytoYXNoX3N0YXJ0Ow0KKyAgICB9DQorDQorICBtZW1jcHkgKHRlbXAsIGRl YnVnX3Bvc3RmaXgsIGRlYnVnX3Bvc3RmaXhfbGVuKTsNCisgIHJldHVybiBi dWlsZF9pZF9uYW1lOw0KK30NCisNCisvKiBPcGVuIGZpbGUgYnkgYnVpbGQt aWQuICAqLw0KKw0KK3N0YXRpYyBpbnQNCitvcGVuX2RlYnVnZmlsZV9ieV9i dWlsZF9pZCAoY2hhciAqcmVhbG5hbWUsIHVuc2lnbmVkIGNoYXIgKnNlY3Rp b25fZGF0YSwNCisJCQkgICAgc3RydWN0IGJhY2t0cmFjZV9zdGF0ZSAqc3Rh dGUsDQorCQkJICAgIGJhY2t0cmFjZV9lcnJvcl9jYWxsYmFjayBlcnJvcl9j YWxsYmFjaywgdm9pZCAqZGF0YSkNCisNCit7DQorICBjaGFyICpidWlsZF9p ZF9uYW1lOw0KKyAgaW50IGRlYnVnX2Rlc2NyaXB0b3I7DQorICBpbnQgYnVp bGRfaWRfbmFtZV9sZW47DQorICBpbnQgdmFsaWRfYnVpbGRfaWRfbmFtZTsN CisNCisgIGRlYnVnX2Rlc2NyaXB0b3IgPSAtMTsNCisgIHZhbGlkX2J1aWxk X2lkX25hbWUgPSAwOw0KKw0KKyAgYnVpbGRfaWRfbmFtZSA9IGdldF9idWls ZF9pZF9uYW1lIChzZWN0aW9uX2RhdGEsICZidWlsZF9pZF9uYW1lX2xlbiwg c3RhdGUsDQorCQkJCSAgICAgZXJyb3JfY2FsbGJhY2ssIGRhdGEpOw0KKw0K KyAgaWYgKGJ1aWxkX2lkX25hbWUgPT0gTlVMTCB8fCBidWlsZF9pZF9uYW1l X2xlbiA8PSAwKQ0KKyAgICBnb3RvIGV4aXQ7DQorDQorICB2YWxpZF9idWls ZF9pZF9uYW1lID0gMTsNCisNCisgIGRlYnVnX2Rlc2NyaXB0b3IgPSBzZWFy Y2hfZm9yX2RlYnVnZmlsZSAocmVhbG5hbWUsIGJ1aWxkX2lkX25hbWUsDQor CQkJCQkgICBlcnJvcl9jYWxsYmFjaywgZGF0YSwgc3RhdGUpOw0KKw0KKyBl eGl0Og0KKyAgaWYgKHZhbGlkX2J1aWxkX2lkX25hbWUpDQorICAgIGJhY2t0 cmFjZV9mcmVlIChzdGF0ZSwgYnVpbGRfaWRfbmFtZSwgYnVpbGRfaWRfbmFt ZV9sZW4sIGVycm9yX2NhbGxiYWNrLA0KKwkJICAgIGRhdGEpOw0KKyAgcmV0 dXJuIGRlYnVnX2Rlc2NyaXB0b3I7DQorfQ0KKw0KKy8qIE9wZW4gZGVidWcg ZmlsZS4gICovDQorDQoraW50DQorYmFja3RyYWNlX29wZW5fZGVidWdmaWxl IChpbnQgZGVzY3JpcHRvciwgY29uc3QgY2hhciAqZmlsZW5hbWUsDQorCQkJ ICBiYWNrdHJhY2VfZXJyb3JfY2FsbGJhY2sgZXJyb3JfY2FsbGJhY2ssIHZv aWQgKmRhdGEsDQorCQkJICBzdHJ1Y3QgYmFja3RyYWNlX3N0YXRlICpzdGF0 ZSkNCit7DQorICBpbnQgZGVidWdfZGVzY3JpcHRvcjsNCisgIHVuc2lnbmVk IGNoYXIgKmdudWxpbmtfc2VjdGlvbl9kYXRhOw0KKyAgdW5zaWduZWQgY2hh ciAqYnVpbGRfaWRfc2VjdGlvbl9kYXRhOw0KKyAgc2l6ZV90IHZhbGlkX2Rl c2NyaXB0b3I7DQorICBzaXplX3QgdmFsaWRfZ251bGlua19zZWN0aW9uX2Rh dGE7DQorICBzaXplX3QgdmFsaWRfYnVpbGRfaWRfc2VjdGlvbl9kYXRhOw0K KyAgc2l6ZV90IHZhbGlkX3JlYWxuYW1lOw0KKyAgaW50IGJ1aWxkX2lkX3Nl Y3Rpb25fZGF0YV9sZW47DQorICBpbnQgZ251X2xpbmtfc2VjdGlvbl9kYXRh X2xlbjsNCisgIGNoYXIgKnJlYWxuYW1lOw0KKyAgaW50IGZpbGVuYW1lX2xl bjsNCisNCisgIHZhbGlkX3JlYWxuYW1lID0gMDsNCisgIHZhbGlkX2Rlc2Ny aXB0b3IgPSAwOw0KKyAgdmFsaWRfZ251bGlua19zZWN0aW9uX2RhdGEgPSAw Ow0KKyAgdmFsaWRfYnVpbGRfaWRfc2VjdGlvbl9kYXRhID0gMDsNCisgIGJ1 aWxkX2lkX3NlY3Rpb25fZGF0YV9sZW4gPSAwOw0KKyAgZ251X2xpbmtfc2Vj dGlvbl9kYXRhX2xlbiA9IDA7DQorICBkZWJ1Z19kZXNjcmlwdG9yID0gLTE7 DQorDQorICByZWFsbmFtZSA9IGJhY2t0cmFjZV9yZXNvbHZlX3JlYWxuYW1l IChmaWxlbmFtZSwgJmZpbGVuYW1lX2xlbiwgc3RhdGUsDQorCQkJCQkgZXJy b3JfY2FsbGJhY2ssIGRhdGEpOw0KKw0KKyAgaWYgKHJlYWxuYW1lID09IE5V TEwgfHwgZmlsZW5hbWVfbGVuIDwgMCkNCisgICAgZ290byBleGl0Ow0KKw0K KyAgdmFsaWRfcmVhbG5hbWUgPSAxOw0KKw0KKyAgLyogQ2hlY2sgaWYgYnVp bGQtaWQgc2VjdGlvbiBkb2VzIGV4aXN0LiAgKi8NCisgIGJ1aWxkX2lkX3Nl Y3Rpb25fZGF0YQ0KKyAgICA9IGVsZl9nZXRfc2VjdGlvbl9ieV9uYW1lIChz dGF0ZSwgZGVzY3JpcHRvciwgZXJyb3JfY2FsbGJhY2ssIGRhdGEsDQorCQkJ ICAgICAgICZidWlsZF9pZF9zZWN0aW9uX2RhdGFfbGVuLA0KKwkJCSAgICAg ICAiLm5vdGUuZ251LmJ1aWxkLWlkIik7DQorDQorICBpZiAoYnVpbGRfaWRf c2VjdGlvbl9kYXRhICE9IE5VTEwgJiYgYnVpbGRfaWRfc2VjdGlvbl9kYXRh X2xlbiA+IDApDQorICAgIHsNCisgICAgICB2YWxpZF9idWlsZF9pZF9zZWN0 aW9uX2RhdGEgPSAxOw0KKyAgICAgIGRlYnVnX2Rlc2NyaXB0b3INCisJPSBv cGVuX2RlYnVnZmlsZV9ieV9idWlsZF9pZCAocmVhbG5hbWUsIGJ1aWxkX2lk X3NlY3Rpb25fZGF0YSwgc3RhdGUsDQorCQkJCSAgICAgIGVycm9yX2NhbGxi YWNrLCBkYXRhKTsNCisgICAgfQ0KKw0KKyAgaWYgKGRlYnVnX2Rlc2NyaXB0 b3IgPCAwKQ0KKyAgICB7DQorICAgICAgZ251bGlua19zZWN0aW9uX2RhdGEN CisJPSBlbGZfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoc3RhdGUsIGRlc2NyaXB0 b3IsIGVycm9yX2NhbGxiYWNrLCBkYXRhLA0KKwkJCQkgICAmZ251X2xpbmtf c2VjdGlvbl9kYXRhX2xlbiwNCisJCQkJICAgIi5nbnVfZGVidWdsaW5rIik7 DQorDQorICAgICAgaWYgKGdudWxpbmtfc2VjdGlvbl9kYXRhICE9IE5VTEwg JiYgZ251X2xpbmtfc2VjdGlvbl9kYXRhX2xlbiA+IDApDQorCXsNCisJICB2 YWxpZF9nbnVsaW5rX3NlY3Rpb25fZGF0YSA9IDE7DQorCSAgZGVidWdfZGVz Y3JpcHRvcg0KKwkgICAgPSBvcGVuX2RlYnVnZmlsZV9ieV9nbnVsaW5rIChy ZWFsbmFtZSwgZ251bGlua19zZWN0aW9uX2RhdGEsDQorCQkJCQkgZ251X2xp bmtfc2VjdGlvbl9kYXRhX2xlbiwgc3RhdGUsDQorCQkJCQkgZXJyb3JfY2Fs bGJhY2ssIGRhdGEpOw0KKwl9DQorICAgIH0NCisNCisgIGlmIChkZWJ1Z19k ZXNjcmlwdG9yID49IDApDQorICAgIHZhbGlkX2Rlc2NyaXB0b3IgPSAxOw0K Kw0KKyBleGl0Og0KKyAgaWYgKHZhbGlkX2Rlc2NyaXB0b3IpDQorICAgIGJh Y2t0cmFjZV9jbG9zZSAoZGVzY3JpcHRvciwgZXJyb3JfY2FsbGJhY2ssIGRh dGEpOw0KKyAgaWYgKHZhbGlkX2dudWxpbmtfc2VjdGlvbl9kYXRhKQ0KKyAg ICBiYWNrdHJhY2VfZnJlZSAoc3RhdGUsIGdudWxpbmtfc2VjdGlvbl9kYXRh LCBnbnVfbGlua19zZWN0aW9uX2RhdGFfbGVuLA0KKwkJICAgIGVycm9yX2Nh bGxiYWNrLCBkYXRhKTsNCisgIGlmICh2YWxpZF9idWlsZF9pZF9zZWN0aW9u X2RhdGEpDQorICAgIGJhY2t0cmFjZV9mcmVlIChzdGF0ZSwgYnVpbGRfaWRf c2VjdGlvbl9kYXRhLCBidWlsZF9pZF9zZWN0aW9uX2RhdGFfbGVuLA0KKwkJ ICAgIGVycm9yX2NhbGxiYWNrLCBkYXRhKTsNCisgIGlmICh2YWxpZF9yZWFs bmFtZSkNCisgICAgYmFja3RyYWNlX2ZyZWUgKHN0YXRlLCByZWFsbmFtZSwg UEFUSF9NQVggKyAxLCBlcnJvcl9jYWxsYmFjaywgZGF0YSk7DQorICByZXR1 cm4gZGVidWdfZGVzY3JpcHRvcjsNCit9DQorDQogLyogQSBkdW1teSBjYWxs YmFjayBmdW5jdGlvbiB1c2VkIHdoZW4gd2UgY2FuJ3QgZmluZCBhbnkgZGVi dWcgaW5mby4gICovDQogDQogc3RhdGljIGludA0KQEAgLTUyMSw3ICsxMzY1 LDYgQEAgZWxmX2FkZCAoc3RydWN0IGJhY2t0cmFjZV9zdGF0ZSAqc3RhdGUs IGludCBkZXNjcmlwdG9yLCB1aW50cHRyX3QgYmFzZV9hZGRyZXNzLA0KIAkg YmFja3RyYWNlX2Vycm9yX2NhbGxiYWNrIGVycm9yX2NhbGxiYWNrLCB2b2lk ICpkYXRhLA0KIAkgZmlsZWxpbmUgKmZpbGVsaW5lX2ZuLCBpbnQgKmZvdW5k X3N5bSwgaW50ICpmb3VuZF9kd2FyZiwgaW50IGV4ZSkNCiB7DQotICBzdHJ1 Y3QgYmFja3RyYWNlX3ZpZXcgZWhkcl92aWV3Ow0KICAgYl9lbGZfZWhkciBl aGRyOw0KICAgb2ZmX3Qgc2hvZmY7DQogICB1bnNpZ25lZCBpbnQgc2hudW07 DQpAQCAtNTQ3LDYgKzEzOTAsNyBAQCBlbGZfYWRkIChzdHJ1Y3QgYmFja3Ry YWNlX3N0YXRlICpzdGF0ZSwgaW50IGRlc2NyaXB0b3IsIHVpbnRwdHJfdCBi YXNlX2FkZHJlc3MsDQogICBvZmZfdCBtYXhfb2Zmc2V0Ow0KICAgc3RydWN0 IGJhY2t0cmFjZV92aWV3IGRlYnVnX3ZpZXc7DQogICBpbnQgZGVidWdfdmll d192YWxpZDsNCisgIGVudW0gdHlwZV9vZl9lbGYgZWxmX3R5cGU7DQogDQog ICAqZm91bmRfc3ltID0gMDsNCiAgICpmb3VuZF9kd2FyZiA9IDA7DQpAQCAt NTU3LDk0ICsxNDAxLDIwIEBAIGVsZl9hZGQgKHN0cnVjdCBiYWNrdHJhY2Vf c3RhdGUgKnN0YXRlLCBpbnQgZGVzY3JpcHRvciwgdWludHB0cl90IGJhc2Vf YWRkcmVzcywNCiAgIHN0cnRhYl92aWV3X3ZhbGlkID0gMDsNCiAgIGRlYnVn X3ZpZXdfdmFsaWQgPSAwOw0KIA0KLSAgaWYgKCFiYWNrdHJhY2VfZ2V0X3Zp ZXcgKHN0YXRlLCBkZXNjcmlwdG9yLCAwLCBzaXplb2YgZWhkciwgZXJyb3Jf Y2FsbGJhY2ssDQotCQkJICAgZGF0YSwgJmVoZHJfdmlldykpDQotICAgIGdv dG8gZmFpbDsNCi0NCi0gIG1lbWNweSAoJmVoZHIsIGVoZHJfdmlldy5kYXRh LCBzaXplb2YgZWhkcik7DQotDQotICBiYWNrdHJhY2VfcmVsZWFzZV92aWV3 IChzdGF0ZSwgJmVoZHJfdmlldywgZXJyb3JfY2FsbGJhY2ssIGRhdGEpOw0K LQ0KLSAgaWYgKGVoZHIuZV9pZGVudFtFSV9NQUcwXSAhPSBFTEZNQUcwDQot ICAgICAgfHwgZWhkci5lX2lkZW50W0VJX01BRzFdICE9IEVMRk1BRzENCi0g ICAgICB8fCBlaGRyLmVfaWRlbnRbRUlfTUFHMl0gIT0gRUxGTUFHMg0KLSAg ICAgIHx8IGVoZHIuZV9pZGVudFtFSV9NQUczXSAhPSBFTEZNQUczKQ0KLSAg ICB7DQotICAgICAgZXJyb3JfY2FsbGJhY2sgKGRhdGEsICJleGVjdXRhYmxl IGZpbGUgaXMgbm90IEVMRiIsIDApOw0KLSAgICAgIGdvdG8gZmFpbDsNCi0g ICAgfQ0KLSAgaWYgKGVoZHIuZV9pZGVudFtFSV9WRVJTSU9OXSAhPSBFVl9D VVJSRU5UKQ0KKyAgZWxmX3R5cGUgPSBwcm9jZXNzX2VsZl9oZWFkZXIgKHN0 YXRlLCBkZXNjcmlwdG9yLCBlcnJvcl9jYWxsYmFjaywgZGF0YSwgZXhlLA0K KwkJCQkgJnNob2ZmLCAmc2hudW0sICZzaHN0cm5keCwgJmVoZHIpOw0KKyAg c3dpdGNoIChlbGZfdHlwZSkNCiAgICAgew0KLSAgICAgIGVycm9yX2NhbGxi YWNrIChkYXRhLCAiZXhlY3V0YWJsZSBmaWxlIGlzIHVucmVjb2duaXplZCBF TEYgdmVyc2lvbiIsIDApOw0KKyAgICAvKiBCaW5hcnkgY29tcGlsZWQgd2l0 aCBQSUUgb3B0aW9uLiAgKi8NCisgICAgY2FzZSBEWU46DQorICAgICAgcmV0 dXJuIC0xOw0KKyAgICBjYXNlIEVYRUM6DQorICAgICAgYnJlYWs7DQorICAg IC8qIEhlYWRlciBpcyBpbnZhbGlkLiAgKi8NCisgICAgY2FzZSBJTlZBTElE Og0KICAgICAgIGdvdG8gZmFpbDsNCiAgICAgfQ0KIA0KLSNpZiBCQUNLVFJB Q0VfRUxGX1NJWkUgPT0gMzINCi0jZGVmaW5lIEJBQ0tUUkFDRV9FTEZDTEFT UyBFTEZDTEFTUzMyDQotI2Vsc2UNCi0jZGVmaW5lIEJBQ0tUUkFDRV9FTEZD TEFTUyBFTEZDTEFTUzY0DQotI2VuZGlmDQotDQotICBpZiAoZWhkci5lX2lk ZW50W0VJX0NMQVNTXSAhPSBCQUNLVFJBQ0VfRUxGQ0xBU1MpDQotICAgIHsN Ci0gICAgICBlcnJvcl9jYWxsYmFjayAoZGF0YSwgImV4ZWN1dGFibGUgZmls ZSBpcyB1bmV4cGVjdGVkIEVMRiBjbGFzcyIsIDApOw0KLSAgICAgIGdvdG8g ZmFpbDsNCi0gICAgfQ0KLQ0KLSAgaWYgKGVoZHIuZV9pZGVudFtFSV9EQVRB XSAhPSBFTEZEQVRBMkxTQg0KLSAgICAgICYmIGVoZHIuZV9pZGVudFtFSV9E QVRBXSAhPSBFTEZEQVRBMk1TQikNCi0gICAgew0KLSAgICAgIGVycm9yX2Nh bGxiYWNrIChkYXRhLCAiZXhlY3V0YWJsZSBmaWxlIGhhcyB1bmtub3duIGVu ZGlhbm5lc3MiLCAwKTsNCi0gICAgICBnb3RvIGZhaWw7DQotICAgIH0NCi0N Ci0gIC8qIElmIHRoZSBleGVjdXRhYmxlIGlzIEVUX0RZTiwgaXQgaXMgZWl0 aGVyIGEgUElFLCBvciB3ZSBhcmUgcnVubmluZw0KLSAgICAgZGlyZWN0bHkg YSBzaGFyZWQgbGlicmFyeSB3aXRoIC5pbnRlcnAuICBXZSBuZWVkIHRvIHdh aXQgZm9yDQotICAgICBkbF9pdGVyYXRlX3BoZHIgaW4gdGhhdCBjYXNlIHRv IGRldGVybWluZSB0aGUgYWN0dWFsIGJhc2VfYWRkcmVzcy4gICovDQotICBp ZiAoZXhlICYmIGVoZHIuZV90eXBlID09IEVUX0RZTikNCi0gICAgcmV0dXJu IC0xOw0KLQ0KLSAgc2hvZmYgPSBlaGRyLmVfc2hvZmY7DQotICBzaG51bSA9 IGVoZHIuZV9zaG51bTsNCi0gIHNoc3RybmR4ID0gZWhkci5lX3Noc3RybmR4 Ow0KLQ0KLSAgaWYgKChzaG51bSA9PSAwIHx8IHNoc3RybmR4ID09IFNITl9Y SU5ERVgpDQotICAgICAgJiYgc2hvZmYgIT0gMCkNCi0gICAgew0KLSAgICAg IHN0cnVjdCBiYWNrdHJhY2VfdmlldyBzaGRyX3ZpZXc7DQotICAgICAgY29u c3QgYl9lbGZfc2hkciAqc2hkcjsNCi0NCi0gICAgICBpZiAoIWJhY2t0cmFj ZV9nZXRfdmlldyAoc3RhdGUsIGRlc2NyaXB0b3IsIHNob2ZmLCBzaXplb2Yg c2hkciwNCi0JCQkgICAgICAgZXJyb3JfY2FsbGJhY2ssIGRhdGEsICZzaGRy X3ZpZXcpKQ0KLQlnb3RvIGZhaWw7DQotDQotICAgICAgc2hkciA9IChjb25z dCBiX2VsZl9zaGRyICopIHNoZHJfdmlldy5kYXRhOw0KLQ0KLSAgICAgIGlm IChzaG51bSA9PSAwKQ0KLQlzaG51bSA9IHNoZHItPnNoX3NpemU7DQotDQot ICAgICAgaWYgKHNoc3RybmR4ID09IFNITl9YSU5ERVgpDQotCXsNCi0JICBz aHN0cm5keCA9IHNoZHItPnNoX2xpbms7DQotDQotCSAgLyogVmVyc2lvbnMg b2YgdGhlIEdOVSBiaW51dGlscyBiZXR3ZWVuIDIuMTIgYW5kIDIuMTggZGlk DQotCSAgICAgbm90IGhhbmRsZSBvYmplY3RzIHdpdGggbW9yZSB0aGFuIFNI Tl9MT1JFU0VSVkUgc2VjdGlvbnMNCi0JICAgICBjb3JyZWN0bHkuICBBbGwg bGFyZ2Ugc2VjdGlvbiBpbmRleGVzIHdlcmUgb2Zmc2V0IGJ5DQotCSAgICAg MHgxMDAuICBUaGVyZSBpcyBtb3JlIGluZm9ybWF0aW9uIGF0DQotCSAgICAg aHR0cDovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9p ZC01OTAwIC4NCi0JICAgICBGb3J0dW5hdGVseSB0aGVzZSBvYmplY3QgZmls ZXMgYXJlIGVhc3kgdG8gZGV0ZWN0LCBhcyB0aGUNCi0JICAgICBHTlUgYmlu dXRpbHMgYWx3YXlzIHB1dCB0aGUgc2VjdGlvbiBoZWFkZXIgc3RyaW5nIHRh YmxlDQotCSAgICAgbmVhciB0aGUgZW5kIG9mIHRoZSBsaXN0IG9mIHNlY3Rp b25zLiAgVGh1cyBpZiB0aGUNCi0JICAgICBzZWN0aW9uIGhlYWRlciBzdHJp bmcgdGFibGUgaW5kZXggaXMgbGFyZ2VyIHRoYW4gdGhlDQotCSAgICAgbnVt YmVyIG9mIHNlY3Rpb25zLCB0aGVuIHdlIGtub3cgd2UgaGF2ZSB0byBzdWJ0 cmFjdA0KLQkgICAgIDB4MTAwIHRvIGdldCB0aGUgcmVhbCBzZWN0aW9uIGlu ZGV4LiAgKi8NCi0JICBpZiAoc2hzdHJuZHggPj0gc2hudW0gJiYgc2hzdHJu ZHggPj0gU0hOX0xPUkVTRVJWRSArIDB4MTAwKQ0KLQkgICAgc2hzdHJuZHgg LT0gMHgxMDA7DQotCX0NCi0NCi0gICAgICBiYWNrdHJhY2VfcmVsZWFzZV92 aWV3IChzdGF0ZSwgJnNoZHJfdmlldywgZXJyb3JfY2FsbGJhY2ssIGRhdGEp Ow0KLSAgICB9DQotDQogICAvKiBUbyB0cmFuc2xhdGUgUEMgdG8gZmlsZS9s aW5lIHdoZW4gdXNpbmcgRFdBUkYsIHdlIG5lZWQgdG8gZmluZA0KICAgICAg dGhlIC5kZWJ1Z19pbmZvIGFuZCAuZGVidWdfbGluZSBzZWN0aW9ucy4gICov DQogDQpAQCAtODc3LDYgKzE2NDcsNyBAQCBwaGRyX2NhbGxiYWNrIChzdHJ1 Y3QgZGxfcGhkcl9pbmZvICppbmZvLCBzaXplX3Qgc2l6ZSBBVFRSSUJVVEVf VU5VU0VELA0KICAgaW50IGRvZXNfbm90X2V4aXN0Ow0KICAgZmlsZWxpbmUg ZWxmX2ZpbGVsaW5lX2ZuOw0KICAgaW50IGZvdW5kX2R3YXJmOw0KKyAgaW50 IGRlYnVnX2Rlc2NyaXB0b3I7DQogDQogICAvKiBUaGVyZSBpcyBub3QgbXVj aCB3ZSBjYW4gZG8gaWYgd2UgZG9uJ3QgaGF2ZSB0aGUgbW9kdWxlIG5hbWUs DQogICAgICB1bmxlc3MgZXhlY3V0YWJsZSBpcyBFVF9EWU4sIHdoZXJlIHdl IGV4cGVjdCB0aGUgdmVyeSBmaXJzdA0KQEAgLTg5NSwxMSArMTY2NiwxOSBA QCBwaGRyX2NhbGxiYWNrIChzdHJ1Y3QgZGxfcGhkcl9pbmZvICppbmZvLCBz aXplX3Qgc2l6ZSBBVFRSSUJVVEVfVU5VU0VELA0KIAkgIGJhY2t0cmFjZV9j bG9zZSAocGQtPmV4ZV9kZXNjcmlwdG9yLCBwZC0+ZXJyb3JfY2FsbGJhY2ss IHBkLT5kYXRhKTsNCiAJICBwZC0+ZXhlX2Rlc2NyaXB0b3IgPSAtMTsNCiAJ fQ0KKyAgICAgIGRlYnVnX2Rlc2NyaXB0b3IgPSAtMTsNCiANCiAgICAgICBk ZXNjcmlwdG9yID0gYmFja3RyYWNlX29wZW4gKGluZm8tPmRscGlfbmFtZSwg cGQtPmVycm9yX2NhbGxiYWNrLA0KIAkJCQkgICBwZC0+ZGF0YSwgJmRvZXNf bm90X2V4aXN0KTsNCisNCiAgICAgICBpZiAoZGVzY3JpcHRvciA8IDApDQog CXJldHVybiAwOw0KKw0KKyAgICAgIGRlYnVnX2Rlc2NyaXB0b3INCisJPSBi YWNrdHJhY2Vfb3Blbl9kZWJ1Z2ZpbGUgKGRlc2NyaXB0b3IsIGluZm8tPmRs cGlfbmFtZSwNCisJCQkJICAgIHBkLT5lcnJvcl9jYWxsYmFjaywgcGQtPmRh dGEsIHBkLT5zdGF0ZSk7DQorICAgICAgaWYgKGRlYnVnX2Rlc2NyaXB0b3Ig Pj0gMCkNCisJZGVzY3JpcHRvciA9IGRlYnVnX2Rlc2NyaXB0b3I7DQogICAg IH0NCiANCiAgIGlmIChlbGZfYWRkIChwZC0+c3RhdGUsIGRlc2NyaXB0b3Is IGluZm8tPmRscGlfYWRkciwgcGQtPmVycm9yX2NhbGxiYWNrLA0KZGlmZiAt LWdpdCBhL2xpYmJhY2t0cmFjZS9maWxlbGluZS5jIGIvbGliYmFja3RyYWNl L2ZpbGVsaW5lLmMNCmluZGV4IDBmZDM1MGEuLjFhNWNmZGEgMTAwNjQ0DQot LS0gYS9saWJiYWNrdHJhY2UvZmlsZWxpbmUuYw0KKysrIGIvbGliYmFja3Ry YWNlL2ZpbGVsaW5lLmMNCkBAIC01Nyw2ICs1Nyw3IEBAIGZpbGVsaW5lX2lu aXRpYWxpemUgKHN0cnVjdCBiYWNrdHJhY2Vfc3RhdGUgKnN0YXRlLA0KICAg aW50IHBhc3M7DQogICBpbnQgY2FsbGVkX2Vycm9yX2NhbGxiYWNrOw0KICAg aW50IGRlc2NyaXB0b3I7DQorICBpbnQgZGVidWdfZGVzY3JpcHRvcjsNCiAN CiAgIGlmICghc3RhdGUtPnRocmVhZGVkKQ0KICAgICBmYWlsZWQgPSBzdGF0 ZS0+ZmlsZWxpbmVfaW5pdGlhbGl6YXRpb25fZmFpbGVkOw0KQEAgLTc5LDYg KzgwLDcgQEAgZmlsZWxpbmVfaW5pdGlhbGl6ZSAoc3RydWN0IGJhY2t0cmFj ZV9zdGF0ZSAqc3RhdGUsDQogICAvKiBXZSBoYXZlIG5vdCBpbml0aWFsaXpl ZCB0aGUgaW5mb3JtYXRpb24uICBEbyBpdCBub3cuICAqLw0KIA0KICAgZGVz Y3JpcHRvciA9IC0xOw0KKyAgZGVidWdfZGVzY3JpcHRvciA9IC0xOw0KICAg Y2FsbGVkX2Vycm9yX2NhbGxiYWNrID0gMDsNCiAgIGZvciAocGFzcyA9IDA7 IHBhc3MgPCA0OyArK3Bhc3MpDQogICAgIHsNCkBAIC0xMDgsMTMgKzExMCwy MiBAQCBmaWxlbGluZV9pbml0aWFsaXplIChzdHJ1Y3QgYmFja3RyYWNlX3N0 YXRlICpzdGF0ZSwNCiANCiAgICAgICBkZXNjcmlwdG9yID0gYmFja3RyYWNl X29wZW4gKGZpbGVuYW1lLCBlcnJvcl9jYWxsYmFjaywgZGF0YSwNCiAJCQkJ ICAgJmRvZXNfbm90X2V4aXN0KTsNCisNCiAgICAgICBpZiAoZGVzY3JpcHRv ciA8IDAgJiYgIWRvZXNfbm90X2V4aXN0KQ0KIAl7DQogCSAgY2FsbGVkX2Vy cm9yX2NhbGxiYWNrID0gMTsNCiAJICBicmVhazsNCiAJfQ0KKw0KICAgICAg IGlmIChkZXNjcmlwdG9yID49IDApDQotCWJyZWFrOw0KKwl7DQorCSAgZGVi dWdfZGVzY3JpcHRvcg0KKwkgICAgPSBiYWNrdHJhY2Vfb3Blbl9kZWJ1Z2Zp bGUgKGRlc2NyaXB0b3IsIGZpbGVuYW1lLCBlcnJvcl9jYWxsYmFjaywNCisJ CQkJCWRhdGEsIHN0YXRlKTsNCisJICBpZiAoZGVidWdfZGVzY3JpcHRvciA+ PSAwKQ0KKwkgICAgZGVzY3JpcHRvciA9IGRlYnVnX2Rlc2NyaXB0b3I7DQor CSAgYnJlYWs7DQorCX0NCiAgICAgfQ0KIA0KICAgaWYgKGRlc2NyaXB0b3Ig PCAwKQ0KZGlmZiAtLWdpdCBhL2xpYmJhY2t0cmFjZS9pbnRlcm5hbC5oIGIv bGliYmFja3RyYWNlL2ludGVybmFsLmgNCmluZGV4IDg5YjdiZjcuLmRjNGI1 ZjggMTAwNjQ0DQotLS0gYS9saWJiYWNrdHJhY2UvaW50ZXJuYWwuaA0KKysr IGIvbGliYmFja3RyYWNlL2ludGVybmFsLmgNCkBAIC0xNzYsNiArMTc2LDE0 IEBAIHN0cnVjdCBiYWNrdHJhY2Vfdmlldw0KICAgc2l6ZV90IGxlbjsNCiB9 Ow0KIA0KKy8qIE9wZW4gZGVidWcgZmlsZSB3aG9zZSBuYW1lIGlzIHBsYWNl ZCBpbiBnbnVfZGVidWdsaW5rIHNlY3Rpb24uDQorICAgQ2hlY2sgdGhlIGNy YzMyIHN1bSBhbmQgc2VhcmNoIGZpbGUgd2l0aCBkZWJ1ZyBkYXRhLiBPbiBz dWNjZXNzIHJldHVybnMNCisgICBkZXNjcmlwdG9yIG9mIHRoYXQgZmlsZSBv biBmYWlsIC0xLiAgKi8NCisNCitleHRlcm4gaW50IGJhY2t0cmFjZV9vcGVu X2RlYnVnZmlsZSAoaW50IGRlc2NyaXB0b3IsIGNvbnN0IGNoYXIgKmZpbGVu YW1lLA0KKwkJCQkgICAgIGJhY2t0cmFjZV9lcnJvcl9jYWxsYmFjaywgdm9p ZCAqZGF0YSwNCisJCQkJICAgICBzdHJ1Y3QgYmFja3RyYWNlX3N0YXRlICpz dGF0ZSk7DQorDQogLyogQ3JlYXRlIGEgdmlldyBvZiBTSVpFIGJ5dGVzIGZy b20gREVTQ1JJUFRPUiBhdCBPRkZTRVQuICBTdG9yZSB0aGUNCiAgICByZXN1 bHQgaW4gKlZJRVcuICBSZXR1cm5zIDEgb24gc3VjY2VzcywgMCBvbiBlcnJv ci4gICovDQogZXh0ZXJuIGludCBiYWNrdHJhY2VfZ2V0X3ZpZXcgKHN0cnVj dCBiYWNrdHJhY2Vfc3RhdGUgKnN0YXRlLCBpbnQgZGVzY3JpcHRvciwNCi0t IA0KMS45LjENCg0K --------------509F80EA4462F616B3CE0CFF--