From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B5855CA0EFA for ; Mon, 25 Aug 2025 11:16:33 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uqVAk-0007Uu-Ms; Mon, 25 Aug 2025 07:15:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uqVAj-0007Ue-5I for grub-devel@gnu.org; Mon, 25 Aug 2025 07:15:33 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uqVAe-0003ea-66 for grub-devel@gnu.org; Mon, 25 Aug 2025 07:15:32 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57ONorJ2025704; Mon, 25 Aug 2025 11:15:22 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pp1; bh=w8oARX udyXUDw+m5L8VLUrbLC+IvsBgGc+/teibydCM=; b=VTJsBNAjhg8FwBzLvUdBzT x3HkSs005bFyr7MQk+u2pGtZtXmAiqibQqPCtAjpa/eCTAumdhbtG1Xv6RYHrgTp 4j0S2VRp14J0kw02pmEszZ+vUUi7lvgZ8YMmDsl/jNr8y5GviO8GlhYj5gcYV5JA ADFMq3twcRInpwFdGQLF/gQGcP0+xrWFXk55ydQZbiC7hNZVram4afk6Fb8k1pxZ IFYd7CdRoVpx/j5HqikEy16y7SXpSiclnmzOlWTcBfM7pHCtzjWKEuZSaZB4lTA3 Ic6tB9pwmQOabvKVRAYxqL7gZuU4N9kDVP3aPg9NDnlOrwfJH+YmhGcQ+3E886Hg == Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 48q974yvcm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 25 Aug 2025 11:15:21 +0000 (GMT) Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 57PB927U002469; Mon, 25 Aug 2025 11:15:20 GMT Received: from smtprelay07.fra02v.mail.ibm.com ([9.218.2.229]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 48qt6m597u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 25 Aug 2025 11:15:20 +0000 Received: from smtpav03.fra02v.mail.ibm.com (smtpav03.fra02v.mail.ibm.com [10.20.54.102]) by smtprelay07.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 57PBFHH353346566 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 25 Aug 2025 11:15:17 GMT Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 0301520043; Mon, 25 Aug 2025 11:15:17 +0000 (GMT) Received: from smtpav03.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 71EFB20040; Mon, 25 Aug 2025 11:15:14 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.23.29]) by smtpav03.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 25 Aug 2025 11:15:14 +0000 (GMT) From: Sudhakar Kuppusamy To: grub-devel@gnu.org Cc: dja@axtens.net, jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, nayna@linux.ibm.com, ssrish@linux.ibm.com, Sudhakar Kuppusamy , sridharm@linux.ibm.com Subject: [PATCH v9 10/21] appended signatures: Support verifying appended signatures Date: Mon, 25 Aug 2025 16:38:32 +0530 Message-Id: <20250825110843.82675-11-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250825110843.82675-1-sudhakar@linux.ibm.com> References: <20250825110843.82675-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: MI9zDPhA-EDhfD58pew36Zl-en6XGhxk X-Proofpoint-ORIG-GUID: MI9zDPhA-EDhfD58pew36Zl-en6XGhxk X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIzMDA3MSBTYWx0ZWRfX2V4NAF9ezWHJ WdJNbf0pUQ+EyWaIxVFoP6SkOAjpLBt3gxSydNIASXDV+ItUveFdBM5VQyubxWfBq85RIjpoScs FY3ls/h+Nk+5P/of8cXhvR7LhU8LYXHW44S+96cugp6x++DPW7gRDanIznordg8MVA10wHa94kT XW5Mr0FUzqB0nFFKx36EC0pvqs+IvxDMa3Ml++4K7Qa51Nr1ap4Y9DwnLbCaRt/2wX+RuUULHCl xE3IRguNcXyRpAZTCRZVREjdOwPDr8hs/UVwBmppAKcU2yJsn1tbHeT5v1ELK5GwkRI79QKDUTx ZIAAQ9goiXmGrujVSdlkrteqs2KuBf+thwbKEJ6zJ/wBLsntI7E1/Qt2BqtPTjMfgr7NxEJJcdT 4qEh926c X-Authority-Analysis: v=2.4 cv=RtDFLDmK c=1 sm=1 tr=0 ts=68ac45c9 cx=c_pps a=AfN7/Ok6k8XGzOShvHwTGQ==:117 a=AfN7/Ok6k8XGzOShvHwTGQ==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=mDV3o1hIAAAA:8 a=JuTF4qcAAAAA:8 a=VnNF1IyMAAAA:8 a=5Rdm4BPNPBIy8VqX_I8A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=WlT8qwTXB_Kj6um4hl3b:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-25_05,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 malwarescore=0 spamscore=0 priorityscore=1501 bulkscore=0 clxscore=1015 phishscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508230071 Received-SPF: pass client-ip=148.163.156.1; envelope-from=sudhakar@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org QnVpbGRpbmcgb24gdGhlIHBhcnNlcnMgYW5kIHRoZSBhYmlsaXR5IHRvIGVtYmVkIFguNTA5IGNl cnRpZmljYXRlcywgYXMKd2VsbCBhcyB0aGUgZXhpc3RpbmcgZ2NyeXB0IGZ1bmN0aW9uYWxpdHks IGFkZCBhIG1vZHVsZSBmb3IgdmVyaWZ5aW5nCmFwcGVuZGVkIHNpZ25hdHVyZXMuCgpUaGlzIGlu Y2x1ZGVzIGEgc2lnbmF0dXJlIHZlcmlmaWVyIHRoYXQgcmVxdWlyZXMgdGhhdCB0aGUgTGludXgg a2VybmVsIGFuZApHUlVCIG1vZHVsZXMgaGF2ZSBhcHBlbmRlZCBzaWduYXR1cmVzIGZvciB2ZXJp ZmljYXRpb24uCgpTaWduYXR1cmUgdmVyaWZpY2F0aW9uIG11c3QgYmUgZW5hYmxlZCBieSBzZXR0 aW5nIGNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMuCklmIHNlY3VyZSBib290IGlzIGVuYWJsZWQg d2l0aCBlbmZvcmNlZCBtb2RlIHdoZW4gdGhlIGFwcGVuZGVkc2lnCm1vZHVsZSBpcyBsb2FkZWQs IHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gd2lsbCBiZSBlbmFibGVkLCBhbmQgdHJ1c3RlZAprZXlz IHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIEdSVUIgRUxGIE5vdGUgYW5kIHN0b3JlZCBpbiB0 aGUgZGIgYW5kCmxvY2tlZCBhdXRvbWF0aWNhbGx5LgoKU2lnbmVkLW9mZi1ieTogRGFuaWVsIEF4 dGVucyA8ZGphQGF4dGVucy5uZXQ+ClNpZ25lZC1vZmYtYnk6IFN1ZGhha2FyIEt1cHB1c2FteSA8 c3VkaGFrYXJAbGludXguaWJtLmNvbT4KLS0tCiBncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYg ICAgICAgICAgICAgICAgICB8ICAxNSArCiBncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcv YXBwZW5kZWRzaWcuYyB8IDU5NyArKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2dydWIvZXJy LmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArLQogaW5jbHVkZS9ncnViL2ZpbGUu aCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogNCBmaWxlcyBjaGFuZ2VkLCA2MTYg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdydWItY29y ZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCgpkaWZmIC0tZ2l0IGEvZ3J1Yi1j b3JlL01ha2VmaWxlLmNvcmUuZGVmIGIvZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmCmluZGV4 IGI3MmYzMjJiMS4uZDkxNjk0ZGUwIDEwMDY0NAotLS0gYS9ncnViLWNvcmUvTWFrZWZpbGUuY29y ZS5kZWYKKysrIGIvZ3J1Yi1jb3JlL01ha2VmaWxlLmNvcmUuZGVmCkBAIC05ODAsNiArOTgwLDIx IEBAIG1vZHVsZSA9IHsKICAgY3BwZmxhZ3MgPSAnJChDUFBGTEFHU19HQ1JZKSc7CiB9OwogCitt b2R1bGUgPSB7CisgIG5hbWUgPSBhcHBlbmRlZHNpZzsKKyAgY29tbW9uID0gY29tbWFuZHMvYXBw ZW5kZWRzaWcvYXBwZW5kZWRzaWcuYzsKKyAgY29tbW9uID0gY29tbWFuZHMvYXBwZW5kZWRzaWcv eDUwOS5jOworICBjb21tb24gPSBjb21tYW5kcy9hcHBlbmRlZHNpZy9wa2NzNy5jOworICBjb21t b24gPSBjb21tYW5kcy9hcHBlbmRlZHNpZy9hc24xdXRpbC5jOworICBjb21tb24gPSBjb21tYW5k cy9hcHBlbmRlZHNpZy9nbnV0bHNfYXNuMV90YWIuYzsKKyAgY29tbW9uID0gY29tbWFuZHMvYXBw ZW5kZWRzaWcvcGtpeF9hc24xX3RhYi5jOworICBlbmFibGUgPSBlbXU7CisgIGVuYWJsZSA9IHBv d2VycGNfaWVlZTEyNzU7CisgIGNmbGFncyA9ICckKENGTEFHU19HQ1JZKSAtV25vLXJlZHVuZGFu dC1kZWNscyc7CisgIGNwcGZsYWdzID0gJyQoQ1BQRkxBR1NfR0NSWSkgLUkkKHNyY2RpcikvbGli L2xpYnRhc24xLWdydWInOworICBkZXBlbmRzID0gY3J5cHRvLCBnY3J5X3JzYSwgZ2NyeV9zaGEy NTYsIGdjcnlfc2hhNTEyLCBtcGksIGFzbjE7Cit9OworCiBtb2R1bGUgPSB7CiAgIG5hbWUgPSBo ZHBhcm07CiAgIGNvbW1vbiA9IGNvbW1hbmRzL2hkcGFybS5jOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1j b3JlL2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMgYi9ncnViLWNvcmUvY29tbWFu ZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAuLjVlYjdiNzY4YQotLS0gL2Rldi9udWxsCisrKyBiL2dydWItY29yZS9jb21tYW5k cy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCkBAIC0wLDAgKzEsNTk3IEBACisvKgorICogIEdS VUIgIC0tICBHUmFuZCBVbmlmaWVkIEJvb3Rsb2FkZXIKKyAqICBDb3B5cmlnaHQgKEMpIDIwMjAs IDIwMjEsIDIwMjIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgKiAgQ29weXJpZ2h0 IChDKSAyMDIwLCAyMDIxLCAyMDIyLCAyMDI1IElCTSBDb3Jwb3JhdGlvbgorICoKKyAqICBHUlVC IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgR1JVQiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg KiAgYWxvbmcgd2l0aCBHUlVCLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxncnViL3R5cGVzLmg+CisjaW5jbHVkZSA8Z3J1Yi9t aXNjLmg+CisjaW5jbHVkZSA8Z3J1Yi9tbS5oPgorI2luY2x1ZGUgPGdydWIvZXJyLmg+CisjaW5j bHVkZSA8Z3J1Yi9kbC5oPgorI2luY2x1ZGUgPGdydWIvZmlsZS5oPgorI2luY2x1ZGUgPGdydWIv Y29tbWFuZC5oPgorI2luY2x1ZGUgPGdydWIvY3J5cHRvLmg+CisjaW5jbHVkZSA8Z3J1Yi9pMThu Lmg+CisjaW5jbHVkZSA8Z3J1Yi9nY3J5cHQvZ2NyeXB0Lmg+CisjaW5jbHVkZSA8Z3J1Yi9rZXJu ZWwuaD4KKyNpbmNsdWRlIDxncnViL2V4dGNtZC5oPgorI2luY2x1ZGUgPGdydWIvdmVyaWZ5Lmg+ CisjaW5jbHVkZSA8bGlidGFzbjEuaD4KKyNpbmNsdWRlIDxncnViL2Vudi5oPgorI2luY2x1ZGUg PGdydWIvbG9ja2Rvd24uaD4KKworI2luY2x1ZGUgImFwcGVuZGVkc2lnLmgiCisKK0dSVUJfTU9E X0xJQ0VOU0UgKCJHUEx2MysiKTsKKworLyogTWF4IHNpemUgb2YgaGFzaCBkYXRhLiAqLworI2Rl ZmluZSBNQVhfSEFTSF9TSVpFICAgICAgNjQKKworLyogUHVibGljIGtleSB0eXBlLiAqLworI2Rl ZmluZSBQS0VZX0lEX1BLQ1M3ICAgICAgMgorCisvKiBBcHBlbmRlZCBzaWduYXR1cmUgbWFnaWMg c3RyaW5nIGFuZCBzaXplLiAqLworI2RlZmluZSBTSUdfTUFHSUMgICAgICAgICAgIn5Nb2R1bGUg c2lnbmF0dXJlIGFwcGVuZGVkflxuIgorI2RlZmluZSBTSUdfTUFHSUNfU0laRSAgICAgKChzaXpl b2YoU0lHX01BR0lDKSAtIDEpKQorCisvKgorICogVGhpcyBzdHJ1Y3R1cmUgaXMgZXh0cmFjdGVk IGZyb20gc2NyaXB0cy9zaWduLWZpbGUuYyBpbiB0aGUgbGludXgga2VybmVsCisgKiBzb3VyY2Uu IEl0IHdhcyBsaWNlbnNlZCBhcyBMR1BMdjIuMSssIHdoaWNoIGlzIEdQTHYzKyBjb21wYXRpYmxl LgorICovCitzdHJ1Y3QgbW9kdWxlX3NpZ25hdHVyZQoreworICBncnViX3VpbnQ4X3QgYWxnbzsg ICAgICAgLyogUHVibGljLWtleSBjcnlwdG8gYWxnb3JpdGhtIFswXS4gKi8KKyAgZ3J1Yl91aW50 OF90IGhhc2g7ICAgICAgIC8qIERpZ2VzdCBhbGdvcml0aG0gWzBdLiAqLworICBncnViX3VpbnQ4 X3QgaWRfdHlwZTsgICAgLyogS2V5IGlkZW50aWZpZXIgdHlwZSBbR1JVQl9QS0VZX0lEX1BLQ1M3 XS4gKi8KKyAgZ3J1Yl91aW50OF90IHNpZ25lcl9sZW47IC8qIExlbmd0aCBvZiBzaWduZXIncyBu YW1lIFswXS4gKi8KKyAgZ3J1Yl91aW50OF90IGtleV9pZF9sZW47IC8qIExlbmd0aCBvZiBrZXkg aWRlbnRpZmllciBbMF0uICovCisgIGdydWJfdWludDhfdCBfX3BhZFszXTsKKyAgZ3J1Yl91aW50 MzJfdCBzaWdfbGVuOyAgIC8qIExlbmd0aCBvZiBzaWduYXR1cmUgZGF0YS4gKi8KK30gR1JVQl9Q QUNLRUQ7CisKKyNkZWZpbmUgU0lHX01FVEFEQVRBX1NJWkUgIChzaXplb2YgKHN0cnVjdCBtb2R1 bGVfc2lnbmF0dXJlKSkKKyNkZWZpbmUgQVBQRU5ERURfU0lHX1NJWkUocGtjczdfZGF0YV9zaXpl KSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAocGtjczdfZGF0YV9zaXplICsgU0lHX01B R0lDX1NJWkUgKyBTSUdfTUVUQURBVEFfU0laRSkKKworLyogVGhpcyByZXByZXNlbnRzIGFuIGVu dGlyZSwgcGFyc2VkLCBhcHBlbmRlZCBzaWduYXR1cmUuICovCitzdHJ1Y3QgZ3J1Yl9hcHBlbmRl ZF9zaWduYXR1cmUKK3sKKyAgZ3J1Yl9zaXplX3Qgc2lnbmF0dXJlX2xlbjsgICAgICAgICAgICAv KiBMZW5ndGggb2YgUEtDUyM3IGRhdGEgKyBtZXRhZGF0YSArIG1hZ2ljLiAqLworICBzdHJ1Y3Qg bW9kdWxlX3NpZ25hdHVyZSBzaWdfbWV0YWRhdGE7IC8qIE1vZHVsZSBzaWduYXR1cmUgbWV0YWRh dGEuICovCisgIHN0cnVjdCBwa2NzN19zaWduZWREYXRhIHBrY3M3OyAgICAgICAgLyogUGFyc2Vk IFBLQ1MjNyBkYXRhLiAqLworfTsKKworLyogVGhpcyByZXByZXNlbnRzIGEgdHJ1c3RlZCBjZXJ0 aWZpY2F0ZXMuICovCitzdHJ1Y3QgZ3J1Yl9kYXRhYmFzZQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0 aWZpY2F0ZSAqY2VydHM7IC8qIENlcnRpZmljYXRlcy4gKi8KKyAgZ3J1Yl91aW50MzJfdCBjZXJ0 X2VudHJpZXM7ICAgICAvKiBOdW1iZXIgb2YgY2VydGlmaWNhdGVzLiAqLworfTsKKworLyogVGhl IGRiIGxpc3QgaXMgdXNlZCB0byB2YWxpZGF0ZSBhcHBlbmRlZCBzaWduYXR1cmVzLiAqLworc3Ry dWN0IGdydWJfZGF0YWJhc2UgZGIgPSB7LmNlcnRzID0gTlVMTCwgLmNlcnRfZW50cmllcyA9IDB9 OworCisvKgorICogU2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmbGFnIChjaGVja19zaWdzKS4KKyAq IGNoZWNrX3NpZ3M6IGZhbHNlCisgKiAgLSBObyBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLiBUaGlz IGlzIHRoZSBkZWZhdWx0LgorICogY2hlY2tfc2lnczogdHJ1ZQorICogIC0gRW5mb3JjZSBzaWdu YXR1cmUgdmVyaWZpY2F0aW9uLCBhbmQgaWYgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBmYWlscywK KyAqICAgIHBvc3QgdGhlIGVycm9ycyBhbmQgc3RvcCB0aGUgYm9vdC4KKyAqLworc3RhdGljIGJv b2wgY2hlY2tfc2lncyA9IGZhbHNlOworCitzdGF0aWMgZ3J1Yl9zc2l6ZV90Citwc2V1ZG9fcmVh ZCAoc3RydWN0IGdydWJfZmlsZSAqZmlsZSwgY2hhciAqYnVmLCBncnViX3NpemVfdCBsZW4pCit7 CisgIGdydWJfbWVtY3B5IChidWYsIChncnViX3VpbnQ4X3QgKikgZmlsZS0+ZGF0YSArIGZpbGUt Pm9mZnNldCwgbGVuKTsKKyAgcmV0dXJuIGxlbjsKK30KKworLyogRmlsZXN5c3RlbSBkZXNjcmlw dG9yLiAqLworc3RhdGljIHN0cnVjdCBncnViX2ZzIHBzZXVkb19mcyA9IHsKKyAgLm5hbWUgPSAi cHNldWRvIiwKKyAgLmZzX3JlYWQgPSBwc2V1ZG9fcmVhZAorfTsKKworc3RhdGljIHZvaWQKK2Fk ZF9jZXJ0X2ZpbmdlcnByaW50IChjb25zdCBncnViX3VpbnQ4X3QgKmRhdGEsIGNvbnN0IGdydWJf c2l6ZV90IGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeDUwOV9jZXJ0 aWZpY2F0ZSAqY29uc3QgY2VydCkKK3sKKyAgZ2NyeV9tZF9zcGVjX3QgKmhhc2hfZnVuYyA9IE5V TEw7CisKKyAgLyogQWRkIFNIQTI1NiBoYXNoIG9mIGNlcnRpZmljYXRlLiAqLworICBoYXNoX2Z1 bmMgPSAmX2djcnlfZGlnZXN0X3NwZWNfc2hhMjU2OworICBncnViX21lbXNldCAoJmNlcnQtPmZp bmdlcnByaW50WzBdLCAwLCBNQVhfSEFTSF9TSVpFKTsKKyAgZ3J1Yl9jcnlwdG9faGFzaCAoaGFz aF9mdW5jLCAmY2VydC0+ZmluZ2VycHJpbnRbMF0sIGRhdGEsIGRhdGFfc2l6ZSk7Cit9CisKK3N0 YXRpYyBib29sCitpc19jZXJ0X21hdGNoIChjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAq Y2VydDEsIGNvbnN0IHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpjZXJ0MikKK3sKKyAgaWYgKGdy dWJfbWVtY21wIChjZXJ0MS0+c3ViamVjdCwgY2VydDItPnN1YmplY3QsIGNlcnQyLT5zdWJqZWN0 X2xlbikgPT0gMAorICAgICAgJiYgZ3J1Yl9tZW1jbXAgKGNlcnQxLT5pc3N1ZXIsIGNlcnQyLT5p c3N1ZXIsIGNlcnQyLT5pc3N1ZXJfbGVuKSA9PSAwCisgICAgICAmJiBncnViX21lbWNtcCAoY2Vy dDEtPnNlcmlhbCwgY2VydDItPnNlcmlhbCwgY2VydDItPnNlcmlhbF9sZW4pID09IDAKKyAgICAg ICYmIGdydWJfbWVtY21wIChjZXJ0MS0+bXBpc1swXSwgY2VydDItPm1waXNbMF0sIHNpemVvZiAo Y2VydDItPm1waXNbMF0pKSA9PSAwCisgICAgICAmJiBncnViX21lbWNtcCAoY2VydDEtPm1waXNb MV0sIGNlcnQyLT5tcGlzWzFdLCBzaXplb2YgKGNlcnQyLT5tcGlzWzFdKSkgPT0gMAorICAgICAg JiYgZ3J1Yl9tZW1jbXAgKGNlcnQxLT5maW5nZXJwcmludFswXSwgY2VydDItPmZpbmdlcnByaW50 WzBdLCAzMikgPT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKKworICByZXR1cm4gZmFsc2U7Cit9CisK K3N0YXRpYyBib29sCitpc19jZXJ0X3ByZXNlbnRfaW5fZGIgKGNvbnN0IHN0cnVjdCB4NTA5X2Nl cnRpZmljYXRlICpjZXJ0X2luKQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsK KworICBmb3IgKGNlcnQgPSBkYi5jZXJ0czsgY2VydCAhPSBOVUxMOyBjZXJ0ID0gY2VydC0+bmV4 dCkKKyAgICBpZiAoaXNfY2VydF9tYXRjaCAoY2VydCwgY2VydF9pbikgPT0gdHJ1ZSkKKyAgICAg IHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxzZTsKK30KKworLyogQWRkIHRoZSBjZXJ0aWZp Y2F0ZSBpbnRvIHRoZSBkYiBsaXN0ICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorYWRkX2NlcnRpZmlj YXRlIChjb25zdCBncnViX3VpbnQ4X3QgKmRhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGRhdGFfc2l6 ZSwKKyAgICAgICAgICAgICAgICAgc3RydWN0IGdydWJfZGF0YWJhc2UgKmRhdGFiYXNlKQorewor ICBncnViX2Vycl90IHJjOworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKKworICBp ZiAoZGF0YSA9PSBOVUxMIHx8IGRhdGFfc2l6ZSA9PSAwKQorICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsICJjZXJ0aWZpY2F0ZSBkYXRhIG9yIHNpemUgaXMgbm90 IGF2YWlsYWJsZSIpOworCisgIGNlcnQgPSBncnViX3phbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgeDUw OV9jZXJ0aWZpY2F0ZSkpOworICBpZiAoY2VydCA9PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vy cm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAib3V0IG9mIG1lbW9yeSIpOworCisgIHJjID0g cGFyc2VfeDUwOV9jZXJ0aWZpY2F0ZSAoZGF0YSwgZGF0YV9zaXplLCBjZXJ0KTsKKyAgaWYgKHJj ICE9IEdSVUJfRVJSX05PTkUpCisgICAgeworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRz aWciLCAiY2Fubm90IGFkZCBhIGNlcnRpZmljYXRlIENOPSclcycgdG8gdGhlIGRiIGxpc3RcbiIs CisgICAgICAgICAgICAgICAgICAgIGNlcnQtPnN1YmplY3QpOworICAgICAgZ3J1Yl9mcmVlIChj ZXJ0KTsKKyAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgYWRkX2NlcnRfZmluZ2VycHJpbnQg KGRhdGEsIGRhdGFfc2l6ZSwgY2VydCk7CisKKyAgaWYgKGlzX2NlcnRfcHJlc2VudF9pbl9kYiAo Y2VydCkgPT0gdHJ1ZSkKKyAgICB7CisgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIs CisgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYWRkIGEgY2VydGlmaWNhdGUgQ049JyVzJywg YXMgaXQgaXMgcHJlc2VudCBpbiB0aGUgZGIgbGlzdCIsCisgICAgICAgICAgICAgICAgICAgIGNl cnQtPnN1YmplY3QpOworICAgICAgY2VydGlmaWNhdGVfcmVsZWFzZSAoY2VydCk7CisgICAgICBn cnViX2ZyZWUgKGNlcnQpOworCisgICAgICByZXR1cm4gR1JVQl9FUlJfRVhJU1RTOworICAgIH0K KworICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJhZGRlZCBhIGNlcnRpZmljYXRlIENO PSclcycgdG8gdGhlIGRiIGxpc3RcbiIsCisgICAgICAgICAgICAgICAgY2VydC0+c3ViamVjdCk7 CisKKyAgY2VydC0+bmV4dCA9IGRhdGFiYXNlLT5jZXJ0czsKKyAgZGF0YWJhc2UtPmNlcnRzID0g Y2VydDsKKyAgZGF0YWJhc2UtPmNlcnRfZW50cmllcysrOworCisgIHJldHVybiByYzsKK30KKwor c3RhdGljIGdydWJfZXJyX3QKK2ZpbGVfcmVhZF93aG9sZSAoZ3J1Yl9maWxlX3QgZmlsZSwgZ3J1 Yl91aW50OF90ICoqYnVmLCBncnViX3NpemVfdCAqbGVuKQoreworICBncnViX29mZl90IGZ1bGxf ZmlsZV9zaXplOworICBncnViX3NpemVfdCBmaWxlX3NpemUsIHRvdGFsX3JlYWRfc2l6ZSA9IDA7 CisgIGdydWJfc3NpemVfdCByZWFkX3NpemU7CisKKyAgZnVsbF9maWxlX3NpemUgPSBncnViX2Zp bGVfc2l6ZSAoZmlsZSk7CisgIGlmIChmdWxsX2ZpbGVfc2l6ZSA9PSBHUlVCX0ZJTEVfU0laRV9V TktOT1dOKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCisg ICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgcmVhZCBhIGZpbGUgb2YgdW5rbm93biBzaXpl IGludG8gYSBidWZmZXIiKTsKKworICBpZiAoZnVsbF9maWxlX3NpemUgPiBHUlVCX1NJWkVfTUFY KQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsCisgICAgICAg ICAgICAgICAgICAgICAgICJmaWxlIGlzIHRvbyBsYXJnZSB0byByZWFkOiAlIiBQUkl1R1JVQl9P RkZTRVQgIiBieXRlcyIsCisgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfZmlsZV9zaXplKTsK KworICBmaWxlX3NpemUgPSAoZ3J1Yl9zaXplX3QpIGZ1bGxfZmlsZV9zaXplOworICAqYnVmID0g Z3J1Yl9tYWxsb2MgKGZpbGVfc2l6ZSk7CisgIGlmICgqYnVmID09IE5VTEwpCisgICAgcmV0dXJu IGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAg ICAgICJjb3VsZCBub3QgYWxsb2NhdGUgZmlsZSBkYXRhIGJ1ZmZlciBzaXplICUiIFBSSXVHUlVC X1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSk7CisKKyAgd2hpbGUgKHRv dGFsX3JlYWRfc2l6ZSA8IGZpbGVfc2l6ZSkKKyAgICB7CisgICAgICByZWFkX3NpemUgPSBncnVi X2ZpbGVfcmVhZCAoZmlsZSwgKmJ1ZiArIHRvdGFsX3JlYWRfc2l6ZSwgZmlsZV9zaXplIC0gdG90 YWxfcmVhZF9zaXplKTsKKyAgICAgIGlmIChyZWFkX3NpemUgPCAwKQorICAgICAgICB7CisgICAg ICAgICAgZ3J1Yl9mcmVlICgqYnVmKTsKKyAgICAgICAgICByZXR1cm4gZ3J1Yl9lcnJubzsKKyAg ICAgICAgfQorICAgICAgZWxzZSBpZiAocmVhZF9zaXplID09IDApCisgICAgICAgIHsKKyAgICAg ICAgICBncnViX2ZyZWUgKCpidWYpOworICAgICAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVC X0VSUl9JTywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCByZWFkIGZ1 bGwgZmlsZSBzaXplICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiglIiBQUkl1R1JV Ql9TSVpFICIpLCBvbmx5ICUiIFBSSXVHUlVCX1NJWkUgIiBieXRlcyByZWFkIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplLCB0b3RhbF9yZWFkX3NpemUpOworICAgICAg ICB9CisKKyAgICAgIHRvdGFsX3JlYWRfc2l6ZSArPSByZWFkX3NpemU7CisgICAgfQorCisgICps ZW4gPSBmaWxlX3NpemU7CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9CisKK3N0YXRpYyBn cnViX2Vycl90CitleHRyYWN0X2FwcGVuZGVkX3NpZ25hdHVyZSAoY29uc3QgZ3J1Yl91aW50OF90 ICpidWYsIGdydWJfc2l6ZV90IGJ1ZnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGdydWJfYXBwZW5kZWRfc2lnbmF0dXJlICpzaWcpCit7CisgIGdydWJfc2l6ZV90IGFw cGVuZGVkc2lnX3BrY3M3X3NpemU7CisgIGdydWJfc2l6ZV90IHNpZ25lZF9kYXRhX3NpemUgPSBi dWZzaXplOworICBjb25zdCBncnViX3VpbnQ4X3QgKnNpZ25lZF9kYXRhID0gYnVmOworCisgIGlm IChzaWduZWRfZGF0YV9zaXplIDwgU0lHX01BR0lDX1NJWkUpCisgICAgcmV0dXJuIGdydWJfZXJy b3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRVUkUsICJmaWxlIHRvbyBzaG9ydCBmb3Igc2lnbmF0dXJl IG1hZ2ljIik7CisKKyAgLyogRmFzdC1mb3J3YXJkaW5nIHBvaW50ZXIgYW5kIGdldCBzaWduYXR1 cmUgbWFnaWMgc3RyaW5nLiAqLworICBzaWduZWRfZGF0YSArPSBzaWduZWRfZGF0YV9zaXplIC0g U0lHX01BR0lDX1NJWkU7CisgIGlmIChncnViX3N0cm5jbXAgKChjb25zdCBjaGFyICopIHNpZ25l ZF9kYXRhLCBTSUdfTUFHSUMsIFNJR19NQUdJQ19TSVpFKSkKKyAgICByZXR1cm4gZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwgIm1pc3Npbmcgb3IgaW52YWxpZCBzaWduYXR1cmUg bWFnaWMiKTsKKworICBzaWduZWRfZGF0YV9zaXplIC09IFNJR19NQUdJQ19TSVpFOworICBpZiAo c2lnbmVkX2RhdGFfc2l6ZSA8IFNJR19NRVRBREFUQV9TSVpFKQorICAgIHJldHVybiBncnViX2Vy cm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAiZmlsZSB0b28gc2hvcnQgZm9yIHNpZ25hdHVy ZSBtZXRhZGF0YSIpOworCisgIC8qIFJld2luZCBwb2ludGVyIGFuZCBleHRyYWN0IHNpZ25hdHVy ZSBtZXRhZGF0YS4gKi8KKyAgc2lnbmVkX2RhdGEgLT0gU0lHX01FVEFEQVRBX1NJWkU7CisgIGdy dWJfbWVtY3B5ICgmKHNpZy0+c2lnX21ldGFkYXRhKSwgc2lnbmVkX2RhdGEsIFNJR19NRVRBREFU QV9TSVpFKTsKKworICBpZiAoc2lnLT5zaWdfbWV0YWRhdGEuaWRfdHlwZSAhPSBQS0VZX0lEX1BL Q1M3KQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAid3Jv bmcgc2lnbmF0dXJlIHR5cGUiKTsKKworICBhcHBlbmRlZHNpZ19wa2NzN19zaXplID0gZ3J1Yl9i ZV90b19jcHUzMiAoc2lnLT5zaWdfbWV0YWRhdGEuc2lnX2xlbik7CisKKyAgc2lnbmVkX2RhdGFf c2l6ZSAtPSBTSUdfTUVUQURBVEFfU0laRTsKKyAgaWYgKGFwcGVuZGVkc2lnX3BrY3M3X3NpemUg PiBzaWduZWRfZGF0YV9zaXplKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURf U0lHTkFUVVJFLCAiZmlsZSB0b28gc2hvcnQgZm9yIFBLQ1MjNyBtZXNzYWdlIik7CisKKyAgZ3J1 Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAic2lnIGxlbiAlIiBQUkl1R1JVQl9TSVpFICJcbiIs IGFwcGVuZGVkc2lnX3BrY3M3X3NpemUpOworCisgIC8qIEFwcGVuZGVkIHNpZ25hdHVyZSBzaXpl LiAqLworICBzaWctPnNpZ25hdHVyZV9sZW4gPSBBUFBFTkRFRF9TSUdfU0laRSAoYXBwZW5kZWRz aWdfcGtjczdfc2l6ZSk7CisgIC8qIFJld2luZCBwb2ludGVyIGFuZCBwYXJzZSBhcHBlbmRlZCBw a2NzNyBkYXRhLiAqLworICBzaWduZWRfZGF0YSAtPSBhcHBlbmRlZHNpZ19wa2NzN19zaXplOwor CisgIHJldHVybiBwYXJzZV9wa2NzN19zaWduZWREYXRhIChzaWduZWRfZGF0YSwgYXBwZW5kZWRz aWdfcGtjczdfc2l6ZSwgJnNpZy0+cGtjczcpOworfQorCisvKgorICogR2l2ZW4gYSBoYXNoIHZh bHVlICdodmFsJywgb2YgaGFzaCBzcGVjaWZpY2F0aW9uICdoYXNoJywgcHJlcGFyZQorICogdGhl IFMtZXhwcmVzc2lvbnMgKHNleHApIGFuZCBwZXJmb3JtIHRoZSBzaWduYXR1cmUgdmVyaWZpY2F0 aW9uLgorICovCitzdGF0aWMgZ3J1Yl9lcnJfdAordmVyaWZ5X3NpZ25hdHVyZSAoY29uc3QgZ2Ny eV9tcGlfdCAqcGttcGksIGNvbnN0IGdjcnlfbXBpX3QgaG1waSwKKyAgICAgICAgICAgICAgICAg IGNvbnN0IGdjcnlfbWRfc3BlY190ICpoYXNoLCBjb25zdCBncnViX3VpbnQ4X3QgKmh2YWwpCit7 CisgIGdjcnlfc2V4cF90IGhzZXhwLCBwdWJrZXksIHNpZzsKKyAgZ3J1Yl9zaXplX3QgZXJyb2Y7 CisKKyAgaWYgKF9nY3J5X3NleHBfYnVpbGQgKCZoc2V4cCwgJmVycm9mLCAiKGRhdGEgKGZsYWdz ICVzKSAoaGFzaCAlcyAlYikpIiwgInBrY3MxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhh c2gtPm5hbWUsIGhhc2gtPm1kbGVuLCBodmFsKSAhPSBHUEdfRVJSX05PX0VSUk9SKQorICAgIHJl dHVybiBHUlVCX0VSUl9CQURfU0lHTkFUVVJFOworCisgIGlmIChfZ2NyeV9zZXhwX2J1aWxkICgm cHVia2V5LCAmZXJyb2YsICIocHVibGljLWtleSAoZHNhIChuICVNKSAoZSAlTSkpKSIsCisgICAg ICAgICAgICAgICAgICAgICAgICBwa21waVswXSwgcGttcGlbMV0pICE9IEdQR19FUlJfTk9fRVJS T1IpCisgICAgcmV0dXJuIEdSVUJfRVJSX0JBRF9TSUdOQVRVUkU7CisKKyAgaWYgKF9nY3J5X3Nl eHBfYnVpbGQgKCZzaWcsICZlcnJvZiwgIihzaWctdmFsIChyc2EgKHMgJU0pKSkiLCBobXBpKSAh PSBHUEdfRVJSX05PX0VSUk9SKQorICAgIHJldHVybiBHUlVCX0VSUl9CQURfU0lHTkFUVVJFOwor CisgIF9nY3J5X3NleHBfZHVtcCAoc2lnKTsKKyAgX2djcnlfc2V4cF9kdW1wIChoc2V4cCk7Cisg IF9nY3J5X3NleHBfZHVtcCAocHVia2V5KTsKKworICBpZiAoZ3J1Yl9jcnlwdG9fcGtfcnNhLT52 ZXJpZnkgKHNpZywgaHNleHAsIHB1YmtleSkgIT0gR1BHX0VSUl9OT19FUlJPUikKKyAgICByZXR1 cm4gR1JVQl9FUlJfQkFEX1NJR05BVFVSRTsKKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30K Kworc3RhdGljIGdydWJfZXJyX3QKK2dydWJfdmVyaWZ5X2FwcGVuZGVkX3NpZ25hdHVyZSAoY29u c3QgZ3J1Yl91aW50OF90ICpidWYsIGdydWJfc2l6ZV90IGJ1ZnNpemUpCit7CisgIGdydWJfZXJy X3QgZXJyOworICBncnViX3NpemVfdCBkYXRhc2l6ZTsKKyAgdm9pZCAqY29udGV4dDsKKyAgdW5z aWduZWQgY2hhciAqaGFzaDsKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKnBrOworICBzdHJ1 Y3QgZ3J1Yl9hcHBlbmRlZF9zaWduYXR1cmUgc2lnOworICBzdHJ1Y3QgcGtjczdfc2lnbmVySW5m byAqc2k7CisgIGdydWJfdWludDMyX3QgaTsKKworICBpZiAoIWRiLmNlcnRfZW50cmllcykKKyAg ICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwgIm5vIHRydXN0ZWQg a2V5cyB0byB2ZXJpZnkgYWdhaW5zdCIpOworCisgIGVyciA9IGV4dHJhY3RfYXBwZW5kZWRfc2ln bmF0dXJlIChidWYsIGJ1ZnNpemUsICZzaWcpOworICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUp CisgICAgcmV0dXJuIGVycjsKKworICBkYXRhc2l6ZSA9IGJ1ZnNpemUgLSBzaWcuc2lnbmF0dXJl X2xlbjsKKworICAvKiBWZXJpZnkgc2lnbmF0dXJlIHVzaW5nIHRydXN0ZWQga2V5cyBmcm9tIGRi IGxpc3QuICovCisgIGZvciAoaSA9IDA7IGkgPCBzaWcucGtjczcuc2lnbmVySW5mb19jb3VudDsg aSsrKQorICAgIHsKKyAgICAgIC8qCisgICAgICAgKiBUaGlzIGNvdWxkIGJlIG9wdGltaXNlZCBp biBhIGNvdXBsZSBvZiB3YXlzOgorICAgICAgICogLSB3ZSBjb3VsZCBvbmx5IGNvbXB1dGUgaGFz aGVzIG9uY2UgcGVyIGhhc2ggdHlwZS4KKyAgICAgICAqIC0gd2UgY291bGQgdHJhY2sgc2lnbmVy IGluZm9ybWF0aW9uIGFuZCBvbmx5IHZlcmlmeSB3aGVyZSBJRHMgbWF0Y2guCisgICAgICAgKiBG b3Igbm93IHdlIGRvIHRoZSBuYWl2ZSBPKHRydXN0ZWQga2V5cyAqIHBrY3M3IHNpZ25lcnMpIGFw cHJvYWNoLgorICAgICAgICovCisgICAgICBzaSA9ICZzaWcucGtjczcuc2lnbmVySW5mb3NbaV07 CisgICAgICBjb250ZXh0ID0gZ3J1Yl96YWxsb2MgKHNpLT5oYXNoLT5jb250ZXh0c2l6ZSk7Cisg ICAgICBpZiAoY29udGV4dCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gZ3J1Yl9lcnJubzsKKwor ICAgICAgc2ktPmhhc2gtPmluaXQgKGNvbnRleHQsIDApOworICAgICAgc2ktPmhhc2gtPndyaXRl IChjb250ZXh0LCBidWYsIGRhdGFzaXplKTsKKyAgICAgIHNpLT5oYXNoLT5maW5hbCAoY29udGV4 dCk7CisgICAgICBoYXNoID0gc2ktPmhhc2gtPnJlYWQgKGNvbnRleHQpOworCisgICAgICBncnVi X2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJkYXRhIHNpemUgJSIgUFJJdUdSVUJfU0laRSAiLCBz aWduZXIgJWQgaGFzaCAlMDJ4JTAyeCUwMnglMDJ4Li4uXG4iLAorICAgICAgICAgICAgICAgICAg ICBkYXRhc2l6ZSwgaSwgaGFzaFswXSwgaGFzaFsxXSwgaGFzaFsyXSwgaGFzaFszXSk7CisKKyAg ICAgIGZvciAocGsgPSBkYi5jZXJ0czsgcGsgIT0gTlVMTDsgcGsgPSBway0+bmV4dCkKKyAgICAg ICAgeworICAgICAgICAgIGVyciA9IHZlcmlmeV9zaWduYXR1cmUgKHBrLT5tcGlzLCBzaS0+c2ln X21waSwgc2ktPmhhc2gsIGhhc2gpOworICAgICAgICAgIGlmIChlcnIgPT0gR1JVQl9FUlJfTk9O RSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRz aWciLCAidmVyaWZ5IHNpZ25lciAlZCB3aXRoIGtleSAnJXMnIHN1Y2NlZWRlZFxuIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpLCBway0+c3ViamVjdCk7CisgICAgICAgICAgICAgIGJy ZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRz aWciLCAidmVyaWZ5IHNpZ25lciAlZCB3aXRoIGtleSAnJXMnIGZhaWxlZFxuIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgIGksIHBrLT5zdWJqZWN0KTsKKyAgICAgICAgfQorCisgICAgICBncnVi X2ZyZWUgKGNvbnRleHQpOworICAgICAgaWYgKGVyciA9PSBHUlVCX0VSUl9OT05FKQorICAgICAg ICBicmVhazsKKyAgICB9CisKKyAgcGtjczdfc2lnbmVkRGF0YV9yZWxlYXNlICgmc2lnLnBrY3M3 KTsKKworICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCisgICAgcmV0dXJuIGdydWJfZXJyb3Ig KGVyciwgImZhaWxlZCB0byB2ZXJpZnkgc2lnbmF0dXJlIGFnYWluc3QgYSB0cnVzdGVkIGtleSIp OworCisgIHJldHVybiBlcnI7Cit9CisKKy8qCisgKiBFeHRyYWN0IHRoZSBYLjUwOSBjZXJ0aWZp Y2F0ZXMgZnJvbSB0aGUgRUxGIE5vdGUgaGVhZGVyLAorICogcGFyc2UgaXQsIGFuZCBhZGQgaXQg dG8gdGhlIGRiIGxpc3QuCisgKi8KK3N0YXRpYyB2b2lkCitidWlsZF9zdGF0aWNfZGJfbGlzdCAo dm9pZCkKK3sKKyAgZ3J1Yl9lcnJfdCBlcnI7CisgIHN0cnVjdCBncnViX21vZHVsZV9oZWFkZXIg KmhlYWRlcjsKKyAgc3RydWN0IGdydWJfZmlsZSBwc2V1ZG9fZmlsZTsKKyAgZ3J1Yl91aW50OF90 ICpjZXJ0X2RhdGEgPSBOVUxMOworICBncnViX3NpemVfdCBjZXJ0X2RhdGFfc2l6ZSA9IDA7CisK KyAgRk9SX01PRFVMRVMgKGhlYWRlcikKKyAgICB7CisgICAgICAvKiBOb3QgYW4gWC41MDkgY2Vy dGlmaWNhdGUsIHNraXAuICovCisgICAgICBpZiAoaGVhZGVyLT50eXBlICE9IE9CSl9UWVBFX1g1 MDlfUFVCS0VZKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgZ3J1Yl9tZW1zZXQgKCZwc2V1 ZG9fZmlsZSwgMCwgc2l6ZW9mIChwc2V1ZG9fZmlsZSkpOworICAgICAgcHNldWRvX2ZpbGUuZnMg PSAmcHNldWRvX2ZzOworICAgICAgcHNldWRvX2ZpbGUuc2l6ZSA9IGhlYWRlci0+c2l6ZSAtIHNp emVvZiAoc3RydWN0IGdydWJfbW9kdWxlX2hlYWRlcik7CisgICAgICBwc2V1ZG9fZmlsZS5kYXRh ID0gKGNoYXIgKikgaGVhZGVyICsgc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl9tb2R1bGVfaGVhZGVyKTsK KworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAiZm91bmQgYW4gWC41MDkgY2Vy dGlmaWNhdGUsIHNpemU9JSIgUFJJdUdSVUJfVUlOVDY0X1QgIlxuIiwKKyAgICAgICAgICAgICAg ICAgICAgcHNldWRvX2ZpbGUuc2l6ZSk7CisKKyAgICAgIGVyciA9IGZpbGVfcmVhZF93aG9sZSAo JnBzZXVkb19maWxlLCAmY2VydF9kYXRhLCAmY2VydF9kYXRhX3NpemUpOworICAgICAgaWYgKGVy ciA9PSBHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZKQorICAgICAgICByZXR1cm47CisgICAgICBlbHNl IGlmIChlcnIgIT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGVy ciA9IGFkZF9jZXJ0aWZpY2F0ZSAoY2VydF9kYXRhLCBjZXJ0X2RhdGFfc2l6ZSwgJmRiKTsKKyAg ICAgIGdydWJfZnJlZSAoY2VydF9kYXRhKTsKKyAgICAgIGlmIChlcnIgPT0gR1JVQl9FUlJfT1VU X09GX01FTU9SWSkKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworLyogRnJlZSBkYiBsaXN0 IG1lbW9yeSAqLworc3RhdGljIHZvaWQKK2ZyZWVfZGJfbGlzdCAodm9pZCkKK3sKKyAgc3RydWN0 IHg1MDlfY2VydGlmaWNhdGUgKmNlcnQ7CisKKyAgd2hpbGUgKGRiLmNlcnRzICE9IE5VTEwpCisg ICAgeworICAgICAgY2VydCA9IGRiLmNlcnRzOworICAgICAgZGIuY2VydHMgPSBkYi5jZXJ0cy0+ bmV4dDsKKyAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2UgKGNlcnQpOworICAgICAgZ3J1Yl9mcmVl IChjZXJ0KTsKKyAgICB9CisKKyAgZ3J1Yl9tZW1zZXQgKCZkYiwgMCwgc2l6ZW9mIChzdHJ1Y3Qg Z3J1Yl9kYXRhYmFzZSkpOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitncnViX2Vudl9yZWFk X3NlYyAoc3RydWN0IGdydWJfZW52X3ZhciAqdmFyIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwK KyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWwgX19hdHRyaWJ1dGVfXyAoKHVudXNl ZCkpKQoreworICBpZiAoY2hlY2tfc2lncyA9PSB0cnVlKQorICAgIHJldHVybiAiZW5mb3JjZSI7 CisKKyAgcmV0dXJuICJubyI7Cit9CisKK3N0YXRpYyBjaGFyICoKK2dydWJfZW52X3dyaXRlX3Nl YyAoc3RydWN0IGdydWJfZW52X3ZhciAqdmFyIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgY29u c3QgY2hhciAqdmFsKQoreworICBjaGFyICpyZXQ7CisKKyAgLyoKKyAgICogRG8gbm90IGFsbG93 IHRoZSB2YWx1ZSB0byBiZSBjaGFuZ2VkIElmIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMKKyAg ICogKGNoZWNrX3NpZ3MgaXMgc2V0IHRvIGVuZm9yY2UpIGVuYWJsZWQgYW5kIEdSVUIgaXMgbG9j a2VkIGRvd24uCisgICAqLworICBpZiAoY2hlY2tfc2lncyA9PSB0cnVlICYmIGdydWJfaXNfbG9j a2Rvd24gKCkgPT0gR1JVQl9MT0NLRE9XTl9FTkFCTEVEKQorICAgIHsKKyAgICAgIHJldCA9IGdy dWJfc3RyZHVwICgiZW5mb3JjZSIpOworICAgICAgaWYgKHJldCA9PSBOVUxMKQorICAgICAgICBn cnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfTUVNT1JZLCAiY291bGQgbm90IGR1cGxpY2F0ZSBh IHN0cmluZyBlbmZvcmNlIik7CisKKyAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgIGlmICgo KnZhbCA9PSAnMScpIHx8ICgqdmFsID09ICdlJykpCisgICAgY2hlY2tfc2lncyA9IHRydWU7Cisg IGVsc2UgaWYgKCgqdmFsID09ICcwJykgfHwgKCp2YWwgPT0gJ24nKSkKKyAgICBjaGVja19zaWdz ID0gZmFsc2U7CisKKyAgcmV0ID0gZ3J1Yl9zdHJkdXAgKGdydWJfZW52X3JlYWRfc2VjIChOVUxM LCBOVUxMKSk7CisgIGlmIChyZXQgPT0gTlVMTCkKKyAgICBncnViX2Vycm9yIChHUlVCX0VSUl9P VVRfT0ZfTUVNT1JZLCAiY291bGQgbm90IGR1cGxpY2F0ZSBhIHN0cmluZyAlcyIsCisgICAgICAg ICAgICAgICAgZ3J1Yl9lbnZfcmVhZF9zZWMgKE5VTEwsIE5VTEwpKTsKKworICByZXR1cm4gcmV0 OworfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorYXBwZW5kZWRzaWdfaW5pdCAoZ3J1Yl9maWxlX3Qg aW8gX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBlbnVtIGdydWJfZmlsZV90eXBlIHR5cGUsCisg ICAgICAgICAgICAgICAgICB2b2lkICoqY29udGV4dCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSks IGVudW0gZ3J1Yl92ZXJpZnlfZmxhZ3MgKmZsYWdzKQoreworICBpZiAoY2hlY2tfc2lncyA9PSBm YWxzZSkKKyAgICB7CisgICAgICAqZmxhZ3MgPSBHUlVCX1ZFUklGWV9GTEFHU19TS0lQX1ZFUklG SUNBVElPTjsKKyAgICAgIHJldHVybiBHUlVCX0VSUl9OT05FOworICAgIH0KKworICBzd2l0Y2gg KHR5cGUgJiBHUlVCX0ZJTEVfVFlQRV9NQVNLKQorICAgIHsKKyAgICAgIGNhc2UgR1JVQl9GSUxF X1RZUEVfQ0VSVElGSUNBVEVfVFJVU1Q6CisgICAgICAgIC8qCisgICAgICAgICAqIFRoaXMgaXMg YSBjZXJ0aWZpY2F0ZSB0byBhZGQgdG8gdHJ1c3RlZCBrZXljaGFpbi4KKyAgICAgICAgICoKKyAg ICAgICAgICogVGhpcyBuZWVkcyB0byBiZSB2ZXJpZmllZCBvciBibG9ja2VkLiBJZGVhbGx5IHdl J2Qgd3JpdGUgYW4geDUwOQorICAgICAgICAgKiB2ZXJpZmllciwgYnV0IHdlIGxhY2sgdGhlIGh1 YnJpcyByZXF1aXJlZCB0byB0YWtlIHRoaXMgb24uIEluc3RlYWQsCisgICAgICAgICAqIHJlcXVp cmUgdGhhdCBpdCBoYXZlIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KKyAgICAgICAgICovCisgICAg ICBjYXNlIEdSVUJfRklMRV9UWVBFX0xJTlVYX0tFUk5FTDoKKyAgICAgIGNhc2UgR1JVQl9GSUxF X1RZUEVfR1JVQl9NT0RVTEU6CisgICAgICAgIC8qCisgICAgICAgICAqIEFwcGVuZGVkIHNpZ25h dHVyZXMgYXJlIG9ubHkgZGVmaW5lZCBmb3IgRUxGIGJpbmFyaWVzLgorICAgICAgICAgKiBPdXQg b2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIHdlIG9ubHkgdmVyaWZ5IExpbnV4IGtlcm5lbHMK KyAgICAgICAgICogYW5kIEdSVUIgbW9kdWxlcyBhdCB0aGlzIHBvaW50LgorICAgICAgICAgKi8K KyAgICAgICAgKmZsYWdzID0gR1JVQl9WRVJJRllfRkxBR1NfU0lOR0xFX0NIVU5LOworICAgICAg ICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKKworICAgICAgY2FzZSBHUlVCX0ZJTEVfVFlQRV9BQ1BJ X1RBQkxFOgorICAgICAgY2FzZSBHUlVCX0ZJTEVfVFlQRV9ERVZJQ0VfVFJFRV9JTUFHRToKKyAg ICAgICAgLyoKKyAgICAgICAgICogSXQgaXMgcG9zc2libGUgdG8gdXNlIGFwcGVuZGVkIHNpZ25h dHVyZSB2ZXJpZmljYXRpb24gd2l0aG91dAorICAgICAgICAgKiBsb2NrZG93biAtIGxpa2UgdGhl IFBHUCB2ZXJpZmllci4gV2hlbiBjb21iaW5lZCB3aXRoIGFuIGVtYmVkZGVkCisgICAgICAgICAq IGNvbmZpZyBmaWxlIGluIGEgc2lnbmVkIEdSVUIgYmluYXJ5LCB0aGlzIGNvdWxkIHN0aWxsIGJl IGEgbWVhbmluZ2Z1bAorICAgICAgICAgKiBzZWN1cmUtYm9vdCBjaGFpbiAtIHNvIGxvbmcgYXMg aXQgaXNuJ3Qgc3VidmVydGVkIGJ5IHNvbWV0aGluZyBsaWtlIGEKKyAgICAgICAgICogcm91Z2Ug QUNQSSB0YWJsZSBvciBEVCBpbWFnZS4gRGVmZXIgdGhlbSBleHBsaWNpdGx5LgorICAgICAgICAg Ki8KKyAgICAgICAgKmZsYWdzID0gR1JVQl9WRVJJRllfRkxBR1NfREVGRVJfQVVUSDsKKyAgICAg ICAgcmV0dXJuIEdSVUJfRVJSX05PTkU7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgICpmbGFn cyA9IEdSVUJfVkVSSUZZX0ZMQUdTX1NLSVBfVkVSSUZJQ0FUSU9OOworICAgICAgICByZXR1cm4g R1JVQl9FUlJfTk9ORTsKKyAgICB9Cit9CisKK3N0YXRpYyBncnViX2Vycl90CithcHBlbmRlZHNp Z193cml0ZSAodm9pZCAqY3R4dCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIHZvaWQgKmJ1Ziwg Z3J1Yl9zaXplX3Qgc2l6ZSkKK3sKKyAgcmV0dXJuIGdydWJfdmVyaWZ5X2FwcGVuZGVkX3NpZ25h dHVyZSAoYnVmLCBzaXplKTsKK30KKworc3RydWN0IGdydWJfZmlsZV92ZXJpZmllciBncnViX2Fw cGVuZGVkc2lnX3ZlcmlmaWVyID0geworICAubmFtZSA9ICJhcHBlbmRlZHNpZyIsCisgIC5pbml0 ID0gYXBwZW5kZWRzaWdfaW5pdCwKKyAgLndyaXRlID0gYXBwZW5kZWRzaWdfd3JpdGUsCit9Owor CitHUlVCX01PRF9JTklUIChhcHBlbmRlZHNpZykKK3sKKyAgZ3J1Yl9pbnQzMl90IHJjOworCisg IC8qCisgICAqIElmIHNlY3VyZSBib290IGlzIGVuYWJsZWQgd2l0aCBlbmZvcmNlZCBtb2RlIGFu ZCBHUlVCIGlzIGxvY2tlZCBkb3duLAorICAgKiBlbmFibGUgc2lnbmF0dXJlIHZlcmlmaWNhdGlv bi4KKyAgICovCisgIGlmIChncnViX2lzX2xvY2tkb3duICgpID09IEdSVUJfTE9DS0RPV05fRU5B QkxFRCkKKyAgICBjaGVja19zaWdzID0gdHJ1ZTsKKworICAvKgorICAgKiBUaGlzIGlzIGFwcGVu ZGVkIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gZW52aXJvbm1lbnQgdmFyaWFibGUuCisgICAqIEl0 IGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvICJubyIgb3IgImVuZm9yY2UiIGJhc2VkIG9uIHRoZQor ICAgKiDigJlpYm0sc2VjdXJlLWJvb3TigJkgZGV2aWNlIHRyZWUgcHJvcGVydHkuCisgICAqCisg ICAqICJubyI6IE5vIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uIFRoaXMgaXMgdGhlIGRlZmF1bHQu CisgICAqCisgICAqICJlbmZvcmNlIjogRW5mb3JjZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLiBX aGVuIEdSVUIgaXMgbG9ja2VkIGRvd24sCisgICAqICAgICAgICAgICAgdXNlciBjYW5ub3QgY2hh bmdlIHRoZSB2YWx1ZSBieSBzZXR0aW5nIHRoZSBjaGVja19hcHBlbmRlZF9zaWduYXR1cmVzCisg ICAqICAgICAgICAgICAgdmFyaWFibGUgYmFjayB0byDigJhub+KAmQorICAgKi8KKyAgZ3J1Yl9y ZWdpc3Rlcl92YXJpYWJsZV9ob29rICgiY2hlY2tfYXBwZW5kZWRfc2lnbmF0dXJlcyIsIGdydWJf ZW52X3JlYWRfc2VjLCBncnViX2Vudl93cml0ZV9zZWMpOworICBncnViX2Vudl9leHBvcnQgKCJj aGVja19hcHBlbmRlZF9zaWduYXR1cmVzIik7CisKKyAgcmMgPSBhc24xX2luaXQgKCk7CisgIGlm IChyYyAhPSBBU04xX1NVQ0NFU1MpCisgICAgZ3J1Yl9mYXRhbCAoImVycm9yIGluaXRpbmcgQVNO LjEgZGF0YSBzdHJ1Y3R1cmVzOiAlZDogJXNcbiIsIHJjLCBhc24xX3N0cmVycm9yIChyYykpOwor CisgIC8qIEV4dHJhY3QgdHJ1c3RlZCBrZXlzIGZyb20gRUxGIE5vdGUgYW5kIHN0b3JlIHRoZW0g aW4gdGhlIGRiLiAqLworICBidWlsZF9zdGF0aWNfZGJfbGlzdCAoKTsKKyAgZ3J1Yl9kcHJpbnRm ICgiYXBwZW5kZWRzaWciLCAidGhlIGRiIGxpc3Qgbm93IGhhcyAldSBzdGF0aWMga2V5c1xuIiwK KyAgICAgICAgICAgICAgICBkYi5jZXJ0X2VudHJpZXMpOworCisgIGdydWJfdmVyaWZpZXJfcmVn aXN0ZXIgKCZncnViX2FwcGVuZGVkc2lnX3ZlcmlmaWVyKTsKKyAgZ3J1Yl9kbF9zZXRfcGVyc2lz dGVudCAobW9kKTsKK30KKworR1JVQl9NT0RfRklOSSAoYXBwZW5kZWRzaWcpCit7CisgIC8qCisg ICAqIGdydWJfZGxfc2V0X3BlcnNpc3RlbnQgc2hvdWxkIHByZXZlbnQgdGhpcyBmcm9tIGFjdHVh bGx5IHJ1bm5pbmcsIGJ1dAorICAgKiBpdCBkb2VzIHN0aWxsIHJ1biB1bmRlciBlbXUuCisgICAq LworCisgIGZyZWVfZGJfbGlzdCAoKTsKKyAgZ3J1Yl9yZWdpc3Rlcl92YXJpYWJsZV9ob29rICgi Y2hlY2tfYXBwZW5kZWRfc2lnbmF0dXJlcyIsIE5VTEwsIE5VTEwpOworICBncnViX2Vudl91bnNl dCAoImNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMiKTsKKyAgZ3J1Yl92ZXJpZmllcl91bnJlZ2lz dGVyICgmZ3J1Yl9hcHBlbmRlZHNpZ192ZXJpZmllcik7Cit9CmRpZmYgLS1naXQgYS9pbmNsdWRl L2dydWIvZXJyLmggYi9pbmNsdWRlL2dydWIvZXJyLmgKaW5kZXggMjAyZmE4YTdhLi42YWI5MDVj OTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9lcnIuaAorKysgYi9pbmNsdWRlL2dydWIvZXJy LmgKQEAgLTc1LDcgKzc1LDggQEAgdHlwZWRlZiBlbnVtCiAgICAgR1JVQl9FUlJfQkFEX1NJR05B VFVSRSwKICAgICBHUlVCX0VSUl9CQURfRklSTVdBUkUsCiAgICAgR1JVQl9FUlJfU1RJTExfUkVG RVJFTkNFRCwKLSAgICBHUlVCX0VSUl9SRUNVUlNJT05fREVQVEgKKyAgICBHUlVCX0VSUl9SRUNV UlNJT05fREVQVEgsCisgICAgR1JVQl9FUlJfRVhJU1RTCiAgIH0KIGdydWJfZXJyX3Q7CiAKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9maWxlLmggYi9pbmNsdWRlL2dydWIvZmlsZS5oCmluZGV4 IGE1YmYzYTc5Mi4uZDY3OGRlMDYzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2dydWIvZmlsZS5oCisr KyBiL2luY2x1ZGUvZ3J1Yi9maWxlLmgKQEAgLTgwLDYgKzgwLDggQEAgZW51bSBncnViX2ZpbGVf dHlwZQogICAgIEdSVUJfRklMRV9UWVBFX1BVQkxJQ19LRVksCiAgICAgLyogRmlsZSBob2xkaW5n IHB1YmxpYyBrZXkgdG8gYWRkIHRvIHRydXNlZCBrZXlzLiAgKi8KICAgICBHUlVCX0ZJTEVfVFlQ RV9QVUJMSUNfS0VZX1RSVVNULAorICAgIC8qIEZpbGUgaG9sZGluZyB4NTA5IGNlcnRpZmljaWF0 ZSB0byBhZGQgdG8gdHJ1c3RlZCBrZXlzLiAgKi8KKyAgICBHUlVCX0ZJTEVfVFlQRV9DRVJUSUZJ Q0FURV9UUlVTVCwKICAgICAvKiBGaWxlIG9mIHdoaWNoIHdlIGludGVuZCB0byBwcmludCBhIGJs b2NrbGlzdCB0byB0aGUgdXNlci4gICovCiAgICAgR1JVQl9GSUxFX1RZUEVfUFJJTlRfQkxPQ0tM SVNULAogICAgIC8qIEZpbGUgd2UgaW50ZW5kIHRvIHVzZSBmb3IgdGVzdCBsb2FkaW5nIG9yIHRl c3Rpbmcgc3BlZWQuICAqLwotLSAKMi4zOS41IChBcHBsZSBHaXQtMTU0KQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkdydWItZGV2ZWwgbWFpbGluZyBs aXN0CkdydWItZGV2ZWxAZ251Lm9yZwpodHRwczovL2xpc3RzLmdudS5vcmcvbWFpbG1hbi9saXN0 aW5mby9ncnViLWRldmVsCg==