From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from na01-obe.outbound.protection.outlook.com (unknown [52.101.56.21]) by sourceware.org (Postfix) with ESMTPS id 2F8543858C83 for ; Thu, 1 Sep 2022 20:49:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2F8543858C83 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=NaPPWRPIze2vmQSpN6GnQYX4yjHUU+ocuQeSNiSTqifd0jm/NeGWM/tmXCGE1uLXgzwrg/+1jtK4/+GunKvdjsP3yKJqLK8xIJG7fSZR5h0ATS7RIGH5+RTr6SplEIjuaI8tSZ+VCKdhESF0IAoHjnvJD5R1piOrhqO5NHhCgggb4BueT+99onjT7yUreFppFS3yZT3qF8kYGnbICSrj8TP3wzuIcJnTyl5tvxI3Ldu+HVHJg4JpFVRW8ahgjlYJBznVV5BEZIP9L0DVkZcP3LGI9HhXFHxJlp50mz5bhfqOh5puHrqej4XxLJ2JeN5snIDczpMDROkr/sGzjqsUMw== 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=IoHr2/C1kHSpqfr73g48hC0XX92lKCLi3CtPmJd9nEA=; b=JOauMNonzsA7/rFNlxLiHR8wD4L6ON7vMz8AgFlo3O0lM5f5JNtkcUb2BJ1M15+XUQkgrONke26UFUy7xtLJJndukS/7LKoCUtGOTBE9sJdgKleLlyTOMpi5xwPqYnWiDjTFwl6d9SMi+RBbN4FjYqG0CttCuXdb0gmpBD/atZAVRkMv9xDY4QJXEeVzaYYjZ72VKLLSljbh7eWNWAOcVy1kllJA4vNCvcYPIn/a88mFMX61gyu3TYRrmrwqL8S5OJI0W1Q3ts7L1XKSs5jEmHw1ZLt4D2v5ijVOSv8ngWPjVOdKSiYZFVhTGwvpF9/61E9exIoPxvIxrNTK3B8AeQ== 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=IoHr2/C1kHSpqfr73g48hC0XX92lKCLi3CtPmJd9nEA=; b=iUHOiugd4YWEH85Z73460RABpmF25+fgDHOrpv/1Pt5qWMoNgNNi3F0JBLTqftEeDV17I9rgduY0crjDxNCaKEzV8WVadtfJxrXuXU0swtfGfyUWi3Fdjv17P9iSZlvTvg8AWWvfwD+HzAGheO/GKo4o7FHXxxiEcpqMqRDy/DE= Received: from CY5PR21MB3542.namprd21.prod.outlook.com (2603:10b6:930:d::7) by LV2PR21MB3230.namprd21.prod.outlook.com (2603:10b6:408:173::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.5; Thu, 1 Sep 2022 20:48:56 +0000 Received: from CY5PR21MB3542.namprd21.prod.outlook.com ([fe80::2641:fb3d:291c:71f9]) by CY5PR21MB3542.namprd21.prod.outlook.com ([fe80::2641:fb3d:291c:71f9%8]) with mapi id 15.20.5612.006; Thu, 1 Sep 2022 20:48:56 +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+5wB06iNLAC9aDsgAK1N76A Date: Thu, 1 Sep 2022 20:48:56 +0000 Message-ID: References: <5d9b2795-8a75-e4ea-07b1-856e448064dc@redhat.com> In-Reply-To: <5d9b2795-8a75-e4ea-07b1-856e448064dc@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=ba0f090b-fa94-4e6e-9cec-a7b5c6715a1a;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-01T20:44:10Z;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_|LV2PR21MB3230:EE_ x-ms-office365-filtering-correlation-id: 875be0c8-afd6-432b-2978-08da8c5b6345 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8ckwWMqnZfDPB7iQZd2upEH9GUwTxhrWuGlaO7LfU0ox0vU5ARdiNG+/3Cjs4VWlxoInNdu0eEuAg/htYVNMEdgjFk4HjEzIu9I9/d+UApRcNctDh6Aqli4T7CvR9RpBonkJ+cx1OQEgeOXpR7NScv8xXKIthfNCiTRv7gaBc/QZMvx+zPiPRJf9NlJfC3QvyoLbUBKHBd0ff6Ctt4MBR9ivbRzcYHRNWtKA1+CiIIqFKlAWwlWt/S5gT8WoD+uEUR3PeesP7lcgJN2zCBEptwYSuOTPGbCHbCu9kV072ZX2A9rh9JiIbL36f3SlcJajxuNGDUwTzRawBqIKYvBg8FapRcF3cnA8mkPuJ9OWIQn0SfxnNDjmUOUe2+F0tGlYdbwlSo01Y4F26stQM8MYSF+swnJ5wXVhH+8m3YfO90wQVSyqT2cDlZQY4bYzqm8F7Ss36F6pnl+IGWomd/8R1cGLKdWtF6MB51f6zy65lp5CWgWlezmnJkD5UeUOjD4pQtOX7SUmf91wLlk8308wWeE9DPST2gpA++OpSSGqjZsBfG8eDnkzPZRL1g8eIM2oCW4tCl6+mR86DtWArYGP62vRnOdSrON7DQ72pI2CyukHFcmyD0HkL6Sbq8dGvhxVY5lwqhBouPtn1qctjLRl6dST4BPHz/6qF1JsdVQ7b0Ku0kEee5Z4rQK50/+FwZqhPgHLKXA6vhmenuD05m/PihQzFm9BYIvAdXM0qJ4u6U/Zvk8qEFREi/BwX9m8Q9nN7AnAMMhjhQJ+o/QBdVl1srj3O06+Q8XiR0a8jYKB2RGO+kUB5SXwhIvCKLb8c1z0BlZKLKK55UAABRnkEAfeq7A+6KMqk08MpneE19xRofU= 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)(39860400002)(366004)(396003)(376002)(136003)(346002)(451199009)(6506007)(4326008)(76116006)(66446008)(8676002)(64756008)(66946007)(71200400001)(66556008)(478600001)(966005)(110136005)(55016003)(10290500003)(54906003)(316002)(8990500004)(122000001)(8936002)(52536014)(2906002)(5660300002)(38100700002)(66476007)(33656002)(86362001)(82950400001)(7696005)(82960400001)(38070700005)(99936003)(186003)(53546011)(41300700001)(9686003)(83380400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?F9YPD+tmBO90KIvRWjMwGKjKYtERL//CD6JYxX5DEaaBiyunt+tuYL0BIECt?= =?us-ascii?Q?2X7yGOAOFKLTAWdZkvwa+INjntJ0NCVS6wHx0Ki5TBKXD9FWiWqa3lfdLHlp?= =?us-ascii?Q?Pmi4pI31Z2LF2lKnyZd6zzew+utJiMpNlYc8tOjbrIz2vGY0mhq0Qyhb22tw?= =?us-ascii?Q?BGwKZzfrwu1MrAlvaLI0Zh5TlltSeN8LG2z/QKhtEVEM8Mss0lHDWWpXFHW0?= =?us-ascii?Q?CqvwJbEVsVGLobsn1LJjzhb8xn3dPtEwg9JuCgUZJEmckEklO7fOLwojnfQX?= =?us-ascii?Q?RiWOXiJD40qjmnqQjWe1VKBDIJuydPvIdCtsrHpEr8kkIeLWLhJZu4z88DHE?= =?us-ascii?Q?AM78Uw4np+WJokhHJnD7b9VywyhFhy+fcZPmRhjFXrqkFemLdGePV+DKsnEW?= =?us-ascii?Q?IFCWeruAk96CM9zLBKtMwuek+ORIlVpfno8ScxVUaIsofw61wfUqFqSk/lNy?= =?us-ascii?Q?hQA3hZrthiff8UUVKYFnB+ysc3+BLxuyNL7rdYdjNmkeBTzrnuRBJNaAp+cJ?= =?us-ascii?Q?zz8FUstLl8OMoBcY1tQsbvEG4pgwXrg+mmrFtoPBQj0gVzBnUjL4SpixNBtr?= =?us-ascii?Q?4l/RZ5qOJHcdU1djsw9JZI/Hx3a9ixLBOSeWiXP4E/TTEg57DAfW/Jij74mo?= =?us-ascii?Q?GYQ0AcFtDwQ78c4R2RwjqJItDVQ/36WpcLjr8JgRa7PkHNnlZld58bQ05O8O?= =?us-ascii?Q?ruqdoKrmhH5y/UcK+HtIMMESklQ7VN7nojfz0ZWA+fbn8uvE4HYkn8oO4jbq?= =?us-ascii?Q?ZbuXnbnKTx3OMm3ALVbyofHHCE0ltE1WLPnsIvjcduw5uw+riDlAumx9c1pY?= =?us-ascii?Q?8w1wZMi6Aq78uHwH8r9M/chHNgVoqFEsFEz33tfFn+wPM73Qc1XYNMo/a057?= =?us-ascii?Q?tvkaCKy8EhPvBIRmzW+ogcTgzXIxhdcq9snhxD/CZ8gHtRM0gN+pW9n7BOMg?= =?us-ascii?Q?jUDMq8LCxKgyWxcBfSj52oDtOorI5E1HPR/hLbSJDx1D6aEhQGjjWWSNuoH1?= =?us-ascii?Q?G+V4rXP9zXyK8tRm9rJfMX1TSyzMCjTQSuUCRvSVBbcDmGkdvGqNy7JJIVMi?= =?us-ascii?Q?sXHerRcePdGIUpfXVPpcQu72EK9DgsPoaNs5lFsFDXaunVIG/9mQJ0Du9Iit?= =?us-ascii?Q?zbzev3zMCLat1CY0CIyntLYhjLskOTKdzy9b6rDG8HzCNO+iz1c6nd2l+PME?= =?us-ascii?Q?AJIc3XuXfsdFA5ZGb0cYA5WtcHU6pHFJrj6vXbPh3WqzLmO6zHfsAp4wKAK0?= =?us-ascii?Q?n8N9SBxM1ChZMu426kuolrp5SbHGu5j6uFrNjfWY8nqmuA2ZfEGCFLnZD6Vt?= =?us-ascii?Q?jL+J1iWrGUrEMuXEL0+tsnwTohCTwQBw7UUNvuaKTqJtrDBynwrsAFkZ8V64?= =?us-ascii?Q?z08A2zctQ0qzdfo5Ydo8NrzyK2FbzDuIx2/yNWlTg1OwpHKkmO3Es0zwONld?= =?us-ascii?Q?jSobhtPCGeemu9TXHCaFx1BzjwA1kAvkh/KSMBeixjZLTiIjvWFH+aeMZyYs?= =?us-ascii?Q?3C/DKAQLu+Zv1H4+dQyJvktv72mLymerqrujRHj2CfhdsTbJ6svQTjtH+UoL?= =?us-ascii?Q?uDtsLvBr/gOVmHmd6nlE+a38rcEcN4tQhJ7vaCyhPqeWphsvwU/VSDl1fux6?= =?us-ascii?Q?ytzH6rJC9tixcwX7KEPL07EHqWqgniyhTkjYesJt6qpF?= Content-Type: multipart/mixed; boundary="_002_CY5PR21MB3542D0F20CA6FABD7B3F3953917B9CY5PR21MB3542namp_" MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR21MB3230 X-Spam-Status: No, score=-2.6 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,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_CY5PR21MB3542D0F20CA6FABD7B3F3953917B9CY5PR21MB3542namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Jason, Thank you for your review. You are correct, we only need to check has_discr= iminator for the statement that's on the same line. I updated the patch (attached). Thanks, Eugene -----Original Message----- From: Jason Merrill =20 Sent: Thursday, August 18, 2022 6:55 PM To: Eugene Rozenfeld ; gcc-patches@gcc.gnu.= org Cc: Andi Kleen ; Jan Hubicka Subject: [EXTERNAL] Re: [PING][PATCH] Add instruction level discriminator s= upport. On 8/3/22 17:25, Eugene Rozenfeld wrote: > One more ping for this patch=20 > https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgcc. > gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F596065.html&data=3D0 > 5%7C01%7Ceugene.rozenfeld%40microsoft.com%7C3e9ebe6dd5b14fe4471808da81 > 85dc68%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637964709325691951 > %7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6I > k1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3DK%2BMx6jelnED3n%2Be2dT > DYAPOqZZ8Zlsd2%2FyPJ0qib5%2FM%3D&reserved=3D0 >=20 > CC Jason since this changes discriminators emitted in dwarf. >=20 > Thanks, >=20 > Eugene >=20 > -----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. >=20 > Another ping for https://nam06.safelinks.protection.outlook.com/?url=3Dht= tps%3A%2F%2Fgcc.gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F596065.html= &data=3D05%7C01%7Ceugene.rozenfeld%40microsoft.com%7C3e9ebe6dd5b14fe447= 1808da8185dc68%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637964709325691= 951%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1= haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3DK%2BMx6jelnED3n%2Be2dTDYAPO= qZZ8Zlsd2%2FyPJ0qib5%2FM%3D&reserved=3D0 . >=20 > I got a review from Andi (https://nam06.safelinks.protection.outlook.com/= ?url=3Dhttps%3A%2F%2Fgcc.gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F59= 6549.html&data=3D05%7C01%7Ceugene.rozenfeld%40microsoft.com%7C3e9ebe6dd= 5b14fe4471808da8185dc68%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637964= 709325691951%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLC= JBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3Dse6x1LD0GQyFz%2B28= gdVqsye3Aw8kPoMRhVQO1BSPg6I%3D&reserved=3D0) but I also need a review f= rom someone who can approve the changes. >=20 > Thanks, >=20 > Eugene >=20 > -----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. >=20 > Hello, >=20 > I'd like to ping this patch:=20 > https://nam06.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fgcc. > gnu.org%2Fpipermail%2Fgcc-patches%2F2022-June%2F596065.html&data=3D0 > 5%7C01%7Ceugene.rozenfeld%40microsoft.com%7C3e9ebe6dd5b14fe4471808da81 > 85dc68%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637964709325691951 > %7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6I > k1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3DK%2BMx6jelnED3n%2Be2dT > DYAPOqZZ8Zlsd2%2FyPJ0qib5%2FM%3D&reserved=3D0 >=20 > Thanks, >=20 > Eugene >=20 > -----Original Message----- > From: Gcc-patches=20 > 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. >=20 > This is the first in a series of patches to enable discriminator support = in AutoFDO. >=20 > 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, later= optimizations could move statements between basic blocks making correlatio= n during AutoFDO compilation unreliable. Tracking per statement also allows= us to assign different discriminators to multiple function calls in the sa= me basic block. A subsequent patch will add that support. >=20 > 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 differe= nt approach. In Dehao's work special (normally unused) location ids and sid= e tables were used to keep track of locations with discriminators. Things h= ave changed since then and I don't think we have unused location ids anymor= e. Instead, I made discriminators a part of ad-hoc locations. >=20 > The difference from Dehao's work also includes support for discriminator = reading/writing in lto streaming and in modules. >=20 > Tested on x86_64-pc-linux-gnu. > @@ -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)))) I think you want to check has_discriminator only for the one of first or la= st that we find to have the same line as locus above? Incidentally, I wonder why we ignore column number here, but that's not an = issue for this patch. Jason --_002_CY5PR21MB3542D0F20CA6FABD7B3F3953917B9CY5PR21MB3542namp_ 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=32307; creation-date="Thu, 02 Jun 2022 01:56:06 GMT"; modification-date="Thu, 01 Sep 2022 20:48:55 GMT" Content-Transfer-Encoding: base64 RnJvbSA0ZGExZTI1OWFjYmE4ZWMwZjhhZGJmOGFkMTY3Zjc1YTRhMGVjNWI0IE1vbiBTZXAgMTcg 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 dGlvbiBoYXMgYSBkaXNjcmltaW5hdG9yLgoJKGdldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jdXMp OiBOZXcgZnVuY3Rpb24gdG8gZ2V0IHRoZSBkaXNjcmltaW5hdG9yCglmcm9tIGEgbG9jYXRpb24u CgkqIGlucHV0Lmg6IERlY2xhcmF0aW9ucyBvZiBuZXcgZnVuY3Rpb25zIGFuZCBkZWZpbml0aW9u IG9mCglMT0NBVElPTl9ESVNDUklNSU5BVE9SLgoJKiBsdG8tc3RyZWFtZXItaW4uY2MgKGNtcF9s b2MpOiBVc2UgZGlzY3JpbWluYXRvcnMgaW4gbG9jYXRpb24gY29tcGFyaXNvbi4KCShhcHBseV9s b2NhdGlvbl9jYWNoZSk6IEtlZXAgdHJhY2sgb2YgY3VycmVudCBkaXNjcmltaW5hdG9yLgoJKGlu cHV0X2xvY2F0aW9uX2FuZF9ibG9jayk6IFJlYWQgZGlzY3JpbWluYXRvciBmcm9tIHN0cmVhbS4K CSogbHRvLXN0cmVhbWVyLW91dC5jYyAoY2xlYXJfbGluZV9pbmZvKTogU2V0IGN1cnJlbnQgZGlz Y3JpbWluYXRvciB0bwoJVUlOVF9NQVguCgkobHRvX291dHB1dF9sb2NhdGlvbl8xKTogV3JpdGUg ZGlzY3JpbWluYXRvciB0byBzdHJlYW0uCgkqIGx0by1zdHJlYW1lci5oOiBBZGQgZGlzY3JpbWlu YXRvciB0byBjYWNoZWRfbG9jYXRpb24uCglBZGQgY3VycmVudF9kaXNjciB0byBsdG9fbG9jYXRp b25fY2FjaGUuCglBZGQgY3VycmVudF9kaXNjciB0byBvdXRwdXRfYmxvY2suCgkqIHByaW50LXJ0 bC5jYyAocHJpbnRfcnR4X29wZXJhbmRfY29kZV9pKTogUHJpbnQgZGlzY3JpbWluYXRvci4KCSog cnRsLmg6IEFkZCBleHRlcm4gZGVjbGFyYXRpb24gb2YgaW5zbl9kaXNjcmltaW5hdG9yLgoJKiB0 cmVlLWNmZy5jYyAoYXNzaWduX2Rpc2NyaW1pbmF0b3IpOiBOZXcgZnVuY3Rpb24gdG8gYXNzaWdu IGEgdW5pcXVlCglkaXNjcmltaW5hdG9yIHZhbHVlIHRvIGFsbCBzdGF0ZW1lbnRzIGluIGEgYmFz aWMgYmxvY2sgdGhhdCBoYXZlIHRoZSBnaXZlbgoJbGluZSBudW1iZXIuCgkoYXNzaWduX2Rpc2Ny aW1pbmF0b3JzKTogQXNzaWduIGRpc2NyaW1pbmF0b3JzIHRvIHN0YXRlbWVudCBsb2NhdGlvbnMu CgkqIHRyZWUtcHJldHR5LXByaW50LmNjIChkdW1wX2xvY2F0aW9uKTogRHVtcCBkaXNjcmltaW5h dG9ycy4KCSogdHJlZS5jYyAoc2V0X2Jsb2NrKTogUHJlc2VydmUgZGlzY3JpbWluYXRvciB3aGVu IHNldHRpbmcgYmxvY2suCgkoc2V0X3NvdXJjZV9yYW5nZSk6IFByZXNlcnZlIGRpc2NyaW1pbmF0 b3Igd2hlbiBzZXR0aW5nIHNvdXJjZSByYW5nZS4KCmxpYmNwcC9DaGFuZ2VMb2c6CgoJKiBpbmNs dWRlL2xpbmUtbWFwLmg6IEFkZCBkaXNjcmltaW5hdG9yIHRvIGxvY2F0aW9uX2FkaG9jX2RhdGEu CgkoZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyk6IEFkZCBkaXNjcmltaW5hdG9yIHBhcmFtZXRlci4K CShnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xvYyk6IEFkZCBleHRlcm5hbCBkZWNsYXJh dGlvbi4KCShnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xvYyk6IEFkZCBleHRlcm5hbCBkZWNsYXJh dGlvbi4KCShDT01CSU5FX0xPQ0FUSU9OX0RBVEEpOiBBZGQgZGlzY3JpbWluYXRvciBwYXJhbWV0 ZXIuCgkqIGxleC5jYyAoZ2V0X2xvY2F0aW9uX2Zvcl9ieXRlX3JhbmdlX2luX2N1cl9saW5lKSBQ YXNzIDAgZGlzY3JpbWluYXRvcgoJaW4gYSBjYWxsIHRvIENPTUJJTkVfTE9DQVRJT05fREFUQS4K CSh3YXJuX2Fib3V0X25vcm1hbGl6YXRpb24pOiBQYXNzIDAgZGlzY3JpbWluYXRvciBpbiBhIGNh bGwgdG8KCUNPTUJJTkVfTE9DQVRJT05fREFUQS4KCShfY3BwX2xleF9kaXJlY3QpOiBQYXNzIDAg ZGlzY3JpbWluYXRvciBpbiBhIGNhbGwgdG8KCUNPTUJJTkVfTE9DQVRJT05fREFUQS4KCSogbGlu ZS1tYXAuY2MgKGxvY2F0aW9uX2FkaG9jX2RhdGFfaGFzaCk6IFVzZSBkaXNjcmltaW5hdG9yIGNv bXB1dGUKCWxvY2F0aW9uX2FkaG9jX2RhdGEgaGFzaC4KCShsb2NhdGlvbl9hZGhvY19kYXRhX2Vx KTogVXNlIGRpc2NyaW1pbmF0b3Igd2hlbiBjb21wYXJpbmcKCWxvY2F0aW9uX2FkaG9jX2RhdGEu CgkoY2FuX2JlX3N0b3JlZF9jb21wYWN0bHlfcCk6IENoZWNrIGRpc2NyaW1pbmF0b3IgdG8gZGV0 ZXJtaW5lCgljb21wYWN0IHN0b3JhZ2UuCgkoZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyk6IEFkZCBk aXNjcmltaW5hdG9yIHBhcmFtZXRlci4KCShnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xv Yyk6IE5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIGRpc2NyaW1pbmF0b3IKCWZyb20gYW4gYWQtaG9j IGxvY2F0aW9uLgoJKGdldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jKTogTmV3IGZ1bmN0aW9uIHRv IGdldCB0aGUgZGlzY3JpbWluYXRvcgoJZnJvbSBhIGxvY2F0aW9uLgoKZ2NjL3Rlc3RzdWl0ZS9D aGFuZ2VMb2c6CgoJKiBjLWMrKy1jb21tb24vdWJzYW4vcHI4NTIxMy5jOiBQYXNzIC1nbm8tc3Rh dGVtZW50LWZyb250aWVycy4KLS0tCiBnY2MvYmFzaWMtYmxvY2suaCAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgNSAtLS0KIGdjYy9jZmdob29rcy5jYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAxIC0KIGdjYy9jcC9tb2R1bGUuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICA1ICsrLQogZ2NjL2ZpbmFsLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjYg KysrKystLS0tLS0KIGdjYy9naW1wbGUtcHJldHR5LXByaW50LmNjICAgICAgICAgICAgICAgICB8 ICAyIC0KIGdjYy9naW1wbGUtc3RyZWFtZXItaW4uY2MgICAgICAgICAgICAgICAgICB8ICAxIC0K IGdjYy9naW1wbGUtc3RyZWFtZXItb3V0LmNjICAgICAgICAgICAgICAgICB8ICAxIC0KIGdjYy9p bnB1dC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDM2ICsrKysrKysrKysrKysr LQogZ2NjL2lucHV0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcgKysrCiBn Y2MvbHRvLXN0cmVhbWVyLWluLmNjICAgICAgICAgICAgICAgICAgICAgfCAyMSArKysrKysrKy0K IGdjYy9sdG8tc3RyZWFtZXItb3V0LmNjICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKwogZ2Nj L2x0by1zdHJlYW1lci5oICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKysKIGdjYy9wcmlu dC1ydGwuY2MgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICsrCiBnY2MvcnRsLmggICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiBnY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi91YnNhbi9wcjg1MjEzLmMgfCAgNyArKy0KIGdjYy90cmVlLWNmZy5jYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDUyICsrKysrKysrKysrKysrKysrLS0tLS0KIGdjYy90cmVl LXByZXR0eS1wcmludC5jYyAgICAgICAgICAgICAgICAgICB8ICA2ICsrKwogZ2NjL3RyZWUuY2Mg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrLS0KIGxpYmNwcC9pbmNsdWRl L2xpbmUtbWFwLmggICAgICAgICAgICAgICAgICB8IDEwICsrKy0tCiBsaWJjcHAvbGV4LmNjICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNyArLS0KIGxpYmNwcC9saW5lLW1hcC5jYyAg ICAgICAgICAgICAgICAgICAgICAgICB8IDM4ICsrKysrKysrKysrKystLS0KIDIxIGZpbGVzIGNo YW5nZWQsIDE5MyBpbnNlcnRpb25zKCspLCA1NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9n Y2MvYmFzaWMtYmxvY2suaCBiL2djYy9iYXNpYy1ibG9jay5oCmluZGV4IGM5ZDFmYzkxYmJiLi4x ZWFlMDNkMWFjYSAxMDA2NDQKLS0tIGEvZ2NjL2Jhc2ljLWJsb2NrLmgKKysrIGIvZ2NjL2Jhc2lj LWJsb2NrLmgKQEAgLTE0OCwxMSArMTQ4LDYgQEAgc3RydWN0IEdUWSgoY2hhaW5fbmV4dCAoIiVo Lm5leHRfYmIiKSwgY2hhaW5fcHJldiAoIiVoLnByZXZfYmIiKSkpIGJhc2ljX2Jsb2NrX2QKIAog ICAvKiBFeHBlY3RlZCBudW1iZXIgb2YgZXhlY3V0aW9uczogY2FsY3VsYXRlZCBpbiBwcm9maWxl LmNjLiAgKi8KICAgcHJvZmlsZV9jb3VudCBjb3VudDsKLQotICAvKiBUaGUgZGlzY3JpbWluYXRv ciBmb3IgdGhpcyBibG9jay4gIFRoZSBkaXNjcmltaW5hdG9yIGRpc3Rpbmd1aXNoZXMKLSAgICAg YW1vbmcgc2V2ZXJhbCBiYXNpYyBibG9ja3MgdGhhdCBzaGFyZSBhIGNvbW1vbiBsb2N1cywgYWxs b3dpbmcgZm9yCi0gICAgIG1vcmUgYWNjdXJhdGUgc2FtcGxlLWJhc2VkIHByb2ZpbGluZy4gICov Ci0gIGludCBkaXNjcmltaW5hdG9yOwogfTsKIAogLyogVGhpcyBlbnN1cmVzIHRoYXQgc3RydWN0 IGdpbXBsZV9iYl9pbmZvIGlzIHNtYWxsZXIgdGhhbgpkaWZmIC0tZ2l0IGEvZ2NjL2NmZ2hvb2tz LmNjIGIvZ2NjL2NmZ2hvb2tzLmNjCmluZGV4IGM2YWM5NTMyY2I4Li4yOWRlZDU3MDczNCAxMDA2 NDQKLS0tIGEvZ2NjL2NmZ2hvb2tzLmNjCisrKyBiL2djYy9jZmdob29rcy5jYwpAQCAtNTQxLDcg KzU0MSw2IEBAIHNwbGl0X2Jsb2NrXzEgKGJhc2ljX2Jsb2NrIGJiLCB2b2lkICppKQogICAgIHJl dHVybiBOVUxMOwogCiAgIG5ld19iYi0+Y291bnQgPSBiYi0+Y291bnQ7Ci0gIG5ld19iYi0+ZGlz Y3JpbWluYXRvciA9IGJiLT5kaXNjcmltaW5hdG9yOwogCiAgIGlmIChkb21faW5mb19hdmFpbGFi bGVfcCAoQ0RJX0RPTUlOQVRPUlMpKQogICAgIHsKZGlmZiAtLWdpdCBhL2djYy9jcC9tb2R1bGUu Y2MgYi9nY2MvY3AvbW9kdWxlLmNjCmluZGV4IGYyN2Y0ZDA5MWU1Li43MjY0YmNlYzQwYiAxMDA2 NDQKLS0tIGEvZ2NjL2NwL21vZHVsZS5jYworKysgYi9nY2MvY3AvbW9kdWxlLmNjCkBAIC0xNTc2 NCw2ICsxNTc2NCw4IEBAIG1vZHVsZV9zdGF0ZTo6d3JpdGVfbG9jYXRpb24gKGJ5dGVzX291dCAm c2VjLCBsb2NhdGlvbl90IGxvYykKIAlyYW5nZS5tX3N0YXJ0ID0gVU5LTk9XTl9MT0NBVElPTjsK ICAgICAgIHdyaXRlX2xvY2F0aW9uIChzZWMsIHJhbmdlLm1fc3RhcnQpOwogICAgICAgd3JpdGVf bG9jYXRpb24gKHNlYywgcmFuZ2UubV9maW5pc2gpOworICAgICAgdW5zaWduZWQgZGlzY3JpbWlu YXRvciA9IGdldF9kaXNjcmltaW5hdG9yX2Zyb21fYWRob2NfbG9jIChsaW5lX3RhYmxlLCBsb2Mp OworICAgICAgc2VjLnUgKGRpc2NyaW1pbmF0b3IpOwogICAgIH0KICAgZWxzZSBpZiAobG9jID49 IExJTkVNQVBTX01BQ1JPX0xPV0VTVF9MT0NBVElPTiAobGluZV90YWJsZSkpCiAgICAgewpAQCAt MTU4ODksOCArMTU4OTEsOSBAQCBtb2R1bGVfc3RhdGU6OnJlYWRfbG9jYXRpb24gKGJ5dGVzX2lu ICZzZWMpIGNvbnN0CiAJaWYgKHJhbmdlLm1fc3RhcnQgPT0gVU5LTk9XTl9MT0NBVElPTikKIAkg IHJhbmdlLm1fc3RhcnQgPSBsb2N1czsKIAlyYW5nZS5tX2ZpbmlzaCA9IHJlYWRfbG9jYXRpb24g KHNlYyk7CisJdW5zaWduZWQgZGlzY3JpbWluYXRvciA9IHNlYy51ICgpOwogCWlmIChsb2N1cyAh PSBsb2MgJiYgcmFuZ2UubV9zdGFydCAhPSBsb2MgJiYgcmFuZ2UubV9maW5pc2ggIT0gbG9jKQot CSAgbG9jdXMgPSBnZXRfY29tYmluZWRfYWRob2NfbG9jIChsaW5lX3RhYmxlLCBsb2N1cywgcmFu Z2UsIE5VTEwpOworCSAgbG9jdXMgPSBnZXRfY29tYmluZWRfYWRob2NfbG9jIChsaW5lX3RhYmxl LCBsb2N1cywgcmFuZ2UsIE5VTEwsIGRpc2NyaW1pbmF0b3IpOwogICAgICAgfQogICAgICAgYnJl YWs7CiAKZGlmZiAtLWdpdCBhL2djYy9maW5hbC5jYyBiL2djYy9maW5hbC5jYwppbmRleCAwMzUy Nzg2ZTQ5Yi4uNDAyMzExNmQ5OGUgMTAwNjQ0Ci0tLSBhL2djYy9maW5hbC5jYworKysgYi9nY2Mv ZmluYWwuY2MKQEAgLTEyNiwxOCArMTI2LDEwIEBAIHN0YXRpYyBpbnQgbGFzdF9jb2x1bW5udW07 CiAvKiBEaXNjcmltaW5hdG9yIHdyaXR0ZW4gdG8gYXNzZW1ibHkuICAqLwogc3RhdGljIGludCBs YXN0X2Rpc2NyaW1pbmF0b3I7CiAKLS8qIERpc2NyaW1pbmF0b3IgdG8gYmUgd3JpdHRlbiB0byBh c3NlbWJseSBmb3IgY3VycmVudCBpbnN0cnVjdGlvbi4KKy8qIENvbXB1dGUgZGlzY3JpbWluYXRv ciB0byBiZSB3cml0dGVuIHRvIGFzc2VtYmx5IGZvciBjdXJyZW50IGluc3RydWN0aW9uLgogICAg Tm90ZTogYWN0dWFsIHVzYWdlIGRlcGVuZHMgb24gbG9jX2Rpc2NyaW1pbmF0b3Jfa2luZCBzZXR0 aW5nLiAgKi8KLXN0YXRpYyBpbnQgZGlzY3JpbWluYXRvcjsKIHN0YXRpYyBpbmxpbmUgaW50IGNv bXB1dGVfZGlzY3JpbWluYXRvciAobG9jYXRpb25fdCBsb2MpOwogCi0vKiBEaXNjcmltaW5hdG9y IGlkZW50aWZ5aW5nIGN1cnJlbnQgYmFzaWMgYmxvY2sgYW1vbmcgb3RoZXJzIHNoYXJpbmcKLSAg IHRoZSBzYW1lIGxvY3VzLiAgKi8KLXN0YXRpYyBpbnQgYmJfZGlzY3JpbWluYXRvcjsKLQotLyog QmFzaWMgYmxvY2sgZGlzY3JpbWluYXRvciBmb3IgcHJldmlvdXMgaW5zdHJ1Y3Rpb24uICAqLwot c3RhdGljIGludCBsYXN0X2JiX2Rpc2NyaW1pbmF0b3I7Ci0KIC8qIEhpZ2hlc3QgbGluZSBudW1i ZXIgaW4gY3VycmVudCBibG9jay4gICovCiBzdGF0aWMgaW50IGhpZ2hfYmxvY2tfbGluZW51bTsK IApAQCAtMTY5Niw4ICsxNjg4LDcgQEAgZmluYWxfc3RhcnRfZnVuY3Rpb25fMSAocnR4X2luc24g KipmaXJzdHAsIEZJTEUgKmZpbGUsIGludCAqc2VlbiwKICAgbGFzdF9maWxlbmFtZSA9IExPQ0FU SU9OX0ZJTEUgKHByb2xvZ3VlX2xvY2F0aW9uKTsKICAgbGFzdF9saW5lbnVtID0gTE9DQVRJT05f TElORSAocHJvbG9ndWVfbG9jYXRpb24pOwogICBsYXN0X2NvbHVtbm51bSA9IExPQ0FUSU9OX0NP TFVNTiAocHJvbG9ndWVfbG9jYXRpb24pOwotICBsYXN0X2Rpc2NyaW1pbmF0b3IgPSBkaXNjcmlt aW5hdG9yID0gMDsKLSAgbGFzdF9iYl9kaXNjcmltaW5hdG9yID0gYmJfZGlzY3JpbWluYXRvciA9 IDA7CisgIGxhc3RfZGlzY3JpbWluYXRvciA9IDA7CiAgIGZvcmNlX3NvdXJjZV9saW5lID0gZmFs c2U7CiAKICAgaGlnaF9ibG9ja19saW5lbnVtID0gaGlnaF9mdW5jdGlvbl9saW5lbnVtID0gbGFz dF9saW5lbnVtOwpAQCAtMjI0Miw3ICsyMjMzLDYgQEAgZmluYWxfc2Nhbl9pbnNuXzEgKHJ0eF9p bnNuICppbnNuLCBGSUxFICpmaWxlLCBpbnQgb3B0aW1pemVfcCBBVFRSSUJVVEVfVU5VU0VELAog CSAgaWYgKHRhcmdldG0uYXNtX291dC51bndpbmRfZW1pdCkKIAkgICAgdGFyZ2V0bS5hc21fb3V0 LnVud2luZF9lbWl0IChhc21fb3V0X2ZpbGUsIGluc24pOwogCi0JICBiYl9kaXNjcmltaW5hdG9y ID0gTk9URV9CQVNJQ19CTE9DSyAoaW5zbiktPmRpc2NyaW1pbmF0b3I7CiAJICBicmVhazsKIAog CWNhc2UgTk9URV9JTlNOX0VIX1JFR0lPTl9CRUc6CkBAIC0yOTgxLDcgKzI5NzEsNyBAQCBjb21w dXRlX2Rpc2NyaW1pbmF0b3IgKGxvY2F0aW9uX3QgbG9jKQogICBpbnQgZGlzY3JpbWluYXRvcjsK IAogICBpZiAoIWRlY2xfdG9faW5zdGFuY2VfbWFwKQotICAgIGRpc2NyaW1pbmF0b3IgPSBiYl9k aXNjcmltaW5hdG9yOworICAgIGRpc2NyaW1pbmF0b3IgPSBnZXRfZGlzY3JpbWluYXRvcl9mcm9t X2xvY3VzIChsb2MpOwogICBlbHNlCiAgICAgewogICAgICAgdHJlZSBibG9jayA9IExPQ0FUSU9O X0JMT0NLIChsb2MpOwpAQCAtMzAwNSw2ICsyOTk1LDEzIEBAIGNvbXB1dGVfZGlzY3JpbWluYXRv ciAobG9jYXRpb25fdCBsb2MpCiAgIHJldHVybiBkaXNjcmltaW5hdG9yOwogfQogCisvKiBSZXR1 cm4gZGlzY3JpbWluYXRvciBvZiB0aGUgc3RhdGVtZW50IHRoYXQgcHJvZHVjZWQgdGhpcyBpbnNu LiAgKi8KK2ludAoraW5zbl9kaXNjcmltaW5hdG9yIChjb25zdCBydHhfaW5zbiAqaW5zbikKK3sK KyAgcmV0dXJuIGNvbXB1dGVfZGlzY3JpbWluYXRvciAoSU5TTl9MT0NBVElPTiAoaW5zbikpOwor fQorCiAvKiBSZXR1cm4gd2hldGhlciBhIHNvdXJjZSBsaW5lIG5vdGUgbmVlZHMgdG8gYmUgZW1p dHRlZCBiZWZvcmUgSU5TTi4KICAgIFNldHMgSVNfU1RNVCB0byBUUlVFIGlmIHRoZSBsaW5lIHNo b3VsZCBiZSBtYXJrZWQgYXMgYSBwb3NzaWJsZQogICAgYnJlYWtwb2ludCBsb2NhdGlvbi4gICov CkBAIC0zMDE0LDYgKzMwMTEsNyBAQCBub3RpY2Vfc291cmNlX2xpbmUgKHJ0eF9pbnNuICppbnNu LCBib29sICppc19zdG10KQogewogICBjb25zdCBjaGFyICpmaWxlbmFtZTsKICAgaW50IGxpbmVu dW0sIGNvbHVtbm51bTsKKyAgaW50IGRpc2NyaW1pbmF0b3I7CiAKICAgaWYgKE5PVEVfTUFSS0VS X1AgKGluc24pKQogICAgIHsKQEAgLTMwNDMsNyArMzA0MSw3IEBAIG5vdGljZV9zb3VyY2VfbGlu ZSAocnR4X2luc24gKmluc24sIGJvb2wgKmlzX3N0bXQpCiAgICAgICBmaWxlbmFtZSA9IHhsb2Mu ZmlsZTsKICAgICAgIGxpbmVudW0gPSB4bG9jLmxpbmU7CiAgICAgICBjb2x1bW5udW0gPSB4bG9j LmNvbHVtbjsKLSAgICAgIGRpc2NyaW1pbmF0b3IgPSBjb21wdXRlX2Rpc2NyaW1pbmF0b3IgKElO U05fTE9DQVRJT04gKGluc24pKTsKKyAgICAgIGRpc2NyaW1pbmF0b3IgPSBpbnNuX2Rpc2NyaW1p bmF0b3IgKGluc24pOwogICAgIH0KICAgZWxzZQogICAgIHsKZGlmZiAtLWdpdCBhL2djYy9naW1w bGUtcHJldHR5LXByaW50LmNjIGIvZ2NjL2dpbXBsZS1wcmV0dHktcHJpbnQuY2MKaW5kZXggZjE4 YmFlYzQzOGEuLmE4N2UyYWU2OGIzIDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXByZXR0eS1wcmlu dC5jYworKysgYi9nY2MvZ2ltcGxlLXByZXR0eS1wcmludC5jYwpAQCAtMjg3NSw4ICsyODc1LDYg QEAgZHVtcF9naW1wbGVfYmJfaGVhZGVyIChGSUxFICpvdXRmLCBiYXNpY19ibG9jayBiYiwgaW50 IGluZGVudCwKIAkJCSBpbmRlbnQsICIiLCBnZXRfbGluZW5vIChnc2lfc3RtdCAoZ3NpKSkpOwog CQlicmVhazsKIAkgICAgICB9Ci0JICBpZiAoYmItPmRpc2NyaW1pbmF0b3IpCi0JICAgIGZwcmlu dGYgKG91dGYsICIsIGRpc2NyaW1pbmF0b3IgJWkiLCBiYi0+ZGlzY3JpbWluYXRvcik7CiAJICBm cHV0YyAoJ1xuJywgb3V0Zik7CiAJfQogICAgIH0KZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtc3Ry ZWFtZXItaW4uY2MgYi9nY2MvZ2ltcGxlLXN0cmVhbWVyLWluLmNjCmluZGV4IGU3ZjMyNTYzMDJm Li5lYTg4OTFlOGU5MiAxMDA2NDQKLS0tIGEvZ2NjL2dpbXBsZS1zdHJlYW1lci1pbi5jYworKysg Yi9nY2MvZ2ltcGxlLXN0cmVhbWVyLWluLmNjCkBAIC0yNjcsNyArMjY3LDYgQEAgaW5wdXRfYmIg KGNsYXNzIGx0b19pbnB1dF9ibG9jayAqaWIsIGVudW0gTFRPX3RhZ3MgdGFnLAogICAgIGJiLT5j b3VudAogICAgICAgPSBiYi0+Y291bnQuYXBwbHlfc2NhbGUgKGNvdW50X21hdGVyaWFsaXphdGlv bl9zY2FsZSwgUkVHX0JSX1BST0JfQkFTRSk7CiAgIGJiLT5mbGFncyA9IHN0cmVhbWVyX3JlYWRf aHdpIChpYik7Ci0gIGJiLT5kaXNjcmltaW5hdG9yID0gc3RyZWFtZXJfcmVhZF9od2kgKGliKTsK IAogICAvKiBMVE9fYmIxIGhhcyBzdGF0ZW1lbnRzLiAgTFRPX2JiMCBkb2VzIG5vdC4gICovCiAg IGlmICh0YWcgPT0gTFRPX2JiMCkKZGlmZiAtLWdpdCBhL2djYy9naW1wbGUtc3RyZWFtZXItb3V0 LmNjIGIvZ2NjL2dpbXBsZS1zdHJlYW1lci1vdXQuY2MKaW5kZXggMzMzNjUyNTEyOTUuLjQ1ODMy NTQ3YmY1IDEwMDY0NAotLS0gYS9nY2MvZ2ltcGxlLXN0cmVhbWVyLW91dC5jYworKysgYi9nY2Mv Z2ltcGxlLXN0cmVhbWVyLW91dC5jYwpAQCAtMjA4LDcgKzIwOCw2IEBAIG91dHB1dF9iYiAoc3Ry dWN0IG91dHB1dF9ibG9jayAqb2IsIGJhc2ljX2Jsb2NrIGJiLCBzdHJ1Y3QgZnVuY3Rpb24gKmZu KQogICBzdHJlYW1lcl93cml0ZV91aHdpIChvYiwgYmItPmluZGV4KTsKICAgYmItPmNvdW50LnN0 cmVhbV9vdXQgKG9iKTsKICAgc3RyZWFtZXJfd3JpdGVfaHdpIChvYiwgYmItPmZsYWdzKTsKLSAg c3RyZWFtZXJfd3JpdGVfaHdpIChvYiwgYmItPmRpc2NyaW1pbmF0b3IpOwogCiAgIGlmICghZ3Np X2VuZF9wIChic2kpIHx8IHBoaV9ub2RlcyAoYmIpKQogICAgIHsKZGlmZiAtLWdpdCBhL2djYy9p bnB1dC5jYyBiL2djYy9pbnB1dC5jYwppbmRleCAwNjBjYTE2MDEyNi4uMTZkMzVhYzNkZWYgMTAw NjQ0Ci0tLSBhL2djYy9pbnB1dC5jYworKysgYi9nY2MvaW5wdXQuY2MKQEAgLTEwODIsNyArMTA4 Miw4IEBAIG1ha2VfbG9jYXRpb24gKGxvY2F0aW9uX3QgY2FyZXQsIGxvY2F0aW9uX3Qgc3RhcnQs IGxvY2F0aW9uX3QgZmluaXNoKQogICBsb2NhdGlvbl90IGNvbWJpbmVkX2xvYyA9IENPTUJJTkVf TE9DQVRJT05fREFUQSAobGluZV90YWJsZSwKIAkJCQkJCSAgIHB1cmVfbG9jLAogCQkJCQkJICAg c3JjX3JhbmdlLAotCQkJCQkJICAgTlVMTCk7CisJCQkJCQkgICBOVUxMLAorCQkJCQkJICAgMCk7 CiAgIHJldHVybiBjb21iaW5lZF9sb2M7CiB9CiAKQEAgLTEwOTIsNyArMTA5Myw3IEBAIGxvY2F0 aW9uX3QKIG1ha2VfbG9jYXRpb24gKGxvY2F0aW9uX3QgY2FyZXQsIHNvdXJjZV9yYW5nZSBzcmNf cmFuZ2UpCiB7CiAgIGxvY2F0aW9uX3QgcHVyZV9sb2MgPSBnZXRfcHVyZV9sb2NhdGlvbiAoY2Fy ZXQpOwotICByZXR1cm4gQ09NQklORV9MT0NBVElPTl9EQVRBIChsaW5lX3RhYmxlLCBwdXJlX2xv Yywgc3JjX3JhbmdlLCBOVUxMKTsKKyAgcmV0dXJuIENPTUJJTkVfTE9DQVRJT05fREFUQSAobGlu ZV90YWJsZSwgcHVyZV9sb2MsIHNyY19yYW5nZSwgTlVMTCwgMCk7CiB9CiAKIC8qIEFuIGV4cGFu ZGVkX2xvY2F0aW9uIHN0b3JlcyB0aGUgY29sdW1uIGluIGJ5dGUgdW5pdHMuICBUaGlzIGZ1bmN0 aW9uCkBAIC0xNzY2LDYgKzE3NjcsMzcgQEAgZ2V0X2xvY2F0aW9uX3dpdGhpbl9zdHJpbmcgKGNw cF9yZWFkZXIgKnBmaWxlLAogICByZXR1cm4gTlVMTDsKIH0KIAorLyogQXNzb2NpYXRlIHRoZSBE SVNDUklNSU5BVE9SIHdpdGggTE9DVVMsIGFuZCByZXR1cm4gYSBuZXcgbG9jdXMuICovCisKK2xv Y2F0aW9uX3QKK2xvY2F0aW9uX3dpdGhfZGlzY3JpbWluYXRvciAobG9jYXRpb25fdCBsb2N1cywg aW50IGRpc2NyaW1pbmF0b3IpCit7CisgIHRyZWUgYmxvY2sgPSBMT0NBVElPTl9CTE9DSyAobG9j dXMpOworICBzb3VyY2VfcmFuZ2Ugc3JjX3JhbmdlID0gZ2V0X3JhbmdlX2Zyb21fbG9jIChsaW5l X3RhYmxlLCBsb2N1cyk7CisgIGxvY3VzID0gZ2V0X3B1cmVfbG9jYXRpb24gKGxvY3VzKTsKKwor ICBpZiAobG9jdXMgPT0gVU5LTk9XTl9MT0NBVElPTikKKyAgICByZXR1cm4gbG9jdXM7CisKKyAg cmV0dXJuIENPTUJJTkVfTE9DQVRJT05fREFUQSAobGluZV90YWJsZSwgbG9jdXMsIHNyY19yYW5n ZSwgYmxvY2ssIGRpc2NyaW1pbmF0b3IpOworfQorCisvKiBSZXR1cm4gVFJVRSBpZiBMT0NVUyBy ZXByZXNlbnRzIGEgbG9jYXRpb24gd2l0aCBhIGRpc2NyaW1pbmF0b3IuICAqLworCitib29sCito YXNfZGlzY3JpbWluYXRvciAobG9jYXRpb25fdCBsb2N1cykKK3sKKyAgcmV0dXJuIExPQ0FUSU9O X0RJU0NSSU1JTkFUT1IobG9jdXMpICE9IDA7Cit9CisKKy8qIFJldHVybiB0aGUgZGlzY3JpbWlu YXRvciBmb3IgTE9DVVMuICAqLworCitpbnQKK2dldF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jdXMg KGxvY2F0aW9uX3QgbG9jdXMpCit7CisgIHJldHVybiBMT0NBVElPTl9ESVNDUklNSU5BVE9SKGxv Y3VzKTsKK30KKwogI2lmIENIRUNLSU5HX1AKIAogbmFtZXNwYWNlIHNlbGZ0ZXN0IHsKZGlmZiAt LWdpdCBhL2djYy9pbnB1dC5oIGIvZ2NjL2lucHV0LmgKaW5kZXggZjFhZTNhZWM5NWMuLjU2NGVi ZDg5M2U5IDEwMDY0NAotLS0gYS9nY2MvaW5wdXQuaAorKysgYi9nY2MvaW5wdXQuaApAQCAtMTY1 LDYgKzE2NSwxMCBAQCBleHRlcm4gbG9jYXRpb25fdCBleHBhbnNpb25fcG9pbnRfbG9jYXRpb24g KGxvY2F0aW9uX3QpOwogCiBleHRlcm4gbG9jYXRpb25fdCBpbnB1dF9sb2NhdGlvbjsKIAorZXh0 ZXJuIGxvY2F0aW9uX3QgbG9jYXRpb25fd2l0aF9kaXNjcmltaW5hdG9yIChsb2NhdGlvbl90LCBp bnQpOworZXh0ZXJuIGJvb2wgaGFzX2Rpc2NyaW1pbmF0b3IgKGxvY2F0aW9uX3QpOworZXh0ZXJu IGludCBnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2xvY3VzIChsb2NhdGlvbl90KTsKKwogI2RlZmlu ZSBMT0NBVElPTl9GSUxFKExPQykgKChleHBhbmRfbG9jYXRpb24gKExPQykpLmZpbGUpCiAjZGVm aW5lIExPQ0FUSU9OX0xJTkUoTE9DKSAoKGV4cGFuZF9sb2NhdGlvbiAoTE9DKSkubGluZSkKICNk ZWZpbmUgTE9DQVRJT05fQ09MVU1OKExPQykoKGV4cGFuZF9sb2NhdGlvbiAoTE9DKSkuY29sdW1u KQpAQCAtMTc0LDYgKzE3OCw5IEBAIGV4dGVybiBsb2NhdGlvbl90IGlucHV0X2xvY2F0aW9uOwog I2RlZmluZSBMT0NBVElPTl9CTE9DSyhMT0MpIFwKICAgKCh0cmVlKSAoKElTX0FESE9DX0xPQyAo TE9DKSkgPyBnZXRfZGF0YV9mcm9tX2FkaG9jX2xvYyAobGluZV90YWJsZSwgKExPQykpIFwKICAg IDogTlVMTCkpCisjZGVmaW5lIExPQ0FUSU9OX0RJU0NSSU1JTkFUT1IoTE9DKSBcCisgICgoSVNf QURIT0NfTE9DIChMT0MpKSA/IGdldF9kaXNjcmltaW5hdG9yX2Zyb21fYWRob2NfbG9jIChsaW5l X3RhYmxlLCAoTE9DKSkgXAorICAgOiAwKQogI2RlZmluZSBSRVNFUlZFRF9MT0NBVElPTl9QKExP QykgXAogICAoTE9DQVRJT05fTE9DVVMgKExPQykgPCBSRVNFUlZFRF9MT0NBVElPTl9DT1VOVCkK IApkaWZmIC0tZ2l0IGEvZ2NjL2x0by1zdHJlYW1lci1pbi5jYyBiL2djYy9sdG8tc3RyZWFtZXIt aW4uY2MKaW5kZXggYTdkYWQ3MDM2M2YuLmJjY2Q1ZDA0NTQxIDEwMDY0NAotLS0gYS9nY2MvbHRv LXN0cmVhbWVyLWluLmNjCisrKyBiL2djYy9sdG8tc3RyZWFtZXItaW4uY2MKQEAgLTQwOSw2ICs0 MDksOCBAQCBsdG9fbG9jYXRpb25fY2FjaGU6OmNtcF9sb2MgKGNvbnN0IHZvaWQgKnBhLCBjb25z dCB2b2lkICpwYikKICAgICByZXR1cm4gYS0+bGluZSAtIGItPmxpbmU7CiAgIGlmIChhLT5jb2wg IT0gYi0+Y29sKQogICAgIHJldHVybiBhLT5jb2wgLSBiLT5jb2w7CisgIGlmIChhLT5kaXNjciAh PSBiLT5kaXNjcikKKyAgICByZXR1cm4gYS0+ZGlzY3IgLSBiLT5kaXNjcjsKICAgaWYgKChhLT5i bG9jayA9PSBOVUxMX1RSRUUpICE9IChiLT5ibG9jayA9PSBOVUxMX1RSRUUpKQogICAgIHJldHVy biBhLT5ibG9jayA/IDEgOiAtMTsKICAgaWYgKGEtPmJsb2NrKQpAQCAtNDYwLDYgKzQ2Miw4IEBA IGx0b19sb2NhdGlvbl9jYWNoZTo6YXBwbHlfbG9jYXRpb25fY2FjaGUgKCkKIAkgIGN1cnJlbnRf bG9jID0gbGluZW1hcF9wb3NpdGlvbl9mb3JfY29sdW1uIChsaW5lX3RhYmxlLCBsb2MuY29sKTsK IAkgIGlmIChsb2MuYmxvY2spCiAJICAgIGN1cnJlbnRfbG9jID0gc2V0X2Jsb2NrIChjdXJyZW50 X2xvYywgbG9jLmJsb2NrKTsKKwkgIGlmIChsb2MuZGlzY3IpCisJICAgIGN1cnJlbnRfbG9jID0g bG9jYXRpb25fd2l0aF9kaXNjcmltaW5hdG9yIChjdXJyZW50X2xvYywgbG9jLmRpc2NyKTsKIAl9 CiAgICAgICBlbHNlIGlmIChjdXJyZW50X2Jsb2NrICE9IGxvYy5ibG9jaykKIAl7CkBAIC00Njcs MTIgKzQ3MSwxOSBAQCBsdG9fbG9jYXRpb25fY2FjaGU6OmFwcGx5X2xvY2F0aW9uX2NhY2hlICgp CiAJICAgIGN1cnJlbnRfbG9jID0gc2V0X2Jsb2NrIChjdXJyZW50X2xvYywgbG9jLmJsb2NrKTsK IAkgIGVsc2UKIAkgICAgY3VycmVudF9sb2MgPSBMT0NBVElPTl9MT0NVUyAoY3VycmVudF9sb2Mp OworCSAgaWYgKGxvYy5kaXNjcikKKwkgICAgY3VycmVudF9sb2MgPSBsb2NhdGlvbl93aXRoX2Rp c2NyaW1pbmF0b3IgKGN1cnJlbnRfbG9jLCBsb2MuZGlzY3IpOworCX0KKyAgICAgIGVsc2UgaWYg KGN1cnJlbnRfZGlzY3IgIT0gbG9jLmRpc2NyKQorCXsKKwkgICAgY3VycmVudF9sb2MgPSBsb2Nh dGlvbl93aXRoX2Rpc2NyaW1pbmF0b3IgKGN1cnJlbnRfbG9jLCBsb2MuZGlzY3IpOwogCX0KICAg ICAgICpsb2MubG9jID0gY3VycmVudF9sb2M7CiAgICAgICBjdXJyZW50X2xpbmUgPSBsb2MubGlu ZTsKICAgICAgIHByZXZfZmlsZSA9IGN1cnJlbnRfZmlsZSA9IGxvYy5maWxlOwogICAgICAgY3Vy cmVudF9jb2wgPSBsb2MuY29sOwogICAgICAgY3VycmVudF9ibG9jayA9IGxvYy5ibG9jazsKKyAg ICAgIGN1cnJlbnRfZGlzY3IgPSBsb2MuZGlzY3I7CiAgICAgfQogICBsb2NfY2FjaGUudHJ1bmNh dGUgKDApOwogICBhY2NlcHRlZF9sZW5ndGggPSAwOwpAQCAtNTEyLDYgKzUyMyw3IEBAIGx0b19s b2NhdGlvbl9jYWNoZTo6aW5wdXRfbG9jYXRpb25fYW5kX2Jsb2NrIChsb2NhdGlvbl90ICpsb2Ms CiAgIHN0YXRpYyBpbnQgc3RyZWFtX2NvbDsKICAgc3RhdGljIGJvb2wgc3RyZWFtX3N5c3A7CiAg IHN0YXRpYyB0cmVlIHN0cmVhbV9ibG9jazsKKyAgc3RhdGljIHVuc2lnbmVkIHN0cmVhbV9kaXNj cjsKICAgc3RhdGljIGNvbnN0IGNoYXIgKnN0cmVhbV9yZWxhdGl2ZV9wYXRoX3ByZWZpeDsKIAog ICBnY2NfYXNzZXJ0IChjdXJyZW50X2NhY2hlID09IHRoaXMpOwpAQCAtNTM4LDYgKzU1MCw3IEBA IGx0b19sb2NhdGlvbl9jYWNoZTo6aW5wdXRfbG9jYXRpb25fYW5kX2Jsb2NrIChsb2NhdGlvbl90 ICpsb2MsCiAgICpsb2MgPSBSRVNFUlZFRF9MT0NBVElPTl9DT1VOVDsKICAgYm9vbCBsaW5lX2No YW5nZSA9IGJwX3VucGFja192YWx1ZSAoYnAsIDEpOwogICBib29sIGNvbHVtbl9jaGFuZ2UgPSBi cF91bnBhY2tfdmFsdWUgKGJwLCAxKTsKKyAgYm9vbCBkaXNjcl9jaGFuZ2UgPSBicF91bnBhY2tf dmFsdWUgKGJwLCAxKTsKIAogICBpZiAoZmlsZV9jaGFuZ2UpCiAgICAgewpAQCAtNTYzLDYgKzU3 Niw5IEBAIGx0b19sb2NhdGlvbl9jYWNoZTo6aW5wdXRfbG9jYXRpb25fYW5kX2Jsb2NrIChsb2Nh dGlvbl90ICpsb2MsCiAgIGlmIChjb2x1bW5fY2hhbmdlKQogICAgIHN0cmVhbV9jb2wgPSBicF91 bnBhY2tfdmFyX2xlbl91bnNpZ25lZCAoYnApOwogCisgIGlmIChkaXNjcl9jaGFuZ2UpCisgICAg c3RyZWFtX2Rpc2NyID0gYnBfdW5wYWNrX3Zhcl9sZW5fdW5zaWduZWQgKGJwKTsKKwogICB0cmVl IGJsb2NrID0gTlVMTF9UUkVFOwogICBpZiAoaWIpCiAgICAgewpAQCAtNTc4LDcgKzU5NCw4IEBA IGx0b19sb2NhdGlvbl9jYWNoZTo6aW5wdXRfbG9jYXRpb25fYW5kX2Jsb2NrIChsb2NhdGlvbl90 ICpsb2MsCiAgIGlmIChjdXJyZW50X2ZpbGUgPT0gc3RyZWFtX2ZpbGUKICAgICAgICYmIGN1cnJl bnRfbGluZSA9PSBzdHJlYW1fbGluZQogICAgICAgJiYgY3VycmVudF9jb2wgPT0gc3RyZWFtX2Nv bAotICAgICAgJiYgY3VycmVudF9zeXNwID09IHN0cmVhbV9zeXNwKQorICAgICAgJiYgY3VycmVu dF9zeXNwID09IHN0cmVhbV9zeXNwCisgICAgICAmJiBjdXJyZW50X2Rpc2NyID09IHN0cmVhbV9k aXNjcikKICAgICB7CiAgICAgICBpZiAoY3VycmVudF9ibG9jayA9PSBibG9jaykKIAkqbG9jID0g Y3VycmVudF9sb2M7CkBAIC01OTAsNyArNjA3LDcgQEAgbHRvX2xvY2F0aW9uX2NhY2hlOjppbnB1 dF9sb2NhdGlvbl9hbmRfYmxvY2sgKGxvY2F0aW9uX3QgKmxvYywKICAgICB9CiAKICAgc3RydWN0 IGNhY2hlZF9sb2NhdGlvbiBlbnRyeQotICAgID0ge3N0cmVhbV9maWxlLCBsb2MsIHN0cmVhbV9s aW5lLCBzdHJlYW1fY29sLCBzdHJlYW1fc3lzcCwgYmxvY2t9OworICAgID0ge3N0cmVhbV9maWxl LCBsb2MsIHN0cmVhbV9saW5lLCBzdHJlYW1fY29sLCBzdHJlYW1fc3lzcCwgYmxvY2ssIHN0cmVh bV9kaXNjcn07CiAgIGxvY19jYWNoZS5zYWZlX3B1c2ggKGVudHJ5KTsKIH0KIApkaWZmIC0tZ2l0 IGEvZ2NjL2x0by1zdHJlYW1lci1vdXQuY2MgYi9nY2MvbHRvLXN0cmVhbWVyLW91dC5jYwppbmRl eCA0NzFmMzVjMzE1Zi4uZDJiNmM2OTMxNWYgMTAwNjQ0Ci0tLSBhL2djYy9sdG8tc3RyZWFtZXIt b3V0LmNjCisrKyBiL2djYy9sdG8tc3RyZWFtZXItb3V0LmNjCkBAIC02Nyw2ICs2Nyw3IEBAIGNs ZWFyX2xpbmVfaW5mbyAoc3RydWN0IG91dHB1dF9ibG9jayAqb2IpCiAgICAgIHNvIHRoYXQgdGhl IGZpcnN0IGxvY2F0aW9uIHdpdGggYmxvY2sgaW4gYSBmdW5jdGlvbiBldGMuCiAgICAgIGFsd2F5 cyBzdHJlYW1zIGEgY2hhbmdlX2Jsb2NrIGJpdCBhbmQgdGhlIGZpcnN0IGJsb2NrLiAgKi8KICAg b2ItPmN1cnJlbnRfYmxvY2sgPSB2b2lkX25vZGU7CisgIG9iLT5jdXJyZW50X2Rpc2NyID0gVUlO VF9NQVg7CiB9CiAKIApAQCAtMTk0LDYgKzE5NSw3IEBAIGx0b19vdXRwdXRfbG9jYXRpb25fMSAo c3RydWN0IG91dHB1dF9ibG9jayAqb2IsIHN0cnVjdCBiaXRwYWNrX2QgKmJwLAogICBpZiAobG9j ID49IFJFU0VSVkVEX0xPQ0FUSU9OX0NPVU5UKQogICAgIHsKICAgICAgIGV4cGFuZGVkX2xvY2F0 aW9uIHhsb2MgPSBleHBhbmRfbG9jYXRpb24gKGxvYyk7CisgICAgICB1bnNpZ25lZCBkaXNjciA9 IExPQ0FUSU9OX0RJU0NSSU1JTkFUT1IgKG9yaWdfbG9jKTsKIAogICAgICAgaWYgKG9iLT5yZXNl dF9sb2N1cykKIAl7CkBAIC0yMTYsNiArMjE4LDcgQEAgbHRvX291dHB1dF9sb2NhdGlvbl8xIChz dHJ1Y3Qgb3V0cHV0X2Jsb2NrICpvYiwgc3RydWN0IGJpdHBhY2tfZCAqYnAsCiAKICAgICAgIGJw X3BhY2tfdmFsdWUgKGJwLCBvYi0+Y3VycmVudF9saW5lICE9IHhsb2MubGluZSwgMSk7CiAgICAg ICBicF9wYWNrX3ZhbHVlIChicCwgb2ItPmN1cnJlbnRfY29sICE9IHhsb2MuY29sdW1uLCAxKTsK KyAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBvYi0+Y3VycmVudF9kaXNjciAhPSBkaXNjciwgMSk7 CiAKICAgICAgIGlmIChvYi0+Y3VycmVudF9maWxlICE9IHhsb2MuZmlsZSkKIAl7CkBAIC0yNDIs NiArMjQ1LDEwIEBAIGx0b19vdXRwdXRfbG9jYXRpb25fMSAoc3RydWN0IG91dHB1dF9ibG9jayAq b2IsIHN0cnVjdCBiaXRwYWNrX2QgKmJwLAogICAgICAgaWYgKG9iLT5jdXJyZW50X2NvbCAhPSB4 bG9jLmNvbHVtbikKIAlicF9wYWNrX3Zhcl9sZW5fdW5zaWduZWQgKGJwLCB4bG9jLmNvbHVtbik7 CiAgICAgICBvYi0+Y3VycmVudF9jb2wgPSB4bG9jLmNvbHVtbjsKKworICAgICAgaWYgKG9iLT5j dXJyZW50X2Rpc2NyICE9IGRpc2NyKQorCWJwX3BhY2tfdmFyX2xlbl91bnNpZ25lZCAoYnAsIGRp c2NyKTsKKyAgICAgIG9iLT5jdXJyZW50X2Rpc2NyID0gZGlzY3I7CiAgICAgfQogICBlbHNlCiAg ICAgYnBfcGFja19pbnRfaW5fcmFuZ2UgKGJwLCAwLCBSRVNFUlZFRF9MT0NBVElPTl9DT1VOVCAr IDEsIGxvYyk7CmRpZmYgLS1naXQgYS9nY2MvbHRvLXN0cmVhbWVyLmggYi9nY2MvbHRvLXN0cmVh bWVyLmgKaW5kZXggNTk3ZTllNDA1ZWMuLjJlM2FiZDk3OTU5IDEwMDY0NAotLS0gYS9nY2MvbHRv LXN0cmVhbWVyLmgKKysrIGIvZ2NjL2x0by1zdHJlYW1lci5oCkBAIC0zMTEsNiArMzExLDcgQEAg cHJpdmF0ZToKICAgICBpbnQgbGluZSwgY29sOwogICAgIGJvb2wgc3lzcDsKICAgICB0cmVlIGJs b2NrOworICAgIHVuc2lnbmVkIGRpc2NyOwogICB9OwogCiAgIC8qIFRoZSBsb2NhdGlvbiBjYWNo ZS4gICovCkBAIC0zMzMsNiArMzM0LDcgQEAgcHJpdmF0ZToKICAgYm9vbCBjdXJyZW50X3N5c3A7 CiAgIGxvY2F0aW9uX3QgY3VycmVudF9sb2M7CiAgIHRyZWUgY3VycmVudF9ibG9jazsKKyAgdW5z aWduZWQgY3VycmVudF9kaXNjcjsKIH07CiAKIC8qIFN0cnVjdHVyZSB1c2VkIGFzIGJ1ZmZlciBm b3IgcmVhZGluZyBhbiBMVE8gZmlsZS4gICovCkBAIC03MjMsNiArNzI1LDcgQEAgc3RydWN0IG91 dHB1dF9ibG9jawogICBib29sIHJlc2V0X2xvY3VzOwogICBib29sIGVtaXRfcHdkOwogICB0cmVl IGN1cnJlbnRfYmxvY2s7CisgIHVuc2lnbmVkIGN1cnJlbnRfZGlzY3I7CiAKICAgLyogQ2FjaGUg b2Ygbm9kZXMgd3JpdHRlbiBpbiB0aGlzIHNlY3Rpb24uICAqLwogICBzdHJ1Y3Qgc3RyZWFtZXJf dHJlZV9jYWNoZV9kICp3cml0ZXJfY2FjaGU7CmRpZmYgLS1naXQgYS9nY2MvcHJpbnQtcnRsLmNj IGIvZ2NjL3ByaW50LXJ0bC5jYwppbmRleCA2MGM4NDU0ODViYy4uZTExNWY5ODcxNzMgMTAwNjQ0 Ci0tLSBhL2djYy9wcmludC1ydGwuY2MKKysrIGIvZ2NjL3ByaW50LXJ0bC5jYwpAQCAtNDUzLDYg KzQ1MywxMCBAQCBydHhfd3JpdGVyOjpwcmludF9ydHhfb3BlcmFuZF9jb2RlX2kgKGNvbnN0X3J0 eCBpbl9ydHgsIGludCBpZHgpCiAJICBleHBhbmRlZF9sb2NhdGlvbiB4bG9jID0gaW5zbl9sb2Nh dGlvbiAoaW5faW5zbik7CiAJICBmcHJpbnRmIChtX291dGZpbGUsICIgXCIlc1wiOiVpOiVpIiwg eGxvYy5maWxlLCB4bG9jLmxpbmUsCiAJCSAgIHhsb2MuY29sdW1uKTsKKwkgIGludCBkaXNjcmlt aW5hdG9yID0gaW5zbl9kaXNjcmltaW5hdG9yIChpbl9pbnNuKTsKKwkgICAgaWYgKGRpc2NyaW1p bmF0b3IpCisJICAgICAgZnByaW50ZiAobV9vdXRmaWxlLCAiIGRpc2NyaW0gJWQiLCBkaXNjcmlt aW5hdG9yKTsKKwogCX0KICNlbmRpZgogICAgIH0KZGlmZiAtLWdpdCBhL2djYy9ydGwuaCBiL2dj Yy9ydGwuaAppbmRleCA2NDVjMDA5YTM0MC4uN2E4YzQ3MDkyNTcgMTAwNjQ0Ci0tLSBhL2djYy9y dGwuaAorKysgYi9nY2MvcnRsLmgKQEAgLTMzNjksNiArMzM2OSw3IEBAIGV4dGVybiBpbnQgaW5z bl9saW5lIChjb25zdCBydHhfaW5zbiAqKTsKIGV4dGVybiBjb25zdCBjaGFyICogaW5zbl9maWxl IChjb25zdCBydHhfaW5zbiAqKTsKIGV4dGVybiB0cmVlIGluc25fc2NvcGUgKGNvbnN0IHJ0eF9p bnNuICopOwogZXh0ZXJuIGV4cGFuZGVkX2xvY2F0aW9uIGluc25fbG9jYXRpb24gKGNvbnN0IHJ0 eF9pbnNuICopOworZXh0ZXJuIGludCBpbnNuX2Rpc2NyaW1pbmF0b3IgKGNvbnN0IHJ0eF9pbnNu ICopOwogZXh0ZXJuIGxvY2F0aW9uX3QgcHJvbG9ndWVfbG9jYXRpb24sIGVwaWxvZ3VlX2xvY2F0 aW9uOwogCiAvKiBJbiBqdW1wLmNjICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2MtYysr LWNvbW1vbi91YnNhbi9wcjg1MjEzLmMgYi9nY2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNh bi9wcjg1MjEzLmMKaW5kZXggOGE2YmU4MWQyMGYuLmU5MDNlOTc2ZjJjIDEwMDY0NAotLS0gYS9n Y2MvdGVzdHN1aXRlL2MtYysrLWNvbW1vbi91YnNhbi9wcjg1MjEzLmMKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9jLWMrKy1jb21tb24vdWJzYW4vcHI4NTIxMy5jCkBAIC0xLDYgKzEsMTEgQEAKIC8qIFBS IHNhbml0aXplci84NTIxMyAqLwogLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS8qIHsgZGctb3B0 aW9ucyAiLU8xIC1mc2FuaXRpemU9dW5kZWZpbmVkIC1mY29tcGFyZS1kZWJ1ZyIgfSAqLworLyog UGFzcyAtZ25vLXN0YXRlbWVudC1mcm9udGllcnMgdG8gd29yayBhcm91bmQKKyAgIGh0dHBzOi8v Z2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEwMDczMyA6CisgICB3aXRob3V0 IGl0IHRoZSBJUiBjb21pbmcgZnJvbSB0aGUgZnJvbnQgZW5kIG1heSBiZSBkaWZmZXJlbnQgd2l0 aCBhbmQgd2l0aG91dAorICAgZGVidWcgaW5mb3JtYXRpb24gdHVybmVkIG9uLiBUaGF0IG1heSBj YXVzZSBlLmcuLCBkaWZmZXJlbnQgZGlzY3JpbWluYXRvciB2YWx1ZXMKKyAgIGFuZCAtZmNvbXBh cmUtZGVidWcgZmFpbHVyZXMuICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMSAtZnNhbml0aXplPXVu ZGVmaW5lZCAtZmNvbXBhcmUtZGVidWcgLWduby1zdGF0ZW1lbnQtZnJvbnRpZXJzIiB9ICovCiAK IGludAogZm9vIChpbnQgeCkKZGlmZiAtLWdpdCBhL2djYy90cmVlLWNmZy5jYyBiL2djYy90cmVl LWNmZy5jYwppbmRleCA5MWVjMzNjODBhNC4uMTc5ZGUyZmRiZDcgMTAwNjQ0Ci0tLSBhL2djYy90 cmVlLWNmZy5jYworKysgYi9nY2MvdHJlZS1jZmcuY2MKQEAgLTExNjUsNyArMTE2NSwzMyBAQCBz YW1lX2xpbmVfcCAobG9jYXRpb25fdCBsb2N1czEsIGV4cGFuZGVkX2xvY2F0aW9uICpmcm9tLCBs b2NhdGlvbl90IGxvY3VzMikKICAgICAgICAgICAmJiBmaWxlbmFtZV9jbXAgKGZyb20tPmZpbGUs IHRvLmZpbGUpID09IDApOwogfQogCi0vKiBBc3NpZ24gZGlzY3JpbWluYXRvcnMgdG8gZWFjaCBi YXNpYyBibG9jay4gICovCisvKiBBc3NpZ24gYSB1bmlxdWUgZGlzY3JpbWluYXRvciB2YWx1ZSB0 byBhbGwgc3RhdGVtZW50cyBpbiBibG9jayBiYiB0aGF0CisgICBoYXZlIHRoZSBzYW1lIGxpbmUg bnVtYmVyIGFzIGxvY3VzLiAqLworCitzdGF0aWMgdm9pZAorYXNzaWduX2Rpc2NyaW1pbmF0b3Ig KGxvY2F0aW9uX3QgbG9jdXMsIGJhc2ljX2Jsb2NrIGJiKQoreworICBnaW1wbGVfc3RtdF9pdGVy YXRvciBnc2k7CisgIGludCBkaXNjcmltaW5hdG9yOworCisgIGlmIChsb2N1cyA9PSBVTktOT1dO X0xPQ0FUSU9OKQorICAgIHJldHVybjsKKworICBleHBhbmRlZF9sb2NhdGlvbiBsb2N1c19lID0g ZXhwYW5kX2xvY2F0aW9uIChsb2N1cyk7CisKKyAgZGlzY3JpbWluYXRvciA9IG5leHRfZGlzY3Jp bWluYXRvcl9mb3JfbG9jdXMgKGxvY3VzX2UubGluZSk7CisKKyAgZm9yIChnc2kgPSBnc2lfc3Rh cnRfYmIgKGJiKTsgIWdzaV9lbmRfcCAoZ3NpKTsgZ3NpX25leHQgKCZnc2kpKQorICAgIHsKKyAg ICAgIGdpbXBsZSAqc3RtdCA9IGdzaV9zdG10IChnc2kpOworICAgICAgbG9jYXRpb25fdCBzdG10 X2xvY3VzID0gZ2ltcGxlX2xvY2F0aW9uIChzdG10KTsKKyAgICAgIGlmIChzYW1lX2xpbmVfcCAo bG9jdXMsICZsb2N1c19lLCBzdG10X2xvY3VzKSkKKwlnaW1wbGVfc2V0X2xvY2F0aW9uIChzdG10 LAorCSAgICBsb2NhdGlvbl93aXRoX2Rpc2NyaW1pbmF0b3IgKHN0bXRfbG9jdXMsIGRpc2NyaW1p bmF0b3IpKTsKKyAgICB9Cit9CisKKy8qIEFzc2lnbiBkaXNjcmltaW5hdG9ycyB0byBzdGF0ZW1l bnQgbG9jYXRpb25zLiAgKi8KIAogc3RhdGljIHZvaWQKIGFzc2lnbl9kaXNjcmltaW5hdG9ycyAo dm9pZCkKQEAgLTExODAsNiArMTIwNiw3IEBAIGFzc2lnbl9kaXNjcmltaW5hdG9ycyAodm9pZCkK ICAgICAgIGxvY2F0aW9uX3QgbG9jdXMgPSBsYXN0ID8gZ2ltcGxlX2xvY2F0aW9uIChsYXN0KSA6 IFVOS05PV05fTE9DQVRJT047CiAKICAgICAgIGlmIChsb2N1cyA9PSBVTktOT1dOX0xPQ0FUSU9O KQorCiAJY29udGludWU7CiAKICAgICAgIGV4cGFuZGVkX2xvY2F0aW9uIGxvY3VzX2UgPSBleHBh bmRfbG9jYXRpb24gKGxvY3VzKTsKQEAgLTExODgsMTggKzEyMTUsMjEgQEAgYXNzaWduX2Rpc2Ny aW1pbmF0b3JzICh2b2lkKQogCXsKIAkgIGdpbXBsZSAqZmlyc3QgPSBmaXJzdF9ub25fbGFiZWxf c3RtdCAoZS0+ZGVzdCk7CiAJICBnaW1wbGUgKmxhc3QgPSBsYXN0X3N0bXQgKGUtPmRlc3QpOwot CSAgaWYgKChmaXJzdCAmJiBzYW1lX2xpbmVfcCAobG9jdXMsICZsb2N1c19lLAorCisJICBnaW1w bGUgKnN0bXRfb25fc2FtZV9saW5lID0gTlVMTDsKKwkgIGlmIChmaXJzdCAmJiBzYW1lX2xpbmVf cCAobG9jdXMsICZsb2N1c19lLAogCQkJCSAgICAgZ2ltcGxlX2xvY2F0aW9uIChmaXJzdCkpKQot CSAgICAgIHx8IChsYXN0ICYmIHNhbWVfbGluZV9wIChsb2N1cywgJmxvY3VzX2UsCi0JCQkJICAg ICAgIGdpbXBsZV9sb2NhdGlvbiAobGFzdCkpKSkKLQkgICAgewotCSAgICAgIGlmIChlLT5kZXN0 LT5kaXNjcmltaW5hdG9yICE9IDAgJiYgYmItPmRpc2NyaW1pbmF0b3IgPT0gMCkKLQkJYmItPmRp c2NyaW1pbmF0b3IKLQkJICA9IG5leHRfZGlzY3JpbWluYXRvcl9mb3JfbG9jdXMgKGxvY3VzX2Uu bGluZSk7CisJICAgIHN0bXRfb25fc2FtZV9saW5lID0gZmlyc3Q7CisJICBlbHNlIGlmIChsYXN0 ICYmIHNhbWVfbGluZV9wIChsb2N1cywgJmxvY3VzX2UsCisJCQkJCWdpbXBsZV9sb2NhdGlvbiAo bGFzdCkpKQorCSAgICBzdG10X29uX3NhbWVfbGluZSA9IGxhc3Q7CisKKwkgIGlmIChzdG10X29u X3NhbWVfbGluZQorCSAgICAgICYmIGhhc19kaXNjcmltaW5hdG9yIChnaW1wbGVfbG9jYXRpb24g KHN0bXRfb25fc2FtZV9saW5lKSkKKwkgICAgICAmJiAhaGFzX2Rpc2NyaW1pbmF0b3IgKGxvY3Vz KSkKKwkJYXNzaWduX2Rpc2NyaW1pbmF0b3IgKGxvY3VzLCBiYik7CiAJICAgICAgZWxzZQotCQll LT5kZXN0LT5kaXNjcmltaW5hdG9yCi0JCSAgPSBuZXh0X2Rpc2NyaW1pbmF0b3JfZm9yX2xvY3Vz IChsb2N1c19lLmxpbmUpOwotCSAgICB9CisJCWFzc2lnbl9kaXNjcmltaW5hdG9yIChsb2N1cywg ZS0+ZGVzdCk7CiAJfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2djYy90cmVlLXByZXR0eS1wcmlu dC5jYyBiL2djYy90cmVlLXByZXR0eS1wcmludC5jYwppbmRleCA0NzM3MWQ4YmNiZS4uMTc0Nzcz MjM2NGYgMTAwNjQ0Ci0tLSBhL2djYy90cmVlLXByZXR0eS1wcmludC5jYworKysgYi9nY2MvdHJl ZS1wcmV0dHktcHJpbnQuY2MKQEAgLTE0MzcsNiArMTQzNyw3IEBAIHZvaWQKIGR1bXBfbG9jYXRp b24gKHByZXR0eV9wcmludGVyICpwcCwgbG9jYXRpb25fdCBsb2MpCiB7CiAgIGV4cGFuZGVkX2xv Y2F0aW9uIHhsb2MgPSBleHBhbmRfbG9jYXRpb24gKGxvYyk7CisgIGludCBkaXNjcmltaW5hdG9y ID0gZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2N1cyAobG9jKTsKIAogICBwcF9sZWZ0X2JyYWNr ZXQgKHBwKTsKICAgaWYgKHhsb2MuZmlsZSkKQEAgLTE0NDcsNiArMTQ0OCwxMSBAQCBkdW1wX2xv Y2F0aW9uIChwcmV0dHlfcHJpbnRlciAqcHAsIGxvY2F0aW9uX3QgbG9jKQogICBwcF9kZWNpbWFs X2ludCAocHAsIHhsb2MubGluZSk7CiAgIHBwX2NvbG9uIChwcCk7CiAgIHBwX2RlY2ltYWxfaW50 IChwcCwgeGxvYy5jb2x1bW4pOworICBpZiAoZGlzY3JpbWluYXRvcikKKyAgeworICAgIHBwX3N0 cmluZyAocHAsICIgZGlzY3JpbSAiKTsKKyAgICBwcF9kZWNpbWFsX2ludCAocHAsIGRpc2NyaW1p bmF0b3IpOworICB9CiAgIHBwX3N0cmluZyAocHAsICJdICIpOwogfQogCmRpZmYgLS1naXQgYS9n Y2MvdHJlZS5jYyBiL2djYy90cmVlLmNjCmluZGV4IDAwN2M5MzI1YjE3Li5kYzlmNTgxOTk0MSAx MDA2NDQKLS0tIGEvZ2NjL3RyZWUuY2MKKysrIGIvZ2NjL3RyZWUuY2MKQEAgLTE0MTc3LDcgKzE0 MTc3LDggQEAgc2V0X2Jsb2NrIChsb2NhdGlvbl90IGxvYywgdHJlZSBibG9jaykKIHsKICAgbG9j YXRpb25fdCBwdXJlX2xvYyA9IGdldF9wdXJlX2xvY2F0aW9uIChsb2MpOwogICBzb3VyY2VfcmFu Z2Ugc3JjX3JhbmdlID0gZ2V0X3JhbmdlX2Zyb21fbG9jIChsaW5lX3RhYmxlLCBsb2MpOwotICBy ZXR1cm4gQ09NQklORV9MT0NBVElPTl9EQVRBIChsaW5lX3RhYmxlLCBwdXJlX2xvYywgc3JjX3Jh bmdlLCBibG9jayk7CisgIHVuc2lnbmVkIGRpc2NyaW1pbmF0b3IgPSBnZXRfZGlzY3JpbWluYXRv cl9mcm9tX2xvYyAobGluZV90YWJsZSwgbG9jKTsKKyAgcmV0dXJuIENPTUJJTkVfTE9DQVRJT05f REFUQSAobGluZV90YWJsZSwgcHVyZV9sb2MsIHNyY19yYW5nZSwgYmxvY2ssIGRpc2NyaW1pbmF0 b3IpOwogfQogCiBsb2NhdGlvbl90CkBAIC0xNDE5NSwxMSArMTQxOTYsMTQgQEAgc2V0X3NvdXJj ZV9yYW5nZSAodHJlZSBleHByLCBzb3VyY2VfcmFuZ2Ugc3JjX3JhbmdlKQogICBpZiAoIUVYUFJf UCAoZXhwcikpCiAgICAgcmV0dXJuIFVOS05PV05fTE9DQVRJT047CiAKLSAgbG9jYXRpb25fdCBw dXJlX2xvYyA9IGdldF9wdXJlX2xvY2F0aW9uIChFWFBSX0xPQ0FUSU9OIChleHByKSk7CisgIGxv Y2F0aW9uX3QgZXhwcl9sb2NhdGlvbiA9IEVYUFJfTE9DQVRJT04gKGV4cHIpOworICBsb2NhdGlv bl90IHB1cmVfbG9jID0gZ2V0X3B1cmVfbG9jYXRpb24gKGV4cHJfbG9jYXRpb24pOworICB1bnNp Z25lZCBkaXNjcmltaW5hdG9yID0gZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2N1cyAoZXhwcl9s b2NhdGlvbik7CiAgIGxvY2F0aW9uX3QgYWRob2MgPSBDT01CSU5FX0xPQ0FUSU9OX0RBVEEgKGxp bmVfdGFibGUsCiAJCQkJCSAgICBwdXJlX2xvYywKIAkJCQkJICAgIHNyY19yYW5nZSwKLQkJCQkJ ICAgIE5VTEwpOworCQkJCQkgICAgTlVMTCwKKwkJCQkJICAgIGRpc2NyaW1pbmF0b3IpOwogICBT RVRfRVhQUl9MT0NBVElPTiAoZXhwciwgYWRob2MpOwogICByZXR1cm4gYWRob2M7CiB9CmRpZmYg LS1naXQgYS9saWJjcHAvaW5jbHVkZS9saW5lLW1hcC5oIGIvbGliY3BwL2luY2x1ZGUvbGluZS1t YXAuaAppbmRleCA5YmRkNWI5ZDMwYy4uNTAyMDdjYWNjMTIgMTAwNjQ0Ci0tLSBhL2xpYmNwcC9p bmNsdWRlL2xpbmUtbWFwLmgKKysrIGIvbGliY3BwL2luY2x1ZGUvbGluZS1tYXAuaApAQCAtNzU3 LDYgKzc1Nyw3IEBAIHN0cnVjdCBHVFkoKCkpIGxvY2F0aW9uX2FkaG9jX2RhdGEgewogICBsb2Nh dGlvbl90IGxvY3VzOwogICBzb3VyY2VfcmFuZ2Ugc3JjX3JhbmdlOwogICB2b2lkICogR1RZKChz a2lwKSkgZGF0YTsKKyAgdW5zaWduZWQgZGlzY3JpbWluYXRvcjsKIH07CiAKIHN0cnVjdCBodGFi OwpAQCAtMTAzNCwxMiArMTAzNSwxNCBAQCBMSU5FTUFQU19MQVNUX0FMTE9DQVRFRF9NQUNST19N QVAgKGNvbnN0IGxpbmVfbWFwcyAqc2V0KQogfQogCiBleHRlcm4gbG9jYXRpb25fdCBnZXRfY29t YmluZWRfYWRob2NfbG9jIChsaW5lX21hcHMgKiwgbG9jYXRpb25fdCwKLQkJCQkJICBzb3VyY2Vf cmFuZ2UsIHZvaWQgKik7CisJCQkJCSAgc291cmNlX3JhbmdlLCB2b2lkICosIHVuc2lnbmVkKTsK IGV4dGVybiB2b2lkICpnZXRfZGF0YV9mcm9tX2FkaG9jX2xvYyAoY29uc3QgbGluZV9tYXBzICos IGxvY2F0aW9uX3QpOworZXh0ZXJuIHVuc2lnbmVkIGdldF9kaXNjcmltaW5hdG9yX2Zyb21fYWRo b2NfbG9jIChjb25zdCBsaW5lX21hcHMgKiwgbG9jYXRpb25fdCk7CiBleHRlcm4gbG9jYXRpb25f dCBnZXRfbG9jYXRpb25fZnJvbV9hZGhvY19sb2MgKGNvbnN0IGxpbmVfbWFwcyAqLAogCQkJCQkg ICAgICAgbG9jYXRpb25fdCk7CiAKIGV4dGVybiBzb3VyY2VfcmFuZ2UgZ2V0X3JhbmdlX2Zyb21f bG9jIChsaW5lX21hcHMgKnNldCwgbG9jYXRpb25fdCBsb2MpOworZXh0ZXJuIHVuc2lnbmVkIGdl dF9kaXNjcmltaW5hdG9yX2Zyb21fbG9jIChsaW5lX21hcHMgKnNldCwgbG9jYXRpb25fdCBsb2Mp OwogCiAvKiBHZXQgd2hldGhlciBsb2NhdGlvbiBMT0MgaXMgYSAicHVyZSIgbG9jYXRpb24sIG9y CiAgICB3aGV0aGVyIGl0IGlzIGFuIGFkLWhvYyBsb2NhdGlvbiwgb3IgZW1iZWRzIHJhbmdlIGlu Zm9ybWF0aW9uLiAgKi8KQEAgLTEwNTgsOSArMTA2MSwxMCBAQCBpbmxpbmUgbG9jYXRpb25fdAog Q09NQklORV9MT0NBVElPTl9EQVRBIChjbGFzcyBsaW5lX21hcHMgKnNldCwKIAkJICAgICAgIGxv Y2F0aW9uX3QgbG9jLAogCQkgICAgICAgc291cmNlX3JhbmdlIHNyY19yYW5nZSwKLQkJICAgICAg IHZvaWQgKmJsb2NrKQorCQkgICAgICAgdm9pZCAqYmxvY2ssCisJCSAgICAgICB1bnNpZ25lZCBk aXNjcmltaW5hdG9yKQogewotICByZXR1cm4gZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAoc2V0LCBs b2MsIHNyY19yYW5nZSwgYmxvY2spOworICByZXR1cm4gZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAo c2V0LCBsb2MsIHNyY19yYW5nZSwgYmxvY2ssIGRpc2NyaW1pbmF0b3IpOwogfQogCiBleHRlcm4g dm9pZCByZWJ1aWxkX2xvY2F0aW9uX2FkaG9jX2h0YWIgKGNsYXNzIGxpbmVfbWFwcyAqKTsKZGlm ZiAtLWdpdCBhL2xpYmNwcC9sZXguY2MgYi9saWJjcHAvbGV4LmNjCmluZGV4IDUyOGQ1OThhZWI5 Li43M2YxNTBiMGVhMyAxMDA2NDQKLS0tIGEvbGliY3BwL2xleC5jYworKysgYi9saWJjcHAvbGV4 LmNjCkBAIC0xMzU5LDcgKzEzNTksOCBAQCBnZXRfbG9jYXRpb25fZm9yX2J5dGVfcmFuZ2VfaW5f Y3VyX2xpbmUgKGNwcF9yZWFkZXIgKnBmaWxlLAogICBsb2NhdGlvbl90IGNvbWJpbmVkX2xvYyA9 IENPTUJJTkVfTE9DQVRJT05fREFUQSAocGZpbGUtPmxpbmVfdGFibGUsCiAJCQkJCQkgICBzdGFy dF9sb2MsCiAJCQkJCQkgICBzcmNfcmFuZ2UsCi0JCQkJCQkgICBOVUxMKTsKKwkJCQkJCSAgIE5V TEwsCisJCQkJCQkgICAwKTsKICAgcmV0dXJuIGNvbWJpbmVkX2xvYzsKIH0KIApAQCAtMTg5NSw3 ICsxODk2LDcgQEAgd2Fybl9hYm91dF9ub3JtYWxpemF0aW9uIChjcHBfcmVhZGVyICpwZmlsZSwK IAkJCQkJICAgQ1BQX0JVRl9DT0xVTU4gKHBmaWxlLT5idWZmZXIsCiAJCQkJCQkJICAgcGZpbGUt PmJ1ZmZlci0+Y3VyKSk7CiAJICBsb2MgPSBDT01CSU5FX0xPQ0FUSU9OX0RBVEEgKHBmaWxlLT5s aW5lX3RhYmxlLAotCQkJCSAgICAgICBsb2MsIHRva19yYW5nZSwgTlVMTCk7CisJCQkJICAgICAg IGxvYywgdG9rX3JhbmdlLCBOVUxMLCAwKTsKIAl9CiAKICAgICAgIGVuY29kaW5nX3JpY2hfbG9j YXRpb24gcmljaF9sb2MgKHBmaWxlLCBsb2MpOwpAQCAtNDA5OSw3ICs0MTAwLDcgQEAgX2NwcF9s ZXhfZGlyZWN0IChjcHBfcmVhZGVyICpwZmlsZSkKIAogICAgICAgcmVzdWx0LT5zcmNfbG9jID0g Q09NQklORV9MT0NBVElPTl9EQVRBIChwZmlsZS0+bGluZV90YWJsZSwKIAkJCQkJICAgICAgIHJl c3VsdC0+c3JjX2xvYywKLQkJCQkJICAgICAgIHRva19yYW5nZSwgTlVMTCk7CisJCQkJCSAgICAg ICB0b2tfcmFuZ2UsIE5VTEwsIDApOwogICAgIH0KIAogICByZXR1cm4gcmVzdWx0OwpkaWZmIC0t Z2l0IGEvbGliY3BwL2xpbmUtbWFwLmNjIGIvbGliY3BwL2xpbmUtbWFwLmNjCmluZGV4IDYyMDc3 YzM4NTdjLi5lMTdkMTA5ZDlmMSAxMDA2NDQKLS0tIGEvbGliY3BwL2xpbmUtbWFwLmNjCisrKyBi L2xpYmNwcC9saW5lLW1hcC5jYwpAQCAtNjcsNyArNjcsOCBAQCBsb2NhdGlvbl9hZGhvY19kYXRh X2hhc2ggKGNvbnN0IHZvaWQgKmwpCiAgIHJldHVybiAoKGhhc2h2YWxfdCkgbGItPmxvY3VzCiAJ ICArIChoYXNodmFsX3QpIGxiLT5zcmNfcmFuZ2UubV9zdGFydAogCSAgKyAoaGFzaHZhbF90KSBs Yi0+c3JjX3JhbmdlLm1fZmluaXNoCi0JICArIChzaXplX3QpIGxiLT5kYXRhKTsKKwkgICsgKHNp emVfdCkgbGItPmRhdGEKKwkgICsgbGItPmRpc2NyaW1pbmF0b3IpOwogfQogCiAvKiBDb21wYXJl IGZ1bmN0aW9uIGZvciBsb2NhdGlvbl9hZGhvY19kYXRhIGhhc2h0YWJsZS4gICovCkBAIC04Miw3 ICs4Myw4IEBAIGxvY2F0aW9uX2FkaG9jX2RhdGFfZXEgKGNvbnN0IHZvaWQgKmwxLCBjb25zdCB2 b2lkICpsMikKICAgcmV0dXJuIChsYjEtPmxvY3VzID09IGxiMi0+bG9jdXMKIAkgICYmIGxiMS0+ c3JjX3JhbmdlLm1fc3RhcnQgPT0gbGIyLT5zcmNfcmFuZ2UubV9zdGFydAogCSAgJiYgbGIxLT5z cmNfcmFuZ2UubV9maW5pc2ggPT0gbGIyLT5zcmNfcmFuZ2UubV9maW5pc2gKLQkgICYmIGxiMS0+ ZGF0YSA9PSBsYjItPmRhdGEpOworCSAgJiYgbGIxLT5kYXRhID09IGxiMi0+ZGF0YQorCSAgJiYg bGIxLT5kaXNjcmltaW5hdG9yID09IGxiMi0+ZGlzY3JpbWluYXRvcik7CiB9CiAKIC8qIFVwZGF0 ZSB0aGUgaGFzaHRhYmxlIHdoZW4gbG9jYXRpb25fYWRob2NfZGF0YSBpcyByZWFsbG9jYXRlZC4g ICovCkBAIC0xMTYsMTMgKzExOCwxNyBAQCBzdGF0aWMgYm9vbAogY2FuX2JlX3N0b3JlZF9jb21w YWN0bHlfcCAobGluZV9tYXBzICpzZXQsCiAJCQkgICBsb2NhdGlvbl90IGxvY3VzLAogCQkJICAg c291cmNlX3JhbmdlIHNyY19yYW5nZSwKLQkJCSAgIHZvaWQgKmRhdGEpCisJCQkgICB2b2lkICpk YXRhLAorCQkJICAgdW5zaWduZWQgZGlzY3JpbWluYXRvcikKIHsKICAgLyogSWYgdGhlcmUncyBh biBhZC1ob2MgcG9pbnRlciwgd2UgY2FuJ3Qgc3RvcmUgaXQgZGlyZWN0bHkgaW4gdGhlCiAgICAg IGxvY2F0aW9uX3QsIHdlIG5lZWQgdGhlIGxvb2thc2lkZS4gICovCiAgIGlmIChkYXRhKQogICAg IHJldHVybiBmYWxzZTsKIAorICBpZiAoZGlzY3JpbWluYXRvciAhPSAwKQorICAgIHJldHVybiBm YWxzZTsKKwogICAvKiBXZSBvbmx5IHN0b3JlIHJhbmdlcyB0aGF0IGJlZ2luIGF0IHRoZSBsb2N1 cyBhbmQgdGhhdCBhcmUgc3VmZmljaWVudGx5CiAgICAgICJzYW5lIi4gICovCiAgIGlmIChzcmNf cmFuZ2UubV9zdGFydCAhPSBsb2N1cykKQEAgLTE1Nyw3ICsxNjMsOCBAQCBsb2NhdGlvbl90CiBn ZXRfY29tYmluZWRfYWRob2NfbG9jIChsaW5lX21hcHMgKnNldCwKIAkJCWxvY2F0aW9uX3QgbG9j dXMsCiAJCQlzb3VyY2VfcmFuZ2Ugc3JjX3JhbmdlLAotCQkJdm9pZCAqZGF0YSkKKwkJCXZvaWQg KmRhdGEsCisJCQl1bnNpZ25lZCBkaXNjcmltaW5hdG9yKQogewogICBzdHJ1Y3QgbG9jYXRpb25f YWRob2NfZGF0YSBsYjsKICAgc3RydWN0IGxvY2F0aW9uX2FkaG9jX2RhdGEgKipzbG90OwpAQCAt MTc1LDcgKzE4Miw3IEBAIGdldF9jb21iaW5lZF9hZGhvY19sb2MgKGxpbmVfbWFwcyAqc2V0LAog CQkgIHx8IHB1cmVfbG9jYXRpb25fcCAoc2V0LCBsb2N1cykpOwogCiAgIC8qIENvbnNpZGVyIHNo b3J0LXJhbmdlIG9wdGltaXphdGlvbi4gICovCi0gIGlmIChjYW5fYmVfc3RvcmVkX2NvbXBhY3Rs eV9wIChzZXQsIGxvY3VzLCBzcmNfcmFuZ2UsIGRhdGEpKQorICBpZiAoY2FuX2JlX3N0b3JlZF9j b21wYWN0bHlfcCAoc2V0LCBsb2N1cywgc3JjX3JhbmdlLCBkYXRhLCBkaXNjcmltaW5hdG9yKSkK ICAgICB7CiAgICAgICAvKiBUaGUgbG93IGJpdHMgb3VnaHQgdG8gYmUgY2xlYXIuICAqLwogICAg ICAgbGluZW1hcF9hc3NlcnQgKHB1cmVfbG9jYXRpb25fcCAoc2V0LCBsb2N1cykpOwpAQCAtMTk1 LDE1ICsyMDIsMTYgQEAgZ2V0X2NvbWJpbmVkX2FkaG9jX2xvYyAobGluZV9tYXBzICpzZXQsCiAg ICAgIHdoZW4gbG9jdXMgPT0gc3RhcnQgPT0gZmluaXNoIChhbmQgZGF0YSBpcyBOVUxMKS4gICov CiAgIGlmIChsb2N1cyA9PSBzcmNfcmFuZ2UubV9zdGFydAogICAgICAgJiYgbG9jdXMgPT0gc3Jj X3JhbmdlLm1fZmluaXNoCi0gICAgICAmJiAhZGF0YSkKKyAgICAgICYmICFkYXRhICYmIGRpc2Ny aW1pbmF0b3IgPT0gMCkKICAgICByZXR1cm4gbG9jdXM7CiAKLSAgaWYgKCFkYXRhKQorICBpZiAo IWRhdGEgJiYgZGlzY3JpbWluYXRvciA9PSAwKQogICAgIHNldC0+bnVtX3Vub3B0aW1pemVkX3Jh bmdlcysrOwogCiAgIGxiLmxvY3VzID0gbG9jdXM7CiAgIGxiLnNyY19yYW5nZSA9IHNyY19yYW5n ZTsKICAgbGIuZGF0YSA9IGRhdGE7CisgIGxiLmRpc2NyaW1pbmF0b3IgPSBkaXNjcmltaW5hdG9y OwogICBzbG90ID0gKHN0cnVjdCBsb2NhdGlvbl9hZGhvY19kYXRhICoqKQogICAgICAgaHRhYl9m aW5kX3Nsb3QgKHNldC0+bG9jYXRpb25fYWRob2NfZGF0YV9tYXAuaHRhYiwgJmxiLCBJTlNFUlQp OwogICBpZiAoKnNsb3QgPT0gTlVMTCkKQEAgLTI0OCw2ICsyNTYsMTMgQEAgZ2V0X2RhdGFfZnJv bV9hZGhvY19sb2MgKGNvbnN0IGNsYXNzIGxpbmVfbWFwcyAqc2V0LCBsb2NhdGlvbl90IGxvYykK ICAgcmV0dXJuIHNldC0+bG9jYXRpb25fYWRob2NfZGF0YV9tYXAuZGF0YVtsb2MgJiBNQVhfTE9D QVRJT05fVF0uZGF0YTsKIH0KIAordW5zaWduZWQKK2dldF9kaXNjcmltaW5hdG9yX2Zyb21fYWRo b2NfbG9jIChjb25zdCBjbGFzcyBsaW5lX21hcHMgKnNldCwgbG9jYXRpb25fdCBsb2MpCit7Cisg IGxpbmVtYXBfYXNzZXJ0IChJU19BREhPQ19MT0MgKGxvYykpOworICByZXR1cm4gc2V0LT5sb2Nh dGlvbl9hZGhvY19kYXRhX21hcC5kYXRhW2xvYyAmIE1BWF9MT0NBVElPTl9UXS5kaXNjcmltaW5h dG9yOworfQorCiAvKiBSZXR1cm4gdGhlIGxvY2F0aW9uIGZvciB0aGUgYWRob2MgbG9jLiAgKi8K IAogbG9jYXRpb25fdApAQCAtMjkzLDYgKzMwOCwxNSBAQCBnZXRfcmFuZ2VfZnJvbV9sb2MgKGxp bmVfbWFwcyAqc2V0LAogICByZXR1cm4gc291cmNlX3JhbmdlOjpmcm9tX2xvY2F0aW9uIChsb2Mp OwogfQogCit1bnNpZ25lZAorZ2V0X2Rpc2NyaW1pbmF0b3JfZnJvbV9sb2MgKGxpbmVfbWFwcyAq c2V0LAorCQkJICAgIGxvY2F0aW9uX3QgbG9jKQoreworICBpZiAoSVNfQURIT0NfTE9DIChsb2Mp KQorICAgIHJldHVybiBnZXRfZGlzY3JpbWluYXRvcl9mcm9tX2FkaG9jX2xvYyAoc2V0LCBsb2Mp OworICByZXR1cm4gMDsKK30KKwogLyogR2V0IHdoZXRoZXIgbG9jYXRpb24gTE9DIGlzIGEgInB1 cmUiIGxvY2F0aW9uLCBvcgogICAgd2hldGhlciBpdCBpcyBhbiBhZC1ob2MgbG9jYXRpb24sIG9y IGVtYmVkcyByYW5nZSBpbmZvcm1hdGlvbi4gICovCiAKLS0gCjIuMjUuMQoK --_002_CY5PR21MB3542D0F20CA6FABD7B3F3953917B9CY5PR21MB3542namp_--