Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nNZMI-0008FM-43 for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Feb 2022 12:06:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nNZME-0001hc-VD for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Feb 2022 12:05:58 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nNZMD-0001hM-UF for pgsql-hackers@lists.postgresql.org; Fri, 25 Feb 2022 12:05:58 +0000 Received: from mail-40131.protonmail.ch ([185.70.40.131]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nNZM1-0002EZ-Pe for pgsql-hackers@lists.postgresql.org; Fri, 25 Feb 2022 12:05:56 +0000 Date: Fri, 25 Feb 2022 12:05:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1645790733; bh=bY+sRDG361Va6XrXRQs+WKi8KM50zFC986UsmhchLuY=; h=Date:To:From:Cc:Reply-To:Subject:Message-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID; b=lifNwpGRGokNP/Juaxh24ImCH7Lwnb7abRkIVdYBnt8EC0s/ZnR4vma7/wqVj2uCF 8p5CrSYyQCbGmgw/1L0n7hH/fAutR90gxz5W0adGOif/sjWLV5oxYff2EXGau9WZVE uwyDLgg7fvjtMYdNt6sp3iKPBLywFwwA5Els1xeIKOpBjUozEJ27i0q/yUJIMlCEEo XhDl4zsjYmpRfaYZtFLqbSlmYtPz87g8+tshhBn0sBwbdeGllY7GCnpCj61d0O8DJu 4lciaOEQAsqfLaD0IhCHjy6cZBM0SlmVcIpXF/F1XU2Qm+6cpNq4/LlxCB6JnAaO13 FscBGr6OCFdrw== To: PostgreSQL Hackers From: Georgios Cc: Rachel Heaton Reply-To: Georgios Subject: Add LZ4 compression in pg_dump Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="b1_cADRPmeDoX6AM1R6STGitpaiAUC2FNS8QAxyE4lpG4" X-Spam-Status: No, score=-1.2 required=10.0 tests=ALL_TRUSTED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,HTML_MESSAGE, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on mailout.protonmail.ch List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --b1_cADRPmeDoX6AM1R6STGitpaiAUC2FNS8QAxyE4lpG4 Content-Type: multipart/alternative; boundary="b2_cADRPmeDoX6AM1R6STGitpaiAUC2FNS8QAxyE4lpG4" --b2_cADRPmeDoX6AM1R6STGitpaiAUC2FNS8QAxyE4lpG4 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 SGksCgpwbGVhc2UgZmluZCBhdHRhY2hlZCBhIHBhdGNoc2V0IHdoaWNoIGFkZHMgbHo0IGNvbXBy ZXNzaW9uIGluIHBnX2R1bXAuCgpUaGUgZmlyc3QgY29tbWl0IGRvZXMgdGhlIGhlYXZ5IGxpZnRp bmcgcmVxdWlyZWQgZm9yIGFkZGl0aW9uYWwgY29tcHJlc3Npb24gbWV0aG9kcy4KSXQgZXhwYW5k cyB0ZXN0aW5nIGNvdmVyYWdlIGZvciB0aGUgYWxyZWFkeSBzdXBwb3J0ZWQgZ3ppcCBjb21wcmVz c2lvbi4gQ29tbWl0CmJmOWFhNDkwZGIgaW50cm9kdWNlZCBjZnAgaW4gY29tcHJlc3NfaW8ue2Ms aH0gd2l0aCB0aGUgaW50ZW50IG9mIHVuaWZ5aW5nCmNvbXByZXNzaW9uIHJlbGF0ZWQgY29kZSBh bmQgYWxsb3cgZm9yIHRoZSBpbnRyb2R1Y3Rpb24gb2YgYWRkaXRpb25hbCBhcmNoaXZlCmZvcm1h dHMuIEhvd2V2ZXIsIHBnX2JhY2t1cF9hcmNoaXZlci5jIHdhcyBub3QgdXNpbmcgdGhhdCBBUEku IFRoaXMgY29tbWl0CnRlYWNoZXMgcGdfYmFja3VwX2FyY2hpdmVyLmMgYWJvdXQgY2ZwIGFuZCBp cyB1c2luZyBpdCB0aHJvdWdoIG91dC4KCkZ1cnRoZXJtb3JlLCBjb21wcmVzc2lvbiB3YXMgY2hv c2VuIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUgbGV2ZWwgcGFzc2VkCmFzIGFuIGFyZ3VtZW50 IGR1cmluZyB0aGUgaW52b2NhdGlvbiBvZiBwZ19kdW1wIG9yIHNvbWUgaGFyZGNvZGVkIGRlZmF1 bHRzLiBUaGlzCmRvZXMgbm90IHNjYWxlIGZvciBtb3JlIHRoYW4gb25lIGNvbXByZXNzaW9uIG1l dGhvZHMuIE5vdyB0aGUgbWV0aG9kIHVzZWQgZm9yCmNvbXByZXNzaW9uIGNhbiBiZSBleHBsaWNp dGx5IHJlcXVlc3RlZCBkdXJpbmcgY29tbWFuZCBpbnZvY2F0aW9uLCBvciBzZXQgZHVyaW5nCmhh cmRjb2RlZCBkZWZhdWx0cy4gVGhlbiBpdCBpcyBzdG9yZWQgaW4gdGhlIHJlbGV2YW50IHN0cnVj dHMgYW5kIHBhc3NlZCBpbiB0aGUKcmVsZXZhbnQgZnVuY3Rpb25zLCBhbG9uZyBzaWRlIGNvbXBy ZXNzaW9uIGxldmVsIHdoaWNoIGhhcyBsb3N0IGl0J3Mgc3BlY2lhbAptZWFuaW5nLiBUaGUgbWV0 aG9kIGZvciBjb21wcmVzc2lvbiBpcyBub3QgeWV0IHN0b3JlZCBpbiB0aGUgYWN0dWFsIGFyY2hp dmUuClRoaXMgaXMgZG9uZSBpbiB0aGUgbmV4dCBjb21taXQgd2hpY2ggZG9lcyBpbnRyb2R1Y2Ug YSBuZXcgbWV0aG9kLgoKVGhlIHByZXZpb3VzbHkgbmFtZWQgQ29tcHJlc3Npb25BbGdvcml0aG0g ZW51bSBpcyBjaGFuZ2VkIGZvcgpDb21wcmVzc2lvbk1ldGhvZCBzbyB0aGF0IGl0IG1hdGNoZXMg YmV0dGVyIHNpbWlsYXIgdmFyaWFibGVzIGZvdW5kIHRocm91Z2ggb3V0CnRoZSBjb2RlIGJhc2Uu CgpJbiBhIGZhc2hpb24gc2ltaWxhciB0byB0aGUgYmluYXJ5IGZvciBwZ19iYXNlYmFja3VwLCB0 aGUgbWV0aG9kIGZvciBjb21wcmVzc2lvbgppcyBwYXNzZWQgdXNpbmcgdGhlIGFscmVhZHkgZXhp c3RpbmcgLVovLS1jb21wcmVzcyBwYXJhbWV0ZXIgb2YgcGdfZHVtcC4gVGhlCmxlZ2FjeSBmb3Jt YXQgYW5kIGJlaGF2aW91ciBpcyBtYWludGFpbmVkLiBBZGRpdGlvbmFsbHksIHRoZSB1c2VyIGNh biBleHBsaWNpdGx5CnBhc3MgYSByZXF1ZXN0ZWQgbWV0aG9kIGFuZCBvcHRpb25hbHkgdGhlIGxl dmVsIHRvIGJlIHVzZWQgYWZ0ZXIgYSBzZW1pY29sb24sZS5nLiAtLWNvbXByZXNzPWd6aXA6NgoK VGhlIHNlY29uZCBjb21taXQgYWRkcyBMWjQgY29tcHJlc3Npb24gaW4gcGdfZHVtcCBhbmQgcGdf cmVzdG9yZS4KCldpdGhpbiBjb21wcmVzc19pby57YyxofSB0aGVyZSBhcmUgdHdvIGRpc3RpbmN0 IEFQSXMgZXhwb3NlZCwgdGhlIHN0cmVhbWluZyBBUEkKYW5kIGEgZmlsZSBBUEkuIFRoZSBmaXJz dCBvbmUsIGlzIGFpbWVkIGF0IGlubGluZWQgdXNlIGNhc2VzIGFuZCB0aHVzIHNpbXBsZQpsejQu aCBjYWxscyBjYW4gYmUgdXNlZCBkaXJlY3RseS4gVGhlIHNlY29uZCBvbmUgaXMgZ2VuZXJhdGlu ZyBvdXRwdXQsIG9yIGlzCnBhcnNpbmcgaW5wdXQsIHdoaWNoIGNhbiBiZSByZWFkL2dlbmVyYXRl ZCB2aWEgdGhlIGx6NCB1dGlsaXR5LgoKSW4gdGhlIGxhdGVyIGNhc2UsIHRoZSBBUEkgaXMgdXNp bmcgYW4gb3BhcXVlIHdyYXBwZXIgYXJvdW5kIGEgZmlsZSBzdHJlYW0sCndoaWNoIGFxdWlyZWQg dmlhIGZvcGVuKCkgb3IgZ3pvcGVuKCkgcmVzcGVjdGl2ZWx5LiBJdCB3b3VsZCB0aGVuIHByb3Zp ZGUKd3JhcHBlcnMgYXJvdW5kIGZyZWFkKCksIGZ3cml0ZSgpLCBmZ2V0cygpLCBmZ2V0YygpLCBm ZW9mKCksIGFuZCBmY2xvc2UoKTsgb3IKdGhlaXIgZ3ogZXF1aXZhbGxlbnRzLiBIb3dldmVyIHRo ZSBMWjRGIGFwaSBkb2VzIG5vdCBwcm92aWRlIHRoaXMgZnVuY3Rpb25hbGl0eS4KU28gdGhpcyBo YXMgYmVlbiBpbXBsZW1lbnRlZCBsb2NhbHkuCgpJbiBvcmRlciB0byBtYWludGFpbiB0aGUgQVBJ IGNvbXBhdGliaWxpdHkgYSBuZXcgc3RydWN0dXJlIExaNEZpbGUgaXMKaW50cm9kdWNlZC4gSXQg aXMgcmVzcG9uc2libGUgZm9yIGtlZXBpbmcgc3RhdGUgYW5kIGFueSB5ZXQgdW51c2VkIGdlbmVy YXRlZApjb250ZW50LiBUaGUgbGF0ZXIgaXMgcmVxdWlyZWQgd2hlbiB0aGUgZ2VuZXJhdGVkIGRl Y29tcHJlc3NlZCBvdXRwdXQsIGV4Y2VlZHMKdGhlIGNhbGxlcidzIGJ1ZmZlciBjYXBhY2l0eS4K CkN1c3RvbSBjb21wcmVzc2VkIGFyY2hpdmVzIG5lZWQgdG8gbm93IHN0b3JlIHRoZSBjb21wcmVz c2lvbiBtZXRob2QgaW4gdGhlaXIKaGVhZGVyLiBUaGlzIHJlcXVpcmVzIGEgYnVtcCBpbiB0aGUg dmVyc2lvbiBudW1iZXIuIFRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbiBpcwpzdGlsbCBzdG9yZWQg aW4gdGhlIGR1bXAsIHRob3VnaCBhZG1pdHRlZGx5IGlzIG9mIG5vIGFwcGFyZW50IHVzZS4KClRo ZSBzZXJpZXMgaXMgYXV0aG9yZWQgYnkgbWUuIFJhY2hlbCBIZWF0b24gaGVscGVkIG91dCB3aXRo IHRoZSBleHBhbnNpb24Kb2YgdGhlIHRlc3RpbmcgY292ZXJhZ2UsIHRlc3RpbmcgaW4gZGlmZmVy ZW50IHBsYXRmb3JtcyBhbmQgcHJvdmlkaW5nIGRlYnVnIGluZm9ybWF0aW9uCm9uIHRob3NlLCBh cyB3ZWxsIGFzIG5hdGl2ZSBzcGVha2VyIHdvcmRpbmcuCgpDaGVlcnMsCi8vR2Vvcmdpb3M= --b2_cADRPmeDoX6AM1R6STGitpaiAUC2FNS8QAxyE4lpG4 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsOyBmb250LXNpemU6IDE0cHg7Ij5IaSw8L2Rp dj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTogYXJpYWw7IGZvbnQtc2l6ZTogMTRweDsiPjxicj48 L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTogYXJpYWw7IGZvbnQtc2l6ZTogMTRweDsiPnBs ZWFzZSBmaW5kIGF0dGFjaGVkIGEgcGF0Y2hzZXQgd2hpY2ggYWRkcyBsejQgY29tcHJlc3Npb24g aW4gcGdfZHVtcC48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTogYXJpYWw7IGZvbnQtc2l6 ZTogMTRweDsiPjxicj48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTogYXJpYWw7IGZvbnQt c2l6ZTogMTRweDsiPlRoZSBmaXJzdCBjb21taXQmbmJzcDs8c3Bhbj5kb2VzIHRoZSBoZWF2eSBs aWZ0aW5nIHJlcXVpcmVkIGZvciBhZGRpdGlvbmFsIGNvbXByZXNzaW9uIG1ldGhvZHMuPC9zcGFu PjxkaXY+PHNwYW4+SXQgZXhwYW5kcyB0ZXN0aW5nIGNvdmVyYWdlIGZvciB0aGUgYWxyZWFkeSBz dXBwb3J0ZWQgZ3ppcCBjb21wcmVzc2lvbi4gQ29tbWl0PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+ YmY5YWE0OTBkYiBpbnRyb2R1Y2VkIGNmcCBpbiBjb21wcmVzc19pby57YyxofSB3aXRoIHRoZSBp bnRlbnQgb2YgdW5pZnlpbmc8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj5jb21wcmVzc2lvbiByZWxh dGVkIGNvZGUgYW5kIGFsbG93IGZvciB0aGUgaW50cm9kdWN0aW9uIG9mIGFkZGl0aW9uYWwgYXJj aGl2ZTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPmZvcm1hdHMuIEhvd2V2ZXIsIHBnX2JhY2t1cF9h cmNoaXZlci5jIHdhcyBub3QgdXNpbmcgdGhhdCBBUEkuIFRoaXMgY29tbWl0PC9zcGFuPjwvZGl2 PjxkaXY+PHNwYW4+dGVhY2hlcyBwZ19iYWNrdXBfYXJjaGl2ZXIuYyBhYm91dCBjZnAgYW5kIGlz IHVzaW5nIGl0IHRocm91Z2ggb3V0Ljwvc3Bhbj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pjxz cGFuPkZ1cnRoZXJtb3JlLCBjb21wcmVzc2lvbiB3YXMgY2hvc2VuIGJhc2VkIG9uIHRoZSB2YWx1 ZSBvZiB0aGUgbGV2ZWwgcGFzc2VkPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+YXMgYW4gYXJndW1l bnQgZHVyaW5nIHRoZSBpbnZvY2F0aW9uIG9mIHBnX2R1bXAgb3Igc29tZSBoYXJkY29kZWQgZGVm YXVsdHMuIFRoaXM8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj5kb2VzIG5vdCBzY2FsZSBmb3IgbW9y ZSB0aGFuIG9uZSBjb21wcmVzc2lvbiBtZXRob2RzLiBOb3cgdGhlIG1ldGhvZCB1c2VkIGZvcjwv c3Bhbj48L2Rpdj48ZGl2PjxzcGFuPmNvbXByZXNzaW9uIGNhbiBiZSBleHBsaWNpdGx5IHJlcXVl c3RlZCBkdXJpbmcgY29tbWFuZCBpbnZvY2F0aW9uLCBvciBzZXQgZHVyaW5nPC9zcGFuPjwvZGl2 PjxkaXY+PHNwYW4+aGFyZGNvZGVkIGRlZmF1bHRzLiBUaGVuIGl0IGlzIHN0b3JlZCBpbiB0aGUg cmVsZXZhbnQgc3RydWN0cyBhbmQgcGFzc2VkIGluIHRoZTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu PnJlbGV2YW50IGZ1bmN0aW9ucywgYWxvbmcgc2lkZSBjb21wcmVzc2lvbiBsZXZlbCB3aGljaCBo YXMgbG9zdCBpdCdzIHNwZWNpYWw8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj5tZWFuaW5nLiBUaGUg bWV0aG9kIGZvciBjb21wcmVzc2lvbiBpcyBub3QgeWV0IHN0b3JlZCBpbiB0aGUgYWN0dWFsIGFy Y2hpdmUuPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+VGhpcyBpcyBkb25lIGluIHRoZSBuZXh0IGNv bW1pdCB3aGljaCBkb2VzIGludHJvZHVjZSBhIG5ldyBtZXRob2QuPC9zcGFuPjwvZGl2PjxkaXY+ PGJyPjwvZGl2PjxkaXY+PHNwYW4+VGhlIHByZXZpb3VzbHkgbmFtZWQgQ29tcHJlc3Npb25BbGdv cml0aG0gZW51bSBpcyBjaGFuZ2VkIGZvcjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPkNvbXByZXNz aW9uTWV0aG9kIHNvIHRoYXQgaXQgbWF0Y2hlcyBiZXR0ZXIgc2ltaWxhciB2YXJpYWJsZXMgZm91 bmQgdGhyb3VnaCBvdXQ8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj50aGUgY29kZSBiYXNlLjwvc3Bh bj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxzcGFuPkluIGEgZmFzaGlvbiBzaW1pbGFyIHRv IHRoZSBiaW5hcnkgZm9yIHBnX2Jhc2ViYWNrdXAsIHRoZSBtZXRob2QgZm9yIGNvbXByZXNzaW9u PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+aXMgcGFzc2VkIHVzaW5nIHRoZSBhbHJlYWR5IGV4aXN0 aW5nIC1aLy0tY29tcHJlc3MgcGFyYW1ldGVyIG9mIHBnX2R1bXAuIFRoZTwvc3Bhbj48L2Rpdj48 ZGl2PjxzcGFuPmxlZ2FjeSBmb3JtYXQgYW5kIGJlaGF2aW91ciBpcyBtYWludGFpbmVkLiBBZGRp dGlvbmFsbHksIHRoZSB1c2VyIGNhbiBleHBsaWNpdGx5PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+ cGFzcyBhIHJlcXVlc3RlZCBtZXRob2QgYW5kIG9wdGlvbmFseSB0aGUgbGV2ZWwgdG8gYmUgdXNl ZCBhZnRlciBhIHNlbWljb2xvbiw8L3NwYW4+PC9kaXY+PHNwYW4+ZS5nLiAtLWNvbXByZXNzPWd6 aXA6Njwvc3Bhbj48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsOyBmb250 LXNpemU6IDE0cHg7Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsOyBm b250LXNpemU6IDE0cHg7Ij5UaGUgc2Vjb25kIGNvbW1pdCBhZGRzIExaNCBjb21wcmVzc2lvbiBp biBwZ19kdW1wIGFuZCBwZ19yZXN0b3JlLjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBh cmlhbDsgZm9udC1zaXplOiAxNHB4OyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5 OiBhcmlhbDsgZm9udC1zaXplOiAxNHB4OyI+PHNwYW4+V2l0aGluIGNvbXByZXNzX2lvLntjLGh9 IHRoZXJlIGFyZSB0d28gZGlzdGluY3QgQVBJcyBleHBvc2VkLCB0aGUgc3RyZWFtaW5nIEFQSTwv c3Bhbj48ZGl2PjxzcGFuPmFuZCBhIGZpbGUgQVBJLiBUaGUgZmlyc3Qgb25lLCBpcyBhaW1lZCBh dCBpbmxpbmVkIHVzZSBjYXNlcyBhbmQgdGh1cyBzaW1wbGU8L3NwYW4+PC9kaXY+PGRpdj48c3Bh bj5sejQuaCBjYWxscyBjYW4gYmUgdXNlZCBkaXJlY3RseS4gVGhlIHNlY29uZCBvbmUgaXMgZ2Vu ZXJhdGluZyBvdXRwdXQsIG9yIGlzPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+cGFyc2luZyBpbnB1 dCwgd2hpY2ggY2FuIGJlIHJlYWQvZ2VuZXJhdGVkIHZpYSB0aGUgbHo0IHV0aWxpdHkuPC9zcGFu PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PHNwYW4+SW4gdGhlIGxhdGVyIGNhc2UsIHRoZSBB UEkgaXMgdXNpbmcgYW4gb3BhcXVlIHdyYXBwZXIgYXJvdW5kIGEgZmlsZSBzdHJlYW0sPC9zcGFu PjwvZGl2PjxkaXY+PHNwYW4+d2hpY2ggYXF1aXJlZCB2aWEgZm9wZW4oKSBvciBnem9wZW4oKSBy ZXNwZWN0aXZlbHkuIEl0IHdvdWxkIHRoZW4gcHJvdmlkZTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu PndyYXBwZXJzIGFyb3VuZCBmcmVhZCgpLCBmd3JpdGUoKSwgZmdldHMoKSwgZmdldGMoKSwgZmVv ZigpLCBhbmQgZmNsb3NlKCk7IG9yPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4+dGhlaXIgZ3ogZXF1 aXZhbGxlbnRzLiBIb3dldmVyIHRoZSBMWjRGIGFwaSBkb2VzIG5vdCBwcm92aWRlIHRoaXMgZnVu Y3Rpb25hbGl0eS48L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj5TbyB0aGlzIGhhcyBiZWVuIGltcGxl bWVudGVkIGxvY2FseS48L3NwYW4+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48c3Bhbj5JbiBv cmRlciB0byBtYWludGFpbiB0aGUgQVBJIGNvbXBhdGliaWxpdHkgYSBuZXcgc3RydWN0dXJlIExa NEZpbGUgaXM8L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj5pbnRyb2R1Y2VkLiBJdCBpcyByZXNwb25z aWJsZSBmb3Iga2VlcGluZyBzdGF0ZSBhbmQgYW55IHlldCB1bnVzZWQgZ2VuZXJhdGVkPC9zcGFu PjwvZGl2PjxkaXY+PHNwYW4+Y29udGVudC4gVGhlIGxhdGVyIGlzIHJlcXVpcmVkIHdoZW4gdGhl IGdlbmVyYXRlZCBkZWNvbXByZXNzZWQgb3V0cHV0LCBleGNlZWRzPC9zcGFuPjwvZGl2PjxkaXY+ PHNwYW4+dGhlIGNhbGxlcidzIGJ1ZmZlciBjYXBhY2l0eS48L3NwYW4+PC9kaXY+PGRpdj48YnI+ PC9kaXY+PGRpdj48c3Bhbj5DdXN0b20gY29tcHJlc3NlZCBhcmNoaXZlcyBuZWVkIHRvIG5vdyBz dG9yZSB0aGUgY29tcHJlc3Npb24gbWV0aG9kIGluIHRoZWlyPC9zcGFuPjwvZGl2PjxkaXY+PHNw YW4+aGVhZGVyLiBUaGlzIHJlcXVpcmVzIGEgYnVtcCBpbiB0aGUgdmVyc2lvbiBudW1iZXIuIFRo ZSBsZXZlbCBvZiBjb21wcmVzc2lvbiBpczwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPnN0aWxsIHN0 b3JlZCBpbiB0aGUgZHVtcCwgdGhvdWdoIGFkbWl0dGVkbHkgaXMgb2Ygbm8gYXBwYXJlbnQgdXNl Ljwvc3Bhbj48L2Rpdj48c3Bhbj48L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6 IGFyaWFsOyBmb250LXNpemU6IDE0cHg7Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1p bHk6IGFyaWFsOyBmb250LXNpemU6IDE0cHg7Ij48YnI+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1m YW1pbHk6IGFyaWFsOyBmb250LXNpemU6IDE0cHg7Ij5UaGUgc2VyaWVzIGlzIGF1dGhvcmVkIGJ5 IG1lLiBSYWNoZWwgSGVhdG9uIGhlbHBlZCBvdXQgd2l0aCB0aGUgZXhwYW5zaW9uPC9kaXY+PGRp diBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsOyBmb250LXNpemU6IDE0cHg7Ij5vZiB0aGUgdGVz dGluZyBjb3ZlcmFnZSwgdGVzdGluZyBpbiBkaWZmZXJlbnQgcGxhdGZvcm1zIGFuZCBwcm92aWRp bmcgZGVidWcgaW5mb3JtYXRpb248L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTogYXJpYWw7 IGZvbnQtc2l6ZTogMTRweDsiPm9uIHRob3NlLCBhcyB3ZWxsIGFzIG5hdGl2ZSBzcGVha2VyIHdv cmRpbmcuPGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbDsgZm9udC1zaXpl OiAxNHB4OyI+PGJyPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbDsgZm9udC1z aXplOiAxNHB4OyI+Q2hlZXJzLDxicj48L2Rpdj48ZGl2IGNsYXNzPSJwcm90b25tYWlsX3NpZ25h dHVyZV9ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbDsgZm9udC1zaXplOiAxNHB4OyI+ DQogICAgPGRpdiBjbGFzcz0icHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2stdXNlciI+DQogICAg ICAgIDxkaXY+Ly9HZW9yZ2lvczwvZGl2Pg0KICAgIDwvZGl2Pg0KDQogICAgICAgICAgICA8ZGl2 IGNsYXNzPSJwcm90b25tYWlsX3NpZ25hdHVyZV9ibG9jay1wcm90b24gcHJvdG9ubWFpbF9zaWdu YXR1cmVfYmxvY2stZW1wdHkiPg0KDQogICAgICAgICAgICA8L2Rpdj4NCjwvZGl2Pg0K --b2_cADRPmeDoX6AM1R6STGitpaiAUC2FNS8QAxyE4lpG4-- --b1_cADRPmeDoX6AM1R6STGitpaiAUC2FNS8QAxyE4lpG4 Content-Type: text/x-patch; name=v1-0001-Prepare-pg_dump-for-additional-compression-method.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v1-0001-Prepare-pg_dump-for-additional-compression-method.patch RnJvbSA4ZGZlMTJiMDgzNzg1NzFhZGQ2ZTFkMTc4YmVkOTdhNjFlOTg4NTkzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IE1vbiwgMjIgTm92IDIwMjEgMDk6NTg6NDkgKzAwMDAKU3ViamVjdDogW1BBVENIIHYx IDEvMl0gUHJlcGFyZSBwZ19kdW1wIGZvciBhZGRpdGlvbmFsIGNvbXByZXNzaW9uIG1ldGhvZHMK ClRoaXMgY29tbW1pdCBkb2VzIHRoZSBoZWF2eSBsaWZ0aW5nIHJlcXVpcmVkIGZvciBhZGRpdGlv bmFsIGNvbXByZXNzaW9uIG1ldGhvZHMuCkl0IGV4cGFuZHMgdGVzdGluZyBjb3ZlcmFnZSBmb3Ig dGhlIGFscmVhZHkgc3VwcG9ydGVkIGd6aXAgY29tcHJlc3Npb24uIENvbW1pdApiZjlhYTQ5MGRi IGludHJvZHVjZWQgY2ZwIGluIGNvbXByZXNzX2lvLntjLGh9IHdpdGggdGhlIGludGVudCBvZiB1 bmlmeWluZwpjb21wcmVzc2lvbiByZWxhdGVkIGNvZGUgYW5kIGFsbG93IGZvciB0aGUgaW50cm9k dWN0aW9uIG9mIGFkZGl0aW9uYWwgYXJjaGl2ZQpmb3JtYXRzLiBIb3dldmVyLCBwZ19iYWNrdXBf YXJjaGl2ZXIuYyB3YXMgbm90IHVzaW5nIHRoYXQgQVBJLiBUaGlzIGNvbW1pdAp0ZWFjaGVzIHBn X2JhY2t1cF9hcmNoaXZlci5jIGFib3V0IGNmcCBhbmQgaXMgdXNpbmcgaXQgdGhyb3VnaCBvdXQu CgpGdXJ0aGVybW9yZSwgY29tcHJlc3Npb24gd2FzIGNob3NlbiBiYXNlZCBvbiB0aGUgdmFsdWUg b2YgdGhlIGxldmVsIHBhc3NlZAphcyBhbiBhcmd1bWVudCBkdXJpbmcgdGhlIGludm9jYXRpb24g b2YgcGdfZHVtcCBvciBzb21lIGhhcmRjb2RlZCBkZWZhdWx0cy4gVGhpcwpkb2VzIG5vdCBzY2Fs ZSBmb3IgbW9yZSB0aGFuIG9uZSBjb21wcmVzc2lvbiBtZXRob2RzLiBOb3cgdGhlIG1ldGhvZCB1 c2VkIGZvcgpjb21wcmVzc2lvbiBjYW4gYmUgZXhwbGljaXRseSByZXF1ZXN0ZWQgZHVyaW5nIGNv bW1hbmQgaW52b2NhdGlvbiwgb3Igc2V0IGR1cmluZwpoYXJkY29kZWQgZGVmYXVsdHMuIFRoZW4g aXQgaXMgc3RvcmVkIGluIHRoZSByZWxldmFudCBzdHJ1Y3RzIGFuZCBwYXNzZWQgaW4gdGhlCnJl bGV2YW50IGZ1bmN0aW9ucywgYWxvbmcgc2lkZSBjb21wcmVzc2lvbiBsZXZlbCB3aGljaCBoYXMg bG9zdCBpdCdzIHNwZWNpYWwKbWVhbmluZy4gVGhlIG1ldGhvZCBmb3IgY29tcHJlc3Npb24gaXMg bm90IHlldCBzdG9yZWQgaW4gdGhlIGFjdHVhbCBhcmNoaXZlLgpUaGlzIGlzIGRvbmUgaW4gdGhl IG5leHQgY29tbWl0IHdoaWNoIGRvZXMgaW50cm9kdWNlIGEgbmV3IG1ldGhvZC4KClRoZSBwcmV2 aW91c2x5IG5hbWVkIENvbXByZXNzaW9uQWxnb3JpdGhtIGVudW0gaXMgY2hhbmdlZCBmb3IKQ29t cHJlc3Npb25NZXRob2Qgc28gdGhhdCBpdCBtYXRjaGVzIGJldHRlciBzaW1pbGFyIHZhcmlhYmxl cyBmb3VuZCB0aHJvdWdoIG91dAp0aGUgY29kZSBiYXNlLgoKSW4gYSBmYXNoaW9uIHNpbWlsYXIg dG8gdGhlIGJpbmFyeSBmb3IgcGdfYmFzZWJhY2t1cCwgdGhlIG1ldGhvZCBmb3IgY29tcHJlc3Np b24KaXMgcGFzc2VkIHVzaW5nIHRoZSBhbHJlYWR5IGV4aXN0aW5nIC1aLy0tY29tcHJlc3MgcGFy YW1ldGVyIG9mIHBnX2R1bXAuIFRoZQpsZWdhY3kgZm9ybWF0IGFuZCBiZWhhdmlvdXIgaXMgbWFp bnRhaW5lZC4gQWRkaXRpb25hbGx5LCB0aGUgdXNlciBjYW4gZXhwbGljaXRseQpwYXNzIGEgcmVx dWVzdGVkIG1ldGhvZCBhbmQgb3B0aW9uYWx5IHRoZSBsZXZlbCB0byBiZSB1c2VkIGFmdGVyIGEg c2VtaWNvbG9uLAplLmcuIC0tY29tcHJlc3M9Z3ppcDo2Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9w Z19kdW1wLnNnbWwgICAgICAgICB8ICAzMCArLQogc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlICAg ICAgICAgICAgICB8ICAgMiArCiBzcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uYyAgICAgICAg IHwgNDE2ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tCiBzcmMvYmluL3BnX2R1bXAvY29tcHJl c3NfaW8uaCAgICAgICAgIHwgIDQwICsrLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oICAg ICAgICAgICB8ICAxMyArLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICB8 IDE3MSArKysrKy0tLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oICB8 ICA0NiArLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfY3VzdG9tLmMgICAgfCAgMTEgKy0K IHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMgfCAgMTIgKy0KIHNyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfdGFyLmMgICAgICAgfCAgMTYgKy0KIHNyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMgICAgICAgICAgICAgfCAxNTIgKysrKysrKystLQogc3JjL2Jpbi9wZ19kdW1wL3Qv MDAxX2Jhc2ljLnBsICAgICAgICB8ICAxMCArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVt cC5wbCAgICAgIHwgIDkyICsrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICB8ICAgMiArLQogMTQgZmlsZXMgY2hhbmdlZCwgNjU5IGluc2VydGlvbnMoKyksIDM1NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX2R1bXAuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCmluZGV4IDJmMDA0MmZkOTYuLjk5MmI3MzEy ZGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCkBAIC02NDQsMTcgKzY0NCwzMSBAQCBQb3N0Z3JlU1FM IGRvY3VtZW50YXRpb24KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgPHZhcmxpc3RlbnRy eT4KLSAgICAgIDx0ZXJtPjxvcHRpb24+LVogPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PjAuLjk8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KLSAgICAgIDx0ZXJtPjxvcHRpb24+ LS1jb21wcmVzcz08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+MC4uOTwvcmVwbGFjZWFi bGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlvbj4tWiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+bGV2ZWw8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KKyAg ICAgIDx0ZXJtPjxvcHRpb24+LVogPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1ldGhv ZDwvcmVwbGFjZWFibGU+PC9vcHRpb24+Wzo8cmVwbGFjZWFibGU+bGV2ZWw8L3JlcGxhY2VhYmxl Pl08L3Rlcm0+CisgICAgICA8dGVybT48b3B0aW9uPi0tY29tcHJlc3M9PHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmxldmVsPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAg ICA8dGVybT48b3B0aW9uPi0tY29tcHJlc3M9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm1ldGhvZDwvcmVwbGFjZWFibGU+PC9vcHRpb24+Wzo8cmVwbGFjZWFibGU+bGV2ZWw8L3JlcGxh Y2VhYmxlPl08L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAg IFNwZWNpZnkgdGhlIGNvbXByZXNzaW9uIGxldmVsIHRvIHVzZS4gIFplcm8gbWVhbnMgbm8gY29t cHJlc3Npb24uCisgICAgICAgIFNwZWNpZnkgdGhlIGNvbXByZXNzaW9uIG1ldGhvZCBhbmQvb3Ig dGhlIGNvbXByZXNzaW9uIGxldmVsIHRvIHVzZS4KKyAgICAgICAgVGhlIGNvbXByZXNzaW9uIG1l dGhvZCBjYW4gYmUgc2V0IHRvIDxsaXRlcmFsPmd6aXA8L2xpdGVyYWw+IG9yCisgICAgICAgIDxs aXRlcmFsPm5vbmU8L2xpdGVyYWw+IGZvciBubyBjb21wcmVzc2lvbi4gQSBjb21wcmVzc2lvbiBs ZXZlbCBjYW4KKyAgICAgICAgYmUgb3B0aW9uYWxseSBzcGVjaWZpZWQsIGJ5IGFwcGVuZGluZyB0 aGUgbGV2ZWwgbnVtYmVyIGFmdGVyIGEgY29sb24KKyAgICAgICAgKDxsaXRlcmFsPjo8L2xpdGVy YWw+KS4gSWYgbm8gbGV2ZWwgaXMgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBjb21wcmVzc2lvbgor ICAgICAgICBsZXZlbCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgbWV0aG9kLiBJZiBv bmx5IGEgbGV2ZWwgaXMKKyAgICAgICAgc3BlY2lmaWVkIHdpdGhvdXQgbWVudGlvbmluZyBhIG1l dGhvZCwgPGxpdGVyYWw+Z3ppcDwvbGl0ZXJhbD4gY29tcHJlc3Npb24KKyAgICAgICAgd2lsbCBi ZSB1c2VkLgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgogICAgICAgICBGb3IgdGhl IGN1c3RvbSBhbmQgZGlyZWN0b3J5IGFyY2hpdmUgZm9ybWF0cywgdGhpcyBzcGVjaWZpZXMgY29t cHJlc3Npb24gb2YKLSAgICAgICAgaW5kaXZpZHVhbCB0YWJsZS1kYXRhIHNlZ21lbnRzLCBhbmQg dGhlIGRlZmF1bHQgaXMgdG8gY29tcHJlc3MKLSAgICAgICAgYXQgYSBtb2RlcmF0ZSBsZXZlbC4K LSAgICAgICAgRm9yIHBsYWluIHRleHQgb3V0cHV0LCBzZXR0aW5nIGEgbm9uemVybyBjb21wcmVz c2lvbiBsZXZlbCBjYXVzZXMKLSAgICAgICAgdGhlIGVudGlyZSBvdXRwdXQgZmlsZSB0byBiZSBj b21wcmVzc2VkLCBhcyB0aG91Z2ggaXQgaGFkIGJlZW4KLSAgICAgICAgZmVkIHRocm91Z2ggPGFw cGxpY2F0aW9uPmd6aXA8L2FwcGxpY2F0aW9uPjsgYnV0IHRoZSBkZWZhdWx0IGlzIG5vdCB0byBj b21wcmVzcy4KKyAgICAgICAgaW5kaXZpZHVhbCB0YWJsZS1kYXRhIHNlZ21lbnRzLCBhbmQgdGhl IGRlZmF1bHQgaXMgdG8gY29tcHJlc3MgdXNpbmcKKyAgICAgICAgPGxpdGVyYWw+Z3ppcDwvbGl0 ZXJhbD4gYXQgYSBtb2RlcmF0ZSBsZXZlbC4gRm9yIHBsYWluIHRleHQgb3V0cHV0LAorICAgICAg ICBzZXR0aW5nIGEgbm9uemVybyBjb21wcmVzc2lvbiBsZXZlbCBjYXVzZXMgdGhlIGVudGlyZSBv dXRwdXQgZmlsZSB0byBiZSBjb21wcmVzc2VkLAorICAgICAgICBhcyB0aG91Z2ggaXQgaGFkIGJl ZW4gZmVkIHRocm91Z2ggPGFwcGxpY2F0aW9uPmd6aXA8L2FwcGxpY2F0aW9uPjsgYnV0IHRoZSBk ZWZhdWx0CisgICAgICAgIGlzIG5vdCB0byBjb21wcmVzcy4KKyAgICAgICA8L3BhcmE+CisgICAg ICAgPHBhcmE+CiAgICAgICAgIFRoZSB0YXIgYXJjaGl2ZSBmb3JtYXQgY3VycmVudGx5IGRvZXMg bm90IHN1cHBvcnQgY29tcHJlc3Npb24gYXQgYWxsLgogICAgICAgIDwvcGFyYT4KICAgICAgIDwv bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUgYi9zcmMvYmlu L3BnX2R1bXAvTWFrZWZpbGUKaW5kZXggODQzMDZkOTRlZS4uNTZlMDQxYzliMyAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9NYWtlZmls ZQpAQCAtMTYsNiArMTYsOCBAQCBzdWJkaXIgPSBzcmMvYmluL3BnX2R1bXAKIHRvcF9idWlsZGRp ciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFs CiAKK2V4cG9ydCBHWklQX1BST0dSQU09JChHWklQKQorCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAt SSQobGlicHFfc3JjZGlyKSAkKENQUEZMQUdTKQogTERGTEFHU19JTlRFUk5BTCArPSAtTCQodG9w X2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMgLWxwZ2ZldXRpbHMgJChsaWJwcV9wZ3BvcnQpCiAKZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jIGIvc3JjL2Jpbi9wZ19kdW1w L2NvbXByZXNzX2lvLmMKaW5kZXggOTA3N2ZkYjc0ZC4uNjMwZjllNGIxOCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL2NvbXBy ZXNzX2lvLmMKQEAgLTY0LDcgKzY0LDcgQEAKIC8qIHR5cGVkZWYgYXBwZWFycyBpbiBjb21wcmVz c19pby5oICovCiBzdHJ1Y3QgQ29tcHJlc3NvclN0YXRlCiB7Ci0JQ29tcHJlc3Npb25BbGdvcml0 aG0gY29tcHJBbGc7CisJQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2Q7CiAJV3Jp dGVGdW5jCXdyaXRlRjsKIAogI2lmZGVmIEhBVkVfTElCWgpAQCAtNzQsOSArNzQsNiBAQCBzdHJ1 Y3QgQ29tcHJlc3NvclN0YXRlCiAjZW5kaWYKIH07CiAKLXN0YXRpYyB2b2lkIFBhcnNlQ29tcHJl c3Npb25PcHRpb24oaW50IGNvbXByZXNzaW9uLCBDb21wcmVzc2lvbkFsZ29yaXRobSAqYWxnLAot CQkJCQkJCQkgICBpbnQgKmxldmVsKTsKLQogLyogUm91dGluZXMgdGhhdCBzdXBwb3J0IHpsaWIg Y29tcHJlc3NlZCBkYXRhIEkvTyAqLwogI2lmZGVmIEhBVkVfTElCWgogc3RhdGljIHZvaWQgSW5p dENvbXByZXNzb3JabGliKENvbXByZXNzb3JTdGF0ZSAqY3MsIGludCBsZXZlbCk7CkBAIC05Myw1 NyArOTAsMzAgQEAgc3RhdGljIHZvaWQgUmVhZERhdGFGcm9tQXJjaGl2ZU5vbmUoQXJjaGl2ZUhh bmRsZSAqQUgsIFJlYWRGdW5jIHJlYWRGKTsKIHN0YXRpYyB2b2lkIFdyaXRlRGF0YVRvQXJjaGl2 ZU5vbmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MsCiAJCQkJCQkJCSAg IGNvbnN0IGNoYXIgKmRhdGEsIHNpemVfdCBkTGVuKTsKIAotLyoKLSAqIEludGVycHJldHMgYSBu dW1lcmljICdjb21wcmVzc2lvbicgdmFsdWUuIFRoZSBhbGdvcml0aG0gaW1wbGllZCBieSB0aGUK LSAqIHZhbHVlICh6bGliIG9yIG5vbmUgYXQgdGhlIG1vbWVudCksIGlzIHJldHVybmVkIGluICph bGcsIGFuZCB0aGUKLSAqIHpsaWIgY29tcHJlc3Npb24gbGV2ZWwgaW4gKmxldmVsLgotICovCi1z dGF0aWMgdm9pZAotUGFyc2VDb21wcmVzc2lvbk9wdGlvbihpbnQgY29tcHJlc3Npb24sIENvbXBy ZXNzaW9uQWxnb3JpdGhtICphbGcsIGludCAqbGV2ZWwpCi17Ci0JaWYgKGNvbXByZXNzaW9uID09 IFpfREVGQVVMVF9DT01QUkVTU0lPTiB8fAotCQkoY29tcHJlc3Npb24gPiAwICYmIGNvbXByZXNz aW9uIDw9IDkpKQotCQkqYWxnID0gQ09NUFJfQUxHX0xJQlo7Ci0JZWxzZSBpZiAoY29tcHJlc3Np b24gPT0gMCkKLQkJKmFsZyA9IENPTVBSX0FMR19OT05FOwotCWVsc2UKLQl7Ci0JCWZhdGFsKCJp bnZhbGlkIGNvbXByZXNzaW9uIGNvZGU6ICVkIiwgY29tcHJlc3Npb24pOwotCQkqYWxnID0gQ09N UFJfQUxHX05PTkU7CS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQl9Ci0KLQkvKiBUaGUgbGV2 ZWwgaXMganVzdCB0aGUgcGFzc2VkLWluIHZhbHVlLiAqLwotCWlmIChsZXZlbCkKLQkJKmxldmVs ID0gY29tcHJlc3Npb247Ci19Ci0KIC8qIFB1YmxpYyBpbnRlcmZhY2Ugcm91dGluZXMgKi8KIAog LyogQWxsb2NhdGUgYSBuZXcgY29tcHJlc3NvciAqLwogQ29tcHJlc3NvclN0YXRlICoKLUFsbG9j YXRlQ29tcHJlc3NvcihpbnQgY29tcHJlc3Npb24sIFdyaXRlRnVuYyB3cml0ZUYpCitBbGxvY2F0 ZUNvbXByZXNzb3IoQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJCQkJICAg aW50IGNvbXByZXNzaW9uTGV2ZWwsIFdyaXRlRnVuYyB3cml0ZUYpCiB7CiAJQ29tcHJlc3NvclN0 YXRlICpjczsKLQlDb21wcmVzc2lvbkFsZ29yaXRobSBhbGc7Ci0JaW50CQkJbGV2ZWw7Ci0KLQlQ YXJzZUNvbXByZXNzaW9uT3B0aW9uKGNvbXByZXNzaW9uLCAmYWxnLCAmbGV2ZWwpOwogCiAjaWZu ZGVmIEhBVkVfTElCWgotCWlmIChhbGcgPT0gQ09NUFJfQUxHX0xJQlopCisJaWYgKGNvbXByZXNz aW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0daSVApCiAJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6 bGliIHN1cHBvcnQiKTsKICNlbmRpZgogCiAJY3MgPSAoQ29tcHJlc3NvclN0YXRlICopIHBnX21h bGxvYzAoc2l6ZW9mKENvbXByZXNzb3JTdGF0ZSkpOwogCWNzLT53cml0ZUYgPSB3cml0ZUY7Ci0J Y3MtPmNvbXByQWxnID0gYWxnOworCWNzLT5jb21wcmVzc2lvbk1ldGhvZCA9IGNvbXByZXNzaW9u TWV0aG9kOwogCiAJLyoKIAkgKiBQZXJmb3JtIGNvbXByZXNzaW9uIGFsZ29yaXRobSBzcGVjaWZp YyBpbml0aWFsaXphdGlvbi4KIAkgKi8KICNpZmRlZiBIQVZFX0xJQloKLQlpZiAoYWxnID09IENP TVBSX0FMR19MSUJaKQotCQlJbml0Q29tcHJlc3NvclpsaWIoY3MsIGxldmVsKTsKKwlpZiAoY29t cHJlc3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05fR1pJUCkKKwkJSW5pdENvbXByZXNzb3JabGli KGNzLCBjb21wcmVzc2lvbkxldmVsKTsKICNlbmRpZgogCiAJcmV0dXJuIGNzOwpAQCAtMTU0LDIx ICsxMjQsMjQgQEAgQWxsb2NhdGVDb21wcmVzc29yKGludCBjb21wcmVzc2lvbiwgV3JpdGVGdW5j IHdyaXRlRikKICAqIG91dCB3aXRoIGFod3JpdGUoKS4KICAqLwogdm9pZAotUmVhZERhdGFGcm9t QXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCwgaW50IGNvbXByZXNzaW9uLCBSZWFkRnVuYyByZWFk RikKK1JlYWREYXRhRnJvbUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzaW9uTWV0 aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQlpbnQgY29tcHJlc3Npb25MZXZlbCwgUmVhZEZ1 bmMgcmVhZEYpCiB7Ci0JQ29tcHJlc3Npb25BbGdvcml0aG0gYWxnOwotCi0JUGFyc2VDb21wcmVz c2lvbk9wdGlvbihjb21wcmVzc2lvbiwgJmFsZywgTlVMTCk7Ci0KLQlpZiAoYWxnID09IENPTVBS X0FMR19OT05FKQotCQlSZWFkRGF0YUZyb21BcmNoaXZlTm9uZShBSCwgcmVhZEYpOwotCWlmIChh bGcgPT0gQ09NUFJfQUxHX0xJQlopCisJc3dpdGNoIChjb21wcmVzc2lvbk1ldGhvZCkKIAl7CisJ CWNhc2UgQ09NUFJFU1NJT05fTk9ORToKKwkJCVJlYWREYXRhRnJvbUFyY2hpdmVOb25lKEFILCBy ZWFkRik7CisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lPTl9HWklQOgogI2lmZGVmIEhBVkVf TElCWgotCQlSZWFkRGF0YUZyb21BcmNoaXZlWmxpYihBSCwgcmVhZEYpOworCQkJUmVhZERhdGFG cm9tQXJjaGl2ZVpsaWIoQUgsIHJlYWRGKTsKICNlbHNlCi0JCWZhdGFsKCJub3QgYnVpbHQgd2l0 aCB6bGliIHN1cHBvcnQiKTsKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQi KTsKICNlbmRpZgorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlmYXRhbCgiaW52YWxpZCBjb21w cmVzc2lvbiBtZXRob2QiKTsKKwkJCWJyZWFrOwogCX0KIH0KIApAQCAtMTc5LDE4ICsxNTIsMjEg QEAgdm9pZAogV3JpdGVEYXRhVG9BcmNoaXZlKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29y U3RhdGUgKmNzLAogCQkJCSAgIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBkTGVuKQogewotCXN3 aXRjaCAoY3MtPmNvbXByQWxnKQorCXN3aXRjaCAoY3MtPmNvbXByZXNzaW9uTWV0aG9kKQogCXsK LQkJY2FzZSBDT01QUl9BTEdfTElCWjoKKwkJY2FzZSBDT01QUkVTU0lPTl9HWklQOgogI2lmZGVm IEhBVkVfTElCWgogCQkJV3JpdGVEYXRhVG9BcmNoaXZlWmxpYihBSCwgY3MsIGRhdGEsIGRMZW4p OwogI2Vsc2UKIAkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRp ZgogCQkJYnJlYWs7Ci0JCWNhc2UgQ09NUFJfQUxHX05PTkU6CisJCWNhc2UgQ09NUFJFU1NJT05f Tk9ORToKIAkJCVdyaXRlRGF0YVRvQXJjaGl2ZU5vbmUoQUgsIGNzLCBkYXRhLCBkTGVuKTsKIAkJ CWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9k Iik7CisJCQlicmVhazsKIAl9CiB9CiAKQEAgLTIwMCwxMSArMTc2LDIzIEBAIFdyaXRlRGF0YVRv QXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcywKIHZvaWQKIEVu ZENvbXByZXNzb3IoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MpCiB7CisJ c3dpdGNoIChjcy0+Y29tcHJlc3Npb25NZXRob2QpCisJeworCQljYXNlIENPTVBSRVNTSU9OX0da SVA6CiAjaWZkZWYgSEFWRV9MSUJaCi0JaWYgKGNzLT5jb21wckFsZyA9PSBDT01QUl9BTEdfTElC WikKLQkJRW5kQ29tcHJlc3NvclpsaWIoQUgsIGNzKTsKKwkJCUVuZENvbXByZXNzb3JabGliKEFI LCBjcyk7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwog I2VuZGlmCi0JZnJlZShjcyk7CisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lPTl9OT05FOgor CQkJZnJlZShjcyk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQg Y29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKKwl9CiB9CiAKIC8qIFByaXZhdGUgcm91 dGluZXMsIHNwZWNpZmljIHRvIGVhY2ggY29tcHJlc3Npb24gbWV0aG9kLiAqLwpAQCAtNDE4LDEw ICs0MDYsOCBAQCBXcml0ZURhdGFUb0FyY2hpdmVOb25lKEFyY2hpdmVIYW5kbGUgKkFILCBDb21w cmVzc29yU3RhdGUgKmNzLAogICovCiBzdHJ1Y3QgY2ZwCiB7Ci0JRklMRQkgICAqdW5jb21wcmVz c2VkZnA7Ci0jaWZkZWYgSEFWRV9MSUJaCi0JZ3pGaWxlCQljb21wcmVzc2VkZnA7Ci0jZW5kaWYK KwlDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZDsKKwl2b2lkCSAgICpmcDsKIH07 CiAKICNpZmRlZiBIQVZFX0xJQloKQEAgLTQ1NSwxOCArNDQxLDE4IEBAIGNmb3Blbl9yZWFkKGNv bnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCiAKICNpZmRlZiBIQVZFX0xJQloKIAlp ZiAoaGFzU3VmZml4KHBhdGgsICIuZ3oiKSkKLQkJZnAgPSBjZm9wZW4ocGF0aCwgbW9kZSwgMSk7 CisJCWZwID0gY2ZvcGVuKHBhdGgsIG1vZGUsIENPTVBSRVNTSU9OX0daSVAsIDApOwogCWVsc2UK ICNlbmRpZgogCXsKLQkJZnAgPSBjZm9wZW4ocGF0aCwgbW9kZSwgMCk7CisJCWZwID0gY2ZvcGVu KHBhdGgsIG1vZGUsIENPTVBSRVNTSU9OX05PTkUsIDApOwogI2lmZGVmIEhBVkVfTElCWgogCQlp ZiAoZnAgPT0gTlVMTCkKIAkJewogCQkJY2hhcgkgICAqZm5hbWU7CiAKIAkJCWZuYW1lID0gcHNw cmludGYoIiVzLmd6IiwgcGF0aCk7Ci0JCQlmcCA9IGNmb3BlbihmbmFtZSwgbW9kZSwgMSk7CisJ CQlmcCA9IGNmb3BlbihmbmFtZSwgbW9kZSwgQ09NUFJFU1NJT05fR1pJUCwgMCk7CiAJCQlmcmVl X2tlZXBfZXJybm8oZm5hbWUpOwogCQl9CiAjZW5kaWYKQEAgLTQ4NiwxOSArNDcyLDIxIEBAIGNm b3Blbl9yZWFkKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCiAgKiBPbiBmYWls dXJlLCByZXR1cm4gTlVMTCB3aXRoIGFuIGVycm9yIGNvZGUgaW4gZXJybm8uCiAgKi8KIGNmcCAq Ci1jZm9wZW5fd3JpdGUoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwgaW50IGNv bXByZXNzaW9uKQorY2ZvcGVuX3dyaXRlKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1v ZGUsCisJCQkgQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJCQkgaW50IGNv bXByZXNzaW9uTGV2ZWwpCiB7CiAJY2ZwCQkgICAqZnA7CiAKLQlpZiAoY29tcHJlc3Npb24gPT0g MCkKLQkJZnAgPSBjZm9wZW4ocGF0aCwgbW9kZSwgMCk7CisJaWYgKGNvbXByZXNzaW9uTWV0aG9k ID09IENPTVBSRVNTSU9OX05PTkUpCisJCWZwID0gY2ZvcGVuKHBhdGgsIG1vZGUsIGNvbXByZXNz aW9uTWV0aG9kLCAwKTsKIAllbHNlCiAJewogI2lmZGVmIEhBVkVfTElCWgogCQljaGFyCSAgICpm bmFtZTsKIAogCQlmbmFtZSA9IHBzcHJpbnRmKCIlcy5neiIsIHBhdGgpOwotCQlmcCA9IGNmb3Bl bihmbmFtZSwgbW9kZSwgY29tcHJlc3Npb24pOworCQlmcCA9IGNmb3BlbihmbmFtZSwgbW9kZSwg Y29tcHJlc3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2ZWwpOwogCQlmcmVlX2tlZXBfZXJybm8o Zm5hbWUpOwogI2Vsc2UKIAkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwpA QCAtNTA5LDYwICs0OTcsOTQgQEAgY2ZvcGVuX3dyaXRlKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0 IGNoYXIgKm1vZGUsIGludCBjb21wcmVzc2lvbikKIH0KIAogLyoKLSAqIE9wZW5zIGZpbGUgJ3Bh dGgnIGluICdtb2RlJy4gSWYgJ2NvbXByZXNzaW9uJyBpcyBub24temVybywgdGhlIGZpbGUKLSAq IGlzIG9wZW5lZCB3aXRoIGxpYnogZ3pvcGVuKCksIG90aGVyd2lzZSB3aXRoIHBsYWluIGZvcGVu KCkuCisgKiBUaGlzIGlzIHRoZSB3b3JraG9yc2UgZm9yIGNmb3BlbigpIG9yIGNmZG9wZW4oKS4g SXQgb3BlbnMgZmlsZSAncGF0aCcgb3IKKyAqIGFzc29jaWF0ZXMgYSBzdHJlYW0gJ2ZkJywgaWYg J2ZkJyBpcyBhIHZhbGlkIGRlc2NyaXB0b3IsIGluICdtb2RlJy4gVGhlCisgKiBkZXNjcmlwdG9y IGlzIG5vdCBkdXAnZWQgYW5kIGl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBk byBzby4KKyAqIFRoZSBjYWxsZXIgbXVzdCB2ZXJpZnkgdGhhdCB0aGUgJ2NvbXByZXNzaW9uTWV0 aG9kJyBpcyBzdXBwb3J0ZWQgYnkgdGhlCisgKiBjdXJyZW50IGJ1aWxkLgogICoKICAqIE9uIGZh aWx1cmUsIHJldHVybiBOVUxMIHdpdGggYW4gZXJyb3IgY29kZSBpbiBlcnJuby4KICAqLwotY2Zw ICoKLWNmb3Blbihjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLCBpbnQgY29tcHJl c3Npb24pCitzdGF0aWMgY2ZwICoKK2Nmb3Blbl9pbnRlcm5hbChjb25zdCBjaGFyICpwYXRoLCBp bnQgZmQsIGNvbnN0IGNoYXIgKm1vZGUsCisJCQkJQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Np b25NZXRob2QsIGludCBjb21wcmVzc2lvbkxldmVsKQogewogCWNmcAkJICAgKmZwID0gcGdfbWFs bG9jKHNpemVvZihjZnApKTsKIAotCWlmIChjb21wcmVzc2lvbiAhPSAwKQorCWZwLT5jb21wcmVz c2lvbk1ldGhvZCA9IGNvbXByZXNzaW9uTWV0aG9kOworCisJc3dpdGNoIChjb21wcmVzc2lvbk1l dGhvZCkKIAl7Ci0jaWZkZWYgSEFWRV9MSUJaCi0JCWlmIChjb21wcmVzc2lvbiAhPSBaX0RFRkFV TFRfQ09NUFJFU1NJT04pCi0JCXsKLQkJCS8qIHVzZXIgaGFzIHNwZWNpZmllZCBhIGNvbXByZXNz aW9uIGxldmVsLCBzbyB0ZWxsIHpsaWIgdG8gdXNlIGl0ICovCi0JCQljaGFyCQltb2RlX2NvbXBy ZXNzaW9uWzMyXTsKKwkJY2FzZSBDT01QUkVTU0lPTl9OT05FOgorCQkJaWYgKGZkID49IDApCisJ CQkJZnAtPmZwID0gZmRvcGVuKGZkLCBtb2RlKTsKKwkJCWVsc2UKKwkJCQlmcC0+ZnAgPSBmb3Bl bihwYXRoLCBtb2RlKTsKKwkJCWlmIChmcC0+ZnAgPT0gTlVMTCkKKwkJCXsKKwkJCQlmcmVlX2tl ZXBfZXJybm8oZnApOworCQkJCWZwID0gTlVMTDsKKwkJCX0KIAotCQkJc25wcmludGYobW9kZV9j b21wcmVzc2lvbiwgc2l6ZW9mKG1vZGVfY29tcHJlc3Npb24pLCAiJXMlZCIsCi0JCQkJCSBtb2Rl LCBjb21wcmVzc2lvbik7Ci0JCQlmcC0+Y29tcHJlc3NlZGZwID0gZ3pvcGVuKHBhdGgsIG1vZGVf Y29tcHJlc3Npb24pOwotCQl9Ci0JCWVsc2UKLQkJewotCQkJLyogZG9uJ3Qgc3BlY2lmeSBhIGxl dmVsLCBqdXN0IHVzZSB0aGUgemxpYiBkZWZhdWx0ICovCi0JCQlmcC0+Y29tcHJlc3NlZGZwID0g Z3pvcGVuKHBhdGgsIG1vZGUpOwotCQl9CisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lPTl9H WklQOgorI2lmZGVmIEhBVkVfTElCWgorCQkJaWYgKGNvbXByZXNzaW9uTGV2ZWwgIT0gWl9ERUZB VUxUX0NPTVBSRVNTSU9OKQorCQkJeworCQkJCS8qCisJCQkJICogdXNlciBoYXMgc3BlY2lmaWVk IGEgY29tcHJlc3Npb24gbGV2ZWwsIHNvIHRlbGwgemxpYiB0byB1c2UKKwkJCQkgKiBpdAorCQkJ CSAqLworCQkJCWNoYXIJCW1vZGVfY29tcHJlc3Npb25bMzJdOworCisJCQkJc25wcmludGYobW9k ZV9jb21wcmVzc2lvbiwgc2l6ZW9mKG1vZGVfY29tcHJlc3Npb24pLCAiJXMlZCIsCisJCQkJCQkg bW9kZSwgY29tcHJlc3Npb25MZXZlbCk7CisJCQkJaWYgKGZkID49IDApCisJCQkJCWZwLT5mcCA9 IGd6ZG9wZW4oZmQsIG1vZGVfY29tcHJlc3Npb24pOworCQkJCWVsc2UKKwkJCQkJZnAtPmZwID0g Z3pvcGVuKHBhdGgsIG1vZGVfY29tcHJlc3Npb24pOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJ CS8qIGRvbid0IHNwZWNpZnkgYSBsZXZlbCwganVzdCB1c2UgdGhlIHpsaWIgZGVmYXVsdCAqLwor CQkJCWlmIChmZCA+PSAwKQorCQkJCQlmcC0+ZnAgPSBnemRvcGVuKGZkLCBtb2RlKTsKKwkJCQll bHNlCisJCQkJCWZwLT5mcCA9IGd6b3BlbihwYXRoLCBtb2RlKTsKKwkJCX0KIAotCQlmcC0+dW5j b21wcmVzc2VkZnAgPSBOVUxMOwotCQlpZiAoZnAtPmNvbXByZXNzZWRmcCA9PSBOVUxMKQotCQl7 Ci0JCQlmcmVlX2tlZXBfZXJybm8oZnApOwotCQkJZnAgPSBOVUxMOwotCQl9CisJCQlpZiAoZnAt PmZwID09IE5VTEwpCisJCQl7CisJCQkJZnJlZV9rZWVwX2Vycm5vKGZwKTsKKwkJCQlmcCA9IE5V TEw7CisJCQl9CiAjZWxzZQotCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7 Ci0jZW5kaWYKLQl9Ci0JZWxzZQotCXsKLSNpZmRlZiBIQVZFX0xJQloKLQkJZnAtPmNvbXByZXNz ZWRmcCA9IE5VTEw7CisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CiAj ZW5kaWYKLQkJZnAtPnVuY29tcHJlc3NlZGZwID0gZm9wZW4ocGF0aCwgbW9kZSk7Ci0JCWlmIChm cC0+dW5jb21wcmVzc2VkZnAgPT0gTlVMTCkKLQkJewotCQkJZnJlZV9rZWVwX2Vycm5vKGZwKTsK LQkJCWZwID0gTlVMTDsKLQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlmYXRhbCgiaW52 YWxpZCBjb21wcmVzc2lvbiBtZXRob2QiKTsKKwkJCWJyZWFrOwogCX0KIAogCXJldHVybiBmcDsK IH0KIAorY2ZwICoKK2Nmb3Blbihjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLAor CSAgIENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCSAgIGludCBjb21wcmVz c2lvbkxldmVsKQoreworCXJldHVybiBjZm9wZW5faW50ZXJuYWwocGF0aCwgLTEsIG1vZGUsIGNv bXByZXNzaW9uTWV0aG9kLCBjb21wcmVzc2lvbkxldmVsKTsKK30KKworY2ZwICoKK2NmZG9wZW4o aW50IGZkLCBjb25zdCBjaGFyICptb2RlLAorCSAgIENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNz aW9uTWV0aG9kLAorCSAgIGludCBjb21wcmVzc2lvbkxldmVsKQoreworCXJldHVybiBjZm9wZW5f aW50ZXJuYWwoTlVMTCwgZmQsIG1vZGUsIGNvbXByZXNzaW9uTWV0aG9kLCBjb21wcmVzc2lvbkxl dmVsKTsKK30KIAogaW50CiBjZnJlYWQodm9pZCAqcHRyLCBpbnQgc2l6ZSwgY2ZwICpmcCkKQEAg LTU3MiwzOCArNTk0LDYxIEBAIGNmcmVhZCh2b2lkICpwdHIsIGludCBzaXplLCBjZnAgKmZwKQog CWlmIChzaXplID09IDApCiAJCXJldHVybiAwOwogCi0jaWZkZWYgSEFWRV9MSUJaCi0JaWYgKGZw LT5jb21wcmVzc2VkZnApCisJc3dpdGNoIChmcC0+Y29tcHJlc3Npb25NZXRob2QpCiAJewotCQly ZXQgPSBnenJlYWQoZnAtPmNvbXByZXNzZWRmcCwgcHRyLCBzaXplKTsKLQkJaWYgKHJldCAhPSBz aXplICYmICFnemVvZihmcC0+Y29tcHJlc3NlZGZwKSkKLQkJewotCQkJaW50CQkJZXJybnVtOwot CQkJY29uc3QgY2hhciAqZXJybXNnID0gZ3plcnJvcihmcC0+Y29tcHJlc3NlZGZwLCAmZXJybnVt KTsKKwkJY2FzZSBDT01QUkVTU0lPTl9OT05FOgorCQkJcmV0ID0gZnJlYWQocHRyLCAxLCBzaXpl LCBmcC0+ZnApOworCQkJaWYgKHJldCAhPSBzaXplICYmICFmZW9mKGZwLT5mcCkpCisJCQkJUkVB RF9FUlJPUl9FWElUKGZwLT5mcCk7CiAKLQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlu cHV0IGZpbGU6ICVzIiwKLQkJCQkgIGVycm51bSA9PSBaX0VSUk5PID8gc3RyZXJyb3IoZXJybm8p IDogZXJybXNnKTsKLQkJfQotCX0KLQllbHNlCisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lP Tl9HWklQOgorI2lmZGVmIEhBVkVfTElCWgorCQkJcmV0ID0gZ3pyZWFkKGZwLT5mcCwgcHRyLCBz aXplKTsKKwkJCWlmIChyZXQgIT0gc2l6ZSAmJiAhZ3plb2YoZnAtPmZwKSkKKwkJCXsKKwkJCQlp bnQJCQllcnJudW07CisJCQkJY29uc3QgY2hhciAqZXJybXNnID0gZ3plcnJvcihmcC0+ZnAsICZl cnJudW0pOworCisJCQkJZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXMi LAorCQkJCQkgIGVycm51bSA9PSBaX0VSUk5PID8gc3RyZXJyb3IoZXJybm8pIDogZXJybXNnKTsK KwkJCX0KKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CiAj ZW5kaWYKLQl7Ci0JCXJldCA9IGZyZWFkKHB0ciwgMSwgc2l6ZSwgZnAtPnVuY29tcHJlc3NlZGZw KTsKLQkJaWYgKHJldCAhPSBzaXplICYmICFmZW9mKGZwLT51bmNvbXByZXNzZWRmcCkpCi0JCQlS RUFEX0VSUk9SX0VYSVQoZnAtPnVuY29tcHJlc3NlZGZwKTsKKwkJCWJyZWFrOworCisJCWRlZmF1 bHQ6CisJCQlmYXRhbCgiaW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2QiKTsKKwkJCWJyZWFrOwog CX0KKwogCXJldHVybiByZXQ7CiB9CiAKIGludAogY2Z3cml0ZShjb25zdCB2b2lkICpwdHIsIGlu dCBzaXplLCBjZnAgKmZwKQogeworCWludAkJCXJldCA9IDA7CisKKwlzd2l0Y2ggKGZwLT5jb21w cmVzc2lvbk1ldGhvZCkKKwl7CisJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKKwkJCXJldCA9IGZ3 cml0ZShwdHIsIDEsIHNpemUsIGZwLT5mcCk7CisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lP Tl9HWklQOgogI2lmZGVmIEhBVkVfTElCWgotCWlmIChmcC0+Y29tcHJlc3NlZGZwKQotCQlyZXR1 cm4gZ3p3cml0ZShmcC0+Y29tcHJlc3NlZGZwLCBwdHIsIHNpemUpOwotCWVsc2UKKwkJCXJldCA9 IGd6d3JpdGUoZnAtPmZwLCBwdHIsIHNpemUpOworI2Vsc2UKKwkJCWZhdGFsKCJub3QgYnVpbHQg d2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgotCQlyZXR1cm4gZndyaXRlKHB0ciwgMSwgc2l6 ZSwgZnAtPnVuY29tcHJlc3NlZGZwKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwo ImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4g cmV0OwogfQogCiBpbnQKQEAgLTYxMSwyNCArNjU2LDMxIEBAIGNmZ2V0YyhjZnAgKmZwKQogewog CWludAkJCXJldDsKIAotI2lmZGVmIEhBVkVfTElCWgotCWlmIChmcC0+Y29tcHJlc3NlZGZwKQor CXN3aXRjaCAoZnAtPmNvbXByZXNzaW9uTWV0aG9kKQogCXsKLQkJcmV0ID0gZ3pnZXRjKGZwLT5j b21wcmVzc2VkZnApOwotCQlpZiAocmV0ID09IEVPRikKLQkJewotCQkJaWYgKCFnemVvZihmcC0+ Y29tcHJlc3NlZGZwKSkKLQkJCQlmYXRhbCgiY291bGQgbm90IHJlYWQgZnJvbSBpbnB1dCBmaWxl OiAlcyIsIHN0cmVycm9yKGVycm5vKSk7Ci0JCQllbHNlCi0JCQkJZmF0YWwoImNvdWxkIG5vdCBy ZWFkIGZyb20gaW5wdXQgZmlsZTogZW5kIG9mIGZpbGUiKTsKLQkJfQotCX0KLQllbHNlCisJCWNh c2UgQ09NUFJFU1NJT05fTk9ORToKKwkJCXJldCA9IGZnZXRjKGZwLT5mcCk7CisJCQlpZiAocmV0 ID09IEVPRikKKwkJCQlSRUFEX0VSUk9SX0VYSVQoZnAtPmZwKTsKKworCQkJYnJlYWs7CisJCWNh c2UgQ09NUFJFU1NJT05fR1pJUDoKKyNpZmRlZiBIQVZFX0xJQloKKwkJCXJldCA9IGd6Z2V0Yygo Z3pGaWxlKWZwLT5mcCk7CisJCQlpZiAocmV0ID09IEVPRikKKwkJCXsKKwkJCQlpZiAoIWd6ZW9m KGZwLT5mcCkpCisJCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVz Iiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQllbHNlCisJCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVh ZCBmcm9tIGlucHV0IGZpbGU6IGVuZCBvZiBmaWxlIik7CisJCQl9CisjZWxzZQorCQkJZmF0YWwo Im5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCi0JewotCQlyZXQgPSBmZ2V0 YyhmcC0+dW5jb21wcmVzc2VkZnApOwotCQlpZiAocmV0ID09IEVPRikKLQkJCVJFQURfRVJST1Jf RVhJVChmcC0+dW5jb21wcmVzc2VkZnApOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlmYXRh bCgiaW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2QiKTsKKwkJCWJyZWFrOwogCX0KIAogCXJldHVy biByZXQ7CkBAIC02MzcsNjUgKzY4OSwxMDcgQEAgY2ZnZXRjKGNmcCAqZnApCiBjaGFyICoKIGNm Z2V0cyhjZnAgKmZwLCBjaGFyICpidWYsIGludCBsZW4pCiB7CisJY2hhcgkgICAqcmV0OworCisJ c3dpdGNoIChmcC0+Y29tcHJlc3Npb25NZXRob2QpCisJeworCQljYXNlIENPTVBSRVNTSU9OX05P TkU6CisJCQlyZXQgPSBmZ2V0cyhidWYsIGxlbiwgZnAtPmZwKTsKKworCQkJYnJlYWs7CisJCWNh c2UgQ09NUFJFU1NJT05fR1pJUDoKICNpZmRlZiBIQVZFX0xJQloKLQlpZiAoZnAtPmNvbXByZXNz ZWRmcCkKLQkJcmV0dXJuIGd6Z2V0cyhmcC0+Y29tcHJlc3NlZGZwLCBidWYsIGxlbik7Ci0JZWxz ZQorCQkJcmV0ID0gZ3pnZXRzKGZwLT5mcCwgYnVmLCBsZW4pOworI2Vsc2UKKwkJCWZhdGFsKCJu b3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgotCQlyZXR1cm4gZmdldHMoYnVm LCBsZW4sIGZwLT51bmNvbXByZXNzZWRmcCk7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWZh dGFsKCJpbnZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCIpOworCQkJYnJlYWs7CisJfQorCisJcmV0 dXJuIHJldDsKIH0KIAogaW50CiBjZmNsb3NlKGNmcCAqZnApCiB7Ci0JaW50CQkJcmVzdWx0Owor CWludAkJCXJldDsKIAogCWlmIChmcCA9PSBOVUxMKQogCXsKIAkJZXJybm8gPSBFQkFERjsKIAkJ cmV0dXJuIEVPRjsKIAl9Ci0jaWZkZWYgSEFWRV9MSUJaCi0JaWYgKGZwLT5jb21wcmVzc2VkZnAp CisKKwlzd2l0Y2ggKGZwLT5jb21wcmVzc2lvbk1ldGhvZCkKIAl7Ci0JCXJlc3VsdCA9IGd6Y2xv c2UoZnAtPmNvbXByZXNzZWRmcCk7Ci0JCWZwLT5jb21wcmVzc2VkZnAgPSBOVUxMOwotCX0KLQll bHNlCisJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKKwkJCXJldCA9IGZjbG9zZShmcC0+ZnApOwor CQkJZnAtPmZwID0gTlVMTDsKKworCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoK KyNpZmRlZiBIQVZFX0xJQloKKwkJCXJldCA9IGd6Y2xvc2UoZnAtPmZwKTsKKwkJCWZwLT5mcCA9 IE5VTEw7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwog I2VuZGlmCi0JewotCQlyZXN1bHQgPSBmY2xvc2UoZnAtPnVuY29tcHJlc3NlZGZwKTsKLQkJZnAt PnVuY29tcHJlc3NlZGZwID0gTlVMTDsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwo ImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKIAl9CisKIAlmcmVlX2tl ZXBfZXJybm8oZnApOwogCi0JcmV0dXJuIHJlc3VsdDsKKwlyZXR1cm4gcmV0OwogfQogCiBpbnQK IGNmZW9mKGNmcCAqZnApCiB7CisJaW50CQkJcmV0OworCisJc3dpdGNoIChmcC0+Y29tcHJlc3Np b25NZXRob2QpCisJeworCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CisJCQlyZXQgPSBmZW9mKGZw LT5mcCk7CisKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0daSVA6CiAjaWZkZWYgSEFW RV9MSUJaCi0JaWYgKGZwLT5jb21wcmVzc2VkZnApCi0JCXJldHVybiBnemVvZihmcC0+Y29tcHJl c3NlZGZwKTsKLQllbHNlCisJCQlyZXQgPSBnemVvZihmcC0+ZnApOworI2Vsc2UKKwkJCWZhdGFs KCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgotCQlyZXR1cm4gZmVvZihm cC0+dW5jb21wcmVzc2VkZnApOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlmYXRhbCgiaW52 YWxpZCBjb21wcmVzc2lvbiBtZXRob2QiKTsKKwkJCWJyZWFrOworCX0KKworCXJldHVybiByZXQ7 CiB9CiAKIGNvbnN0IGNoYXIgKgogZ2V0X2NmcF9lcnJvcihjZnAgKmZwKQogewotI2lmZGVmIEhB VkVfTElCWgotCWlmIChmcC0+Y29tcHJlc3NlZGZwKQorCWlmIChmcC0+Y29tcHJlc3Npb25NZXRo b2QgPT0gQ09NUFJFU1NJT05fR1pJUCkKIAl7CisjaWZkZWYgSEFWRV9MSUJaCiAJCWludAkJCWVy cm51bTsKLQkJY29uc3QgY2hhciAqZXJybXNnID0gZ3plcnJvcihmcC0+Y29tcHJlc3NlZGZwLCAm ZXJybnVtKTsKKwkJY29uc3QgY2hhciAqZXJybXNnID0gZ3plcnJvcihmcC0+ZnAsICZlcnJudW0p OwogCiAJCWlmIChlcnJudW0gIT0gWl9FUlJOTykKIAkJCXJldHVybiBlcnJtc2c7Ci0JfQorI2Vs c2UKKwkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCisJfQor CiAJcmV0dXJuIHN0cmVycm9yKGVycm5vKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL2NvbXByZXNzX2lvLmggYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaAppbmRleCBm NjM1Nzg3NjkyLi5kZTVhZTRmNjFiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvY29tcHJl c3NfaW8uaAorKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uaApAQCAtMTcsMTYgKzE3 LDI1IEBACiAKICNpbmNsdWRlICJwZ19iYWNrdXBfYXJjaGl2ZXIuaCIKIAorI2lmZGVmIEhBVkVf TElCWgorI2luY2x1ZGUgPHpsaWIuaD4KKyNkZWZpbmUgR1pDTE9TRShmaCkgZ3pjbG9zZShmaCkK KyNkZWZpbmUgR1pXUklURShwLCBzLCBuLCBmaCkgZ3p3cml0ZShmaCwgcCwgKG4pICogKHMpKQor I2RlZmluZSBHWlJFQUQocCwgcywgbiwgZmgpIGd6cmVhZChmaCwgcCwgKG4pICogKHMpKQorI2Rl ZmluZSBHWkVPRihmaCkJZ3plb2YoZmgpCisjZWxzZQorI2RlZmluZSBHWkNMT1NFKGZoKSBmY2xv c2UoZmgpCisjZGVmaW5lIEdaV1JJVEUocCwgcywgbiwgZmgpIChmd3JpdGUocCwgcywgbiwgZmgp ICogKHMpKQorI2RlZmluZSBHWlJFQUQocCwgcywgbiwgZmgpIGZyZWFkKHAsIHMsIG4sIGZoKQor I2RlZmluZSBHWkVPRihmaCkJZmVvZihmaCkKKy8qIHRoaXMgaXMganVzdCB0aGUgcmVkZWZpbml0 aW9uIG9mIGEgbGlieiBjb25zdGFudCAqLworI2RlZmluZSBaX0RFRkFVTFRfQ09NUFJFU1NJT04g KC0xKQorI2VuZGlmCisKIC8qIEluaXRpYWwgYnVmZmVyIHNpemVzIHVzZWQgaW4gemxpYiBjb21w cmVzc2lvbi4gKi8KICNkZWZpbmUgWkxJQl9PVVRfU0laRQk0MDk2CiAjZGVmaW5lIFpMSUJfSU5f U0laRQk0MDk2CiAKLXR5cGVkZWYgZW51bQotewotCUNPTVBSX0FMR19OT05FLAotCUNPTVBSX0FM R19MSUJaCi19IENvbXByZXNzaW9uQWxnb3JpdGhtOwotCiAvKiBQcm90b3R5cGUgZm9yIGNhbGxi YWNrIGZ1bmN0aW9uIHRvIFdyaXRlRGF0YVRvQXJjaGl2ZSgpICovCiB0eXBlZGVmIHZvaWQgKCpX cml0ZUZ1bmMpIChBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVu KTsKIApAQCAtNDYsOCArNTUsMTIgQEAgdHlwZWRlZiBzaXplX3QgKCpSZWFkRnVuYykgKEFyY2hp dmVIYW5kbGUgKkFILCBjaGFyICoqYnVmLCBzaXplX3QgKmJ1Zmxlbik7CiAvKiBzdHJ1Y3QgZGVm aW5pdGlvbiBhcHBlYXJzIGluIGNvbXByZXNzX2lvLmMgKi8KIHR5cGVkZWYgc3RydWN0IENvbXBy ZXNzb3JTdGF0ZSBDb21wcmVzc29yU3RhdGU7CiAKLWV4dGVybiBDb21wcmVzc29yU3RhdGUgKkFs bG9jYXRlQ29tcHJlc3NvcihpbnQgY29tcHJlc3Npb24sIFdyaXRlRnVuYyB3cml0ZUYpOwotZXh0 ZXJuIHZvaWQgUmVhZERhdGFGcm9tQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCwgaW50IGNvbXBy ZXNzaW9uLAorZXh0ZXJuIENvbXByZXNzb3JTdGF0ZSAqQWxsb2NhdGVDb21wcmVzc29yKENvbXBy ZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQkJCQkJCSAgIGludCBjb21wcmVz c2lvbkxldmVsLAorCQkJCQkJCQkJCSAgIFdyaXRlRnVuYyB3cml0ZUYpOworZXh0ZXJuIHZvaWQg UmVhZERhdGFGcm9tQXJjaGl2ZShBcmNoaXZlSGFuZGxlICpBSCwKKwkJCQkJCQkJQ29tcHJlc3Np b25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJCQkJCQkJCWludCBjb21wcmVzc2lvbkxldmVs LAogCQkJCQkJCQlSZWFkRnVuYyByZWFkRik7CiBleHRlcm4gdm9pZCBXcml0ZURhdGFUb0FyY2hp dmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MsCiAJCQkJCQkJICAgY29u c3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGRMZW4pOwpAQCAtNTYsOSArNjksMTYgQEAgZXh0ZXJuIHZv aWQgRW5kQ29tcHJlc3NvcihBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcyk7 CiAKIHR5cGVkZWYgc3RydWN0IGNmcCBjZnA7CiAKLWV4dGVybiBjZnAgKmNmb3Blbihjb25zdCBj aGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLCBpbnQgY29tcHJlc3Npb24pOworZXh0ZXJuIGNm cCAqY2ZvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsCisJCQkJICAgQ29t cHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJCQkJICAgaW50IGNvbXByZXNzaW9u TGV2ZWwpOworZXh0ZXJuIGNmcCAqY2Zkb3BlbihpbnQgZmQsIGNvbnN0IGNoYXIgKm1vZGUsCisJ CQkJICAgQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJCQkJICAgaW50IGNv bXByZXNzaW9uTGV2ZWwpOwogZXh0ZXJuIGNmcCAqY2ZvcGVuX3JlYWQoY29uc3QgY2hhciAqcGF0 aCwgY29uc3QgY2hhciAqbW9kZSk7Ci1leHRlcm4gY2ZwICpjZm9wZW5fd3JpdGUoY29uc3QgY2hh ciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSwgaW50IGNvbXByZXNzaW9uKTsKK2V4dGVybiBjZnAg KmNmb3Blbl93cml0ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLAorCQkJCQkJ IENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQkJIGludCBjb21wcmVz c2lvbkxldmVsKTsKIGV4dGVybiBpbnQJY2ZyZWFkKHZvaWQgKnB0ciwgaW50IHNpemUsIGNmcCAq ZnApOwogZXh0ZXJuIGludAljZndyaXRlKGNvbnN0IHZvaWQgKnB0ciwgaW50IHNpemUsIGNmcCAq ZnApOwogZXh0ZXJuIGludAljZmdldGMoY2ZwICpmcCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvcGdfYmFja3VwLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmgKaW5kZXggZmNj NWY2YmQwNS4uNzQxODEwYjA2NiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1 cC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXAuaApAQCAtNzUsNiArNzUsMTIgQEAg ZW51bSBfZHVtcFByZXBhcmVkUXVlcmllcwogCU5VTV9QUkVQX1FVRVJJRVMJCQkvKiBtdXN0IGJl IGxhc3QgKi8KIH07CiAKK3R5cGVkZWYgZW51bSBfY29tcHJlc3Npb25NZXRob2QKK3sKKwlDT01Q UkVTU0lPTl9HWklQLAorCUNPTVBSRVNTSU9OX05PTkUKK30gQ29tcHJlc3Npb25NZXRob2Q7CisK IC8qIFBhcmFtZXRlcnMgbmVlZGVkIGJ5IENvbm5lY3REYXRhYmFzZTsgc2FtZSBmb3IgZHVtcCBh bmQgcmVzdG9yZSAqLwogdHlwZWRlZiBzdHJ1Y3QgX2Nvbm5QYXJhbXMKIHsKQEAgLTE0Myw3ICsx NDksOCBAQCB0eXBlZGVmIHN0cnVjdCBfcmVzdG9yZU9wdGlvbnMKIAogCWludAkJCW5vRGF0YUZv ckZhaWxlZFRhYmxlczsKIAlpbnQJCQlleGl0X29uX2Vycm9yOwotCWludAkJCWNvbXByZXNzaW9u OworCUNvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kOworCWludAkJCWNvbXByZXNz aW9uTGV2ZWw7CiAJaW50CQkJc3VwcHJlc3NEdW1wV2FybmluZ3M7CS8qIFN1cHByZXNzIG91dHB1 dCBvZiBXQVJOSU5HIGVudHJpZXMKIAkJCQkJCQkJCQkgKiB0byBzdGRlcnIgKi8KIAlib29sCQlz aW5nbGVfdHhuOwpAQCAtMzAzLDcgKzMxMCw5IEBAIGV4dGVybiBBcmNoaXZlICpPcGVuQXJjaGl2 ZShjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQpOwogCiAvKiBD cmVhdGUgYSBuZXcgYXJjaGl2ZSAqLwogZXh0ZXJuIEFyY2hpdmUgKkNyZWF0ZUFyY2hpdmUoY29u c3QgY2hhciAqRmlsZVNwZWMsIGNvbnN0IEFyY2hpdmVGb3JtYXQgZm10LAotCQkJCQkJCSAgY29u c3QgaW50IGNvbXByZXNzaW9uLCBib29sIGRvc3luYywgQXJjaGl2ZU1vZGUgbW9kZSwKKwkJCQkJ CQkgIGNvbnN0IENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQkJCSAg Y29uc3QgaW50IGNvbXByZXNzaW9uLAorCQkJCQkJCSAgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2Rl IG1vZGUsCiAJCQkJCQkJICBTZXR1cFdvcmtlclB0clR5cGUgc2V0dXBEdW1wV29ya2VyKTsKIAog LyogVGhlIC0tbGlzdCBvcHRpb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19i YWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpp bmRleCBkNDFhOTlkNmVhLi43ZDk2NDQ2ZjFhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNo aXZlci5jCkBAIC0zMSw2ICszMSw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImNvbW1vbi9zdHJp bmcuaCIKKyNpbmNsdWRlICJjb21wcmVzc19pby5oIgogI2luY2x1ZGUgImR1bXB1dGlscy5oIgog I2luY2x1ZGUgImZlX3V0aWxzL3N0cmluZ191dGlscy5oIgogI2luY2x1ZGUgImxpYi9zdHJpbmdp bmZvLmgiCkBAIC00MywxMyArNDQsNiBAQAogI2RlZmluZSBURVhUX0RVTVBfSEVBREVSICItLVxu LS0gUG9zdGdyZVNRTCBkYXRhYmFzZSBkdW1wXG4tLVxuXG4iCiAjZGVmaW5lIFRFWFRfRFVNUEFM TF9IRUFERVIgIi0tXG4tLSBQb3N0Z3JlU1FMIGRhdGFiYXNlIGNsdXN0ZXIgZHVtcFxuLS1cblxu IgogCi0vKiBzdGF0ZSBuZWVkZWQgdG8gc2F2ZS9yZXN0b3JlIGFuIGFyY2hpdmUncyBvdXRwdXQg dGFyZ2V0ICovCi10eXBlZGVmIHN0cnVjdCBfb3V0cHV0Q29udGV4dAotewotCXZvaWQJICAgKk9G OwotCWludAkJCWd6T3V0OwotfSBPdXRwdXRDb250ZXh0OwotCiAvKgogICogU3RhdGUgZm9yIHRy YWNraW5nIFRvY0VudHJ5cyB0aGF0IGFyZSByZWFkeSB0byBwcm9jZXNzIGR1cmluZyBhIHBhcmFs bGVsCiAgKiByZXN0b3JlLiAgKFRoaXMgdXNlZCB0byBiZSBhIGxpc3QsIGFuZCB3ZSBzdGlsbCBj YWxsIGl0IHRoYXQsIHRob3VnaCBub3cKQEAgLTcwLDcgKzY0LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg X3BhcmFsbGVsUmVhZHlMaXN0CiAKIAogc3RhdGljIEFyY2hpdmVIYW5kbGUgKl9hbGxvY0FIKGNv bnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKLQkJCQkJCQkgICBj b25zdCBpbnQgY29tcHJlc3Npb24sIGJvb2wgZG9zeW5jLCBBcmNoaXZlTW9kZSBtb2RlLAorCQkJ CQkJCSAgIGNvbnN0IENvbXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQkJ CSAgIGNvbnN0IGludCBjb21wcmVzc2lvbkxldmVsLAorCQkJCQkJCSAgIGJvb2wgZG9zeW5jLCBB cmNoaXZlTW9kZSBtb2RlLAogCQkJCQkJCSAgIFNldHVwV29ya2VyUHRyVHlwZSBzZXR1cFdvcmtl clB0cik7CiBzdGF0aWMgdm9pZCBfZ2V0T2JqZWN0RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVm LCBUb2NFbnRyeSAqdGUpOwogc3RhdGljIHZvaWQgX3ByaW50VG9jRW50cnkoQXJjaGl2ZUhhbmRs ZSAqQUgsIFRvY0VudHJ5ICp0ZSwgYm9vbCBpc0RhdGEpOwpAQCAtOTgsOSArOTQsMTEgQEAgc3Rh dGljIGludAlfZGlzY292ZXJBcmNoaXZlRm9ybWF0KEFyY2hpdmVIYW5kbGUgKkFIKTsKIHN0YXRp YyBpbnQJUmVzdG9yaW5nVG9EQihBcmNoaXZlSGFuZGxlICpBSCk7CiBzdGF0aWMgdm9pZCBkdW1w X2xvX2J1ZihBcmNoaXZlSGFuZGxlICpBSCk7CiBzdGF0aWMgdm9pZCBkdW1wVGltZXN0YW1wKEFy Y2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICptc2csIHRpbWVfdCB0aW0pOwotc3RhdGljIHZv aWQgU2V0T3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50 IGNvbXByZXNzaW9uKTsKLXN0YXRpYyBPdXRwdXRDb250ZXh0IFNhdmVPdXRwdXQoQXJjaGl2ZUhh bmRsZSAqQUgpOwotc3RhdGljIHZvaWQgUmVzdG9yZU91dHB1dChBcmNoaXZlSGFuZGxlICpBSCwg T3V0cHV0Q29udGV4dCBzYXZlZENvbnRleHQpOworc3RhdGljIHZvaWQgU2V0T3V0cHV0KEFyY2hp dmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwKKwkJCQkJICBDb21wcmVzc2lvbk1l dGhvZCBjb21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJICBpbnQgY29tcHJlc3Npb25MZXZlbCk7Citz dGF0aWMgY2ZwICpTYXZlT3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFIKTsKK3N0YXRpYyB2b2lkIFJl c3RvcmVPdXRwdXQoQXJjaGl2ZUhhbmRsZSAqQUgsIGNmcCAqc2F2ZWRPdXRwdXQpOwogCiBzdGF0 aWMgaW50CXJlc3RvcmVfdG9jX2VudHJ5KEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUs IGJvb2wgaXNfcGFyYWxsZWwpOwogc3RhdGljIHZvaWQgcmVzdG9yZV90b2NfZW50cmllc19wcmVm b3JrKEFyY2hpdmVIYW5kbGUgKkFILApAQCAtMjM5LDEyICsyMzcsMTUgQEAgc2V0dXBSZXN0b3Jl V29ya2VyKEFyY2hpdmUgKkFIWCkKIC8qIFB1YmxpYyAqLwogQXJjaGl2ZSAqCiBDcmVhdGVBcmNo aXZlKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKLQkJCSAg Y29uc3QgaW50IGNvbXByZXNzaW9uLCBib29sIGRvc3luYywgQXJjaGl2ZU1vZGUgbW9kZSwKKwkJ CSAgY29uc3QgQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2QsCisJCQkgIGNvbnN0 IGludCBjb21wcmVzc2lvbkxldmVsLAorCQkJICBib29sIGRvc3luYywgQXJjaGl2ZU1vZGUgbW9k ZSwKIAkJCSAgU2V0dXBXb3JrZXJQdHJUeXBlIHNldHVwRHVtcFdvcmtlcikKIAogewotCUFyY2hp dmVIYW5kbGUgKkFIID0gX2FsbG9jQUgoRmlsZVNwZWMsIGZtdCwgY29tcHJlc3Npb24sIGRvc3lu YywKLQkJCQkJCQkJIG1vZGUsIHNldHVwRHVtcFdvcmtlcik7CisJQXJjaGl2ZUhhbmRsZSAqQUgg PSBfYWxsb2NBSChGaWxlU3BlYywgZm10LAorCQkJCQkJCQkgY29tcHJlc3Npb25NZXRob2QsIGNv bXByZXNzaW9uTGV2ZWwsCisJCQkJCQkJCSBkb3N5bmMsIG1vZGUsIHNldHVwRHVtcFdvcmtlcik7 CiAKIAlyZXR1cm4gKEFyY2hpdmUgKikgQUg7CiB9CkBAIC0yNTQsNyArMjU1LDggQEAgQ3JlYXRl QXJjaGl2ZShjb25zdCBjaGFyICpGaWxlU3BlYywgY29uc3QgQXJjaGl2ZUZvcm1hdCBmbXQsCiBB cmNoaXZlICoKIE9wZW5BcmNoaXZlKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZl Rm9ybWF0IGZtdCkKIHsKLQlBcmNoaXZlSGFuZGxlICpBSCA9IF9hbGxvY0FIKEZpbGVTcGVjLCBm bXQsIDAsIHRydWUsIGFyY2hNb2RlUmVhZCwgc2V0dXBSZXN0b3JlV29ya2VyKTsKKwlBcmNoaXZl SGFuZGxlICpBSCA9IF9hbGxvY0FIKEZpbGVTcGVjLCBmbXQsIENPTVBSRVNTSU9OX05PTkUsIDAs IHRydWUsCisJCQkJCQkJCSBhcmNoTW9kZVJlYWQsIHNldHVwUmVzdG9yZVdvcmtlcik7CiAKIAly ZXR1cm4gKEFyY2hpdmUgKikgQUg7CiB9CkBAIC0yNjksMTEgKzI3MSw4IEBAIENsb3NlQXJjaGl2 ZShBcmNoaXZlICpBSFgpCiAJQUgtPkNsb3NlUHRyKEFIKTsKIAogCS8qIENsb3NlIHRoZSBvdXRw dXQgKi8KLQllcnJubyA9IDA7CQkJCQkvKiBpbiBjYXNlIGd6Y2xvc2UoKSBkb2Vzbid0IHNldCBp dCAqLwotCWlmIChBSC0+Z3pPdXQpCi0JCXJlcyA9IEdaQ0xPU0UoQUgtPk9GKTsKLQllbHNlIGlm IChBSC0+T0YgIT0gc3Rkb3V0KQotCQlyZXMgPSBmY2xvc2UoQUgtPk9GKTsKKwllcnJubyA9IDA7 CisJcmVzID0gY2ZjbG9zZShBSC0+T0YpOwogCiAJaWYgKHJlcyAhPSAwKQogCQlmYXRhbCgiY291 bGQgbm90IGNsb3NlIG91dHB1dCBmaWxlOiAlbSIpOwpAQCAtMzU1LDcgKzM1NCw3IEBAIFJlc3Rv cmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAlSZXN0b3JlT3B0aW9ucyAqcm9wdCA9IEFILT5wdWJs aWMucm9wdDsKIAlib29sCQlwYXJhbGxlbF9tb2RlOwogCVRvY0VudHJ5ICAgKnRlOwotCU91dHB1 dENvbnRleHQgc2F2OworCWNmcAkJICAgKnNhdjsKIAogCUFILT5zdGFnZSA9IFNUQUdFX0lOSVRJ QUxJWklORzsKIApAQCAtMzg0LDcgKzM4Myw4IEBAIFJlc3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFI WCkKIAkgKiBNYWtlIHN1cmUgd2Ugd29uJ3QgbmVlZCAoZGUpY29tcHJlc3Npb24gd2UgaGF2ZW4n dCBnb3QKIAkgKi8KICNpZm5kZWYgSEFWRV9MSUJaCi0JaWYgKEFILT5jb21wcmVzc2lvbiAhPSAw ICYmIEFILT5QcmludFRvY0RhdGFQdHIgIT0gTlVMTCkKKwlpZiAoQUgtPmNvbXByZXNzaW9uTWV0 aG9kID09IENPTVBSRVNTSU9OX0daSVAgJiYKKwkJQUgtPlByaW50VG9jRGF0YVB0ciAhPSBOVUxM KQogCXsKIAkJZm9yICh0ZSA9IEFILT50b2MtPm5leHQ7IHRlICE9IEFILT50b2M7IHRlID0gdGUt Pm5leHQpCiAJCXsKQEAgLTQ1OSw4ICs0NTksOSBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpB SFgpCiAJICogU2V0dXAgdGhlIG91dHB1dCBmaWxlIGlmIG5lY2Vzc2FyeS4KIAkgKi8KIAlzYXYg PSBTYXZlT3V0cHV0KEFIKTsKLQlpZiAocm9wdC0+ZmlsZW5hbWUgfHwgcm9wdC0+Y29tcHJlc3Np b24pCi0JCVNldE91dHB1dChBSCwgcm9wdC0+ZmlsZW5hbWUsIHJvcHQtPmNvbXByZXNzaW9uKTsK KwlpZiAocm9wdC0+ZmlsZW5hbWUgfHwgcm9wdC0+Y29tcHJlc3Npb25NZXRob2QgIT0gQ09NUFJF U1NJT05fTk9ORSkKKwkJU2V0T3V0cHV0KEFILCByb3B0LT5maWxlbmFtZSwKKwkJCQkgIHJvcHQt PmNvbXByZXNzaW9uTWV0aG9kLCByb3B0LT5jb21wcmVzc2lvbkxldmVsKTsKIAogCWFocHJpbnRm KEFILCAiLS1cbi0tIFBvc3RncmVTUUwgZGF0YWJhc2UgZHVtcFxuLS1cblxuIik7CiAKQEAgLTc0 MCw3ICs3NDEsNyBAQCBSZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJICovCiAJQUgtPnN0 YWdlID0gU1RBR0VfRklOQUxJWklORzsKIAotCWlmIChyb3B0LT5maWxlbmFtZSB8fCByb3B0LT5j b21wcmVzc2lvbikKKwlpZiAocm9wdC0+ZmlsZW5hbWUgfHwgcm9wdC0+Y29tcHJlc3Npb25NZXRo b2QgIT0gQ09NUFJFU1NJT05fTk9ORSkKIAkJUmVzdG9yZU91dHB1dChBSCwgc2F2KTsKIAogCWlm IChyb3B0LT51c2VEQikKQEAgLTk3MCw2ICs5NzEsNyBAQCBOZXdSZXN0b3JlT3B0aW9ucyh2b2lk KQogCW9wdHMtPmZvcm1hdCA9IGFyY2hVbmtub3duOwogCW9wdHMtPmNwYXJhbXMucHJvbXB0UGFz c3dvcmQgPSBUUklfREVGQVVMVDsKIAlvcHRzLT5kdW1wU2VjdGlvbnMgPSBEVU1QX1VOU0VDVElP TkVEOworCW9wdHMtPmNvbXByZXNzaW9uTWV0aG9kID0gQ09NUFJFU1NJT05fTk9ORTsKIAogCXJl dHVybiBvcHRzOwogfQpAQCAtMTExNywxMyArMTExOSwxMyBAQCBQcmludFRPQ1N1bW1hcnkoQXJj aGl2ZSAqQUhYKQogCVJlc3RvcmVPcHRpb25zICpyb3B0ID0gQUgtPnB1YmxpYy5yb3B0OwogCVRv Y0VudHJ5ICAgKnRlOwogCXRlU2VjdGlvbgljdXJTZWN0aW9uOwotCU91dHB1dENvbnRleHQgc2F2 OworCWNmcAkJICAgKnNhdjsKIAljb25zdCBjaGFyICpmbXROYW1lOwogCWNoYXIJCXN0YW1wX3N0 cls2NF07CiAKIAlzYXYgPSBTYXZlT3V0cHV0KEFIKTsKIAlpZiAocm9wdC0+ZmlsZW5hbWUpCi0J CVNldE91dHB1dChBSCwgcm9wdC0+ZmlsZW5hbWUsIDAgLyogbm8gY29tcHJlc3Npb24gKi8gKTsK KwkJU2V0T3V0cHV0KEFILCByb3B0LT5maWxlbmFtZSwgQ09NUFJFU1NJT05fTk9ORSwgMCk7CiAK IAlpZiAoc3RyZnRpbWUoc3RhbXBfc3RyLCBzaXplb2Yoc3RhbXBfc3RyKSwgUEdEVU1QX1NUUkZU SU1FX0ZNVCwKIAkJCQkgbG9jYWx0aW1lKCZBSC0+Y3JlYXRlRGF0ZSkpID09IDApCkBAIC0xMTMy LDcgKzExMzQsNyBAQCBQcmludFRPQ1N1bW1hcnkoQXJjaGl2ZSAqQUhYKQogCWFocHJpbnRmKEFI LCAiO1xuOyBBcmNoaXZlIGNyZWF0ZWQgYXQgJXNcbiIsIHN0YW1wX3N0cik7CiAJYWhwcmludGYo QUgsICI7ICAgICBkYm5hbWU6ICVzXG47ICAgICBUT0MgRW50cmllczogJWRcbjsgICAgIENvbXBy ZXNzaW9uOiAlZFxuIiwKIAkJCSBzYW5pdGl6ZV9saW5lKEFILT5hcmNoZGJuYW1lLCBmYWxzZSks Ci0JCQkgQUgtPnRvY0NvdW50LCBBSC0+Y29tcHJlc3Npb24pOworCQkJIEFILT50b2NDb3VudCwg QUgtPmNvbXByZXNzaW9uTGV2ZWwpOwogCiAJc3dpdGNoIChBSC0+Zm9ybWF0KQogCXsKQEAgLTE0 ODYsNjAgKzE0ODgsMzUgQEAgYXJjaHByaW50ZihBcmNoaXZlICpBSCwgY29uc3QgY2hhciAqZm10 LC4uLikKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBzdGF0aWMgdm9pZAot U2V0T3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGNv bXByZXNzaW9uKQorU2V0T3V0cHV0KEFyY2hpdmVIYW5kbGUgKkFILCBjb25zdCBjaGFyICpmaWxl bmFtZSwKKwkJICBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCwgaW50IGNvbXBy ZXNzaW9uTGV2ZWwpCiB7Ci0JaW50CQkJZm47CisJY29uc3QgY2hhciAqbW9kZTsKKwlpbnQJCQlm biA9IC0xOwogCiAJaWYgKGZpbGVuYW1lKQogCXsKIAkJaWYgKHN0cmNtcChmaWxlbmFtZSwgIi0i KSA9PSAwKQogCQkJZm4gPSBmaWxlbm8oc3Rkb3V0KTsKLQkJZWxzZQotCQkJZm4gPSAtMTsKIAl9 CiAJZWxzZSBpZiAoQUgtPkZIKQogCQlmbiA9IGZpbGVubyhBSC0+RkgpOwogCWVsc2UgaWYgKEFI LT5mU3BlYykKIAl7Ci0JCWZuID0gLTE7CiAJCWZpbGVuYW1lID0gQUgtPmZTcGVjOwogCX0KIAll bHNlCiAJCWZuID0gZmlsZW5vKHN0ZG91dCk7CiAKLQkvKiBJZiBjb21wcmVzc2lvbiBleHBsaWNp dGx5IHJlcXVlc3RlZCwgdXNlIGd6b3BlbiAqLwotI2lmZGVmIEhBVkVfTElCWgotCWlmIChjb21w cmVzc2lvbiAhPSAwKQotCXsKLQkJY2hhcgkJZm1vZGVbMTRdOworCWlmIChBSC0+bW9kZSA9PSBh cmNoTW9kZUFwcGVuZCkKKwkJbW9kZSA9IFBHX0JJTkFSWV9BOworCWVsc2UKKwkJbW9kZSA9IFBH X0JJTkFSWV9XOwogCi0JCS8qIERvbid0IHVzZSBQR19CSU5BUllfeCBzaW5jZSB0aGlzIGlzIHps aWIgKi8KLQkJc3ByaW50ZihmbW9kZSwgIndiJWQiLCBjb21wcmVzc2lvbik7Ci0JCWlmIChmbiA+ PSAwKQotCQkJQUgtPk9GID0gZ3pkb3BlbihkdXAoZm4pLCBmbW9kZSk7Ci0JCWVsc2UKLQkJCUFI LT5PRiA9IGd6b3BlbihmaWxlbmFtZSwgZm1vZGUpOwotCQlBSC0+Z3pPdXQgPSAxOwotCX0KKwlp ZiAoZm4gPj0gMCkKKwkJQUgtPk9GID0gY2Zkb3BlbihkdXAoZm4pLCBtb2RlLCBjb21wcmVzc2lv bk1ldGhvZCwgY29tcHJlc3Npb25MZXZlbCk7CiAJZWxzZQotI2VuZGlmCi0JewkJCQkJCQkvKiBV c2UgZm9wZW4gKi8KLQkJaWYgKEFILT5tb2RlID09IGFyY2hNb2RlQXBwZW5kKQotCQl7Ci0JCQlp ZiAoZm4gPj0gMCkKLQkJCQlBSC0+T0YgPSBmZG9wZW4oZHVwKGZuKSwgUEdfQklOQVJZX0EpOwot CQkJZWxzZQotCQkJCUFILT5PRiA9IGZvcGVuKGZpbGVuYW1lLCBQR19CSU5BUllfQSk7Ci0JCX0K LQkJZWxzZQotCQl7Ci0JCQlpZiAoZm4gPj0gMCkKLQkJCQlBSC0+T0YgPSBmZG9wZW4oZHVwKGZu KSwgUEdfQklOQVJZX1cpOwotCQkJZWxzZQotCQkJCUFILT5PRiA9IGZvcGVuKGZpbGVuYW1lLCBQ R19CSU5BUllfVyk7Ci0JCX0KLQkJQUgtPmd6T3V0ID0gMDsKLQl9CisJCUFILT5PRiA9IGNmb3Bl bihmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2ZWwpOwog CiAJaWYgKCFBSC0+T0YpCiAJewpAQCAtMTU1MCwzMyArMTUyNywyNCBAQCBTZXRPdXRwdXQoQXJj aGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgY29tcHJlc3Npb24pCiAJ fQogfQogCi1zdGF0aWMgT3V0cHV0Q29udGV4dAorc3RhdGljIGNmcCAqCiBTYXZlT3V0cHV0KEFy Y2hpdmVIYW5kbGUgKkFIKQogewotCU91dHB1dENvbnRleHQgc2F2OwotCi0Jc2F2Lk9GID0gQUgt Pk9GOwotCXNhdi5nek91dCA9IEFILT5nek91dDsKLQotCXJldHVybiBzYXY7CisJcmV0dXJuIChj ZnAgKilBSC0+T0Y7CiB9CiAKIHN0YXRpYyB2b2lkCi1SZXN0b3JlT3V0cHV0KEFyY2hpdmVIYW5k bGUgKkFILCBPdXRwdXRDb250ZXh0IHNhdmVkQ29udGV4dCkKK1Jlc3RvcmVPdXRwdXQoQXJjaGl2 ZUhhbmRsZSAqQUgsIGNmcCAqc2F2ZWRPdXRwdXQpCiB7CiAJaW50CQkJcmVzOwogCi0JZXJybm8g PSAwOwkJCQkJLyogaW4gY2FzZSBnemNsb3NlKCkgZG9lc24ndCBzZXQgaXQgKi8KLQlpZiAoQUgt Pmd6T3V0KQotCQlyZXMgPSBHWkNMT1NFKEFILT5PRik7Ci0JZWxzZQotCQlyZXMgPSBmY2xvc2Uo QUgtPk9GKTsKKwllcnJubyA9IDA7CisJcmVzID0gY2ZjbG9zZShBSC0+T0YpOwogCiAJaWYgKHJl cyAhPSAwKQogCQlmYXRhbCgiY291bGQgbm90IGNsb3NlIG91dHB1dCBmaWxlOiAlbSIpOwogCi0J QUgtPmd6T3V0ID0gc2F2ZWRDb250ZXh0Lmd6T3V0OwotCUFILT5PRiA9IHNhdmVkQ29udGV4dC5P RjsKKwlBSC0+T0YgPSBzYXZlZE91dHB1dDsKIH0KIAogCkBAIC0xNzAwLDIyICsxNjY4LDE2IEBA IGFod3JpdGUoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCBBcmNo aXZlSGFuZGxlICpBSCkKIAogCQlieXRlc193cml0dGVuID0gc2l6ZSAqIG5tZW1iOwogCX0KLQll bHNlIGlmIChBSC0+Z3pPdXQpCi0JCWJ5dGVzX3dyaXR0ZW4gPSBHWldSSVRFKHB0ciwgc2l6ZSwg bm1lbWIsIEFILT5PRik7CiAJZWxzZSBpZiAoQUgtPkN1c3RvbU91dFB0cikKIAkJYnl0ZXNfd3Jp dHRlbiA9IEFILT5DdXN0b21PdXRQdHIoQUgsIHB0ciwgc2l6ZSAqIG5tZW1iKTsKLQotCWVsc2UK LQl7Ci0JCS8qCi0JCSAqIElmIHdlJ3JlIGRvaW5nIGEgcmVzdG9yZSwgYW5kIGl0J3MgZGlyZWN0 IHRvIERCLCBhbmQgd2UncmUKLQkJICogY29ubmVjdGVkIHRoZW4gc2VuZCBpdCB0byB0aGUgREIu Ci0JCSAqLwotCQlpZiAoUmVzdG9yaW5nVG9EQihBSCkpCisJLyoKKwkgKiBJZiB3ZSdyZSBkb2lu ZyBhIHJlc3RvcmUsIGFuZCBpdCdzIGRpcmVjdCB0byBEQiwgYW5kIHdlJ3JlCisJICogY29ubmVj dGVkIHRoZW4gc2VuZCBpdCB0byB0aGUgREIuCisJICovCisJZWxzZSBpZiAoUmVzdG9yaW5nVG9E QihBSCkpCiAJCQlieXRlc193cml0dGVuID0gRXhlY3V0ZVNxbENvbW1hbmRCdWYoJkFILT5wdWJs aWMsIChjb25zdCBjaGFyICopIHB0ciwgc2l6ZSAqIG5tZW1iKTsKLQkJZWxzZQotCQkJYnl0ZXNf d3JpdHRlbiA9IGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCBBSC0+T0YpICogc2l6ZTsKLQl9CisJ ZWxzZQorCQlieXRlc193cml0dGVuID0gY2Z3cml0ZShwdHIsIHNpemUgKiBubWVtYiwgQUgtPk9G KTsKIAogCWlmIChieXRlc193cml0dGVuICE9IHNpemUgKiBubWVtYikKIAkJV1JJVEVfRVJST1Jf RVhJVDsKQEAgLTIyMDAsNyArMjE2Miw5IEBAIF9kaXNjb3ZlckFyY2hpdmVGb3JtYXQoQXJjaGl2 ZUhhbmRsZSAqQUgpCiAgKi8KIHN0YXRpYyBBcmNoaXZlSGFuZGxlICoKIF9hbGxvY0FIKGNvbnN0 IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKLQkJIGNvbnN0IGludCBj b21wcmVzc2lvbiwgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2RlIG1vZGUsCisJCSBjb25zdCBDb21w cmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCwKKwkJIGNvbnN0IGludCBjb21wcmVzc2lv bkxldmVsLAorCQkgYm9vbCBkb3N5bmMsIEFyY2hpdmVNb2RlIG1vZGUsCiAJCSBTZXR1cFdvcmtl clB0clR5cGUgc2V0dXBXb3JrZXJQdHIpCiB7CiAJQXJjaGl2ZUhhbmRsZSAqQUg7CkBAIC0yMjUx LDE0ICsyMjE1LDE0IEBAIF9hbGxvY0FIKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBjb25zdCBBcmNo aXZlRm9ybWF0IGZtdCwKIAlBSC0+dG9jLT5wcmV2ID0gQUgtPnRvYzsKIAogCUFILT5tb2RlID0g bW9kZTsKLQlBSC0+Y29tcHJlc3Npb24gPSBjb21wcmVzc2lvbjsKKwlBSC0+Y29tcHJlc3Npb25N ZXRob2QgPSBjb21wcmVzc2lvbk1ldGhvZDsKKwlBSC0+Y29tcHJlc3Npb25MZXZlbCA9IGNvbXBy ZXNzaW9uTGV2ZWw7CiAJQUgtPmRvc3luYyA9IGRvc3luYzsKIAogCW1lbXNldCgmKEFILT5zcWxw YXJzZSksIDAsIHNpemVvZihBSC0+c3FscGFyc2UpKTsKIAogCS8qIE9wZW4gc3Rkb3V0IHdpdGgg bm8gY29tcHJlc3Npb24gZm9yIEFIIG91dHB1dCBoYW5kbGUgKi8KLQlBSC0+Z3pPdXQgPSAwOwot CUFILT5PRiA9IHN0ZG91dDsKKwlBSC0+T0YgPSBjZmRvcGVuKGR1cChmaWxlbm8oc3Rkb3V0KSks IFBHX0JJTkFSWV9BLCBDT01QUkVTU0lPTl9OT05FLCAwKTsKIAogCS8qCiAJICogT24gV2luZG93 cywgd2UgbmVlZCB0byB1c2UgYmluYXJ5IG1vZGUgdG8gcmVhZC93cml0ZSBub24tdGV4dCBmaWxl cywKQEAgLTIyNjYsNyArMjIzMCw3IEBAIF9hbGxvY0FIKGNvbnN0IGNoYXIgKkZpbGVTcGVjLCBj b25zdCBBcmNoaXZlRm9ybWF0IGZtdCwKIAkgKiBGb3JjZSBzdGRpbi9zdGRvdXQgaW50byBiaW5h cnkgbW9kZSBpZiB0aGF0IGlzIHdoYXQgd2UgYXJlIHVzaW5nLgogCSAqLwogI2lmZGVmIFdJTjMy Ci0JaWYgKChmbXQgIT0gYXJjaE51bGwgfHwgY29tcHJlc3Npb24gIT0gMCkgJiYKKwlpZiAoKGZt dCAhPSBhcmNoTnVsbCB8fCBjb21wcmVzc2lvbk1ldGhvZCAhPSBDT01QUkVTU0lPTl9OT05FKSAm JgogCQkoQUgtPmZTcGVjID09IE5VTEwgfHwgc3RyY21wKEFILT5mU3BlYywgIiIpID09IDApKQog CXsKIAkJaWYgKG1vZGUgPT0gYXJjaE1vZGVXcml0ZSkKQEAgLTM3MTYsNyArMzY4MCw3IEBAIFdy aXRlSGVhZChBcmNoaXZlSGFuZGxlICpBSCkKIAlBSC0+V3JpdGVCeXRlUHRyKEFILCBBSC0+aW50 U2l6ZSk7CiAJQUgtPldyaXRlQnl0ZVB0cihBSCwgQUgtPm9mZlNpemUpOwogCUFILT5Xcml0ZUJ5 dGVQdHIoQUgsIEFILT5mb3JtYXQpOwotCVdyaXRlSW50KEFILCBBSC0+Y29tcHJlc3Npb24pOwor CVdyaXRlSW50KEFILCBBSC0+Y29tcHJlc3Npb25MZXZlbCk7CiAJY3J0bSA9ICpsb2NhbHRpbWUo JkFILT5jcmVhdGVEYXRlKTsKIAlXcml0ZUludChBSCwgY3J0bS50bV9zZWMpOwogCVdyaXRlSW50 KEFILCBjcnRtLnRtX21pbik7CkBAIC0zNzkwLDE4ICszNzU0LDIxIEBAIFJlYWRIZWFkKEFyY2hp dmVIYW5kbGUgKkFIKQogCWlmIChBSC0+dmVyc2lvbiA+PSBLX1ZFUlNfMV8yKQogCXsKIAkJaWYg KEFILT52ZXJzaW9uIDwgS19WRVJTXzFfNCkKLQkJCUFILT5jb21wcmVzc2lvbiA9IEFILT5SZWFk Qnl0ZVB0cihBSCk7CisJCQlBSC0+Y29tcHJlc3Npb25MZXZlbCA9IEFILT5SZWFkQnl0ZVB0cihB SCk7CiAJCWVsc2UKLQkJCUFILT5jb21wcmVzc2lvbiA9IFJlYWRJbnQoQUgpOworCQkJQUgtPmNv bXByZXNzaW9uTGV2ZWwgPSBSZWFkSW50KEFIKTsKIAl9CiAJZWxzZQotCQlBSC0+Y29tcHJlc3Np b24gPSBaX0RFRkFVTFRfQ09NUFJFU1NJT047CisJCUFILT5jb21wcmVzc2lvbkxldmVsID0gWl9E RUZBVUxUX0NPTVBSRVNTSU9OOwogCisJaWYgKEFILT5jb21wcmVzc2lvbkxldmVsICE9IElOVF9N SU4pCiAjaWZuZGVmIEhBVkVfTElCWgotCWlmIChBSC0+Y29tcHJlc3Npb24gIT0gMCkKIAkJcGdf bG9nX3dhcm5pbmcoImFyY2hpdmUgaXMgY29tcHJlc3NlZCwgYnV0IHRoaXMgaW5zdGFsbGF0aW9u IGRvZXMgbm90IHN1cHBvcnQgY29tcHJlc3Npb24gLS0gbm8gZGF0YSB3aWxsIGJlIGF2YWlsYWJs ZSIpOworI2Vsc2UKKwkJQUgtPmNvbXByZXNzaW9uTWV0aG9kID0gQ09NUFJFU1NJT05fR1pJUDsK ICNlbmRpZgogCisKIAlpZiAoQUgtPnZlcnNpb24gPj0gS19WRVJTXzFfNCkKIAl7CiAJCXN0cnVj dCB0bQljcnRtOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZl ci5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oCmluZGV4IDU0MGQ0ZjZh ODMuLjgzN2U5ZDczZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJj aGl2ZXIuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKQEAgLTMy LDMwICszMiw2IEBACiAKICNkZWZpbmUgTE9CQlVGU0laRSAxNjM4NAogCi0jaWZkZWYgSEFWRV9M SUJaCi0jaW5jbHVkZSA8emxpYi5oPgotI2RlZmluZSBHWkNMT1NFKGZoKSBnemNsb3NlKGZoKQot I2RlZmluZSBHWldSSVRFKHAsIHMsIG4sIGZoKSBnendyaXRlKGZoLCBwLCAobikgKiAocykpCi0j ZGVmaW5lIEdaUkVBRChwLCBzLCBuLCBmaCkgZ3pyZWFkKGZoLCBwLCAobikgKiAocykpCi0jZGVm aW5lIEdaRU9GKGZoKQlnemVvZihmaCkKLSNlbHNlCi0jZGVmaW5lIEdaQ0xPU0UoZmgpIGZjbG9z ZShmaCkKLSNkZWZpbmUgR1pXUklURShwLCBzLCBuLCBmaCkgKGZ3cml0ZShwLCBzLCBuLCBmaCkg KiAocykpCi0jZGVmaW5lIEdaUkVBRChwLCBzLCBuLCBmaCkgZnJlYWQocCwgcywgbiwgZmgpCi0j ZGVmaW5lIEdaRU9GKGZoKQlmZW9mKGZoKQotLyogdGhpcyBpcyBqdXN0IHRoZSByZWRlZmluaXRp b24gb2YgYSBsaWJ6IGNvbnN0YW50ICovCi0jZGVmaW5lIFpfREVGQVVMVF9DT01QUkVTU0lPTiAo LTEpCi0KLXR5cGVkZWYgc3RydWN0IF96X3N0cmVhbQotewotCXZvaWQJICAgKm5leHRfaW47Ci0J dm9pZAkgICAqbmV4dF9vdXQ7Ci0Jc2l6ZV90CQlhdmFpbF9pbjsKLQlzaXplX3QJCWF2YWlsX291 dDsKLX0gel9zdHJlYW07Ci10eXBlZGVmIHpfc3RyZWFtICp6X3N0cmVhbXA7Ci0jZW5kaWYKLQog LyogRGF0YSBibG9jayB0eXBlcyAqLwogI2RlZmluZSBCTEtfREFUQSAxCiAjZGVmaW5lIEJMS19C TE9CUyAzCkBAIC0zMTksOCArMjk1LDcgQEAgc3RydWN0IF9hcmNoaXZlSGFuZGxlCiAKIAljaGFy CSAgICpmU3BlYzsJCQkvKiBBcmNoaXZlIEZpbGUgU3BlYyAqLwogCUZJTEUJICAgKkZIOwkJCQkv KiBHZW5lcmFsIHB1cnBvc2UgZmlsZSBoYW5kbGUgKi8KLQl2b2lkCSAgICpPRjsKLQlpbnQJCQln ek91dDsJCQkvKiBPdXRwdXQgZmlsZSAqLworCXZvaWQJICAgKk9GOwkJCQkvKiBPdXRwdXQgZmls ZSAqLwogCiAJc3RydWN0IF90b2NFbnRyeSAqdG9jOwkJLyogSGVhZGVyIG9mIGNpcmN1bGFyIGxp c3Qgb2YgVE9DIGVudHJpZXMgKi8KIAlpbnQJCQl0b2NDb3VudDsJCS8qIE51bWJlciBvZiBUT0Mg ZW50cmllcyAqLwpAQCAtMzMxLDE0ICszMDYsMTcgQEAgc3RydWN0IF9hcmNoaXZlSGFuZGxlCiAJ RHVtcElkCSAgICp0YWJsZURhdGFJZDsJLyogVEFCTEUgREFUQSBpZHMsIGluZGV4ZWQgYnkgdGFi bGUgZHVtcElkICovCiAKIAlzdHJ1Y3QgX3RvY0VudHJ5ICpjdXJyVG9jOwkvKiBVc2VkIHdoZW4g ZHVtcGluZyBkYXRhICovCi0JaW50CQkJY29tcHJlc3Npb247CS8qLS0tLS0tLS0tCi0JCQkJCQkJ CSAqIENvbXByZXNzaW9uIHJlcXVlc3RlZCBvbiBvcGVuKCkuCi0JCQkJCQkJCSAqIFBvc3NpYmxl IHZhbHVlcyBmb3IgY29tcHJlc3Npb246Ci0JCQkJCQkJCSAqIC0xCVpfREVGQVVMVF9DT01QUkVT U0lPTgotCQkJCQkJCQkgKiAgMAlDT01QUkVTU0lPTl9OT05FCi0JCQkJCQkJCSAqIDEtOSBsZXZl bHMgZm9yIGd6aXAgY29tcHJlc3Npb24KLQkJCQkJCQkJICotLS0tLS0tLS0KLQkJCQkJCQkJICov CisJQ29tcHJlc3Npb25NZXRob2QgY29tcHJlc3Npb25NZXRob2Q7IC8qIFJlcXVlc3RlZCBtZXRo b2QgZm9yIGNvbXByZXNzaW9uICovCisJaW50CQkJY29tcHJlc3Npb25MZXZlbDsgLyotLS0tLS0t LS0KKwkJCQkJCQkJICAgKiBSZXF1ZXN0ZWQgbGV2ZWwgb2YgY29tcHJlc3Npb24gZm9yIG1ldGhv ZC4KKwkJCQkJCQkJICAgKiBQb3NzaWJsZSB2YWx1ZXMgZm9yIGNvbXByZXNzaW9uOgorCQkJCQkJ CQkgICAqIElOVF9NSU4gd2hlbiBubyBjb21wcmVzc2lvbiBtZXRob2QgaXMKKwkJCQkJCQkJICAg KiByZXF1ZXN0ZWQuCisJCQkJCQkJCSAgICogLTEJWl9ERUZBVUxUX0NPTVBSRVNTSU9OIGZvciBn emlwCisJCQkJCQkJCSAgICogY29tcHJlc3Npb24uCisJCQkJCQkJCSAgICogMS05IGxldmVscyBm b3IgZ3ppcCBjb21wcmVzc2lvbi4KKwkJCQkJCQkJICAgKi0tLS0tLS0tLQorCQkJCQkJCQkgICAq LwogCWJvb2wJCWRvc3luYzsJCQkvKiBkYXRhIHJlcXVlc3RlZCB0byBiZSBzeW5jZWQgb24gc2ln aHQgKi8KIAlBcmNoaXZlTW9kZSBtb2RlOwkJCS8qIEZpbGUgbW9kZSAtIHIgb3IgdyAqLwogCXZv aWQJICAgKmZvcm1hdERhdGE7CQkvKiBIZWFkZXIgZGF0YSBzcGVjaWZpYyB0byBmaWxlIGZvcm1h dCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9jdXN0b20uYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfY3VzdG9tLmMKaW5kZXggNzdkNDAyYzMyMy4uN2YzOGVh OWNkNSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9jdXN0b20uYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2N1c3RvbS5jCkBAIC0yOTgsNyArMjk4LDkgQEAg X1N0YXJ0RGF0YShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCV9Xcml0ZUJ5dGUo QUgsIEJMS19EQVRBKTsJLyogQmxvY2sgdHlwZSAqLwogCVdyaXRlSW50KEFILCB0ZS0+ZHVtcElk KTsJLyogRm9yIHNhbml0eSBjaGVjayAqLwogCi0JY3R4LT5jcyA9IEFsbG9jYXRlQ29tcHJlc3Nv cihBSC0+Y29tcHJlc3Npb24sIF9DdXN0b21Xcml0ZUZ1bmMpOworCWN0eC0+Y3MgPSBBbGxvY2F0 ZUNvbXByZXNzb3IoQUgtPmNvbXByZXNzaW9uTWV0aG9kLAorCQkJCQkJCQkgQUgtPmNvbXByZXNz aW9uTGV2ZWwsCisJCQkJCQkJCSBfQ3VzdG9tV3JpdGVGdW5jKTsKIH0KIAogLyoKQEAgLTM3Nyw3 ICszNzksOSBAQCBfU3RhcnRCbG9iKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIE9p ZCBvaWQpCiAKIAlXcml0ZUludChBSCwgb2lkKTsKIAotCWN0eC0+Y3MgPSBBbGxvY2F0ZUNvbXBy ZXNzb3IoQUgtPmNvbXByZXNzaW9uLCBfQ3VzdG9tV3JpdGVGdW5jKTsKKwljdHgtPmNzID0gQWxs b2NhdGVDb21wcmVzc29yKEFILT5jb21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJCQkJIEFILT5jb21w cmVzc2lvbkxldmVsLAorCQkJCQkJCQkgX0N1c3RvbVdyaXRlRnVuYyk7CiB9CiAKIC8qCkBAIC01 NjYsNyArNTcwLDggQEAgX1ByaW50VG9jRGF0YShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkg KnRlKQogc3RhdGljIHZvaWQKIF9QcmludERhdGEoQXJjaGl2ZUhhbmRsZSAqQUgpCiB7Ci0JUmVh ZERhdGFGcm9tQXJjaGl2ZShBSCwgQUgtPmNvbXByZXNzaW9uLCBfQ3VzdG9tUmVhZEZ1bmMpOwor CVJlYWREYXRhRnJvbUFyY2hpdmUoQUgsIEFILT5jb21wcmVzc2lvbk1ldGhvZCwgQUgtPmNvbXBy ZXNzaW9uTGV2ZWwsCisJCQkJCQlfQ3VzdG9tUmVhZEZ1bmMpOwogfQogCiBzdGF0aWMgdm9pZApk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19iYWNrdXBfZGlyZWN0b3J5LmMKaW5kZXggN2Y0ZTM0MGRlYS4uMGU2MGI0 NDdkZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9kaXJlY3RvcnkuYwor KysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2RpcmVjdG9yeS5jCkBAIC0zMjcsNyArMzI3 LDkgQEAgX1N0YXJ0RGF0YShBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50cnkgKnRlKQogCiAJc2V0 RmlsZVBhdGgoQUgsIGZuYW1lLCB0Y3R4LT5maWxlbmFtZSk7CiAKLQljdHgtPmRhdGFGSCA9IGNm b3Blbl93cml0ZShmbmFtZSwgUEdfQklOQVJZX1csIEFILT5jb21wcmVzc2lvbik7CisJY3R4LT5k YXRhRkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsIFBHX0JJTkFSWV9XLAorCQkJCQkJCSAgIEFILT5j b21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJCQkgICBBSC0+Y29tcHJlc3Npb25MZXZlbCk7CiAJaWYg KGN0eC0+ZGF0YUZIID09IE5VTEwpCiAJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmls ZSBcIiVzXCI6ICVtIiwgZm5hbWUpOwogfQpAQCAtNTgxLDcgKzU4Myw4IEBAIF9DbG9zZUFyY2hp dmUoQXJjaGl2ZUhhbmRsZSAqQUgpCiAJCWN0eC0+cHN0YXRlID0gUGFyYWxsZWxCYWNrdXBTdGFy dChBSCk7CiAKIAkJLyogVGhlIFRPQyBpcyBhbHdheXMgY3JlYXRlZCB1bmNvbXByZXNzZWQgKi8K LQkJdG9jRkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsIFBHX0JJTkFSWV9XLCAwKTsKKwkJdG9jRkgg PSBjZm9wZW5fd3JpdGUoZm5hbWUsIFBHX0JJTkFSWV9XLAorCQkJCQkJCSBDT01QUkVTU0lPTl9O T05FLCAwKTsKIAkJaWYgKHRvY0ZIID09IE5VTEwpCiAJCQlmYXRhbCgiY291bGQgbm90IG9wZW4g b3V0cHV0IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKIAkJY3R4LT5kYXRhRkggPSB0b2NGSDsK QEAgLTY0NCw3ICs2NDcsNyBAQCBfU3RhcnRCbG9icyhBcmNoaXZlSGFuZGxlICpBSCwgVG9jRW50 cnkgKnRlKQogCXNldEZpbGVQYXRoKEFILCBmbmFtZSwgImJsb2JzLnRvYyIpOwogCiAJLyogVGhl IGJsb2IgVE9DIGZpbGUgaXMgbmV2ZXIgY29tcHJlc3NlZCAqLwotCWN0eC0+YmxvYnNUb2NGSCA9 IGNmb3Blbl93cml0ZShmbmFtZSwgImFiIiwgMCk7CisJY3R4LT5ibG9ic1RvY0ZIID0gY2ZvcGVu X3dyaXRlKGZuYW1lLCAiYWIiLCBDT01QUkVTU0lPTl9OT05FLCAwKTsKIAlpZiAoY3R4LT5ibG9i c1RvY0ZIID09IE5VTEwpCiAJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiBvdXRwdXQgZmlsZSBcIiVz XCI6ICVtIiwgZm5hbWUpOwogfQpAQCAtNjYyLDcgKzY2NSw4IEBAIF9TdGFydEJsb2IoQXJjaGl2 ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSwgT2lkIG9pZCkKIAogCXNucHJpbnRmKGZuYW1lLCBN QVhQR1BBVEgsICIlcy9ibG9iXyV1LmRhdCIsIGN0eC0+ZGlyZWN0b3J5LCBvaWQpOwogCi0JY3R4 LT5kYXRhRkggPSBjZm9wZW5fd3JpdGUoZm5hbWUsIFBHX0JJTkFSWV9XLCBBSC0+Y29tcHJlc3Np b24pOworCWN0eC0+ZGF0YUZIID0gY2ZvcGVuX3dyaXRlKGZuYW1lLCBQR19CSU5BUllfVywKKwkJ CQkJCQkgICBBSC0+Y29tcHJlc3Npb25NZXRob2QsIEFILT5jb21wcmVzc2lvbkxldmVsKTsKIAog CWlmIChjdHgtPmRhdGFGSCA9PSBOVUxMKQogCQlmYXRhbCgiY291bGQgbm90IG9wZW4gb3V0cHV0 IGZpbGUgXCIlc1wiOiAlbSIsIGZuYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9w Z19iYWNrdXBfdGFyLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX3Rhci5jCmluZGV4IDVj MzUxYWNkYTAuLjIzOWIwNTMwMTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXBfdGFyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF90YXIuYwpAQCAtMzUsNiAr MzUsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiAjaW5jbHVkZSAiY29tbW9uL2ZpbGVfdXRp bHMuaCIKKyNpbmNsdWRlICJjb21wcmVzc19pby5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0cmlu Z191dGlscy5oIgogI2luY2x1ZGUgInBnX2JhY2t1cF9hcmNoaXZlci5oIgogI2luY2x1ZGUgInBn X2JhY2t1cF90YXIuaCIKQEAgLTE5OSw3ICsyMDAsNyBAQCBJbml0QXJjaGl2ZUZtdF9UYXIoQXJj aGl2ZUhhbmRsZSAqQUgpCiAJCSAqIHBvc3NpYmxlIHNpbmNlIGd6ZG9wZW4gdXNlcyBidWZmZXJl ZCBJTyB3aGljaCB0b3RhbGx5IHNjcmV3cyBmaWxlCiAJCSAqIHBvc2l0aW9uaW5nLgogCQkgKi8K LQkJaWYgKEFILT5jb21wcmVzc2lvbiAhPSAwKQorCQlpZiAoQUgtPmNvbXByZXNzaW9uTWV0aG9k ICE9IENPTVBSRVNTSU9OX05PTkUpCiAJCQlmYXRhbCgiY29tcHJlc3Npb24gaXMgbm90IHN1cHBv cnRlZCBieSB0YXIgYXJjaGl2ZSBmb3JtYXQiKTsKIAl9CiAJZWxzZQpAQCAtMjQ5LDcgKzI1MCw3 IEBAIF9BcmNoaXZlRW50cnkoQXJjaGl2ZUhhbmRsZSAqQUgsIFRvY0VudHJ5ICp0ZSkKIAlpZiAo dGUtPmRhdGFEdW1wZXIgIT0gTlVMTCkKIAl7CiAjaWZkZWYgSEFWRV9MSUJaCi0JCWlmIChBSC0+ Y29tcHJlc3Npb24gPT0gMCkKKwkJaWYgKEFILT5jb21wcmVzc2lvbk1ldGhvZCA9PSBDT01QUkVT U0lPTl9OT05FKQogCQkJc3ByaW50ZihmbiwgIiVkLmRhdCIsIHRlLT5kdW1wSWQpOwogCQllbHNl CiAJCQlzcHJpbnRmKGZuLCAiJWQuZGF0Lmd6IiwgdGUtPmR1bXBJZCk7CkBAIC0zNDYsNyArMzQ3 LDcgQEAgdGFyT3BlbihBcmNoaXZlSGFuZGxlICpBSCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNo YXIgbW9kZSkKIAogI2lmZGVmIEhBVkVfTElCWgogCi0JCWlmIChBSC0+Y29tcHJlc3Npb24gPT0g MCkKKwkJaWYgKEFILT5jb21wcmVzc2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9OT05FKQogCQkJ dG0tPm5GSCA9IGN0eC0+dGFyRkg7CiAJCWVsc2UKIAkJCWZhdGFsKCJjb21wcmVzc2lvbiBpcyBu b3Qgc3VwcG9ydGVkIGJ5IHRhciBhcmNoaXZlIGZvcm1hdCIpOwpAQCAtNDA3LDkgKzQwOCw5IEBA IHRhck9wZW4oQXJjaGl2ZUhhbmRsZSAqQUgsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyIG1v ZGUpCiAKICNpZmRlZiBIQVZFX0xJQloKIAotCQlpZiAoQUgtPmNvbXByZXNzaW9uICE9IDApCisJ CWlmIChBSC0+Y29tcHJlc3Npb25NZXRob2QgIT0gQ09NUFJFU1NJT05fTk9ORSkKIAkJewotCQkJ c3ByaW50ZihmbW9kZSwgIndiJWQiLCBBSC0+Y29tcHJlc3Npb24pOworCQkJc3ByaW50ZihmbW9k ZSwgIndiJWQiLCBBSC0+Y29tcHJlc3Npb25MZXZlbCk7CiAJCQl0bS0+ekZIID0gZ3pkb3Blbihk dXAoZmlsZW5vKHRtLT50bXBGSCkpLCBmbW9kZSk7CiAJCQlpZiAodG0tPnpGSCA9PSBOVUxMKQog CQkJCWZhdGFsKCJjb3VsZCBub3Qgb3BlbiB0ZW1wb3JhcnkgZmlsZSIpOwpAQCAtNDM3LDcgKzQz OCw3IEBAIHRhckNsb3NlKEFyY2hpdmVIYW5kbGUgKkFILCBUQVJfTUVNQkVSICp0aCkKIAkvKgog CSAqIENsb3NlIHRoZSBHWiBmaWxlIHNpbmNlIHdlIGR1cCdkLiBUaGlzIHdpbGwgZmx1c2ggdGhl IGJ1ZmZlcnMuCiAJICovCi0JaWYgKEFILT5jb21wcmVzc2lvbiAhPSAwKQorCWlmIChBSC0+Y29t cHJlc3Npb25NZXRob2QgIT0gQ09NUFJFU1NJT05fTk9ORSkKIAl7CiAJCWVycm5vID0gMDsJCQkJ LyogaW4gY2FzZSBnemNsb3NlKCkgZG9lc24ndCBzZXQgaXQgKi8KIAkJaWYgKEdaQ0xPU0UodGgt PnpGSCkgIT0gMCkKQEAgLTg2NSw3ICs4NjYsNiBAQCBfQ2xvc2VBcmNoaXZlKEFyY2hpdmVIYW5k bGUgKkFIKQogCQltZW1jcHkocm9wdCwgQUgtPnB1YmxpYy5yb3B0LCBzaXplb2YoUmVzdG9yZU9w dGlvbnMpKTsKIAkJcm9wdC0+ZmlsZW5hbWUgPSBOVUxMOwogCQlyb3B0LT5kcm9wU2NoZW1hID0g MTsKLQkJcm9wdC0+Y29tcHJlc3Npb24gPSAwOwogCQlyb3B0LT5zdXBlcnVzZXIgPSBOVUxMOwog CQlyb3B0LT5zdXBwcmVzc0R1bXBXYXJuaW5ncyA9IHRydWU7CiAKQEAgLTk1NCw3ICs5NTQsNyBA QCBfU3RhcnRCbG9iKEFyY2hpdmVIYW5kbGUgKkFILCBUb2NFbnRyeSAqdGUsIE9pZCBvaWQpCiAJ aWYgKG9pZCA9PSAwKQogCQlmYXRhbCgiaW52YWxpZCBPSUQgZm9yIGxhcmdlIG9iamVjdCAoJXUp Iiwgb2lkKTsKIAotCWlmIChBSC0+Y29tcHJlc3Npb24gIT0gMCkKKwlpZiAoQUgtPmNvbXByZXNz aW9uTWV0aG9kICE9IENPTVBSRVNTSU9OX05PTkUpCiAJCXNmeCA9ICIuZ3oiOwogCWVsc2UKIAkJ c2Z4ID0gIiI7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBlNjlkY2Y4YTQ4Li43NDc3ZDUxMTJlIDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3RyaWdnZXJfZC5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZV9kLmgiCiAjaW5jbHVkZSAiY29tbW9uL2Nvbm5l Y3QuaCIKKyNpbmNsdWRlICJjb21wcmVzc19pby5oIgogI2luY2x1ZGUgImR1bXB1dGlscy5oIgog I2luY2x1ZGUgImZlX3V0aWxzL29wdGlvbl91dGlscy5oIgogI2luY2x1ZGUgImZlX3V0aWxzL3N0 cmluZ191dGlscy5oIgpAQCAtMTYzLDYgKzE2NCw5IEBAIHN0YXRpYyB2b2lkIHNldHVwX2Nvbm5l Y3Rpb24oQXJjaGl2ZSAqQUgsCiAJCQkJCQkJIGNvbnN0IGNoYXIgKmR1bXBlbmNvZGluZywgY29u c3QgY2hhciAqZHVtcHNuYXBzaG90LAogCQkJCQkJCSBjaGFyICp1c2Vfcm9sZSk7CiBzdGF0aWMg QXJjaGl2ZUZvcm1hdCBwYXJzZUFyY2hpdmVGb3JtYXQoY29uc3QgY2hhciAqZm9ybWF0LCBBcmNo aXZlTW9kZSAqbW9kZSk7CitzdGF0aWMgYm9vbCBwYXJzZV9jb21wcmVzc2lvbl9vcHRpb24oY29u c3QgY2hhciAqb3B0LAorCQkJCQkJCQkJIENvbXByZXNzaW9uTWV0aG9kICpjb21wcmVzc2lvbk1l dGhvZCwKKwkJCQkJCQkJCSBpbnQgKmNvbXByZXNzTGV2ZWwpOwogc3RhdGljIHZvaWQgZXhwYW5k X3NjaGVtYV9uYW1lX3BhdHRlcm5zKEFyY2hpdmUgKmZvdXQsCiAJCQkJCQkJCQkJU2ltcGxlU3Ry aW5nTGlzdCAqcGF0dGVybnMsCiAJCQkJCQkJCQkJU2ltcGxlT2lkTGlzdCAqb2lkcywKQEAgLTMz Niw4ICszNDAsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAljb25zdCBjaGFyICpk dW1wc25hcHNob3QgPSBOVUxMOwogCWNoYXIJICAgKnVzZV9yb2xlID0gTlVMTDsKIAlpbnQJCQlu dW1Xb3JrZXJzID0gMTsKLQlpbnQJCQljb21wcmVzc0xldmVsID0gLTE7CiAJaW50CQkJcGxhaW5U ZXh0ID0gMDsKKwlpbnQJCQljb21wcmVzc0xldmVsID0gSU5UX01JTjsKKwlDb21wcmVzc2lvbk1l dGhvZCBjb21wcmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9OX05PTkU7CiAJQXJjaGl2ZUZvcm1h dCBhcmNoaXZlRm9ybWF0ID0gYXJjaFVua25vd247CiAJQXJjaGl2ZU1vZGUgYXJjaGl2ZU1vZGU7 CiAKQEAgLTU1Nyw5ICs1NjIsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlk b3B0LmFjbHNTa2lwID0gdHJ1ZTsKIAkJCQlicmVhazsKIAotCQkJY2FzZSAnWic6CQkJLyogQ29t cHJlc3Npb24gTGV2ZWwgKi8KLQkJCQlpZiAoIW9wdGlvbl9wYXJzZV9pbnQob3B0YXJnLCAiLVov LS1jb21wcmVzcyIsIDAsIDksCi0JCQkJCQkJCQkgICZjb21wcmVzc0xldmVsKSkKKwkJCWNhc2Ug J1onOgkJCS8qIENvbXByZXNzaW9uICovCisJCQkJaWYgKCFwYXJzZV9jb21wcmVzc2lvbl9vcHRp b24ob3B0YXJnLCAmY29tcHJlc3Npb25NZXRob2QsCisJCQkJCQkJCQkJCSAgJmNvbXByZXNzTGV2 ZWwpKQogCQkJCQlleGl0X25pY2VseSgxKTsKIAkJCQlicmVhazsKIApAQCAtNjg5LDIzICs2OTQs MTggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJaWYgKGFyY2hpdmVGb3JtYXQgPT0g YXJjaE51bGwpCiAJCXBsYWluVGV4dCA9IDE7CiAKLQkvKiBDdXN0b20gYW5kIGRpcmVjdG9yeSBm b3JtYXRzIGFyZSBjb21wcmVzc2VkIGJ5IGRlZmF1bHQsIG90aGVycyBub3QgKi8KLQlpZiAoY29t cHJlc3NMZXZlbCA9PSAtMSkKKwkvKiBDdXN0b20gYW5kIGRpcmVjdG9yeSBmb3JtYXRzIGFyZSBj b21wcmVzc2VkIGJ5IGRlZmF1bHQgKHpsaWIpLCBvdGhlcnMgbm90ICovCisJaWYgKGNvbXByZXNz aW9uTWV0aG9kID09IENPTVBSRVNTSU9OX05PTkUpCiAJewogI2lmZGVmIEhBVkVfTElCWgogCQlp ZiAoYXJjaGl2ZUZvcm1hdCA9PSBhcmNoQ3VzdG9tIHx8IGFyY2hpdmVGb3JtYXQgPT0gYXJjaERp cmVjdG9yeSkKKwkJeworCQkJY29tcHJlc3Npb25NZXRob2QgPSBDT01QUkVTU0lPTl9HWklQOwog CQkJY29tcHJlc3NMZXZlbCA9IFpfREVGQVVMVF9DT01QUkVTU0lPTjsKLQkJZWxzZQorCQl9CiAj ZW5kaWYKLQkJCWNvbXByZXNzTGV2ZWwgPSAwOwogCX0KIAotI2lmbmRlZiBIQVZFX0xJQloKLQlp ZiAoY29tcHJlc3NMZXZlbCAhPSAwKQotCQlwZ19sb2dfd2FybmluZygicmVxdWVzdGVkIGNvbXBy ZXNzaW9uIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBpbnN0YWxsYXRpb24gLS0gYXJjaGl2ZSB3aWxs IGJlIHVuY29tcHJlc3NlZCIpOwotCWNvbXByZXNzTGV2ZWwgPSAwOwotI2VuZGlmCi0KIAkvKgog CSAqIElmIGVtaXR0aW5nIGFuIGFyY2hpdmUgZm9ybWF0LCB3ZSBhbHdheXMgd2FudCB0byBlbWl0 IGEgREFUQUJBU0UgaXRlbSwKIAkgKiBpbiBjYXNlIC0tY3JlYXRlIGlzIHNwZWNpZmllZCBhdCBw Z19yZXN0b3JlIHRpbWUuCkBAIC03MTgsOCArNzE4LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJCWZhdGFsKCJwYXJhbGxlbCBiYWNrdXAgb25seSBzdXBwb3J0ZWQgYnkgdGhlIGRp cmVjdG9yeSBmb3JtYXQiKTsKIAogCS8qIE9wZW4gdGhlIG91dHB1dCBmaWxlICovCi0JZm91dCA9 IENyZWF0ZUFyY2hpdmUoZmlsZW5hbWUsIGFyY2hpdmVGb3JtYXQsIGNvbXByZXNzTGV2ZWwsIGRv c3luYywKLQkJCQkJCSBhcmNoaXZlTW9kZSwgc2V0dXBEdW1wV29ya2VyKTsKKwlmb3V0ID0gQ3Jl YXRlQXJjaGl2ZShmaWxlbmFtZSwgYXJjaGl2ZUZvcm1hdCwKKwkJCQkJCSBjb21wcmVzc2lvbk1l dGhvZCwgY29tcHJlc3NMZXZlbCwKKwkJCQkJCSBkb3N5bmMsIGFyY2hpdmVNb2RlLCBzZXR1cER1 bXBXb3JrZXIpOwogCiAJLyogTWFrZSBkdW1wIG9wdGlvbnMgYWNjZXNzaWJsZSByaWdodCBhd2F5 ICovCiAJU2V0QXJjaGl2ZU9wdGlvbnMoZm91dCwgJmRvcHQsIE5VTEwpOwpAQCAtOTUwLDEwICs5 NTEsOCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlyb3B0LT5zZXF1ZW5jZV9kYXRh ID0gZG9wdC5zZXF1ZW5jZV9kYXRhOwogCXJvcHQtPmJpbmFyeV91cGdyYWRlID0gZG9wdC5iaW5h cnlfdXBncmFkZTsKIAotCWlmIChjb21wcmVzc0xldmVsID09IC0xKQotCQlyb3B0LT5jb21wcmVz c2lvbiA9IDA7Ci0JZWxzZQotCQlyb3B0LT5jb21wcmVzc2lvbiA9IGNvbXByZXNzTGV2ZWw7CisJ cm9wdC0+Y29tcHJlc3Npb25MZXZlbCA9IGNvbXByZXNzTGV2ZWw7CisJcm9wdC0+Y29tcHJlc3Np b25NZXRob2QgPSBjb21wcmVzc2lvbk1ldGhvZDsKIAogCXJvcHQtPnN1cHByZXNzRHVtcFdhcm5p bmdzID0gdHJ1ZTsJLyogV2UndmUgYWxyZWFkeSBzaG93biB0aGVtICovCiAKQEAgLTEwMDAsNyAr OTk5LDggQEAgaGVscChjb25zdCBjaGFyICpwcm9nbmFtZSkKIAlwcmludGYoXygiICAtaiwgLS1q b2JzPU5VTSAgICAgICAgICAgICAgIHVzZSB0aGlzIG1hbnkgcGFyYWxsZWwgam9icyB0byBkdW1w XG4iKSk7CiAJcHJpbnRmKF8oIiAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgICAgICB2ZXJib3Nl IG1vZGVcbiIpKTsKIAlwcmludGYoXygiICAtViwgLS12ZXJzaW9uICAgICAgICAgICAgICAgIG91 dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKLQlwcmludGYoXygiICAt WiwgLS1jb21wcmVzcz0wLTkgICAgICAgICAgIGNvbXByZXNzaW9uIGxldmVsIGZvciBjb21wcmVz c2VkIGZvcm1hdHNcbiIpKTsKKwlwcmludGYoXygiICAtWiwgLS1jb21wcmVzcz1bZ3ppcCxub25l XVs6TEVWRUxdIG9yIFtMRVZFTF1cbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbXByZXNzIG91dHB1dCB3aXRoIGdpdmVuIG1ldGhvZCBvciBsZXZlbFxuIikpOwogCXBy aW50ZihfKCIgIC0tbG9jay13YWl0LXRpbWVvdXQ9VElNRU9VVCAgZmFpbCBhZnRlciB3YWl0aW5n IFRJTUVPVVQgZm9yIGEgdGFibGUgbG9ja1xuIikpOwogCXByaW50ZihfKCIgIC0tbm8tc3luYyAg ICAgICAgICAgICAgICAgICAgZG8gbm90IHdhaXQgZm9yIGNoYW5nZXMgdG8gYmUgd3JpdHRlbiBz YWZlbHkgdG8gZGlza1xuIikpOwogCXByaW50ZihfKCIgIC0/LCAtLWhlbHAgICAgICAgICAgICAg ICAgICAgc2hvdyB0aGlzIGhlbHAsIHRoZW4gZXhpdFxuIikpOwpAQCAtMTI2MCw2ICsxMjYwLDEx NiBAQCBnZXRfc3luY2hyb25pemVkX3NuYXBzaG90KEFyY2hpdmUgKmZvdXQpCiAJcmV0dXJuIHJl c3VsdDsKIH0KIAorc3RhdGljIGJvb2wKK3BhcnNlX2NvbXByZXNzaW9uX21ldGhvZChjb25zdCBj aGFyICptZXRob2QsCisJCQkJCQkgQ29tcHJlc3Npb25NZXRob2QgKmNvbXByZXNzaW9uTWV0aG9k KQoreworCWJvb2wgcmVzID0gdHJ1ZTsKKworCWlmIChwZ19zdHJjYXNlY21wKG1ldGhvZCwgImd6 aXAiKSA9PSAwKQorCQkqY29tcHJlc3Npb25NZXRob2QgPSBDT01QUkVTU0lPTl9HWklQOworCWVs c2UgaWYgKHBnX3N0cmNhc2VjbXAobWV0aG9kLCAibm9uZSIpID09IDApCisJCSpjb21wcmVzc2lv bk1ldGhvZCA9IENPTVBSRVNTSU9OX05PTkU7CisJZWxzZQorCXsKKwkJcGdfbG9nX2Vycm9yKCJp bnZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCBcIiVzXCIgKGd6aXAsIG5vbmUpIiwgbWV0aG9kKTsK KwkJcmVzID0gZmFsc2U7CisJfQorCisJcmV0dXJuIHJlczsKK30KKworLyoKKyAqIEludGVycHJl dHMgYSBjb21wcmVzc2lvbiBvcHRpb24gb2YgdGhlIGZvcm1hdCAnbWV0aG9kWzpMRVZFTF0nIG9m IGxlZ2FjeSBqdXN0CisgKiAnW0xFVkVMXScuIEluIHRoZSBsYXRlciBmb3JtYXQsIGd6aXAgaXMg aW1wbGllZC4gVGhlIHBhcnNlZCBtZXRob2QgYW5kIGxldmVsCisgKiBhcmUgcmV0dXJuZWQgaW4g KmNvbXByZXNzaW9uTWV0aG9kIGFuZCAqY29tcHJlc3Npb25MZXZlbC4gSW4gY2FzZSBvZiBlcnJv ciwKKyAqIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlIGFuZCB0aGVuIHRoZSB2YWx1ZXMgb2Yg KmNvbXByZXNzaW9ue01ldGhvZCxMZXZlbH0KKyAqIGFyZSBub3QgdG8gYmUgdHJ1c3RlZC4KKyAq Lworc3RhdGljIGJvb2wKK3BhcnNlX2NvbXByZXNzaW9uX29wdGlvbihjb25zdCBjaGFyICpvcHQs IENvbXByZXNzaW9uTWV0aG9kICpjb21wcmVzc2lvbk1ldGhvZCwKKwkJCQkJCSBpbnQgKmNvbXBy ZXNzTGV2ZWwpCit7CisJY2hhcgkgICAqbWV0aG9kOworCWNvbnN0IGNoYXIgKnNlcDsKKwlpbnQJ CQltZXRob2RsZW47CisJYm9vbAkJc3VwcG9ydHNfY29tcHJlc3Npb24gPSB0cnVlOworCWJvb2wJ CXJlcyA9IHRydWU7CisKKwkvKiBmaW5kIHRoZSBzZXBhcmF0b3IgaWYgZXhpc3RzICovCisJc2Vw ID0gc3RyY2hyKG9wdCwgJzonKTsKKworCS8qCisJICogSWYgdGhlcmUgaXMgbm8gc2VwYXJhdG9y LCB0aGVuIGl0IGlzIGVpdGhlciBhIGxlZ2FjeSBmb3JtYXQsIG9yIG9ubHkgdGhlCisJICogbWV0 aG9kIGhhcyBiZWVuIHBhc3NlZC4KKwkgKi8KKwlpZiAoIXNlcCkKKwl7CisJCWlmIChzdHJzcG4o b3B0LCAiLTAxMjM0NTY3ODkiKSA9PSBzdHJsZW4ob3B0KSkKKwkJeworCQkJcmVzID0gb3B0aW9u X3BhcnNlX2ludChvcHQsICItWi8tLWNvbXByZXNzIiwgMCwgOSwgY29tcHJlc3NMZXZlbCk7CisJ CQkqY29tcHJlc3Npb25NZXRob2QgPSAoKmNvbXByZXNzTGV2ZWwgPiAwKSA/IENPTVBSRVNTSU9O X0daSVAgOgorCQkJCQkJCQkJCQkJCQlDT01QUkVTU0lPTl9OT05FOworCQl9CisJCWVsc2UKKwkJ CXJlcyA9IHBhcnNlX2NvbXByZXNzaW9uX21ldGhvZChvcHQsIGNvbXByZXNzaW9uTWV0aG9kKTsK Kwl9CisJZWxzZQorCXsKKwkJLyogb3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgbWV0aG9kOkxFVkVM ICovCisJCW1ldGhvZGxlbiA9IHNlcCAtIG9wdCArIDE7CisJCW1ldGhvZCA9IHBnX21hbGxvYzAo bWV0aG9kbGVuKTsKKwkJc25wcmludGYobWV0aG9kLCBtZXRob2RsZW4sICIlLipzIiwgbWV0aG9k bGVuIC0gMSwgb3B0KTsKKworCQlyZXMgPSBwYXJzZV9jb21wcmVzc2lvbl9tZXRob2QobWV0aG9k LCBjb21wcmVzc2lvbk1ldGhvZCk7CisJCWlmIChyZXMpCisJCXsKKwkJCXNlcCsrOworCQkJaWYg KCpzZXAgPT0gJ1wwJykKKwkJCXsKKwkJCQlwZ19sb2dfZXJyb3IoIm5vIGxldmVsIGRlZmluZWQg Zm9yIGNvbXByZXNzaW9uIFwiJXNcIiIsIG1ldGhvZCk7CisJCQkJcGdfZnJlZShtZXRob2QpOwor CQkJCXJlcyA9IGZhbHNlOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXJlcyA9IG9wdGlvbl9w YXJzZV9pbnQoc2VwLCAiLVovLS1jb21wcmVzcyBbTEVWRUxdIiwgMSwgOSwKKwkJCQkJCQkJCSAg IGNvbXByZXNzTGV2ZWwpOworCQkJfQorCQl9CisJfQorCisJLyogaWYgdGhlcmUgaXMgYW4gZXJy b3IsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgZnVydGhlciAqLworCWlmICghcmVzKQorCQly ZXR1cm4gcmVzOworCisJLyogb25lIGNhbiBzZXQgbGV2ZWwgd2hlbiBtZXRob2QgaXMgZ3ppcCAq LworCWlmICgqY29tcHJlc3Npb25NZXRob2QgIT0gQ09NUFJFU1NJT05fR1pJUCAmJiAqY29tcHJl c3NMZXZlbCAhPSBJTlRfTUlOKQorCXsKKwkJcGdfbG9nX2Vycm9yKCJjYW4gb25seSBzcGVjaWZ5 IC1aLy0tY29tcHJlc3MgW0xFVkVMXSB3aGVuIG1ldGhvZCBpcyBnemlwIik7CisJCXJldHVybiBm YWxzZTsKKwl9CisKKwkvKiB2ZXJpZnkgdGhhdCB0aGUgcmVxdWVzdGVkIGNvbXByZXNzaW9uIGlz IHN1cHBvcnRlZCAqLworI2lmbmRlZiBIQVZFX0xJQloKKwlpZiAoKmNvbXByZXNzaW9uTWV0aG9k ID09IENPTVBSRVNTSU9OX0daSVApCisJCXN1cHBvcnRzX2NvbXByZXNzaW9uID0gZmFsc2U7Cisj ZW5kaWYKKyNpZm5kZWYgSEFWRV9MSUJMWjQKKwlpZiAoKmNvbXByZXNzaW9uTWV0aG9kID09IENP TVBSRVNTSU9OX0xaNCkKKwkJc3VwcG9ydHNfY29tcHJlc3Npb24gPSBmYWxzZTsKKyNlbmRpZgor CisJaWYgKCFzdXBwb3J0c19jb21wcmVzc2lvbikKKwl7CisJCXBnX2xvZ193YXJuaW5nKCJyZXF1 ZXN0ZWQgY29tcHJlc3Npb24gbm90IGF2YWlsYWJsZSBpbiB0aGlzIGluc3RhbGxhdGlvbiAtLSBh cmNoaXZlIHdpbGwgYmUgdW5jb21wcmVzc2VkIik7CisJCSpjb21wcmVzc2lvbk1ldGhvZCA9IENP TVBSRVNTSU9OX05PTkU7CisJCSpjb21wcmVzc0xldmVsID0gSU5UX01JTjsKKwl9CisKKwlyZXR1 cm4gdHJ1ZTsKK30KKwogc3RhdGljIEFyY2hpdmVGb3JtYXQKIHBhcnNlQXJjaGl2ZUZvcm1hdChj b25zdCBjaGFyICpmb3JtYXQsIEFyY2hpdmVNb2RlICptb2RlKQogewpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2lj LnBsCmluZGV4IDQ4ZmFlYjQzNzEuLjg0MGMzYWM4OTkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC90LzAwMV9iYXNpYy5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwK QEAgLTEyNiw2ICsxMjYsMTYgQEAgY29tbWFuZF9mYWlsc19saWtlKAogCXFyL1xRcGdfZHVtcDog ZXJyb3I6IC1aXC8tLWNvbXByZXNzIG11c3QgYmUgaW4gcmFuZ2UgMC4uOVxFLywKIAkncGdfZHVt cDogLVovLS1jb21wcmVzcyBtdXN0IGJlIGluIHJhbmdlJyk7CiAKK2NvbW1hbmRfZmFpbHNfbGlr ZSgKKwlbICdwZ19kdW1wJywgJy0tY29tcHJlc3MnLCAnZ2FyYmFnZScgXSwKKwlxci9cUXBnX2R1 bXA6IGVycm9yOiBpbnZhbGlkIGNvbXByZXNzaW9uIG1ldGhvZCAiZ2FyYmFnZSIgKGd6aXAsIG5v bmUpXEUvLAorCSdwZ19kdW1wOiBpbnZhbGlkIC0tY29tcHJlc3MnKTsKKworY29tbWFuZF9mYWls c19saWtlKAorCVsgJ3BnX2R1bXAnLCAnLS1jb21wcmVzcycsICdub25lOjEnIF0sCisJcXIvXFFw Z19kdW1wOiBlcnJvcjogY2FuIG9ubHkgc3BlY2lmeSAtWlwvLS1jb21wcmVzcyBbTEVWRUxdIHdo ZW4gbWV0aG9kIGlzIGd6aXBcRS8sCisJJ3BnX2R1bXA6IGNhbiBvbmx5IHNwZWNpZnkgLVovLS1j b21wcmVzcyBbTEVWRUxdIHdoZW4gbWV0aG9kIGlzIGd6aXAnKTsKKwogY29tbWFuZF9mYWlsc19s aWtlKAogCVsgJ3BnX2R1bXAnLCAnLS1leHRyYS1mbG9hdC1kaWdpdHMnLCAnLTE2JyBdLAogCXFy L1xRcGdfZHVtcDogZXJyb3I6IC0tZXh0cmEtZmxvYXQtZGlnaXRzIG11c3QgYmUgaW4gcmFuZ2Vc RS8sCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCmluZGV4IGRkMDY1Yzc1OGYuLmQzMGU5NmQ3MDUg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCkBAIC01NSw2ICs1NSw4MSBAQCBteSAlcGdkdW1w X3J1bnMgPSAoCiAJCQkiJHRlbXBkaXIvYmluYXJ5X3VwZ3JhZGUuZHVtcCIsCiAJCV0sCiAJfSwK KworCSMgRG8gbm90IHVzZSAtLW5vLXN5bmMgdG8gZ2l2ZSB0ZXN0IGNvdmVyYWdlIGZvciBkYXRh IHN5bmMuCisJY29tcHJlc3Npb25fZ3ppcF9jdXN0b21fZm9ybWF0ID0+IHsKKwkJdGVzdF9rZXkg PT4gJ2NvbXByZXNzaW9uJywKKwkJZHVtcF9jbWQgPT4gWworCQkJJ3BnX2R1bXAnLAorCQkJJy0t Zm9ybWF0PWN1c3RvbScsICctLWNvbXByZXNzPWd6aXA6MScsCisJCQkiLS1maWxlPSR0ZW1wZGly L2NvbXByZXNzaW9uX2d6aXBfY3VzdG9tX2Zvcm1hdC5kdW1wIiwKKwkJCSdwb3N0Z3JlcycsCisJ CV0sCisJCXJlc3RvcmVfY21kID0+IFsKKwkJCSdwZ19yZXN0b3JlJywKKwkJCSItLWZpbGU9JHRl bXBkaXIvY29tcHJlc3Npb25fZ3ppcF9jdXN0b21fZm9ybWF0LnNxbCIsCisJCQkiJHRlbXBkaXIv Y29tcHJlc3Npb25fZ3ppcF9jdXN0b21fZm9ybWF0LmR1bXAiLAorCQldLAorCX0sCisKKwkjIERv IG5vdCB1c2UgLS1uby1zeW5jIHRvIGdpdmUgdGVzdCBjb3ZlcmFnZSBmb3IgZGF0YSBzeW5jLgor CWNvbXByZXNzaW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdCA9PiB7CisJCXRlc3Rfa2V5ID0+ICdj b21wcmVzc2lvbicsCisJCWR1bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wJywKKwkJCSctLWZvcm1h dD1kaXJlY3RvcnknLCAnLS1jb21wcmVzcz0xJywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJl c3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0IiwKKwkJCSdwb3N0Z3JlcycsCisJCV0sCisJCSMg R2l2ZSBjb3ZlcmFnZSBmb3IgbWFudWFsbHkgY29tcHJlc3NlZCBibG9iLnRvYyBmaWxlcyBkdXJp bmcgcmVzdG9yZS4KKwkJY29tcHJlc3NfY21kID0+IFsKKwkJCSRFTlZ7J0daSVBfUFJPR1JBTSd9 LAorCQkJJy1mJywKKwkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2RpcmVjdG9yeV9mb3Jt YXQvYmxvYnMudG9jIiwKKwkJXSwKKwkJcmVzdG9yZV9jbWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUn LAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2RpcmVjdG9yeV9mb3JtYXQu c3FsIiwKKwkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2RpcmVjdG9yeV9mb3JtYXQiLAor CQldLAorCX0sCisKKwljb21wcmVzc2lvbl9nemlwX2RpcmVjdG9yeV9mb3JtYXRfcGFyYWxsZWwg PT4geworCQl0ZXN0X2tleSA9PiAnY29tcHJlc3Npb24nLAorCQlkdW1wX2NtZCA9PiBbCisJCQkn cGdfZHVtcCcsICctLWpvYnM9MicsCisJCQknLS1mb3JtYXQ9ZGlyZWN0b3J5JywgJy0tY29tcHJl c3M9Z3ppcDo2JywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3Rv cnlfZm9ybWF0X3BhcmFsbGVsIiwKKwkJCSdwb3N0Z3JlcycsCisJCV0sCisJCSMgR2l2ZSBjb3Zl cmFnZSBmb3IgbWFudWFsbHkgY29tcHJlc3NlZCBibG9iLnRvYyBmaWxlcyBkdXJpbmcgcmVzdG9y ZS4KKwkJY29tcHJlc3NfY21kID0+IFsKKwkJCSRFTlZ7J0daSVBfUFJPR1JBTSd9LAorCQkJJy1m JywKKwkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2RpcmVjdG9yeV9mb3JtYXRfcGFyYWxs ZWwvYmxvYnMudG9jIiwKKwkJXSwKKwkJcmVzdG9yZV9jbWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUn LAorCQkJJy0tam9icz0zJywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9k aXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVsLnNxbCIsCisJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25f Z3ppcF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVsIiwKKwkJXSwKKwl9LAorCisJIyBDaGVjayB0 aGF0IHRoZSBvdXRwdXQgaXMgdmFsaWQgZ3ppcAorCWNvbXByZXNzaW9uX2d6aXBfcGxhaW5fZm9y bWF0ID0+IHsKKwkJdGVzdF9rZXkgPT4gJ2NvbXByZXNzaW9uJywKKwkJZHVtcF9jbWQgPT4gWwor CQkJJ3BnX2R1bXAnLCAnLS1mb3JtYXQ9cGxhaW4nLCAnLVoxJywKKwkJCSItLWZpbGU9JHRlbXBk aXIvY29tcHJlc3Npb25fZ3ppcF9wbGFpbl9mb3JtYXQuc3FsLmd6IiwKKwkJCSdwb3N0Z3Jlcycs CisJCV0sCisJCWNvbXByZXNzX2NtZCA9PiBbCisJCQkkRU5WeydHWklQX1BST0dSQU0nfSwKKwkJ CSctaycsICctZCcsCisJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9wbGFpbl9mb3JtYXQu c3FsLmd6IiwKKwkJXSwKKwl9LAogCWNsZWFuID0+IHsKIAkJZHVtcF9jbWQgPT4gWwogCQkJJ3Bn X2R1bXAnLApAQCAtNDI0LDYgKzQ5OSw3IEBAIG15ICVmdWxsX3J1bnMgPSAoCiAJYmluYXJ5X3Vw Z3JhZGUgICAgICAgICAgID0+IDEsCiAJY2xlYW4gICAgICAgICAgICAgICAgICAgID0+IDEsCiAJ Y2xlYW5faWZfZXhpc3RzICAgICAgICAgID0+IDEsCisJY29tcHJlc3Npb24gICAgICAgICAgICAg ID0+IDEsCiAJY3JlYXRlZGIgICAgICAgICAgICAgICAgID0+IDEsCiAJZGVmYXVsdHMgICAgICAg ICAgICAgICAgID0+IDEsCiAJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsCkBAIC0yOTcy LDYgKzMwNDgsNyBAQCBteSAldGVzdHMgPSAoCiAJCQliaW5hcnlfdXBncmFkZSAgICAgICAgICA9 PiAxLAogCQkJY2xlYW4gICAgICAgICAgICAgICAgICAgPT4gMSwKIAkJCWNsZWFuX2lmX2V4aXN0 cyAgICAgICAgID0+IDEsCisJCQljb21wcmVzc2lvbiAgICAgICAgICAgICA9PiAxLAogCQkJY3Jl YXRlZGIgICAgICAgICAgICAgICAgPT4gMSwKIAkJCWRlZmF1bHRzICAgICAgICAgICAgICAgID0+ IDEsCiAJCQlleGNsdWRlX3Rlc3RfdGFibGUgICAgICA9PiAxLApAQCAtMzA0NSw2ICszMTIyLDcg QEAgbXkgJXRlc3RzID0gKAogCQkJYmluYXJ5X3VwZ3JhZGUgICAgICAgICAgID0+IDEsCiAJCQlj bGVhbiAgICAgICAgICAgICAgICAgICAgPT4gMSwKIAkJCWNsZWFuX2lmX2V4aXN0cyAgICAgICAg ICA9PiAxLAorCQkJY29tcHJlc3Npb24gICAgICAgICAgICAgID0+IDEsCiAJCQljcmVhdGVkYiAg ICAgICAgICAgICAgICAgPT4gMSwKIAkJCWRlZmF1bHRzICAgICAgICAgICAgICAgICA9PiAxLAog CQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsCkBAIC0zODIxLDkgKzM4OTksMjMgQEAg Zm9yZWFjaCBteSAkcnVuIChzb3J0IGtleXMgJXBnZHVtcF9ydW5zKQogCW15ICR0ZXN0X2tleSA9 ICRydW47CiAJbXkgJHJ1bl9kYiAgID0gJ3Bvc3RncmVzJzsKIAorCW15ICRzdXBwb3J0c19jb21w cmVzc2lvbiA9IGNoZWNrX3BnX2NvbmZpZygiI2RlZmluZSBIQVZFX0xJQlogMSIpOworCW15ICRj b21wcmVzc19wcm9ncmFtID0gJEVOVntHWklQX1BST0dSQU19OworCiAJJG5vZGUtPmNvbW1hbmRf b2soXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e2R1bXBfY21kfSB9LAogCQkiJHJ1bjogcGdfZHVt cCBydW5zIik7CiAKKwlpZiAoZGVmaW5lZCgkcGdkdW1wX3J1bnN7JHJ1bn0tPntjb21wcmVzc19j bWR9KSkKKwl7CisJCSMgU2tpcCBjb21wcmVzc2lvbl9jbWQgdGVzdHMgd2hlbiBjb21wcmVzc2lv biBpcyBub3Qgc3VwcG9ydGVkLAorCQkjIGFzIHRoZSByZXN1bHQgaXMgdW5jb21wcmVzc2VkIG9y IHRoZSB1dGlsaXR5IHByb2dyYW0gZG9lcyBub3QKKwkJIyBleGlzdAorCQluZXh0IGlmICEkc3Vw cG9ydHNfY29tcHJlc3Npb24gfHwgIWRlZmluZWQoJGNvbXByZXNzX3Byb2dyYW0pCisJCQkJfHwg JGNvbXByZXNzX3Byb2dyYW0gZXEgJyc7CisJCWNvbW1hbmRfb2soIFxAeyAkcGdkdW1wX3J1bnN7 JHJ1bn0tPntjb21wcmVzc19jbWR9IH0sCisJCQkiJHJ1bjogY29tcHJlc3Npb24gY29tbWFuZHMi KTsKKwl9CisKIAlpZiAoJHBnZHVtcF9ydW5zeyRydW59LT57cmVzdG9yZV9jbWR9KQogCXsKIAkJ JG5vZGUtPmNvbW1hbmRfb2soXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e3Jlc3RvcmVfY21kfSB9 LApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBjNmIzMDJjN2IyLi5hYzhmMjBmNzk4IDEw MDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDExLDcgKzQxMSw3IEBAIENvbXBpbGVkRXhw clN0YXRlCiBDb21wb3NpdGVJT0RhdGEKIENvbXBvc2l0ZVR5cGVTdG10CiBDb21wb3VuZEFmZml4 RmxhZwotQ29tcHJlc3Npb25BbGdvcml0aG0KK0NvbXByZXNzaW9uTWV0aG9kCiBDb21wcmVzc29y U3RhdGUKIENvbXB1dGVYaWRIb3Jpem9uc1Jlc3VsdAogQ29uZGl0aW9uVmFyaWFibGUKLS0gCjIu MzIuMAoK --b1_cADRPmeDoX6AM1R6STGitpaiAUC2FNS8QAxyE4lpG4 Content-Type: text/x-patch; name=v1-0002-Add-LZ4-compression-in-pg_-dump-restore.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v1-0002-Add-LZ4-compression-in-pg_-dump-restore.patch RnJvbSBmOTU3NmM2MGI2ZjE0ZGVmZDA1YzcyZDc1MzQzNTU2MzU1M2FjOTA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2lvcyBLb2tvbGF0b3MgPGdrb2tvbGF0b3NAcG0ubWU+ CkRhdGU6IFdlZCwgMjMgRmViIDIwMjIgMTQ6NDA6MzMgKzAwMDAKU3ViamVjdDogW1BBVENIIHYx IDIvMl0gQWRkIExaNCBjb21wcmVzc2lvbiBpbiBwZ197ZHVtcHxyZXN0b3JlfQoKV2l0aGluIGNv bXByZXNzX2lvLntjLGh9IHRoZXJlIGFyZSB0d28gZGlzdGluY3QgQVBJcyBleHBvc2VkLCB0aGUg c3RyZWFtaW5nIEFQSQphbmQgYSBmaWxlIEFQSS4gVGhlIGZpcnN0IG9uZSwgaXMgYWltZWQgYXQg aW5saW5lZCB1c2UgY2FzZXMgYW5kIHRodXMgc2ltcGxlCmx6NC5oIGNhbGxzIGNhbiBiZSB1c2Vk IGRpcmVjdGx5LiBUaGUgc2Vjb25kIG9uZSBpcyBnZW5lcmF0aW5nIG91dHB1dCwgb3IgaXMKcGFy c2luZyBpbnB1dCwgd2hpY2ggY2FuIGJlIHJlYWQvZ2VuZXJhdGVkIHZpYSB0aGUgbHo0IHV0aWxp dHkuCgpJbiB0aGUgbGF0ZXIgY2FzZSwgdGhlIEFQSSBpcyB1c2luZyBhbiBvcGFxdWUgd3JhcHBl ciBhcm91bmQgYSBmaWxlIHN0cmVhbSwKd2hpY2ggYXF1aXJlZCB2aWEgZm9wZW4oKSBvciBnem9w ZW4oKSByZXNwZWN0aXZlbHkuIEl0IHdvdWxkIHRoZW4gcHJvdmlkZQp3cmFwcGVycyBhcm91bmQg ZnJlYWQoKSwgZndyaXRlKCksIGZnZXRzKCksIGZnZXRjKCksIGZlb2YoKSwgYW5kIGZjbG9zZSgp OyBvcgp0aGVpciBneiBlcXVpdmFsbGVudHMuIEhvd2V2ZXIgdGhlIExaNEYgYXBpIGRvZXMgbm90 IHByb3ZpZGUgdGhpcyBmdW5jdGlvbmFsaXR5LgpTbyB0aGlzIGhhcyBiZWVuIGltcGxlbWVudGVk IGxvY2FseS4KCkluIG9yZGVyIHRvIG1haW50YWluIHRoZSBBUEkgY29tcGF0aWJpbGl0eSBhIG5l dyBzdHJ1Y3R1cmUgTFo0RmlsZSBpcwppbnRyb2R1Y2VkLiBJdCBpcyByZXNwb25zaWJsZSBmb3Ig a2VlcGluZyBzdGF0ZSBhbmQgYW55IHlldCB1bnVzZWQgZ2VuZXJhdGVkCmNvbnRlbnQuIFRoZSBs YXRlciBpcyByZXF1aXJlZCB3aGVuIHRoZSBnZW5lcmF0ZWQgZGVjb21wcmVzc2VkIG91dHB1dCwg ZXhjZWVkcwp0aGUgY2FsbGVyJ3MgYnVmZmVyIGNhcGFjaXR5LgoKQ3VzdG9tIGNvbXByZXNzZWQg YXJjaGl2ZXMgbmVlZCB0byBub3cgc3RvcmUgdGhlIGNvbXByZXNzaW9uIG1ldGhvZCBpbiB0aGVp cgpoZWFkZXIuIFRoaXMgcmVxdWlyZXMgYSBidW1wIGluIHRoZSB2ZXJzaW9uIG51bWJlci4gVGhl IGxldmVsIG9mIGNvbXByZXNzaW9uIGlzCnN0aWxsIHN0b3JlZCBpbiB0aGUgZHVtcCwgdGhvdWdo IGFkbWl0dGVkbHkgaXMgb2Ygbm8gYXBwYXJlbnQgdXNlLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYv cGdfZHVtcC5zZ21sICAgICAgICB8ICAyMyArLQogc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9jb21wcmVzc19pby5jICAgICAgICB8 IDczOCArKysrKysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXAuaCAgICAgICAgICB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVy LmMgfCAgNzEgKystCiBzcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmggfCAgIDMg Ky0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICB8ICAxMiArLQogc3JjL2Jp bi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsICAgICAgIHwgICA0ICstCiBzcmMvYmluL3BnX2R1bXAv dC8wMDJfcGdfZHVtcC5wbCAgICAgfCAxNDEgKysrKy0KIDkgZmlsZXMgY2hhbmdlZCwgODY4IGlu c2VydGlvbnMoKyksIDEyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL3BnX2R1bXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCmluZGV4IDk5 MmI3MzEyZGYuLjY4YTdjNmEzYmYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVt cC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfZHVtcC5zZ21sCkBAIC0zMjgsOSArMzI4 LDEwIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgICAgICBtYWNoaW5lLXJlYWRh YmxlIGZvcm1hdCB0aGF0IDxhcHBsaWNhdGlvbj5wZ19yZXN0b3JlPC9hcHBsaWNhdGlvbj4KICAg ICAgICAgICAgY2FuIHJlYWQuIEEgZGlyZWN0b3J5IGZvcm1hdCBhcmNoaXZlIGNhbiBiZSBtYW5p cHVsYXRlZCB3aXRoCiAgICAgICAgICAgIHN0YW5kYXJkIFVuaXggdG9vbHM7IGZvciBleGFtcGxl LCBmaWxlcyBpbiBhbiB1bmNvbXByZXNzZWQgYXJjaGl2ZQotICAgICAgICAgICBjYW4gYmUgY29t cHJlc3NlZCB3aXRoIHRoZSA8YXBwbGljYXRpb24+Z3ppcDwvYXBwbGljYXRpb24+IHRvb2wuCi0g ICAgICAgICAgIFRoaXMgZm9ybWF0IGlzIGNvbXByZXNzZWQgYnkgZGVmYXVsdCBhbmQgYWxzbyBz dXBwb3J0cyBwYXJhbGxlbAotICAgICAgICAgICBkdW1wcy4KKyAgICAgICAgICAgY2FuIGJlIGNv bXByZXNzZWQgd2l0aCB0aGUgPGFwcGxpY2F0aW9uPmd6aXA8L2FwcGxpY2F0aW9uPiBvcgorICAg ICAgICAgICA8YXBwbGljYXRpb24+bHo0PC9hcHBsaWNhdGlvbj50b29sLgorICAgICAgICAgICBU aGlzIGZvcm1hdCBpcyBjb21wcmVzc2VkIGJ5IGRlZmF1bHQgdXNpbmcgPGxpdGVyYWw+Z3ppcDwv bGl0ZXJhbD4KKyAgICAgICAgICAgYW5kIGFsc28gc3VwcG9ydHMgcGFyYWxsZWwgZHVtcHMuCiAg ICAgICAgICAgPC9wYXJhPgogICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgPC92YXJsaXN0 ZW50cnk+CkBAIC02NTIsMTIgKzY1MywxMiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAg ICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmeSB0aGUgY29tcHJlc3Npb24gbWV0aG9kIGFuZC9v ciB0aGUgY29tcHJlc3Npb24gbGV2ZWwgdG8gdXNlLgogICAgICAgICBUaGUgY29tcHJlc3Npb24g bWV0aG9kIGNhbiBiZSBzZXQgdG8gPGxpdGVyYWw+Z3ppcDwvbGl0ZXJhbD4gb3IKLSAgICAgICAg PGxpdGVyYWw+bm9uZTwvbGl0ZXJhbD4gZm9yIG5vIGNvbXByZXNzaW9uLiBBIGNvbXByZXNzaW9u IGxldmVsIGNhbgotICAgICAgICBiZSBvcHRpb25hbGx5IHNwZWNpZmllZCwgYnkgYXBwZW5kaW5n IHRoZSBsZXZlbCBudW1iZXIgYWZ0ZXIgYSBjb2xvbgotICAgICAgICAoPGxpdGVyYWw+OjwvbGl0 ZXJhbD4pLiBJZiBubyBsZXZlbCBpcyBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9u Ci0gICAgICAgIGxldmVsIHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2QuIElm IG9ubHkgYSBsZXZlbCBpcwotICAgICAgICBzcGVjaWZpZWQgd2l0aG91dCBtZW50aW9uaW5nIGEg bWV0aG9kLCA8bGl0ZXJhbD5nemlwPC9saXRlcmFsPiBjb21wcmVzc2lvbgotICAgICAgICB3aWxs IGJlIHVzZWQuCisgICAgICAgIDxsaXRlcmFsPmx6NDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+bm9u ZTwvbGl0ZXJhbD4gZm9yIG5vIGNvbXByZXNzaW9uLiBBCisgICAgICAgIGNvbXByZXNzaW9uIGxl dmVsIGNhbiBiZSBvcHRpb25hbGx5IHNwZWNpZmllZCwgYnkgYXBwZW5kaW5nIHRoZSBsZXZlbAor ICAgICAgICBudW1iZXIgYWZ0ZXIgYSBjb2xvbiAoPGxpdGVyYWw+OjwvbGl0ZXJhbD4pLiBJZiBu byBsZXZlbCBpcyBzcGVjaWZpZWQsCisgICAgICAgIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxl dmVsIHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCBtZXRob2QuIElmCisgICAgICAgIG9u bHkgYSBsZXZlbCBpcyBzcGVjaWZpZWQgd2l0aG91dCBtZW50aW9uaW5nIGEgbWV0aG9kLAorICAg ICAgICA8bGl0ZXJhbD5nemlwPC9saXRlcmFsPiBjb21wcmVzc2lvbiB3aWxsYmUgdXNlZC4KICAg ICAgICA8L3BhcmE+CiAKICAgICAgICA8cGFyYT4KQEAgLTY2NSw4ICs2NjYsOCBAQCBQb3N0Z3Jl U1FMIGRvY3VtZW50YXRpb24KICAgICAgICAgaW5kaXZpZHVhbCB0YWJsZS1kYXRhIHNlZ21lbnRz LCBhbmQgdGhlIGRlZmF1bHQgaXMgdG8gY29tcHJlc3MgdXNpbmcKICAgICAgICAgPGxpdGVyYWw+ Z3ppcDwvbGl0ZXJhbD4gYXQgYSBtb2RlcmF0ZSBsZXZlbC4gRm9yIHBsYWluIHRleHQgb3V0cHV0 LAogICAgICAgICBzZXR0aW5nIGEgbm9uemVybyBjb21wcmVzc2lvbiBsZXZlbCBjYXVzZXMgdGhl IGVudGlyZSBvdXRwdXQgZmlsZSB0byBiZSBjb21wcmVzc2VkLAotICAgICAgICBhcyB0aG91Z2gg aXQgaGFkIGJlZW4gZmVkIHRocm91Z2ggPGFwcGxpY2F0aW9uPmd6aXA8L2FwcGxpY2F0aW9uPjsg YnV0IHRoZSBkZWZhdWx0Ci0gICAgICAgIGlzIG5vdCB0byBjb21wcmVzcy4KKyAgICAgICAgYXMg dGhvdWdoIGl0IGhhZCBiZWVuIGZlZCB0aHJvdWdoIDxhcHBsaWNhdGlvbj5nemlwPC9hcHBsaWNh dGlvbj4gb3IKKyAgICAgICAgPGFwcGxpY2F0aW9uPmx6NDwvYXBwbGljYXRpb24+OyBidXQgdGhl IGRlZmF1bHQgaXMgbm90IHRvIGNvbXByZXNzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFy YT4KICAgICAgICAgVGhlIHRhciBhcmNoaXZlIGZvcm1hdCBjdXJyZW50bHkgZG9lcyBub3Qgc3Vw cG9ydCBjb21wcmVzc2lvbiBhdCBhbGwuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvTWFr ZWZpbGUgYi9zcmMvYmluL3BnX2R1bXAvTWFrZWZpbGUKaW5kZXggNTZlMDQxYzliMy4uNjI1YzAw YjEyMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL01ha2VmaWxlCisrKyBiL3NyYy9iaW4v cGdfZHVtcC9NYWtlZmlsZQpAQCAtMTcsNiArMTcsNyBAQCB0b3BfYnVpbGRkaXIgPSAuLi8uLi8u LgogaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCiBleHBvcnQg R1pJUF9QUk9HUkFNPSQoR1pJUCkKK2V4cG9ydCBMWjQKIAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0g LUkkKGxpYnBxX3NyY2RpcikgJChDUFBGTEFHUykKIExERkxBR1NfSU5URVJOQUwgKz0gLUwkKHRv cF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzICQobGlicHFfcGdwb3J0KQpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL2NvbXByZXNzX2lvLmMgYi9zcmMvYmluL3BnX2R1bXAv Y29tcHJlc3NfaW8uYwppbmRleCA2MzBmOWU0YjE4Li43OTBmMjI1ZWM0IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX2R1bXAvY29tcHJlc3NfaW8uYworKysgYi9zcmMvYmluL3BnX2R1bXAvY29tcHJl c3NfaW8uYwpAQCAtMzgsMTMgKzM4LDE1IEBACiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg KgogICoJVGhlIGNvbXByZXNzZWQgc3RyZWFtIEFQSSBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBD IHN0YW5kYXJkIGZvcGVuKCkgYW5kCi0gKglsaWJ6J3MgZ3pvcGVuKCkgQVBJcy4gSXQgYWxsb3dz IHlvdSB0byB1c2UgdGhlIHNhbWUgZnVuY3Rpb25zIGZvcgotICoJY29tcHJlc3NlZCBhbmQgdW5j b21wcmVzc2VkIHN0cmVhbXMuIGNmb3Blbl9yZWFkKCkgZmlyc3QgdHJpZXMgdG8gb3BlbgotICoJ dGhlIGZpbGUgd2l0aCBnaXZlbiBuYW1lLCBhbmQgaWYgaXQgZmFpbHMsIGl0IHRyaWVzIHRvIG9w ZW4gdGhlIHNhbWUKLSAqCWZpbGUgd2l0aCB0aGUgLmd6IHN1ZmZpeC4gY2ZvcGVuX3dyaXRlKCkg b3BlbnMgYSBmaWxlIGZvciB3cml0aW5nLCBhbgotICoJZXh0cmEgYXJndW1lbnQgc3BlY2lmaWVz IGlmIHRoZSBmaWxlIHNob3VsZCBiZSBjb21wcmVzc2VkLCBhbmQgYWRkcyB0aGUKLSAqCS5neiBz dWZmaXggdG8gdGhlIGZpbGVuYW1lIGlmIHNvLiBUaGlzIGFsbG93cyB5b3UgdG8gZWFzaWx5IGhh bmRsZSBib3RoCi0gKgljb21wcmVzc2VkIGFuZCB1bmNvbXByZXNzZWQgZmlsZXMuCisgKglsaWJ6 J3MgZ3pvcGVuKCkgQVBJcyBhbmQgY3VzdG9tIExaNCBjYWxscyB3aGljaCBwcm92aWRlIHNpbWls YXIKKyAqCWZ1bmN0aW9uYWxpdHkuIEl0IGFsbG93cyB5b3UgdG8gdXNlIHRoZSBzYW1lIGZ1bmN0 aW9ucyBmb3IgY29tcHJlc3NlZCBhbmQKKyAqCXVuY29tcHJlc3NlZCBzdHJlYW1zLiBjZm9wZW5f cmVhZCgpIGZpcnN0IHRyaWVzIHRvIG9wZW4gdGhlIGZpbGUgd2l0aCBnaXZlbgorICoJbmFtZSwg YW5kIGlmIGl0IGZhaWxzLCBpdCB0cmllcyB0byBvcGVuIHRoZSBzYW1lIGZpbGUgd2l0aCB0aGUg Lmd6IHN1ZmZpeCwKKyAqCWZhaWxpbmcgdGhhdCBpdCB0cmllcyB0byBvcGVuIHRoZSBzYW1lIGZp bGUgd2l0aCB0aGUgLmx6NCBzdWZmaXguCisgKgljZm9wZW5fd3JpdGUoKSBvcGVucyBhIGZpbGUg Zm9yIHdyaXRpbmcsIGFuIGV4dHJhIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUKKyAqCW1ldGhvZCB0 byB1c2Ugc2hvdWxkIHRoZSBmaWxlIGJlIGNvbXByZXNzZWQsIGFuZCBhZGRzIHRoZSBhcHByb3By aWF0ZQorICoJc3VmZml4LCAuZ3ogb3IgLmx6NCwgdG8gdGhlIGZpbGVuYW1lIGlmIHNvLiBUaGlz IGFsbG93cyB5b3UgdG8gZWFzaWx5IGhhbmRsZQorICoJYm90aCBjb21wcmVzc2VkIGFuZCB1bmNv bXByZXNzZWQgZmlsZXMuCiAgKgogICogSURFTlRJRklDQVRJT04KICAqCSAgIHNyYy9iaW4vcGdf ZHVtcC9jb21wcmVzc19pby5jCkBAIC01Niw2ICs1OCwxNCBAQAogI2luY2x1ZGUgImNvbXByZXNz X2lvLmgiCiAjaW5jbHVkZSAicGdfYmFja3VwX3V0aWxzLmgiCiAKKyNpZmRlZiBIQVZFX0xJQkxa NAorI2luY2x1ZGUgImx6NC5oIgorI2luY2x1ZGUgImx6NGZyYW1lLmgiCisKKyNkZWZpbmUgTFo0 X09VVF9TSVpFCSg0ICogMTAyNCkKKyNkZWZpbmUgTFo0X0lOX1NJWkUJCSgxNiAqIDEwMjQpCisj ZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBDb21wcmVzc29yIEFQSQogICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02OSw5ICs3OSw5IEBAIHN0cnVjdCBDb21wcmVzc29y U3RhdGUKIAogI2lmZGVmIEhBVkVfTElCWgogCXpfc3RyZWFtcAl6cDsKLQljaGFyCSAgICp6bGli T3V0OwotCXNpemVfdAkJemxpYk91dFNpemU7CiAjZW5kaWYKKwl2b2lkCSAgICpvdXRidWY7CisJ c2l6ZV90CQlvdXRzaXplOwogfTsKIAogLyogUm91dGluZXMgdGhhdCBzdXBwb3J0IHpsaWIgY29t cHJlc3NlZCBkYXRhIEkvTyAqLwpAQCAtODUsNiArOTUsMTUgQEAgc3RhdGljIHZvaWQgV3JpdGVE YXRhVG9BcmNoaXZlWmxpYihBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcywK IHN0YXRpYyB2b2lkIEVuZENvbXByZXNzb3JabGliKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVz c29yU3RhdGUgKmNzKTsKICNlbmRpZgogCisvKiBSb3V0aW5lcyB0aGF0IHN1cHBvcnQgTFo0IGNv bXByZXNzZWQgZGF0YSBJL08gKi8KKyNpZmRlZiBIQVZFX0xJQkxaNAorc3RhdGljIHZvaWQgSW5p dENvbXByZXNzb3JMWjQoQ29tcHJlc3NvclN0YXRlICpjcyk7CitzdGF0aWMgdm9pZCBSZWFkRGF0 YUZyb21BcmNoaXZlTFo0KEFyY2hpdmVIYW5kbGUgKkFILCBSZWFkRnVuYyByZWFkRik7CitzdGF0 aWMgdm9pZCBXcml0ZURhdGFUb0FyY2hpdmVMWjQoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNz b3JTdGF0ZSAqY3MsCisJCQkJCQkJCSAgY29uc3QgY2hhciAqZGF0YSwgc2l6ZV90IGRMZW4pOwor c3RhdGljIHZvaWQgRW5kQ29tcHJlc3NvckxaNChBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3Nv clN0YXRlICpjcyk7CisjZW5kaWYKKwogLyogUm91dGluZXMgdGhhdCBzdXBwb3J0IHVuY29tcHJl c3NlZCBkYXRhIEkvTyAqLwogc3RhdGljIHZvaWQgUmVhZERhdGFGcm9tQXJjaGl2ZU5vbmUoQXJj aGl2ZUhhbmRsZSAqQUgsIFJlYWRGdW5jIHJlYWRGKTsKIHN0YXRpYyB2b2lkIFdyaXRlRGF0YVRv QXJjaGl2ZU5vbmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MsCkBAIC0x MDMsNiArMTIyLDExIEBAIEFsbG9jYXRlQ29tcHJlc3NvcihDb21wcmVzc2lvbk1ldGhvZCBjb21w cmVzc2lvbk1ldGhvZCwKIAlpZiAoY29tcHJlc3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05fR1pJ UCkKIAkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwogI2VuZGlmCisjaWZu ZGVmIEhBVkVfTElCTFo0CisJaWYgKGNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0xa NCkKKwkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CisjZW5kaWYKKwogCiAJ Y3MgPSAoQ29tcHJlc3NvclN0YXRlICopIHBnX21hbGxvYzAoc2l6ZW9mKENvbXByZXNzb3JTdGF0 ZSkpOwogCWNzLT53cml0ZUYgPSB3cml0ZUY7CkBAIC0xMTUsNiArMTM5LDEwIEBAIEFsbG9jYXRl Q29tcHJlc3NvcihDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVzc2lvbk1ldGhvZCwKIAlpZiAoY29t cHJlc3Npb25NZXRob2QgPT0gQ09NUFJFU1NJT05fR1pJUCkKIAkJSW5pdENvbXByZXNzb3JabGli KGNzLCBjb21wcmVzc2lvbkxldmVsKTsKICNlbmRpZgorI2lmZGVmIEhBVkVfTElCTFo0CisJaWYg KGNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0xaNCkKKwkJSW5pdENvbXByZXNzb3JM WjQoY3MpOworI2VuZGlmCiAKIAlyZXR1cm4gY3M7CiB9CkBAIC0xMzcsNiArMTY1LDEzIEBAIFJl YWREYXRhRnJvbUFyY2hpdmUoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzaW9uTWV0aG9kIGNv bXByZXNzaW9uTWV0aG9kLAogCQkJUmVhZERhdGFGcm9tQXJjaGl2ZVpsaWIoQUgsIHJlYWRGKTsK ICNlbHNlCiAJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CisjZW5kaWYK KwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0xaNDoKKyNpZmRlZiBIQVZFX0xJQkxaNAor CQkJUmVhZERhdGFGcm9tQXJjaGl2ZUxaNChBSCwgcmVhZEYpOworI2Vsc2UKKwkJCWZhdGFsKCJu b3QgYnVpbHQgd2l0aCBsejQgc3VwcG9ydCIpOwogI2VuZGlmCiAJCQlicmVhazsKIAkJZGVmYXVs dDoKQEAgLTE1OSw2ICsxOTQsMTMgQEAgV3JpdGVEYXRhVG9BcmNoaXZlKEFyY2hpdmVIYW5kbGUg KkFILCBDb21wcmVzc29yU3RhdGUgKmNzLAogCQkJV3JpdGVEYXRhVG9BcmNoaXZlWmxpYihBSCwg Y3MsIGRhdGEsIGRMZW4pOwogI2Vsc2UKIAkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1 cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05fTFo0OgorI2lm ZGVmIEhBVkVfTElCTFo0CisJCQlXcml0ZURhdGFUb0FyY2hpdmVMWjQoQUgsIGNzLCBkYXRhLCBk TGVuKTsKKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggbHo0IHN1cHBvcnQiKTsKICNl bmRpZgogCQkJYnJlYWs7CiAJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKQEAgLTE4Myw2ICsyMjUs MTMgQEAgRW5kQ29tcHJlc3NvcihBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpj cykKIAkJCUVuZENvbXByZXNzb3JabGliKEFILCBjcyk7CiAjZWxzZQogCQkJZmF0YWwoIm5vdCBi dWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOworI2VuZGlmCisJCQlicmVhazsKKwkJY2FzZSBDT01Q UkVTU0lPTl9MWjQ6CisjaWZkZWYgSEFWRV9MSUJMWjQKKwkJCUVuZENvbXByZXNzb3JMWjQoQUgs IGNzKTsKKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggbHo0IHN1cHBvcnQiKTsKICNl bmRpZgogCQkJYnJlYWs7CiAJCWNhc2UgQ09NUFJFU1NJT05fTk9ORToKQEAgLTIxMywyMCArMjYy LDIwIEBAIEluaXRDb21wcmVzc29yWmxpYihDb21wcmVzc29yU3RhdGUgKmNzLCBpbnQgbGV2ZWwp CiAJenAtPm9wYXF1ZSA9IFpfTlVMTDsKIAogCS8qCi0JICogemxpYk91dFNpemUgaXMgdGhlIGJ1 ZmZlciBzaXplIHdlIHRlbGwgemxpYiBpdCBjYW4gb3V0cHV0IHRvLiAgV2UKKwkgKiBvdXRzaXpl IGlzIHRoZSBidWZmZXIgc2l6ZSB3ZSB0ZWxsIHpsaWIgaXQgY2FuIG91dHB1dCB0by4gIFdlCiAJ ICogYWN0dWFsbHkgYWxsb2NhdGUgb25lIGV4dHJhIGJ5dGUgYmVjYXVzZSBzb21lIHJvdXRpbmVz IHdhbnQgdG8gYXBwZW5kIGEKIAkgKiB0cmFpbGluZyB6ZXJvIGJ5dGUgdG8gdGhlIHpsaWIgb3V0 cHV0LgogCSAqLwotCWNzLT56bGliT3V0ID0gKGNoYXIgKikgcGdfbWFsbG9jKFpMSUJfT1VUX1NJ WkUgKyAxKTsKLQljcy0+emxpYk91dFNpemUgPSBaTElCX09VVF9TSVpFOworCWNzLT5vdXRidWYg PSBwZ19tYWxsb2MoWkxJQl9PVVRfU0laRSArIDEpOworCWNzLT5vdXRzaXplID0gWkxJQl9PVVRf U0laRTsKIAogCWlmIChkZWZsYXRlSW5pdCh6cCwgbGV2ZWwpICE9IFpfT0spCiAJCWZhdGFsKCJj b3VsZCBub3QgaW5pdGlhbGl6ZSBjb21wcmVzc2lvbiBsaWJyYXJ5OiAlcyIsCiAJCQkgIHpwLT5t c2cpOwogCiAJLyogSnVzdCBiZSBwYXJhbm9pZCAtIG1heWJlIEVuZCBpcyBjYWxsZWQgYWZ0ZXIg U3RhcnQsIHdpdGggbm8gV3JpdGUgKi8KLQl6cC0+bmV4dF9vdXQgPSAodm9pZCAqKSBjcy0+emxp Yk91dDsKLQl6cC0+YXZhaWxfb3V0ID0gY3MtPnpsaWJPdXRTaXplOworCXpwLT5uZXh0X291dCA9 IGNzLT5vdXRidWY7CisJenAtPmF2YWlsX291dCA9IGNzLT5vdXRzaXplOwogfQogCiBzdGF0aWMg dm9pZApAQCAtMjQzLDcgKzI5Miw3IEBAIEVuZENvbXByZXNzb3JabGliKEFyY2hpdmVIYW5kbGUg KkFILCBDb21wcmVzc29yU3RhdGUgKmNzKQogCWlmIChkZWZsYXRlRW5kKHpwKSAhPSBaX09LKQog CQlmYXRhbCgiY291bGQgbm90IGNsb3NlIGNvbXByZXNzaW9uIHN0cmVhbTogJXMiLCB6cC0+bXNn KTsKIAotCWZyZWUoY3MtPnpsaWJPdXQpOworCWZyZWUoY3MtPm91dGJ1Zik7CiAJZnJlZShjcy0+ enApOwogfQogCkBAIC0yNTEsNyArMzAwLDcgQEAgc3RhdGljIHZvaWQKIERlZmxhdGVDb21wcmVz c29yWmxpYihBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcywgYm9vbCBmbHVz aCkKIHsKIAl6X3N0cmVhbXAJenAgPSBjcy0+enA7Ci0JY2hhcgkgICAqb3V0ID0gY3MtPnpsaWJP dXQ7CisJdm9pZAkgICAqb3V0ID0gY3MtPm91dGJ1ZjsKIAlpbnQJCQlyZXMgPSBaX09LOwogCiAJ d2hpbGUgKGNzLT56cC0+YXZhaWxfaW4gIT0gMCB8fCBmbHVzaCkKQEAgLTI1OSw3ICszMDgsNyBA QCBEZWZsYXRlQ29tcHJlc3NvclpsaWIoQXJjaGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0 ZSAqY3MsIGJvb2wgZmx1c2gpCiAJCXJlcyA9IGRlZmxhdGUoenAsIGZsdXNoID8gWl9GSU5JU0gg OiBaX05PX0ZMVVNIKTsKIAkJaWYgKHJlcyA9PSBaX1NUUkVBTV9FUlJPUikKIAkJCWZhdGFsKCJj b3VsZCBub3QgY29tcHJlc3MgZGF0YTogJXMiLCB6cC0+bXNnKTsKLQkJaWYgKChmbHVzaCAmJiAo enAtPmF2YWlsX291dCA8IGNzLT56bGliT3V0U2l6ZSkpCisJCWlmICgoZmx1c2ggJiYgKHpwLT5h dmFpbF9vdXQgPCBjcy0+b3V0c2l6ZSkpCiAJCQl8fCAoenAtPmF2YWlsX291dCA9PSAwKQogCQkJ fHwgKHpwLT5hdmFpbF9pbiAhPSAwKQogCQkJKQpAQCAtMjY5LDE4ICszMTgsMTggQEAgRGVmbGF0 ZUNvbXByZXNzb3JabGliKEFyY2hpdmVIYW5kbGUgKkFILCBDb21wcmVzc29yU3RhdGUgKmNzLCBi b29sIGZsdXNoKQogCQkJICogY2h1bmsgaXMgdGhlIEVPRiBtYXJrZXIgaW4gdGhlIGN1c3RvbSBm b3JtYXQuIFRoaXMgc2hvdWxkIG5ldmVyCiAJCQkgKiBoYXBwZW4gYnV0Li4uCiAJCQkgKi8KLQkJ CWlmICh6cC0+YXZhaWxfb3V0IDwgY3MtPnpsaWJPdXRTaXplKQorCQkJaWYgKHpwLT5hdmFpbF9v dXQgPCBjcy0+b3V0c2l6ZSkKIAkJCXsKIAkJCQkvKgogCQkJCSAqIEFueSB3cml0ZSBmdW5jdGlv biBzaG91bGQgZG8gaXRzIG93biBlcnJvciBjaGVja2luZyBidXQgdG8KIAkJCQkgKiBtYWtlIHN1 cmUgd2UgZG8gYSBjaGVjayBoZXJlIGFzIHdlbGwuLi4KIAkJCQkgKi8KLQkJCQlzaXplX3QJCWxl biA9IGNzLT56bGliT3V0U2l6ZSAtIHpwLT5hdmFpbF9vdXQ7CisJCQkJc2l6ZV90CQlsZW4gPSBj cy0+b3V0c2l6ZSAtIHpwLT5hdmFpbF9vdXQ7CiAKLQkJCQljcy0+d3JpdGVGKEFILCBvdXQsIGxl bik7CisJCQkJY3MtPndyaXRlRihBSCwgKGNoYXIgKilvdXQsIGxlbik7CiAJCQl9Ci0JCQl6cC0+ bmV4dF9vdXQgPSAodm9pZCAqKSBvdXQ7Ci0JCQl6cC0+YXZhaWxfb3V0ID0gY3MtPnpsaWJPdXRT aXplOworCQkJenAtPm5leHRfb3V0ID0gb3V0OworCQkJenAtPmF2YWlsX291dCA9IGNzLT5vdXRz aXplOwogCQl9CiAKIAkJaWYgKHJlcyA9PSBaX1NUUkVBTV9FTkQpCkBAIC0zNjQsNiArNDEzLDcx IEBAIFJlYWREYXRhRnJvbUFyY2hpdmVabGliKEFyY2hpdmVIYW5kbGUgKkFILCBSZWFkRnVuYyBy ZWFkRikKIH0KICNlbmRpZgkJCQkJCQkvKiBIQVZFX0xJQlogKi8KIAorI2lmZGVmIEhBVkVfTElC TFo0CitzdGF0aWMgdm9pZAorSW5pdENvbXByZXNzb3JMWjQoQ29tcHJlc3NvclN0YXRlICpjcykK K3sKKwkvKiBXaWxsIGJlIGxhenkgaW5pdCdkICovCisJY3MtPm91dGJ1ZiA9IE5VTEw7CisJY3Mt Pm91dHNpemUgPSAwOworfQorCitzdGF0aWMgdm9pZAorRW5kQ29tcHJlc3NvckxaNChBcmNoaXZl SGFuZGxlICpBSCwgQ29tcHJlc3NvclN0YXRlICpjcykKK3sKKwlwZ19mcmVlKGNzLT5vdXRidWYp OworCisJY3MtPm91dGJ1ZiA9IE5VTEw7CisJY3MtPm91dHNpemUgPSAwOworfQorCitzdGF0aWMg dm9pZAorUmVhZERhdGFGcm9tQXJjaGl2ZUxaNChBcmNoaXZlSGFuZGxlICpBSCwgUmVhZEZ1bmMg cmVhZEYpCit7CisJTFo0X3N0cmVhbURlY29kZV90IGx6NFN0cmVhbURlY29kZTsKKwljaGFyCSAg ICpidWY7CisJY2hhcgkgICAqZGVjYnVmOworCXNpemVfdAkJYnVmbGVuOworCXNpemVfdAkJY250 OworCisJYnVmbGVuID0gKDQgKiAxMDI0KSArIDE7CisJYnVmID0gcGdfbWFsbG9jKGJ1Zmxlbik7 CisJZGVjYnVmID0gcGdfbWFsbG9jKGJ1Zmxlbik7CisKKwlMWjRfc2V0U3RyZWFtRGVjb2RlKCZs ejRTdHJlYW1EZWNvZGUsIE5VTEwsIDApOworCisJd2hpbGUgKChjbnQgPSByZWFkRihBSCwgJmJ1 ZiwgJmJ1ZmxlbikpKQorCXsKKwkJaW50CQlkZWNCeXRlcyA9IExaNF9kZWNvbXByZXNzX3NhZmVf Y29udGludWUoJmx6NFN0cmVhbURlY29kZSwKKwkJCQkJCQkJCQkJCQkJYnVmLCBkZWNidWYsCisJ CQkJCQkJCQkJCQkJCWNudCwgYnVmbGVuKTsKKworCQlhaHdyaXRlKGRlY2J1ZiwgMSwgZGVjQnl0 ZXMsIEFIKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCitXcml0ZURhdGFUb0FyY2hpdmVMWjQoQXJj aGl2ZUhhbmRsZSAqQUgsIENvbXByZXNzb3JTdGF0ZSAqY3MsCisJCQkJCSAgY29uc3QgY2hhciAq ZGF0YSwgc2l6ZV90IGRMZW4pCit7CisJc2l6ZV90CQljb21wcmVzc2VkOworCXNpemVfdAkJcmVx dWlyZWRzaXplID0gTFo0X2NvbXByZXNzQm91bmQoZExlbik7CisKKwlpZiAocmVxdWlyZWRzaXpl ID4gY3MtPm91dHNpemUpCisJeworCQljcy0+b3V0YnVmID0gcGdfcmVhbGxvYyhjcy0+b3V0YnVm LCByZXF1aXJlZHNpemUpOworCQljcy0+b3V0c2l6ZSA9IHJlcXVpcmVkc2l6ZTsKKwl9CisKKwlj b21wcmVzc2VkID0gTFo0X2NvbXByZXNzX2RlZmF1bHQoZGF0YSwgY3MtPm91dGJ1ZiwKKwkJCQkJ CQkJCSAgZExlbiwgY3MtPm91dHNpemUpOworCisJaWYgKGNvbXByZXNzZWQgPD0gMCkKKwkJZmF0 YWwoImZhaWxlZCB0byBMWjQgY29tcHJlc3MgZGF0YSIpOworCisJY3MtPndyaXRlRihBSCwgY3Mt Pm91dGJ1ZiwgY29tcHJlc3NlZCk7Cit9CisjZW5kaWYJCQkJCQkJLyogSEFWRV9MSUJMWjQgKi8K IAogLyoKICAqIEZ1bmN0aW9ucyBmb3IgdW5jb21wcmVzc2VkIG91dHB1dC4KQEAgLTQwMCw5ICs1 MTQsMzYgQEAgV3JpdGVEYXRhVG9BcmNoaXZlTm9uZShBcmNoaXZlSGFuZGxlICpBSCwgQ29tcHJl c3NvclN0YXRlICpjcywKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKKyNpZmRlZiBI QVZFX0xJQkxaNAogLyoKLSAqIGNmcCByZXByZXNlbnRzIGFuIG9wZW4gc3RyZWFtLCB3cmFwcGlu ZyB0aGUgdW5kZXJseWluZyBGSUxFIG9yIGd6RmlsZQotICogcG9pbnRlci4gVGhpcyBpcyBvcGFx dWUgdG8gdGhlIGNhbGxlcnMuCisgKiBTdGF0ZSBuZWVkZWQgZm9yIExaNCAoZGUpY29tcHJlc3Np b24gdXNpbmcgdGhlIGNmcCBBUEkuCisgKi8KK3R5cGVkZWYgc3RydWN0IExaNEZpbGUKK3sKKwlG SUxFCSpmcDsKKworCUxaNEZfcHJlZmVyZW5jZXNfdAkJCXByZWZzOworCisJTFo0Rl9jb21wcmVz c2lvbkNvbnRleHRfdAljdHg7CisJTFo0Rl9kZWNvbXByZXNzaW9uQ29udGV4dF90CWR0eDsKKwor CWJvb2wJaW5pdGVkOworCWJvb2wJY29tcHJlc3Npbmc7CisKKwlzaXplX3QJYnVmbGVuOworCWNo YXIgICAqYnVmZmVyOworCisJc2l6ZV90ICBvdmVyZmxvd2FsbG9jbGVuOworCXNpemVfdAlvdmVy Zmxvd2xlbjsKKwljaGFyICAgKm92ZXJmbG93YnVmOworCisJc2l6ZV90CWVycmNvZGU7Cit9IExa NEZpbGU7CisjZW5kaWYKKworLyoKKyAqIGNmcCByZXByZXNlbnRzIGFuIG9wZW4gc3RyZWFtLCB3 cmFwcGluZyB0aGUgdW5kZXJseWluZyBGSUxFLCBnekZpbGUKKyAqIHBvaW50ZXIsIG9yIExaNEZp bGUgcG9pbnRlci4gVGhpcyBpcyBvcGFxdWUgdG8gdGhlIGNhbGxlcnMuCiAgKi8KIHN0cnVjdCBj ZnAKIHsKQEAgLTQxMCw5ICs1NTEsNyBAQCBzdHJ1Y3QgY2ZwCiAJdm9pZAkgICAqZnA7CiB9Owog Ci0jaWZkZWYgSEFWRV9MSUJaCiBzdGF0aWMgaW50CWhhc1N1ZmZpeChjb25zdCBjaGFyICpmaWxl bmFtZSwgY29uc3QgY2hhciAqc3VmZml4KTsKLSNlbmRpZgogCiAvKiBmcmVlKCkgd2l0aG91dCBj aGFuZ2luZyBlcnJubzsgdXNlZnVsIGluIHNldmVyYWwgcGxhY2VzIGJlbG93ICovCiBzdGF0aWMg dm9pZApAQCAtNDI0LDI2ICs1NjMsMzgwIEBAIGZyZWVfa2VlcF9lcnJubyh2b2lkICpwKQogCWVy cm5vID0gc2F2ZV9lcnJubzsKIH0KIAorI2lmZGVmIEhBVkVfTElCTFo0CisvKgorICogTFo0IGVx dWl2YWxlbnQgdG8gZmVvZigpIG9yIGd6ZW9mKCkuIFRoZSBlbmQgb2YgZmlsZQorICogaXMgcmVh Y2hlZCBpZiB0aGVyZSBpcyBubyBkZWNvbXByZXNzZWQgb3V0cHV0IGluIHRoZQorICogb3ZlcmZs b3cgYnVmZmVyIGFuZCB0aGUgZW5kIG9mIHRoZSBmaWxlIGlzIHJlYWNoZWQuCisgKi8KK3N0YXRp YyBpbnQKK0xaNEZpbGVfZW9mKExaNEZpbGUgKmZzKQoreworCXJldHVybiBmcy0+b3ZlcmZsb3ds ZW4gPT0gMCAmJiBmZW9mKGZzLT5mcCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK0xaNEZp bGVfZXJyb3IoTFo0RmlsZSAqZnMpCit7CisJY29uc3QgY2hhciAqZXJybXNnOworCisJaWYgKExa NEZfaXNFcnJvcihmcy0+ZXJyY29kZSkpCisJCWVycm1zZyA9IExaNEZfZ2V0RXJyb3JOYW1lKGZz LT5lcnJjb2RlKTsKKwllbHNlCisJCWVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKKworCXJldHVy biBlcnJtc2c7Cit9CisKKy8qCisgKiBQcmVwYXJlIGFuIGFscmVhZHkgYWxsb2MnZWQgTFo0Rmls ZSBzdHJ1Y3QgZm9yIHN1YnNlcXVlbnQgY2FsbHMuCisgKgorICogSXQgY3JlYXRlcyB0aGUgbmVz c2FyeSBjb250ZXh0cyBmb3IgdGhlIG9wZXJhdGlvbnMuIFdoZW4gY29tcHJlc3NpbmcsCisgKiBp dCBhZGRpdGlvbmFsbHkgd3JpdGVzIHRoZSBMWjQgaGVhZGVyIGluIHRoZSBvdXRwdXQgc3RyZWFt LgorICovCitzdGF0aWMgaW50CitMWjRGaWxlX2luaXQoTFo0RmlsZSAqZnMsIGludCBzaXplLCBi b29sIGNvbXByZXNzaW5nKQoreworCXNpemVfdAlzdGF0dXM7CisKKwlpZiAoZnMtPmluaXRlZCkK KwkJcmV0dXJuIDA7CisKKwlmcy0+Y29tcHJlc3NpbmcgPSBjb21wcmVzc2luZzsKKwlmcy0+aW5p dGVkID0gdHJ1ZTsKKworCWlmIChmcy0+Y29tcHJlc3NpbmcpCisJeworCQlmcy0+YnVmbGVuID0g TFo0Rl9jb21wcmVzc0JvdW5kKExaNF9JTl9TSVpFLCAmZnMtPnByZWZzKTsKKwkJaWYgKGZzLT5i dWZsZW4gPCBMWjRGX0hFQURFUl9TSVpFX01BWCkKKwkJCWZzLT5idWZsZW4gPSBMWjRGX0hFQURF Ul9TSVpFX01BWDsKKworCQlzdGF0dXMgPSBMWjRGX2NyZWF0ZUNvbXByZXNzaW9uQ29udGV4dCgm ZnMtPmN0eCwgTFo0Rl9WRVJTSU9OKTsKKwkJaWYgKExaNEZfaXNFcnJvcihzdGF0dXMpKQorCQl7 CisJCQlmcy0+ZXJyY29kZSA9IHN0YXR1czsKKwkJCXJldHVybiAxOworCQl9CisKKwkJZnMtPmJ1 ZmZlciA9IHBnX21hbGxvYyhmcy0+YnVmbGVuKTsKKwkJc3RhdHVzID0gTFo0Rl9jb21wcmVzc0Jl Z2luKGZzLT5jdHgsIGZzLT5idWZmZXIsIGZzLT5idWZsZW4sICZmcy0+cHJlZnMpOworCisJCWlm IChMWjRGX2lzRXJyb3Ioc3RhdHVzKSkKKwkJeworCQkJZnMtPmVycmNvZGUgPSBzdGF0dXM7CisJ CQlyZXR1cm4gMTsKKwkJfQorCisJCWlmIChmd3JpdGUoZnMtPmJ1ZmZlciwgMSwgc3RhdHVzLCBm cy0+ZnApICE9IHN0YXR1cykKKwkJeworCQkJZXJybm8gPSBlcnJubyA/IDogRU5PU1BDOworCQkJ cmV0dXJuIDE7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJc3RhdHVzID0gTFo0Rl9jcmVhdGVEZWNv bXByZXNzaW9uQ29udGV4dCgmZnMtPmR0eCwgTFo0Rl9WRVJTSU9OKTsKKwkJaWYgKExaNEZfaXNF cnJvcihzdGF0dXMpKQorCQl7CisJCQlmcy0+ZXJyY29kZSA9IHN0YXR1czsKKwkJCXJldHVybiAx OworCQl9CisKKwkJZnMtPmJ1ZmxlbiA9IHNpemUgPiBMWjRfT1VUX1NJWkUgPyBzaXplIDogTFo0 X09VVF9TSVpFOworCQlmcy0+YnVmZmVyID0gcGdfbWFsbG9jKGZzLT5idWZsZW4pOworCisJCWZz LT5vdmVyZmxvd2FsbG9jbGVuID0gZnMtPmJ1ZmxlbjsKKwkJZnMtPm92ZXJmbG93YnVmID0gcGdf bWFsbG9jKGZzLT5vdmVyZmxvd2FsbG9jbGVuKTsKKwkJZnMtPm92ZXJmbG93bGVuID0gMDsKKwl9 CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFJlYWQgYWxyZWFkeSBkZWNvbXByZXNzZWQgY29u dGVudCBmcm9tIHRoZSBvdmVyZmxvdyBidWZmZXIgaW50byAncHRyJyB1cCB0bworICogJ3NpemUn IGJ5dGVzLCBpZiBhdmFpbGFibGUuIElmIHRoZSBlb2xfZmxhZyBpcyBzZXQsIHRoZW4gc3RvcCBh dCB0aGUgZmlyc3QKKyAqIG9jY3VyYW5jZSBvZiB0aGUgbmV3IGxpbmUgY2hhciBwcmlvciB0byAn c2l6ZScgYnl0ZXMuCisgKgorICogQW55IHVucmVhZCBjb250ZW50IGluIHRoZSBvdmVyZmxvdyBi dWZmZXIsIGlzIG1vdmVkIHRvIHRoZSBiZWdpbm5pbmcuCisgKi8KK3N0YXRpYyBpbnQKK0xaNEZp bGVfcmVhZF9vdmVyZmxvdyhMWjRGaWxlICpmcywgdm9pZCAqcHRyLCBpbnQgc2l6ZSwgYm9vbCBl b2xfZmxhZykKK3sKKwljaGFyICAgKnA7CisJaW50CQlyZWFkbGVuID0gMDsKKworCWlmIChmcy0+ b3ZlcmZsb3dsZW4gPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlpZiAoZnMtPm92ZXJmbG93bGVuID49 IHNpemUpCisJCXJlYWRsZW4gPSBzaXplOworCWVsc2UKKwkJcmVhZGxlbiA9IGZzLT5vdmVyZmxv d2xlbjsKKworCWlmIChlb2xfZmxhZyAmJiAocCA9IG1lbWNocihmcy0+b3ZlcmZsb3didWYsICdc bicsIHJlYWRsZW4pKSkKKwkJcmVhZGxlbiA9IHAgLSBmcy0+b3ZlcmZsb3didWYgKyAxOyAvKiBJ bmNsdWRlIHRoZSBsaW5lIHRlcm1pbmF0aW5nIGNoYXIgKi8KKworCW1lbWNweShwdHIsIGZzLT5v dmVyZmxvd2J1ZiwgcmVhZGxlbik7CisJZnMtPm92ZXJmbG93bGVuIC09IHJlYWRsZW47CisKKwlp ZiAoZnMtPm92ZXJmbG93bGVuID4gMCkKKwkJbWVtbW92ZShmcy0+b3ZlcmZsb3didWYsIGZzLT5v dmVyZmxvd2J1ZiArIHJlYWRsZW4sIGZzLT5vdmVyZmxvd2xlbik7CisKKwlyZXR1cm4gcmVhZGxl bjsKK30KKworLyoKKyAqIFRoZSB3b3JraG9yc2UgZm9yIHJlYWRpbmcgZGVjb21wcmVzc2VkIGNv bnRlbnQgb3V0IG9mIGFuIExaNCBjb21wcmVzc2VkCisgKiBzdHJlYW0uCisgKgorICogSXQgd2ls bCByZWFkIHVwIHRvICdwdHJzaXplJyBkZWNvbXByZXNzZWQgY29udGVudCwgb3IgdXAgdG8gdGhl IG5ldyBsaW5lIGNoYXIKKyAqIGlmIGZvdW5kIGZpcnN0IHdoZW4gdGhlIGVvbF9mbGFnIGlzIHNl dC4gSXQgaXMgcG9zc2libGUgdGhhdCB0aGUgZGVjb21wcmVzc2VkCisgKiBvdXRwdXQgZ2VuZXJh dGVkIGJ5IHJlYWRpbmcgYW55IGNvbXByZXNzZWQgaW5wdXQgdmlhIHRoZSBMWjRGIEFQSSwgZXhj ZWVkcworICogJ3B0cnNpemUnLiBBbnkgZXhjZWVkaW5nIGRlY29tcHJlc3NlZCBjb250ZW50IGlz IHN0b3JlZCBhdCBhbiBvdmVyZmxvdworICogYnVmZmVyIHdpdGhpbiBMWjRGaWxlLiBPZiBjb3Vy c2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgd2lsbCBmaXJzdAorICogdHJ5IHRv IGNvbnN1bWUgYW55IGRlY29tcHJlc3NlZCBjb250ZW50IGFscmVhZHkgcHJlc2VudCBpbiB0aGUg b3ZlcmZsb3cKKyAqIGJ1ZmZlciwgYmVmb3JlIGRlY29tcHJlc3NpbmcgbmV3IGNvbnRlbnQuCisg Ki8KK3N0YXRpYyBpbnQKK0xaNEZpbGVfcmVhZChMWjRGaWxlICpmcywgdm9pZCAqcHRyLCBpbnQg cHRyc2l6ZSwgYm9vbCBlb2xfZmxhZykKK3sKKwlzaXplX3QJZHNpemUgPSAwOworCXNpemVfdCAg cnNpemU7CisJc2l6ZV90CXNpemUgPSBwdHJzaXplOworCWJvb2wJZW9sX2ZvdW5kID0gZmFsc2U7 CisKKwl2b2lkICpyZWFkYnVmOworCisJLyogTGF6eSBpbml0ICovCisJaWYgKCFmcy0+aW5pdGVk ICYmIExaNEZpbGVfaW5pdChmcywgc2l6ZSwgZmFsc2UgLyogZGVjb21wcmVzc2luZyAqLykpCisJ CXJldHVybiAtMTsKKworCS8qIFZlcmZpeSB0aGF0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpbiB0 aGUgb3V0YnVmICovCisJaWYgKHNpemUgPiBmcy0+YnVmbGVuKQorCXsKKwkJZnMtPmJ1ZmxlbiA9 IHNpemU7CisJCWZzLT5idWZmZXIgPSBwZ19yZWFsbG9jKGZzLT5idWZmZXIsIHNpemUpOworCX0K KworCS8qIHVzZSBhbHJlYWR5IGRlY29tcHJlc3NlZCBjb250ZW50IGlmIGF2YWlsYWJsZSAqLwor CWRzaXplID0gTFo0RmlsZV9yZWFkX292ZXJmbG93KGZzLCBwdHIsIHNpemUsIGVvbF9mbGFnKTsK KwlpZiAoZHNpemUgPT0gc2l6ZSB8fCAoZW9sX2ZsYWcgJiYgbWVtY2hyKHB0ciwgJ1xuJywgZHNp emUpKSkKKwkJcmV0dXJuIGRzaXplOworCisJcmVhZGJ1ZiA9IHBnX21hbGxvYyhzaXplKTsKKwor CWRvCisJeworCQljaGFyICAgKnJwOworCQljaGFyICAgKnJlbmQ7CisKKwkJcnNpemUgPSBmcmVh ZChyZWFkYnVmLCAxLCBzaXplLCBmcy0+ZnApOworCQlpZiAocnNpemUgPCBzaXplICYmICFmZW9m KGZzLT5mcCkpCisJCQlyZXR1cm4gLTE7CisKKwkJcnAgPSAoY2hhciAqKXJlYWRidWY7CisJCXJl bmQgPSAoY2hhciAqKXJlYWRidWYgKyByc2l6ZTsKKworCQl3aGlsZSAocnAgPCByZW5kKQorCQl7 CisJCQlzaXplX3QJc3RhdHVzOworCQkJc2l6ZV90CW91dGxlbiA9IGZzLT5idWZsZW47CisJCQlz aXplX3QJcmVhZF9yZW1haW4gPSByZW5kIC0gcnA7CisKKwkJCW1lbXNldChmcy0+YnVmZmVyLCAw LCBvdXRsZW4pOworCQkJc3RhdHVzID0gTFo0Rl9kZWNvbXByZXNzKGZzLT5kdHgsIGZzLT5idWZm ZXIsICZvdXRsZW4sCisJCQkJCQkJCQkgcnAsICZyZWFkX3JlbWFpbiwgTlVMTCk7CisJCQlpZiAo TFo0Rl9pc0Vycm9yKHN0YXR1cykpCisJCQl7CisJCQkJZnMtPmVycmNvZGUgPSBzdGF0dXM7CisJ CQkJcmV0dXJuIC0xOworCQkJfQorCisJCQlycCArPSByZWFkX3JlbWFpbjsKKworCQkJLyoKKwkJ CSAqIGZpbGwgaW4gd2hhdCBzcGFjZSBpcyBhdmFpbGFibGUgaW4gcHRyCisJCQkgKiBpZiB0aGUg ZW9sIGZsYWcgaXMgc2V0LCBlaXRoZXIgc2tpcCBpZiBvbmUgYWxyZWFkeSBmb3VuZCBvciBmaWxs IHVwIHRvIEVPTAorCQkJICogaWYgcHJlc2VudCBpbiB0aGUgb3V0YnVmCisJCQkgKi8KKwkJCWlm IChvdXRsZW4gPiAwICYmIGRzaXplIDwgc2l6ZSAmJiBlb2xfZm91bmQgPT0gZmFsc2UpCisJCQl7 CisJCQkJY2hhciAgICpwOworCQkJCXNpemVfdAlsaWIgPSAoZW9sX2ZsYWcgPT0gMCkgPyBzaXpl IC0gZHNpemUgOiBzaXplIC0xIC1kc2l6ZTsKKwkJCQlzaXplX3QJbGVuID0gb3V0bGVuIDwgbGli ID8gb3V0bGVuIDogbGliOworCisJCQkJaWYgKGVvbF9mbGFnID09IHRydWUgJiYgKHAgPSBtZW1j aHIoZnMtPmJ1ZmZlciwgJ1xuJywgb3V0bGVuKSkgJiYKKwkJCQkJKHNpemVfdCkocCAtIGZzLT5i dWZmZXIgKyAxKSA8PSBsZW4pCisJCQkJeworCQkJCQlsZW4gPSBwIC0gZnMtPmJ1ZmZlciArIDE7 CisJCQkJCWVvbF9mb3VuZCA9IHRydWU7CisJCQkJfQorCisJCQkJbWVtY3B5KChjaGFyICopcHRy ICsgZHNpemUsIGZzLT5idWZmZXIsIGxlbik7CisJCQkJZHNpemUgKz0gbGVuOworCisJCQkJLyog bW92ZSB3aGF0IGRpZCBub3QgZml0LCBpZiBhbnksIGF0IHRoZSBiZWdpbmluZyBvZiB0aGUgYnVm ICovCisJCQkJaWYgKGxlbiA8IG91dGxlbikKKwkJCQkJbWVtbW92ZShmcy0+YnVmZmVyLCBmcy0+ YnVmZmVyICsgbGVuLCBvdXRsZW4gLSBsZW4pOworCQkJCW91dGxlbiAtPSBsZW47CisJCQl9CisK KwkJCS8qIGlmIHRoZXJlIGlzIGF2YWlsYWJsZSBvdXRwdXQsIHNhdmUgaXQgKi8KKwkJCWlmIChv dXRsZW4gPiAwKQorCQkJeworCQkJCXdoaWxlIChmcy0+b3ZlcmZsb3dsZW4gKyBvdXRsZW4gPiBm cy0+b3ZlcmZsb3dhbGxvY2xlbikKKwkJCQl7CisJCQkJCWZzLT5vdmVyZmxvd2FsbG9jbGVuICo9 IDI7CisJCQkJCWZzLT5vdmVyZmxvd2J1ZiA9IHBnX3JlYWxsb2MoZnMtPm92ZXJmbG93YnVmLCBm cy0+b3ZlcmZsb3dhbGxvY2xlbik7CisJCQkJfQorCisJCQkJbWVtY3B5KGZzLT5vdmVyZmxvd2J1 ZiArIGZzLT5vdmVyZmxvd2xlbiwgZnMtPmJ1ZmZlciwgb3V0bGVuKTsKKwkJCQlmcy0+b3ZlcmZs b3dsZW4gKz0gb3V0bGVuOworCQkJfQorCQl9CisJfSB3aGlsZSAocnNpemUgPT0gc2l6ZSAmJiBk c2l6ZSA8IHNpemUgJiYgZW9sX2ZvdW5kID09IDApOworCisJcGdfZnJlZShyZWFkYnVmKTsKKwor CXJldHVybiAoaW50KWRzaXplOworfQorCisvKgorICogQ29tcHJlc3Mgc2l6ZSBieXRlcyBmcm9t IHB0ciBhbmQgd3JpdGUgdGhlbSB0byB0aGUgc3RyZWFtLgorICovCitzdGF0aWMgaW50CitMWjRG aWxlX3dyaXRlKExaNEZpbGUgKmZzLCBjb25zdCB2b2lkICpwdHIsIGludCBzaXplKQoreworCXNp emVfdAlzdGF0dXM7CisJaW50CQlyZW1haW5pbmcgPSBzaXplOworCisJaWYgKCFmcy0+aW5pdGVk ICYmIExaNEZpbGVfaW5pdChmcywgc2l6ZSwgdHJ1ZSkpCisJCXJldHVybiAtMTsKKworCXdoaWxl IChyZW1haW5pbmcgPiAwKQorCXsKKwkJaW50CQljaHVuayA9IHJlbWFpbmluZyA8IExaNF9JTl9T SVpFID8gcmVtYWluaW5nIDogTFo0X0lOX1NJWkU7CisJCXJlbWFpbmluZyAtPSBjaHVuazsKKwor CQlzdGF0dXMgPSBMWjRGX2NvbXByZXNzVXBkYXRlKGZzLT5jdHgsIGZzLT5idWZmZXIsIGZzLT5i dWZsZW4sCisJCQkJCQkJCQkgcHRyLCBjaHVuaywgTlVMTCk7CisJCWlmIChMWjRGX2lzRXJyb3Io c3RhdHVzKSkKKwkJeworCQkJZnMtPmVycmNvZGUgPSBzdGF0dXM7CisJCQlyZXR1cm4gLTE7CisJ CX0KKworCQlpZiAoZndyaXRlKGZzLT5idWZmZXIsIDEsIHN0YXR1cywgZnMtPmZwKSAhPSBzdGF0 dXMpCisJCXsKKwkJCWVycm5vID0gZXJybm8gPyA6IEVOT1NQQzsKKwkJCXJldHVybiAxOworCQl9 CisJfQorCisJcmV0dXJuIHNpemU7Cit9CisKKy8qCisgKiBmZ2V0YygpIGFuZCBnemdldGMoKSBl cXVpdmFsZW50IGltcGxlbWVudGF0aW9uIGZvciBMWjQgY29tcHJlc3NlZCBmaWxlcy4KKyAqLwor c3RhdGljIGludAorTFo0RmlsZV9nZXRjKExaNEZpbGUgKmZzKQoreworCXVuc2lnbmVkIGNoYXIg YzsKKworCWlmIChMWjRGaWxlX3JlYWQoZnMsICZjLCAxLCBmYWxzZSkgIT0gMSkKKwkJcmV0dXJu IEVPRjsKKworCXJldHVybiBjOworfQorCisvKgorICogZmdldHMoKSBhbmQgZ3pnZXRzKCkgZXF1 aXZhbGVudCBpbXBsZW1lbnRhdGlvbiBmb3IgTFo0IGNvbXByZXNzZWQgZmlsZXMuCisgKi8KK3N0 YXRpYyBjaGFyICoKK0xaNEZpbGVfZ2V0cyhMWjRGaWxlICpmcywgY2hhciAqYnVmLCBpbnQgbGVu KQoreworCXNpemVfdAlkc2l6ZTsKKworCWRzaXplID0gTFo0RmlsZV9yZWFkKGZzLCBidWYsIGxl biwgdHJ1ZSk7CisJaWYgKGRzaXplIDwgMCkKKwkJZmF0YWwoImZhaWxlZCB0byByZWFkIGZyb20g YXJjaGl2ZSAlcyIsIExaNEZpbGVfZXJyb3IoZnMpKTsKKworCS8qIERvbmUgcmVhZGluZyAqLwor CWlmIChkc2l6ZSA9PSAwKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiBidWY7Cit9CisKKy8q CisgKiBGaW5hbGl6ZSAoZGUpY29tcHJlc3Npb24gb2YgYSBzdHJlYW0uIFdoZW4gY29tcHJlc3Np bmcgaXQgd2lsbCB3cml0ZSBhbnkKKyAqIHJlbWFpbmluZyBjb250ZW50IGFuZC9vciBnZW5lcmF0 ZWQgZm9vdGVyIGZyb20gdGhlIExaNCBBUEkuCisgKi8KK3N0YXRpYyBpbnQKK0xaNEZpbGVfY2xv c2UoTFo0RmlsZSAqZnMpCit7CisJRklMRQkqZnA7CisJc2l6ZV90CXN0YXR1czsKKwlpbnQJCXJl dDsKKworCWZwID0gZnMtPmZwOworCWlmIChmcy0+aW5pdGVkKQorCXsKKwkJaWYgKGZzLT5jb21w cmVzc2luZykKKwkJeworCQkJc3RhdHVzID0gTFo0Rl9jb21wcmVzc0VuZChmcy0+Y3R4LCBmcy0+ YnVmZmVyLCBmcy0+YnVmbGVuLCBOVUxMKTsKKwkJCWlmIChMWjRGX2lzRXJyb3Ioc3RhdHVzKSkK KwkJCQlmYXRhbCgiZmFpbGVkIHRvIGVuZCBjb21wcmVzc2lvbjogJXMiLCBMWjRGX2dldEVycm9y TmFtZShzdGF0dXMpKTsKKwkJCWVsc2UgaWYgKChyZXQgPSBmd3JpdGUoZnMtPmJ1ZmZlciwgMSwg c3RhdHVzLCBmcy0+ZnApKSAhPSBzdGF0dXMpCisJCQl7CisJCQkJZXJybm8gPSBlcnJubyA/IDog RU5PU1BDOworCQkJCVdSSVRFX0VSUk9SX0VYSVQ7CisJCQl9CisKKwkJCXN0YXR1cyA9IExaNEZf ZnJlZUNvbXByZXNzaW9uQ29udGV4dChmcy0+Y3R4KTsKKwkJCWlmIChMWjRGX2lzRXJyb3Ioc3Rh dHVzKSkKKwkJCQlmYXRhbCgiZmFpbGVkIHRvIGVuZCBjb21wcmVzc2lvbjogJXMiLCBMWjRGX2dl dEVycm9yTmFtZShzdGF0dXMpKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCXN0YXR1cyA9IExaNEZf ZnJlZURlY29tcHJlc3Npb25Db250ZXh0KGZzLT5kdHgpOworCQkJaWYgKExaNEZfaXNFcnJvcihz dGF0dXMpKQorCQkJCWZhdGFsKCJmYWlsZWQgdG8gZW5kIGRlY29tcHJlc3Npb246ICVzIiwgTFo0 Rl9nZXRFcnJvck5hbWUoc3RhdHVzKSk7CisJCQlwZ19mcmVlKGZzLT5vdmVyZmxvd2J1Zik7CisJ CX0KKworCQlwZ19mcmVlKGZzLT5idWZmZXIpOworCX0KKworCXBnX2ZyZWUoZnMpOworCisJcmV0 dXJuIGZjbG9zZShmcCk7Cit9CisjZW5kaWYKKwogLyoKICAqIE9wZW4gYSBmaWxlIGZvciByZWFk aW5nLiAncGF0aCcgaXMgdGhlIGZpbGUgdG8gb3BlbiwgYW5kICdtb2RlJyBzaG91bGQKICAqIGJl IGVpdGhlciAiciIgb3IgInJiIi4KICAqCi0gKiBJZiB0aGUgZmlsZSBhdCAncGF0aCcgZG9lcyBu b3QgZXhpc3QsIHdlIGFwcGVuZCB0aGUgIi5neiIgc3VmZml4IChpZiAncGF0aCcKLSAqIGRvZXNu J3QgYWxyZWFkeSBoYXZlIGl0KSBhbmQgdHJ5IGFnYWluLiBTbyBpZiB5b3UgcGFzcyAiZm9vIiBh cyAncGF0aCcsCi0gKiB0aGlzIHdpbGwgb3BlbiBlaXRoZXIgImZvbyIgb3IgImZvby5neiIuCisg KiBJZiB0aGUgZmlsZSBhdCAncGF0aCcgZG9lcyBub3QgZXhpc3QsIHdlIGFwcGVuZCB0aGUgInsu Z3osLmx6NH0iIHN1ZmZpeCAoaWYKKyAqICdwYXRoJyBkb2Vzbid0IGFscmVhZHkgaGF2ZSBpdCkg YW5kIHRyeSBhZ2Fpbi4gU28gaWYgeW91IHBhc3MgImZvbyIgYXMgJ3BhdGgnLAorICogdGhpcyB3 aWxsIG9wZW4gZWl0aGVyICJmb28iIG9yICJmb28uZ3oiIG9yICJmb28ubHo0IiwgdHJ5aW5nIGlu IHRoYXQgb3JkZXIuCiAgKgogICogT24gZmFpbHVyZSwgcmV0dXJuIE5VTEwgd2l0aCBhbiBlcnJv ciBjb2RlIGluIGVycm5vLgorICoKICAqLwogY2ZwICoKIGNmb3Blbl9yZWFkKGNvbnN0IGNoYXIg KnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCiB7Ci0JY2ZwCQkgICAqZnA7CisJY2ZwCQkgICAqZnAg PSBOVUxMOwogCi0jaWZkZWYgSEFWRV9MSUJaCiAJaWYgKGhhc1N1ZmZpeChwYXRoLCAiLmd6Iikp CiAJCWZwID0gY2ZvcGVuKHBhdGgsIG1vZGUsIENPTVBSRVNTSU9OX0daSVAsIDApOworCWVsc2Ug aWYgKGhhc1N1ZmZpeChwYXRoLCAiLmx6NCIpKQorCQlmcCA9IGNmb3BlbihwYXRoLCBtb2RlLCBD T01QUkVTU0lPTl9MWjQsIDApOwogCWVsc2UKLSNlbmRpZgogCXsKIAkJZnAgPSBjZm9wZW4ocGF0 aCwgbW9kZSwgQ09NUFJFU1NJT05fTk9ORSwgMCk7CiAjaWZkZWYgSEFWRV9MSUJaCkBAIC00NTUs OCArOTQ4LDE5IEBAIGNmb3Blbl9yZWFkKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1v ZGUpCiAJCQlmcCA9IGNmb3BlbihmbmFtZSwgbW9kZSwgQ09NUFJFU1NJT05fR1pJUCwgMCk7CiAJ CQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOwogCQl9CisjZW5kaWYKKyNpZmRlZiBIQVZFX0xJQkxa NAorCQlpZiAoZnAgPT0gTlVMTCkKKwkJeworCQkJY2hhcgkgICAqZm5hbWU7CisKKwkJCWZuYW1l ID0gcHNwcmludGYoIiVzLmx6NCIsIHBhdGgpOworCQkJZnAgPSBjZm9wZW4oZm5hbWUsIG1vZGUs IENPTVBSRVNTSU9OX0xaNCwgMCk7CisJCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOworCQl9CiAj ZW5kaWYKIAl9CisKIAlyZXR1cm4gZnA7CiB9CiAKQEAgLTQ2NSw5ICs5NjksMTMgQEAgY2ZvcGVu X3JlYWQoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKICAqIGJlIGEgZmlsZW1v ZGUgYXMgYWNjZXB0ZWQgYnkgZm9wZW4oKSBhbmQgZ3pvcGVuKCkgdGhhdCBpbmRpY2F0ZXMgd3Jp dGluZwogICogKCJ3IiwgIndiIiwgImEiLCBvciAiYWIiKS4KICAqCi0gKiBJZiAnY29tcHJlc3Np b24nIGlzIG5vbi16ZXJvLCBhIGd6aXAgY29tcHJlc3NlZCBzdHJlYW0gaXMgb3BlbmVkLCBhbmQK LSAqICdjb21wcmVzc2lvbicgaW5kaWNhdGVzIHRoZSBjb21wcmVzc2lvbiBsZXZlbCB1c2VkLiBU aGUgIi5neiIgc3VmZml4Ci0gKiBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvICdwYXRoJyBpbiB0 aGF0IGNhc2UuCisgKiBXaGVuICdjb21wcmVzc2lvbk1ldGhvZCcgaW5kaWNhdGVzIGd6aXAsIGEg Z3ppcCBjb21wcmVzc2VkIHN0cmVhbSBpcyBvcGVuZWQsCisgKiBhbmQgJ2NvbXByZXNzaW9uTGV2 ZWwnIGlzIHVzZWQuIFRoZSAiLmd6IiBzdWZmaXggaXMgYXV0b21hdGljYWxseSBhZGRlZCB0bwor ICogJ3BhdGgnIGluIHRoYXQgY2FzZS4gVGhlIHNhbWUgYXBwbGllcyB3aGVuICdjb21wcmVzc2lv bk1ldGhvZCcgaW5kaWNhdGVzIGx6NCwKKyAqIGJ1dCB0aGVuIHRoZSAiLmx6NCIgc3VmZml4IGlz IGFkZGVkIGluc3RlYWQuCisgKgorICogSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5 IHRvIHZlcmlmeSB0aGF0IHRoZSByZXF1ZXN0ZWQKKyAqICdjb21wcmVzc2lvbk1ldGhvZCcgaXMg c3VwcG9ydGVkIGJ5IHRoZSBidWlsZC4KICAqCiAgKiBPbiBmYWlsdXJlLCByZXR1cm4gTlVMTCB3 aXRoIGFuIGVycm9yIGNvZGUgaW4gZXJybm8uCiAgKi8KQEAgLTQ3NiwyMyArOTg0LDQ0IEBAIGNm b3Blbl93cml0ZShjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICptb2RlLAogCQkJIENvbXBy ZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLAogCQkJIGludCBjb21wcmVzc2lvbkxldmVs KQogewotCWNmcAkJICAgKmZwOworCWNmcAkJICAgKmZwID0gTlVMTDsKIAotCWlmIChjb21wcmVz c2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9OT05FKQotCQlmcCA9IGNmb3BlbihwYXRoLCBtb2Rl LCBjb21wcmVzc2lvbk1ldGhvZCwgMCk7Ci0JZWxzZQorCXN3aXRjaCAoY29tcHJlc3Npb25NZXRo b2QpCiAJeworCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CisJCQlmcCA9IGNmb3BlbihwYXRoLCBt b2RlLCBjb21wcmVzc2lvbk1ldGhvZCwgMCk7CisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lP Tl9HWklQOgogI2lmZGVmIEhBVkVfTElCWgotCQljaGFyCSAgICpmbmFtZTsKKwkJCXsKKwkJCQlj aGFyCSAgICpmbmFtZTsKIAotCQlmbmFtZSA9IHBzcHJpbnRmKCIlcy5neiIsIHBhdGgpOwotCQlm cCA9IGNmb3BlbihmbmFtZSwgbW9kZSwgY29tcHJlc3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2 ZWwpOwotCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOworCQkJCWZuYW1lID0gcHNwcmludGYoIiVz Lmd6IiwgcGF0aCk7CisJCQkJZnAgPSBjZm9wZW4oZm5hbWUsIG1vZGUsIGNvbXByZXNzaW9uTWV0 aG9kLCBjb21wcmVzc2lvbkxldmVsKTsKKwkJCQlmcmVlX2tlZXBfZXJybm8oZm5hbWUpOworCQkJ fQogI2Vsc2UKLQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwotCQlmcCA9 IE5VTEw7CQkJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KKwkJCWZhdGFsKCJub3QgYnVpbHQg d2l0aCB6bGliIHN1cHBvcnQiKTsKICNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJ T05fTFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQl7CisJCQkJY2hhcgkgICAqZm5hbWU7CisK KwkJCQlmbmFtZSA9IHBzcHJpbnRmKCIlcy5sejQiLCBwYXRoKTsKKwkJCQlmcCA9IGNmb3Blbihm bmFtZSwgbW9kZSwgY29tcHJlc3Npb25NZXRob2QsIGNvbXByZXNzaW9uTGV2ZWwpOworCQkJCWZy ZWVfa2VlcF9lcnJubyhmbmFtZSk7CisJCQl9CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3 aXRoIExaNCBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0 YWwoImludmFsaWQgY29tcHJlc3Npb24gbWV0aG9kIik7CisJCQlicmVhazsKIAl9CisKIAlyZXR1 cm4gZnA7CiB9CiAKQEAgLTUwOSw3ICsxMDM4LDcgQEAgc3RhdGljIGNmcCAqCiBjZm9wZW5faW50 ZXJuYWwoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkLCBjb25zdCBjaGFyICptb2RlLAogCQkJCUNv bXByZXNzaW9uTWV0aG9kIGNvbXByZXNzaW9uTWV0aG9kLCBpbnQgY29tcHJlc3Npb25MZXZlbCkK IHsKLQljZnAJCSAgICpmcCA9IHBnX21hbGxvYyhzaXplb2YoY2ZwKSk7CisJY2ZwCQkgICAqZnAg PSBwZ19tYWxsb2MwKHNpemVvZihjZnApKTsKIAogCWZwLT5jb21wcmVzc2lvbk1ldGhvZCA9IGNv bXByZXNzaW9uTWV0aG9kOwogCkBAIC01NjAsNiArMTA4OSwyNyBAQCBjZm9wZW5faW50ZXJuYWwo Y29uc3QgY2hhciAqcGF0aCwgaW50IGZkLCBjb25zdCBjaGFyICptb2RlLAogCQkJfQogI2Vsc2UK IAkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJl YWs7CisJCWNhc2UgQ09NUFJFU1NJT05fTFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQl7CisJ CQkJTFo0RmlsZSAqbHo0ZnAgPSBwZ19tYWxsb2MwKHNpemVvZigqbHo0ZnApKTsKKwkJCQlpZiAo ZmQgPj0gMCkKKwkJCQkJbHo0ZnAtPmZwID0gZmRvcGVuKGZkLCBtb2RlKTsKKwkJCQllbHNlCisJ CQkJCWx6NGZwLT5mcCA9IGZvcGVuKHBhdGgsIG1vZGUpOworCQkJCWlmIChsejRmcC0+ZnAgPT0g TlVMTCkKKwkJCQl7CisJCQkJCWZyZWVfa2VlcF9lcnJubyhsejRmcCk7CisJCQkJCWZwID0gTlVM TDsKKwkJCQl9CisJCQkJaWYgKGNvbXByZXNzaW9uTGV2ZWwgPj0gMCkKKwkJCQkJbHo0ZnAtPnBy ZWZzLmNvbXByZXNzaW9uTGV2ZWwgPSBjb21wcmVzc2lvbkxldmVsOworCQkJCWZwLT5mcCA9IGx6 NGZwOworCQkJfQorI2Vsc2UKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCBMWjQgc3VwcG9ydCIp OwogI2VuZGlmCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTU4MCw4ICsxMTMwLDggQEAgY2Zv cGVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUsCiAKIGNmcCAqCiBjZmRvcGVu KGludCBmZCwgY29uc3QgY2hhciAqbW9kZSwKLQkgICBDb21wcmVzc2lvbk1ldGhvZCBjb21wcmVz c2lvbk1ldGhvZCwKLQkgICBpbnQgY29tcHJlc3Npb25MZXZlbCkKKwkJQ29tcHJlc3Npb25NZXRo b2QgY29tcHJlc3Npb25NZXRob2QsCisJCWludCBjb21wcmVzc2lvbkxldmVsKQogewogCXJldHVy biBjZm9wZW5faW50ZXJuYWwoTlVMTCwgZmQsIG1vZGUsIGNvbXByZXNzaW9uTWV0aG9kLCBjb21w cmVzc2lvbkxldmVsKTsKIH0KQEAgLTYxNyw3ICsxMTY3LDE2IEBAIGNmcmVhZCh2b2lkICpwdHIs IGludCBzaXplLCBjZnAgKmZwKQogCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9y dCIpOwogI2VuZGlmCiAJCQlicmVhazsKLQorCQljYXNlIENPTVBSRVNTSU9OX0xaNDoKKyNpZmRl ZiBIQVZFX0xJQkxaNAorCQkJcmV0ID0gTFo0RmlsZV9yZWFkKGZwLT5mcCwgcHRyLCBzaXplLCBm YWxzZSk7CisJCQlpZiAocmV0ICE9IHNpemUgJiYgIUxaNEZpbGVfZW9mKGZwLT5mcCkpCisJCQkJ ZmF0YWwoImNvdWxkIG5vdCByZWFkIGZyb20gaW5wdXQgZmlsZTogJXMiLAorCQkJCQkgIExaNEZp bGVfZXJyb3IoZnAtPmZwKSk7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIExaNCBz dXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZmF0YWwoImludmFs aWQgY29tcHJlc3Npb24gbWV0aG9kIik7CiAJCQlicmVhazsKQEAgLTY0MSw2ICsxMjAwLDEzIEBA IGNmd3JpdGUoY29uc3Qgdm9pZCAqcHRyLCBpbnQgc2l6ZSwgY2ZwICpmcCkKIAkJCXJldCA9IGd6 d3JpdGUoZnAtPmZwLCBwdHIsIHNpemUpOwogI2Vsc2UKIAkJCWZhdGFsKCJub3QgYnVpbHQgd2l0 aCB6bGliIHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05f TFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQlyZXQgPSBMWjRGaWxlX3dyaXRlKGZwLT5mcCwg cHRyLCBzaXplKTsKKyNlbHNlCisJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggTFo0IHN1cHBvcnQi KTsKICNlbmRpZgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CkBAIC02NzYsNiArMTI0MiwyMCBAQCBj ZmdldGMoY2ZwICpmcCkKIAkJCX0KICNlbHNlCiAJCQlmYXRhbCgibm90IGJ1aWx0IHdpdGggemxp YiBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9OX0xaNDoK KyNpZmRlZiBIQVZFX0xJQkxaNAorCQkJcmV0ID0gTFo0RmlsZV9nZXRjKGZwLT5mcCk7CisJCQlp ZiAocmV0ID09IEVPRikKKwkJCXsKKwkJCQlpZiAoIUxaNEZpbGVfZW9mKGZwLT5mcCkpCisJCQkJ CWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZpbGU6ICVzIiwgc3RyZXJyb3IoZXJy bm8pKTsKKwkJCQllbHNlCisJCQkJCWZhdGFsKCJjb3VsZCBub3QgcmVhZCBmcm9tIGlucHV0IGZp bGU6IGVuZCBvZiBmaWxlIik7CisJCQl9CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRo IExaNCBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpAQCAtNjk1LDEz ICsxMjc1LDE5IEBAIGNmZ2V0cyhjZnAgKmZwLCBjaGFyICpidWYsIGludCBsZW4pCiAJewogCQlj YXNlIENPTVBSRVNTSU9OX05PTkU6CiAJCQlyZXQgPSBmZ2V0cyhidWYsIGxlbiwgZnAtPmZwKTsK LQogCQkJYnJlYWs7CiAJCWNhc2UgQ09NUFJFU1NJT05fR1pJUDoKICNpZmRlZiBIQVZFX0xJQloK IAkJCXJldCA9IGd6Z2V0cyhmcC0+ZnAsIGJ1ZiwgbGVuKTsKICNlbHNlCiAJCQlmYXRhbCgibm90 IGJ1aWx0IHdpdGggemxpYiBzdXBwb3J0Iik7CisjZW5kaWYKKwkJCWJyZWFrOworCQljYXNlIENP TVBSRVNTSU9OX0xaNDoKKyNpZmRlZiBIQVZFX0xJQkxaNAorCQkJcmV0ID0gTFo0RmlsZV9nZXRz KGZwLT5mcCwgYnVmLCBsZW4pOworI2Vsc2UKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0aCBMWjQg c3VwcG9ydCIpOwogI2VuZGlmCiAJCQlicmVhazsKIAkJZGVmYXVsdDoKQEAgLTczNiw2ICsxMzIy LDE0IEBAIGNmY2xvc2UoY2ZwICpmcCkKIAkJCWZwLT5mcCA9IE5VTEw7CiAjZWxzZQogCQkJZmF0 YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOworI2VuZGlmCisJCQlicmVhazsKKwkJ Y2FzZSBDT01QUkVTU0lPTl9MWjQ6CisjaWZkZWYgSEFWRV9MSUJMWjQKKwkJCXJldCA9IExaNEZp bGVfY2xvc2UoZnAtPmZwKTsKKwkJCWZwLT5mcCA9IE5VTEw7CisjZWxzZQorCQkJZmF0YWwoIm5v dCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQlkZWZhdWx0 OgpAQCAtNzY0LDYgKzEzNTgsMTMgQEAgY2Zlb2YoY2ZwICpmcCkKIAkJCXJldCA9IGd6ZW9mKGZw LT5mcCk7CiAjZWxzZQogCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIHpsaWIgc3VwcG9ydCIpOwor I2VuZGlmCisJCQlicmVhazsKKwkJY2FzZSBDT01QUkVTU0lPTl9MWjQ6CisjaWZkZWYgSEFWRV9M SUJMWjQKKwkJCXJldCA9IExaNEZpbGVfZW9mKGZwLT5mcCk7CisjZWxzZQorCQkJZmF0YWwoIm5v dCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CiAjZW5kaWYKIAkJCWJyZWFrOwogCQlkZWZhdWx0 OgpAQCAtNzc3LDIzICsxMzc4LDQyIEBAIGNmZW9mKGNmcCAqZnApCiBjb25zdCBjaGFyICoKIGdl dF9jZnBfZXJyb3IoY2ZwICpmcCkKIHsKLQlpZiAoZnAtPmNvbXByZXNzaW9uTWV0aG9kID09IENP TVBSRVNTSU9OX0daSVApCisJY29uc3QgY2hhciAqZXJybXNnID0gTlVMTDsKKworCXN3aXRjaChm cC0+Y29tcHJlc3Npb25NZXRob2QpCiAJeworCQljYXNlIENPTVBSRVNTSU9OX05PTkU6CisJCQll cnJtc2cgPSBzdHJlcnJvcihlcnJubyk7CisKKwkJCWJyZWFrOworCQljYXNlIENPTVBSRVNTSU9O X0daSVA6CiAjaWZkZWYgSEFWRV9MSUJaCi0JCWludAkJCWVycm51bTsKLQkJY29uc3QgY2hhciAq ZXJybXNnID0gZ3plcnJvcihmcC0+ZnAsICZlcnJudW0pOworCQkJeworCQkJCWludAkJCWVycm51 bTsKKwkJCQllcnJtc2cgPSBnemVycm9yKGZwLT5mcCwgJmVycm51bSk7CiAKLQkJaWYgKGVycm51 bSAhPSBaX0VSUk5PKQotCQkJcmV0dXJuIGVycm1zZzsKKwkJCQlpZiAoZXJybnVtID09IFpfRVJS Tk8pCisJCQkJCWVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKKwkJCX0KICNlbHNlCi0JCWZhdGFs KCJub3QgYnVpbHQgd2l0aCB6bGliIHN1cHBvcnQiKTsKKwkJCWZhdGFsKCJub3QgYnVpbHQgd2l0 aCB6bGliIHN1cHBvcnQiKTsKKyNlbmRpZgorCQkJYnJlYWs7CisJCWNhc2UgQ09NUFJFU1NJT05f TFo0OgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQllcnJtc2cgPSBMWjRGaWxlX2Vycm9yKGZwLT5m cCk7CisjZWxzZQorCQkJZmF0YWwoIm5vdCBidWlsdCB3aXRoIExaNCBzdXBwb3J0Iik7CiAjZW5k aWYKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZmF0YWwoImludmFsaWQgY29tcHJlc3Npb24g bWV0aG9kIik7CisJCQlicmVhazsKIAl9CiAKLQlyZXR1cm4gc3RyZXJyb3IoZXJybm8pOworCXJl dHVybiBlcnJtc2c7CiB9CiAKLSNpZmRlZiBIQVZFX0xJQloKIHN0YXRpYyBpbnQKIGhhc1N1ZmZp eChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqc3VmZml4KQogewpAQCAtODA3LDUg KzE0MjcsMyBAQCBoYXNTdWZmaXgoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnN1 ZmZpeCkKIAkJCQkgIHN1ZmZpeCwKIAkJCQkgIHN1ZmZpeGxlbikgPT0gMDsKIH0KLQotI2VuZGlm CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwLmggYi9zcmMvYmluL3BnX2R1 bXAvcGdfYmFja3VwLmgKaW5kZXggNzQxODEwYjA2Ni4uOTViMDJkYWMzYiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNr dXAuaApAQCAtNzgsNiArNzgsNyBAQCBlbnVtIF9kdW1wUHJlcGFyZWRRdWVyaWVzCiB0eXBlZGVm IGVudW0gX2NvbXByZXNzaW9uTWV0aG9kCiB7CiAJQ09NUFJFU1NJT05fR1pJUCwKKwlDT01QUkVT U0lPTl9MWjQsCiAJQ09NUFJFU1NJT05fTk9ORQogfSBDb21wcmVzc2lvbk1ldGhvZDsKIApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCmluZGV4IDdkOTY0NDZmMWEuLmU2ZjcyNzUzNGIg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKQEAgLTM1Myw2ICszNTMsNyBAQCBS ZXN0b3JlQXJjaGl2ZShBcmNoaXZlICpBSFgpCiAJQXJjaGl2ZUhhbmRsZSAqQUggPSAoQXJjaGl2 ZUhhbmRsZSAqKSBBSFg7CiAJUmVzdG9yZU9wdGlvbnMgKnJvcHQgPSBBSC0+cHVibGljLnJvcHQ7 CiAJYm9vbAkJcGFyYWxsZWxfbW9kZTsKKwlib29sCQlzdXBwb3J0c19jb21wcmVzc2lvbjsKIAlU b2NFbnRyeSAgICp0ZTsKIAljZnAJCSAgICpzYXY7CiAKQEAgLTM4MiwxNyArMzgzLDI3IEBAIFJl c3RvcmVBcmNoaXZlKEFyY2hpdmUgKkFIWCkKIAkvKgogCSAqIE1ha2Ugc3VyZSB3ZSB3b24ndCBu ZWVkIChkZSljb21wcmVzc2lvbiB3ZSBoYXZlbid0IGdvdAogCSAqLwotI2lmbmRlZiBIQVZFX0xJ QloKLQlpZiAoQUgtPmNvbXByZXNzaW9uTWV0aG9kID09IENPTVBSRVNTSU9OX0daSVAgJiYKKwlz dXBwb3J0c19jb21wcmVzc2lvbiA9IHRydWU7CisJaWYgKEFILT5jb21wcmVzc2lvbk1ldGhvZCAh PSBDT01QUkVTU0lPTl9OT05FICYmCiAJCUFILT5QcmludFRvY0RhdGFQdHIgIT0gTlVMTCkKIAl7 CiAJCWZvciAodGUgPSBBSC0+dG9jLT5uZXh0OyB0ZSAhPSBBSC0+dG9jOyB0ZSA9IHRlLT5uZXh0 KQogCQl7CiAJCQlpZiAodGUtPmhhZER1bXBlciAmJiAodGUtPnJlcXMgJiBSRVFfREFUQSkgIT0g MCkKLQkJCQlmYXRhbCgiY2Fubm90IHJlc3RvcmUgZnJvbSBjb21wcmVzc2VkIGFyY2hpdmUgKGNv bXByZXNzaW9uIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBpbnN0YWxsYXRpb24pIik7CisJCQl7Cisj aWZuZGVmIEhBVkVfTElCWgorCQkJCWlmIChBSC0+Y29tcHJlc3Npb25NZXRob2QgPT0gQ09NUFJF U1NJT05fR1pJUCkKKwkJCQkJc3VwcG9ydHNfY29tcHJlc3Npb24gPSBmYWxzZTsKKyNlbmRpZgor I2lmbmRlZiBIQVZFX0xJQkxaNAorCQkJCWlmIChBSC0+Y29tcHJlc3Npb25NZXRob2QgPT0gQ09N UFJFU1NJT05fTFo0KQorCQkJCQlzdXBwb3J0c19jb21wcmVzc2lvbiA9IGZhbHNlOworI2VuZGlm CisJCQkJaWYgKHN1cHBvcnRzX2NvbXByZXNzaW9uID09IGZhbHNlKQorCQkJCQlmYXRhbCgiY2Fu bm90IHJlc3RvcmUgZnJvbSBjb21wcmVzc2VkIGFyY2hpdmUgKGNvbXByZXNzaW9uIG5vdCBzdXBw b3J0ZWQgaW4gdGhpcyBpbnN0YWxsYXRpb24pIik7CisJCQl9CiAJCX0KIAl9Ci0jZW5kaWYKIAog CS8qCiAJICogUHJlcGFyZSBpbmRleCBhcnJheXMsIHNvIHdlIGNhbiBhc3N1bWUgd2UgaGF2ZSB0 aGVtIHRocm91Z2hvdXQgcmVzdG9yZS4KQEAgLTIwMTksNiArMjAzMCwxOCBAQCBSZWFkU3RyKEFy Y2hpdmVIYW5kbGUgKkFIKQogCXJldHVybiBidWY7CiB9CiAKK3N0YXRpYyBib29sCitfZmlsZUV4 aXN0c0luRGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqZmlsZW5hbWUpCit7 CisJc3RydWN0IHN0YXQgc3Q7CisJY2hhcgkJYnVmW01BWFBHUEFUSF07CisKKwlpZiAoc25wcmlu dGYoYnVmLCBNQVhQR1BBVEgsICIlcy8lcyIsIGRpciwgZmlsZW5hbWUpID49IE1BWFBHUEFUSCkK KwkJZmF0YWwoImRpcmVjdG9yeSBuYW1lIHRvbyBsb25nOiBcIiVzXCIiLCBkaXIpOworCisJcmV0 dXJuIChzdGF0KGJ1ZiwgJnN0KSA9PSAwICYmIFNfSVNSRUcoc3Quc3RfbW9kZSkpOworfQorCiBz dGF0aWMgaW50CiBfZGlzY292ZXJBcmNoaXZlRm9ybWF0KEFyY2hpdmVIYW5kbGUgKkFIKQogewpA QCAtMjA0NiwzMCArMjA2OSwyMSBAQCBfZGlzY292ZXJBcmNoaXZlRm9ybWF0KEFyY2hpdmVIYW5k bGUgKkFIKQogCiAJCS8qCiAJCSAqIENoZWNrIGlmIHRoZSBzcGVjaWZpZWQgYXJjaGl2ZSBpcyBh IGRpcmVjdG9yeS4gSWYgc28sIGNoZWNrIGlmCi0JCSAqIHRoZXJlJ3MgYSAidG9jLmRhdCIgKG9y ICJ0b2MuZGF0Lmd6IikgZmlsZSBpbiBpdC4KKwkJICogdGhlcmUncyBhICJ0b2MuZGF0IiAob3Ig InRvYy5kYXQue2d6LGx6NH0iKSBmaWxlIGluIGl0LgogCQkgKi8KIAkJaWYgKHN0YXQoQUgtPmZT cGVjLCAmc3QpID09IDAgJiYgU19JU0RJUihzdC5zdF9tb2RlKSkKIAkJewotCQkJY2hhcgkJYnVm W01BWFBHUEFUSF07CiAKLQkJCWlmIChzbnByaW50ZihidWYsIE1BWFBHUEFUSCwgIiVzL3RvYy5k YXQiLCBBSC0+ZlNwZWMpID49IE1BWFBHUEFUSCkKLQkJCQlmYXRhbCgiZGlyZWN0b3J5IG5hbWUg dG9vIGxvbmc6IFwiJXNcIiIsCi0JCQkJCSAgQUgtPmZTcGVjKTsKLQkJCWlmIChzdGF0KGJ1Ziwg JnN0KSA9PSAwICYmIFNfSVNSRUcoc3Quc3RfbW9kZSkpCi0JCQl7Ci0JCQkJQUgtPmZvcm1hdCA9 IGFyY2hEaXJlY3Rvcnk7CisJCQlBSC0+Zm9ybWF0ID0gYXJjaERpcmVjdG9yeTsKKwkJCWlmIChf ZmlsZUV4aXN0c0luRGlyZWN0b3J5KEFILT5mU3BlYywgInRvYy5kYXQiKSkKIAkJCQlyZXR1cm4g QUgtPmZvcm1hdDsKLQkJCX0KLQogI2lmZGVmIEhBVkVfTElCWgotCQkJaWYgKHNucHJpbnRmKGJ1 ZiwgTUFYUEdQQVRILCAiJXMvdG9jLmRhdC5neiIsIEFILT5mU3BlYykgPj0gTUFYUEdQQVRIKQot CQkJCWZhdGFsKCJkaXJlY3RvcnkgbmFtZSB0b28gbG9uZzogXCIlc1wiIiwKLQkJCQkJICBBSC0+ ZlNwZWMpOwotCQkJaWYgKHN0YXQoYnVmLCAmc3QpID09IDAgJiYgU19JU1JFRyhzdC5zdF9tb2Rl KSkKLQkJCXsKLQkJCQlBSC0+Zm9ybWF0ID0gYXJjaERpcmVjdG9yeTsKKwkJCWlmIChfZmlsZUV4 aXN0c0luRGlyZWN0b3J5KEFILT5mU3BlYywgInRvYy5kYXQuZ3oiKSkKKwkJCQlyZXR1cm4gQUgt PmZvcm1hdDsKKyNlbmRpZgorI2lmZGVmIEhBVkVfTElCTFo0CisJCQlpZiAoX2ZpbGVFeGlzdHNJ bkRpcmVjdG9yeShBSC0+ZlNwZWMsICJ0b2MuZGF0Lmx6NCIpKQogCQkJCXJldHVybiBBSC0+Zm9y bWF0OwotCQkJfQogI2VuZGlmCiAJCQlmYXRhbCgiZGlyZWN0b3J5IFwiJXNcIiBkb2VzIG5vdCBh cHBlYXIgdG8gYmUgYSB2YWxpZCBhcmNoaXZlIChcInRvYy5kYXRcIiBkb2VzIG5vdCBleGlzdCki LAogCQkJCSAgQUgtPmZTcGVjKTsKQEAgLTM2ODEsNiArMzY5NSw3IEBAIFdyaXRlSGVhZChBcmNo aXZlSGFuZGxlICpBSCkKIAlBSC0+V3JpdGVCeXRlUHRyKEFILCBBSC0+b2ZmU2l6ZSk7CiAJQUgt PldyaXRlQnl0ZVB0cihBSCwgQUgtPmZvcm1hdCk7CiAJV3JpdGVJbnQoQUgsIEFILT5jb21wcmVz c2lvbkxldmVsKTsKKwlBSC0+V3JpdGVCeXRlUHRyKEFILCBBSC0+Y29tcHJlc3Npb25NZXRob2Qp OwogCWNydG0gPSAqbG9jYWx0aW1lKCZBSC0+Y3JlYXRlRGF0ZSk7CiAJV3JpdGVJbnQoQUgsIGNy dG0udG1fc2VjKTsKIAlXcml0ZUludChBSCwgY3J0bS50bV9taW4pOwpAQCAtMzc2MSwxNCArMzc3 NiwyMCBAQCBSZWFkSGVhZChBcmNoaXZlSGFuZGxlICpBSCkKIAllbHNlCiAJCUFILT5jb21wcmVz c2lvbkxldmVsID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OOwogCi0JaWYgKEFILT5jb21wcmVzc2lv bkxldmVsICE9IElOVF9NSU4pCisJaWYgKEFILT52ZXJzaW9uID49IEtfVkVSU18xXzE1KQorCQlB SC0+Y29tcHJlc3Npb25NZXRob2QgPSBBSC0+UmVhZEJ5dGVQdHIoQUgpOworCWVsc2UgaWYgKEFI LT5jb21wcmVzc2lvbkxldmVsICE9IDApCisJCUFILT5jb21wcmVzc2lvbk1ldGhvZCA9IENPTVBS RVNTSU9OX0daSVA7CisKICNpZm5kZWYgSEFWRV9MSUJaCisJaWYgKEFILT5jb21wcmVzc2lvbk1l dGhvZCA9PSBDT01QUkVTU0lPTl9HWklQKQorCXsKIAkJcGdfbG9nX3dhcm5pbmcoImFyY2hpdmUg aXMgY29tcHJlc3NlZCwgYnV0IHRoaXMgaW5zdGFsbGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgY29t cHJlc3Npb24gLS0gbm8gZGF0YSB3aWxsIGJlIGF2YWlsYWJsZSIpOwotI2Vsc2UKLQkJQUgtPmNv bXByZXNzaW9uTWV0aG9kID0gQ09NUFJFU1NJT05fR1pJUDsKKwkJQUgtPmNvbXByZXNzaW9uTWV0 aG9kID0gQ09NUFJFU1NJT05fTk9ORTsKKwkJQUgtPmNvbXByZXNzaW9uTGV2ZWwgPSAwOworCX0K ICNlbmRpZgogCi0KIAlpZiAoQUgtPnZlcnNpb24gPj0gS19WRVJTXzFfNCkKIAl7CiAJCXN0cnVj dCB0bQljcnRtOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZl ci5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5oCmluZGV4IDgzN2U5ZDcz ZjUuLjAzN2JmY2Y5MTMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJj aGl2ZXIuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmgKQEAgLTY1 LDEwICs2NSwxMSBAQAogI2RlZmluZSBLX1ZFUlNfMV8xMyBNQUtFX0FSQ0hJVkVfVkVSU0lPTigx LCAxMywgMCkJLyogY2hhbmdlIHNlYXJjaF9wYXRoCiAJCQkJCQkJCQkJCQkJICogYmVoYXZpb3Ig Ki8KICNkZWZpbmUgS19WRVJTXzFfMTQgTUFLRV9BUkNISVZFX1ZFUlNJT04oMSwgMTQsIDApCS8q IGFkZCB0YWJsZWFtICovCisjZGVmaW5lIEtfVkVSU18xXzE1IE1BS0VfQVJDSElWRV9WRVJTSU9O KDEsIDE1LCAwKQkvKiBhZGQgY29tcHJlc3Npb25NZXRob2QgaW4gaGVhZGVyICovCiAKIC8qIEN1 cnJlbnQgYXJjaGl2ZSB2ZXJzaW9uIG51bWJlciAodGhlIGZvcm1hdCB3ZSBjYW4gb3V0cHV0KSAq LwogI2RlZmluZSBLX1ZFUlNfTUFKT1IgMQotI2RlZmluZSBLX1ZFUlNfTUlOT1IgMTQKKyNkZWZp bmUgS19WRVJTX01JTk9SIDE1CiAjZGVmaW5lIEtfVkVSU19SRVYgMAogI2RlZmluZSBLX1ZFUlNf U0VMRiBNQUtFX0FSQ0hJVkVfVkVSU0lPTihLX1ZFUlNfTUFKT1IsIEtfVkVSU19NSU5PUiwgS19W RVJTX1JFVikKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNzQ3N2Q1MTEyZS4uNDM3YTI1YjhkOSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCkBAIC05OTksNyArOTk5LDcgQEAgaGVscChjb25zdCBjaGFyICpwcm9nbmFtZSkKIAlw cmludGYoXygiICAtaiwgLS1qb2JzPU5VTSAgICAgICAgICAgICAgIHVzZSB0aGlzIG1hbnkgcGFy YWxsZWwgam9icyB0byBkdW1wXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXYsIC0tdmVyYm9zZSAgICAg ICAgICAgICAgICB2ZXJib3NlIG1vZGVcbiIpKTsKIAlwcmludGYoXygiICAtViwgLS12ZXJzaW9u ICAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIp KTsKLQlwcmludGYoXygiICAtWiwgLS1jb21wcmVzcz1bZ3ppcCxub25lXVs6TEVWRUxdIG9yIFtM RVZFTF1cbiIKKwlwcmludGYoXygiICAtWiwgLS1jb21wcmVzcz1bZ3ppcCxsejQsbm9uZV1bOkxF VkVMXSBvciBbTEVWRUxdXG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b21wcmVzcyBvdXRwdXQgd2l0aCBnaXZlbiBtZXRob2Qgb3IgbGV2ZWxcbiIpKTsKIAlwcmludGYo XygiICAtLWxvY2std2FpdC10aW1lb3V0PVRJTUVPVVQgIGZhaWwgYWZ0ZXIgd2FpdGluZyBUSU1F T1VUIGZvciBhIHRhYmxlIGxvY2tcbiIpKTsKIAlwcmludGYoXygiICAtLW5vLXN5bmMgICAgICAg ICAgICAgICAgICAgIGRvIG5vdCB3YWl0IGZvciBjaGFuZ2VzIHRvIGJlIHdyaXR0ZW4gc2FmZWx5 IHRvIGRpc2tcbiIpKTsKQEAgLTEyNjgsMTEgKzEyNjgsMTMgQEAgcGFyc2VfY29tcHJlc3Npb25f bWV0aG9kKGNvbnN0IGNoYXIgKm1ldGhvZCwKIAogCWlmIChwZ19zdHJjYXNlY21wKG1ldGhvZCwg Imd6aXAiKSA9PSAwKQogCQkqY29tcHJlc3Npb25NZXRob2QgPSBDT01QUkVTU0lPTl9HWklQOwor CWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAobWV0aG9kLCAibHo0IikgPT0gMCkKKwkJKmNvbXByZXNz aW9uTWV0aG9kID0gQ09NUFJFU1NJT05fTFo0OwogCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAobWV0 aG9kLCAibm9uZSIpID09IDApCiAJCSpjb21wcmVzc2lvbk1ldGhvZCA9IENPTVBSRVNTSU9OX05P TkU7CiAJZWxzZQogCXsKLQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlkIGNvbXByZXNzaW9uIG1ldGhv ZCBcIiVzXCIgKGd6aXAsIG5vbmUpIiwgbWV0aG9kKTsKKwkJcGdfbG9nX2Vycm9yKCJpbnZhbGlk IGNvbXByZXNzaW9uIG1ldGhvZCBcIiVzXCIgKGd6aXAsIGx6NCwgbm9uZSkiLCBtZXRob2QpOwog CQlyZXMgPSBmYWxzZTsKIAl9CiAKQEAgLTEzNDMsMTAgKzEzNDUsMTAgQEAgcGFyc2VfY29tcHJl c3Npb25fb3B0aW9uKGNvbnN0IGNoYXIgKm9wdCwgQ29tcHJlc3Npb25NZXRob2QgKmNvbXByZXNz aW9uTWV0aG9kLAogCWlmICghcmVzKQogCQlyZXR1cm4gcmVzOwogCi0JLyogb25lIGNhbiBzZXQg bGV2ZWwgd2hlbiBtZXRob2QgaXMgZ3ppcCAqLwotCWlmICgqY29tcHJlc3Npb25NZXRob2QgIT0g Q09NUFJFU1NJT05fR1pJUCAmJiAqY29tcHJlc3NMZXZlbCAhPSBJTlRfTUlOKQorCS8qIG9uZSBj YW4gc2V0IGxldmVsIHdoZW4gYSBjb21wcmVzc2lvbiBtZXRob2QgaXMgc2V0ICovCisJaWYgKCpj b21wcmVzc2lvbk1ldGhvZCA9PSBDT01QUkVTU0lPTl9OT05FICYmICpjb21wcmVzc0xldmVsICE9 IElOVF9NSU4pCiAJewotCQlwZ19sb2dfZXJyb3IoImNhbiBvbmx5IHNwZWNpZnkgLVovLS1jb21w cmVzcyBbTEVWRUxdIHdoZW4gbWV0aG9kIGlzIGd6aXAiKTsKKwkJcGdfbG9nX2Vycm9yKCJjYW4g b25seSBzcGVjaWZ5IC1aLy0tY29tcHJlc3MgW0xFVkVMXSB3aGVuIG1ldGhvZCBpcyBzZXQiKTsK IAkJcmV0dXJuIGZhbHNlOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAx X2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IDg0MGMzYWM4 OTkuLjQxODVjMTllOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMV9iYXNpYy5w bAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTEyOCwxMiArMTI4LDEy IEBAIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAogY29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1 bXAnLCAnLS1jb21wcmVzcycsICdnYXJiYWdlJyBdLAotCXFyL1xRcGdfZHVtcDogZXJyb3I6IGlu dmFsaWQgY29tcHJlc3Npb24gbWV0aG9kICJnYXJiYWdlIiAoZ3ppcCwgbm9uZSlcRS8sCisJcXIv XFFwZ19kdW1wOiBlcnJvcjogaW52YWxpZCBjb21wcmVzc2lvbiBtZXRob2QgImdhcmJhZ2UiIChn emlwLCBsejQsIG5vbmUpXEUvLAogCSdwZ19kdW1wOiBpbnZhbGlkIC0tY29tcHJlc3MnKTsKIAog Y29tbWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX2R1bXAnLCAnLS1jb21wcmVzcycsICdub25lOjEn IF0sCi0JcXIvXFFwZ19kdW1wOiBlcnJvcjogY2FuIG9ubHkgc3BlY2lmeSAtWlwvLS1jb21wcmVz cyBbTEVWRUxdIHdoZW4gbWV0aG9kIGlzIGd6aXBcRS8sCisJcXIvXFFwZ19kdW1wOiBlcnJvcjog Y2FuIG9ubHkgc3BlY2lmeSAtWlwvLS1jb21wcmVzcyBbTEVWRUxdIHdoZW4gbWV0aG9kIGlzIHNl dFxFLywKIAkncGdfZHVtcDogY2FuIG9ubHkgc3BlY2lmeSAtWi8tLWNvbXByZXNzIFtMRVZFTF0g d2hlbiBtZXRob2QgaXMgZ3ppcCcpOwogCiBjb21tYW5kX2ZhaWxzX2xpa2UoCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsCmluZGV4IGQzMGU5NmQ3MDUuLjgxZTE4ZjVhODcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsCisrKyBiL3NyYy9iaW4vcGdfZHVtcC90LzAw Ml9wZ19kdW1wLnBsCkBAIC04MiwxMSArODIsMTQgQEAgbXkgJXBnZHVtcF9ydW5zID0gKAogCQkJ J3Bvc3RncmVzJywKIAkJXSwKIAkJIyBHaXZlIGNvdmVyYWdlIGZvciBtYW51YWxseSBjb21wcmVz c2VkIGJsb2IudG9jIGZpbGVzIGR1cmluZyByZXN0b3JlLgotCQljb21wcmVzc19jbWQgPT4gWwot CQkJJEVOVnsnR1pJUF9QUk9HUkFNJ30sCi0JCQknLWYnLAotCQkJIiR0ZW1wZGlyL2NvbXByZXNz aW9uX2d6aXBfZGlyZWN0b3J5X2Zvcm1hdC9ibG9icy50b2MiLAotCQldLAorCQljb21wcmVzc2lv biA9PiB7CisJCQltZXRob2QgPT4gJ2d6aXAnLAorCQkJY21kID0+IFsKKwkJCQkkRU5WeydHWklQ X1BST0dSQU0nfSwKKwkJCQknLWYnLAorCQkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2Rp cmVjdG9yeV9mb3JtYXQvYmxvYnMudG9jIiwKKwkJCV0sCisJCX0sCiAJCXJlc3RvcmVfY21kID0+ IFsKIAkJCSdwZ19yZXN0b3JlJywKIAkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fZ3pp cF9kaXJlY3RvcnlfZm9ybWF0LnNxbCIsCkBAIC0xMDIsMTIgKzEwNSwxNSBAQCBteSAlcGdkdW1w X3J1bnMgPSAoCiAJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXByZXNzaW9uX2d6aXBfZGlyZWN0b3J5 X2Zvcm1hdF9wYXJhbGxlbCIsCiAJCQkncG9zdGdyZXMnLAogCQldLAotCQkjIEdpdmUgY292ZXJh Z2UgZm9yIG1hbnVhbGx5IGNvbXByZXNzZWQgYmxvYi50b2MgZmlsZXMgZHVyaW5nIHJlc3RvcmUu Ci0JCWNvbXByZXNzX2NtZCA9PiBbCi0JCQkkRU5WeydHWklQX1BST0dSQU0nfSwKLQkJCSctZics Ci0JCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fZ3ppcF9kaXJlY3RvcnlfZm9ybWF0X3BhcmFsbGVs L2Jsb2JzLnRvYyIsCi0JCV0sCisJCSMgR2l2ZSBjb3ZlcmFnZSBmb3IgbWFudWFsbHkgY29tcHJl c3NlZCB0b2MuZGF0IGZpbGVzIGR1cmluZyByZXN0b3JlLgorCQljb21wcmVzc2lvbiA9PiB7CisJ CQltZXRob2QgPT4gJ2d6aXAnLAorCQkJY21kID0+IFsKKwkJCQkkRU5WeydHWklQX1BST0dSQU0n fSwKKwkJCQknLWYnLAorCQkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9nemlwX2RpcmVjdG9yeV9m b3JtYXRfcGFyYWxsZWwvdG9jLmRhdCIsCisJCQldLAorCQl9LAogCQlyZXN0b3JlX2NtZCA9PiBb CiAJCQkncGdfcmVzdG9yZScsCiAJCQknLS1qb2JzPTMnLApAQCAtMTI0LDExICsxMzAsOTUgQEAg bXkgJXBnZHVtcF9ydW5zID0gKAogCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9nemlw X3BsYWluX2Zvcm1hdC5zcWwuZ3oiLAogCQkJJ3Bvc3RncmVzJywKIAkJXSwKLQkJY29tcHJlc3Nf Y21kID0+IFsKLQkJCSRFTlZ7J0daSVBfUFJPR1JBTSd9LAotCQkJJy1rJywgJy1kJywKLQkJCSIk dGVtcGRpci9jb21wcmVzc2lvbl9nemlwX3BsYWluX2Zvcm1hdC5zcWwuZ3oiLAorCQljb21wcmVz c2lvbiA9PiB7CisJCQltZXRob2QgPT4gJ2d6aXAnLAorCQkJY21kID0+IFsKKwkJCQkkRU5WeydH WklQX1BST0dSQU0nfSwKKwkJCQknLWsnLCAnLWQnLAorCQkJCSIkdGVtcGRpci9jb21wcmVzc2lv bl9nemlwX3BsYWluX2Zvcm1hdC5zcWwuZ3oiLAorCQkJXSwKKwkJfSwKKwl9LAorCWNvbXByZXNz aW9uX2x6NF9jdXN0b21fZm9ybWF0ID0+IHsKKwkJdGVzdF9rZXkgPT4gJ2NvbXByZXNzaW9uJywK KwkJZHVtcF9jbWQgPT4gWworCQkJJ3BnX2R1bXAnLCAnLS1uby1zeW5jJywKKwkJCSctLWZvcm1h dD1jdXN0b20nLCAnLS1jb21wcmVzcz1sejQ6OScsCisJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXBy ZXNzaW9uX2x6NF9jdXN0b21fZm9ybWF0LmR1bXAiLAorCQkJJ3Bvc3RncmVzJywKKwkJXSwKKwkJ cmVzdG9yZV9jbWQgPT4gWworCQkJJ3BnX3Jlc3RvcmUnLAorCQkJIi0tZmlsZT0kdGVtcGRpci9j b21wcmVzc2lvbl9sejRfY3VzdG9tX2Zvcm1hdC5zcWwiLAorCQkJIiR0ZW1wZGlyL2NvbXByZXNz aW9uX2x6NF9jdXN0b21fZm9ybWF0LmR1bXAiLAorCQldLAorCX0sCisJY29tcHJlc3Npb25fbHo0 X2RpcmVjdG9yeV9mb3JtYXQgPT4geworCQl0ZXN0X2tleSA9PiAnY29tcHJlc3Npb24nLAorCQlk dW1wX2NtZCA9PiBbCisJCQkncGdfZHVtcCcsICctLW5vLXN5bmMnLAorCQkJJy0tZm9ybWF0PWRp cmVjdG9yeScsICctLWNvbXByZXNzPWx6NCcsCisJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXByZXNz aW9uX2x6NF9kaXJlY3RvcnlfZm9ybWF0IiwKKwkJCSdwb3N0Z3JlcycsCisJCV0sCisJCSMgR2l2 ZSBjb3ZlcmFnZSBmb3IgbWFudWFsbHkgY29tcHJlc3NlZCB0b2MuZGF0IGZpbGVzIGR1cmluZyBy ZXN0b3JlLgorCQljb21wcmVzc2lvbiA9PiB7CisJCQltZXRob2QgPT4gJ2x6NCcsCisJCQljbWQg PT4gWworCQkJCSRFTlZ7J0xaNCd9LAorCQkJCScteicsICctZicsICctLXJtJywKKwkJCQkiJHRl bXBkaXIvY29tcHJlc3Npb25fbHo0X2RpcmVjdG9yeV9mb3JtYXQvdG9jLmRhdCIsCisJCQkJIiR0 ZW1wZGlyL2NvbXByZXNzaW9uX2x6NF9kaXJlY3RvcnlfZm9ybWF0L3RvYy5kYXQubHo0IiwKKwkJ CV0sCisJCX0sCisJCXJlc3RvcmVfY21kID0+IFsKKwkJCSdwZ19yZXN0b3JlJywKKwkJCSItLWZp bGU9JHRlbXBkaXIvY29tcHJlc3Npb25fbHo0X2RpcmVjdG9yeV9mb3JtYXQuc3FsIiwKKwkJCSIk dGVtcGRpci9jb21wcmVzc2lvbl9sejRfZGlyZWN0b3J5X2Zvcm1hdCIsCisJCV0sCisJfSwKKwlj b21wcmVzc2lvbl9sejRfZGlyZWN0b3J5X2Zvcm1hdF9wYXJhbGxlbCA9PiB7CisJCXRlc3Rfa2V5 ID0+ICdjb21wcmVzc2lvbicsCisJCWR1bXBfY21kID0+IFsKKwkJCSdwZ19kdW1wJywgJy0tbm8t c3luYycsICctLWpvYnM9MicsCisJCQknLS1mb3JtYXQ9ZGlyZWN0b3J5JywgJy0tY29tcHJlc3M9 bHo0OjknLAorCQkJIi0tZmlsZT0kdGVtcGRpci9jb21wcmVzc2lvbl9sejRfZGlyZWN0b3J5X2Zv cm1hdF9wYXJhbGxlbCIsCisJCQkncG9zdGdyZXMnLAorCQldLAorCQkjIEdpdmUgY292ZXJhZ2Ug Zm9yIG1hbnVhbGx5IGNvbXByZXNzZWQgYmxvYi50b2MgZmlsZXMgZHVyaW5nIHJlc3RvcmUuCisJ CWNvbXByZXNzaW9uID0+IHsKKwkJCW1ldGhvZCA9PiAnbHo0JywKKwkJCWNtZCA9PiBbCisJCQkJ JEVOVnsnTFo0J30sCisJCQkJJy16JywgJy1mJywgJy0tcm0nLAorCQkJCSIkdGVtcGRpci9jb21w cmVzc2lvbl9sejRfZGlyZWN0b3J5X2Zvcm1hdF9wYXJhbGxlbC9ibG9icy50b2MiLAorCQkJCSIk dGVtcGRpci9jb21wcmVzc2lvbl9sejRfZGlyZWN0b3J5X2Zvcm1hdF9wYXJhbGxlbC9ibG9icy50 b2MubHo0IiwKKwkJCV0sCisJCX0sCisJCXJlc3RvcmVfY21kID0+IFsKKwkJCSdwZ19yZXN0b3Jl JywgJy0tam9icz0yJywKKwkJCSItLWZpbGU9JHRlbXBkaXIvY29tcHJlc3Npb25fbHo0X2RpcmVj dG9yeV9mb3JtYXRfcGFyYWxsZWwuc3FsIiwKKwkJCSIkdGVtcGRpci9jb21wcmVzc2lvbl9sejRf ZGlyZWN0b3J5X2Zvcm1hdF9wYXJhbGxlbCIsCisJCV0sCisJfSwKKwkjIENoZWNrIHRoYXQgdGhl IG91dHB1dCBpcyB2YWxpZCBsejQKKwljb21wcmVzc2lvbl9sejRfcGxhaW5fZm9ybWF0ID0+IHsK KwkJdGVzdF9rZXkgPT4gJ2NvbXByZXNzaW9uJywKKwkJZHVtcF9jbWQgPT4gWworCQkJJ3BnX2R1 bXAnLAorCQkJJy0tbm8tc3luYycsCisJCQknLS1mb3JtYXQ9cGxhaW4nLCAnLS1jb21wcmVzcz1s ejQ6MScsCisJCQkiLS1maWxlPSR0ZW1wZGlyL2NvbXByZXNzaW9uX2x6NF9wbGFpbl9mb3JtYXQu c3FsLmx6NCIsCisJCQkncG9zdGdyZXMnLAogCQldLAorCQljb21wcmVzc2lvbiA9PiB7CisJCQlt ZXRob2QgPT4gJ2x6NCcsCisJCQljbWQgPT4gWworCQkJCSRFTlZ7TFo0fSwgJy1kJywgJy1mJywK KwkJCQkiJHRlbXBkaXIvY29tcHJlc3Npb25fbHo0X3BsYWluX2Zvcm1hdC5zcWwubHo0IiwKKwkJ CQkiJHRlbXBkaXIvY29tcHJlc3Npb25fbHo0X3BsYWluX2Zvcm1hdC5zcWwiLAorCQkJXSwKKwkJ fQogCX0sCiAJY2xlYW4gPT4gewogCQlkdW1wX2NtZCA9PiBbCkBAIC0zODk5LDIxICszOTg5LDI4 IEBAIGZvcmVhY2ggbXkgJHJ1biAoc29ydCBrZXlzICVwZ2R1bXBfcnVucykKIAlteSAkdGVzdF9r ZXkgPSAkcnVuOwogCW15ICRydW5fZGIgICA9ICdwb3N0Z3Jlcyc7CiAKLQlteSAkc3VwcG9ydHNf Y29tcHJlc3Npb24gPSBjaGVja19wZ19jb25maWcoIiNkZWZpbmUgSEFWRV9MSUJaIDEiKTsKLQlt eSAkY29tcHJlc3NfcHJvZ3JhbSA9ICRFTlZ7R1pJUF9QUk9HUkFNfTsKKwlteSAkZ3ppcF9wcm9n cmFtID0gZGVmaW5lZCgkRU5We0daSVBfUFJPR1JBTX0pICYmICRFTlZ7R1pJUF9QUk9HUkFNfSBu ZSAnJzsKKwlteSAkbHo0X3Byb2dyYW0gPSBkZWZpbmVkKCRFTlZ7TFo0fSkgJiYgJEVOVntMWjR9 IG5lICcnOworCW15ICRzdXBwb3J0c19nemlwID0gY2hlY2tfcGdfY29uZmlnKCIjZGVmaW5lIEhB VkVfTElCWiAxIik7CisJbXkgJHN1cHBvcnRzX2NvbXByZXNzaW9uID0gY2hlY2tfcGdfY29uZmln KCIjZGVmaW5lIEhBVkVfTElCWiAxIikgfHwKKwkJCQkJCQkgICAkc3VwcG9ydHNfbHo0OwogCiAJ JG5vZGUtPmNvbW1hbmRfb2soXEB7ICRwZ2R1bXBfcnVuc3skcnVufS0+e2R1bXBfY21kfSB9LAog CQkiJHJ1bjogcGdfZHVtcCBydW5zIik7CiAKLQlpZiAoZGVmaW5lZCgkcGdkdW1wX3J1bnN7JHJ1 bn0tPntjb21wcmVzc19jbWR9KSkKKwlpZiAoZGVmaW5lZCgkcGdkdW1wX3J1bnN7JHJ1bn0tPnsn Y29tcHJlc3Npb24nfSkpCiAJewogCQkjIFNraXAgY29tcHJlc3Npb25fY21kIHRlc3RzIHdoZW4g Y29tcHJlc3Npb24gaXMgbm90IHN1cHBvcnRlZCwKIAkJIyBhcyB0aGUgcmVzdWx0IGlzIHVuY29t cHJlc3NlZCBvciB0aGUgdXRpbGl0eSBwcm9ncmFtIGRvZXMgbm90CiAJCSMgZXhpc3QKLQkJbmV4 dCBpZiAhJHN1cHBvcnRzX2NvbXByZXNzaW9uIHx8ICFkZWZpbmVkKCRjb21wcmVzc19wcm9ncmFt KQotCQkJCXx8ICRjb21wcmVzc19wcm9ncmFtIGVxICcnOwotCQljb21tYW5kX29rKCBcQHsgJHBn ZHVtcF9ydW5zeyRydW59LT57Y29tcHJlc3NfY21kfSB9LAotCQkJIiRydW46IGNvbXByZXNzaW9u IGNvbW1hbmRzIik7CisJCW5leHQgaWYgISRzdXBwb3J0c19jb21wcmVzc2lvbjsKKworCQlteSAo JGNvbXByZXNzaW9uKSA9ICRwZ2R1bXBfcnVuc3skcnVufS0+eydjb21wcmVzc2lvbid9OworCisJ CW5leHQgaWYgJHtjb21wcmVzc2lvbn0tPnttZXRob2R9IGVxICdnemlwJyAmJiAoISRnemlwX3By b2dyYW0gfHwgISRzdXBwb3J0c19nemlwKTsKKwkJbmV4dCBpZiAke2NvbXByZXNzaW9ufS0+e21l dGhvZH0gZXEgJ2x6NCcgICYmICghJGx6NF9wcm9ncmFtIHx8ICEkc3VwcG9ydHNfbHo0KTsKKwor CQljb21tYW5kX29rKCBcQHsgJGNvbXByZXNzaW9uLT57Y21kfSB9LCAiJHJ1bjogY29tcHJlc3Np b24gY29tbWFuZHMiKTsKIAl9CiAKIAlpZiAoJHBnZHVtcF9ydW5zeyRydW59LT57cmVzdG9yZV9j bWR9KQotLSAKMi4zMi4wCgo= --b1_cADRPmeDoX6AM1R6STGitpaiAUC2FNS8QAxyE4lpG4--