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 2EA8BCAC593 for ; Mon, 15 Sep 2025 11:09:55 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uy70h-0005UD-Lv; Mon, 15 Sep 2025 07:04:39 -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 1uy70e-0005SD-Na for grub-devel@gnu.org; Mon, 15 Sep 2025 07:04:37 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uy70O-0004nX-Kw for grub-devel@gnu.org; Mon, 15 Sep 2025 07:04:36 -0400 Received: from pps.filterd (m0360072.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58F9P5QE020595; Mon, 15 Sep 2025 11:04:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=hBvUD8eds+RFIpEAW v81/ykpHkBJvcvMVJi+BvEz61o=; b=DwLt4U2fqGKYIp7SS1bxh9j4rACHSKjt9 Tynhr8ccC2GZrukZ4yj0obd5llQTQh562j/R/qRnlQ4TpwT8vSz8LzUASdDVbI5h piwqlR2HS4by+TiQenPVivjcw8i5EX2EHr+D7a9W2cO2/2Yu+kGoJ2iXUH/oy+Os 63cKT1ux2u/FpYZEEAsiGUlpXZwBBe24l01M1RIzbBKQMJ8IWvAVdsB4qr1R1xYL ZFIRAAB6bvx12xASmAqnATOY1l6s/BpxH+s7IHRWzXfWY/c+hU/P+TdH+CNAHICO XbhdHYvg3tIMeGc+NTCrlF+lRA2PBAvQS7QUtTD3+vvjaCj8VMbfw== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 496g530fr4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 15 Sep 2025 11:04:14 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 58F7lKq2027315; Mon, 15 Sep 2025 11:04:13 GMT Received: from smtprelay04.fra02v.mail.ibm.com ([9.218.2.228]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 495memwye8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 15 Sep 2025 11:04:11 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay04.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 58FB46FW16253348 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 15 Sep 2025 11:04:06 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6B29820040; Mon, 15 Sep 2025 11:04:06 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2B8812004B; Mon, 15 Sep 2025 11:04:03 +0000 (GMT) Received: from localhost.localdomain (unknown [9.79.204.18]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 15 Sep 2025 11:04:02 +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 v11 13/22] appended signatures: Create db and dbx lists Date: Mon, 15 Sep 2025 16:31:20 +0530 Message-Id: <20250915110129.20898-14-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250915110129.20898-1-sudhakar@linux.ibm.com> References: <20250915110129.20898-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: 3yj0Ym-5igBEeondxCSLRY-M5GvmSrZW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTE1MDA4NiBTYWx0ZWRfX3W/FcMu0G/Qq QMw5VZOTjMve2MVjpO0uUcQPyFwMIT3V0cUHxauCWSgSncy3rO6GE235zCA36BlTc2azqc0ynGg 1e9sqTGwfX2/YPWdHpoieSOqhaOY6h4ExatjIKslHNex4CpGhoSFcrg6l6DlQ2NDk0dMDwLRwqG 9qwMwyiHyYeIKRbJFGIfdOwjccUTuAiipXf7XHfLm4q5sz55YcV5sB0imFHH8R0wkDq+ISgJQV9 T/MsavnDr3H4VZq88kFeEFWrVOgMNZMVSlXqxFTZWQ7s0pb25tBR4xF49oo/pEwCT4N/lW4ffHV AxwVw39p6LidexANFSB0PlRAkbFgZbBppC7LTzm7rt4+KcrrPR3CPr04P2qwpmTrl3FtkuKMb98 BlIYISax X-Proofpoint-ORIG-GUID: 3yj0Ym-5igBEeondxCSLRY-M5GvmSrZW X-Authority-Analysis: v=2.4 cv=UJ7dHDfy c=1 sm=1 tr=0 ts=68c7f2ae cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=yJojWOMRYYMA:10 a=NEAV23lmAAAA:8 a=VnNF1IyMAAAA:8 a=sCGIt9ieJHR2VkqI4G0A:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-15_04,2025-09-12_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 bulkscore=0 impostorscore=0 spamscore=0 priorityscore=1501 clxscore=1015 suspectscore=0 phishscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2509150086 Received-SPF: pass client-ip=148.163.158.5; envelope-from=sudhakar@linux.ibm.com; helo=mx0b-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.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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 SWYgc2VjdXJlIGJvb3QgaXMgZW5hYmxlZCB3aXRoIHN0YXRpYyBrZXkgbWFuYWdlbWVudCBtb2Rl LCB0aGUgdHJ1c3RlZApjZXJ0aWZpY2F0ZXMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgR1JV QiBFTEYgTm90ZSBhbmQgYWRkZWQgdG8gZGIgbGlzdC4KCklmIHNlY3VyZSBib290IGlzIGVuYWJs ZWQgd2l0aCBkeW5hbWljIGtleSBtYW5hZ2VtZW50IG1vZGUsIHRoZSB0cnVzdGVkCmNlcnRpZmlj YXRlcyBhbmQgY2VydGlmaWNhdGUvYmluYXJ5IGhhc2ggd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0 aGUgUEtTCmFuZCBhZGRlZCB0byBkYiBsaXN0LiBUaGUgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMs IGNlcnRpZmljYXRlL2JpbmFyeSBoYXNoCmFyZSByZWFkIGZyb20gdGhlIFBLUyBhbmQgYWRkZWQg dG8gZGJ4IGxpc3QuIEJvdGggZGJ4IGFuZCBkYiBsaXN0cyBhcmUgaW50cm9kdWNlZCBieQphIHN1 YnNlcXVlbnQgcGF0Y2guCgpOb3RlOi0KCklmIHRoZSBjZXJ0aWZpY2F0ZSBvciB0aGUgY2VydGlm aWNhdGUgaGFzaCBleGlzdHMgaW4gdGhlIGRieCBsaXN0LCB0aGVuCmRvIG5vdCBhZGQgdGhhdCBj ZXJ0aWZpY2F0ZS9jZXJ0aWZpY2F0ZSBoYXNoIHRvIHRoZSBkYiBsaXN0LgoKU2lnbmVkLW9mZi1i eTogU3VkaGFrYXIgS3VwcHVzYW15IDxzdWRoYWthckBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1i eTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogQXZu aXNoIENob3VoYW4gPGF2bmlzaEBsaW51eC5pYm0uY29tPgotLS0KIGdydWItY29yZS9jb21tYW5k cy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jIHwgMzk4ICsrKysrKysrKysrKysrKysrKy0KIGlu Y2x1ZGUvZ3J1Yi9lZmkvcGtzLmggICAgICAgICAgICAgICAgICAgICAgIHwgMTEyICsrKysrKwog aW5jbHVkZS9ncnViL3R5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKwogMyBm aWxlcyBjaGFuZ2VkLCA0OTcgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgaW5jbHVkZS9ncnViL2VmaS9wa3MuaAoKZGlmZiAtLWdpdCBhL2dydWItY29y ZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jIGIvZ3J1Yi1jb3JlL2NvbW1hbmRz L2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMKaW5kZXggMzBkNDUzMDA3Li41NTFiNGNkOTYgMTAw NjQ0Ci0tLSBhL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCisr KyBiL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCkBAIC0zNCw2 ICszNCw3IEBACiAjaW5jbHVkZSA8Z3J1Yi9lbnYuaD4KICNpbmNsdWRlIDxncnViL2xvY2tkb3du Lmg+CiAjaW5jbHVkZSA8Z3J1Yi9wb3dlcnBjL2llZWUxMjc1L3BsYXRmb3JtX2tleXN0b3JlLmg+ CisjaW5jbHVkZSA8Z3J1Yi9lZmkvcGtzLmg+CiAKICNpbmNsdWRlICJhcHBlbmRlZHNpZy5oIgog CkBAIC00Niw2ICs0NywxMSBAQCBHUlVCX01PRF9MSUNFTlNFICgiR1BMdjMrIik7CiAjZGVmaW5l IFNJR19NQUdJQyAgICAgICAgICAifk1vZHVsZSBzaWduYXR1cmUgYXBwZW5kZWR+XG4iCiAjZGVm aW5lIFNJR19NQUdJQ19TSVpFICAgICAoKHNpemVvZihTSUdfTUFHSUMpIC0gMSkpCiAKKy8qIFNI QTI1NiwgU0hBMzg0IGFuZCBTSEE1MTIgaGFzaCBzaXplcy4gKi8KKyNkZWZpbmUgU0hBMjU2X0hB U0hfTEVOICAgIDMyCisjZGVmaW5lIFNIQTM4NF9IQVNIX0xFTiAgICA0OAorI2RlZmluZSBTSEE1 MTJfSEFTSF9MRU4gICAgNjQKKwogLyoKICAqIFRoaXMgc3RydWN0dXJlIGlzIGV4dHJhY3RlZCBm cm9tIHNjcmlwdHMvc2lnbi1maWxlLmMgaW4gdGhlIGxpbnV4IGtlcm5lbAogICogc291cmNlLiBJ dCB3YXMgbGljZW5zZWQgYXMgTEdQTHYyLjErLCB3aGljaCBpcyBHUEx2MysgY29tcGF0aWJsZS4K QEAgLTc5LDExICs4NSwyMiBAQCBzdHJ1Y3Qgc2JfZGF0YWJhc2UKIHsKICAgZ3J1Yl94NTA5X2Nl cnRfdCAqY2VydHM7ICAgIC8qIENlcnRpZmljYXRlcy4gKi8KICAgZ3J1Yl91aW50MzJfdCBjZXJ0 X2VudHJpZXM7IC8qIE51bWJlciBvZiBjZXJ0aWZpY2F0ZXMuICovCisgIGdydWJfdWludDhfdCAq Kmhhc2hlczsgICAgICAvKiBDZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaGVzLiAqLworICBncnViX3Np emVfdCAqaGFzaF9zaXplczsgICAgLyogU2l6ZSBvZiBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaGVz LiAqLworICBncnViX3VpbnQzMl90IGhhc2hfZW50cmllczsgLyogTnVtYmVyIG9mIGNlcnRpZmlj YXRlL2JpbmFyeSBoYXNoZXMuICovCisgIGJvb2wgaXNfZGI7ICAgICAgICAgICAgICAgICAvKiBG bGFnIHRvIGluZGljYXRlIHRoZSBkYi9kYnggbGlzdC4gKi8KIH07CiB0eXBlZGVmIHN0cnVjdCBz Yl9kYXRhYmFzZSBzYl9kYXRhYmFzZV90OwogCiAvKiBUaGUgZGIgbGlzdCBpcyB1c2VkIHRvIHZh bGlkYXRlIGFwcGVuZGVkIHNpZ25hdHVyZXMuICovCi1zdGF0aWMgc2JfZGF0YWJhc2VfdCBkYiA9 IHsuY2VydHMgPSBOVUxMLCAuY2VydF9lbnRyaWVzID0gMH07CitzdGF0aWMgc2JfZGF0YWJhc2Vf dCBkYiA9IHsuY2VydHMgPSBOVUxMLCAuY2VydF9lbnRyaWVzID0gMCwgLmhhc2hlcyA9IE5VTEws CisgICAgICAgICAgICAgICAgICAgICAgICAgICAuaGFzaF9zaXplcyA9IE5VTEwsIC5oYXNoX2Vu dHJpZXMgPSAwLCAuaXNfZGIgPSB0cnVlfTsKKy8qCisgKiBUaGUgZGJ4IGxpc3QgaXMgdXNlZCB0 byBlbnN1cmUgdGhhdCB0aGUgZGlzdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgb3IgR1JVQiBtb2R1bGVz LworICoga2VybmVsIGJpbmFyaWVzIGFyZSByZWplY3RlZCBkdXJpbmcgYXBwZW5kZWQgc2lnbmF0 dXJlcy9oYXNoZXMgdmFsaWRhdGlvbi4KKyAqLworc3RhdGljIHNiX2RhdGFiYXNlX3QgZGJ4ID0g ey5jZXJ0cyA9IE5VTEwsIC5jZXJ0X2VudHJpZXMgPSAwLCAuaGFzaGVzID0gTlVMTCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAuaGFzaF9zaXplcyA9IE5VTEwsIC5oYXNoX2VudHJpZXMg PSAwLCAuaXNfZGIgPSBmYWxzZX07CiAKIC8qCiAgKiBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZs YWcgKGNoZWNrX3NpZ3MpLgpAQCAtMTE4LDYgKzEzNSwxNzIgQEAgc3RhdGljIHN0cnVjdCBncnVi X2ZzIHBzZXVkb19mcyA9IHsKICAgLmZzX3JlYWQgPSBwc2V1ZG9fcmVhZAogfTsKIAorLyoKKyAq IEdVSUQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIGFuZAor ICogZ2VuZXJhdGUgdGhlIGhhc2ggdXNpbmcgZGV0ZXJtaW5lZCBoYXNoaW5nIGZ1bmN0aW9uLgor ICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ2V0X2hhc2ggKGNvbnN0IGdydWJfcGFja2VkX2d1aWRf dCAqZ3VpZCwgY29uc3QgZ3J1Yl91aW50OF90ICpkYXRhLCBjb25zdCBncnViX3NpemVfdCBkYXRh X3NpemUsCisgICAgICAgICAgZ3J1Yl91aW50OF90ICpoYXNoLCBncnViX3NpemVfdCAqaGFzaF9z aXplKQoreworICBnY3J5X21kX3NwZWNfdCAqaGFzaF9mdW5jID0gTlVMTDsKKworICBpZiAoZ3Vp ZCA9PSBOVUxMKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0Us ICJHVUlEIGlzIG5vdCBhdmFpbGFibGUiKTsKKworICBpZiAoZ3J1Yl9tZW1jbXAgKGd1aWQsICZH UlVCX1BLU19DRVJUX1NIQTI1Nl9HVUlELCBHUlVCX1BBQ0tFRF9HVUlEX1NJWkUpID09IDAgfHwK KyAgICAgIGdydWJfbWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9YNTA5X1NIQTI1Nl9HVUlE LCBHUlVCX1BBQ0tFRF9HVUlEX1NJWkUpID09IDApCisgICAgaGFzaF9mdW5jID0gJl9nY3J5X2Rp Z2VzdF9zcGVjX3NoYTI1NjsKKyAgZWxzZSBpZiAoZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BL U19DRVJUX1NIQTM4NF9HVUlELCBHUlVCX1BBQ0tFRF9HVUlEX1NJWkUpID09IDAgfHwKKyAgICAg ICAgICAgZ3J1Yl9tZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1g1MDlfU0hBMzg0X0dVSUQs IEdSVUJfUEFDS0VEX0dVSURfU0laRSkgPT0gMCkKKyAgICBoYXNoX2Z1bmMgPSAmX2djcnlfZGln ZXN0X3NwZWNfc2hhMzg0OworICBlbHNlIGlmIChncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtT X0NFUlRfU0hBNTEyX0dVSUQsIEdSVUJfUEFDS0VEX0dVSURfU0laRSkgPT0gMCB8fAorICAgICAg ICAgICBncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfWDUwOV9TSEE1MTJfR1VJRCwg R1JVQl9QQUNLRURfR1VJRF9TSVpFKSA9PSAwKQorICAgIGhhc2hfZnVuYyA9ICZfZ2NyeV9kaWdl c3Rfc3BlY19zaGE1MTI7CisgIGVsc2UKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJf T1VUX09GX1JBTkdFLCAidW5zdXBwb3J0ZWQgR1VJRCBoYXNoIik7CisKKyAgZ3J1Yl9jcnlwdG9f aGFzaCAoaGFzaF9mdW5jLCBoYXNoLCBkYXRhLCBkYXRhX3NpemUpOworICAqaGFzaF9zaXplID0g IGhhc2hfZnVuYy0+bWRsZW47CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9CisKK3N0YXRp YyBncnViX2Vycl90CitnZW5lcmF0ZV9jZXJ0X2hhc2ggKGNvbnN0IGdydWJfc2l6ZV90IGNlcnRf aGFzaF9zaXplLCBjb25zdCBncnViX3VpbnQ4X3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAg IGNvbnN0IGdydWJfc2l6ZV90IGRhdGFfc2l6ZSwgZ3J1Yl91aW50OF90ICpoYXNoLCBncnViX3Np emVfdCAqaGFzaF9zaXplKQoreworICBncnViX3BhY2tlZF9ndWlkX3QgZ3VpZCA9IHsgMCB9Owor CisgIC8qIHN1cHBvcnQgU0hBMjU2LCBTSEEzODQgYW5kIFNIQTUxMiBmb3IgY2VydGlmaWNhdGUg aGFzaCAqLworICBpZiAoY2VydF9oYXNoX3NpemUgPT0gU0hBMjU2X0hBU0hfTEVOKQorICAgIGdy dWJfbWVtY3B5ICgmZ3VpZCwgJkdSVUJfUEtTX0NFUlRfWDUwOV9TSEEyNTZfR1VJRCwgR1JVQl9Q QUNLRURfR1VJRF9TSVpFKTsKKyAgZWxzZSBpZiAoY2VydF9oYXNoX3NpemUgPT0gU0hBMzg0X0hB U0hfTEVOKQorICAgIGdydWJfbWVtY3B5ICgmZ3VpZCwgJkdSVUJfUEtTX0NFUlRfWDUwOV9TSEEz ODRfR1VJRCwgR1JVQl9QQUNLRURfR1VJRF9TSVpFKTsKKyAgZWxzZSBpZiAoY2VydF9oYXNoX3Np emUgPT0gU0hBNTEyX0hBU0hfTEVOKQorICAgIGdydWJfbWVtY3B5ICgmZ3VpZCwgJkdSVUJfUEtT X0NFUlRfWDUwOV9TSEE1MTJfR1VJRCwgR1JVQl9QQUNLRURfR1VJRF9TSVpFKTsKKyAgZWxzZQor ICAgIHsKKyAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInVuc3VwcG9ydGVkIGhh c2ggdHlwZSAoJSIgUFJJdUdSVUJfU0laRSAiKSBhbmQgIgorICAgICAgICAgICAgICAgICAgICAi c2tpcHBlZFxuIiwgY2VydF9oYXNoX3NpemUpOworICAgICAgcmV0dXJuIEdSVUJfRVJSX1VOS05P V05fQ09NTUFORDsKKyAgICB9CisKKyAgcmV0dXJuIGdldF9oYXNoICgmZ3VpZCwgZGF0YSwgZGF0 YV9zaXplLCBoYXNoLCBoYXNoX3NpemUpOworfQorCisvKiBDaGVjayB0aGUgaGFzaCBwcmVzZW5j ZSBpbiB0aGUgZGIvZGJ4IGxpc3QuICovCitzdGF0aWMgYm9vbAorY2hlY2tfaGFzaF9wcmVzZW5j ZSAoZ3J1Yl91aW50OF90ICpjb25zdCBoYXNoLCBjb25zdCBncnViX3NpemVfdCBoYXNoX3NpemUs CisgICAgICAgICAgICAgICAgICAgICBjb25zdCBzYl9kYXRhYmFzZV90ICpzYl9kYXRhYmFzZSkK K3sKKyAgZ3J1Yl91aW50MzJfdCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBzYl9kYXRhYmFzZS0+ aGFzaF9lbnRyaWVzOyBpKyspCisgICAgeworICAgICAgaWYgKHNiX2RhdGFiYXNlLT5oYXNoZXNb aV0gPT0gTlVMTCkKKyAgICAgICAgY29udGludWU7CisKKyAgICAgIGlmIChoYXNoX3NpemUgPT0g c2JfZGF0YWJhc2UtPmhhc2hfc2l6ZXNbaV0gJiYKKyAgICAgICAgICBncnViX21lbWNtcCAoc2Jf ZGF0YWJhc2UtPmhhc2hlc1tpXSwgaGFzaCwgaGFzaF9zaXplKSA9PSAwKQorICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICB9CisKKyAgcmV0dXJuIGZhbHNlOworfQorCisvKiBBZGQgdGhlIGNlcnRp ZmljYXRlL2JpbmFyeSBoYXNoIGludG8gdGhlIGRiL2RieCBsaXN0LiAqLworc3RhdGljIGdydWJf ZXJyX3QKK2FkZF9oYXNoIChncnViX3VpbnQ4X3QgKmNvbnN0IGRhdGEsIGNvbnN0IGdydWJfc2l6 ZV90IGRhdGFfc2l6ZSwgc2JfZGF0YWJhc2VfdCAqc2JfZGF0YWJhc2UpCit7CisgIGdydWJfdWlu dDhfdCAqKmhhc2hlczsKKyAgZ3J1Yl9zaXplX3QgKmhhc2hfc2l6ZXM7CisKKyAgaWYgKGRhdGEg PT0gTlVMTCB8fCBkYXRhX3NpemUgPT0gMCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfT1VUX09GX1JBTkdFLCAiY2VydGlmaWNhdGUvYmluYXJ5LWhhc2ggZGF0YSBvciBzaXplIGlz IG5vdCBhdmFpbGFibGUiKTsKKworICBpZiAoc2JfZGF0YWJhc2UtPmlzX2RiID09IHRydWUpCisg ICAgeworICAgICAgaWYgKGNoZWNrX2hhc2hfcHJlc2VuY2UgKGRhdGEsIGRhdGFfc2l6ZSwgJmRi eCkgPT0gdHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVk c2lnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYWRkIGEgaGFzaCAoJTAyeCUw MnglMDJ4JTAyeCksIGFzIGl0IGlzIHByZXNlbnQgaW4gdGhlIGRieCBsaXN0XG4iLAorICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSwgZGF0YVszXSk7Cisg ICAgICAgICAgcmV0dXJuIEdSVUJfRVJSX0FDQ0VTU19ERU5JRUQ7CisgICAgICAgIH0KKyAgICB9 CisKKyAgaWYgKGNoZWNrX2hhc2hfcHJlc2VuY2UgKGRhdGEsIGRhdGFfc2l6ZSwgc2JfZGF0YWJh c2UpID09IHRydWUpCisgICAgeworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLAor ICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGFkZCBhIGhhc2ggKCUwMnglMDJ4JTAyeCUwMngp LCBhcyBpdCBpcyBwcmVzZW50IGluIHRoZSAlcyBsaXN0XG4iLAorICAgICAgICAgICAgICAgICAg ICBkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdLCBkYXRhWzNdLCAoKHNiX2RhdGFiYXNlLT5pc19k YiA9PSB0cnVlKSA/ICJkYiIgOiAiZGJ4IikpOworICAgICAgcmV0dXJuIEdSVUJfRVJSX0VYSVNU UzsKKyAgICB9CisKKyAgaGFzaGVzID0gZ3J1Yl9yZWFsbG9jIChzYl9kYXRhYmFzZS0+aGFzaGVz LCBzaXplb2YgKGdydWJfdWludDhfdCAqKSAqIChzYl9kYXRhYmFzZS0+aGFzaF9lbnRyaWVzICsg MSkpOworICBpZiAoaGFzaGVzID09IE5VTEwpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJf RVJSX09VVF9PRl9NRU1PUlksICJvdXQgb2YgbWVtb3J5Iik7CisKKyAgaGFzaF9zaXplcyA9IGdy dWJfcmVhbGxvYyAoc2JfZGF0YWJhc2UtPmhhc2hfc2l6ZXMsIHNpemVvZiAoZ3J1Yl9zaXplX3Qp ICogKHNiX2RhdGFiYXNlLT5oYXNoX2VudHJpZXMgKyAxKSk7CisgIGlmIChoYXNoX3NpemVzID09 IE5VTEwpCisgICAgeworICAgICAgLyoKKyAgICAgICAqIEFsbG9jYXRlZCBtZW1vcnkgd2lsbCBi ZSBmcmVlZCBieQorICAgICAgICogZnJlZV9kYl9saXN0L2ZyZWVfZGJ4X2xpc3QuCisgICAgICAg Ki8KKyAgICAgIGhhc2hlc1tzYl9kYXRhYmFzZS0+aGFzaF9lbnRyaWVzXSA9IE5VTEw7CisgICAg ICBzYl9kYXRhYmFzZS0+aGFzaGVzID0gaGFzaGVzOworICAgICAgc2JfZGF0YWJhc2UtPmhhc2hf ZW50cmllcysrOworCisgICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX01F TU9SWSwgIm91dCBvZiBtZW1vcnkiKTsKKyAgICB9CisKKyAgaGFzaGVzW3NiX2RhdGFiYXNlLT5o YXNoX2VudHJpZXNdID0gZ3J1Yl9tYWxsb2MgKGRhdGFfc2l6ZSk7CisgIGlmIChoYXNoZXNbc2Jf ZGF0YWJhc2UtPmhhc2hfZW50cmllc10gPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAo R1JVQl9FUlJfT1VUX09GX01FTU9SWSwgIm91dCBvZiBtZW1vcnkiKTsKKworICBncnViX2Rwcmlu dGYgKCJhcHBlbmRlZHNpZyIsCisgICAgICAgICAgICAgICAgImFkZGVkIHRoZSBoYXNoICUwMngl MDJ4JTAyeCUwMnguLi5cbiB3aXRoIHNpemUgb2YgJSIgUFJJdUdSVUJfU0laRSAiIHRvIHRoZSAl cyBsaXN0XG4iLAorICAgICAgICAgICAgICAgIGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRh dGFbM10sIGRhdGFfc2l6ZSwKKyAgICAgICAgICAgICAgICAoKHNiX2RhdGFiYXNlLT5pc19kYiA9 PSB0cnVlKSA/ICJkYiIgOiAiZGJ4IikpOworCisgIGdydWJfbWVtY3B5IChoYXNoZXNbc2JfZGF0 YWJhc2UtPmhhc2hfZW50cmllc10sIGRhdGEsIGRhdGFfc2l6ZSk7CisgIGhhc2hfc2l6ZXNbc2Jf ZGF0YWJhc2UtPmhhc2hfZW50cmllc10gPSBkYXRhX3NpemU7CisgIHNiX2RhdGFiYXNlLT5oYXNo X3NpemVzID0gaGFzaF9zaXplczsKKyAgc2JfZGF0YWJhc2UtPmhhc2hlcyA9IGhhc2hlczsKKyAg c2JfZGF0YWJhc2UtPmhhc2hfZW50cmllcysrOworCisgIHJldHVybiBHUlVCX0VSUl9OT05FOwor fQorCitzdGF0aWMgYm9vbAoraXNfaGFzaCAoY29uc3QgZ3J1Yl9wYWNrZWRfZ3VpZF90ICpndWlk KQoreworICAvKiBHVUlEIHR5cGUgb2YgdGhlIGJpbmFyeSBoYXNoLiAqLworICBpZiAoZ3J1Yl9t ZW1jbXAgKGd1aWQsICZHUlVCX1BLU19DRVJUX1NIQTI1Nl9HVUlELCBHUlVCX1BBQ0tFRF9HVUlE X1NJWkUpID09IDAgfHwKKyAgICAgIGdydWJfbWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9T SEEzODRfR1VJRCwgR1JVQl9QQUNLRURfR1VJRF9TSVpFKSA9PSAwIHx8CisgICAgICBncnViX21l bWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfU0hBNTEyX0dVSUQsIEdSVUJfUEFDS0VEX0dVSURf U0laRSkgPT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKKworICAvKiBHVUlEIHR5cGUgb2YgdGhlIGNl cnRpZmljYXRlIGhhc2guICovCisgIGlmIChncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NF UlRfWDUwOV9TSEEyNTZfR1VJRCwgR1JVQl9QQUNLRURfR1VJRF9TSVpFKSA9PSAwIHx8CisgICAg ICBncnViX21lbWNtcCAoZ3VpZCwgJkdSVUJfUEtTX0NFUlRfWDUwOV9TSEEzODRfR1VJRCwgR1JV Ql9QQUNLRURfR1VJRF9TSVpFKSA9PSAwIHx8CisgICAgICBncnViX21lbWNtcCAoZ3VpZCwgJkdS VUJfUEtTX0NFUlRfWDUwOV9TSEE1MTJfR1VJRCwgR1JVQl9QQUNLRURfR1VJRF9TSVpFKSA9PSAw KQorICAgIHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wK K2lzX3g1MDkgKGNvbnN0IGdydWJfcGFja2VkX2d1aWRfdCAqZ3VpZCkKK3sKKyAgaWYgKGdydWJf bWVtY21wIChndWlkLCAmR1JVQl9QS1NfQ0VSVF9YNTA5X0dVSUQsIEdSVUJfUEFDS0VEX0dVSURf U0laRSkgPT0gMCkKKyAgICByZXR1cm4gdHJ1ZTsKKworICByZXR1cm4gZmFsc2U7Cit9CisKIHN0 YXRpYyBib29sCiBpc19jZXJ0X21hdGNoIChjb25zdCBncnViX3g1MDlfY2VydF90ICpjZXJ0MSwg Y29uc3QgZ3J1Yl94NTA5X2NlcnRfdCAqY2VydDIpCiB7CkBAIC0xMzYsNyArMzE5LDMzIEBAIGlz X2NlcnRfbWF0Y2ggKGNvbnN0IGdydWJfeDUwOV9jZXJ0X3QgKmNlcnQxLCBjb25zdCBncnViX3g1 MDlfY2VydF90ICpjZXJ0MikKICAgcmV0dXJuIGZhbHNlOwogfQogCi0vKiBDaGVjayB0aGUgY2Vy dGlmaWNhdGUgcHJlc2VuY2UgaW4gdGhlIGRiIGxpc3QuICovCisvKiBDaGVjayB0aGUgY2VydGlm aWNhdGUgaGFzaCBwcmVzZW5jZSBpbiB0aGUgZGJ4IGxpc3QuICovCitzdGF0aWMgYm9vbAoraXNf Y2VydF9oYXNoX3ByZXNlbnRfaW5fZGJ4IChjb25zdCBncnViX3VpbnQ4X3QgKmRhdGEsIGNvbnN0 IGdydWJfc2l6ZV90IGRhdGFfc2l6ZSkKK3sKKyAgZ3J1Yl9lcnJfdCByYzsKKyAgZ3J1Yl91aW50 MzJfdCBpOworICBncnViX3NpemVfdCBjZXJ0X2hhc2hfc2l6ZSA9IDA7CisgIGdydWJfdWludDhf dCBjZXJ0X2hhc2hbR1JVQl9NQVhfSEFTSF9MRU5dID0geyAwIH07CisKKyAgZm9yIChpID0gMDsg aSA8IGRieC5oYXNoX2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZGJ4Lmhhc2hlc1tp XSA9PSBOVUxMKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgcmMgPSBnZW5lcmF0ZV9jZXJ0 X2hhc2ggKGRieC5oYXNoX3NpemVzW2ldLCBkYXRhLCBkYXRhX3NpemUsIGNlcnRfaGFzaCwgJmNl cnRfaGFzaF9zaXplKTsKKyAgICAgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQorICAgICAgICBj b250aW51ZTsKKworICAgICAgaWYgKGNlcnRfaGFzaF9zaXplID09IGRieC5oYXNoX3NpemVzW2ld ICYmCisgICAgICAgICAgZ3J1Yl9tZW1jbXAgKGRieC5oYXNoZXNbaV0sIGNlcnRfaGFzaCwgY2Vy dF9oYXNoX3NpemUpID09IDApCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICByZXR1 cm4gZmFsc2U7Cit9CisKKy8qIENoZWNrIHRoZSBjZXJ0aWZpY2F0ZSBwcmVzZW5jZSBpbiB0aGUg ZGIvZGJ4IGxpc3QuICovCiBzdGF0aWMgYm9vbAogY2hlY2tfY2VydF9wcmVzZW5jZSAoY29uc3Qg Z3J1Yl94NTA5X2NlcnRfdCAqY2VydF9pbiwgY29uc3Qgc2JfZGF0YWJhc2VfdCAqc2JfZGF0YWJh c2UpCiB7CkBAIC0xNDksNyArMzU4LDEwIEBAIGNoZWNrX2NlcnRfcHJlc2VuY2UgKGNvbnN0IGdy dWJfeDUwOV9jZXJ0X3QgKmNlcnRfaW4sIGNvbnN0IHNiX2RhdGFiYXNlX3QgKnNiX2RhCiAgIHJl dHVybiBmYWxzZTsKIH0KIAotLyogQWRkIHRoZSBjZXJ0aWZpY2F0ZSBpbnRvIHRoZSBkYiBsaXN0 ICovCisvKgorICogQWRkIHRoZSBjZXJ0aWZpY2F0ZSBpbnRvIHRoZSBkYiBsaXN0IGlmIGl0IGlz IG5vdCBwcmVzZW50IGluIHRoZSBkYnggYW5kIGRiIGxpc3QKKyAqIHdoZW4gaXNfZGIgaXMgdHJ1 ZS4gQWRkIHRoZSBjZXJ0aWZpY2F0ZSBpbnRvIHRoZSBkYnggbGlzdCB3aGVuIGlzX2RiIGlzIGZh bHNlLgorICovCiBzdGF0aWMgZ3J1Yl9lcnJfdAogYWRkX2NlcnRpZmljYXRlIChjb25zdCBncnVi X3VpbnQ4X3QgKmRhdGEsIGNvbnN0IGdydWJfc2l6ZV90IGRhdGFfc2l6ZSwKICAgICAgICAgICAg ICAgICAgc2JfZGF0YWJhc2VfdCAqc2JfZGF0YWJhc2UpCkBAIC0xNjcsMzAgKzM3OSw1NCBAQCBh ZGRfY2VydGlmaWNhdGUgKGNvbnN0IGdydWJfdWludDhfdCAqZGF0YSwgY29uc3QgZ3J1Yl9zaXpl X3QgZGF0YV9zaXplLAogICByYyA9IGdydWJfeDUwOV9jZXJ0X3BhcnNlIChkYXRhLCBkYXRhX3Np emUsIGNlcnQpOwogICBpZiAocmMgIT0gR1JVQl9FUlJfTk9ORSkKICAgICB7Ci0gICAgICBncnVi X2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJjYW5ub3QgYWRkIGEgY2VydGlmaWNhdGUgQ049JyVz JyB0byB0aGUgZGIgbGlzdFxuIiwKLSAgICAgICAgICAgICAgICAgICAgY2VydC0+c3ViamVjdCk7 CisgICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJjYW5ub3QgYWRkIGEgY2VydGlm aWNhdGUgQ049JyVzJyB0byB0aGUgJXMgbGlzdFxuIiwKKyAgICAgICAgICAgICAgICAgICAgY2Vy dC0+c3ViamVjdCwgKChzYl9kYXRhYmFzZS0+aXNfZGIgPT0gdHJ1ZSkgPyAiZGIiIDogImRieCIp KTsKICAgICAgIGdydWJfZnJlZSAoY2VydCk7CiAgICAgICByZXR1cm4gcmM7CiAgICAgfQogCisg IC8qCisgICAqIE9ubHkgY2hlY2tzIHRoZSBjZXJ0aWZpY2F0ZSBhZ2FpbnN0IGRieCBpZiBpc19k YiBpcyB0cnVlIHdoZW4KKyAgICogZHluYW1pYyBrZXkgbWFuYWdlbWVudCBpcyBlbmFibGVkCisg ICAqLworICBpZiAoYXBwZW5kX2tleV9tZ210ID09IHRydWUpCisgICAgeworICAgICAgaWYgKHNi X2RhdGFiYXNlLT5pc19kYiA9PSB0cnVlKQorICAgICAgICB7CisgICAgICAgICAgaWYgKGlzX2Nl cnRfaGFzaF9wcmVzZW50X2luX2RieCAoZGF0YSwgZGF0YV9zaXplKSA9PSB0cnVlIHx8CisgICAg ICAgICAgICAgIGNoZWNrX2NlcnRfcHJlc2VuY2UgKGNlcnQsICZkYngpID09IHRydWUpCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGFkZCBhIGNlcnRpZmljYXRlIENOPScl cycsIGFzIGl0IGlzIHByZXNlbnQgaW4gdGhlIGRieCBsaXN0IiwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjZXJ0LT5zdWJqZWN0KTsKKyAgICAgICAgICAgICAgcmMgPSBHUlVCX0VSUl9B Q0NFU1NfREVOSUVEOworICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICB9Cisg ICAgICAgIH0KKyAgICB9CisKICAgaWYgKGNoZWNrX2NlcnRfcHJlc2VuY2UgKGNlcnQsIHNiX2Rh dGFiYXNlKSA9PSB0cnVlKQogICAgIHsKICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2ln IiwKLSAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBhZGQgYSBjZXJ0aWZpY2F0ZSBDTj0nJXMn LCBhcyBpdCBpcyBwcmVzZW50IGluIHRoZSBkYiBsaXN0IiwKLSAgICAgICAgICAgICAgICAgICAg Y2VydC0+c3ViamVjdCk7Ci0gICAgICBncnViX3g1MDlfY2VydF9yZWxlYXNlIChjZXJ0KTsKLSAg ICAgIGdydWJfZnJlZSAoY2VydCk7Ci0KLSAgICAgIHJldHVybiBHUlVCX0VSUl9FWElTVFM7Cisg ICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYWRkIGEgY2VydGlmaWNhdGUgQ049JyVzJywgYXMg aXQgaXMgcHJlc2VudCBpbiB0aGUgJXMgbGlzdCIsCisgICAgICAgICAgICAgICAgICAgIGNlcnQt PnN1YmplY3QsICgoc2JfZGF0YWJhc2UtPmlzX2RiID09IHRydWUpID8gImRiIiA6ICJkYngiKSk7 CisgICAgICByYyA9IEdSVUJfRVJSX0VYSVNUUzsKKyAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAK LSAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAiYWRkZWQgYSBjZXJ0aWZpY2F0ZSBDTj0n JXMnIHRvIHRoZSBkYiBsaXN0XG4iLAotICAgICAgICAgICAgICAgIGNlcnQtPnN1YmplY3QpOwor ICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJhZGRlZCBhIGNlcnRpZmljYXRlIENOPScl cycgdG8gdGhlICVzIGxpc3RcbiIsCisgICAgICAgICAgICAgICAgY2VydC0+c3ViamVjdCwgKChz Yl9kYXRhYmFzZS0+aXNfZGIgPT0gdHJ1ZSkgPyAiZGIiIDogImRieCIpKTsKIAogICBjZXJ0LT5u ZXh0ID0gc2JfZGF0YWJhc2UtPmNlcnRzOwogICBzYl9kYXRhYmFzZS0+Y2VydHMgPSBjZXJ0Owog ICBzYl9kYXRhYmFzZS0+Y2VydF9lbnRyaWVzKys7CiAKKyAgcmV0dXJuIHJjOworCisgZmFpbDoK KyAgZ3J1Yl94NTA5X2NlcnRfcmVsZWFzZSAoY2VydCk7CisgIGdydWJfZnJlZSAoY2VydCk7CisK ICAgcmV0dXJuIHJjOwogfQogCkBAIC0zODgsNiArNjI0LDY4IEBAIGdydWJfdmVyaWZ5X2FwcGVu ZGVkX3NpZ25hdHVyZSAoY29uc3QgZ3J1Yl91aW50OF90ICpidWYsIGdydWJfc2l6ZV90IGJ1ZnNp emUpCiAgIHJldHVybiBlcnI7CiB9CiAKKy8qIEFkZCB0aGUgWC41MDkgY2VydGlmaWNhdGVzL2Jp bmFyeSBoYXNoIHRvIHRoZSBkYiBsaXN0IGZyb20gUEtTLiAqLworc3RhdGljIGdydWJfZXJyX3QK K2xvYWRfcGtzMmRiICh2b2lkKQoreworICBncnViX2Vycl90IHJjOworICBncnViX3VpbnQzMl90 IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IHBrc19rZXlzdG9yZS0+ZGJfZW50cmllczsgaSsrKQor ICAgIHsKKyAgICAgIGlmIChpc19oYXNoICgmcGtzX2tleXN0b3JlLT5kYltpXS5ndWlkKSA9PSB0 cnVlKQorICAgICAgICB7CisgICAgICAgICAgcmMgPSBhZGRfaGFzaCAocGtzX2tleXN0b3JlLT5k YltpXS5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBrc19rZXlzdG9yZS0+ZGJbaV0u ZGF0YV9zaXplLCAmZGIpOworICAgICAgICAgIGlmIChyYyA9PSBHUlVCX0VSUl9PVVRfT0ZfTUVN T1JZKQorICAgICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICB9CisgICAgICBlbHNlIGlmIChp c194NTA5ICgmcGtzX2tleXN0b3JlLT5kYltpXS5ndWlkKSA9PSB0cnVlKQorICAgICAgICB7Cisg ICAgICAgICAgcmMgPSBhZGRfY2VydGlmaWNhdGUgKHBrc19rZXlzdG9yZS0+ZGJbaV0uZGF0YSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtzX2tleXN0b3JlLT5kYltpXS5kYXRh X3NpemUsICZkYik7CisgICAgICAgICAgaWYgKHJjID09IEdSVUJfRVJSX09VVF9PRl9NRU1PUlkp CisgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAg Z3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAidW5zdXBwb3J0ZWQgc2lnbmF0dXJlIGRhdGEg dHlwZSBhbmQgIgorICAgICAgICAgICAgICAgICAgICAgICJza2lwcGVkICgldSlcbiIsIGkgKyAx KTsKKyAgICB9CisKKyAgcmV0dXJuIEdSVUJfRVJSX05PTkU7Cit9CisKKy8qIEFkZCB0aGUgY2Vy dGlmaWNhdGVzIGFuZCBjZXJ0aWZpY2F0ZS9iaW5hcnkgaGFzaCB0byB0aGUgZGJ4IGxpc3QgZnJv bSBQS1MuICovCitzdGF0aWMgZ3J1Yl9lcnJfdAorbG9hZF9wa3MyZGJ4ICh2b2lkKQoreworICBn cnViX2Vycl90IHJjOworICBncnViX3VpbnQzMl90IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IHBr c19rZXlzdG9yZS0+ZGJ4X2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoaXNfeDUwOSAo JnBrc19rZXlzdG9yZS0+ZGJ4W2ldLmd1aWQpID09IHRydWUpCisgICAgICAgIHsKKyAgICAgICAg ICByYyA9IGFkZF9jZXJ0aWZpY2F0ZSAocGtzX2tleXN0b3JlLT5kYnhbaV0uZGF0YSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtzX2tleXN0b3JlLT5kYnhbaV0uZGF0YV9zaXpl LCAmZGJ4KTsKKyAgICAgICAgICBpZiAocmMgPT0gR1JVQl9FUlJfT1VUX09GX01FTU9SWSkKKyAg ICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgfQorICAgICAgZWxzZSBpZiAoaXNfaGFzaCAo JnBrc19rZXlzdG9yZS0+ZGJ4W2ldLmd1aWQpID09IHRydWUpCisgICAgICAgIHsKKyAgICAgICAg ICByYyA9IGFkZF9oYXNoIChwa3Nfa2V5c3RvcmUtPmRieFtpXS5kYXRhLAorICAgICAgICAgICAg ICAgICAgICAgICAgIHBrc19rZXlzdG9yZS0+ZGJ4W2ldLmRhdGFfc2l6ZSwgJmRieCk7CisgICAg ICAgICAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAgICAgICByZXR1cm4gcmM7Cisg ICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWci LCAidW5zdXBwb3J0ZWQgc2lnbmF0dXJlIGRhdGEgdHlwZSBhbmQgIgorICAgICAgICAgICAgICAg ICAgICAgICJza2lwcGVkICgldSlcbiIsIGkgKyAxKTsKKyAgICB9CisKKyAgcmV0dXJuIEdSVUJf RVJSX05PTkU7Cit9CisKIC8qCiAgKiBFeHRyYWN0IHRoZSBYLjUwOSBjZXJ0aWZpY2F0ZXMgZnJv bSB0aGUgRUxGIE5vdGUgaGVhZGVyLAogICogcGFyc2UgaXQsIGFuZCBhZGQgaXQgdG8gdGhlIGRi IGxpc3QuCkBAIC00MjgsMTEgKzcyNiwzNiBAQCBsb2FkX2VsZjJkYiAodm9pZCkKICAgICB9CiB9 CiAKKy8qCisgKiBFeHRyYWN0IHRydXN0ZWQgYW5kIGRpc3RydXN0ZWQga2V5cyBmcm9tIFBLUyBh bmQgc3RvcmUgdGhlbSBpbgorICogdGhlIGRiIGFuZCBkYnggbGlzdC4KKyAqLworc3RhdGljIHZv aWQKK2NyZWF0ZV9kYnNfZnJvbV9wa3MgKHZvaWQpCit7CisgIGdydWJfZXJyX3QgZXJyOworCisg IGVyciA9IGxvYWRfcGtzMmRieCAoKTsKKyAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorICAg IGdydWJfcHJpbnRmICgid2FybmluZzogZGJ4IGxpc3QgbWlnaHQgbm90IGJlIGZ1bGx5IHBvcHVs YXRlZFxuIik7CisKKyAgZXJyID0gbG9hZF9wa3MyZGIgKCk7CisgIGlmIChlcnIgIT0gR1JVQl9F UlJfTk9ORSkKKyAgICBncnViX3ByaW50ZiAoIndhcm5pbmc6IGRiIGxpc3QgbWlnaHQgbm90IGJl IGZ1bGx5IHBvcHVsYXRlZFxuIik7CisKKyAgZ3J1Yl9wa3NfdG1wX2ZyZWUgKCk7CisgIGdydWJf ZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInRoZSBkYiBsaXN0IG5vdyBoYXMgJXUga2V5c1xuIgor ICAgICAgICAgICAgICAgICJ0aGUgZGJ4IGxpc3Qgbm93IGhhcyAldSBrZXlzXG4iLAorICAgICAg ICAgICAgICAgIGRiLmhhc2hfZW50cmllcyArIGRiLmNlcnRfZW50cmllcywKKyAgICAgICAgICAg ICAgICBkYnguaGFzaF9lbnRyaWVzICsgZGJ4LmNlcnRfZW50cmllcyk7Cit9CisKIC8qIEZyZWUg ZGIgbGlzdCBtZW1vcnkgKi8KIHN0YXRpYyB2b2lkCiBmcmVlX2RiX2xpc3QgKHZvaWQpCiB7CiAg IGdydWJfeDUwOV9jZXJ0X3QgKmNlcnQ7CisgIGdydWJfdWludDMyX3QgaTsKIAogICB3aGlsZSAo ZGIuY2VydHMgIT0gTlVMTCkKICAgICB7CkBAIC00NDIsOSArNzY1LDM3IEBAIGZyZWVfZGJfbGlz dCAodm9pZCkKICAgICAgIGdydWJfZnJlZSAoY2VydCk7CiAgICAgfQogCisgIGZvciAoaSA9IDA7 IGkgPCBkYi5oYXNoX2VudHJpZXM7IGkrKykKKyAgICBncnViX2ZyZWUgKGRiLmhhc2hlc1tpXSk7 CisKKyAgZ3J1Yl9mcmVlIChkYi5oYXNoZXMpOworICBncnViX2ZyZWUgKGRiLmhhc2hfc2l6ZXMp OwogICBncnViX21lbXNldCAoJmRiLCAwLCBzaXplb2YgKHNiX2RhdGFiYXNlX3QpKTsKIH0KIAor LyogRnJlZSBkYnggbGlzdCBtZW1vcnkgKi8KK3N0YXRpYyB2b2lkCitmcmVlX2RieF9saXN0ICh2 b2lkKQoreworICBncnViX3g1MDlfY2VydF90ICpjZXJ0OworICBncnViX3VpbnQzMl90IGk7CisK KyAgd2hpbGUgKGRieC5jZXJ0cyAhPSBOVUxMKQorICAgIHsKKyAgICAgIGNlcnQgPSBkYnguY2Vy dHM7CisgICAgICBkYnguY2VydHMgPSBkYnguY2VydHMtPm5leHQ7CisgICAgICBncnViX3g1MDlf Y2VydF9yZWxlYXNlIChjZXJ0KTsKKyAgICAgIGdydWJfZnJlZSAoY2VydCk7CisgICAgfQorCisg IGZvciAoaSA9IDA7IGkgPCBkYnguaGFzaF9lbnRyaWVzOyBpKyspCisgICAgZ3J1Yl9mcmVlIChk YnguaGFzaGVzW2ldKTsKKworICBncnViX2ZyZWUgKGRieC5oYXNoZXMpOworICBncnViX2ZyZWUg KGRieC5oYXNoX3NpemVzKTsKKyAgZ3J1Yl9tZW1zZXQgKCZkYngsIDAsIHNpemVvZiAoc2JfZGF0 YWJhc2VfdCkpOworfQorCiBzdGF0aWMgY29uc3QgY2hhciAqCiBncnViX2Vudl9yZWFkX3NlYyAo c3RydWN0IGdydWJfZW52X3ZhciAqdmFyIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YWwgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQpA QCAtNjM3LDEwICs5ODgsMjIgQEAgR1JVQl9NT0RfSU5JVCAoYXBwZW5kZWRzaWcpCiAgIGlmIChy YyAhPSBBU04xX1NVQ0NFU1MpCiAgICAgZ3J1Yl9mYXRhbCAoImVycm9yIGluaXRpbmcgQVNOLjEg ZGF0YSBzdHJ1Y3R1cmVzOiAlZDogJXNcbiIsIHJjLCBhc24xX3N0cmVycm9yIChyYykpOwogCi0g IC8qIEV4dHJhY3QgdHJ1c3RlZCBrZXlzIGZyb20gRUxGIE5vdGUgYW5kIHN0b3JlIHRoZW0gaW4g dGhlIGRiLiAqLwotICBsb2FkX2VsZjJkYiAoKTsKLSAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRz aWciLCAidGhlIGRiIGxpc3Qgbm93IGhhcyAldSBzdGF0aWMga2V5c1xuIiwKLSAgICAgICAgICAg ICAgICBkYi5jZXJ0X2VudHJpZXMpOworICAvKgorICAgKiBJZiBzaWduYXR1cmUgdmVyaWZpY2F0 aW9uIGlzIGVuYWJsZWQgd2l0aCB0aGUgZHluYW1pYyBrZXkgbWFuYWdlbWVudCwKKyAgICogRXh0 cmFjdCB0cnVzdGVkIGFuZCBkaXN0cnVzdGVkIGtleXMgZnJvbSBQS1MgYW5kIHN0b3JlIHRoZW0g aW4gdGhlIGRiIGFuZCBkYnggbGlzdC4KKyAgICovCisgIGlmIChhcHBlbmRfa2V5X21nbXQgPT0g dHJ1ZSkKKyAgICBjcmVhdGVfZGJzX2Zyb21fcGtzICgpOworICAvKgorICAgKiBJZiBzaWduYXR1 cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQgd2l0aCB0aGUgc3RhdGljIGtleSBtYW5hZ2VtZW50 LAorICAgKiBleHRyYWN0IHRydXN0ZWQga2V5cyBmcm9tIEVMRiBOb3RlIGFuZCBzdG9yZSB0aGVt IGluIHRoZSBkYiBsaXN0LgorICAgKi8KKyAgZWxzZQorICAgIHsKKyAgICAgIGxvYWRfZWxmMmRi ICgpOworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAidGhlIGRiIGxpc3Qgbm93 IGhhcyAldSBzdGF0aWMga2V5c1xuIiwKKyAgICAgICAgICAgICAgICAgICAgZGIuY2VydF9lbnRy aWVzKTsKKyAgICB9CiAKICAgZ3J1Yl92ZXJpZmllcl9yZWdpc3RlciAoJmdydWJfYXBwZW5kZWRz aWdfdmVyaWZpZXIpOwogICBncnViX2RsX3NldF9wZXJzaXN0ZW50IChtb2QpOwpAQCAtNjU0LDYg KzEwMTcsNyBAQCBHUlVCX01PRF9GSU5JIChhcHBlbmRlZHNpZykKICAgICovCiAKICAgZnJlZV9k Yl9saXN0ICgpOworICBmcmVlX2RieF9saXN0ICgpOwogICBncnViX3JlZ2lzdGVyX3ZhcmlhYmxl X2hvb2sgKCJjaGVja19hcHBlbmRlZF9zaWduYXR1cmVzIiwgTlVMTCwgTlVMTCk7CiAgIGdydWJf ZW52X3Vuc2V0ICgiY2hlY2tfYXBwZW5kZWRfc2lnbmF0dXJlcyIpOwogICBncnViX3JlZ2lzdGVy X3ZhcmlhYmxlX2hvb2sgKCJhcHBlbmRlZHNpZ19rZXlfbWdtdCIsIE5VTEwsIE5VTEwpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9ncnViL2VmaS9wa3MuaCBiL2luY2x1ZGUvZ3J1Yi9lZmkvcGtzLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5mZjMwNmY1OTEKLS0tIC9kZXYv bnVsbAorKysgYi9pbmNsdWRlL2dydWIvZWZpL3Brcy5oCkBAIC0wLDAgKzEsMTEyIEBACisvKgor ICogQ29weXJpZ2h0IChjKSAyMDA2IC0gMjAxNSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMgcmVzZXJ2ZWQuIFRoaXMKKyAqIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJp YWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUKKyAqIHVuZGVyIHRoZSB0ZXJtcyBh bmQgY29uZGl0aW9ucyBvZiB0aGUgMi1DbGF1c2UgQlNEIExpY2Vuc2Ugd2hpY2gKKyAqIGFjY29t cGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0 aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z IGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICogdGhpcyBsaXN0IG9mIGNvbmRp dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1 dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluIHRoZQorICogZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIK KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xB SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVU T1JTIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg VEhFCisgKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKiBodHRwczovL2dpdGh1 Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZyAoZWRrMi1zdGFnaW5nIHJlcG8gb2YgdGlhbm9j b3JlKSwKKyAqIHRoZSBJbWFnZUF1dGhlbnRpY2F0aW9uLmggZmlsZSB1bmRlciBpdCwgYW5kIGhl cmUncyB0aGUgY29weXJpZ2h0IGFuZCBsaWNlbnNlLgorICoKKyAqIE1kZVBrZy9JbmNsdWRlL0d1 aWQvSW1hZ2VBdXRoZW50aWNhdGlvbi5oCisgKgorICogQ29weXJpZ2h0IDIwMjIsIDIwMjMsIDIw MjQsIDIwMjUgSUJNIENvcnAuCisgKi8KKworI2lmbmRlZiBQS1NfSEVBREVSCisjZGVmaW5lIFBL U19IRUFERVIgICAxCisKKyNpbmNsdWRlIDxncnViL3R5cGVzLmg+CisKKy8qCisgKiBJdCBpcyBk ZXJpdmVkIGZyb20gRUZJX0NFUlRfWDUwOV9HVUlELgorICogaHR0cHM6Ly9naXRodWIuY29tL3Rp YW5vY29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFn ZUF1dGhlbnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BLU19DRVJUX1g1MDlfR1VJRCBc CisgIChncnViX2d1aWRfdCkgXAorICB7IDB4YTE1OWMwYTUsIDB4ZTQ5NCwgMHhhNzRhLCBcCisg ICAgeyAweDg3LCAweGI1LCAweGFiLCAweDE1LCAweDVjLCAweDJiLCAweGYwLCAweDcyIH0gXAor ICB9CisKKy8qCisgKiBJdCBpcyBkZXJpdmVkIGZyb20gRUZJX0NFUlRfU0hBMjU2X0dVSUQuCisg KiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9iL21hc3Rlci9N ZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAorICovCisjZGVmaW5lIEdS VUJfUEtTX0NFUlRfU0hBMjU2X0dVSUQgXAorICAoZ3J1Yl9ndWlkX3QpIFwKKyAgeyAweDI2MTZj NGMxLCAweDRjNTAsIDB4OTI0MCwgXAorICAgIHsgMHhhYywgMHhhOSwgMHg0MSwgMHhmOSwgMHgz NiwgMHg5MywgMHg0MywgMHgyOCB9IFwKKyAgfQorCisvKgorICogSXQgaXMgZGVyaXZlZCBmcm9t IEVGSV9DRVJUX1NIQTM4NF9HVUlELgorICogaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9l ZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRp Y2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BLU19DRVJUX1NIQTM4NF9HVUlEIFwKKyAgKGdy dWJfZ3VpZF90KSBcCisgIHsgMHgwNzUzM2VmZiwgMHhkMDlmLCAweGM5NDgsIFwKKyAgICB7IDB4 ODUsIDB4ZjEsIDB4OGEsIDB4ZDUsIDB4NmMsIDB4NzAsIDB4MWUsIDB4MSB9IFwKKyAgfQorCisv KgorICogSXQgaXMgZGVyaXZlZCBmcm9tIEVGSV9DRVJUX1NIQTUxMl9HVUlELgorICogaHR0cHM6 Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyLXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0lu Y2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BLU19D RVJUX1NIQTUxMl9HVUlEIFwKKyAgKGdydWJfZ3VpZF90KSBcCisgIHsgMHhhZTBmM2UwOSwgMHhj NGE2LCAweDUwNGYsIFwKKyAgICB7IDB4OWYsIDB4MWIsIDB4ZDQsIDB4MWUsIDB4MmIsIDB4ODks IDB4YzEsIDB4OWEgfSBcCisgIH0KKworLyoKKyAqIEl0IGlzIGRlcml2ZWQgZnJvbSBFRklfQ0VS VF9YNTA5X1NIQTI1Nl9HVUlELgorICogaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsy LXN0YWdpbmcvYmxvYi9tYXN0ZXIvTWRlUGtnL0luY2x1ZGUvR3VpZC9JbWFnZUF1dGhlbnRpY2F0 aW9uLmgKKyAqLworI2RlZmluZSBHUlVCX1BLU19DRVJUX1g1MDlfU0hBMjU2X0dVSUQgXAorICAo Z3J1Yl9ndWlkX3QpIFwKKyAgeyAweDkyYTRkMjNiLCAweGMwOTYsIDB4Nzk0MCwgXAorICAgIHsg MHhiNCwgMHgyMCwgMHhmYywgMHhmOSwgMHg4ZSwgMHhmMSwgMHgwMywgMHhlZCB9IFwKKyAgfQor CisvKgorICogSXQgaXMgZGVyaXZlZCBmcm9tIEVGSV9DRVJUX1g1MDlfU0hBMzg0X0dVSUQuCisg KiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9iL21hc3Rlci9N ZGVQa2cvSW5jbHVkZS9HdWlkL0ltYWdlQXV0aGVudGljYXRpb24uaAorICovCisjZGVmaW5lIEdS VUJfUEtTX0NFUlRfWDUwOV9TSEEzODRfR1VJRCAgICAgXAorICAoZ3J1Yl9ndWlkX3QpIFwKKyAg eyAweDZlODc3NjcwLCAweGMyODAsIDB4ZTY0ZSwgXAorICAgIHsgMHhhYSwgMHhkMiwgMHgyOCwg MHhiMywgMHg0OSwgMHhhNiwgMHg4NiwgMHg1YiB9IFwKKyAgfQorCisvKgorICogSXQgaXMgZGVy aXZlZCBmcm9tIEVGSV9DRVJUX1g1MDlfU0hBNTEyX0dVSUQuCisgKiBodHRwczovL2dpdGh1Yi5j b20vdGlhbm9jb3JlL2VkazItc3RhZ2luZy9ibG9iL21hc3Rlci9NZGVQa2cvSW5jbHVkZS9HdWlk L0ltYWdlQXV0aGVudGljYXRpb24uaAorICovCisjZGVmaW5lIEdSVUJfUEtTX0NFUlRfWDUwOV9T SEE1MTJfR1VJRCBcCisgIChncnViX2d1aWRfdCkgXAorICB7IDB4NjNiZjZkNDQsIDB4MDIyNSwg MHhkYTRjLCBcCisgICAgeyAweGJjLCAweGZhLCAweDI0LCAweDY1LCAweGQyLCAweGIwLCAweGZl LCAweDlkIH0gXAorICB9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL3R5cGVz LmggYi9pbmNsdWRlL2dydWIvdHlwZXMuaAppbmRleCA0NTA3OWJmNjUuLmIzYmE3NjJmYyAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9ncnViL3R5cGVzLmgKKysrIGIvaW5jbHVkZS9ncnViL3R5cGVzLmgK QEAgLTM3OSw2ICszNzksOCBAQCBzdHJ1Y3QgZ3J1Yl9ndWlkCiB9IF9fYXR0cmlidXRlX18gKChh bGlnbmVkKDQpKSk7CiB0eXBlZGVmIHN0cnVjdCBncnViX2d1aWQgZ3J1Yl9ndWlkX3Q7CiAKKyNk ZWZpbmUgR1JVQl9HVUlEX1NJWkUgICAgKHNpemVvZiAoZ3J1Yl9ndWlkX3QpKQorCiBzdHJ1Y3Qg Z3J1Yl9wYWNrZWRfZ3VpZAogewogICBncnViX3VpbnQzMl90IGRhdGExOwpAQCAtMzg4LDQgKzM5 MCw2IEBAIHN0cnVjdCBncnViX3BhY2tlZF9ndWlkCiB9IEdSVUJfUEFDS0VEOwogdHlwZWRlZiBz dHJ1Y3QgZ3J1Yl9wYWNrZWRfZ3VpZCBncnViX3BhY2tlZF9ndWlkX3Q7CiAKKyNkZWZpbmUgR1JV Ql9QQUNLRURfR1VJRF9TSVpFICAgIChzaXplb2YgKGdydWJfcGFja2VkX2d1aWRfdCkpCisKICNl bmRpZiAvKiAhIEdSVUJfVFlQRVNfSEVBREVSICovCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQp CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1k ZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK