From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from na01-obe.outbound.protection.outlook.com (mail-centralusazon11021026.outbound.protection.outlook.com [52.101.62.26]) by sourceware.org (Postfix) with ESMTPS id B68AA3858C2D for ; Fri, 9 Sep 2022 00:45:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B68AA3858C2D Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=microsoft.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=microsoft.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j6XOlyY5hOvLRXw8ZTnGMAD4q0T5muJVbYKb2SXLE7joOP2SF3nAXBhHJJ6bmDIKXF/3OG49IUdUy1XhfIe8LBaKSLt0SAEcPfVZbZBG/7TVCZgs0p6IbMv90npP1JG0sZFgQFnILU/lXsr2wrbmdHlEUIpyNCM2fy+/V+RQvlsgm2fxSA6IhjLTvYiCQCtUdKv4dzcTFlJyrDXd4PngxJXbkg762d2wYeebxTWE7XIMfuEvrH6R7h5o/nqGMR6h0UnTSsvF8DNu7D310FjBq89yjkKxRqv7AzrOm6MkPMLWWyhf1cbfwTMlTPATHRL2PClcH3NvHKEBUpJnVhxGqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=hcMVPxi16aELh6eMvNZM9/ukXbs5IcPl1mnkGVgSSEw=; b=hCGm7/zefyXODg7BUfngaq7wk97lQQF6nViqEMvFrYLegMftNAzdCPnP4IVQlk8rLB5jDq2JYZhcpPkEKHIERWJ0n26LIr8LwTfGTeDNBt528wUXQ/UejAuoAb+m/77dNWlQRl8TJOAe8wStxSf3SAdnDpzRFD7jIXGrKptFygMSR/WveSjwhn0G0YLe02FcJZGsEoqmGXrCTUrfsCpIpDAnDPblSMLohYOaA9OSSPGqH/M0WYE9eY01pMv70SupZsMvaVIzzlvjShUQPB4CRUIcXrY/1EAK2ZKrd+8BQLWCr4lQ7PViE3GtptTjHA9muZ/HRZ+fIXdbS06JuOiIfw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hcMVPxi16aELh6eMvNZM9/ukXbs5IcPl1mnkGVgSSEw=; b=iMtLLen2+TY8tblv3aAkNNR3sDBWbMOW8RH53/a4kMSIVO7RDzgKcd5KtlHwB0JuueEW7IlMUgVbjg5BVlpxQFoVshWXQOSq0ox5JdCbAqxhHYUuv7wrdqCQtYzr4Kre5C8X2ycwGFLOzY3UbKJH3lrxo0da867wT5p7T9gyEWo= Received: from CY5PR21MB3542.namprd21.prod.outlook.com (2603:10b6:930:d::7) by SA1PR21MB2017.namprd21.prod.outlook.com (2603:10b6:806:1b4::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.6; Fri, 9 Sep 2022 00:45:48 +0000 Received: from CY5PR21MB3542.namprd21.prod.outlook.com ([fe80::611f:85d3:50c0:89a5]) by CY5PR21MB3542.namprd21.prod.outlook.com ([fe80::611f:85d3:50c0:89a5%7]) with mapi id 15.20.5632.004; Fri, 9 Sep 2022 00:45:48 +0000 From: Eugene Rozenfeld To: Jason Merrill , "gcc-patches@gcc.gnu.org" CC: Andi Kleen , Jan Hubicka Subject: RE: [EXTERNAL] Re: [PING][PATCH] Add instruction level discriminator support. Thread-Topic: [EXTERNAL] Re: [PING][PATCH] Add instruction level discriminator support. Thread-Index: Adh8/GsLGopuj0OBTK2TA9TaqhlGjANYT+5wB06iNLAC9aDsgAK1N76AAANchAABVcCegAAPJQnQ Date: Fri, 9 Sep 2022 00:45:48 +0000 Message-ID: References: <5d9b2795-8a75-e4ea-07b1-856e448064dc@redhat.com> <863206fe-f5d6-932c-9b92-811f37774427@redhat.com> In-Reply-To: <863206fe-f5d6-932c-9b92-811f37774427@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=21648666-d276-4ff6-b211-394ea830ec5c;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2022-09-09T00:39:29Z;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY5PR21MB3542:EE_|SA1PR21MB2017:EE_ x-ms-office365-filtering-correlation-id: 081a2da8-1f9e-4e88-9f42-08da91fca353 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 2RD9E29Q6ZASLVEM5MWf2UyCXvZOROqN1SDq7onPCY3TXgHDv0fMz2I/uJwm9kvWcv9b1oKZrjWDjTwZwDC7NWPZcNNrpTPqm7N0bHvogOY8+99gFrKD1kJaZT5hOCJRgpGqDj3Ys2n/sU9Qaeu/RBvzzFgcKgNvJt6OOKPlVXUSP4Y5hIh6LCkctv/AN0MOLXIo0fnMpIAfT9afYtzHfLb4NDErAIyUGawIXwR9HoYpEMrLvOv+eHcA8JosijMph685K68bXtJY7XMrIVzWpyN/QK4xbr8YFNZRk1hIVr/EiJMTqTYA2PdqRRa4P0dNWjLhXkHRyQAMne59X7lPcuiSzAi01PvIBlZzmYQ6KYW12X9wjwXvKtxgVug27OS+8emiSpifR3SbxWvOLGFxvbt9FUZ+vm3N9FdZi1uOpVr/Z/FoXjroHtW8mQP6LjgrP158Agiznh4fZtku8SD1U+RbihsagViYbutBRO3JcV72GW4DihyS/YFT0IoUeVg16K8Z3Wz03zo6TXJ7UiVX73yTaz/tHMo7AkvKPLUXD+GevhKxC5m0Q7bvbE9KGWd8Z1nVVxMvyghgcN51xCzBLNv+ELWv/CeHT1Vh/WNaqE179nd5hR60PxLVF0pCtrjuN0HPmj6HxCbL+ahFCAvv7x/sl9ypl//LPAG3aGxLsqQw6guSWVh+OBy2I7jk7Spod1/A99TPClDdupX2KDVVHIEgCkRtmLfwLSZP2XReAQ70ZA8qC4SpdxW8TreCr7TNniUiDAF29xnvg/cl/EALbtflwzICsLeJFTam8Bic8qjCRopue4Cp6b7t4TGvwqrM1WLM9pD+e9pWK2XhpQxw9Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR21MB3542.namprd21.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(376002)(396003)(346002)(366004)(39860400002)(136003)(451199009)(53546011)(9686003)(6506007)(41300700001)(7696005)(71200400001)(76116006)(5660300002)(316002)(66946007)(66476007)(66446008)(4326008)(8676002)(64756008)(110136005)(54906003)(66556008)(966005)(33656002)(99936003)(86362001)(8936002)(478600001)(2906002)(8990500004)(38070700005)(83380400001)(186003)(55016003)(10290500003)(52536014)(122000001)(82950400001)(82960400001)(38100700002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?QLqRgCMXHP3fV8ECl4cuuqHaPYZdACjK2GUTUVdJtGk+pIdXEEjcfmxsIU2b?= =?us-ascii?Q?Hu+S5CIOuEhf7QGzCEmijs0z/Qb9jZxiQiCgUDlmiPVd39MJD2CRnMMxbAJo?= =?us-ascii?Q?ifz/Ie/iTBhjLsSlecp/eqBu2aFNY5onapVt8crJvaroc8Zn0+BW3PaM0Zah?= =?us-ascii?Q?SbAmvw+W3n3/Ie3xusp+bAaBgUEOqeQ1SqGZUUE2tv7J77bibeG1VXUi5ehl?= =?us-ascii?Q?OdeVDGveBe2yhsCtWRlVnjdy5/UmMR0My3+X3wbQOiE+hQDSBw3VAO9A+1gd?= =?us-ascii?Q?nfgZ6wjDBZ8qYM/BUkbaVv/XYGDLHE56h2Sr94skOidgcEa4CXzRAYl2JI0A?= =?us-ascii?Q?5fZ9EnEC1NVvEQFDk59nUegXD8RKz1+Y3AAo1eWG/s8EVyW4R2Z1t7C5uSrs?= =?us-ascii?Q?Zotuwq6LjfX3dXYOWETSVKC+zHPuQkjkQlcx+gjDQ7i9MVbvwqoXzQHi+JNo?= =?us-ascii?Q?lg1LzAp4WcXVeK4sEo4PdA3LRWd4SB8g8A0LZoOtQzxwCslFk3huR2AC9KlN?= =?us-ascii?Q?ujzVT/xlbwAa6vYqgT0wPwIxlLTTqM1BjZIdYlWr/gR1cLfQDc+LGu6xpXHO?= =?us-ascii?Q?66rWuIhQPVPaaiVTibE2wBceJTqA9CrzR9PXzUkk5gCglzh/cEjQmWJlFvb7?= =?us-ascii?Q?mbyhfPIbHWTZjhljwPGvGO16VJlyldPFW3K2hQC+POoPqlbZbYB5mCWr23Wn?= =?us-ascii?Q?Orc3VcB1vxUCXG90w+qV1cUkizexOigqzGBkWRNzmTptjsPUYHwTThJzlzqY?= =?us-ascii?Q?duJceg9XO5CGM2d1q9u9h3VkEuDuerYPNMFiv/sOeP4AGBhpMbH11CZdaEMm?= =?us-ascii?Q?/sDOkzESYwmoDa4TAzrv2rMms3X/GJKeSDKUEuJuQBl+fTKiCOp2k/QzJR6o?= =?us-ascii?Q?L4Lshqfr9e1We/EZRgoEDK+rTum0UfvkwhwyayLUqnH84stMaUZqy/A84Oxx?= =?us-ascii?Q?0T+H/o7sSDGm185CT8OviRTU9+S/LErQ4RnLZuDQsL5SRYxJ/TS07O97PGl2?= =?us-ascii?Q?UjXaQYJhdqUB74p8pkdwv2NrXZtK0/l25fm5JqnAU+aIbeXsaRaIJNIGOTgp?= =?us-ascii?Q?Y5L8rhZr1G3++lsI1Mx6nmtr9ky8YsXBArU5sIF5AKRdhjD34CPa2sME4dsB?= =?us-ascii?Q?TQU7X4FpO7eS72imYX2k0RpBvf5rYBEyEMEHEznP7y1KZTLEt8g7JfZQT2oB?= =?us-ascii?Q?pI5UMYTMpf6v+DCvSmfXqmKSLFv0k5r+33O5APcevFR5jFGRX8sJjmwXtS/T?= =?us-ascii?Q?ssymLYcm+f9g7EHVTqtsCapGZJb26INIXxhtFG5a1kwA26DzPGKm1GwXIvBq?= =?us-ascii?Q?jAHd2NLN0kHzWuJGhQpx+vr2HigZNRA1PVZhXWBoareqgW7Av66lmg5hZGcl?= =?us-ascii?Q?3siPPAt6kxrfRApPKhsu2gG41HiQqCHk6XpRl4aszfvE99mRkhT8EUxt7g6C?= =?us-ascii?Q?DpuqlISgfGex7VuSIAelhKdt+BvoI23Zl7P7vfzqFgUSBQzBBLhDlycbeBcs?= =?us-ascii?Q?ohzxRVoUd6ggLh4BNpk8FC0j0VC4ojfgJ6IIMN8lZb5BhRs3WZgJwXR8+rgt?= =?us-ascii?Q?jyK72voEkRh7U8SX16CXRKC5HSwjTsZFETYTfa0HZfgcJ5mayxzu9SBVasA3?= =?us-ascii?Q?+qyR4ABfoVjxlZE6UAToDLrMZtRu3BPxSy1qGJMSF8+8?= Content-Type: multipart/mixed; boundary="_002_CY5PR21MB35429A8B20254344DFE44C2791439CY5PR21MB3542namp_" MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR21MB2017 X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,KAM_LOTSOFHASH,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_CY5PR21MB35429A8B20254344DFE44C2791439CY5PR21MB3542namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Jason, Thank for your suggestion. The patch is updated (attached). Thanks, Eugene -----Original Message----- From: Jason Merrill =20 Sent: Thursday, September 08, 2022 10:26 AM To: Eugene Rozenfeld ; gcc-patches@gcc.gnu.= org Cc: Andi Kleen ; Jan Hubicka Subject: Re: [EXTERNAL] Re: [PING][PATCH] Add instruction level discriminat= or support. On 9/1/22 18:22, Eugene Rozenfeld wrote: > Jason, >=20 > I made another small change in addressing your feedback (attached). >=20 > Thanks, >=20 > Eugene >=20 > -----Original Message----- > From: Gcc-patches=20 > On Behalf Of=20 > Eugene Rozenfeld via Gcc-patches > Sent: Thursday, September 01, 2022 1:49 PM > To: Jason Merrill ; gcc-patches@gcc.gnu.org > Cc: Andi Kleen ; Jan Hubicka > Subject: RE: [EXTERNAL] Re: [PING][PATCH] Add instruction level discrimin= ator support. >=20 > Jason, >=20 > Thank you for your review. You are correct, we only need to check has_dis= criminator for the statement that's on the same line. > I updated the patch (attached). >=20 > Thanks, >=20 > Eugene >=20 > -----Original Message----- > From: Jason Merrill > Sent: Thursday, August 18, 2022 6:55 PM > To: Eugene Rozenfeld ;=20 > gcc-patches@gcc.gnu.org > Cc: Andi Kleen ; Jan Hubicka > Subject: [EXTERNAL] Re: [PING][PATCH] Add instruction level discriminator= support. >=20 > On 8/3/22 17:25, Eugene Rozenfeld wrote: >> One more ping for this patch >> https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgcc. >> gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F596065.html&data=3D >> 0 >> 5%7C01%7Ceugene.rozenfeld%40microsoft.com%7C3e9ebe6dd5b14fe4471808da8 >> 1 >> 85dc68%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63796470932569195 >> 1=20 >> %7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6 >> I=20 >> k1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3DK%2BMx6jelnED3n%2Be2d >> T >> DYAPOqZZ8Zlsd2%2FyPJ0qib5%2FM%3D&reserved=3D0 >> >> CC Jason since this changes discriminators emitted in dwarf. >> >> Thanks, >> >> Eugene >> >> -----Original Message----- >> From: Eugene Rozenfeld >> Sent: Monday, June 27, 2022 12:45 PM >> To: gcc-patches@gcc.gnu.org; Andi Kleen ; Jan=20 >> Hubicka >> Subject: RE: [PING][PATCH] Add instruction level discriminator support. >> >> Another ping for https://nam06.safelinks.protection.outlook.com/?url=3Dh= ttps%3A%2F%2Fgcc.gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F596065.htm= l&data=3D05%7C01%7Ceugene.rozenfeld%40microsoft.com%7Cc7c9fab519184eee0= bb808da91bf2fea%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63798254757908= 5499%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik= 1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3DKj3YWJrDqjX%2B0Ml3At5P8NRW= c1Xs6mbI%2F1vCk9%2BLaQs%3D&reserved=3D0 . >> >> I got a review from Andi (https://nam06.safelinks.protection.outlook.com= /?url=3Dhttps%3A%2F%2Fgcc.gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F5= 96549.html&data=3D05%7C01%7Ceugene.rozenfeld%40microsoft.com%7Cc7c9fab5= 19184eee0bb808da91bf2fea%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63798= 2547579085499%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiL= CJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3DNBzFtD0mH7EYKxsVW= fqZgSpQmUG18SIt01XRYUlwwW4%3D&reserved=3D0) but I also need a review fr= om someone who can approve the changes. >> >> Thanks, >> >> Eugene >> >> -----Original Message----- >> From: Eugene Rozenfeld >> Sent: Friday, June 10, 2022 12:03 PM >> To: gcc-patches@gcc.gnu.org; Andi Kleen ; Jan=20 >> Hubicka >> Subject: [PING][PATCH] Add instruction level discriminator support. >> >> Hello, >> >> I'd like to ping this patch: >> https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgcc. >> gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F596065.html&data=3D >> 0 >> 5%7C01%7Ceugene.rozenfeld%40microsoft.com%7C3e9ebe6dd5b14fe4471808da8 >> 1 >> 85dc68%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63796470932569195 >> 1=20 >> %7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6 >> I=20 >> k1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3DK%2BMx6jelnED3n%2Be2d >> T >> DYAPOqZZ8Zlsd2%2FyPJ0qib5%2FM%3D&reserved=3D0 >> >> Thanks, >> >> Eugene >> >> -----Original Message----- >> From: Gcc-patches >> On Behalf Of=20 >> Eugene Rozenfeld via Gcc-patches >> Sent: Thursday, June 02, 2022 12:22 AM >> To: gcc-patches@gcc.gnu.org; Andi Kleen ; Jan=20 >> Hubicka >> Subject: [EXTERNAL] [PATCH] Add instruction level discriminator support. >> >> This is the first in a series of patches to enable discriminator support= in AutoFDO. >> >> This patch switches to tracking discriminators per statement/instruction= instead of per basic block. Tracking per basic block was problematic since= not all statements in a basic block needed a discriminator and, also, late= r optimizations could move statements between basic blocks making correlati= on during AutoFDO compilation unreliable. Tracking per statement also allow= s us to assign different discriminators to multiple function calls in the s= ame basic block. A subsequent patch will add that support. >> >> The idea of this patch is based on commit=20 >> 4c311d95cf6d9519c3c20f641cc77af7df491fdf >> by Dehao Chen in vendors/google/heads/gcc-4_8 but uses a slightly differ= ent approach. In Dehao's work special (normally unused) location ids and si= de tables were used to keep track of locations with discriminators. Things = have changed since then and I don't think we have unused location ids anymo= re. Instead, I made discriminators a part of ad-hoc locations. >> >> The difference from Dehao's work also includes support for discriminator= reading/writing in lto streaming and in modules. >> >> Tested on x86_64-pc-linux-gnu. >=20 >> @@ -1190,12 +1217,12 @@ assign_discriminators (void) >> || (last && same_line_p (locus, &locus_e, >> gimple_location (last)))) >> { >> - if (e->dest->discriminator !=3D 0 && bb->discriminator =3D=3D 0) >> - bb->discriminator >> - =3D next_discriminator_for_locus (locus_e.line); >> + if (((first && has_discriminator (gimple_location (first))) >> + || (last && has_discriminator (gimple_location (last)))) >=20 > I think you want to check has_discriminator only for the one of first or = last that we find to have the same line as locus above? >=20 > Incidentally, I wonder why we ignore column number here, but that's not a= n issue for this patch. >=20 > Jason This seems like excessive redundancy, especially with the slightly differen= t names with slightly different semantics: > +++ b/gcc/input.h > +#define LOCATION_DISCRIMINATOR(LOC) \ > + ((IS_ADHOC_LOC (LOC)) ? get_discriminator_from_adhoc_loc (line_table, = (LOC)) \ > + : 0) > +extern int get_discriminator_from_locus (location_t); > +++ b/libcpp/include/line-map.h > +extern unsigned get_discriminator_from_loc (line_maps *set,=20 > +location_t loc); Maybe gcc/input.h could overload get_discriminator_from_loc to take a singl= e argument and forward to the libcpp version with 'line_table', and then re= move both the _locus version and the macro? Jason --_002_CY5PR21MB35429A8B20254344DFE44C2791439CY5PR21MB3542namp_ Content-Type: application/octet-stream; name="0001-Add-instruction-level-discriminator-support.patch" Content-Description: 0001-Add-instruction-level-discriminator-support.patch Content-Disposition: attachment; filename="0001-Add-instruction-level-discriminator-support.patch"; size=31876; creation-date="Fri, 09 Sep 2022 00:40:43 GMT"; modification-date="Fri, 09 Sep 2022 00:45:48 GMT" Content-Transfer-Encoding: base64 RnJvbSBiNjlkZjFiMDk5NGY3OWE5MzNmNDgwMzIyNDFiNTZhMDk0ZjU2MGZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFdWdlbmUgUm96ZW5mZWxkIDxlcm96ZW5AbWljcm9zb2Z0LmNv bT4KRGF0ZTogVGh1LCAyMSBBcHIgMjAyMiAxNTo0MjoxNSAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd IEFkZCBpbnN0cnVjdGlvbiBsZXZlbCBkaXNjcmltaW5hdG9yIHN1cHBvcnQuCgpUaGlzIGlzIHRo ZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBwYXRjaGVzIHRvIGVuYWJsZSBkaXNjcmltaW5hdG9yIHN1 cHBvcnQKaW4gQXV0b0ZETy4KClRoaXMgcGF0Y2ggc3dpdGNoZXMgdG8gdHJhY2tpbmcgZGlzY3Jp bWluYXRvcnMgcGVyIHN0YXRlbWVudC9pbnN0cnVjdGlvbgppbnN0ZWFkIG9mIHBlciBiYXNpYyBi bG9jay4gVHJhY2tpbmcgcGVyIGJhc2ljIGJsb2NrIHdhcyBwcm9ibGVtYXRpYyBzaW5jZQpub3Qg YWxsIHN0YXRlbWVudHMgaW4gYSBiYXNpYyBibG9jayBuZWVkZWQgYSBkaXNjcmltaW5hdG9yIGFu ZCwgYWxzbywgbGF0ZXIKb3B0aW1pemF0aW9ucyBjb3VsZCBtb3ZlIHN0YXRlbWVudHMgYmV0d2Vl biBiYXNpYyBibG9ja3MgbWFraW5nIGNvcnJlbGF0aW9uCmR1cmluZyBBdXRvRkRPIGNvbXBpbGF0 aW9uIHVucmVsaWFibGUuIFRyYWNraW5nIHBlciBzdGF0ZW1lbnQgYWxzbyBhbGxvd3MKdXMgdG8g YXNzaWduIGRpZmZlcmVudCBkaXNjcmltaW5hdG9ycyB0byBtdWx0aXBsZSBmdW5jdGlvbiBjYWxs cyBpbiB0aGUgc2FtZQpiYXNpYyBibG9jay4gQSBzdWJzZXF1ZW50IHBhdGNoIHdpbGwgYWRkIHRo YXQgc3VwcG9ydC4KClRoZSBpZGVhIG9mIHRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gY29tbWl0IDRj MzExZDk1Y2Y2ZDk1MTljM2MyMGY2NDFjYzc3YWY3ZGY0OTFmZGYKYnkgRGVoYW8gQ2hlbiBpbiB2 ZW5kb3JzL2dvb2dsZS9oZWFkcy9nY2MtNF84IGJ1dCB1c2VzIGEgc2xpZ2h0bHkgZGlmZmVyZW50 CmFwcHJvYWNoLiBJbiBEZWhhbydzIHdvcmsgc3BlY2lhbCAobm9ybWFsbHkgdW51c2VkKSBsb2Nh dGlvbiBpZHMgYW5kIHNpZGUgdGFibGVzCndlcmUgdXNlZCB0byBrZWVwIHRyYWNrIG9mIGxvY2F0 aW9ucyB3aXRoIGRpc2NyaW1pbmF0b3JzLiBUaGluZ3MgaGF2ZSBjaGFuZ2VkCnNpbmNlIHRoZW4g YW5kIEkgZG9uJ3QgdGhpbmsgd2UgaGF2ZSB1bnVzZWQgbG9jYXRpb24gaWRzIGFueW1vcmUuIElu c3RlYWQsCkkgbWFkZSBkaXNjcmltaW5hdG9ycyBhIHBhcnQgb2YgYWQtaG9jIGxvY2F0aW9ucy4K ClRoZSBkaWZmZXJlbmNlIGZyb20gRGVoYW8ncyB3b3JrIGFsc28gaW5jbHVkZXMgc3VwcG9ydCBm b3IgZGlzY3JpbWluYXRvcgpyZWFkaW5nL3dyaXRpbmcgaW4gbHRvIHN0cmVhbWluZyBhbmQgaW4g bW9kdWxlcy4KClRlc3RlZCBvbiB4ODZfNjQtcGMtbGludXgtZ251LgoKZ2NjL0NoYW5nZUxvZzoK CgkqIGJhc2ljLWJsb2NrLmg6IFJlbW92ZSBkaXNjcmltaW5hdG9yIGZyb20gYmFzaWMgYmxvY2tz LgoJKiBjZmdob29rcy5jYyAoc3BsaXRfYmxvY2tfMSk6IFJlbW92ZSBkaXNjcmltaW5hdG9yIGZy b20gYmFzaWMgYmxvY2tzLgoJKiBjcC9tb2R1bGUuY2MgKHdyaXRlX2xvY2F0aW9uKTogV3JpdGUg ZGlzY3JpbWluYXRvci4KCShyZWFkX2xvY2F0aW9uKTogUmVhZCBkaXNjcmltaW5hdG9yLgoJKiBm aW5hbC5jYyAoZmluYWxfc3RhcnRfZnVuY3Rpb25fMSk6IFN3aXRjaCBmcm9tIHBlci1iYiB0byBw ZXIgc3RhdGVtZW50CglkaXNjcmltaW5hdG9yLgoJKGZpbmFsX3NjYW5faW5zbl8xKTogRG9uJ3Qg a2VlcCB0cmFjayBvZiBiYXNpYyBibG9jayBkaXNjcmltaW5hdG9ycy4KCShjb21wdXRlX2Rpc2Ny aW1pbmF0b3IpOiBTd2l0Y2ggZnJvbSBiYXNpYyBibG9jayBkaXNjcmltaW5hdG9ycyB0bwoJaW5z dHJ1Y3Rpb24gZGlzY3JpbWluYXRvcnMuCgkoaW5zbl9kaXNjcmltaW5hdG9yKTogTmV3IGZ1bmN0 aW9uIHRvIHJldHVybiBpbnN0cnVjdGlvbiBkaXNjcmltaW5hdG9yLgoJKG5vdGljZV9zb3VyY2Vf bGluZSk6IFVzZSBpbnNuX2Rpc2NyaW1pbmF0b3IuCgkqIGdpbXBsZS1wcmV0dHktcHJpbnQuY2Mg KGR1bXBfZ2ltcGxlX2JiX2hlYWRlcik6IFJlbW92ZSBkdW1waW5nIG9mCgliYXNpYyBibG9jayBk aXNjcmltaW5hdG9ycy4KCSogZ2ltcGxlLXN0cmVhbWVyLWluLmNjIChpbnB1dF9iYik6IFJlbW92 ZSByZWFkaW5nIG9mIGJhc2ljIGJsb2NrCglkaXNjcmltaW5hdG9ycy4KCSogZ2ltcGxlLXN0cmVh bWVyLW91dC5jYyAob3V0cHV0X2JiKTogUmVtb3ZlIHdyaXRpbmcgb2YgYmFzaWMgYmxvY2sKCWRp c2NyaW1pbmF0b3JzLgoJKiBpbnB1dC5jYyAobWFrZV9sb2NhdGlvbik6IFBhc3MgMCBkaXNjcmlt aW5hdG9yIHRvIENPTUJJTkVfTE9DQVRJT05fREFUQS4KCShsb2NhdGlvbl93aXRoX2Rpc2NyaW1p bmF0b3IpOiBOZXcgZnVuY3Rpb24gdG8gY29tYmluZSBsb2N1cyB3aXRoCglhIGRpc2NyaW1pbmF0 b3IuCgkoaGFzX2Rpc2NyaW1pbmF0b3IpOiBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYSBsb2Nh dGlvbiBoYXMgYSBkaXNjcmltaW5hdG9yLgoJKGdldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jKTog TmV3IGZ1bmN0aW9uIHRvIGdldCB0aGUgZGlzY3JpbWluYXRvcgoJZnJvbSBhIGxvY2F0aW9uLgoJ KiBpbnB1dC5oOiBEZWNsYXJhdGlvbnMgb2YgbmV3IGZ1bmN0aW9ucy4KCSogbHRvLXN0cmVhbWVy LWluLmNjIChjbXBfbG9jKTogVXNlIGRpc2NyaW1pbmF0b3JzIGluIGxvY2F0aW9uIGNvbXBhcmlz b24uCgkoYXBwbHlfbG9jYXRpb25fY2FjaGUpOiBLZWVwIHRyYWNrIG9mIGN1cnJlbnQgZGlzY3Jp bWluYXRvci4KCShpbnB1dF9sb2NhdGlvbl9hbmRfYmxvY2spOiBSZWFkIGRpc2NyaW1pbmF0b3Ig ZnJvbSBzdHJlYW0uCgkqIGx0by1zdHJlYW1lci1vdXQuY2MgKGNsZWFyX2xpbmVfaW5mbyk6IFNl dCBjdXJyZW50IGRpc2NyaW1pbmF0b3IgdG8KCVVJTlRfTUFYLgoJKGx0b19vdXRwdXRfbG9jYXRp b25fMSk6IFdyaXRlIGRpc2NyaW1pbmF0b3IgdG8gc3RyZWFtLgoJKiBsdG8tc3RyZWFtZXIuaDog QWRkIGRpc2NyaW1pbmF0b3IgdG8gY2FjaGVkX2xvY2F0aW9uLgoJQWRkIGN1cnJlbnRfZGlzY3Ig dG8gbHRvX2xvY2F0aW9uX2NhY2hlLgoJQWRkIGN1cnJlbnRfZGlzY3IgdG8gb3V0cHV0X2Jsb2Nr LgoJKiBwcmludC1ydGwuY2MgKHByaW50X3J0eF9vcGVyYW5kX2NvZGVfaSk6IFByaW50IGRpc2Ny aW1pbmF0b3IuCgkqIHJ0bC5oOiBBZGQgZXh0ZXJuIGRlY2xhcmF0aW9uIG9mIGluc25fZGlzY3Jp bWluYXRvci4KCSogdHJlZS1jZmcuY2MgKGFzc2lnbl9kaXNjcmltaW5hdG9yKTogTmV3IGZ1bmN0 aW9uIHRvIGFzc2lnbiBhIHVuaXF1ZQoJZGlzY3JpbWluYXRvciB2YWx1ZSB0byBhbGwgc3RhdGVt ZW50cyBpbiBhIGJhc2ljIGJsb2NrIHRoYXQgaGF2ZSB0aGUgZ2l2ZW4KCWxpbmUgbnVtYmVyLgoJ KGFzc2lnbl9kaXNjcmltaW5hdG9ycyk6IEFzc2lnbiBkaXNjcmltaW5hdG9ycyB0byBzdGF0ZW1l bnQgbG9jYXRpb25zLgoJKiB0cmVlLXByZXR0eS1wcmludC5jYyAoZHVtcF9sb2NhdGlvbik6IER1 bXAgZGlzY3JpbWluYXRvcnMuCgkqIHRyZWUuY2MgKHNldF9ibG9jayk6IFByZXNlcnZlIGRpc2Ny aW1pbmF0b3Igd2hlbiBzZXR0aW5nIGJsb2NrLgoJKHNldF9zb3VyY2VfcmFuZ2UpOiBQcmVzZXJ2 ZSBkaXNjcmltaW5hdG9yIHdoZW4gc2V0dGluZyBzb3VyY2UgcmFuZ2UuCgpsaWJjcHAvQ2hhbmdl TG9nOgoKCSogaW5jbHVkZS9saW5lLW1hcC5oOiBBZGQgZGlzY3JpbWluYXRvciB0byBsb2NhdGlv bl9hZGhvY19kYXRhLgoJKGdldF9jb21iaW5lZF9hZGhvY19sb2MpOiBBZGQgZGlzY3JpbWluYXRv ciBwYXJhbWV0ZXIuCgkoZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9hZGhvY19sb2MpOiBBZGQgZXh0 ZXJuYWwgZGVjbGFyYXRpb24uCgkoZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2MpOiBBZGQgZXh0 ZXJuYWwgZGVjbGFyYXRpb24uCgkoQ09NQklORV9MT0NBVElPTl9EQVRBKTogQWRkIGRpc2NyaW1p bmF0b3IgcGFyYW1ldGVyLgoJKiBsZXguY2MgKGdldF9sb2NhdGlvbl9mb3JfYnl0ZV9yYW5nZV9p bl9jdXJfbGluZSkgUGFzcyAwIGRpc2NyaW1pbmF0b3IKCWluIGEgY2FsbCB0byBDT01CSU5FX0xP Q0FUSU9OX0RBVEEuCgkod2Fybl9hYm91dF9ub3JtYWxpemF0aW9uKTogUGFzcyAwIGRpc2NyaW1p bmF0b3IgaW4gYSBjYWxsIHRvCglDT01CSU5FX0xPQ0FUSU9OX0RBVEEuCgkoX2NwcF9sZXhfZGly ZWN0KTogUGFzcyAwIGRpc2NyaW1pbmF0b3IgaW4gYSBjYWxsIHRvCglDT01CSU5FX0xPQ0FUSU9O X0RBVEEuCgkqIGxpbmUtbWFwLmNjIChsb2NhdGlvbl9hZGhvY19kYXRhX2hhc2gpOiBVc2UgZGlz Y3JpbWluYXRvciBjb21wdXRlCglsb2NhdGlvbl9hZGhvY19kYXRhIGhhc2guCgkobG9jYXRpb25f YWRob2NfZGF0YV9lcSk6IFVzZSBkaXNjcmltaW5hdG9yIHdoZW4gY29tcGFyaW5nCglsb2NhdGlv bl9hZGhvY19kYXRhLgoJKGNhbl9iZV9zdG9yZWRfY29tcGFjdGx5X3ApOiBDaGVjayBkaXNjcmlt aW5hdG9yIHRvIGRldGVybWluZQoJY29tcGFjdCBzdG9yYWdlLgoJKGdldF9jb21iaW5lZF9hZGhv Y19sb2MpOiBBZGQgZGlzY3JpbWluYXRvciBwYXJhbWV0ZXIuCgkoZ2V0X2Rpc2NyaW1pbmF0b3Jf ZnJvbV9hZGhvY19sb2MpOiBOZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBkaXNjcmltaW5hdG9yCglm cm9tIGFuIGFkLWhvYyBsb2NhdGlvbi4KCShnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xvYyk6IE5l dyBmdW5jdGlvbiB0byBnZXQgdGhlIGRpc2NyaW1pbmF0b3IKCWZyb20gYSBsb2NhdGlvbi4KCmdj Yy90ZXN0c3VpdGUvQ2hhbmdlTG9nOgoKCSogYy1jKystY29tbW9uL3Vic2FuL3ByODUyMTMuYzog UGFzcyAtZ25vLXN0YXRlbWVudC1mcm9udGllcnMuCi0tLQogZ2NjL2Jhc2ljLWJsb2NrLmggICAg ICAgICAgICAgICAgICAgICAgICAgIHwgIDUgLS0tCiBnY2MvY2ZnaG9va3MuY2MgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMSAtCiBnY2MvY3AvbW9kdWxlLmNjICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNSArKy0KIGdjYy9maW5hbC5jYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDI2ICsrKysrKy0tLS0tCiBnY2MvZ2ltcGxlLXByZXR0eS1wcmludC5jYyAgICAg ICAgICAgICAgICAgfCAgMiAtCiBnY2MvZ2ltcGxlLXN0cmVhbWVyLWluLmNjICAgICAgICAgICAg ICAgICAgfCAgMSAtCiBnY2MvZ2ltcGxlLXN0cmVhbWVyLW91dC5jYyAgICAgICAgICAgICAgICAg fCAgMSAtCiBnY2MvaW5wdXQuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNiAr KysrKysrKysrKysrKystCiBnY2MvaW5wdXQuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNCArKwogZ2NjL2x0by1zdHJlYW1lci1pbi5jYyAgICAgICAgICAgICAgICAgICAgIHwg MjEgKysrKysrKystCiBnY2MvbHRvLXN0cmVhbWVyLW91dC5jYyAgICAgICAgICAgICAgICAgICAg fCAgNyArKysKIGdjYy9sdG8tc3RyZWFtZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAz ICsrCiBnY2MvcHJpbnQtcnRsLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKwog Z2NjL3J0bC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogZ2NjL3Rl c3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vcHI4NTIxMy5jIHwgIDcgKystCiBnY2MvdHJlZS1j ZmcuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1MCArKysrKysrKysrKysrKysrKyst LS0tCiBnY2MvdHJlZS1wcmV0dHktcHJpbnQuY2MgICAgICAgICAgICAgICAgICAgfCAgNiArKysK IGdjYy90cmVlLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKy0tCiBs aWJjcHAvaW5jbHVkZS9saW5lLW1hcC5oICAgICAgICAgICAgICAgICAgfCAxMCArKystLQogbGli Y3BwL2xleC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKy0tCiBsaWJjcHAv bGluZS1tYXAuY2MgICAgICAgICAgICAgICAgICAgICAgICAgfCAzOCArKysrKysrKysrKysrLS0t CiAyMSBmaWxlcyBjaGFuZ2VkLCAxOTAgaW5zZXJ0aW9ucygrKSwgNTUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZ2NjL2Jhc2ljLWJsb2NrLmggYi9nY2MvYmFzaWMtYmxvY2suaAppbmRleCBj OWQxZmM5MWJiYi4uMWVhZTAzZDFhY2EgMTAwNjQ0Ci0tLSBhL2djYy9iYXNpYy1ibG9jay5oCisr KyBiL2djYy9iYXNpYy1ibG9jay5oCkBAIC0xNDgsMTEgKzE0OCw2IEBAIHN0cnVjdCBHVFkoKGNo YWluX25leHQgKCIlaC5uZXh0X2JiIiksIGNoYWluX3ByZXYgKCIlaC5wcmV2X2JiIikpKSBiYXNp Y19ibG9ja19kCiAKICAgLyogRXhwZWN0ZWQgbnVtYmVyIG9mIGV4ZWN1dGlvbnM6IGNhbGN1bGF0 ZWQgaW4gcHJvZmlsZS5jYy4gICovCiAgIHByb2ZpbGVfY291bnQgY291bnQ7Ci0KLSAgLyogVGhl IGRpc2NyaW1pbmF0b3IgZm9yIHRoaXMgYmxvY2suICBUaGUgZGlzY3JpbWluYXRvciBkaXN0aW5n dWlzaGVzCi0gICAgIGFtb25nIHNldmVyYWwgYmFzaWMgYmxvY2tzIHRoYXQgc2hhcmUgYSBjb21t b24gbG9jdXMsIGFsbG93aW5nIGZvcgotICAgICBtb3JlIGFjY3VyYXRlIHNhbXBsZS1iYXNlZCBw cm9maWxpbmcuICAqLwotICBpbnQgZGlzY3JpbWluYXRvcjsKIH07CiAKIC8qIFRoaXMgZW5zdXJl cyB0aGF0IHN0cnVjdCBnaW1wbGVfYmJfaW5mbyBpcyBzbWFsbGVyIHRoYW4KZGlmZiAtLWdpdCBh L2djYy9jZmdob29rcy5jYyBiL2djYy9jZmdob29rcy5jYwppbmRleCBjNmFjOTUzMmNiOC4uMjlk ZWQ1NzA3MzQgMTAwNjQ0Ci0tLSBhL2djYy9jZmdob29rcy5jYworKysgYi9nY2MvY2ZnaG9va3Mu Y2MKQEAgLTU0MSw3ICs1NDEsNiBAQCBzcGxpdF9ibG9ja18xIChiYXNpY19ibG9jayBiYiwgdm9p ZCAqaSkKICAgICByZXR1cm4gTlVMTDsKIAogICBuZXdfYmItPmNvdW50ID0gYmItPmNvdW50Owot ICBuZXdfYmItPmRpc2NyaW1pbmF0b3IgPSBiYi0+ZGlzY3JpbWluYXRvcjsKIAogICBpZiAoZG9t X2luZm9fYXZhaWxhYmxlX3AgKENESV9ET01JTkFUT1JTKSkKICAgICB7CmRpZmYgLS1naXQgYS9n Y2MvY3AvbW9kdWxlLmNjIGIvZ2NjL2NwL21vZHVsZS5jYwppbmRleCBmMjdmNGQwOTFlNS4uNzI2 NGJjZWM0MGIgMTAwNjQ0Ci0tLSBhL2djYy9jcC9tb2R1bGUuY2MKKysrIGIvZ2NjL2NwL21vZHVs ZS5jYwpAQCAtMTU3NjQsNiArMTU3NjQsOCBAQCBtb2R1bGVfc3RhdGU6OndyaXRlX2xvY2F0aW9u IChieXRlc19vdXQgJnNlYywgbG9jYXRpb25fdCBsb2MpCiAJcmFuZ2UubV9zdGFydCA9IFVOS05P V05fTE9DQVRJT047CiAgICAgICB3cml0ZV9sb2NhdGlvbiAoc2VjLCByYW5nZS5tX3N0YXJ0KTsK ICAgICAgIHdyaXRlX2xvY2F0aW9uIChzZWMsIHJhbmdlLm1fZmluaXNoKTsKKyAgICAgIHVuc2ln bmVkIGRpc2NyaW1pbmF0b3IgPSBnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xvYyAobGlu ZV90YWJsZSwgbG9jKTsKKyAgICAgIHNlYy51IChkaXNjcmltaW5hdG9yKTsKICAgICB9CiAgIGVs c2UgaWYgKGxvYyA+PSBMSU5FTUFQU19NQUNST19MT1dFU1RfTE9DQVRJT04gKGxpbmVfdGFibGUp KQogICAgIHsKQEAgLTE1ODg5LDggKzE1ODkxLDkgQEAgbW9kdWxlX3N0YXRlOjpyZWFkX2xvY2F0 aW9uIChieXRlc19pbiAmc2VjKSBjb25zdAogCWlmIChyYW5nZS5tX3N0YXJ0ID09IFVOS05PV05f TE9DQVRJT04pCiAJICByYW5nZS5tX3N0YXJ0ID0gbG9jdXM7CiAJcmFuZ2UubV9maW5pc2ggPSBy ZWFkX2xvY2F0aW9uIChzZWMpOworCXVuc2lnbmVkIGRpc2NyaW1pbmF0b3IgPSBzZWMudSAoKTsK IAlpZiAobG9jdXMgIT0gbG9jICYmIHJhbmdlLm1fc3RhcnQgIT0gbG9jICYmIHJhbmdlLm1fZmlu aXNoICE9IGxvYykKLQkgIGxvY3VzID0gZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAobGluZV90YWJs ZSwgbG9jdXMsIHJhbmdlLCBOVUxMKTsKKwkgIGxvY3VzID0gZ2V0X2NvbWJpbmVkX2FkaG9jX2xv YyAobGluZV90YWJsZSwgbG9jdXMsIHJhbmdlLCBOVUxMLCBkaXNjcmltaW5hdG9yKTsKICAgICAg IH0KICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9nY2MvZmluYWwuY2MgYi9nY2MvZmluYWwu Y2MKaW5kZXggMDM1Mjc4NmU0OWIuLjU1NGRlY2U1M2JhIDEwMDY0NAotLS0gYS9nY2MvZmluYWwu Y2MKKysrIGIvZ2NjL2ZpbmFsLmNjCkBAIC0xMjYsMTggKzEyNiwxMCBAQCBzdGF0aWMgaW50IGxh c3RfY29sdW1ubnVtOwogLyogRGlzY3JpbWluYXRvciB3cml0dGVuIHRvIGFzc2VtYmx5LiAgKi8K IHN0YXRpYyBpbnQgbGFzdF9kaXNjcmltaW5hdG9yOwogCi0vKiBEaXNjcmltaW5hdG9yIHRvIGJl IHdyaXR0ZW4gdG8gYXNzZW1ibHkgZm9yIGN1cnJlbnQgaW5zdHJ1Y3Rpb24uCisvKiBDb21wdXRl IGRpc2NyaW1pbmF0b3IgdG8gYmUgd3JpdHRlbiB0byBhc3NlbWJseSBmb3IgY3VycmVudCBpbnN0 cnVjdGlvbi4KICAgIE5vdGU6IGFjdHVhbCB1c2FnZSBkZXBlbmRzIG9uIGxvY19kaXNjcmltaW5h dG9yX2tpbmQgc2V0dGluZy4gICovCi1zdGF0aWMgaW50IGRpc2NyaW1pbmF0b3I7CiBzdGF0aWMg aW5saW5lIGludCBjb21wdXRlX2Rpc2NyaW1pbmF0b3IgKGxvY2F0aW9uX3QgbG9jKTsKIAotLyog RGlzY3JpbWluYXRvciBpZGVudGlmeWluZyBjdXJyZW50IGJhc2ljIGJsb2NrIGFtb25nIG90aGVy cyBzaGFyaW5nCi0gICB0aGUgc2FtZSBsb2N1cy4gICovCi1zdGF0aWMgaW50IGJiX2Rpc2NyaW1p bmF0b3I7Ci0KLS8qIEJhc2ljIGJsb2NrIGRpc2NyaW1pbmF0b3IgZm9yIHByZXZpb3VzIGluc3Ry dWN0aW9uLiAgKi8KLXN0YXRpYyBpbnQgbGFzdF9iYl9kaXNjcmltaW5hdG9yOwotCiAvKiBIaWdo ZXN0IGxpbmUgbnVtYmVyIGluIGN1cnJlbnQgYmxvY2suICAqLwogc3RhdGljIGludCBoaWdoX2Js b2NrX2xpbmVudW07CiAKQEAgLTE2OTYsOCArMTY4OCw3IEBAIGZpbmFsX3N0YXJ0X2Z1bmN0aW9u XzEgKHJ0eF9pbnNuICoqZmlyc3RwLCBGSUxFICpmaWxlLCBpbnQgKnNlZW4sCiAgIGxhc3RfZmls ZW5hbWUgPSBMT0NBVElPTl9GSUxFIChwcm9sb2d1ZV9sb2NhdGlvbik7CiAgIGxhc3RfbGluZW51 bSA9IExPQ0FUSU9OX0xJTkUgKHByb2xvZ3VlX2xvY2F0aW9uKTsKICAgbGFzdF9jb2x1bW5udW0g PSBMT0NBVElPTl9DT0xVTU4gKHByb2xvZ3VlX2xvY2F0aW9uKTsKLSAgbGFzdF9kaXNjcmltaW5h dG9yID0gZGlzY3JpbWluYXRvciA9IDA7Ci0gIGxhc3RfYmJfZGlzY3JpbWluYXRvciA9IGJiX2Rp c2NyaW1pbmF0b3IgPSAwOworICBsYXN0X2Rpc2NyaW1pbmF0b3IgPSAwOwogICBmb3JjZV9zb3Vy Y2VfbGluZSA9IGZhbHNlOwogCiAgIGhpZ2hfYmxvY2tfbGluZW51bSA9IGhpZ2hfZnVuY3Rpb25f bGluZW51bSA9IGxhc3RfbGluZW51bTsKQEAgLTIyNDIsNyArMjIzMyw2IEBAIGZpbmFsX3NjYW5f aW5zbl8xIChydHhfaW5zbiAqaW5zbiwgRklMRSAqZmlsZSwgaW50IG9wdGltaXplX3AgQVRUUklC VVRFX1VOVVNFRCwKIAkgIGlmICh0YXJnZXRtLmFzbV9vdXQudW53aW5kX2VtaXQpCiAJICAgIHRh cmdldG0uYXNtX291dC51bndpbmRfZW1pdCAoYXNtX291dF9maWxlLCBpbnNuKTsKIAotCSAgYmJf ZGlzY3JpbWluYXRvciA9IE5PVEVfQkFTSUNfQkxPQ0sgKGluc24pLT5kaXNjcmltaW5hdG9yOwog CSAgYnJlYWs7CiAKIAljYXNlIE5PVEVfSU5TTl9FSF9SRUdJT05fQkVHOgpAQCAtMjk4MSw3ICsy OTcxLDcgQEAgY29tcHV0ZV9kaXNjcmltaW5hdG9yIChsb2NhdGlvbl90IGxvYykKICAgaW50IGRp c2NyaW1pbmF0b3I7CiAKICAgaWYgKCFkZWNsX3RvX2luc3RhbmNlX21hcCkKLSAgICBkaXNjcmlt aW5hdG9yID0gYmJfZGlzY3JpbWluYXRvcjsKKyAgICBkaXNjcmltaW5hdG9yID0gZ2V0X2Rpc2Ny aW1pbmF0b3JfZnJvbV9sb2MgKGxvYyk7CiAgIGVsc2UKICAgICB7CiAgICAgICB0cmVlIGJsb2Nr ID0gTE9DQVRJT05fQkxPQ0sgKGxvYyk7CkBAIC0zMDA1LDYgKzI5OTUsMTMgQEAgY29tcHV0ZV9k aXNjcmltaW5hdG9yIChsb2NhdGlvbl90IGxvYykKICAgcmV0dXJuIGRpc2NyaW1pbmF0b3I7CiB9 CiAKKy8qIFJldHVybiBkaXNjcmltaW5hdG9yIG9mIHRoZSBzdGF0ZW1lbnQgdGhhdCBwcm9kdWNl ZCB0aGlzIGluc24uICAqLworaW50CitpbnNuX2Rpc2NyaW1pbmF0b3IgKGNvbnN0IHJ0eF9pbnNu ICppbnNuKQoreworICByZXR1cm4gY29tcHV0ZV9kaXNjcmltaW5hdG9yIChJTlNOX0xPQ0FUSU9O IChpbnNuKSk7Cit9CisKIC8qIFJldHVybiB3aGV0aGVyIGEgc291cmNlIGxpbmUgbm90ZSBuZWVk cyB0byBiZSBlbWl0dGVkIGJlZm9yZSBJTlNOLgogICAgU2V0cyBJU19TVE1UIHRvIFRSVUUgaWYg dGhlIGxpbmUgc2hvdWxkIGJlIG1hcmtlZCBhcyBhIHBvc3NpYmxlCiAgICBicmVha3BvaW50IGxv Y2F0aW9uLiAgKi8KQEAgLTMwMTQsNiArMzAxMSw3IEBAIG5vdGljZV9zb3VyY2VfbGluZSAocnR4 X2luc24gKmluc24sIGJvb2wgKmlzX3N0bXQpCiB7CiAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwog ICBpbnQgbGluZW51bSwgY29sdW1ubnVtOworICBpbnQgZGlzY3JpbWluYXRvcjsKIAogICBpZiAo Tk9URV9NQVJLRVJfUCAoaW5zbikpCiAgICAgewpAQCAtMzA0Myw3ICszMDQxLDcgQEAgbm90aWNl X3NvdXJjZV9saW5lIChydHhfaW5zbiAqaW5zbiwgYm9vbCAqaXNfc3RtdCkKICAgICAgIGZpbGVu YW1lID0geGxvYy5maWxlOwogICAgICAgbGluZW51bSA9IHhsb2MubGluZTsKICAgICAgIGNvbHVt bm51bSA9IHhsb2MuY29sdW1uOwotICAgICAgZGlzY3JpbWluYXRvciA9IGNvbXB1dGVfZGlzY3Jp bWluYXRvciAoSU5TTl9MT0NBVElPTiAoaW5zbikpOworICAgICAgZGlzY3JpbWluYXRvciA9IGlu c25fZGlzY3JpbWluYXRvciAoaW5zbik7CiAgICAgfQogICBlbHNlCiAgICAgewpkaWZmIC0tZ2l0 IGEvZ2NjL2dpbXBsZS1wcmV0dHktcHJpbnQuY2MgYi9nY2MvZ2ltcGxlLXByZXR0eS1wcmludC5j YwppbmRleCBmMThiYWVjNDM4YS4uYTg3ZTJhZTY4YjMgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUt cHJldHR5LXByaW50LmNjCisrKyBiL2djYy9naW1wbGUtcHJldHR5LXByaW50LmNjCkBAIC0yODc1 LDggKzI4NzUsNiBAQCBkdW1wX2dpbXBsZV9iYl9oZWFkZXIgKEZJTEUgKm91dGYsIGJhc2ljX2Js b2NrIGJiLCBpbnQgaW5kZW50LAogCQkJIGluZGVudCwgIiIsIGdldF9saW5lbm8gKGdzaV9zdG10 IChnc2kpKSk7CiAJCWJyZWFrOwogCSAgICAgIH0KLQkgIGlmIChiYi0+ZGlzY3JpbWluYXRvcikK LQkgICAgZnByaW50ZiAob3V0ZiwgIiwgZGlzY3JpbWluYXRvciAlaSIsIGJiLT5kaXNjcmltaW5h dG9yKTsKIAkgIGZwdXRjICgnXG4nLCBvdXRmKTsKIAl9CiAgICAgfQpkaWZmIC0tZ2l0IGEvZ2Nj L2dpbXBsZS1zdHJlYW1lci1pbi5jYyBiL2djYy9naW1wbGUtc3RyZWFtZXItaW4uY2MKaW5kZXgg ZTdmMzI1NjMwMmYuLmVhODg5MWU4ZTkyIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXN0cmVhbWVy LWluLmNjCisrKyBiL2djYy9naW1wbGUtc3RyZWFtZXItaW4uY2MKQEAgLTI2Nyw3ICsyNjcsNiBA QCBpbnB1dF9iYiAoY2xhc3MgbHRvX2lucHV0X2Jsb2NrICppYiwgZW51bSBMVE9fdGFncyB0YWcs CiAgICAgYmItPmNvdW50CiAgICAgICA9IGJiLT5jb3VudC5hcHBseV9zY2FsZSAoY291bnRfbWF0 ZXJpYWxpemF0aW9uX3NjYWxlLCBSRUdfQlJfUFJPQl9CQVNFKTsKICAgYmItPmZsYWdzID0gc3Ry ZWFtZXJfcmVhZF9od2kgKGliKTsKLSAgYmItPmRpc2NyaW1pbmF0b3IgPSBzdHJlYW1lcl9yZWFk X2h3aSAoaWIpOwogCiAgIC8qIExUT19iYjEgaGFzIHN0YXRlbWVudHMuICBMVE9fYmIwIGRvZXMg bm90LiAgKi8KICAgaWYgKHRhZyA9PSBMVE9fYmIwKQpkaWZmIC0tZ2l0IGEvZ2NjL2dpbXBsZS1z dHJlYW1lci1vdXQuY2MgYi9nY2MvZ2ltcGxlLXN0cmVhbWVyLW91dC5jYwppbmRleCAzMzM2NTI1 MTI5NS4uNDU4MzI1NDdiZjUgMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUtc3RyZWFtZXItb3V0LmNj CisrKyBiL2djYy9naW1wbGUtc3RyZWFtZXItb3V0LmNjCkBAIC0yMDgsNyArMjA4LDYgQEAgb3V0 cHV0X2JiIChzdHJ1Y3Qgb3V0cHV0X2Jsb2NrICpvYiwgYmFzaWNfYmxvY2sgYmIsIHN0cnVjdCBm dW5jdGlvbiAqZm4pCiAgIHN0cmVhbWVyX3dyaXRlX3Vod2kgKG9iLCBiYi0+aW5kZXgpOwogICBi Yi0+Y291bnQuc3RyZWFtX291dCAob2IpOwogICBzdHJlYW1lcl93cml0ZV9od2kgKG9iLCBiYi0+ ZmxhZ3MpOwotICBzdHJlYW1lcl93cml0ZV9od2kgKG9iLCBiYi0+ZGlzY3JpbWluYXRvcik7CiAK ICAgaWYgKCFnc2lfZW5kX3AgKGJzaSkgfHwgcGhpX25vZGVzIChiYikpCiAgICAgewpkaWZmIC0t Z2l0IGEvZ2NjL2lucHV0LmNjIGIvZ2NjL2lucHV0LmNjCmluZGV4IDA2MGNhMTYwMTI2Li5hMjhh YmZhYzVhYyAxMDA2NDQKLS0tIGEvZ2NjL2lucHV0LmNjCisrKyBiL2djYy9pbnB1dC5jYwpAQCAt MTA4Miw3ICsxMDgyLDggQEAgbWFrZV9sb2NhdGlvbiAobG9jYXRpb25fdCBjYXJldCwgbG9jYXRp b25fdCBzdGFydCwgbG9jYXRpb25fdCBmaW5pc2gpCiAgIGxvY2F0aW9uX3QgY29tYmluZWRfbG9j ID0gQ09NQklORV9MT0NBVElPTl9EQVRBIChsaW5lX3RhYmxlLAogCQkJCQkJICAgcHVyZV9sb2Ms CiAJCQkJCQkgICBzcmNfcmFuZ2UsCi0JCQkJCQkgICBOVUxMKTsKKwkJCQkJCSAgIE5VTEwsCisJ CQkJCQkgICAwKTsKICAgcmV0dXJuIGNvbWJpbmVkX2xvYzsKIH0KIApAQCAtMTA5Miw3ICsxMDkz LDcgQEAgbG9jYXRpb25fdAogbWFrZV9sb2NhdGlvbiAobG9jYXRpb25fdCBjYXJldCwgc291cmNl X3JhbmdlIHNyY19yYW5nZSkKIHsKICAgbG9jYXRpb25fdCBwdXJlX2xvYyA9IGdldF9wdXJlX2xv Y2F0aW9uIChjYXJldCk7Ci0gIHJldHVybiBDT01CSU5FX0xPQ0FUSU9OX0RBVEEgKGxpbmVfdGFi bGUsIHB1cmVfbG9jLCBzcmNfcmFuZ2UsIE5VTEwpOworICByZXR1cm4gQ09NQklORV9MT0NBVElP Tl9EQVRBIChsaW5lX3RhYmxlLCBwdXJlX2xvYywgc3JjX3JhbmdlLCBOVUxMLCAwKTsKIH0KIAog LyogQW4gZXhwYW5kZWRfbG9jYXRpb24gc3RvcmVzIHRoZSBjb2x1bW4gaW4gYnl0ZSB1bml0cy4g IFRoaXMgZnVuY3Rpb24KQEAgLTE3NjYsNiArMTc2NywzNyBAQCBnZXRfbG9jYXRpb25fd2l0aGlu X3N0cmluZyAoY3BwX3JlYWRlciAqcGZpbGUsCiAgIHJldHVybiBOVUxMOwogfQogCisvKiBBc3Nv Y2lhdGUgdGhlIERJU0NSSU1JTkFUT1Igd2l0aCBMT0NVUywgYW5kIHJldHVybiBhIG5ldyBsb2N1 cy4gKi8KKworbG9jYXRpb25fdAorbG9jYXRpb25fd2l0aF9kaXNjcmltaW5hdG9yIChsb2NhdGlv bl90IGxvY3VzLCBpbnQgZGlzY3JpbWluYXRvcikKK3sKKyAgdHJlZSBibG9jayA9IExPQ0FUSU9O X0JMT0NLIChsb2N1cyk7CisgIHNvdXJjZV9yYW5nZSBzcmNfcmFuZ2UgPSBnZXRfcmFuZ2VfZnJv bV9sb2MgKGxpbmVfdGFibGUsIGxvY3VzKTsKKyAgbG9jdXMgPSBnZXRfcHVyZV9sb2NhdGlvbiAo bG9jdXMpOworCisgIGlmIChsb2N1cyA9PSBVTktOT1dOX0xPQ0FUSU9OKQorICAgIHJldHVybiBs b2N1czsKKworICByZXR1cm4gQ09NQklORV9MT0NBVElPTl9EQVRBIChsaW5lX3RhYmxlLCBsb2N1 cywgc3JjX3JhbmdlLCBibG9jaywgZGlzY3JpbWluYXRvcik7Cit9CisKKy8qIFJldHVybiBUUlVF IGlmIExPQ1VTIHJlcHJlc2VudHMgYSBsb2NhdGlvbiB3aXRoIGEgZGlzY3JpbWluYXRvci4gICov CisKK2Jvb2wKK2hhc19kaXNjcmltaW5hdG9yIChsb2NhdGlvbl90IGxvY3VzKQoreworICByZXR1 cm4gZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2MgKGxvY3VzKSAhPSAwOworfQorCisvKiBSZXR1 cm4gdGhlIGRpc2NyaW1pbmF0b3IgZm9yIExPQ1VTLiAgKi8KKworaW50CitnZXRfZGlzY3JpbWlu YXRvcl9mcm9tX2xvYyAobG9jYXRpb25fdCBsb2N1cykKK3sKKyAgcmV0dXJuIGdldF9kaXNjcmlt aW5hdG9yX2Zyb21fbG9jIChsaW5lX3RhYmxlLCBsb2N1cyk7Cit9CisKICNpZiBDSEVDS0lOR19Q CiAKIG5hbWVzcGFjZSBzZWxmdGVzdCB7CmRpZmYgLS1naXQgYS9nY2MvaW5wdXQuaCBiL2djYy9p bnB1dC5oCmluZGV4IGYxYWUzYWVjOTVjLi4xMWM1NzFkMDc2ZiAxMDA2NDQKLS0tIGEvZ2NjL2lu cHV0LmgKKysrIGIvZ2NjL2lucHV0LmgKQEAgLTE2NSw2ICsxNjUsMTAgQEAgZXh0ZXJuIGxvY2F0 aW9uX3QgZXhwYW5zaW9uX3BvaW50X2xvY2F0aW9uIChsb2NhdGlvbl90KTsKIAogZXh0ZXJuIGxv Y2F0aW9uX3QgaW5wdXRfbG9jYXRpb247CiAKK2V4dGVybiBsb2NhdGlvbl90IGxvY2F0aW9uX3dp dGhfZGlzY3JpbWluYXRvciAobG9jYXRpb25fdCwgaW50KTsKK2V4dGVybiBib29sIGhhc19kaXNj cmltaW5hdG9yIChsb2NhdGlvbl90KTsKK2V4dGVybiBpbnQgZ2V0X2Rpc2NyaW1pbmF0b3JfZnJv bV9sb2MgKGxvY2F0aW9uX3QpOworCiAjZGVmaW5lIExPQ0FUSU9OX0ZJTEUoTE9DKSAoKGV4cGFu ZF9sb2NhdGlvbiAoTE9DKSkuZmlsZSkKICNkZWZpbmUgTE9DQVRJT05fTElORShMT0MpICgoZXhw YW5kX2xvY2F0aW9uIChMT0MpKS5saW5lKQogI2RlZmluZSBMT0NBVElPTl9DT0xVTU4oTE9DKSgo ZXhwYW5kX2xvY2F0aW9uIChMT0MpKS5jb2x1bW4pCmRpZmYgLS1naXQgYS9nY2MvbHRvLXN0cmVh bWVyLWluLmNjIGIvZ2NjL2x0by1zdHJlYW1lci1pbi5jYwppbmRleCBhN2RhZDcwMzYzZi4uYmNj ZDVkMDQ1NDEgMTAwNjQ0Ci0tLSBhL2djYy9sdG8tc3RyZWFtZXItaW4uY2MKKysrIGIvZ2NjL2x0 by1zdHJlYW1lci1pbi5jYwpAQCAtNDA5LDYgKzQwOSw4IEBAIGx0b19sb2NhdGlvbl9jYWNoZTo6 Y21wX2xvYyAoY29uc3Qgdm9pZCAqcGEsIGNvbnN0IHZvaWQgKnBiKQogICAgIHJldHVybiBhLT5s aW5lIC0gYi0+bGluZTsKICAgaWYgKGEtPmNvbCAhPSBiLT5jb2wpCiAgICAgcmV0dXJuIGEtPmNv bCAtIGItPmNvbDsKKyAgaWYgKGEtPmRpc2NyICE9IGItPmRpc2NyKQorICAgIHJldHVybiBhLT5k aXNjciAtIGItPmRpc2NyOwogICBpZiAoKGEtPmJsb2NrID09IE5VTExfVFJFRSkgIT0gKGItPmJs b2NrID09IE5VTExfVFJFRSkpCiAgICAgcmV0dXJuIGEtPmJsb2NrID8gMSA6IC0xOwogICBpZiAo YS0+YmxvY2spCkBAIC00NjAsNiArNDYyLDggQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjphcHBseV9s b2NhdGlvbl9jYWNoZSAoKQogCSAgY3VycmVudF9sb2MgPSBsaW5lbWFwX3Bvc2l0aW9uX2Zvcl9j b2x1bW4gKGxpbmVfdGFibGUsIGxvYy5jb2wpOwogCSAgaWYgKGxvYy5ibG9jaykKIAkgICAgY3Vy cmVudF9sb2MgPSBzZXRfYmxvY2sgKGN1cnJlbnRfbG9jLCBsb2MuYmxvY2spOworCSAgaWYgKGxv Yy5kaXNjcikKKwkgICAgY3VycmVudF9sb2MgPSBsb2NhdGlvbl93aXRoX2Rpc2NyaW1pbmF0b3Ig KGN1cnJlbnRfbG9jLCBsb2MuZGlzY3IpOwogCX0KICAgICAgIGVsc2UgaWYgKGN1cnJlbnRfYmxv Y2sgIT0gbG9jLmJsb2NrKQogCXsKQEAgLTQ2NywxMiArNDcxLDE5IEBAIGx0b19sb2NhdGlvbl9j YWNoZTo6YXBwbHlfbG9jYXRpb25fY2FjaGUgKCkKIAkgICAgY3VycmVudF9sb2MgPSBzZXRfYmxv Y2sgKGN1cnJlbnRfbG9jLCBsb2MuYmxvY2spOwogCSAgZWxzZQogCSAgICBjdXJyZW50X2xvYyA9 IExPQ0FUSU9OX0xPQ1VTIChjdXJyZW50X2xvYyk7CisJICBpZiAobG9jLmRpc2NyKQorCSAgICBj dXJyZW50X2xvYyA9IGxvY2F0aW9uX3dpdGhfZGlzY3JpbWluYXRvciAoY3VycmVudF9sb2MsIGxv Yy5kaXNjcik7CisJfQorICAgICAgZWxzZSBpZiAoY3VycmVudF9kaXNjciAhPSBsb2MuZGlzY3Ip CisJeworCSAgICBjdXJyZW50X2xvYyA9IGxvY2F0aW9uX3dpdGhfZGlzY3JpbWluYXRvciAoY3Vy cmVudF9sb2MsIGxvYy5kaXNjcik7CiAJfQogICAgICAgKmxvYy5sb2MgPSBjdXJyZW50X2xvYzsK ICAgICAgIGN1cnJlbnRfbGluZSA9IGxvYy5saW5lOwogICAgICAgcHJldl9maWxlID0gY3VycmVu dF9maWxlID0gbG9jLmZpbGU7CiAgICAgICBjdXJyZW50X2NvbCA9IGxvYy5jb2w7CiAgICAgICBj dXJyZW50X2Jsb2NrID0gbG9jLmJsb2NrOworICAgICAgY3VycmVudF9kaXNjciA9IGxvYy5kaXNj cjsKICAgICB9CiAgIGxvY19jYWNoZS50cnVuY2F0ZSAoMCk7CiAgIGFjY2VwdGVkX2xlbmd0aCA9 IDA7CkBAIC01MTIsNiArNTIzLDcgQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjppbnB1dF9sb2NhdGlv bl9hbmRfYmxvY2sgKGxvY2F0aW9uX3QgKmxvYywKICAgc3RhdGljIGludCBzdHJlYW1fY29sOwog ICBzdGF0aWMgYm9vbCBzdHJlYW1fc3lzcDsKICAgc3RhdGljIHRyZWUgc3RyZWFtX2Jsb2NrOwor ICBzdGF0aWMgdW5zaWduZWQgc3RyZWFtX2Rpc2NyOwogICBzdGF0aWMgY29uc3QgY2hhciAqc3Ry ZWFtX3JlbGF0aXZlX3BhdGhfcHJlZml4OwogCiAgIGdjY19hc3NlcnQgKGN1cnJlbnRfY2FjaGUg PT0gdGhpcyk7CkBAIC01MzgsNiArNTUwLDcgQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjppbnB1dF9s b2NhdGlvbl9hbmRfYmxvY2sgKGxvY2F0aW9uX3QgKmxvYywKICAgKmxvYyA9IFJFU0VSVkVEX0xP Q0FUSU9OX0NPVU5UOwogICBib29sIGxpbmVfY2hhbmdlID0gYnBfdW5wYWNrX3ZhbHVlIChicCwg MSk7CiAgIGJvb2wgY29sdW1uX2NoYW5nZSA9IGJwX3VucGFja192YWx1ZSAoYnAsIDEpOworICBi b29sIGRpc2NyX2NoYW5nZSA9IGJwX3VucGFja192YWx1ZSAoYnAsIDEpOwogCiAgIGlmIChmaWxl X2NoYW5nZSkKICAgICB7CkBAIC01NjMsNiArNTc2LDkgQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjpp bnB1dF9sb2NhdGlvbl9hbmRfYmxvY2sgKGxvY2F0aW9uX3QgKmxvYywKICAgaWYgKGNvbHVtbl9j aGFuZ2UpCiAgICAgc3RyZWFtX2NvbCA9IGJwX3VucGFja192YXJfbGVuX3Vuc2lnbmVkIChicCk7 CiAKKyAgaWYgKGRpc2NyX2NoYW5nZSkKKyAgICBzdHJlYW1fZGlzY3IgPSBicF91bnBhY2tfdmFy X2xlbl91bnNpZ25lZCAoYnApOworCiAgIHRyZWUgYmxvY2sgPSBOVUxMX1RSRUU7CiAgIGlmIChp YikKICAgICB7CkBAIC01NzgsNyArNTk0LDggQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjppbnB1dF9s b2NhdGlvbl9hbmRfYmxvY2sgKGxvY2F0aW9uX3QgKmxvYywKICAgaWYgKGN1cnJlbnRfZmlsZSA9 PSBzdHJlYW1fZmlsZQogICAgICAgJiYgY3VycmVudF9saW5lID09IHN0cmVhbV9saW5lCiAgICAg ICAmJiBjdXJyZW50X2NvbCA9PSBzdHJlYW1fY29sCi0gICAgICAmJiBjdXJyZW50X3N5c3AgPT0g c3RyZWFtX3N5c3ApCisgICAgICAmJiBjdXJyZW50X3N5c3AgPT0gc3RyZWFtX3N5c3AKKyAgICAg ICYmIGN1cnJlbnRfZGlzY3IgPT0gc3RyZWFtX2Rpc2NyKQogICAgIHsKICAgICAgIGlmIChjdXJy ZW50X2Jsb2NrID09IGJsb2NrKQogCSpsb2MgPSBjdXJyZW50X2xvYzsKQEAgLTU5MCw3ICs2MDcs NyBAQCBsdG9fbG9jYXRpb25fY2FjaGU6OmlucHV0X2xvY2F0aW9uX2FuZF9ibG9jayAobG9jYXRp b25fdCAqbG9jLAogICAgIH0KIAogICBzdHJ1Y3QgY2FjaGVkX2xvY2F0aW9uIGVudHJ5Ci0gICAg PSB7c3RyZWFtX2ZpbGUsIGxvYywgc3RyZWFtX2xpbmUsIHN0cmVhbV9jb2wsIHN0cmVhbV9zeXNw LCBibG9ja307CisgICAgPSB7c3RyZWFtX2ZpbGUsIGxvYywgc3RyZWFtX2xpbmUsIHN0cmVhbV9j b2wsIHN0cmVhbV9zeXNwLCBibG9jaywgc3RyZWFtX2Rpc2NyfTsKICAgbG9jX2NhY2hlLnNhZmVf cHVzaCAoZW50cnkpOwogfQogCmRpZmYgLS1naXQgYS9nY2MvbHRvLXN0cmVhbWVyLW91dC5jYyBi L2djYy9sdG8tc3RyZWFtZXItb3V0LmNjCmluZGV4IDQ3MWYzNWMzMTVmLi5kYWM4MzI5NzY5ZCAx MDA2NDQKLS0tIGEvZ2NjL2x0by1zdHJlYW1lci1vdXQuY2MKKysrIGIvZ2NjL2x0by1zdHJlYW1l ci1vdXQuY2MKQEAgLTY3LDYgKzY3LDcgQEAgY2xlYXJfbGluZV9pbmZvIChzdHJ1Y3Qgb3V0cHV0 X2Jsb2NrICpvYikKICAgICAgc28gdGhhdCB0aGUgZmlyc3QgbG9jYXRpb24gd2l0aCBibG9jayBp biBhIGZ1bmN0aW9uIGV0Yy4KICAgICAgYWx3YXlzIHN0cmVhbXMgYSBjaGFuZ2VfYmxvY2sgYml0 IGFuZCB0aGUgZmlyc3QgYmxvY2suICAqLwogICBvYi0+Y3VycmVudF9ibG9jayA9IHZvaWRfbm9k ZTsKKyAgb2ItPmN1cnJlbnRfZGlzY3IgPSBVSU5UX01BWDsKIH0KIAogCkBAIC0xOTQsNiArMTk1 LDcgQEAgbHRvX291dHB1dF9sb2NhdGlvbl8xIChzdHJ1Y3Qgb3V0cHV0X2Jsb2NrICpvYiwgc3Ry dWN0IGJpdHBhY2tfZCAqYnAsCiAgIGlmIChsb2MgPj0gUkVTRVJWRURfTE9DQVRJT05fQ09VTlQp CiAgICAgewogICAgICAgZXhwYW5kZWRfbG9jYXRpb24geGxvYyA9IGV4cGFuZF9sb2NhdGlvbiAo bG9jKTsKKyAgICAgIHVuc2lnbmVkIGRpc2NyID0gZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2Mg KG9yaWdfbG9jKTsKIAogICAgICAgaWYgKG9iLT5yZXNldF9sb2N1cykKIAl7CkBAIC0yMTYsNiAr MjE4LDcgQEAgbHRvX291dHB1dF9sb2NhdGlvbl8xIChzdHJ1Y3Qgb3V0cHV0X2Jsb2NrICpvYiwg c3RydWN0IGJpdHBhY2tfZCAqYnAsCiAKICAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBvYi0+Y3Vy cmVudF9saW5lICE9IHhsb2MubGluZSwgMSk7CiAgICAgICBicF9wYWNrX3ZhbHVlIChicCwgb2It PmN1cnJlbnRfY29sICE9IHhsb2MuY29sdW1uLCAxKTsKKyAgICAgIGJwX3BhY2tfdmFsdWUgKGJw LCBvYi0+Y3VycmVudF9kaXNjciAhPSBkaXNjciwgMSk7CiAKICAgICAgIGlmIChvYi0+Y3VycmVu dF9maWxlICE9IHhsb2MuZmlsZSkKIAl7CkBAIC0yNDIsNiArMjQ1LDEwIEBAIGx0b19vdXRwdXRf bG9jYXRpb25fMSAoc3RydWN0IG91dHB1dF9ibG9jayAqb2IsIHN0cnVjdCBiaXRwYWNrX2QgKmJw LAogICAgICAgaWYgKG9iLT5jdXJyZW50X2NvbCAhPSB4bG9jLmNvbHVtbikKIAlicF9wYWNrX3Zh cl9sZW5fdW5zaWduZWQgKGJwLCB4bG9jLmNvbHVtbik7CiAgICAgICBvYi0+Y3VycmVudF9jb2wg PSB4bG9jLmNvbHVtbjsKKworICAgICAgaWYgKG9iLT5jdXJyZW50X2Rpc2NyICE9IGRpc2NyKQor CWJwX3BhY2tfdmFyX2xlbl91bnNpZ25lZCAoYnAsIGRpc2NyKTsKKyAgICAgIG9iLT5jdXJyZW50 X2Rpc2NyID0gZGlzY3I7CiAgICAgfQogICBlbHNlCiAgICAgYnBfcGFja19pbnRfaW5fcmFuZ2Ug KGJwLCAwLCBSRVNFUlZFRF9MT0NBVElPTl9DT1VOVCArIDEsIGxvYyk7CmRpZmYgLS1naXQgYS9n Y2MvbHRvLXN0cmVhbWVyLmggYi9nY2MvbHRvLXN0cmVhbWVyLmgKaW5kZXggNTk3ZTllNDA1ZWMu LjJlM2FiZDk3OTU5IDEwMDY0NAotLS0gYS9nY2MvbHRvLXN0cmVhbWVyLmgKKysrIGIvZ2NjL2x0 by1zdHJlYW1lci5oCkBAIC0zMTEsNiArMzExLDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbGluZSwg Y29sOwogICAgIGJvb2wgc3lzcDsKICAgICB0cmVlIGJsb2NrOworICAgIHVuc2lnbmVkIGRpc2Ny OwogICB9OwogCiAgIC8qIFRoZSBsb2NhdGlvbiBjYWNoZS4gICovCkBAIC0zMzMsNiArMzM0LDcg QEAgcHJpdmF0ZToKICAgYm9vbCBjdXJyZW50X3N5c3A7CiAgIGxvY2F0aW9uX3QgY3VycmVudF9s b2M7CiAgIHRyZWUgY3VycmVudF9ibG9jazsKKyAgdW5zaWduZWQgY3VycmVudF9kaXNjcjsKIH07 CiAKIC8qIFN0cnVjdHVyZSB1c2VkIGFzIGJ1ZmZlciBmb3IgcmVhZGluZyBhbiBMVE8gZmlsZS4g ICovCkBAIC03MjMsNiArNzI1LDcgQEAgc3RydWN0IG91dHB1dF9ibG9jawogICBib29sIHJlc2V0 X2xvY3VzOwogICBib29sIGVtaXRfcHdkOwogICB0cmVlIGN1cnJlbnRfYmxvY2s7CisgIHVuc2ln bmVkIGN1cnJlbnRfZGlzY3I7CiAKICAgLyogQ2FjaGUgb2Ygbm9kZXMgd3JpdHRlbiBpbiB0aGlz IHNlY3Rpb24uICAqLwogICBzdHJ1Y3Qgc3RyZWFtZXJfdHJlZV9jYWNoZV9kICp3cml0ZXJfY2Fj aGU7CmRpZmYgLS1naXQgYS9nY2MvcHJpbnQtcnRsLmNjIGIvZ2NjL3ByaW50LXJ0bC5jYwppbmRl eCA2MGM4NDU0ODViYy4uZTExNWY5ODcxNzMgMTAwNjQ0Ci0tLSBhL2djYy9wcmludC1ydGwuY2MK KysrIGIvZ2NjL3ByaW50LXJ0bC5jYwpAQCAtNDUzLDYgKzQ1MywxMCBAQCBydHhfd3JpdGVyOjpw cmludF9ydHhfb3BlcmFuZF9jb2RlX2kgKGNvbnN0X3J0eCBpbl9ydHgsIGludCBpZHgpCiAJICBl eHBhbmRlZF9sb2NhdGlvbiB4bG9jID0gaW5zbl9sb2NhdGlvbiAoaW5faW5zbik7CiAJICBmcHJp bnRmIChtX291dGZpbGUsICIgXCIlc1wiOiVpOiVpIiwgeGxvYy5maWxlLCB4bG9jLmxpbmUsCiAJ CSAgIHhsb2MuY29sdW1uKTsKKwkgIGludCBkaXNjcmltaW5hdG9yID0gaW5zbl9kaXNjcmltaW5h dG9yIChpbl9pbnNuKTsKKwkgICAgaWYgKGRpc2NyaW1pbmF0b3IpCisJICAgICAgZnByaW50ZiAo bV9vdXRmaWxlLCAiIGRpc2NyaW0gJWQiLCBkaXNjcmltaW5hdG9yKTsKKwogCX0KICNlbmRpZgog ICAgIH0KZGlmZiAtLWdpdCBhL2djYy9ydGwuaCBiL2djYy9ydGwuaAppbmRleCA2NDVjMDA5YTM0 MC4uN2E4YzQ3MDkyNTcgMTAwNjQ0Ci0tLSBhL2djYy9ydGwuaAorKysgYi9nY2MvcnRsLmgKQEAg LTMzNjksNiArMzM2OSw3IEBAIGV4dGVybiBpbnQgaW5zbl9saW5lIChjb25zdCBydHhfaW5zbiAq KTsKIGV4dGVybiBjb25zdCBjaGFyICogaW5zbl9maWxlIChjb25zdCBydHhfaW5zbiAqKTsKIGV4 dGVybiB0cmVlIGluc25fc2NvcGUgKGNvbnN0IHJ0eF9pbnNuICopOwogZXh0ZXJuIGV4cGFuZGVk X2xvY2F0aW9uIGluc25fbG9jYXRpb24gKGNvbnN0IHJ0eF9pbnNuICopOworZXh0ZXJuIGludCBp bnNuX2Rpc2NyaW1pbmF0b3IgKGNvbnN0IHJ0eF9pbnNuICopOwogZXh0ZXJuIGxvY2F0aW9uX3Qg cHJvbG9ndWVfbG9jYXRpb24sIGVwaWxvZ3VlX2xvY2F0aW9uOwogCiAvKiBJbiBqdW1wLmNjICov CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9wcjg1MjEzLmMg Yi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9wcjg1MjEzLmMKaW5kZXggOGE2YmU4 MWQyMGYuLmU5MDNlOTc2ZjJjIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1v bi91YnNhbi9wcjg1MjEzLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9jLWMrKy1jb21tb24vdWJzYW4v cHI4NTIxMy5jCkBAIC0xLDYgKzEsMTEgQEAKIC8qIFBSIHNhbml0aXplci84NTIxMyAqLwogLyog eyBkZy1kbyBjb21waWxlIH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLU8xIC1mc2FuaXRpemU9dW5k ZWZpbmVkIC1mY29tcGFyZS1kZWJ1ZyIgfSAqLworLyogUGFzcyAtZ25vLXN0YXRlbWVudC1mcm9u dGllcnMgdG8gd29yayBhcm91bmQKKyAgIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hv d19idWcuY2dpP2lkPTEwMDczMyA6CisgICB3aXRob3V0IGl0IHRoZSBJUiBjb21pbmcgZnJvbSB0 aGUgZnJvbnQgZW5kIG1heSBiZSBkaWZmZXJlbnQgd2l0aCBhbmQgd2l0aG91dAorICAgZGVidWcg aW5mb3JtYXRpb24gdHVybmVkIG9uLiBUaGF0IG1heSBjYXVzZSBlLmcuLCBkaWZmZXJlbnQgZGlz Y3JpbWluYXRvciB2YWx1ZXMKKyAgIGFuZCAtZmNvbXBhcmUtZGVidWcgZmFpbHVyZXMuICovCisv KiB7IGRnLW9wdGlvbnMgIi1PMSAtZnNhbml0aXplPXVuZGVmaW5lZCAtZmNvbXBhcmUtZGVidWcg LWduby1zdGF0ZW1lbnQtZnJvbnRpZXJzIiB9ICovCiAKIGludAogZm9vIChpbnQgeCkKZGlmZiAt LWdpdCBhL2djYy90cmVlLWNmZy5jYyBiL2djYy90cmVlLWNmZy5jYwppbmRleCA5MWVjMzNjODBh NC4uNjM4ODg3OTEzMmQgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLWNmZy5jYworKysgYi9nY2MvdHJl ZS1jZmcuY2MKQEAgLTExNjUsNyArMTE2NSwzMyBAQCBzYW1lX2xpbmVfcCAobG9jYXRpb25fdCBs b2N1czEsIGV4cGFuZGVkX2xvY2F0aW9uICpmcm9tLCBsb2NhdGlvbl90IGxvY3VzMikKICAgICAg ICAgICAmJiBmaWxlbmFtZV9jbXAgKGZyb20tPmZpbGUsIHRvLmZpbGUpID09IDApOwogfQogCi0v KiBBc3NpZ24gZGlzY3JpbWluYXRvcnMgdG8gZWFjaCBiYXNpYyBibG9jay4gICovCisvKiBBc3Np Z24gYSB1bmlxdWUgZGlzY3JpbWluYXRvciB2YWx1ZSB0byBhbGwgc3RhdGVtZW50cyBpbiBibG9j ayBiYiB0aGF0CisgICBoYXZlIHRoZSBzYW1lIGxpbmUgbnVtYmVyIGFzIGxvY3VzLiAqLworCitz dGF0aWMgdm9pZAorYXNzaWduX2Rpc2NyaW1pbmF0b3IgKGxvY2F0aW9uX3QgbG9jdXMsIGJhc2lj X2Jsb2NrIGJiKQoreworICBnaW1wbGVfc3RtdF9pdGVyYXRvciBnc2k7CisgIGludCBkaXNjcmlt aW5hdG9yOworCisgIGlmIChsb2N1cyA9PSBVTktOT1dOX0xPQ0FUSU9OKQorICAgIHJldHVybjsK KworICBleHBhbmRlZF9sb2NhdGlvbiBsb2N1c19lID0gZXhwYW5kX2xvY2F0aW9uIChsb2N1cyk7 CisKKyAgZGlzY3JpbWluYXRvciA9IG5leHRfZGlzY3JpbWluYXRvcl9mb3JfbG9jdXMgKGxvY3Vz X2UubGluZSk7CisKKyAgZm9yIChnc2kgPSBnc2lfc3RhcnRfYmIgKGJiKTsgIWdzaV9lbmRfcCAo Z3NpKTsgZ3NpX25leHQgKCZnc2kpKQorICAgIHsKKyAgICAgIGdpbXBsZSAqc3RtdCA9IGdzaV9z dG10IChnc2kpOworICAgICAgbG9jYXRpb25fdCBzdG10X2xvY3VzID0gZ2ltcGxlX2xvY2F0aW9u IChzdG10KTsKKyAgICAgIGlmIChzYW1lX2xpbmVfcCAobG9jdXMsICZsb2N1c19lLCBzdG10X2xv Y3VzKSkKKwlnaW1wbGVfc2V0X2xvY2F0aW9uIChzdG10LAorCSAgICBsb2NhdGlvbl93aXRoX2Rp c2NyaW1pbmF0b3IgKHN0bXRfbG9jdXMsIGRpc2NyaW1pbmF0b3IpKTsKKyAgICB9Cit9CisKKy8q IEFzc2lnbiBkaXNjcmltaW5hdG9ycyB0byBzdGF0ZW1lbnQgbG9jYXRpb25zLiAgKi8KIAogc3Rh dGljIHZvaWQKIGFzc2lnbl9kaXNjcmltaW5hdG9ycyAodm9pZCkKQEAgLTExODAsNiArMTIwNiw3 IEBAIGFzc2lnbl9kaXNjcmltaW5hdG9ycyAodm9pZCkKICAgICAgIGxvY2F0aW9uX3QgbG9jdXMg PSBsYXN0ID8gZ2ltcGxlX2xvY2F0aW9uIChsYXN0KSA6IFVOS05PV05fTE9DQVRJT047CiAKICAg ICAgIGlmIChsb2N1cyA9PSBVTktOT1dOX0xPQ0FUSU9OKQorCiAJY29udGludWU7CiAKICAgICAg IGV4cGFuZGVkX2xvY2F0aW9uIGxvY3VzX2UgPSBleHBhbmRfbG9jYXRpb24gKGxvY3VzKTsKQEAg LTExODgsMTcgKzEyMTUsMjIgQEAgYXNzaWduX2Rpc2NyaW1pbmF0b3JzICh2b2lkKQogCXsKIAkg IGdpbXBsZSAqZmlyc3QgPSBmaXJzdF9ub25fbGFiZWxfc3RtdCAoZS0+ZGVzdCk7CiAJICBnaW1w bGUgKmxhc3QgPSBsYXN0X3N0bXQgKGUtPmRlc3QpOwotCSAgaWYgKChmaXJzdCAmJiBzYW1lX2xp bmVfcCAobG9jdXMsICZsb2N1c19lLAorCisJICBnaW1wbGUgKnN0bXRfb25fc2FtZV9saW5lID0g TlVMTDsKKwkgIGlmIChmaXJzdCAmJiBzYW1lX2xpbmVfcCAobG9jdXMsICZsb2N1c19lLAogCQkJ CSAgICAgZ2ltcGxlX2xvY2F0aW9uIChmaXJzdCkpKQotCSAgICAgIHx8IChsYXN0ICYmIHNhbWVf bGluZV9wIChsb2N1cywgJmxvY3VzX2UsCi0JCQkJICAgICAgIGdpbXBsZV9sb2NhdGlvbiAobGFz dCkpKSkKKwkgICAgc3RtdF9vbl9zYW1lX2xpbmUgPSBmaXJzdDsKKwkgIGVsc2UgaWYgKGxhc3Qg JiYgc2FtZV9saW5lX3AgKGxvY3VzLCAmbG9jdXNfZSwKKwkJCQkJZ2ltcGxlX2xvY2F0aW9uIChs YXN0KSkpCisJICAgIHN0bXRfb25fc2FtZV9saW5lID0gbGFzdDsKKworCSAgaWYgKHN0bXRfb25f c2FtZV9saW5lKQogCSAgICB7Ci0JICAgICAgaWYgKGUtPmRlc3QtPmRpc2NyaW1pbmF0b3IgIT0g MCAmJiBiYi0+ZGlzY3JpbWluYXRvciA9PSAwKQotCQliYi0+ZGlzY3JpbWluYXRvcgotCQkgID0g bmV4dF9kaXNjcmltaW5hdG9yX2Zvcl9sb2N1cyAobG9jdXNfZS5saW5lKTsKKwkgICAgICBpZiAo aGFzX2Rpc2NyaW1pbmF0b3IgKGdpbXBsZV9sb2NhdGlvbiAoc3RtdF9vbl9zYW1lX2xpbmUpKQor CQkgICYmICFoYXNfZGlzY3JpbWluYXRvciAobG9jdXMpKQorCQlhc3NpZ25fZGlzY3JpbWluYXRv ciAobG9jdXMsIGJiKTsKIAkgICAgICBlbHNlCi0JCWUtPmRlc3QtPmRpc2NyaW1pbmF0b3IKLQkJ ICA9IG5leHRfZGlzY3JpbWluYXRvcl9mb3JfbG9jdXMgKGxvY3VzX2UubGluZSk7CisJCWFzc2ln bl9kaXNjcmltaW5hdG9yIChsb2N1cywgZS0+ZGVzdCk7CiAJICAgIH0KIAl9CiAgICAgfQpkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUtcHJldHR5LXByaW50LmNjIGIvZ2NjL3RyZWUtcHJldHR5LXByaW50 LmNjCmluZGV4IDQ3MzcxZDhiY2JlLi4xY2FhNDUzZWM3NyAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUt cHJldHR5LXByaW50LmNjCisrKyBiL2djYy90cmVlLXByZXR0eS1wcmludC5jYwpAQCAtMTQzNyw2 ICsxNDM3LDcgQEAgdm9pZAogZHVtcF9sb2NhdGlvbiAocHJldHR5X3ByaW50ZXIgKnBwLCBsb2Nh dGlvbl90IGxvYykKIHsKICAgZXhwYW5kZWRfbG9jYXRpb24geGxvYyA9IGV4cGFuZF9sb2NhdGlv biAobG9jKTsKKyAgaW50IGRpc2NyaW1pbmF0b3IgPSBnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xv YyAobG9jKTsKIAogICBwcF9sZWZ0X2JyYWNrZXQgKHBwKTsKICAgaWYgKHhsb2MuZmlsZSkKQEAg LTE0NDcsNiArMTQ0OCwxMSBAQCBkdW1wX2xvY2F0aW9uIChwcmV0dHlfcHJpbnRlciAqcHAsIGxv Y2F0aW9uX3QgbG9jKQogICBwcF9kZWNpbWFsX2ludCAocHAsIHhsb2MubGluZSk7CiAgIHBwX2Nv bG9uIChwcCk7CiAgIHBwX2RlY2ltYWxfaW50IChwcCwgeGxvYy5jb2x1bW4pOworICBpZiAoZGlz Y3JpbWluYXRvcikKKyAgeworICAgIHBwX3N0cmluZyAocHAsICIgZGlzY3JpbSAiKTsKKyAgICBw cF9kZWNpbWFsX2ludCAocHAsIGRpc2NyaW1pbmF0b3IpOworICB9CiAgIHBwX3N0cmluZyAocHAs ICJdICIpOwogfQogCmRpZmYgLS1naXQgYS9nY2MvdHJlZS5jYyBiL2djYy90cmVlLmNjCmluZGV4 IDAwN2M5MzI1YjE3Li44Y2UyMjM2Y2MzMyAxMDA2NDQKLS0tIGEvZ2NjL3RyZWUuY2MKKysrIGIv Z2NjL3RyZWUuY2MKQEAgLTE0MTc3LDcgKzE0MTc3LDggQEAgc2V0X2Jsb2NrIChsb2NhdGlvbl90 IGxvYywgdHJlZSBibG9jaykKIHsKICAgbG9jYXRpb25fdCBwdXJlX2xvYyA9IGdldF9wdXJlX2xv Y2F0aW9uIChsb2MpOwogICBzb3VyY2VfcmFuZ2Ugc3JjX3JhbmdlID0gZ2V0X3JhbmdlX2Zyb21f bG9jIChsaW5lX3RhYmxlLCBsb2MpOwotICByZXR1cm4gQ09NQklORV9MT0NBVElPTl9EQVRBIChs aW5lX3RhYmxlLCBwdXJlX2xvYywgc3JjX3JhbmdlLCBibG9jayk7CisgIHVuc2lnbmVkIGRpc2Ny aW1pbmF0b3IgPSBnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xvYyAobGluZV90YWJsZSwgbG9jKTsK KyAgcmV0dXJuIENPTUJJTkVfTE9DQVRJT05fREFUQSAobGluZV90YWJsZSwgcHVyZV9sb2MsIHNy Y19yYW5nZSwgYmxvY2ssIGRpc2NyaW1pbmF0b3IpOwogfQogCiBsb2NhdGlvbl90CkBAIC0xNDE5 NSwxMSArMTQxOTYsMTQgQEAgc2V0X3NvdXJjZV9yYW5nZSAodHJlZSBleHByLCBzb3VyY2VfcmFu Z2Ugc3JjX3JhbmdlKQogICBpZiAoIUVYUFJfUCAoZXhwcikpCiAgICAgcmV0dXJuIFVOS05PV05f TE9DQVRJT047CiAKLSAgbG9jYXRpb25fdCBwdXJlX2xvYyA9IGdldF9wdXJlX2xvY2F0aW9uIChF WFBSX0xPQ0FUSU9OIChleHByKSk7CisgIGxvY2F0aW9uX3QgZXhwcl9sb2NhdGlvbiA9IEVYUFJf TE9DQVRJT04gKGV4cHIpOworICBsb2NhdGlvbl90IHB1cmVfbG9jID0gZ2V0X3B1cmVfbG9jYXRp b24gKGV4cHJfbG9jYXRpb24pOworICB1bnNpZ25lZCBkaXNjcmltaW5hdG9yID0gZ2V0X2Rpc2Ny aW1pbmF0b3JfZnJvbV9sb2MgKGV4cHJfbG9jYXRpb24pOwogICBsb2NhdGlvbl90IGFkaG9jID0g Q09NQklORV9MT0NBVElPTl9EQVRBIChsaW5lX3RhYmxlLAogCQkJCQkgICAgcHVyZV9sb2MsCiAJ CQkJCSAgICBzcmNfcmFuZ2UsCi0JCQkJCSAgICBOVUxMKTsKKwkJCQkJICAgIE5VTEwsCisJCQkJ CSAgICBkaXNjcmltaW5hdG9yKTsKICAgU0VUX0VYUFJfTE9DQVRJT04gKGV4cHIsIGFkaG9jKTsK ICAgcmV0dXJuIGFkaG9jOwogfQpkaWZmIC0tZ2l0IGEvbGliY3BwL2luY2x1ZGUvbGluZS1tYXAu aCBiL2xpYmNwcC9pbmNsdWRlL2xpbmUtbWFwLmgKaW5kZXggOWJkZDViOWQzMGMuLjUwMjA3Y2Fj YzEyIDEwMDY0NAotLS0gYS9saWJjcHAvaW5jbHVkZS9saW5lLW1hcC5oCisrKyBiL2xpYmNwcC9p bmNsdWRlL2xpbmUtbWFwLmgKQEAgLTc1Nyw2ICs3NTcsNyBAQCBzdHJ1Y3QgR1RZKCgpKSBsb2Nh dGlvbl9hZGhvY19kYXRhIHsKICAgbG9jYXRpb25fdCBsb2N1czsKICAgc291cmNlX3JhbmdlIHNy Y19yYW5nZTsKICAgdm9pZCAqIEdUWSgoc2tpcCkpIGRhdGE7CisgIHVuc2lnbmVkIGRpc2NyaW1p bmF0b3I7CiB9OwogCiBzdHJ1Y3QgaHRhYjsKQEAgLTEwMzQsMTIgKzEwMzUsMTQgQEAgTElORU1B UFNfTEFTVF9BTExPQ0FURURfTUFDUk9fTUFQIChjb25zdCBsaW5lX21hcHMgKnNldCkKIH0KIAog ZXh0ZXJuIGxvY2F0aW9uX3QgZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAobGluZV9tYXBzICosIGxv Y2F0aW9uX3QsCi0JCQkJCSAgc291cmNlX3JhbmdlLCB2b2lkICopOworCQkJCQkgIHNvdXJjZV9y YW5nZSwgdm9pZCAqLCB1bnNpZ25lZCk7CiBleHRlcm4gdm9pZCAqZ2V0X2RhdGFfZnJvbV9hZGhv Y19sb2MgKGNvbnN0IGxpbmVfbWFwcyAqLCBsb2NhdGlvbl90KTsKK2V4dGVybiB1bnNpZ25lZCBn ZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xvYyAoY29uc3QgbGluZV9tYXBzICosIGxvY2F0 aW9uX3QpOwogZXh0ZXJuIGxvY2F0aW9uX3QgZ2V0X2xvY2F0aW9uX2Zyb21fYWRob2NfbG9jIChj b25zdCBsaW5lX21hcHMgKiwKIAkJCQkJICAgICAgIGxvY2F0aW9uX3QpOwogCiBleHRlcm4gc291 cmNlX3JhbmdlIGdldF9yYW5nZV9mcm9tX2xvYyAobGluZV9tYXBzICpzZXQsIGxvY2F0aW9uX3Qg bG9jKTsKK2V4dGVybiB1bnNpZ25lZCBnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xvYyAobGluZV9t YXBzICpzZXQsIGxvY2F0aW9uX3QgbG9jKTsKIAogLyogR2V0IHdoZXRoZXIgbG9jYXRpb24gTE9D IGlzIGEgInB1cmUiIGxvY2F0aW9uLCBvcgogICAgd2hldGhlciBpdCBpcyBhbiBhZC1ob2MgbG9j YXRpb24sIG9yIGVtYmVkcyByYW5nZSBpbmZvcm1hdGlvbi4gICovCkBAIC0xMDU4LDkgKzEwNjEs MTAgQEAgaW5saW5lIGxvY2F0aW9uX3QKIENPTUJJTkVfTE9DQVRJT05fREFUQSAoY2xhc3MgbGlu ZV9tYXBzICpzZXQsCiAJCSAgICAgICBsb2NhdGlvbl90IGxvYywKIAkJICAgICAgIHNvdXJjZV9y YW5nZSBzcmNfcmFuZ2UsCi0JCSAgICAgICB2b2lkICpibG9jaykKKwkJICAgICAgIHZvaWQgKmJs b2NrLAorCQkgICAgICAgdW5zaWduZWQgZGlzY3JpbWluYXRvcikKIHsKLSAgcmV0dXJuIGdldF9j b21iaW5lZF9hZGhvY19sb2MgKHNldCwgbG9jLCBzcmNfcmFuZ2UsIGJsb2NrKTsKKyAgcmV0dXJu IGdldF9jb21iaW5lZF9hZGhvY19sb2MgKHNldCwgbG9jLCBzcmNfcmFuZ2UsIGJsb2NrLCBkaXNj cmltaW5hdG9yKTsKIH0KIAogZXh0ZXJuIHZvaWQgcmVidWlsZF9sb2NhdGlvbl9hZGhvY19odGFi IChjbGFzcyBsaW5lX21hcHMgKik7CmRpZmYgLS1naXQgYS9saWJjcHAvbGV4LmNjIGIvbGliY3Bw L2xleC5jYwppbmRleCA1MjhkNTk4YWViOS4uNzNmMTUwYjBlYTMgMTAwNjQ0Ci0tLSBhL2xpYmNw cC9sZXguY2MKKysrIGIvbGliY3BwL2xleC5jYwpAQCAtMTM1OSw3ICsxMzU5LDggQEAgZ2V0X2xv Y2F0aW9uX2Zvcl9ieXRlX3JhbmdlX2luX2N1cl9saW5lIChjcHBfcmVhZGVyICpwZmlsZSwKICAg bG9jYXRpb25fdCBjb21iaW5lZF9sb2MgPSBDT01CSU5FX0xPQ0FUSU9OX0RBVEEgKHBmaWxlLT5s aW5lX3RhYmxlLAogCQkJCQkJICAgc3RhcnRfbG9jLAogCQkJCQkJICAgc3JjX3JhbmdlLAotCQkJ CQkJICAgTlVMTCk7CisJCQkJCQkgICBOVUxMLAorCQkJCQkJICAgMCk7CiAgIHJldHVybiBjb21i aW5lZF9sb2M7CiB9CiAKQEAgLTE4OTUsNyArMTg5Niw3IEBAIHdhcm5fYWJvdXRfbm9ybWFsaXph dGlvbiAoY3BwX3JlYWRlciAqcGZpbGUsCiAJCQkJCSAgIENQUF9CVUZfQ09MVU1OIChwZmlsZS0+ YnVmZmVyLAogCQkJCQkJCSAgIHBmaWxlLT5idWZmZXItPmN1cikpOwogCSAgbG9jID0gQ09NQklO RV9MT0NBVElPTl9EQVRBIChwZmlsZS0+bGluZV90YWJsZSwKLQkJCQkgICAgICAgbG9jLCB0b2tf cmFuZ2UsIE5VTEwpOworCQkJCSAgICAgICBsb2MsIHRva19yYW5nZSwgTlVMTCwgMCk7CiAJfQog CiAgICAgICBlbmNvZGluZ19yaWNoX2xvY2F0aW9uIHJpY2hfbG9jIChwZmlsZSwgbG9jKTsKQEAg LTQwOTksNyArNDEwMCw3IEBAIF9jcHBfbGV4X2RpcmVjdCAoY3BwX3JlYWRlciAqcGZpbGUpCiAK ICAgICAgIHJlc3VsdC0+c3JjX2xvYyA9IENPTUJJTkVfTE9DQVRJT05fREFUQSAocGZpbGUtPmxp bmVfdGFibGUsCiAJCQkJCSAgICAgICByZXN1bHQtPnNyY19sb2MsCi0JCQkJCSAgICAgICB0b2tf cmFuZ2UsIE5VTEwpOworCQkJCQkgICAgICAgdG9rX3JhbmdlLCBOVUxMLCAwKTsKICAgICB9CiAK ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL2xpYmNwcC9saW5lLW1hcC5jYyBiL2xpYmNw cC9saW5lLW1hcC5jYwppbmRleCA2MjA3N2MzODU3Yy4uZTE3ZDEwOWQ5ZjEgMTAwNjQ0Ci0tLSBh L2xpYmNwcC9saW5lLW1hcC5jYworKysgYi9saWJjcHAvbGluZS1tYXAuY2MKQEAgLTY3LDcgKzY3 LDggQEAgbG9jYXRpb25fYWRob2NfZGF0YV9oYXNoIChjb25zdCB2b2lkICpsKQogICByZXR1cm4g KChoYXNodmFsX3QpIGxiLT5sb2N1cwogCSAgKyAoaGFzaHZhbF90KSBsYi0+c3JjX3JhbmdlLm1f c3RhcnQKIAkgICsgKGhhc2h2YWxfdCkgbGItPnNyY19yYW5nZS5tX2ZpbmlzaAotCSAgKyAoc2l6 ZV90KSBsYi0+ZGF0YSk7CisJICArIChzaXplX3QpIGxiLT5kYXRhCisJICArIGxiLT5kaXNjcmlt aW5hdG9yKTsKIH0KIAogLyogQ29tcGFyZSBmdW5jdGlvbiBmb3IgbG9jYXRpb25fYWRob2NfZGF0 YSBoYXNodGFibGUuICAqLwpAQCAtODIsNyArODMsOCBAQCBsb2NhdGlvbl9hZGhvY19kYXRhX2Vx IChjb25zdCB2b2lkICpsMSwgY29uc3Qgdm9pZCAqbDIpCiAgIHJldHVybiAobGIxLT5sb2N1cyA9 PSBsYjItPmxvY3VzCiAJICAmJiBsYjEtPnNyY19yYW5nZS5tX3N0YXJ0ID09IGxiMi0+c3JjX3Jh bmdlLm1fc3RhcnQKIAkgICYmIGxiMS0+c3JjX3JhbmdlLm1fZmluaXNoID09IGxiMi0+c3JjX3Jh bmdlLm1fZmluaXNoCi0JICAmJiBsYjEtPmRhdGEgPT0gbGIyLT5kYXRhKTsKKwkgICYmIGxiMS0+ ZGF0YSA9PSBsYjItPmRhdGEKKwkgICYmIGxiMS0+ZGlzY3JpbWluYXRvciA9PSBsYjItPmRpc2Ny aW1pbmF0b3IpOwogfQogCiAvKiBVcGRhdGUgdGhlIGhhc2h0YWJsZSB3aGVuIGxvY2F0aW9uX2Fk aG9jX2RhdGEgaXMgcmVhbGxvY2F0ZWQuICAqLwpAQCAtMTE2LDEzICsxMTgsMTcgQEAgc3RhdGlj IGJvb2wKIGNhbl9iZV9zdG9yZWRfY29tcGFjdGx5X3AgKGxpbmVfbWFwcyAqc2V0LAogCQkJICAg bG9jYXRpb25fdCBsb2N1cywKIAkJCSAgIHNvdXJjZV9yYW5nZSBzcmNfcmFuZ2UsCi0JCQkgICB2 b2lkICpkYXRhKQorCQkJICAgdm9pZCAqZGF0YSwKKwkJCSAgIHVuc2lnbmVkIGRpc2NyaW1pbmF0 b3IpCiB7CiAgIC8qIElmIHRoZXJlJ3MgYW4gYWQtaG9jIHBvaW50ZXIsIHdlIGNhbid0IHN0b3Jl IGl0IGRpcmVjdGx5IGluIHRoZQogICAgICBsb2NhdGlvbl90LCB3ZSBuZWVkIHRoZSBsb29rYXNp ZGUuICAqLwogICBpZiAoZGF0YSkKICAgICByZXR1cm4gZmFsc2U7CiAKKyAgaWYgKGRpc2NyaW1p bmF0b3IgIT0gMCkKKyAgICByZXR1cm4gZmFsc2U7CisKICAgLyogV2Ugb25seSBzdG9yZSByYW5n ZXMgdGhhdCBiZWdpbiBhdCB0aGUgbG9jdXMgYW5kIHRoYXQgYXJlIHN1ZmZpY2llbnRseQogICAg ICAic2FuZSIuICAqLwogICBpZiAoc3JjX3JhbmdlLm1fc3RhcnQgIT0gbG9jdXMpCkBAIC0xNTcs NyArMTYzLDggQEAgbG9jYXRpb25fdAogZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAobGluZV9tYXBz ICpzZXQsCiAJCQlsb2NhdGlvbl90IGxvY3VzLAogCQkJc291cmNlX3JhbmdlIHNyY19yYW5nZSwK LQkJCXZvaWQgKmRhdGEpCisJCQl2b2lkICpkYXRhLAorCQkJdW5zaWduZWQgZGlzY3JpbWluYXRv cikKIHsKICAgc3RydWN0IGxvY2F0aW9uX2FkaG9jX2RhdGEgbGI7CiAgIHN0cnVjdCBsb2NhdGlv bl9hZGhvY19kYXRhICoqc2xvdDsKQEAgLTE3NSw3ICsxODIsNyBAQCBnZXRfY29tYmluZWRfYWRo b2NfbG9jIChsaW5lX21hcHMgKnNldCwKIAkJICB8fCBwdXJlX2xvY2F0aW9uX3AgKHNldCwgbG9j dXMpKTsKIAogICAvKiBDb25zaWRlciBzaG9ydC1yYW5nZSBvcHRpbWl6YXRpb24uICAqLwotICBp ZiAoY2FuX2JlX3N0b3JlZF9jb21wYWN0bHlfcCAoc2V0LCBsb2N1cywgc3JjX3JhbmdlLCBkYXRh KSkKKyAgaWYgKGNhbl9iZV9zdG9yZWRfY29tcGFjdGx5X3AgKHNldCwgbG9jdXMsIHNyY19yYW5n ZSwgZGF0YSwgZGlzY3JpbWluYXRvcikpCiAgICAgewogICAgICAgLyogVGhlIGxvdyBiaXRzIG91 Z2h0IHRvIGJlIGNsZWFyLiAgKi8KICAgICAgIGxpbmVtYXBfYXNzZXJ0IChwdXJlX2xvY2F0aW9u X3AgKHNldCwgbG9jdXMpKTsKQEAgLTE5NSwxNSArMjAyLDE2IEBAIGdldF9jb21iaW5lZF9hZGhv Y19sb2MgKGxpbmVfbWFwcyAqc2V0LAogICAgICB3aGVuIGxvY3VzID09IHN0YXJ0ID09IGZpbmlz aCAoYW5kIGRhdGEgaXMgTlVMTCkuICAqLwogICBpZiAobG9jdXMgPT0gc3JjX3JhbmdlLm1fc3Rh cnQKICAgICAgICYmIGxvY3VzID09IHNyY19yYW5nZS5tX2ZpbmlzaAotICAgICAgJiYgIWRhdGEp CisgICAgICAmJiAhZGF0YSAmJiBkaXNjcmltaW5hdG9yID09IDApCiAgICAgcmV0dXJuIGxvY3Vz OwogCi0gIGlmICghZGF0YSkKKyAgaWYgKCFkYXRhICYmIGRpc2NyaW1pbmF0b3IgPT0gMCkKICAg ICBzZXQtPm51bV91bm9wdGltaXplZF9yYW5nZXMrKzsKIAogICBsYi5sb2N1cyA9IGxvY3VzOwog ICBsYi5zcmNfcmFuZ2UgPSBzcmNfcmFuZ2U7CiAgIGxiLmRhdGEgPSBkYXRhOworICBsYi5kaXNj cmltaW5hdG9yID0gZGlzY3JpbWluYXRvcjsKICAgc2xvdCA9IChzdHJ1Y3QgbG9jYXRpb25fYWRo b2NfZGF0YSAqKikKICAgICAgIGh0YWJfZmluZF9zbG90IChzZXQtPmxvY2F0aW9uX2FkaG9jX2Rh dGFfbWFwLmh0YWIsICZsYiwgSU5TRVJUKTsKICAgaWYgKCpzbG90ID09IE5VTEwpCkBAIC0yNDgs NiArMjU2LDEzIEBAIGdldF9kYXRhX2Zyb21fYWRob2NfbG9jIChjb25zdCBjbGFzcyBsaW5lX21h cHMgKnNldCwgbG9jYXRpb25fdCBsb2MpCiAgIHJldHVybiBzZXQtPmxvY2F0aW9uX2FkaG9jX2Rh dGFfbWFwLmRhdGFbbG9jICYgTUFYX0xPQ0FUSU9OX1RdLmRhdGE7CiB9CiAKK3Vuc2lnbmVkCitn ZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xvYyAoY29uc3QgY2xhc3MgbGluZV9tYXBzICpz ZXQsIGxvY2F0aW9uX3QgbG9jKQoreworICBsaW5lbWFwX2Fzc2VydCAoSVNfQURIT0NfTE9DIChs b2MpKTsKKyAgcmV0dXJuIHNldC0+bG9jYXRpb25fYWRob2NfZGF0YV9tYXAuZGF0YVtsb2MgJiBN QVhfTE9DQVRJT05fVF0uZGlzY3JpbWluYXRvcjsKK30KKwogLyogUmV0dXJuIHRoZSBsb2NhdGlv biBmb3IgdGhlIGFkaG9jIGxvYy4gICovCiAKIGxvY2F0aW9uX3QKQEAgLTI5Myw2ICszMDgsMTUg QEAgZ2V0X3JhbmdlX2Zyb21fbG9jIChsaW5lX21hcHMgKnNldCwKICAgcmV0dXJuIHNvdXJjZV9y YW5nZTo6ZnJvbV9sb2NhdGlvbiAobG9jKTsKIH0KIAordW5zaWduZWQKK2dldF9kaXNjcmltaW5h dG9yX2Zyb21fbG9jIChsaW5lX21hcHMgKnNldCwKKwkJCSAgICBsb2NhdGlvbl90IGxvYykKK3sK KyAgaWYgKElTX0FESE9DX0xPQyAobG9jKSkKKyAgICByZXR1cm4gZ2V0X2Rpc2NyaW1pbmF0b3Jf ZnJvbV9hZGhvY19sb2MgKHNldCwgbG9jKTsKKyAgcmV0dXJuIDA7Cit9CisKIC8qIEdldCB3aGV0 aGVyIGxvY2F0aW9uIExPQyBpcyBhICJwdXJlIiBsb2NhdGlvbiwgb3IKICAgIHdoZXRoZXIgaXQg aXMgYW4gYWQtaG9jIGxvY2F0aW9uLCBvciBlbWJlZHMgcmFuZ2UgaW5mb3JtYXRpb24uICAqLwog Ci0tIAoyLjI1LjEKCg== --_002_CY5PR21MB35429A8B20254344DFE44C2791439CY5PR21MB3542namp_--