Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uN4ou-00BE45-6Q for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jun 2025 07:15:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uN4or-004v1R-EH for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Jun 2025 07:15:22 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uN4oq-004v1J-Si for pgsql-hackers@lists.postgresql.org; Thu, 05 Jun 2025 07:15:21 +0000 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uN4oo-000Jgr-22 for pgsql-hackers@lists.postgresql.org; Thu, 05 Jun 2025 07:15:20 +0000 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 554NUx2a022799 for ; Thu, 5 Jun 2025 07:15:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-type:date:from:in-reply-to:message-id:mime-version :references:reply-to:subject:to; s=pp1; bh=Ppwx49EAy30N80sVfQQKr 1eOq9xsOLYz+iy2TgdcZQA=; b=d24QHJHRqy6T3bXDYgXVfUfW1nuGWLq/5YKTc /WmIPHuyZHKEr4RF3MuMk2Gd2UpJWtsVmzqIdNT048bgRc9+wPkcH8MrLMdRWYUF iGL6TCVlnzW87FJIjRHIwzV2hQHdbhelJ0kZ8w7bz7Q9PI5bQoFA2RS5SlNNz5LJ 3SPHHrgS2ftql1tgGoZiSvDzPYLIrGSfUVkFnOLe54Mvc9R9NTKtq3yBQjNpVQzb Vj+92HQSlSIy6Aiu5dCEM35nJxDM8FyXcJEf8A/cbwqpyWl4FtIy10gVNOKnEZQb Ez9Qk6c3JdxnA7vFXYAhyr3yfuBRj6i66TbHlkrtHZwLIShRw== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 471geyy711-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 05 Jun 2025 07:15:14 +0000 (GMT) Received: from m0360083.ppops.net (m0360083.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 555790ka031350 for ; Thu, 5 Jun 2025 07:15:14 GMT Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2062.outbound.protection.outlook.com [40.107.244.62]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 471geyy70y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 05 Jun 2025 07:15:14 +0000 (GMT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KgpWfN5F3EyCyK/SvPIMlFRKKi/8FoUCrMzLF8SwsmlWVpUWX7MdW7pelfFFRYiWiv0vW7LEPe0869Bajx5sNaN6/VsDfUS3b9HV2E64jrsy4XJl2KlfdJ9rsflnldpmdb+fssGulvi1GBZjl0WznK3oiTT6Vb3qnGUTGlIpPsE1t9IQ1Yd9wLNHiwBqQXf0/SDnelEW/EvE9tlqN9+5HMp/bG12Yu9slaHlzQ1o5AsjhOLF306Y71BVki38qVq6N6Xal/zkbt72Bcl9hWDx/UtMf0lRRReCBwC4ETCQUc9h+Aadosu3at1xqossw53A8I5dPZWLZQxIq0f/soI+7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Ppwx49EAy30N80sVfQQKr1eOq9xsOLYz+iy2TgdcZQA=; b=jeRlwIJuEMaRLURtkW/QepkcjsnZ83VHctGfCDYy56mLPmaYKKLXEVzsI1m/5uns9F6Bv0cnEt8f/h5XCVfLEzmOzp8R4hgHXi2ue4+pIL4IzC0VOlDY9RIFVBP6C1u57kPXV1eRcC1WPb8nKdWWuvPSNiFQGCgF5Wu9lGpjkxTGqwtHbTiSDLxddxmrURUoM5xFFFhF4GlJxYe7b8EI9Ot2JFy/uqe0NMiAKAI6wVYClq8DxjuVZrjm7cfpVZmu17zB7p0IEPeXPLN5eZ3BpmynwBevMDVYJJI514KUCU8ogJVVaIHdxHq/n1lNRSZcNhF2CyNsq8d0mBtQP6kD4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ibm.com; dmarc=pass action=none header.from=ibm.com; dkim=pass header.d=ibm.com; arc=none Received: from PH7PR15MB6407.namprd15.prod.outlook.com (2603:10b6:510:2fc::21) by SA1PR15MB4965.namprd15.prod.outlook.com (2603:10b6:806:1d4::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.22; Thu, 5 Jun 2025 07:15:10 +0000 Received: from PH7PR15MB6407.namprd15.prod.outlook.com ([fe80::3f86:7e69:c339:b0bc]) by PH7PR15MB6407.namprd15.prod.outlook.com ([fe80::3f86:7e69:c339:b0bc%4]) with mapi id 15.20.8792.034; Thu, 5 Jun 2025 07:15:10 +0000 From: Eduard Stefes To: "johncnaylorls@gmail.com" CC: "pgsql-hackers@lists.postgresql.org" , "brueckner@linux.ibm.com" , "iii@linux.ibm.com" , Eduard Stefes Subject: [V2] Adding new CRC32C implementation for IBM S390X Thread-Topic: [V2] Adding new CRC32C implementation for IBM S390X Thread-Index: AQHb1emSJ/nOkg175EifUtPY48kl0w== Date: Thu, 5 Jun 2025 07:15:10 +0000 Message-ID: <2078ad39a456088fd4a5ea98084e7d72bdf8ff2b.camel@ibm.com> References: <918d9941377f6e83fbfebe96ba496ccaefa3803f.camel@ibm.com> <421931ea921dd94340808089fc1dfcf967c4c163.camel@ibm.com> In-Reply-To: Reply-To: Eduard Stefes Accept-Language: en-US, de-CH Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH7PR15MB6407:EE_|SA1PR15MB4965:EE_ x-ms-office365-filtering-correlation-id: 83120f5b-65a0-4a61-fcb0-08dda400b57a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|10070799003|366016|376014|38070700018|4053099003; x-microsoft-antispam-message-info: =?utf-8?B?RXNNdVNTKzhSSHQ5WG1QQmlPcEpRZUhacDhvOUo2YlI0SmJmR01DWE9BM0hC?= =?utf-8?B?RXdWN2lwUVdxQUpZZG9VR054MGt3SU9WcG1XNE1QNzlwQWFSQWtqM0Rycngv?= =?utf-8?B?NUxSSGtpL2w4Y0IwUXNVYUZaeHNjV3ROT3hnb1dNS0dMbGVYWHhjVStaRDA3?= =?utf-8?B?ZHFKS3R5ZWgreHA0b0djZHFIM0Q5YWRlVE55bkYxbFRpVUozYnh1N0lMZTZO?= =?utf-8?B?RTk0alJhU1lkQjJyamQ2N3hkcDBSL3NsNmxsS2xpa0dwT1pJMmtIY21kdE53?= =?utf-8?B?QmVXUVN6TXU3Mjg0SHlpWlg2VUlLZFh5TnJYZ1RwZXlwWlJ4aFJVeGJCTFRM?= =?utf-8?B?Rld6N0h3dkNnZXoycDJIWCtZZ0U0dVpYR1NkN2pVMjhrdVVxQ3N5S2hza0Js?= =?utf-8?B?d1FsVDUwWFVRMy9QSWZIL0ZDTmtSNGRDTDJHRUF6T3pVL2ZyMUcxa1NqTlJK?= =?utf-8?B?RWJPeS9pTWgwS1Y3Y3c1VGZ4cG5HcjBQM00xM0xTMnV5aFhLTDY3R1M5U1Ba?= =?utf-8?B?ekFiVmNqd3J6aWZmV2Z0amJjSTNlUG1sMEVRL3JIMzJGZ0VwY2VlQVhQTkgr?= =?utf-8?B?NHkyZWZGRlpzK2l5V3RRVkdQVlBYVkZqN2F5Sm1ZRjRreUN5bnFVQ1U5bmlz?= =?utf-8?B?MktHSllCdW9ETWt4ZG00T2w3NzFZSmltUGFxOHArMWhhRm5NT0lqa0xoNFpJ?= =?utf-8?B?SjJ6ZXNkcXRkdjB1RjRPVEd4YmRvRlVDK1lPL2ZsQndkOExKMHQ4aXI4cnVX?= =?utf-8?B?TlFDSGxNZDNCMjd4WnZmbU5hQTFMUG5ZQ0lKYmxXNHV6THU4eUhnR0xkeEs3?= =?utf-8?B?ZXFwZFpmTXpCemdhNTIvb1ZsTGZDTTF0L3NGdTVuNWlqNlJ1OXdkajcxUG1t?= =?utf-8?B?WlRWQytMV0tRT21KQ1RHUE9mVU1GdVJ1dmM0SlZ0RHNLSVAzcEtROFF6Q1Zn?= =?utf-8?B?eitobHprbTBJVzJGWHZXRmRmWHhnSXlsb21MUUppdVpENjJwNDc5S2ZkVVNo?= =?utf-8?B?UFB3MGI3UHo5amhGRkZtTTdRaURJbnp0UkRNVXNEMmlzNFljdlhHclpkUVBV?= =?utf-8?B?QWxyYm43aFB5M3RDTlVvM0F3Slp0emNGREZxR1M0ZGlrci9JVzVmd2g4dEZW?= =?utf-8?B?eUlQOGRqbVYra29sTDZoQW5rdGtiY0hCUEo4cTVLZ0pnQ21jMUZobHRWRzh6?= =?utf-8?B?QTZwQ3E4NUJnZ2RSNlUxZUVLV0pxT2E4MlZJTS96NGlRVTBaM1Zsd3RucFBJ?= =?utf-8?B?QVpvSGlYZmFWdHJVdmpCdk9JbE5IVitzaGRJWXBneVFVWWc1Y1IwanU1OWdH?= =?utf-8?B?K25wRUc1cWtQUDBiRk9hbDVROUtubXo3VTh0RUdPbUFXZG55UExQNy91dXpw?= =?utf-8?B?RlJPMVZKbWJOa2M0YkdNemtjK0dialZnOVM5Tnl4NFBTTXJuZmRpSGpBb3ZJ?= =?utf-8?B?Q0R4ajdJUHJZL1E4VXFKa1diemdIOUNlb1M0QmdBSG9pTmNyQVJ6UkFGV1Fy?= =?utf-8?B?b1U3NHpOTy9yS0FaY0E4YjBSNTRhenZQQzZGTlpoQVdQdFByQzNkcXAwaTND?= =?utf-8?B?b0JnaEc4aWllM0NuRGMrM0VYakdnWGI5WStzVlQvUHpDZWxpY3NmZmwzazV1?= =?utf-8?B?RktvRktqODZKMjNLcnNMZ1FzZjF3VE5HRzYvbUhNUURqOWN5K3k0MGx3bk9h?= =?utf-8?B?UTFhQ25LSWdOalZtSGJoVUF1MkJEWjQ4OXBJY1ArazQyOG5WOGY5YTV3aDg5?= =?utf-8?B?aTZTcmJMcTlpTit3aXIyd2h2YmpLbWFWQ1VEYjB2YUtpZUQvWnR3Q29SQXZz?= =?utf-8?B?L2F3QlpiR3d1UlpJTVQ4SnhOZS9IN2JIS3VhWHVoMXhwTi94K0FQRFAxbXdt?= =?utf-8?B?bStkcXBxRXpSRFRGZ0Rza1AxalJMdmJ1dHFNMWIyY1J4ZjhBbll6TjBpNnFE?= =?utf-8?B?RmdpTlFSTnhuMThGbk9aTkRZZDh2eVE4MUpFV1FUbUJMWjdaZDExYmhPWUdu?= =?utf-8?Q?1Fdl8WJaxV+cS3odAaRCTRHlNAzuY8=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR15MB6407.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(366016)(376014)(38070700018)(4053099003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?K1BmYUgwOGd5Z0NNWHMwV1NPZlJKZTZ1NFFaRkJUQURNdy8wOVVoVWNjUFh0?= =?utf-8?B?aHVVT0hTeFpjZ2ljQzd2amc1WlVNVlpuK1pBSHdKWlAzbHJXRk1wN29uMGJL?= =?utf-8?B?TWtQNXNYYTZEOHdtN0NaTUxjSTh6S2pkVGJaNmE5ekw5dlhObENBcTVBS0ZZ?= =?utf-8?B?NmtwU01nWkNDRlVsWnoxeEZ5WkExN0hrc0N3TXBXbC85d0Y1cGFLM2IycGdW?= =?utf-8?B?ekQyV2tuQnlISHVMTDNmbTJhdGM2eDFvTTVWSnlNL01lR3hhSVJYaFpVSnI3?= =?utf-8?B?MmwxL2M1SzRIdlA0VEhYN3JNQVcyM3FYaWE4YXF6SWhIUks5SDRRRGdwM2dW?= =?utf-8?B?ZW1wT3BMSzRMcEJIM01Za3ZSV0x5WTBHdXpEUmVPWmFJd1plSSt1aFpDVGg4?= =?utf-8?B?b2xHd0Q2SzdtOXBpN3BqRlpDU0pPc0QrNTZZbEs1SGtYem9YS1Q2Myt2NVFX?= =?utf-8?B?RjUvQ2tUVXhMNjl2NVZOVWcxblkzOE5DeDNQOFBuaUp3VStRS1RkMU9oeDBM?= =?utf-8?B?dlBQZE93SVpWV0FveU1nT0daUmdndENvOVFmNWRlL1A3czFFUnJZSTg2YlJX?= =?utf-8?B?ZHdXSXpwU1g4ZkpiLzUvYTR6ZjdHUmdPM2xHcXh3OHFyUHZzd3ByMG9wL3F5?= =?utf-8?B?UDhia3JadytxcUJZOWJ2VXRoRlpiSnpFZWdNcHlnTUhMQyt1TzhBZmMvb3Yw?= =?utf-8?B?Vml0Ty9lazFDNm5JWFMzdFNhZTM1ellMc1FWeC9mTHc4K2VmMERUbk0yeGJm?= =?utf-8?B?aTE3K05ScHF0YjJjKzNQSzhIc3FHbzBrcFhhV3ByelJBMG0zdXhqN3NwaDlx?= =?utf-8?B?d3NZZWdzYzJZOGtxRFA1WXhETnhEYTFzeStrd0tzUnhMbkdKNFVlakxJMVRm?= =?utf-8?B?TTNuQjgyR3FGb2dNUVdMcU50VTFnNXNTU0VTZ2N3eHhNQkpIQXlXY044d281?= =?utf-8?B?bFR3VmhhS05lUHY2SWF0Nk1OUVFlMk5aYlJ1b1dyT2ZTeHVPMTQwT3FhYlNl?= =?utf-8?B?U2NKQlJBR3R1a24xZWNhQjlxTWJMQiswQlFsejBOejd6NzN5Q3pSZmEyQzJJ?= =?utf-8?B?Z3dTaHpMeE50RGxGVXlRb3pkNkVBdTVzNHg1amUzZStjeDBGcUlreHdTdkc2?= =?utf-8?B?RkRXUTczRUZEVVhjVmdTU01jSjlNL25OeUVKeHVpdHBsMml5R0JZVmdjdVhs?= =?utf-8?B?bU4vSHdmTlhxZ3duYmQvSFRmOENWazYxKzBXOG80eWpBdzdWRnNtWllaSFY0?= =?utf-8?B?a0V5MjZPeFVmcEJ1enV2N1ZxZ0NmS0tVZmMvc0hKNGljeG0yQWhNTTRpTlFw?= =?utf-8?B?N2xIaUhKSnVmZXZzVC81MnBlTnRnd1N4MWpiWHdPZ21DSnZ6N1NzdGV1Mm9W?= =?utf-8?B?Rmgyd0JlUjV6UDNBL2ZRWlZqaFRpVlZYZmd0UVdacUdlWVV5SjFaK1lIZXZl?= =?utf-8?B?UlI3QUxIeXdYQzlab3FrMlpoNURGSmxXdkZKSmxZTThJSXlOVFNNanprdXdO?= =?utf-8?B?ckhKYWVTUVNBUysxLytJQ21oZXdmY2ltb1JveXRmS3BtQXNZY1NnMXV0aEkv?= =?utf-8?B?VEYwazFxSitwV1kxTngxS0RXaXd4anYvWHQwd093aExvaVdHQzNZZ2p6TU53?= =?utf-8?B?bnkybFpTV1NENlRlc3NCWWZvSlgzS21LcmUzTlJqUkozd2hmRjJ5RTd3WG8y?= =?utf-8?B?QzJZUk5odXlUakdtZjA4a21wMEVGMEVHVVJSZG5ha2FuRDM2UXVnQlR2dEZn?= =?utf-8?B?QkNGTmhTeks4ZG5vdTg0S2FTSEV5VkFZZ0pVeElHZnNtek00c0JPYXBhUk1r?= =?utf-8?B?ZlhkbmJnUzR3MDZsODZpcEVPM29UVmxjamhjNkxxV051VHVYbm9maVpEckxW?= =?utf-8?B?Wm1vZUhjNWVySSt4WWxHVW9uZjU4czQ1SXRFMVc1QlNZd0RBRytqTm5GR3R1?= =?utf-8?B?VWZFRitxcnVKTjUyQkYxU1FRakV6MFF4MktCMzJCQnVyREQ3R0toekc0ZGph?= =?utf-8?B?eFZIVjFhajZuczcyMXIxeE5WUHJBenorZnJqMWViSlZqVWwvN0t6MkZ6Tytr?= =?utf-8?B?WXFkeGxwemc4b3dxeldKY3pRc0E4S2RpVnp0VHNmT2V2NUs1Ry92VzdycEsz?= =?utf-8?B?MlQ0NDdrS21mUTBSVHo3dlZLMGlEOWJVOU50SWpDeHpLSWg0R3drYkphSnB2?= =?utf-8?B?a0VWVDBmRDlJQW1UOTJMelZnUWpQM3E1Ni8vREdzajkvaWxrK0hnbXNWb3Vp?= =?utf-8?B?MEIzZU1qdGhtRGVtYjVKSEJLb1BBPT0=?= Content-Type: multipart/mixed; boundary="_002_2078ad39a456088fd4a5ea98084e7d72bdf8ff2bcamelibmcom_" MIME-Version: 1.0 X-OriginatorOrg: ibm.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH7PR15MB6407.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83120f5b-65a0-4a61-fcb0-08dda400b57a X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jun 2025 07:15:10.7615 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: fcf67057-50c9-4ad4-98f3-ffca64add9e9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ZGHN404yNi2ZBwUWgt1u8phjZxMr16GtU45+FW7XOZ61jzygo7kXNaCtBjVGtT2MawwZiXIUIiSAmCVG3VU4sg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR15MB4965 X-Authority-Analysis: v=2.4 cv=Pq2TbxM3 c=1 sm=1 tr=0 ts=68414402 cx=c_pps a=7j0Ltmo+QGRCGvpdpD29zg==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=6IFa9wvqVegA:10 a=VnNF1IyMAAAA:8 a=NntOTisZEYSlW16foWQA:9 a=QEXdDO2ut3YA:10 a=0BGo7xMY7kwUol8Pb0EA:9 a=B2y7HmGcmWMA:10 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNjA1MDA2MSBTYWx0ZWRfX5ZLGBcP6sNyN +VJpgDOoinLeTI95P6VvstPsZwdKf7MWPS8BxT48xgx4/B5R7YcCqhWhQLVmWMF3mBvjOQ68niY Yk3MmRR/z66RHwFcyhH3d0+j0VF0G5uBb1BKpbCm6424XigQmYTQ0nE+8l2IZtefdJ5qPkqG3Jf Hmy4yIZZkbJqmdvsxCPYsjAYGM0gyEMOWQlOSplHvI0OFRbPB5jUSAey13NSCnPZLviP7x8KXKJ ma5YvlC83p9C35bXallpuk0UWsm1E3BRQDV4zksE0maPDEJiXVDIsq/EDSwX8j8g043jfHvOzdI Em4s2eDRGNFQITJznI/k5eWjlCR9Aq2TTbQd2/U8B4ANU+Y5W9uixJ2+L5K+kggHJ9Wrzhj2o/s nNaOsv3/2spcxZMGzU7uZDJBsTDrYBrLjBCjoLF3nbphipXOtQdgkaKJ0GFkHDSPJ7Ase5oT X-Proofpoint-GUID: LCA9KyK3MJrlakyxUqp6gJstLmFEnF6J X-Proofpoint-ORIG-GUID: ArSimEfg5rCygUdyvrganupYsef_zC8h X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-06-05_02,2025-06-03_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 mlxlogscore=999 phishscore=0 bulkscore=0 spamscore=0 suspectscore=0 priorityscore=1501 mlxscore=0 adultscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2506050061 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_2078ad39a456088fd4a5ea98084e7d72bdf8ff2bcamelibmcom_ Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 SGksDQoNClNvIGhlcmUgaXMgVjIgb2YgdGhlIGNyYzMyY19zMzkweCBwYXRjaC4gQ2hhbmdlcyBm cm9tIFYxIGFyZToNCg0KLSBhZGRlZCBnY2MgMTQtMTQuMiBhcyBrbm93biBicm9rZW4gY29tcGls ZXIgKGJ1ZyB3YXMgZml4ZWQgd2l0aCAxNC4zKQ0KLSBtb3ZlZCBicm9rZW4gY29tcGlsZXIgY2hl Y2sgdG8gdnggZXh0ZW5zaW9uIGNvbXBpbGUmbGluayBjaGVjaw0KLSBtYWRlIHZhcmlhYmxlcyBn bG9iYWwgaW4gdGhlIGV4dGVuc2lvbiBjaGVjaw0KLSBjcmVhdGUgZGVwZW5kZW5jeSB0byBnZXRh dXh2YWwgaW4gY29uZmlndXJlLCBzbyB3ZSBkb24ndCBjb21waWxlIHRoZQ0KY29kZSBpZiB3ZSB3 b24ndCBiZSBhYmxlIHRvIGRldGVjdCB0aGUgY3B1IGV4dGVuc2lvbiBhdCBydW50aW1lDQotIG1v dmVkIGJ1ZmZlciBsZW5ndGggY2hlY2sgaW50byBtYWNybw0KLSBjaGFuZ2VkIG1pbmltYWwgYnVm ZmVyIGxlbmd0aCBmb3IgY3JjMzJjX3MzOTB4IGZyb20gNjQgdG8gMTYgYnl0ZQ0KLSBhZGRlZCBD RkxBR1NfQ1JDIHRvIGFsbCBjcmMzMmNfczM5MHgqIGFydGlmYWN0cw0KLSBmaXhlZCBmb3JtYXR0 aW5nIHdpdGggcGdpbmRlbnQgDQotIGZpeGVkIHR5cG9zIGluIGVtYWlsIGFkZHJlc3MNCg0KDQot LSANCkVkdWFyZCBTdGVmZXMgPGVkdWFyZC5zdGVmZXNAaWJtLmNvbT4NCg== --_002_2078ad39a456088fd4a5ea98084e7d72bdf8ff2bcamelibmcom_ Content-Type: text/x-patch; name="v2-0001-Added-crc32c-extension-for-ibm-s390x-based-on-VX-.patch" Content-Description: v2-0001-Added-crc32c-extension-for-ibm-s390x-based-on-VX-.patch Content-Disposition: attachment; filename="v2-0001-Added-crc32c-extension-for-ibm-s390x-based-on-VX-.patch"; size=35737; creation-date="Thu, 05 Jun 2025 07:15:10 GMT"; modification-date="Thu, 05 Jun 2025 07:15:10 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBiMGI5ZWQ1MGNlYzNhOWY1ZTg1NjY1OTYxNzg4M2M4YTFiOTI2OTkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiRWRkeSAoRWR1YXJkKSBTdGVmZXMiIDxlZHVhcmQuc3RlZmVz QGlibS5jb20+CkRhdGU6IFR1ZSwgMTUgQXByIDIwMjUgMTA6MjI6MDUgKzAyMDAKU3ViamVjdDog W1BBVENIIHYyXSBBZGRlZCBjcmMzMmMgZXh0ZW5zaW9uIGZvciBpYm0gczM5MHggYmFzZWQgb24g VlgKIGludHJpbnNpY3MKCi0tLQogY29uZmlnL2MtY29tcGlsZXIubTQgICAgICAgICAgICAgIHwg IDQ3ICsrKysrKwogY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjYyICsrKysr KysrKysrKysrKysrKysrKysrKysrKystCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAg ICAgfCAgNTMgKysrKystCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgfCAgNDMg KysrKysKIHNyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluICAgICAgICB8ICAgNiArCiBzcmMvaW5j bHVkZS9wb3J0L3BnX2NyYzMyYy5oICAgICAgfCAgMjUgKysrCiBzcmMvcG9ydC9NYWtlZmlsZSAg ICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9wb3J0L21lc29uLmJ1aWxkICAgICAgICAgICAg ICB8ICAgNyArCiBzcmMvcG9ydC9wZ19jcmMzMmNfczM5MHguYyAgICAgICAgfCAyNjMgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvcG9ydC9wZ19jcmMzMmNfczM5MHhfY2hvb3Nl LmMgfCAgNDMgKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDc0MSBpbnNlcnRpb25zKCspLCAxMyBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcG9ydC9wZ19jcmMzMmNfczM5MHgu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9wb3J0L3BnX2NyYzMyY19zMzkweF9jaG9vc2UuYwoK ZGlmZiAtLWdpdCBhL2NvbmZpZy9jLWNvbXBpbGVyLm00IGIvY29uZmlnL2MtY29tcGlsZXIubTQK aW5kZXggNWYzZTFkMWZhZjkuLjQ3Y2I1M2RiZDU2IDEwMDY0NAotLS0gYS9jb25maWcvYy1jb21w aWxlci5tNAorKysgYi9jb25maWcvYy1jb21waWxlci5tNApAQCAtNjg0LDYgKzY4NCw1MyBAQCBm aQogdW5kZWZpbmUoW0FjX2NhY2hldmFyXSlkbmwKIF0pIyBQR0FDX0xPT05HQVJDSF9DUkMzMkNf SU5UUklOU0lDUwogCisjIFBHQUNfUzM5MFhfVkVDVE9SX1ZYX0lOVFJJTlNJQ1MKKyMgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgaWYgdGhlIGNvbXBpbGVyIHN1cHBv cnRzIHRoZSBTMzkwWCB2ZWN0b3IgaW50cmluc2ljcywgdXNpbmcKKyMgX19hdHRyaWJ1dGVfXygo dmVjdG9yX3NpemUoMTYpKSksIHZlY19nZm1zdW1fYWNjdW1fMTI4CisjCisjIFRoZXNlIGluc3Ry dWN0aW9ucyB3aGVyZSBpbnRyb2R1Y2VkIHdpdGggLW1hcmNoPXoxMy4KKyMgdGhlIHRlc3QgYXJn MSBpcyBtYW5kYXRvcnkgYW5kIHNob3VsZCBiZSBlaXRoZXI6CisjICctZnp2ZWN0b3InIGZvciBj bGFuZworIyAnLW16YXJjaCcgZm9yIGdjYworIworIyBJZiB0aGUgaW50cmluc2ljcyBhcmUgc3Vw cG9ydGVkLCBzZXRzCisjIHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3MsIGFuZCBDRkxBR1Nf Q1JDLgorQUNfREVGVU4oW1BHQUNfUzM5MFhfVkVDVE9SX1ZYX0lOVFJJTlNJQ1NdLAorW2RlZmlu ZShbQWNfY2FjaGV2YXJdLCBbQVNfVFJfU0goW3BnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNp Y3NfJDFfJDJdKV0pZG5sCitBQ19DQUNIRV9DSEVDSyhbZm9yIF9fYXR0cmlidXRlX18oKHZlY3Rv cl9zaXplKDE2KSkpLCB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOCB3aXRoIENGTEFHUz0kMSAkMl0sIFtB Y19jYWNoZXZhcl0sCitbcGdhY19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitDRkxBR1M9IiRwZ2FjX3Nh dmVfQ0ZMQUdTICQxICQyIgorQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1 ZGUgPHZlY2ludHJpbi5oPgorICAgICNpZmRlZiBfX2NsYW5nX18KKyAgICAjICBpZiAoKF9fY2xh bmdfbWFqb3JfXyA9PSAxOCkgfHwgKF9fY2xhbmdfbWFqb3JfXyA9PSAxOSAmJiAoX19jbGFuZ19t aW5vcl9fIDwgMSB8fCAoX19jbGFuZ19taW5vcl9fID09IDEgJiYgX19jbGFuZ19wYXRjaGxldmVs X18gPCAyKSkpKQorICAgICMgZXJyb3IgQ1JDMzItVlggb3B0aW1pemF0aW9ucyBhcmUgYnJva2Vu IGR1ZSB0byBjb21waWxlciBidWcgaW4gQ2xhbmcgdmVyc2lvbnM6IDE4LjAuMCA8PSBjbGFuZ192 ZXJzaW9uIDwgMTkuMS4yLiBFaXRoZXIgZGlzYWJsZSB0aGUgQ1JDMzItVlggb3B0aW1pemF0aW9u LCBvciBzd2l0Y2ggdG8gYW5vdGhlciBjb21waWxlci9jb21waWxlciB2ZXJzaW9uLgorICAgICMg IGVuZGlmCisgICAgI2VuZGlmCisgICAgI2lmZGVmIF9fR05VQ19fCisgICAgIyBpZiAoKF9fR05V Q19fID09IDE0KSAmJiAoX19HTlVDX01JTk9SX18gPCAzKSkKKyAgICAjICBlcnJvciBDUkMzMi1W WCBvcHRpbWl6YXRpb25zIGFyZSBicm9rZW4gZHVlIHRvIGNvbXBpbGVyIGJ1ZyBpbiBHQ0MgdmVy c2lvbnM6IDE0LjAuMCA8PSBnY2NfdmVyc2lvbiA8IDE0LjMuMCBFaXRoZXIgZGlzYWJsZSB0aGUg Q1JDMzItVlggb3B0aW1pemF0aW9uLCBvciBzd2l0Y2ggdG8gYW5vdGhlciBjb21waWxlci9jb21w aWxlciB2ZXJzaW9uLgorICAgICMgZW5kaWYKKyAgICAjZW5kaWYKKyAgICB1bnNpZ25lZCBsb25n IGxvbmcgYSBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsgMCB9OworICAgIHVu c2lnbmVkIGxvbmcgbG9uZyBiIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkpID0geyAw IH07CisgICAgdW5zaWduZWQgY2hhciBjIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkp ID0geyAwIH07CisgICAgc3RhdGljIHZvaWQgdmVjaW50X2dmbXN1bV9hY2N1bV90ZXN0KHZvaWQp eworICAgICAgICBjID0gdmVjX2dmbXN1bV9hY2N1bV8xMjgoYSwgYiwgYyk7CisgICAgfV0sCisg IFsKKyAgIHZlY2ludF9nZm1zdW1fYWNjdW1fdGVzdCgpOworICAgcmV0dXJuIDA7XSldLAorICBb QWNfY2FjaGV2YXI9eWVzXSwKKyAgW0FjX2NhY2hldmFyPW5vXSkKK0NGTEFHUz0iJHBnYWNfc2F2 ZV9DRkxBR1MiXSkKK2lmIHRlc3QgeCIkQWNfY2FjaGV2YXIiID0geCJ5ZXMiOyB0aGVuCisgIENG TEFHU19DUkM9IiQxICQyIgorICBBU19UUl9TSChbcGdhY19zMzkweF92ZWN0b3JfaW50cmluc2lj c18kMV8kMl0pPXllcworZmkKK3VuZGVmaW5lKFtBY19jYWNoZXZhcl0pZG5sCitdKSMgUEdBQ19T MzkwWF9WRUNUT1JfVlhfSU5UUklOU0lDUworCiAjIFBHQUNfWFNBVkVfSU5UUklOU0lDUwogIyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQ2hlY2sgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIHRo ZSBYU0FWRSBpbnN0cnVjdGlvbnMgdXNpbmcgdGhlIF94Z2V0YnYKZGlmZiAtLWdpdCBhL2NvbmZp Z3VyZSBiL2NvbmZpZ3VyZQppbmRleCA0ZjE1MzQ3Y2M5NS4uMGYyZWMzMDhlYWEgMTAwNzU1Ci0t LSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTE3NTQxLDcgKzE3NTQxLDYgQEAgJGFz X2VjaG8gIiNkZWZpbmUgSEFWRV9HQ0NfX0FUT01JQ19JTlQ2NF9DQVMgMSIgPj5jb25mZGVmcy5o CiAKIGZpCiAKLQogIyBDaGVjayBmb3IgeDg2IGNwdWlkIGluc3RydWN0aW9uCiB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfX2dldF9jcHVpZCIg PiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgX19nZXRfY3B1aWQuLi4gIiA+JjY7IH0KQEAg LTE4MDg4LDYgKzE4MDg3LDIyNyBAQCBpZiB0ZXN0IHgiJHBnYWNfY3ZfbG9vbmdhcmNoX2NyYzMy Y19pbnRyaW5zaWNzIiA9IHgieWVzIjsgdGhlbgogZmkKIAogCisjIENoZWNrIGZvciBTMzkwWCBW ZWN0b3IgaW50cmluc2ljcyB0byBkbyBDUkMgY2FsY3VsYXRpb25zLgorIworIyBGaXJzdCBjaGVj ayBmb3IgdGhlIGhvc3QgY3B1CitpZiB0ZXN0IHgiJGhvc3RfY3B1IiA9IHgiczM5MHgiICYmIHRl c3QgeCIkYWNfY3ZfZnVuY19nZXRhdXh2YWwiID0geCJ5ZXMiOyB0aGVuCisgICMgQ2hlY2sgZm9y IGFsbCBwb3NzaWJsZSBjZmxhZyBjb21iaW5hdGlvbnMKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmVjdG9yX3Np emUoMTYpKSksIHZlY19nZm1zdW1fYWNjdW1fMTI4IHdpdGggQ0ZMQUdTPS1menZlY3RvciAiID4m NQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2 KSkpLCB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOCB3aXRoIENGTEFHUz0tZnp2ZWN0b3IgLi4uICIgPiY2 OyB9CitpZiAke3BnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yXys6fSBm YWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHBnYWNf c2F2ZV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyAtZnp2ZWN0b3Ig IgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNv bmZkZWZzLmguICAqLworI2luY2x1ZGUgPHZlY2ludHJpbi5oPgorICAgICNpZmRlZiBfX2NsYW5n X18KKyAgICAjICBpZiAoKF9fY2xhbmdfbWFqb3JfXyA9PSAxOCkgfHwgKF9fY2xhbmdfbWFqb3Jf XyA9PSAxOSAmJiAoX19jbGFuZ19taW5vcl9fIDwgMSB8fCAoX19jbGFuZ19taW5vcl9fID09IDEg JiYgX19jbGFuZ19wYXRjaGxldmVsX18gPCAyKSkpKQorICAgICMgZXJyb3IgQ1JDMzItVlggb3B0 aW1pemF0aW9ucyBhcmUgYnJva2VuIGR1ZSB0byBjb21waWxlciBidWcgaW4gQ2xhbmcgdmVyc2lv bnM6IDE4LjAuMCA8PSBjbGFuZ192ZXJzaW9uIDwgMTkuMS4yLiBFaXRoZXIgZGlzYWJsZSB0aGUg Q1JDMzItVlggb3B0aW1pemF0aW9uLCBvciBzd2l0Y2ggdG8gYW5vdGhlciBjb21waWxlci9jb21w aWxlciB2ZXJzaW9uLgorICAgICMgIGVuZGlmCisgICAgI2VuZGlmCisgICAgI2lmZGVmIF9fR05V Q19fCisgICAgIyBpZiAoKF9fR05VQ19fID09IDE0KSAmJiAoX19HTlVDX01JTk9SX18gPCAzKSkK KyAgICAjICBlcnJvciBDUkMzMi1WWCBvcHRpbWl6YXRpb25zIGFyZSBicm9rZW4gZHVlIHRvIGNv bXBpbGVyIGJ1ZyBpbiBHQ0MgdmVyc2lvbnM6IDE0LjAuMCA8PSBnY2NfdmVyc2lvbiA8IDE0LjMu MCBFaXRoZXIgZGlzYWJsZSB0aGUgQ1JDMzItVlggb3B0aW1pemF0aW9uLCBvciBzd2l0Y2ggdG8g YW5vdGhlciBjb21waWxlci9jb21waWxlciB2ZXJzaW9uLgorICAgICMgZW5kaWYKKyAgICAjZW5k aWYKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgYSBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgx NikpKSA9IHsgMCB9OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBiIF9fYXR0cmlidXRlX18oKHZl Y3Rvcl9zaXplKDE2KSkpID0geyAwIH07CisgICAgdW5zaWduZWQgY2hhciBjIF9fYXR0cmlidXRl X18oKHZlY3Rvcl9zaXplKDE2KSkpID0geyAwIH07CisgICAgc3RhdGljIHZvaWQgdmVjaW50X2dm bXN1bV9hY2N1bV90ZXN0KHZvaWQpeworICAgICAgICBjID0gdmVjX2dmbXN1bV9hY2N1bV8xMjgo YSwgYiwgYyk7CisgICAgfQoraW50CittYWluICgpCit7CisKKyAgIHZlY2ludF9nZm1zdW1fYWNj dW1fdGVzdCgpOworICAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lm IGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgcGdhY19jdl9zMzkweF92ZWN0 b3JfaW50cmluc2ljc19fZnp2ZWN0b3JfPXllcworZWxzZQorICBwZ2FjX2N2X3MzOTB4X3ZlY3Rv cl9pbnRyaW5zaWNzX19menZlY3Rvcl89bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBj b25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFj X2V4dAorQ0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyIKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJp bnNpY3NfX2Z6dmVjdG9yXyIgPiY1CiskYXNfZWNobyAiJHBnYWNfY3ZfczM5MHhfdmVjdG9yX2lu dHJpbnNpY3NfX2Z6dmVjdG9yXyIgPiY2OyB9CitpZiB0ZXN0IHgiJHBnYWNfY3ZfczM5MHhfdmVj dG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yXyIgPSB4InllcyI7IHRoZW4KKyAgQ0ZMQUdTX0NSQz0i LWZ6dmVjdG9yICIKKyAgcGdhY19zMzkweF92ZWN0b3JfaW50cmluc2ljc19fZnp2ZWN0b3JfPXll cworZmkKKworICBpZiB0ZXN0IHgiJHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVj dG9yXyIgIT0geCJ5ZXMiOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSks IHZlY19nZm1zdW1fYWNjdW1fMTI4IHdpdGggQ0ZMQUdTPS1menZlY3RvciAtbWFyY2g9ejEzIiA+ JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgx NikpKSwgdmVjX2dmbXN1bV9hY2N1bV8xMjggd2l0aCBDRkxBR1M9LWZ6dmVjdG9yIC1tYXJjaD16 MTMuLi4gIiA+JjY7IH0KK2lmICR7cGdhY19jdl9zMzkweF92ZWN0b3JfaW50cmluc2ljc19fZnp2 ZWN0b3JfX21hcmNoX3oxMys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQp ICIgPiY2CitlbHNlCisgIHBnYWNfc2F2ZV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSIkcGdhY19z YXZlX0NGTEFHUyAtZnp2ZWN0b3IgLW1hcmNoPXoxMyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDx2 ZWNpbnRyaW4uaD4KKyAgICAjaWZkZWYgX19jbGFuZ19fCisgICAgIyAgaWYgKChfX2NsYW5nX21h am9yX18gPT0gMTgpIHx8IChfX2NsYW5nX21ham9yX18gPT0gMTkgJiYgKF9fY2xhbmdfbWlub3Jf XyA8IDEgfHwgKF9fY2xhbmdfbWlub3JfXyA9PSAxICYmIF9fY2xhbmdfcGF0Y2hsZXZlbF9fIDwg MikpKSkKKyAgICAjIGVycm9yIENSQzMyLVZYIG9wdGltaXphdGlvbnMgYXJlIGJyb2tlbiBkdWUg dG8gY29tcGlsZXIgYnVnIGluIENsYW5nIHZlcnNpb25zOiAxOC4wLjAgPD0gY2xhbmdfdmVyc2lv biA8IDE5LjEuMi4gRWl0aGVyIGRpc2FibGUgdGhlIENSQzMyLVZYIG9wdGltaXphdGlvbiwgb3Ig c3dpdGNoIHRvIGFub3RoZXIgY29tcGlsZXIvY29tcGlsZXIgdmVyc2lvbi4KKyAgICAjICBlbmRp ZgorICAgICNlbmRpZgorICAgICNpZmRlZiBfX0dOVUNfXworICAgICMgaWYgKChfX0dOVUNfXyA9 PSAxNCkgJiYgKF9fR05VQ19NSU5PUl9fIDwgMykpCisgICAgIyAgZXJyb3IgQ1JDMzItVlggb3B0 aW1pemF0aW9ucyBhcmUgYnJva2VuIGR1ZSB0byBjb21waWxlciBidWcgaW4gR0NDIHZlcnNpb25z OiAxNC4wLjAgPD0gZ2NjX3ZlcnNpb24gPCAxNC4zLjAgRWl0aGVyIGRpc2FibGUgdGhlIENSQzMy LVZYIG9wdGltaXphdGlvbiwgb3Igc3dpdGNoIHRvIGFub3RoZXIgY29tcGlsZXIvY29tcGlsZXIg dmVyc2lvbi4KKyAgICAjIGVuZGlmCisgICAgI2VuZGlmCisgICAgdW5zaWduZWQgbG9uZyBsb25n IGEgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgICB1bnNpZ25l ZCBsb25nIGxvbmcgYiBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsgMCB9Owor ICAgIHVuc2lnbmVkIGNoYXIgYyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKSA9IHsg MCB9OworICAgIHN0YXRpYyB2b2lkIHZlY2ludF9nZm1zdW1fYWNjdW1fdGVzdCh2b2lkKXsKKyAg ICAgICAgYyA9IHZlY19nZm1zdW1fYWNjdW1fMTI4KGEsIGIsIGMpOworICAgIH0KK2ludAorbWFp biAoKQoreworCisgICB2ZWNpbnRfZ2Ztc3VtX2FjY3VtX3Rlc3QoKTsKKyAgIHJldHVybiAwOwor ICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5P IjsgdGhlbiA6CisgIHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yX19t YXJjaF96MTM9eWVzCitlbHNlCisgIHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6 dmVjdG9yX19tYXJjaF96MTM9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVz dC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAor Q0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyIKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19s aW5lbm8tJExJTkVOT306IHJlc3VsdDogJHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3Nf X2Z6dmVjdG9yX19tYXJjaF96MTMiID4mNQorJGFzX2VjaG8gIiRwZ2FjX2N2X3MzOTB4X3ZlY3Rv cl9pbnRyaW5zaWNzX19menZlY3Rvcl9fbWFyY2hfejEzIiA+JjY7IH0KK2lmIHRlc3QgeCIkcGdh Y19jdl9zMzkweF92ZWN0b3JfaW50cmluc2ljc19fZnp2ZWN0b3JfX21hcmNoX3oxMyIgPSB4Inll cyI7IHRoZW4KKyAgQ0ZMQUdTX0NSQz0iLWZ6dmVjdG9yIC1tYXJjaD16MTMiCisgIHBnYWNfczM5 MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yX19tYXJjaF96MTM9eWVzCitmaQorCisgICAg aWYgdGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl9fbWFyY2hf ejEzIiAhPSB4InllcyI7IHRoZW4KKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogY2hlY2tpbmcgZm9yIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkp LCB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOCB3aXRoIENGTEFHUz0tbXphcmNoICIgPiY1CiskYXNfZWNo b19uICJjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSksIHZlY19n Zm1zdW1fYWNjdW1fMTI4IHdpdGggQ0ZMQUdTPS1temFyY2ggLi4uICIgPiY2OyB9CitpZiAke3Bn YWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF8rOn0gZmFsc2U7IHRoZW4gOgor ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBwZ2FjX3NhdmVfQ0ZMQUdTPSRD RkxBR1MKK0NGTEFHUz0iJHBnYWNfc2F2ZV9DRkxBR1MgLW16YXJjaCAiCitjYXQgY29uZmRlZnMu aCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisj aW5jbHVkZSA8dmVjaW50cmluLmg+CisgICAgI2lmZGVmIF9fY2xhbmdfXworICAgICMgIGlmICgo X19jbGFuZ19tYWpvcl9fID09IDE4KSB8fCAoX19jbGFuZ19tYWpvcl9fID09IDE5ICYmIChfX2Ns YW5nX21pbm9yX18gPCAxIHx8IChfX2NsYW5nX21pbm9yX18gPT0gMSAmJiBfX2NsYW5nX3BhdGNo bGV2ZWxfXyA8IDIpKSkpCisgICAgIyBlcnJvciBDUkMzMi1WWCBvcHRpbWl6YXRpb25zIGFyZSBi cm9rZW4gZHVlIHRvIGNvbXBpbGVyIGJ1ZyBpbiBDbGFuZyB2ZXJzaW9uczogMTguMC4wIDw9IGNs YW5nX3ZlcnNpb24gPCAxOS4xLjIuIEVpdGhlciBkaXNhYmxlIHRoZSBDUkMzMi1WWCBvcHRpbWl6 YXRpb24sIG9yIHN3aXRjaCB0byBhbm90aGVyIGNvbXBpbGVyL2NvbXBpbGVyIHZlcnNpb24uCisg ICAgIyAgZW5kaWYKKyAgICAjZW5kaWYKKyAgICAjaWZkZWYgX19HTlVDX18KKyAgICAjIGlmICgo X19HTlVDX18gPT0gMTQpICYmIChfX0dOVUNfTUlOT1JfXyA8IDMpKQorICAgICMgIGVycm9yIENS QzMyLVZYIG9wdGltaXphdGlvbnMgYXJlIGJyb2tlbiBkdWUgdG8gY29tcGlsZXIgYnVnIGluIEdD QyB2ZXJzaW9uczogMTQuMC4wIDw9IGdjY192ZXJzaW9uIDwgMTQuMy4wIEVpdGhlciBkaXNhYmxl IHRoZSBDUkMzMi1WWCBvcHRpbWl6YXRpb24sIG9yIHN3aXRjaCB0byBhbm90aGVyIGNvbXBpbGVy L2NvbXBpbGVyIHZlcnNpb24uCisgICAgIyBlbmRpZgorICAgICNlbmRpZgorICAgIHVuc2lnbmVk IGxvbmcgbG9uZyBhIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2KSkpID0geyAwIH07Cisg ICAgdW5zaWduZWQgbG9uZyBsb25nIGIgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSkg PSB7IDAgfTsKKyAgICB1bnNpZ25lZCBjaGFyIGMgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUo MTYpKSkgPSB7IDAgfTsKKyAgICBzdGF0aWMgdm9pZCB2ZWNpbnRfZ2Ztc3VtX2FjY3VtX3Rlc3Qo dm9pZCl7CisgICAgICAgIGMgPSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChhLCBiLCBjKTsKKyAgICB9 CitpbnQKK21haW4gKCkKK3sKKworICAgdmVjaW50X2dmbXN1bV9hY2N1bV90ZXN0KCk7CisgICBy ZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGlu ayAiJExJTkVOTyI7IHRoZW4gOgorICBwZ2FjX2N2X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19t emFyY2hfPXllcworZWxzZQorICBwZ2FjX2N2X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFy Y2hfPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBc CisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0NGTEFHUz0iJHBnYWNf c2F2ZV9DRkxBR1MiCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6ICRwZ2FjX2N2X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfIiA+JjUK KyRhc19lY2hvICIkcGdhY19jdl9zMzkweF92ZWN0b3JfaW50cmluc2ljc19fbXphcmNoXyIgPiY2 OyB9CitpZiB0ZXN0IHgiJHBnYWNfY3ZfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF8i ID0geCJ5ZXMiOyB0aGVuCisgIENGTEFHU19DUkM9Ii1temFyY2ggIgorICBwZ2FjX3MzOTB4X3Zl Y3Rvcl9pbnRyaW5zaWNzX19temFyY2hfPXllcworZmkKKworICAgICAgaWYgdGVzdCB4IiRwZ2Fj X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfIiAhPSB4InllcyI7IHRoZW4KKyAgICAg ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig X19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSksIHZlY19nZm1zdW1fYWNjdW1fMTI4IHdp dGggQ0ZMQUdTPS1temFyY2ggLW1hcmNoPXoxMyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBm b3IgX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoMTYpKSksIHZlY19nZm1zdW1fYWNjdW1fMTI4 IHdpdGggQ0ZMQUdTPS1temFyY2ggLW1hcmNoPXoxMy4uLiAiID4mNjsgfQoraWYgJHtwZ2FjX2N2 X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfX21hcmNoX3oxMys6fSBmYWxzZTsgdGhl biA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHBnYWNfc2F2ZV9DRkxB R1M9JENGTEFHUworQ0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyAtbXphcmNoIC1tYXJjaD16MTMi CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29u ZmRlZnMuaC4gICovCisjaW5jbHVkZSA8dmVjaW50cmluLmg+CisgICAgI2lmZGVmIF9fY2xhbmdf XworICAgICMgIGlmICgoX19jbGFuZ19tYWpvcl9fID09IDE4KSB8fCAoX19jbGFuZ19tYWpvcl9f ID09IDE5ICYmIChfX2NsYW5nX21pbm9yX18gPCAxIHx8IChfX2NsYW5nX21pbm9yX18gPT0gMSAm JiBfX2NsYW5nX3BhdGNobGV2ZWxfXyA8IDIpKSkpCisgICAgIyBlcnJvciBDUkMzMi1WWCBvcHRp bWl6YXRpb25zIGFyZSBicm9rZW4gZHVlIHRvIGNvbXBpbGVyIGJ1ZyBpbiBDbGFuZyB2ZXJzaW9u czogMTguMC4wIDw9IGNsYW5nX3ZlcnNpb24gPCAxOS4xLjIuIEVpdGhlciBkaXNhYmxlIHRoZSBD UkMzMi1WWCBvcHRpbWl6YXRpb24sIG9yIHN3aXRjaCB0byBhbm90aGVyIGNvbXBpbGVyL2NvbXBp bGVyIHZlcnNpb24uCisgICAgIyAgZW5kaWYKKyAgICAjZW5kaWYKKyAgICAjaWZkZWYgX19HTlVD X18KKyAgICAjIGlmICgoX19HTlVDX18gPT0gMTQpICYmIChfX0dOVUNfTUlOT1JfXyA8IDMpKQor ICAgICMgIGVycm9yIENSQzMyLVZYIG9wdGltaXphdGlvbnMgYXJlIGJyb2tlbiBkdWUgdG8gY29t cGlsZXIgYnVnIGluIEdDQyB2ZXJzaW9uczogMTQuMC4wIDw9IGdjY192ZXJzaW9uIDwgMTQuMy4w IEVpdGhlciBkaXNhYmxlIHRoZSBDUkMzMi1WWCBvcHRpbWl6YXRpb24sIG9yIHN3aXRjaCB0byBh bm90aGVyIGNvbXBpbGVyL2NvbXBpbGVyIHZlcnNpb24uCisgICAgIyBlbmRpZgorICAgICNlbmRp ZgorICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBhIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2 KSkpID0geyAwIH07CisgICAgdW5zaWduZWQgbG9uZyBsb25nIGIgX19hdHRyaWJ1dGVfXygodmVj dG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgICB1bnNpZ25lZCBjaGFyIGMgX19hdHRyaWJ1dGVf XygodmVjdG9yX3NpemUoMTYpKSkgPSB7IDAgfTsKKyAgICBzdGF0aWMgdm9pZCB2ZWNpbnRfZ2Zt c3VtX2FjY3VtX3Rlc3Qodm9pZCl7CisgICAgICAgIGMgPSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChh LCBiLCBjKTsKKyAgICB9CitpbnQKK21haW4gKCkKK3sKKworICAgdmVjaW50X2dmbXN1bV9hY2N1 bV90ZXN0KCk7CisgICByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYg YWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBwZ2FjX2N2X3MzOTB4X3ZlY3Rv cl9pbnRyaW5zaWNzX19temFyY2hfX21hcmNoX3oxMz15ZXMKK2Vsc2UKKyAgcGdhY19jdl9zMzkw eF92ZWN0b3JfaW50cmluc2ljc19fbXphcmNoX19tYXJjaF96MTM9bm8KK2ZpCitybSAtZiBjb3Jl IGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVl eHQgY29uZnRlc3QuJGFjX2V4dAorQ0ZMQUdTPSIkcGdhY19zYXZlX0NGTEFHUyIKK2ZpCit7ICRh c19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHBnYWNfY3ZfczM5 MHhfdmVjdG9yX2ludHJpbnNpY3NfX216YXJjaF9fbWFyY2hfejEzIiA+JjUKKyRhc19lY2hvICIk cGdhY19jdl9zMzkweF92ZWN0b3JfaW50cmluc2ljc19fbXphcmNoX19tYXJjaF96MTMiID4mNjsg fQoraWYgdGVzdCB4IiRwZ2FjX2N2X3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfX21h cmNoX3oxMyIgPSB4InllcyI7IHRoZW4KKyAgQ0ZMQUdTX0NSQz0iLW16YXJjaCAtbWFyY2g9ejEz IgorICBwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfX21hcmNoX3oxMz15ZXMK K2ZpCisKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKK2ZpCisKIAogCiAjIFNlbGVjdCBDUkMtMzJD IGltcGxlbWVudGF0aW9uLgpAQCAtMTgxNDAsOSArMTgzNjAsMjEgQEAgaWYgdGVzdCB4IiRVU0Vf U0xJQ0lOR19CWV84X0NSQzMyQyIgPSB4IiIgJiYgdGVzdCB4IiRVU0VfU1NFNDJfQ1JDMzJDIiA9 IHgiIiAmJgogICAgICAgICAgIGlmIHRlc3QgeCIkcGdhY19sb29uZ2FyY2hfY3JjMzJjX2ludHJp bnNpY3MiID0geCJ5ZXMiOyB0aGVuCiAgICAgICAgICAgICBVU0VfTE9PTkdBUkNIX0NSQzMyQz0x CiAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgIyBmYWxsIGJhY2sgdG8gc2xpY2luZy1ieS04 IGFsZ29yaXRobSwgd2hpY2ggZG9lc24ndCByZXF1aXJlIGFueQotICAgICAgICAgICAgIyBzcGVj aWFsIENQVSBzdXBwb3J0LgotICAgICAgICAgICAgVVNFX1NMSUNJTkdfQllfOF9DUkMzMkM9MQor ICAgICAgICAgICAgIyBVc2UgUzM5MFggdmVjdG9yIGV4dGVuc2lvbi4KKyAgICAgICAgICAgIGlm ICh0ZXN0IHgiJHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3NfX2Z6dmVjdG9yXyIgPSB4Inll cyIgfHwKKyAgICAgICAgICAgICAgIHRlc3QgeCIkcGdhY19zMzkweF92ZWN0b3JfaW50cmluc2lj c19fbXphcmNoXyIgPSB4InllcyIpOyB0aGVuCisgICAgICAgICAgICAgIFVTRV9TMzkwWF9DUkMz MkM9MQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAjIFVzZSBTMzkwWCB2ZWN0b3Ig ZXh0ZW5zaW9uIHdpdGggcnVudGltZSBjaGVjay4KKyAgICAgICAgICAgICAgaWYgdGVzdCB4IiRw Z2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl9fbWFyY2hfejEzIiA9IHgieWVz IiB8fAorICAgICAgICAgICAgICAgdGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNz X19temFyY2hfX21hcmNoX3oxMyIgPSB4InllcyI7IHRoZW4KKyAgICAgICAgICAgICAgVVNFX1Mz OTBYX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0s9MQorICAgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgICAgIyBmYWxsIGJhY2sgdG8gc2xpY2luZy1ieS04IGFsZ29yaXRobSwgd2hpY2gg ZG9lc24ndCByZXF1aXJlIGFueQorICAgICAgICAgICAgICAgICMgc3BlY2lhbCBDUFUgc3VwcG9y dC4KKyAgICAgICAgICAgICAgICBVU0VfU0xJQ0lOR19CWV84X0NSQzMyQz0xCisgICAgICAgICAg ICAgIGZpCisgICAgICAgICAgICBmaQogICAgICAgICAgIGZpCiAgICAgICAgIGZpCiAgICAgICBm aQpAQCAtMTgxOTMsMTIgKzE4NDI1LDMwIEBAICRhc19lY2hvICIjZGVmaW5lIFVTRV9MT09OR0FS Q0hfQ1JDMzJDIDEiID4+Y29uZmRlZnMuaAogICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBMb29uZ0FyY2ggQ1JDQyBpbnN0cnVjdGlvbnMi ID4mNQogJGFzX2VjaG8gIkxvb25nQXJjaCBDUkNDIGluc3RydWN0aW9ucyIgPiY2OyB9CiAgICAg ICAgIGVsc2UKKyAgICAgICAgICBpZiB0ZXN0IHgiJFVTRV9TMzkwWF9DUkMzMkMiID0geCIxIjsg dGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBVU0VfUzM5MFhfQ1JDMzJDIDEiID4+Y29uZmRlZnMu aAorCisgICAgICAgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX3MzOTB4Lm8gcGdfY3Jj MzJjX3NiOC5vIgorICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRM SU5FTk99OiByZXN1bHQ6IFMzOTBYIFZlY3RvciBpbnN0cnVjdGlvbnMgZm9yIENSQyIgPiY1Cisk YXNfZWNobyAiUzM5MFggVmVjdG9yIGluc3RydWN0aW9ucyBmb3IgQ1JDIiA+JjY7IH0KKyAgICAg ICAgICBlbHNlCisgICAgICAgICAgICBpZiB0ZXN0IHgiJFVTRV9TMzkwWF9DUkMzMkNfV0lUSF9S VU5USU1FX0NIRUNLIiA9IHgiMSI7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgVVNFX1MzOTBY X0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0sgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgICAg ICAgUEdfQ1JDMzJDX09CSlM9InBnX2NyYzMyY19zMzkweC5vIHBnX2NyYzMyY19zMzkweF9jaG9v c2UubyBwZ19jcmMzMmNfc2I4Lm8iCisgICAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBTMzkwWCBWZWN0b3IgaW5zdHJ1Y3Rpb25zIGZv ciBDUkMgd2l0aCBydW50aW1lIGNoZWNrIiA+JjUKKyRhc19lY2hvICJTMzkwWCBWZWN0b3IgaW5z dHJ1Y3Rpb25zIGZvciBDUkMgd2l0aCBydW50aW1lIGNoZWNrIiA+JjY7IH0KKyAgICAgICAgICAg IGVsc2UKIAogJGFzX2VjaG8gIiNkZWZpbmUgVVNFX1NMSUNJTkdfQllfOF9DUkMzMkMgMSIgPj5j b25mZGVmcy5oCiAKLSAgICAgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX3NiOC5vIgot ICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0 OiBzbGljaW5nLWJ5LTgiID4mNQorICAgICAgICAgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3Jj MzJjX3NiOC5vIgorICAgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8t JExJTkVOT306IHJlc3VsdDogc2xpY2luZy1ieS04IiA+JjUKICRhc19lY2hvICJzbGljaW5nLWJ5 LTgiID4mNjsgfQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBmaQogICAgICAgICBmaQogICAg ICAgZmkKICAgICBmaQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmlu ZGV4IDRiODMzNWRjNjEzLi5mNDMxOTY1YzIxYyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisr KyBiL2NvbmZpZ3VyZS5hYwpAQCAtMjEzOSw2ICsyMTM5LDIzIEBAIGZpCiAjIHdpdGggdGhlIGRl ZmF1bHQgY29tcGlsZXIgZmxhZ3MuCiBQR0FDX0xPT05HQVJDSF9DUkMzMkNfSU5UUklOU0lDUygp CiAKKyMgQ2hlY2sgZm9yIFMzOTBYIFZlY3RvciBpbnRyaW5zaWNzIHRvIGRvIENSQyBjYWxjdWxh dGlvbnMuCisjCisjIEZpcnN0IGNoZWNrIGZvciB0aGUgaG9zdCBjcHUKK2lmIHRlc3QgeCIkaG9z dF9jcHUiID0geCJzMzkweCIgJiYgdGVzdCB4IiRhY19jdl9mdW5jX2dldGF1eHZhbCIgPSB4Inll cyI7IHRoZW4KKyAgIyBDaGVjayBmb3IgYWxsIHBvc3NpYmxlIGNmbGFnIGNvbWJpbmF0aW9ucwor ICBQR0FDX1MzOTBYX1ZFQ1RPUl9WWF9JTlRSSU5TSUNTKFstZnp2ZWN0b3JdLCBbXSkKKyAgaWYg dGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl8iICE9IHgieWVz IjsgdGhlbgorICAgIFBHQUNfUzM5MFhfVkVDVE9SX1ZYX0lOVFJJTlNJQ1MoWy1menZlY3Rvcl0s IFstbWFyY2g9ejEzXSkKKyAgICBpZiB0ZXN0IHgiJHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNp Y3NfX2Z6dmVjdG9yX19tYXJjaF96MTMiICE9IHgieWVzIjsgdGhlbgorICAgICAgUEdBQ19TMzkw WF9WRUNUT1JfVlhfSU5UUklOU0lDUyhbLW16YXJjaF0sIFtdKQorICAgICAgaWYgdGVzdCB4IiRw Z2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfIiAhPSB4InllcyI7IHRoZW4KKyAg ICAgICAgUEdBQ19TMzkwWF9WRUNUT1JfVlhfSU5UUklOU0lDUyhbLW16YXJjaF0sIFstbWFyY2g9 ejEzXSkKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKK2ZpCisKIEFDX1NVQlNUKENGTEFHU19DUkMp CiAKICMgU2VsZWN0IENSQy0zMkMgaW1wbGVtZW50YXRpb24uCkBAIC0yMTkxLDkgKzIyMDgsMjEg QEAgaWYgdGVzdCB4IiRVU0VfU0xJQ0lOR19CWV84X0NSQzMyQyIgPSB4IiIgJiYgdGVzdCB4IiRV U0VfU1NFNDJfQ1JDMzJDIiA9IHgiIiAmJgogICAgICAgICAgIGlmIHRlc3QgeCIkcGdhY19sb29u Z2FyY2hfY3JjMzJjX2ludHJpbnNpY3MiID0geCJ5ZXMiOyB0aGVuCiAgICAgICAgICAgICBVU0Vf TE9PTkdBUkNIX0NSQzMyQz0xCiAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgIyBmYWxsIGJh Y2sgdG8gc2xpY2luZy1ieS04IGFsZ29yaXRobSwgd2hpY2ggZG9lc24ndCByZXF1aXJlIGFueQot ICAgICAgICAgICAgIyBzcGVjaWFsIENQVSBzdXBwb3J0LgotICAgICAgICAgICAgVVNFX1NMSUNJ TkdfQllfOF9DUkMzMkM9MQorICAgICAgICAgICAgIyBVc2UgUzM5MFggdmVjdG9yIGV4dGVuc2lv bi4KKyAgICAgICAgICAgIGlmICh0ZXN0IHgiJHBnYWNfczM5MHhfdmVjdG9yX2ludHJpbnNpY3Nf X2Z6dmVjdG9yXyIgPSB4InllcyIgfHwKKyAgICAgICAgICAgICAgIHRlc3QgeCIkcGdhY19zMzkw eF92ZWN0b3JfaW50cmluc2ljc19fbXphcmNoXyIgPSB4InllcyIpOyB0aGVuCisgICAgICAgICAg ICAgIFVTRV9TMzkwWF9DUkMzMkM9MQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAj IFVzZSBTMzkwWCB2ZWN0b3IgZXh0ZW5zaW9uIHdpdGggcnVudGltZSBjaGVjay4KKyAgICAgICAg ICAgICAgaWYgdGVzdCB4IiRwZ2FjX3MzOTB4X3ZlY3Rvcl9pbnRyaW5zaWNzX19menZlY3Rvcl9f bWFyY2hfejEzIiA9IHgieWVzIiB8fAorICAgICAgICAgICAgICAgdGVzdCB4IiRwZ2FjX3MzOTB4 X3ZlY3Rvcl9pbnRyaW5zaWNzX19temFyY2hfX21hcmNoX3oxMyIgPSB4InllcyI7IHRoZW4KKyAg ICAgICAgICAgICAgVVNFX1MzOTBYX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0s9MQorICAgICAg ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIyBmYWxsIGJhY2sgdG8gc2xpY2luZy1ieS04 IGFsZ29yaXRobSwgd2hpY2ggZG9lc24ndCByZXF1aXJlIGFueQorICAgICAgICAgICAgICAgICMg c3BlY2lhbCBDUFUgc3VwcG9ydC4KKyAgICAgICAgICAgICAgICBVU0VfU0xJQ0lOR19CWV84X0NS QzMyQz0xCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQogICAgICAgICAgIGZpCiAg ICAgICAgIGZpCiAgICAgICBmaQpAQCAtMjIyOCw5ICsyMjU3LDIxIEBAIGVsc2UKICAgICAgICAg ICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX2xvb25nYXJjaC5vIgogICAgICAgICAgIEFDX01T R19SRVNVTFQoTG9vbmdBcmNoIENSQ0MgaW5zdHJ1Y3Rpb25zKQogICAgICAgICBlbHNlCi0gICAg ICAgICAgQUNfREVGSU5FKFVTRV9TTElDSU5HX0JZXzhfQ1JDMzJDLCAxLCBbRGVmaW5lIHRvIDEg dG8gdXNlIHNvZnR3YXJlIENSQy0zMkMgaW1wbGVtZW50YXRpb24gKHNsaWNpbmctYnktOCkuXSkK LSAgICAgICAgICBQR19DUkMzMkNfT0JKUz0icGdfY3JjMzJjX3NiOC5vIgotICAgICAgICAgIEFD X01TR19SRVNVTFQoc2xpY2luZy1ieS04KQorICAgICAgICAgIGlmIHRlc3QgeCIkVVNFX1MzOTBY X0NSQzMyQyIgPSB4IjEiOyB0aGVuCisgICAgICAgICAgICBBQ19ERUZJTkUoVVNFX1MzOTBYX0NS QzMyQywgMSwgW0RlZmluZSB0byAxIHRvIHVzZSBTMzkwWCBWZWN0b3IgaW5zdHJ1Y3Rpb25zIGZv ciBDUkMuXSkKKyAgICAgICAgICAgIFBHX0NSQzMyQ19PQkpTPSJwZ19jcmMzMmNfczM5MHgubyBw Z19jcmMzMmNfc2I4Lm8iCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFMzOTBYIFZlY3RvciBp bnN0cnVjdGlvbnMgZm9yIENSQykKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiB0ZXN0 IHgiJFVTRV9TMzkwWF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLIiA9IHgiMSI7IHRoZW4KKyAg ICAgICAgICAgICAgQUNfREVGSU5FKFVTRV9TMzkwWF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNL LCAxLCBbRGVmaW5lIHRvIDEgdG8gdXNlIFMzOTBYIFZlY3RvciBpbnN0cnVjdGlvbnMgd2l0aCBy dW50aW1lIGNoZWNrIGZvciBDUkMuXSkKKyAgICAgICAgICAgICAgUEdfQ1JDMzJDX09CSlM9InBn X2NyYzMyY19zMzkweC5vIHBnX2NyYzMyY19zMzkweF9jaG9vc2UubyBwZ19jcmMzMmNfc2I4Lm8i CisgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoUzM5MFggVmVjdG9yIGluc3RydWN0aW9ucyBm b3IgQ1JDIHdpdGggcnVudGltZSBjaGVjaykKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg ICAgQUNfREVGSU5FKFVTRV9TTElDSU5HX0JZXzhfQ1JDMzJDLCAxLCBbRGVmaW5lIHRvIDEgdG8g dXNlIHNvZnR3YXJlIENSQy0zMkMgaW1wbGVtZW50YXRpb24gKHNsaWNpbmctYnktOCkuXSkKKyAg ICAgICAgICAgICAgUEdfQ1JDMzJDX09CSlM9InBnX2NyYzMyY19zYjgubyIKKyAgICAgICAgICAg ICAgQUNfTVNHX1JFU1VMVChzbGljaW5nLWJ5LTgpCisgICAgICAgICAgICBmaQorICAgICAgICAg IGZpCiAgICAgICAgIGZpCiAgICAgICBmaQogICAgIGZpCmRpZmYgLS1naXQgYS9tZXNvbi5idWls ZCBiL21lc29uLmJ1aWxkCmluZGV4IGQxNDJlM2U0MDhiLi4zMTc3YzZlMWI3OCAxMDA2NDQKLS0t IGEvbWVzb24uYnVpbGQKKysrIGIvbWVzb24uYnVpbGQKQEAgLTI1NDcsNiArMjU0Nyw0OSBAQCBp bnQgbWFpbih2b2lkKQogICAgIGhhdmVfb3B0aW1pemVkX2NyYyA9IHRydWUKICAgZW5kaWYKIAor ZWxpZiBob3N0X2NwdSA9PSAnczM5MHgnIGFuZCBjYy5oYXNfZnVuY3Rpb24oJ2dldGF1eHZhbCcp CisgIGlmIGNjLmdldF9pZCgpID09ICdjbGFuZycKKyAgICBWR0ZNQUZMQUc9Jy1menZlY3RvcicK KyAgZWxzZQorICAgIFZHRk1BRkxBRz0nLW16YXJjaCcKKyAgZW5kaWYKKworICBwcm9nID0gJycn CisjaWZkZWYgX19jbGFuZ19fCisjICBpZiAoKF9fY2xhbmdfbWFqb3JfXyA9PSAxOCkgfHwgKF9f Y2xhbmdfbWFqb3JfXyA9PSAxOSAmJiAoX19jbGFuZ19taW5vcl9fIDwgMSB8fCAoX19jbGFuZ19t aW5vcl9fID09IDEgJiYgX19jbGFuZ19wYXRjaGxldmVsX18gPCAyKSkpKQorIyBlcnJvciBDUkMz Mi1WWCBvcHRpbWl6YXRpb25zIGFyZSBicm9rZW4gZHVlIHRvIGNvbXBpbGVyIGJ1ZyBpbiBDbGFu ZyB2ZXJzaW9uczogMTguMC4wIDw9IGNsYW5nX3ZlcnNpb24gPCAxOS4xLjIuIEVpdGhlciBkaXNh YmxlIHRoZSBDUkMzMi1WWCBvcHRpbWl6YXRpb24sIG9yIHN3aXRjaCB0byBhbm90aGVyIGNvbXBp bGVyL2NvbXBpbGVyIHZlcnNpb24uCisjICBlbmRpZgorI2VuZGlmCisjaWZkZWYgX19HTlVDX18K KyMgaWYgKChfX0dOVUNfXyA9PSAxNCkgJiYgKF9fR05VQ19NSU5PUl9fIDwgMykpCisjICBlcnJv ciBDUkMzMi1WWCBvcHRpbWl6YXRpb25zIGFyZSBicm9rZW4gZHVlIHRvIGNvbXBpbGVyIGJ1ZyBp biBHQ0MgdmVyc2lvbnM6IDE0LjAuMCA8PSBnY2NfdmVyc2lvbiA8IDE0LjMuMCBFaXRoZXIgZGlz YWJsZSB0aGUgQ1JDMzItVlggb3B0aW1pemF0aW9uLCBvciBzd2l0Y2ggdG8gYW5vdGhlciBjb21w aWxlci9jb21waWxlciB2ZXJzaW9uLgorIyBlbmRpZgorI2VuZGlmCisjaW5jbHVkZSA8dmVjaW50 cmluLmg+Cit1bnNpZ25lZCBsb25nIGxvbmcgYSBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgx NikpKSA9IHsgMCB9OwordW5zaWduZWQgbG9uZyBsb25nIGIgX19hdHRyaWJ1dGVfXygodmVjdG9y X3NpemUoMTYpKSkgPSB7IDAgfTsKK3Vuc2lnbmVkIGNoYXIgYyBfX2F0dHJpYnV0ZV9fKCh2ZWN0 b3Jfc2l6ZSgxNikpKSA9IHsgMCB9OworCitpbnQgbWFpbih2b2lkKSB7CisgICAgLy8gdGVzdCBm b3IgdmVjdG9yIGV4dGVuc2lvbgorICAgIC8vIHdlIGNhbiBzYWZlbHkgYXNzdW1lIHRoYXQgaWYg d2UgaGF2ZSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOAorICAgIC8vIHdlIHdpbGwgaGF2ZSBhbGwgbmVl ZGVkIGJ1aWx0aW5zCisgICAgYyA9IHZlY19nZm1zdW1fYWNjdW1fMTI4KGEsIGIsIGMpOworICAg IHJldHVybiBjWzBdOworfScnJworICBpZiBjYy5saW5rcyhwcm9nLCBuYW1lOiAnczM5MHhfdmVj dG9yX3Z4JywgYXJnczogdGVzdF9jX2FyZ3MgKyBbVkdGTUFGTEFHXSkKKyAgICAjIFVzZSBTMzkw WCBDUkMgRXh0ZW5zaW9uIHVuY29uZGl0aW9uYWxseQorICAgIGNkYXRhLnNldCgnVVNFX1MzOTBY X0NSQzMyQycsMSkKKyAgICBjZmxhZ3NfY3JjICs9IFZHRk1BRkxBRworICAgIGhhdmVfb3B0aW1p emVkX2NyYyA9IHRydWUKKyAgZWxpZiBjYy5saW5rcyhwcm9nLCBuYW1lOiAnczM5MHhfdmVjdG9y X3Z4K21hcmNoPXoxMycsIGFyZ3M6IHRlc3RfY19hcmdzICsgW1ZHRk1BRkxBRywgJy1tYXJjaD16 MTMnXSkKKyAgICAjIFVzZSBTMzkwWCBDUkMgRXh0ZW5zaW9uLCB3aXRoIHJ1bnRpbWUgY2hlY2sK KyAgICBjZGF0YS5zZXQoJ1VTRV9TMzkwWF9DUkMzMkMnLGZhbHNlKQorICAgIGNkYXRhLnNldCgn VVNFX1MzOTBYX0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0snLDEpCisgICAgY2ZsYWdzX2NyYyAr PSBWR0ZNQUZMQUcKKyAgICBjZmxhZ3NfY3JjICs9ICctbWFyY2g9ejEzJworICAgIGhhdmVfb3B0 aW1pemVkX2NyYyA9IHRydWUKKyAgZW5kaWYKIGVuZGlmCiAKIGlmIG5vdCBoYXZlX29wdGltaXpl ZF9jcmMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BnX2NvbmZpZy5oLmluIGIvc3JjL2luY2x1 ZGUvcGdfY29uZmlnLmguaW4KaW5kZXggNzI2YTdjMWJlMWYuLmE5ODNmNmQ2NGQzIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9wZ19jb25maWcuaC5pbgorKysgYi9zcmMvaW5jbHVkZS9wZ19jb25m aWcuaC5pbgpAQCAtNjY2LDYgKzY2NiwxMiBAQAogLyogRGVmaW5lIHRvIDEgdG8gdXNlIEFSTXY4 IENSQyBFeHRlbnNpb24gd2l0aCBhIHJ1bnRpbWUgY2hlY2suICovCiAjdW5kZWYgVVNFX0FSTVY4 X0NSQzMyQ19XSVRIX1JVTlRJTUVfQ0hFQ0sKIAorLyogRGVmaW5lIHRvIDEgdG8gdXNlIFMzOTBY IENSQyBFeHRlbnNpb24uICovCisjdW5kZWYgVVNFX1MzOTBYX0NSQzMyQworCisvKiBEZWZpbmUg dG8gMSB0byB1c2UgQVJNdjggQ1JDIEV4dGVuc2lvbiB3aXRoIGEgcnVudGltZSBjaGVjay4gKi8K KyN1bmRlZiBVU0VfUzM5MFhfQ1JDMzJDX1dJVEhfUlVOVElNRV9DSEVDSworCiAvKiBEZWZpbmUg dG8gMSB0byBidWlsZCB3aXRoIGFzc2VydGlvbiBjaGVja3MuICgtLWVuYWJsZS1jYXNzZXJ0KSAq LwogI3VuZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cG9ydC9wZ19jcmMzMmMuaCBiL3NyYy9pbmNsdWRlL3BvcnQvcGdfY3JjMzJjLmgKaW5kZXggODIz MTNiYjdmY2YuLmExYjExZDA3Y2Q5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3J0L3BnX2Ny YzMyYy5oCisrKyBiL3NyYy9pbmNsdWRlL3BvcnQvcGdfY3JjMzJjLmgKQEAgLTE0Miw2ICsxNDIs MzEgQEAgZXh0ZXJuIHBnX2NyYzMyYyBwZ19jb21wX2NyYzMyY19zYjgocGdfY3JjMzJjIGNyYywg Y29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbikKIGV4dGVybiBwZ19jcmMzMmMgKCpwZ19jb21w X2NyYzMyYykgKHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBsZW4pOwog ZXh0ZXJuIHBnX2NyYzMyYyBwZ19jb21wX2NyYzMyY19hcm12OChwZ19jcmMzMmMgY3JjLCBjb25z dCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKIAorI2VsaWYgZGVmaW5lZChVU0VfUzM5MFhfQ1JD MzJDKQorCisvKgorICogVXNlIFMzOTBYIHZlY3RvciBpbnN0cnVjdGlvbnMgb25seSBmb3IgYnVm ZmVycyBsb25nZXIgdGhlbiAxNiBieXRlCisgKi8KKyNkZWZpbmUgQ09NUF9DUkMzMkMoY3JjLCBk YXRhLCBsZW4pCQkJCQkJCVwKKwkoKGNyYykgPSAobGVuKSA8IDE2ID8gcGdfY29tcF9jcmMzMmNf c2I4KChjcmMpLChkYXRhKSwobGVuKSkgOiBwZ19jb21wX2NyYzMyY19zMzkweCgoY3JjKSwgKGRh dGEpLCAobGVuKSkpCisjZGVmaW5lIEZJTl9DUkMzMkMoY3JjKSAoKGNyYykgPSBwZ19ic3dhcDMy KGNyYykgXiAweEZGRkZGRkZGKQorCitleHRlcm4gcGdfY3JjMzJjIHBnX2NvbXBfY3JjMzJjX3Ni OChwZ19jcmMzMmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKTsKK2V4dGVybiBw Z19jcmMzMmMgcGdfY29tcF9jcmMzMmNfczM5MHgocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAq ZGF0YSwgc2l6ZV90IGxlbik7CisKKyNlbGlmIGRlZmluZWQoVVNFX1MzOTBYX0NSQzMyQ19XSVRI X1JVTlRJTUVfQ0hFQ0spCisvKgorICogVXNlIFMzOTBYIHZlY3RvciBpbnN0cnVjdGlvbnMgb25s eSBmb3IgYnVmZmVycyBsb25nZXIgdGhlbiAxNiBieXRlLgorICogRm9yIHJ1bnRpbWUgY2hlY2sg dXNlIHBnX2NvbXBfY3JjMzJjIGluc3RlYWQgb2YgcGdfY29tcF9jcmMzMmNfczM5MHgKKyAqLwor I2RlZmluZSBDT01QX0NSQzMyQyhjcmMsIGRhdGEsIGxlbikJCQkJCQkJXAorCSgoY3JjKSA9IChs ZW4pIDwgMTYgPyBwZ19jb21wX2NyYzMyY19zYjgoKGNyYyksKGRhdGEpLChsZW4pKSA6IHBnX2Nv bXBfY3JjMzJjKChjcmMpLCAoZGF0YSksIChsZW4pKSkKKyNkZWZpbmUgRklOX0NSQzMyQyhjcmMp ICgoY3JjKSA9IHBnX2Jzd2FwMzIoY3JjKSBeIDB4RkZGRkZGRkYpCisKK2V4dGVybiBwZ19jcmMz MmMgcGdfY29tcF9jcmMzMmNfc2I4KHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNp emVfdCBsZW4pOworZXh0ZXJuIHBnX2NyYzMyYyAoKnBnX2NvbXBfY3JjMzJjKSAocGdfY3JjMzJj IGNyYywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IGxlbik7CitleHRlcm4gcGdfY3JjMzJjIHBn X2NvbXBfY3JjMzJjX3MzOTB4KHBnX2NyYzMyYyBjcmMsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf dCBsZW4pOworCiAjZWxzZQogLyoKICAqIFVzZSBzbGljaW5nLWJ5LTggYWxnb3JpdGhtLgpkaWZm IC0tZ2l0IGEvc3JjL3BvcnQvTWFrZWZpbGUgYi9zcmMvcG9ydC9NYWtlZmlsZQppbmRleCA0Mjc0 OTQ5ZGZhNC4uZmMyYzI5MDdiMzYgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L01ha2VmaWxlCisrKyBi L3NyYy9wb3J0L01ha2VmaWxlCkBAIC04NSwxMCArODUsMTMgQEAgbGlicGdwb3J0LmE6ICQoT0JK UykKIAlybSAtZiAkQAogCSQoQVIpICQoQVJPUFQpICRAICReCiAKLSMgYWxsIHZlcnNpb25zIG9m IHBnX2NyYzMyY19hcm12OC5vIG5lZWQgQ0ZMQUdTX0NSQworIyBhbGwgdmVyc2lvbnMgb2YgcGdf Y3JjMzJjX2FybXY4Lm8gYW5kIHBnX2NyYzMyY19zMzkweC5vIG5lZWQgQ0ZMQUdTX0NSQwogcGdf Y3JjMzJjX2FybXY4Lm86IENGTEFHUys9JChDRkxBR1NfQ1JDKQogcGdfY3JjMzJjX2FybXY4X3No bGliLm86IENGTEFHUys9JChDRkxBR1NfQ1JDKQogcGdfY3JjMzJjX2FybXY4X3Nydi5vOiBDRkxB R1MrPSQoQ0ZMQUdTX0NSQykKK3BnX2NyYzMyY19zMzkweC5vOiBDRkxBR1MrPSQoQ0ZMQUdTX0NS QykKK3BnX2NyYzMyY19zMzkweF9zaGxpYi5vOiBDRkxBR1MrPSQoQ0ZMQUdTX0NSQykKK3BnX2Ny YzMyY19zMzkweF9zcnYubzogQ0ZMQUdTKz0kKENGTEFHU19DUkMpCiAKICMKICMgU2hhcmVkIGxp YnJhcnkgdmVyc2lvbnMgb2Ygb2JqZWN0IGZpbGVzCmRpZmYgLS1naXQgYS9zcmMvcG9ydC9tZXNv bi5idWlsZCBiL3NyYy9wb3J0L21lc29uLmJ1aWxkCmluZGV4IGZjN2IwNTlmZWU1Li5kODI4NGEz MWY0NyAxMDA2NDQKLS0tIGEvc3JjL3BvcnQvbWVzb24uYnVpbGQKKysrIGIvc3JjL3BvcnQvbWVz b24uYnVpbGQKQEAgLTEwMCw2ICsxMDAsMTMgQEAgcmVwbGFjZV9mdW5jc19wb3MgPSBbCiAgICMg bG9vbmdhcmNoCiAgIFsncGdfY3JjMzJjX2xvb25nYXJjaCcsICdVU0VfTE9PTkdBUkNIX0NSQzMy QyddLAogCisgICMgczM5MHgKKyAgWydwZ19jcmMzMmNfczM5MHgnLCAnVVNFX1MzOTBYX0NSQzMy QycsJ2NyYyddLAorICBbJ3BnX2NyYzMyY19zMzkweCcsICdVU0VfUzM5MFhfQ1JDMzJDX1dJVEhf UlVOVElNRV9DSEVDSycsICdjcmMnXSwKKyAgWydwZ19jcmMzMmNfczM5MHhfY2hvb3NlJywgJ1VT RV9TMzkwWF9DUkMzMkNfV0lUSF9SVU5USU1FX0NIRUNLJ10sCisgIFsncGdfY3JjMzJjX3NiOCcs ICdVU0VfUzM5MFhfQ1JDMzJDJ10sCisgIFsncGdfY3JjMzJjX3NiOCcsICdVU0VfUzM5MFhfQ1JD MzJDX1dJVEhfUlVOVElNRV9DSEVDSyddLAorCiAgICMgZ2VuZXJpYyBmYWxsYmFjawogICBbJ3Bn X2NyYzMyY19zYjgnLCAnVVNFX1NMSUNJTkdfQllfOF9DUkMzMkMnXSwKIF0KZGlmZiAtLWdpdCBh L3NyYy9wb3J0L3BnX2NyYzMyY19zMzkweC5jIGIvc3JjL3BvcnQvcGdfY3JjMzJjX3MzOTB4LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRmYzgzOWM1NTA4Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3BvcnQvcGdfY3JjMzJjX3MzOTB4LmMKQEAgLTAsMCArMSwyNjMg QEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX2NyYzMyY19zMzkweC5jCisgKgkgIEhh cmR3YXJlLWFjY2VsZXJhdGVkIENSQy0zMkMgdmFyaWFudHMgZm9yIExpbnV4IG9uIElCTSBaICYg TGludXhPTkUKKyAqCisgKiBUaGlzIGNvZGUgd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBIZW5k cmlrIEJydWVja25lcgorICogPGJydWVja25lckBsaW51eC5pYm0uY29tPiBmb3IgdXNlIGluIHRo ZSBMaW51eCBrZXJuZWwgYW5kIGhhcyBiZWVuCisgKiByZWxpY2Vuc2VkIHVuZGVyIHRoZSBwb3N0 Z3Jlc3FsLWxpY2Vuc2UuCisgKgorICogVXNlIHRoZSB6L0FyY2hpdGVjdHVyZSBWZWN0b3IgRXh0 ZW5zaW9uIEZhY2lsaXR5IHRvIGFjY2VsZXJhdGUgdGhlCisgKiBjb21wdXRpbmcgb2YgYml0cmVm bGVjdGVkIENSQy0zMkMgY2hlY2tzdW1zLgorICoKKyAqIFRoaXMgQ1JDLTMyQyBpbXBsZW1lbnRh dGlvbiBhbGdvcml0aG0gaXMgYml0cmVmbGVjdGVkIGFuZCBwcm9jZXNzZXMKKyAqIHRoZSBsZWFz dC1zaWduaWZpY2FudCBiaXQgZmlyc3QgKExpdHRsZS1FbmRpYW4pLgorICoKKyAqIENvcHlyaWdo dCAoYykgMjAyNSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyAoSUJNKQorICoKKyAq IElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9wb3J0L3BnX2NyYzMyY19zMzkweC5jCisgKgorICot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJjLmgiCisjaW5jbHVkZSA8dmVjaW50cmlu Lmg+CisKKyNpbmNsdWRlICJwb3J0L3BnX2NyYzMyYy5oIgorCisjZGVmaW5lIFZYX0FMSUdOTUVO VCAxNkwKKyNkZWZpbmUgVlhfQUxJR05fTUFTSyAoVlhfQUxJR05NRU5UIC0gMSkKKwordHlwZWRl ZiB1bnNpZ25lZCBjaGFyIHV2MTZxaSBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgxNikpKTsK K3R5cGVkZWYgdW5zaWduZWQgaW50IHV2NHNpIF9fYXR0cmlidXRlX18oKHZlY3Rvcl9zaXplKDE2 KSkpOwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdXYyZGkgX19hdHRyaWJ1dGVfXygodmVj dG9yX3NpemUoMTYpKSk7CisKK3N0YXRpYyB1aW50MzJfdAorY3JjMzJfbGVfdmdmbV8xNih1aW50 MzJfdCBjcmMsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwkvKi0t LS0tLS0tLS0KKwkgKiBUaGUgQ1JDLTMyQyBjb25zdGFudCBibG9jayBjb250YWlucyByZWR1Y3Rp b24gY29uc3RhbnRzIHRvIGZvbGQgYW5kCisJICogcHJvY2VzcyBwYXJ0aWN1bGFyIGNodW5rcyBv ZiB0aGUgaW5wdXQgZGF0YSBzdHJlYW0gaW4gcGFyYWxsZWwuCisJICoKKwkgKiBGb3IgdGhlIENS Qy0zMkMgdmFyaWFudHMsIHRoZSBjb25zdGFudHMgYXJlIHByZWNvbXB1dGVkIGFjY29yZGluZyB0 bworCSAqIHRoZXNlIGRlZmluaXRpb25zOgorCSAqCisJICogICAgICBSMSA9IFsoeDQqMTI4KzMy IG1vZCBQJyh4KSA8PCAzMildJyA8PCAxCisJICogICAgICBSMiA9IFsoeDQqMTI4LTMyIG1vZCBQ Jyh4KSA8PCAzMildJyA8PCAxCisJICogICAgICBSMyA9IFsoeDEyOCszMiBtb2QgUCcoeCkgPDwg MzIpXScgICA8PCAxCisJICogICAgICBSNCA9IFsoeDEyOC0zMiBtb2QgUCcoeCkgPDwgMzIpXScg ICA8PCAxCisJICogICAgICBSNSA9IFsoeDY0IG1vZCBQJyh4KSA8PCAzMildJyAgICAgICA8PCAx CisJICogICAgICBSNiA9IFsoeDMyIG1vZCBQJyh4KSA8PCAzMildJyAgICAgICA8PCAxCisJICoK KwkgKiAgICAgIFRoZSBiaXRyZWZsZWN0ZWQgQmFycmV0IHJlZHVjdGlvbiBjb25zdGFudCwgdScs IGlzIGRlZmluZWQgYXMKKwkgKiAgICAgIHRoZSBiaXQgcmV2ZXJzYWwgb2YgZmxvb3IoeCoqNjQg LyBQKHgpKS4KKwkgKgorCSAqICAgICAgd2hlcmUgUCh4KSBpcyB0aGUgcG9seW5vbWlhbCBpbiB0 aGUgbm9ybWFsIGRvbWFpbiBhbmQgdGhlIFAnKHgpIGlzIHRoZQorCSAqICAgICAgcG9seW5vbWlh bCBpbiB0aGUgcmV2ZXJzZWQgKGJpdHJlZmxlY3RlZCkgZG9tYWluLgorCSAqCisJICogQ1JDLTMy QyAoQ2FzdGFnbm9saSkgcG9seW5vbWlhbHM6CisJICoKKwkgKiAgICAgIFAoeCkgID0gMHgxRURD NkY0MQorCSAqICAgICAgUCcoeCkgPSAweDgyRjYzQjc4CisJICovCisJY29uc3QJCXV2MTZxaSBw ZXJtX2xlMmJlID0gezE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMs IDIsIDEsIDB9OyAvKiBCRS0+TEUgbWFzayAqLworCWNvbnN0CQl1djJkaSByMnIxID0gezB4MDll NGFkZGY4LCAweDc0MGVlZjAyfTsgLyogUjIsIFIxICovCisJY29uc3QJCXV2MmRpIHI0cjMgPSB7 MHgxNGNkMDBiZDYsIDB4ZjIwYzBkZmV9OyAvKiBSNCwgUjMgKi8KKwljb25zdAkJdXYyZGkgcjUg PSB7MCwgMHgwZGQ0NWFhYjh9OwkvKiBSNSAqLworCWNvbnN0CQl1djJkaSBydV9wb2x5ID0gezAs IDB4MGRlYTcxM2YxfTsJLyogdScgKi8KKwljb25zdAkJdXYyZGkgY3JjX3BvbHkgPSB7MCwgMHgx MDVlYzc2ZjB9OwkvKiBQJyh4KSA8PCAxICovCisJdXYyZGkJCXYwID0gezAsIDB9OworCXV2MmRp CQl2MSA9IHswLCAwfTsKKwl1djJkaQkJdjIgPSB7MCwgMH07CisJdXYyZGkJCXYzID0gezAsIDB9 OworCXV2MmRpCQl2NCA9IHswLCAwfTsKKwl1djE2cWkJCXY5ID0gezAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9OworCisJLyoKKwkgKiBMb2FkIHRoZSBpbml0 aWFsIENSQyB2YWx1ZS4KKwkgKgorCSAqIFRoZSBDUkMgdmFsdWUgaXMgbG9hZGVkIGludG8gdGhl IHJpZ2h0bW9zdCB3b3JkIG9mIHRoZSB2ZWN0b3IgcmVnaXN0ZXIKKwkgKiBhbmQgaXMgbGF0ZXIg WE9SZWQgd2l0aCB0aGUgTFNCIHBvcnRpb24gb2YgdGhlIGxvYWRlZCBpbnB1dCBkYXRhLgorCSAq LworCXYwID0gKHV2MmRpKSB2ZWNfaW5zZXJ0KGNyYywgKHV2NHNpKSB2MCwgMyk7CisKKwlpZiAo bGVuID49IDY0KQorCXsKKwkJLyogTG9hZCBhIDY0LWJ5dGUgZGF0YSBjaHVuayBhbmQgWE9SIHdp dGggQ1JDICovCisJCXYxID0gdmVjX3Blcm0oKCh1djJkaSAqKSBidWYpWzBdLCAoKHV2MmRpICop IGJ1ZilbMF0sIHBlcm1fbGUyYmUpOworCQl2MiA9IHZlY19wZXJtKCgodXYyZGkgKikgYnVmKVsx XSwgKCh1djJkaSAqKSBidWYpWzFdLCBwZXJtX2xlMmJlKTsKKwkJdjMgPSB2ZWNfcGVybSgoKHV2 MmRpICopIGJ1ZilbMl0sICgodXYyZGkgKikgYnVmKVsyXSwgcGVybV9sZTJiZSk7CisJCXY0ID0g dmVjX3Blcm0oKCh1djJkaSAqKSBidWYpWzNdLCAoKHV2MmRpICopIGJ1ZilbM10sIHBlcm1fbGUy YmUpOworCisJCXYxIF49IHYwOworCQlidWYgKz0gNjQ7CisJCWxlbiAtPSA2NDsKKworCQl3aGls ZSAobGVuID49IDY0KQorCQl7CisJCQkvKiBMb2FkIHRoZSBuZXh0IDY0LWJ5dGUgZGF0YSBjaHVu ayAqLworCQkJdXYxNnFpCQlwYXJ0MSA9IHZlY19wZXJtKCgodXYxNnFpICopIGJ1ZilbMF0sICgo dXYxNnFpICopIGJ1ZilbMF0sIHBlcm1fbGUyYmUpOworCQkJdXYxNnFpCQlwYXJ0MiA9IHZlY19w ZXJtKCgodXYxNnFpICopIGJ1ZilbMV0sICgodXYxNnFpICopIGJ1ZilbMV0sIHBlcm1fbGUyYmUp OworCQkJdXYxNnFpCQlwYXJ0MyA9IHZlY19wZXJtKCgodXYxNnFpICopIGJ1ZilbMl0sICgodXYx NnFpICopIGJ1ZilbMl0sIHBlcm1fbGUyYmUpOworCQkJdXYxNnFpCQlwYXJ0NCA9IHZlY19wZXJt KCgodXYxNnFpICopIGJ1ZilbM10sICgodXYxNnFpICopIGJ1ZilbM10sIHBlcm1fbGUyYmUpOwor CisJCQkvKgorCQkJICogUGVyZm9ybSBhIEdGKDIpIG11bHRpcGxpY2F0aW9uIG9mIHRoZSBkb3Vi bGV3b3JkcyBpbiBWMSB3aXRoCisJCQkgKiB0aGUgUjEgYW5kIFIyIHJlZHVjdGlvbiBjb25zdGFu dHMgaW4gVjAuICBUaGUgaW50ZXJtZWRpYXRlCisJCQkgKiByZXN1bHQgaXMgdGhlbiBmb2xkZWQg KGFjY3VtdWxhdGVkKSB3aXRoIHRoZSBuZXh0IGRhdGEgY2h1bmsgaW4KKwkJCSAqIFBBUlQxIGFu ZCBzdG9yZWQgaW4gVjEuIFJlcGVhdCB0aGlzIHN0ZXAgZm9yIHRoZSByZWdpc3RlcgorCQkJICog Y29udGVudHMgaW4gVjIsIFYzLCBhbmQgVjQgcmVzcGVjdGl2ZWx5LgorCQkJICovCisJCQl2MSA9 ICh1djJkaSkgdmVjX2dmbXN1bV9hY2N1bV8xMjgocjJyMSwgdjEsIHBhcnQxKTsKKwkJCXYyID0g KHV2MmRpKSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChyMnIxLCB2MiwgcGFydDIpOworCQkJdjMgPSAo dXYyZGkpIHZlY19nZm1zdW1fYWNjdW1fMTI4KHIycjEsIHYzLCBwYXJ0Myk7CisJCQl2NCA9ICh1 djJkaSkgdmVjX2dmbXN1bV9hY2N1bV8xMjgocjJyMSwgdjQsIHBhcnQ0KTsKKworCQkJYnVmICs9 IDY0OworCQkJbGVuIC09IDY0OworCQl9CisKKwkJLyoKKwkJICogRm9sZCBWMSB0byBWNCBpbnRv IGEgc2luZ2xlIDEyOC1iaXQgdmFsdWUgaW4gVjEuICBNdWx0aXBseSBWMSB3aXRoCisJCSAqIFIz IGFuZCBSNCBhbmQgYWNjdW11bGF0aW5nIHRoZSBuZXh0IDEyOC1iaXQgY2h1bmsgdW50aWwgYSBz aW5nbGUKKwkJICogMTI4LWJpdCB2YWx1ZSByZW1haW5zLgorCQkgKi8KKwkJdjEgPSAodXYyZGkp IHZlY19nZm1zdW1fYWNjdW1fMTI4KHI0cjMsIHYxLCAodXYxNnFpKSB2Mik7CisJCXYxID0gKHV2 MmRpKSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChyNHIzLCB2MSwgKHV2MTZxaSkgdjMpOworCQl2MSA9 ICh1djJkaSkgdmVjX2dmbXN1bV9hY2N1bV8xMjgocjRyMywgdjEsICh1djE2cWkpIHY0KTsKKwl9 CisJZWxzZQorCXsKKworCQkvKgorCQkgKiBMb2FkIGEgMTYtYnl0ZSBkYXRhIGNodW5rIGFuZCBY T1Igd2l0aCBDUkMKKwkJICovCisJCXYxID0gdmVjX3Blcm0oKCh1djJkaSAqKSBidWYpWzBdLCAo KHV2MmRpICopIGJ1ZilbMF0sIHBlcm1fbGUyYmUpOworCQl2MSBePSB2MDsKKwkJYnVmICs9IDE2 OworCQlsZW4gLT0gMTY7CisJfQorCisJd2hpbGUgKGxlbiA+PSAxNikKKwl7CisJCS8qIExvYWQg bmV4dCBkYXRhIGNodW5rICovCisJCXYyID0gdmVjX3Blcm0oKih1djJkaSAqKSBidWYsICoodXYy ZGkgKikgYnVmLCBwZXJtX2xlMmJlKTsKKworCQkvKiBGb2xkIG5leHQgZGF0YSBjaHVuayAqLwor CQl2MSA9ICh1djJkaSkgdmVjX2dmbXN1bV9hY2N1bV8xMjgocjRyMywgdjEsICh1djE2cWkpIHYy KTsKKworCQlidWYgKz0gMTY7CisJCWxlbiAtPSAxNjsKKwl9CisKKwkvKgorCSAqIFNldCB1cCBh IHZlY3RvciByZWdpc3RlciBmb3IgYnl0ZSBzaGlmdHMuICBUaGUgc2hpZnQgdmFsdWUgbXVzdCBi ZQorCSAqIGxvYWRlZCBpbiBiaXRzIDEtNCBpbiBieXRlIGVsZW1lbnQgNyBvZiBhIHZlY3RvciBy ZWdpc3Rlci4gU2hpZnQgYnkgOAorCSAqIGJ5dGVzOiAweDQwIFNoaWZ0IGJ5IDQgYnl0ZXM6IDB4 MjAKKwkgKi8KKworCXY5ID0gdmVjX2luc2VydCgodW5zaWduZWQgY2hhcikgMHg0MCwgdjksIDcp OworCisJLyoKKwkgKiBQcmVwYXJlIFYwIGZvciB0aGUgbmV4dCBHRigyKSBtdWx0aXBsaWNhdGlv bjogc2hpZnQgVjAgYnkgOCBieXRlcyB0bworCSAqIG1vdmUgUjQgaW50byB0aGUgcmlnaHRtb3N0 IGRvdWJsZXdvcmQgYW5kIHNldCB0aGUgbGVmdG1vc3QgZG91Ymxld29yZAorCSAqIHRvIDB4MS4K KwkgKi8KKwl2MCA9IHZlY19zcmIocjRyMywgKHV2MmRpKSB2OSk7CisJdjBbMF0gPSAxOworCisJ LyoKKwkgKiBDb21wdXRlIEdGKDIpIHByb2R1Y3Qgb2YgVjEgYW5kIFYwLiAgVGhlIHJpZ2h0bW9z dCBkb3VibGV3b3JkIG9mIFYxIGlzCisJICogbXVsdGlwbGllZCB3aXRoIFI0LiAgVGhlIGxlZnRt b3N0IGRvdWJsZXdvcmQgb2YgVjEgaXMgbXVsdGlwbGllZCBieSAweDEKKwkgKiBhbmQgaXMgdGhl biBYT1JlZCB3aXRoIHJpZ2h0bW9zdCBwcm9kdWN0LiBJbXBsaWNpdGx5LCB0aGUgaW50ZXJtZWRp YXRlCisJICogbGVmdG1vc3QgcHJvZHVjdCBiZWNvbWVzIHBhZGRlZAorCSAqLworCXYxID0gKHV2 MmRpKSB2ZWNfZ2Ztc3VtXzEyOCh2MCwgdjEpOworCisJLyoKKwkgKiBOb3cgZG8gdGhlIGZpbmFs IDMyLWJpdCBmb2xkIGJ5IG11bHRpcGx5aW5nIHRoZSByaWdodG1vc3Qgd29yZCBpbiBWMQorCSAq IHdpdGggUjUgYW5kIFhPUiB0aGUgcmVzdWx0IHdpdGggdGhlIHJlbWFpbmluZyBiaXRzIGluIFYx LgorCSAqCisJICogVG8gYWNoaWV2ZSB0aGlzIGJ5IGEgc2luZ2xlIFZHRk1BRywgcmlnaHQgc2hp ZnQgVjEgYnkgYSB3b3JkIGFuZCBzdG9yZQorCSAqIHRoZSByZXN1bHQgaW4gVjIgd2hpY2ggaXMg dGhlbiBhY2N1bXVsYXRlZC4gIFVzZSB0aGUgdmVjdG9yIHVucGFjaworCSAqIGluc3RydWN0aW9u IHRvIGxvYWQgdGhlIHJpZ2h0bW9zdCBoYWxmIG9mIHRoZSBkb3VibGV3b3JkIGludG8gdGhlCisJ ICogcmlnaHRtb3N0IGRvdWJsZXdvcmQgZWxlbWVudCBvZiBWMTsgdGhlIG90aGVyIGhhbGYgaXMg bG9hZGVkIGluIHRoZQorCSAqIGxlZnRtb3N0IGRvdWJsZXdvcmQuIFRoZSB2ZWN0b3IgcmVnaXN0 ZXIgd2l0aCBDT05TVF9SNSBjb250YWlucyB0aGUgUjUKKwkgKiBjb25zdGFudCBpbiB0aGUgcmln aHRtb3N0IGRvdWJsZXdvcmQgYW5kIHRoZSBsZWZ0bW9zdCBkb3VibGV3b3JkIGlzCisJICogemVy byB0byBpZ25vcmUgdGhlIGxlZnRtb3N0IHByb2R1Y3Qgb2YgVjEuCisJICovCisJdjkgPSB2ZWNf aW5zZXJ0KCh1bnNpZ25lZCBjaGFyKSAweDIwLCB2OSwgNyk7CisJdjIgPSB2ZWNfc3JiKHYxLCAo dXYyZGkpIHY5KTsKKwl2MSA9IHZlY191bnBhY2tsKCh1djRzaSkgdjEpOwkvKiBTcGxpdCByaWdo dG1vc3QgZG91Ymxld29yZCAqLworCXYxID0gKHV2MmRpKSB2ZWNfZ2Ztc3VtX2FjY3VtXzEyOChy NSwgdjEsICh1djE2cWkpIHYyKTsKKworCS8qLS0tLS0tLS0tLQorCSAqIEFwcGx5IGEgQmFycmV0 IHJlZHVjdGlvbiB0byBjb21wdXRlIHRoZSBmaW5hbCAzMi1iaXQgQ1JDIHZhbHVlLgorCSAqCisJ ICogVGhlIGlucHV0IHZhbHVlcyB0byB0aGUgQmFycmV0IHJlZHVjdGlvbiBhcmUgdGhlIGRlZ3Jl ZS02MyBwb2x5bm9taWFsCisJICogaW4gVjEgKFIoeCkpLCBkZWdyZWUtMzIgZ2VuZXJhdG9yIHBv bHlub21pYWwsIGFuZCB0aGUgcmVkdWN0aW9uCisJICogY29uc3RhbnQgdS4gIFRoZSBCYXJyZXQg cmVkdWN0aW9uIHJlc3VsdCBpcyB0aGUgQ1JDIHZhbHVlIG9mIFIoeCkgbW9kCisJICogUCh4KS4K KwkgKgorCSAqIFRoZSBCYXJyZXQgcmVkdWN0aW9uIGFsZ29yaXRobSBpcyBkZWZpbmVkIGFzOgor CSAqCisJICogICAgMS4gVDEoeCkgPSBmbG9vciggUih4KSAvIHheMzIgKSBHRjJNVUwgdQorCSAq ICAgIDIuIFQyKHgpID0gZmxvb3IoIFQxKHgpIC8geF4zMiApIEdGMk1VTCBQKHgpCisJICogICAg My4gQyh4KSAgPSBSKHgpIFhPUiBUMih4KSBtb2QgeF4zMgorCSAqCisJICogIE5vdGU6IFRoZSBs ZWZ0bW9zdCBkb3VibGV3b3JkIG9mIHZlY3RvciByZWdpc3RlciBjb250YWluaW5nCisJICogIENP TlNUX1JVX1BPTFkgaXMgemVybyBhbmQsIHRodXMsIHRoZSBpbnRlcm1lZGlhdGUgR0YoMikgcHJv ZHVjdAorCSAqICBpcyB6ZXJvIGFuZCBkb2VzIG5vdCBjb250cmlidXRlIHRvIHRoZSBmaW5hbCBy ZXN1bHQuCisJICovCisKKwkvKiBUMSh4KSA9IGZsb29yKCBSKHgpIC8geF4zMiApIEdGMk1VTCB1 ICovCisJdjIgPSB2ZWNfdW5wYWNrbCgodXY0c2kpIHYxKTsKKwl2MiA9ICh1djJkaSkgdmVjX2dm bXN1bV8xMjgocnVfcG9seSwgdjIpOworCisJLyoKKwkgKiBDb21wdXRlIHRoZSBHRigyKSBwcm9k dWN0IG9mIHRoZSBDUkMgcG9seW5vbWlhbCB3aXRoIFQxKHgpIGluIFYyIGFuZAorCSAqIFhPUiB0 aGUgaW50ZXJtZWRpYXRlIHJlc3VsdCwgVDIoeCksIHdpdGggdGhlIHZhbHVlIGluIFYxLiBUaGUg ZmluYWwKKwkgKiByZXN1bHQgaXMgc3RvcmVkIGluIHdvcmQgZWxlbWVudCAyIG9mIFYyLgorCSAq LworCXYyID0gdmVjX3VucGFja2woKHV2NHNpKSB2Mik7CisJdjIgPSAodXYyZGkpIHZlY19nZm1z dW1fYWNjdW1fMTI4KGNyY19wb2x5LCB2MiwgKHV2MTZxaSkgdjEpOworCisJcmV0dXJuICgodXY0 c2kpIHYyKVsyXTsKK30KKworcGdfY3JjMzJjCitwZ19jb21wX2NyYzMyY19zMzkweChwZ19jcmMz MmMgY3JjLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKQoreworCXVpbnRwdHJfdAlwcmVh bGlnbiwKKwkJCQlhbGlnbmVkLAorCQkJCXJlbWFpbmluZzsKKwljb25zdCB1bnNpZ25lZCBjaGFy ICpidWYgPSBkYXRhOworCisJLyoKKwkgKiBQcmVwcm9jZXNzIGluaXRpYWwgYnl0ZXMgd2l0aCBz Yjggc28gdGhlIGh3IGNhbiBzdGFydCBhdCBhbiBhbGlnbmVkCisJICogYWRkcmVzcworCSAqLwor CWlmICgodWludHB0cl90KSBidWYgJiBWWF9BTElHTl9NQVNLKQorCXsKKwkJcHJlYWxpZ24gPSBW WF9BTElHTk1FTlQgLSAoKHVpbnRwdHJfdCkgYnVmICYgVlhfQUxJR05fTUFTSyk7CisJCWxlbiAt PSBwcmVhbGlnbjsKKwkJY3JjID0gcGdfY29tcF9jcmMzMmNfc2I4KGNyYywgYnVmLCBwcmVhbGln bik7CisJCWJ1ZiArPSBwcmVhbGlnbjsKKwl9CisJYWxpZ25lZCA9IGxlbiAmIH5WWF9BTElHTl9N QVNLOworCXJlbWFpbmluZyA9IGxlbiAmIFZYX0FMSUdOX01BU0s7CisKKwkvKiBQcm9jZXNzIG1h am9yIHBhcnQgb2YgdGhlIGRhdGEgd2l0aCBodyBhY2NlbGVyYXRpb24gKi8KKwlpZiAoYWxpZ25l ZCkKKwl7CisJCWNyYyA9IHBnX2Jzd2FwMzIoY3JjMzJfbGVfdmdmbV8xNihwZ19ic3dhcDMyKGNy YyksIGJ1ZiwgKHNpemVfdCkgYWxpZ25lZCkpOworCX0KKworCS8qIFByb2Nlc3MgcmVtYWluaW5n IGJ5dGVzIHRoYXQgY291bGQgbm90IGJlIGhhbmRsZWQgYnkgaHcgKi8KKwlpZiAocmVtYWluaW5n KQorCXsKKwkJY3JjID0gcGdfY29tcF9jcmMzMmNfc2I4KGNyYywgYnVmICsgYWxpZ25lZCwgcmVt YWluaW5nKTsKKwl9CisKKwlyZXR1cm4gY3JjOworfQpkaWZmIC0tZ2l0IGEvc3JjL3BvcnQvcGdf Y3JjMzJjX3MzOTB4X2Nob29zZS5jIGIvc3JjL3BvcnQvcGdfY3JjMzJjX3MzOTB4X2Nob29zZS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xMjRmMGNlNzFjMwotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9wb3J0L3BnX2NyYzMyY19zMzkweF9jaG9vc2UuYwpAQCAtMCww ICsxLDQzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19jcmMzMmNfczM5MHhfY2hv b3NlLmMKKyAqCSAgQ2hvb3NlIGJldHdlZW4gUzM5MFggdmVjdG9yaXplZCBDUkMtMzJDIGFuZCBz b2Z0d2FyZSBDUkMtMzJDCisgKgkgIGltcGxlbWVudGF0aW9uLgorICoKKyAqIE9uIGZpcnN0IGNh bGwsIGNoZWNrcyBpZiB0aGUgQ1BVIHdlJ3JlIHJ1bm5pbmcgb24gc3VwcG9ydHMgdGhlCisgKiBT MzkwWF9WWCBFeHRlbnNpb24uIElmIGl0IGRvZXMsIHVzZSB0aGUgc3BlY2lhbCBpbnN0cnVjdGlv bnMgZm9yCisgKiBDUkMtMzJDIGNvbXB1dGF0aW9uLiBPdGhlcndpc2UsIGZhbGwgYmFjayB0byB0 aGUgcHVyZSBzb2Z0d2FyZQorICogaW1wbGVtZW50YXRpb24gKHNsaWNpbmctYnktOCkuCisgKgor ICogQ29weXJpZ2h0IChjKSAyMDI1LCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIChJ Qk0pCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL3BvcnQvcGdfY3JjMzJjX3MzOTB4 X2Nob29zZS5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgImMuaCIK KyNpbmNsdWRlICJwb3J0L3BnX2NyYzMyYy5oIgorCisjaW5jbHVkZSA8c3lzL2F1eHYuaD4KKwor LyoKKyAqIFRoaXMgZ2V0cyBjYWxsZWQgb24gdGhlIGZpcnN0IGNhbGwuIEl0IHJlcGxhY2VzIHRo ZSBmdW5jdGlvbiBwb2ludGVyCisgKiBzbyB0aGF0IHN1YnNlcXVlbnQgY2FsbHMgYXJlIHJvdXRl ZCBkaXJlY3RseSB0byB0aGUgY2hvc2VuIGltcGxlbWVudGF0aW9uLgorICovCitzdGF0aWMgcGdf Y3JjMzJjCitwZ19jb21wX2NyYzMyY19jaG9vc2UocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAq ZGF0YSwgc2l6ZV90IGxlbikKK3sKKwkvKiBkZWZhdWx0IGNhbGwgc2I4ICovCisJcGdfY29tcF9j cmMzMmMgPSBwZ19jb21wX2NyYzMyY19zYjg7CisKKwlpZiAoZ2V0YXV4dmFsKEFUX0hXQ0FQKSAm IEhXQ0FQX1MzOTBfVlgpCisJeworCQlwZ19jb21wX2NyYzMyYyA9IHBnX2NvbXBfY3JjMzJjX3Mz OTB4OworCX0KKworCXJldHVybiBwZ19jb21wX2NyYzMyYyhjcmMsIGRhdGEsIGxlbik7Cit9CisK K3BnX2NyYzMyYwkoKnBnX2NvbXBfY3JjMzJjKSAocGdfY3JjMzJjIGNyYywgY29uc3Qgdm9pZCAq ZGF0YSwgc2l6ZV90IGxlbikgPSBwZ19jb21wX2NyYzMyY19jaG9vc2U7Ci0tIAoyLjQ5LjAKCg== --_002_2078ad39a456088fd4a5ea98084e7d72bdf8ff2bcamelibmcom_--