Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p0JH0-00051K-HC for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Nov 2022 09:20:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p0JGy-0005Vr-Vi for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Nov 2022 09:20:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p0JGx-0005Vi-Lh for pgsql-hackers@lists.postgresql.org; Wed, 30 Nov 2022 09:20:56 +0000 Received: from mail-db5eur02on2096.outbound.protection.outlook.com ([40.107.249.96] helo=EUR02-DB5-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p0JGq-0005gg-0f for pgsql-hackers@lists.postgresql.org; Wed, 30 Nov 2022 09:20:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I2GURWOe5529dTZF7QlU9IN62O9MpAqbSsbeSlQ32bQnFfhDEpBtyUxpQWLFREDWw3WKle9L0hpAxnKjhb5u9dzLNZdlwCnX+jyESskSDga9pbgQfYsuP86LAX+0S/tjM9MNkOkugJlq0ESh4TRr4ZOsJgGDQX+Q3vE45gM0DtABiJ5U4jxpJziVUxAAcpacBfGKNGr0qtuYTqczrunmRSWeajxvOA88eNKeCyHJOUJyVPFvvFz3yA9YWfOJNK4s7TKxSFXSbhRRLEb8a5P/o14zcOFlBgICcaOEPkv5WTxOaSh7rrVbguTb5hCQyyeSYw3myJJsIWH7o/StfagzOA== 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=uwDL79LC7fEjze8cMTCSSPWT4lCzQk5IpuKPBDWotnI=; b=CF7lS/5nsCSoUsYcpggWS3edcsjdo8VPkb5QGrMS/CdHCdmX4OqykDhIj5J45jnKAzUx0qry9HCelkcrvAMAzxq4xBxxUVroqjaqcVHnIV2TLf0X8IN9J6x0fqd6uyv6HRDkbE5gMuVl5omvly/GUdI6ZYLTlJK0p+er14VpdJDPBnlFhUaDKR3Y4oguf30/QSSyBHDKY+48lqxPiy+90C8eAXWgqNKKCw263skXHnZYInY3STJ+MQx9RZZIpLKLciqmLu+Oc1dOca1dzd0KsaTJ09Pmut2UitqW0MUP9ZJ9oF46o7x4GP6vx1zTSGi8YQsFKtFfspbykKWZ0wM4gw== 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=uwDL79LC7fEjze8cMTCSSPWT4lCzQk5IpuKPBDWotnI=; b=f95DYj3oVLdC+nBDwmgVTRNibClTfZzMl7isoIisVpx7UJc0Q8tc+lUfD4ZT9yAAy3rGIsGy+gu0vfTxTcmu0S2RnRtM9lfpHXGpXD5L0Ol/F6zAv69ahl0jm0rHuD49w5rtWqVIxF5JkzxcYTavlGvM6MSJeEDPFnirZnAdaiA= Received: from DBBPR83MB0507.EURPRD83.prod.outlook.com (2603:10a6:10:209::18) by PR3PR83MB0473.EURPRD83.prod.outlook.com (2603:10a6:102:7e::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.1; Wed, 30 Nov 2022 09:20:42 +0000 Received: from DBBPR83MB0507.EURPRD83.prod.outlook.com ([fe80::98f9:f548:d8dd:dcd8]) by DBBPR83MB0507.EURPRD83.prod.outlook.com ([fe80::98f9:f548:d8dd:dcd8%8]) with mapi id 15.20.5880.008; Wed, 30 Nov 2022 09:20:42 +0000 From: Jelte Fennema To: Daniel Gustafsson , Peter Eisentraut CC: Jacob Champion , Tom Lane , Andres Freund , Justin Pryzby , Robert Haas , "pgsql-hackers@lists.postgresql.org" Subject: Re: [EXTERNAL] Re: Add non-blocking version of PQcancel Thread-Topic: [EXTERNAL] Re: Add non-blocking version of PQcancel Thread-Index: AQHY+Oa3XzQjIvdKkE+tbSpJXnuUBK5WXLmAgABDCXc= Date: Wed, 30 Nov 2022 09:20:42 +0000 Message-ID: References: <20220324224909.4tnubqv2owmfoyoc@alap3.anarazel.de> <3453535.1648234019@sss.pgh.pa.us> <3457746.1648236890@sss.pgh.pa.us> <20220331054704.GL28503@telsasoft.com> <20220625013617.e4qvy6qlaukgvfpo@alap3.anarazel.de> <2906785.1663192411@sss.pgh.pa.us> <99e3d1c5-4dd7-70f1-a520-89288a3496c2@timescale.com> <687DC7BE-C7F7-453D-88CF-E07855D34A44@yesql.se> In-Reply-To: <687DC7BE-C7F7-453D-88CF-E07855D34A44@yesql.se> 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_Enabled=True;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2022-11-30T09:20:41.625Z;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=General;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; 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: DBBPR83MB0507:EE_|PR3PR83MB0473:EE_ x-ms-office365-filtering-correlation-id: 05e09947-0e61-4385-bd45-08dad2b42751 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ytEC/XQupqFL2Kl7mcqRNZ0Y8gXPnbmVelPcpm/VomooYf1GkcDp6NBbPHy+YVUolRklAB/la5QbgOnyk52EC/9ha/eOYcoQBK9YqR30IbWrIObYs45us51nsotkcJIXzN1cbF7W7UlhgvFKO6kLPtgVbYrEDXivt4unno8y0u5bJ8Oqz3xWCf1wbLx8/0BZJjy839z8+YyE9hUuq0FJy1SV+xWaVmgdNDZrlkBPl/Ud7P1JwyCbOEzmk3T5uycbGkCW3NE1m9vuMIr5AUog+RFzJ4pU4vmd5ZHH7xE3yNPWRME9DhvlWK4JGSL7sPaqn8KiTqQ0qt2B7Qph+WgMFpb0mX/aek5aBRcxCRxaDc6Nw+/+7PQLl3iaJiIyVHtxhJMxrKBkP4hTlyc7JevVPFyo5o98ot6Hr9HD05JYO/jE6ychwlSEc+IxVm1xVmCWFzalsbBP3f4DFl234VktaMrP0uAoV3giE9WNNSwmNmj4sydOtC3xyvRDRH+/xBm900uLSFjlQML4XXU8tTPBPJhzZ+OLhGJSpIVylb9GRiVxShCCPx10hYQHCWBPLXJyAiMxEQ5/QBW4A0GznGKgQGpDdXcVqDhSgI8JURw7WG2fkokRoFLy0SpVLwlSbUr7CvtsFzRzfECIzy2pEPzBRX/CDbVur/VgNvtacFn/aSWGtuRV+q/GK66wvmq2dulfU2/1X6amHUrZvx7xF7Nt4+PJEOP2EAiTKrzBXnDczzO5aL5GLlt3QKF5+o8u86K8 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBBPR83MB0507.EURPRD83.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(366004)(376002)(346002)(136003)(396003)(451199015)(5660300002)(4744005)(64756008)(66556008)(66476007)(4326008)(66446008)(8676002)(52536014)(8936002)(41300700001)(54906003)(10290500003)(110136005)(71200400001)(478600001)(8990500004)(316002)(76116006)(2906002)(33656002)(66946007)(83380400001)(9686003)(6506007)(7696005)(86362001)(38070700005)(186003)(91956017)(26005)(82950400001)(122000001)(38100700002)(55016003)(82960400001)(99936003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?HfjY8hhvtO1EClag2ng0RIl6i5aYjXJ/T0/LrhYU8T2rzYVrQ64qXrt3ag?= =?iso-8859-1?Q?0gmuesr39joSRpFobBo6s/SEeEzs2pnur1zCXjf1HXX3IAVdRNHSQ3FOrO?= =?iso-8859-1?Q?AWdUxmw01e1heA6WIr2CiMBGwwq1KSOerEkMtpL6axok35D9b9maqcBwPL?= =?iso-8859-1?Q?Gdjm275CazK+vKprA5o0Grw846z2WAGjbiOmdV3pLvTR2Xj3wLuBYP+ogh?= =?iso-8859-1?Q?XbUGZJv1c4cC9Iv+YUT+juREYA6ybPZtU+f0j5j2RxT2ofwF/vCwp+r4Px?= =?iso-8859-1?Q?JkWYp2VR0Y+HVKhagIhWRCap8B+kfpFvyniIN6NkPYpflj17ANAM9M75zW?= =?iso-8859-1?Q?Rcf9DNs5G+DFYXMniz7vP8WAWSTN+oD4U7k8vgfSCG3inKN4deXwAVYUt3?= =?iso-8859-1?Q?s0VKIkbYr+HGdzdueWvgT9bN3AuhizLolbRI9GXy6zehlRgOE75cFYjcXR?= =?iso-8859-1?Q?BtBtUebFM3d4Sbki6Wrp1D3/o9wWJW/E5oMcI83dZyOsqGn9GvpoyqFDxf?= =?iso-8859-1?Q?4y8hUx+wn72Np6j0nlVYlTZ8BF44p5aqlFJr5sjqmoFuplL+e7y4smLyya?= =?iso-8859-1?Q?3e9PEfAWeWtXh1PxjIvNLeLEV2XopBrkotf6zzdlmHZBBDY9cxi3orhXnI?= =?iso-8859-1?Q?Hxq9K/izk4SmJ85zYmKy/iylup893qFXXDDy883OpYetWWTH5Lg/LAnX85?= =?iso-8859-1?Q?Aw+wH8c6QA6m2ZAvEhH5cO7sQFAhn30VCBwUjpy4N5PsY07wKTbiagmaeX?= =?iso-8859-1?Q?vYuIjaX80/4dG70g7q3JMIjzxZsL/K5zt/J84pTq1ayrHXJ4dbj8ueQHwh?= =?iso-8859-1?Q?kaVt06z15jaf5ljLh4GsAAPoZAfZPk8ZnfdJ2/Ri7Oo+adrwzKAtOr1uyF?= =?iso-8859-1?Q?vcNu0xPEzPaz9Z7IoAtm5IRP8Hqa1uomz44MlPoAHihAwcV3LEf41MJO1Y?= =?iso-8859-1?Q?AuLgf5P1Tu2YX7S2OTCR75Fl0XAoZ+PMsE0iNwTXE16e2LTAsFT/VsR/ic?= =?iso-8859-1?Q?6kK0CjImU3B6e0VCRTe701BOB+IBWJtkDR5EncZQ4RKiWIS6PEHqYt2aFY?= =?iso-8859-1?Q?Kj7mqN2p0JQ4sTg4pRqGvlO4u3ZyFsVlb6waniUf5dPT2grsMwhnC1uoS5?= =?iso-8859-1?Q?fmVs1fUwfxmW55+9ilseST226Lp62lJwtw3GVoy0TTBy5KCEPFuTjfeZbd?= =?iso-8859-1?Q?0jXZCgeFLQHKkCRuBsudKWdO0yf1onCLfp37bI8Bc7VN1hBZ88B4yDbD0e?= =?iso-8859-1?Q?4MndmQjgUxgIqt/z4vQVTnmrJ3xGma6WYxHV3Kllxgx4Yn6eazdT7BCThR?= =?iso-8859-1?Q?5MVdXX4t7YpYUCv3gHy/CHZalLXYl0svojcH03yMjv5wK88MUU1Zs2CRjX?= =?iso-8859-1?Q?xvnd39acVc58cI5iMIEOxa/2WoAbQ8G0LKnh92BJl9vCMtazjfiEf8IGni?= =?iso-8859-1?Q?jpvS9pTYhYQqDRdkLYOg8ngY7GNUW43pdt+Je7WpcElBCb9QMaRRWJQO9x?= =?iso-8859-1?Q?CQjUX0GxhBe0ExMK85o8nZB2ZD4tGFnYvXvrhB896h3ybMGwC3a0gN3G0o?= =?iso-8859-1?Q?VgyPT8RKOGj92TbPAgpabOH3oaoXVUGMWdwXE5WBOoaXNIei81QKhw/nnR?= =?iso-8859-1?Q?Ck1yu3axHc6gqbJyEeHxm/DFEaRX9woK4U?= Content-Type: multipart/mixed; boundary="_003_DBBPR83MB05071BB8A8838830CABAFFE1F7129DBBPR83MB0507EURP_" MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBBPR83MB0507.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 05e09947-0e61-4385-bd45-08dad2b42751 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2022 09:20:42.1492 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: opucxYnDggcl3LJSQ+UmpFvqBuYFBqEW/hzeA3Lsv02ViUDR4/Z+XnuEApCebcwMHuTdBpNkOaKJrtGUotdXMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR83MB0473 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_003_DBBPR83MB05071BB8A8838830CABAFFE1F7129DBBPR83MB0507EURP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable > This version of the patch no longer applies, a rebased version is needed.= =0A= =0A= Attached is a patch that applies cleanly again and is also changed=0A= to use the recently introduced libpq_append_conn_error.=0A= =0A= I also attached a patch that runs pgindent after the introduction of=0A= libpq_append_conn_error. I noticed that this hadn't happened when=0A= trying to run pgindent on my own changes.= --_003_DBBPR83MB05071BB8A8838830CABAFFE1F7129DBBPR83MB0507EURP_ Content-Type: application/octet-stream; name="v9-0001-libpq-Run-pgindent-after-a9e9a9f32b3.patch" Content-Description: v9-0001-libpq-Run-pgindent-after-a9e9a9f32b3.patch Content-Disposition: attachment; filename="v9-0001-libpq-Run-pgindent-after-a9e9a9f32b3.patch"; size=40288; creation-date="Wed, 30 Nov 2022 09:20:01 GMT"; modification-date="Wed, 30 Nov 2022 09:20:01 GMT" Content-Transfer-Encoding: base64 RnJvbSA5YmY5OTc3NjI3ODZmOWQyNzZmMjExYzU4ODkxOGExY2RjYTU5OGQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hIDxqZWx0ZS5mZW5uZW1hQG1pY3Jvc29m dC5jb20+CkRhdGU6IFdlZCwgMzAgTm92IDIwMjIgMTA6MDc6MTkgKzAxMDAKU3ViamVjdDogW1BB VENIIHY5IDEvMl0gbGlicHE6IFJ1biBwZ2luZGVudCBhZnRlciBhOWU5YTlmMzJiMwoKSXQgc2Vl bXMgdGhhdCBwZ2luZGVudCB3YXMgbm90IHJ1biBhZnRlciB0aGUgZXJyb3IgaGFuZGxpbmcgcmVm YWN0b3IgaW4KY29tbWl0IGE5ZTlhOWYzMmIzNWVkZjEyOWM4OGU4YjkyOWVmMjIzZjg1MTFmNTku IFRoaXMgZml4ZXMgdGhhdCBhbmQKYWxzbyBhZGRyZXNzZXMgYSBmZXcgb3RoZXIgdGhpbmdzIHBn aW5kZW50IHdhbnRlZCB0byBjaGFuZ2UgaW4gbGlicHEuCi0tLQogc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtYXV0aC1zY3JhbS5jICAgICB8ICAgMiArLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC5jICAgICAgICAgICB8ICAgOCArLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVj dC5jICAgICAgICB8IDEyNCArKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtZXhlYy5jICAgICAgICAgICB8ICAxNiArLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWxvYmouYyAgICAgICAgICAgfCAgNDIgKysrKy0tLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLW1pc2MuYyAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXBy b3RvY29sMy5jICAgICAgfCAgIDIgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1j b21tb24uYyAgfCAgIDYgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1nc3NhcGku YyAgfCAgMTIgKy0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtb3BlbnNzbC5jIHwg IDY0ICsrKysrKy0tLS0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMgICAgICAg ICB8ICAgOCArLQogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggICAgICAgICB8ICAg NCArLQogMTIgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKyksIDE0OSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLXNjcmFtLmMgYi9z cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLXNjcmFtLmMKaW5kZXggZTcxNjI2NTgwYS4uYjhl OTYxNzk1ZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5j CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtc2NyYW0uYwpAQCAtNzEwLDcgKzcx MCw3IEBAIHJlYWRfc2VydmVyX2ZpbmFsX21lc3NhZ2UoZmVfc2NyYW1fc3RhdGUgKnN0YXRlLCBj aGFyICppbnB1dCkKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiZXJyb3IgcmVjZWl2ZWQgZnJvbSBzZXJ2ZXIgaW4gU0NSQU0gZXhjaGFuZ2U6 ICVzIiwKLQkJCQkJCSAgIGVycm1zZyk7CisJCQkJCQkJCWVycm1zZyk7CiAJCXJldHVybiBmYWxz ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGguYyBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGguYwppbmRleCA0YTZjMzU4YmI2Li4zY2FjYTQ1NWFh IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmMKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtYXV0aC5jCkBAIC03Myw3ICs3Myw3IEBAIHBnX0dTU19jb250aW51 ZShQR2Nvbm4gKmNvbm4sIGludCBwYXlsb2FkbGVuKQogCQlpZiAoIWdpbmJ1Zi52YWx1ZSkKIAkJ ewogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBvZiBtZW1vcnkgYWxsb2Nh dGluZyBHU1NBUEkgYnVmZmVyICglZCkiLAotCQkJCQkJCSAgcGF5bG9hZGxlbik7CisJCQkJCQkJ CQlwYXlsb2FkbGVuKTsKIAkJCXJldHVybiBTVEFUVVNfRVJST1I7CiAJCX0KIAkJaWYgKHBxR2V0 bmNoYXIoZ2luYnVmLnZhbHVlLCBwYXlsb2FkbGVuLCBjb25uKSkKQEAgLTIyMyw3ICsyMjMsNyBA QCBwZ19TU1BJX2NvbnRpbnVlKFBHY29ubiAqY29ubiwgaW50IHBheWxvYWRsZW4pCiAJCWlmICgh aW5wdXRidWYpCiAJCXsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJvdXQgb2Yg bWVtb3J5IGFsbG9jYXRpbmcgU1NQSSBidWZmZXIgKCVkKSIsCi0JCQkJCQkJICBwYXlsb2FkbGVu KTsKKwkJCQkJCQkJCXBheWxvYWRsZW4pOwogCQkJcmV0dXJuIFNUQVRVU19FUlJPUjsKIAkJfQog CQlpZiAocHFHZXRuY2hhcihpbnB1dGJ1ZiwgcGF5bG9hZGxlbiwgY29ubikpCkBAIC02MjMsNyAr NjIzLDcgQEAgcGdfU0FTTF9jb250aW51ZShQR2Nvbm4gKmNvbm4sIGludCBwYXlsb2FkbGVuLCBi b29sIGZpbmFsKQogCWlmICghY2hhbGxlbmdlKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgIm91dCBvZiBtZW1vcnkgYWxsb2NhdGluZyBTQVNMIGJ1ZmZlciAoJWQpIiwKLQkJ CQkJCSAgcGF5bG9hZGxlbik7CisJCQkJCQkJCXBheWxvYWRsZW4pOwogCQlyZXR1cm4gU1RBVFVT X0VSUk9SOwogCX0KIApAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgUFFlbmNyeXB0UGFzc3dvcmRDb25u KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcGFzc3dkLCBjb25zdCBjaGFyICp1c2VyLAogCWVs c2UKIAl7CiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJ1bnJlY29nbml6ZWQgcGFz c3dvcmQgZW5jcnlwdGlvbiBhbGdvcml0aG0gXCIlc1wiIiwKLQkJCQkJCSAgYWxnb3JpdGhtKTsK KwkJCQkJCQkJYWxnb3JpdGhtKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1jb25uZWN0LmMKaW5kZXggZjg4ZDY3MmM2Yy4uZDBjM2IyMWZiOSAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWNvbm5lY3QuYwpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgY29ubmVjdE9wdGlvbnMyKFBHY29u biAqY29ubikKIAkJewogCQkJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9CQUQ7CiAJCQlsaWJw cV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IG1hdGNoICVkIGhvc3QgbmFtZXMg dG8gJWQgaG9zdGFkZHIgdmFsdWVzIiwKLQkJCQkJCQkgICBjb3VudF9jb21tYV9zZXBhcmF0ZWRf ZWxlbXMoY29ubi0+cGdob3N0KSwgY29ubi0+bmNvbm5ob3N0KTsKKwkJCQkJCQkJCWNvdW50X2Nv bW1hX3NlcGFyYXRlZF9lbGVtcyhjb25uLT5wZ2hvc3QpLCBjb25uLT5uY29ubmhvc3QpOwogCQkJ cmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgY29ubmVjdE9wdGlv bnMyKFBHY29ubiAqY29ubikKIAkJewogCQkJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9CQUQ7 CiAJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IG1hdGNoICVkIHBv cnQgbnVtYmVycyB0byAlZCBob3N0cyIsCi0JCQkJCQkJICAgY291bnRfY29tbWFfc2VwYXJhdGVk X2VsZW1zKGNvbm4tPnBncG9ydCksIGNvbm4tPm5jb25uaG9zdCk7CisJCQkJCQkJCQljb3VudF9j b21tYV9zZXBhcmF0ZWRfZWxlbXMoY29ubi0+cGdwb3J0KSwgY29ubi0+bmNvbm5ob3N0KTsKIAkJ CXJldHVybiBmYWxzZTsKIAkJfQogCX0KQEAgLTEyNDgsNyArMTI0OCw3IEBAIGNvbm5lY3RPcHRp b25zMihQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fQkFE OwogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImludmFsaWQgJXMgdmFsdWU6IFwi JXNcIiIsCi0JCQkJCQkJICAgImNoYW5uZWxfYmluZGluZyIsIGNvbm4tPmNoYW5uZWxfYmluZGlu Zyk7CisJCQkJCQkJCQkiY2hhbm5lbF9iaW5kaW5nIiwgY29ubi0+Y2hhbm5lbF9iaW5kaW5nKTsK IAkJCXJldHVybiBmYWxzZTsKIAkJfQogCX0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIGNvbm5lY3RP cHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05f QkFEOwogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImludmFsaWQgJXMgdmFsdWU6 IFwiJXNcIiIsCi0JCQkJCQkJICAgInNzbG1vZGUiLCBjb25uLT5zc2xtb2RlKTsKKwkJCQkJCQkJ CSJzc2xtb2RlIiwgY29ubi0+c3NsbW9kZSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIApAQCAt MTI5Myw3ICsxMjkzLDcgQEAgY29ubmVjdE9wdGlvbnMyKFBHY29ubiAqY29ubikKIAkJCWNhc2Ug J3YnOgkJCS8qICJ2ZXJpZnktY2EiIG9yICJ2ZXJpZnktZnVsbCIgKi8KIAkJCQljb25uLT5zdGF0 dXMgPSBDT05ORUNUSU9OX0JBRDsKIAkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAi c3NsbW9kZSB2YWx1ZSBcIiVzXCIgaW52YWxpZCB3aGVuIFNTTCBzdXBwb3J0IGlzIG5vdCBjb21w aWxlZCBpbiIsCi0JCQkJCQkJCSAgIGNvbm4tPnNzbG1vZGUpOworCQkJCQkJCQkJCWNvbm4tPnNz bG1vZGUpOwogCQkJCXJldHVybiBmYWxzZTsKIAkJfQogI2VuZGlmCkBAIC0xMzEzLDE2ICsxMzEz LDE2IEBAIGNvbm5lY3RPcHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJewogCQljb25uLT5zdGF0dXMg PSBDT05ORUNUSU9OX0JBRDsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImludmFs aWQgJXMgdmFsdWU6IFwiJXNcIiIsCi0JCQkJCQkgICAic3NsX21pbl9wcm90b2NvbF92ZXJzaW9u IiwKLQkJCQkJCSAgIGNvbm4tPnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbik7CisJCQkJCQkJCSJz c2xfbWluX3Byb3RvY29sX3ZlcnNpb24iLAorCQkJCQkJCQljb25uLT5zc2xfbWluX3Byb3RvY29s X3ZlcnNpb24pOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCWlmICghc3NsVmVyaWZ5UHJvdG9jb2xW ZXJzaW9uKGNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbikpCiAJewogCQljb25uLT5zdGF0 dXMgPSBDT05ORUNUSU9OX0JBRDsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImlu dmFsaWQgJXMgdmFsdWU6IFwiJXNcIiIsCi0JCQkJCQkgICAic3NsX21heF9wcm90b2NvbF92ZXJz aW9uIiwKLQkJCQkJCSAgIGNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbik7CisJCQkJCQkJ CSJzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24iLAorCQkJCQkJCQljb25uLT5zc2xfbWF4X3Byb3Rv Y29sX3ZlcnNpb24pOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0xMzU5LDcgKzEzNTksNyBA QCBjb25uZWN0T3B0aW9uczIoUEdjb25uICpjb25uKQogCQl7CiAJCQljb25uLT5zdGF0dXMgPSBD T05ORUNUSU9OX0JBRDsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJnc3NlbmNt b2RlIHZhbHVlIFwiJXNcIiBpbnZhbGlkIHdoZW4gR1NTQVBJIHN1cHBvcnQgaXMgbm90IGNvbXBp bGVkIGluIiwKLQkJCQkJCQkgICBjb25uLT5nc3NlbmNtb2RlKTsKKwkJCQkJCQkJCWNvbm4tPmdz c2VuY21vZGUpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAjZW5kaWYKQEAgLTEzOTIsOCArMTM5 Miw4IEBAIGNvbm5lY3RPcHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJCWNvbm4tPnN0YXR1 cyA9IENPTk5FQ1RJT05fQkFEOwogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImlu dmFsaWQgJXMgdmFsdWU6IFwiJXNcIiIsCi0JCQkJCQkJICAgInRhcmdldF9zZXNzaW9uX2F0dHJz IiwKLQkJCQkJCQkgICBjb25uLT50YXJnZXRfc2Vzc2lvbl9hdHRycyk7CisJCQkJCQkJCQkidGFy Z2V0X3Nlc3Npb25fYXR0cnMiLAorCQkJCQkJCQkJY29ubi0+dGFyZ2V0X3Nlc3Npb25fYXR0cnMp OwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMTYwOSw3ICsxNjA5LDcgQEAgY29ubmVj dE5vRGVsYXkoUEdjb25uICpjb25uKQogCQljaGFyCQlzZWJ1ZltQR19TVFJFUlJPUl9SX0JVRkxF Tl07CiAKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzZXQgc29j a2V0IHRvIFRDUCBubyBkZWxheSBtb2RlOiAlcyIsCi0JCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNP Q0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCVNPQ0tfU1RSRVJST1Io U09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJcmV0dXJuIDA7CiAJfQogI2Vu ZGlmCkBAIC0xNzg3LDcgKzE3ODcsNyBAQCBwYXJzZV9pbnRfcGFyYW0oY29uc3QgY2hhciAqdmFs dWUsIGludCAqcmVzdWx0LCBQR2Nvbm4gKmNvbm4sCiAKIGVycm9yOgogCWxpYnBxX2FwcGVuZF9j b25uX2Vycm9yKGNvbm4sICJpbnZhbGlkIGludGVnZXIgdmFsdWUgXCIlc1wiIGZvciBjb25uZWN0 aW9uIG9wdGlvbiBcIiVzXCIiLAotCQkJCQkgICB2YWx1ZSwgY29udGV4dCk7CisJCQkJCQkJdmFs dWUsIGNvbnRleHQpOwogCXJldHVybiBmYWxzZTsKIH0KIApAQCAtMTgxNiw5ICsxODE2LDkgQEAg c2V0S2VlcGFsaXZlc0lkbGUoUEdjb25uICpjb25uKQogCQljaGFyCQlzZWJ1ZltQR19TVFJFUlJP Ul9SX0JVRkxFTl07CiAKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIiVzKCVzKSBm YWlsZWQ6ICVzIiwKLQkJCQkJCSAgICJzZXRzb2Nrb3B0IiwKLQkJCQkJCSAgIFBHX1RDUF9LRUVQ QUxJVkVfSURMRV9TVFIsCi0JCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVm LCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCSJzZXRzb2Nrb3B0IiwKKwkJCQkJCQkJUEdfVENQ X0tFRVBBTElWRV9JRExFX1NUUiwKKwkJCQkJCQkJU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBz ZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQlyZXR1cm4gMDsKIAl9CiAjZW5kaWYKQEAgLTE4NTAs OSArMTg1MCw5IEBAIHNldEtlZXBhbGl2ZXNJbnRlcnZhbChQR2Nvbm4gKmNvbm4pCiAJCWNoYXIJ CXNlYnVmW1BHX1NUUkVSUk9SX1JfQlVGTEVOXTsKIAogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAiJXMoJXMpIGZhaWxlZDogJXMiLAotCQkJCQkJICAgInNldHNvY2tvcHQiLAotCQkJ CQkJICAgIlRDUF9LRUVQSU5UVkwiLAotCQkJCQkJICAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5P LCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJCQkic2V0c29ja29wdCIsCisJCQkJCQkJ CSJUQ1BfS0VFUElOVFZMIiwKKwkJCQkJCQkJU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1 Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQlyZXR1cm4gMDsKIAl9CiAjZW5kaWYKQEAgLTE4ODUsOSAr MTg4NSw5IEBAIHNldEtlZXBhbGl2ZXNDb3VudChQR2Nvbm4gKmNvbm4pCiAJCWNoYXIJCXNlYnVm W1BHX1NUUkVSUk9SX1JfQlVGTEVOXTsKIAogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAiJXMoJXMpIGZhaWxlZDogJXMiLAotCQkJCQkJICAgInNldHNvY2tvcHQiLAotCQkJCQkJICAg IlRDUF9LRUVQQ05UIiwKLQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYs IHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQkJInNldHNvY2tvcHQiLAorCQkJCQkJCQkiVENQX0tF RVBDTlQiLAorCQkJCQkJCQlTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yo c2VidWYpKSk7CiAJCXJldHVybiAwOwogCX0KICNlbmRpZgpAQCAtMTk0OSw4ICsxOTQ5LDggQEAg cHJlcEtlZXBhbGl2ZXNXaW4zMihQR2Nvbm4gKmNvbm4pCiAJaWYgKCFzZXRLZWVwYWxpdmVzV2lu MzIoY29ubi0+c29jaywgaWRsZSwgaW50ZXJ2YWwpKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3IoY29ubiwgIiVzKCVzKSBmYWlsZWQ6IGVycm9yIGNvZGUgJWQiLAotCQkJCQkJICAiV1NB SW9jdGwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIiwKLQkJCQkJCSAgV1NBR2V0TGFzdEVycm9yKCkp OworCQkJCQkJCQkiV1NBSW9jdGwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIiwKKwkJCQkJCQkJV1NB R2V0TGFzdEVycm9yKCkpOwogCQlyZXR1cm4gMDsKIAl9CiAJcmV0dXJuIDE7CkBAIC0xOTgzLDkg KzE5ODMsOSBAQCBzZXRUQ1BVc2VyVGltZW91dChQR2Nvbm4gKmNvbm4pCiAJCWNoYXIJCXNlYnVm WzI1Nl07CiAKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIiVzKCVzKSBmYWlsZWQ6 ICVzIiwKLQkJCQkJCSAgICJzZXRzb2Nrb3B0IiwKLQkJCQkJCSAgICJUQ1BfVVNFUl9USU1FT1VU IiwKLQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1 ZikpKTsKKwkJCQkJCQkJInNldHNvY2tvcHQiLAorCQkJCQkJCQkiVENQX1VTRVJfVElNRU9VVCIs CisJCQkJCQkJCVNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1Zikp KTsKIAkJcmV0dXJuIDA7CiAJfQogI2VuZGlmCkBAIC0yMzU0LDcgKzIzNTQsNyBAQCBrZWVwX2dv aW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJ CQlpZiAocmV0IHx8ICFjb25uLT5hZGRybGlzdCkKIAkJCQl7CiAJCQkJCWxpYnBxX2FwcGVuZF9j b25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgdHJhbnNsYXRlIGhvc3QgbmFtZSBcIiVzXCIgdG8g YWRkcmVzczogJXMiLAotCQkJCQkJCQkJICAgY2gtPmhvc3QsIGdhaV9zdHJlcnJvcihyZXQpKTsK KwkJCQkJCQkJCQkJY2gtPmhvc3QsIGdhaV9zdHJlcnJvcihyZXQpKTsKIAkJCQkJZ290byBrZWVw X2dvaW5nOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTIzNjYsNyArMjM2Niw3IEBAIGtlZXBfZ29p bmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJ CWlmIChyZXQgfHwgIWNvbm4tPmFkZHJsaXN0KQogCQkJCXsKIAkJCQkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBwYXJzZSBuZXR3b3JrIGFkZHJlc3MgXCIlc1wiOiAl cyIsCi0JCQkJCQkJCQkgICBjaC0+aG9zdGFkZHIsIGdhaV9zdHJlcnJvcihyZXQpKTsKKwkJCQkJ CQkJCQkJY2gtPmhvc3RhZGRyLCBnYWlfc3RyZXJyb3IocmV0KSk7CiAJCQkJCWdvdG8ga2VlcF9n b2luZzsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC0yMzc3LDggKzIzNzcsOCBAQCBrZWVwX2dvaW5n OgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQlp ZiAoc3RybGVuKHBvcnRzdHIpID49IFVOSVhTT0NLX1BBVEhfQlVGTEVOKQogCQkJCXsKIAkJCQkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlVuaXgtZG9tYWluIHNvY2tldCBwYXRoIFwi JXNcIiBpcyB0b28gbG9uZyAobWF4aW11bSAlZCBieXRlcykiLAotCQkJCQkJCQkJICAgcG9ydHN0 ciwKLQkJCQkJCQkJCSAgIChpbnQpIChVTklYU09DS19QQVRIX0JVRkxFTiAtIDEpKTsKKwkJCQkJ CQkJCQkJcG9ydHN0ciwKKwkJCQkJCQkJCQkJKGludCkgKFVOSVhTT0NLX1BBVEhfQlVGTEVOIC0g MSkpOwogCQkJCQlnb3RvIGtlZXBfZ29pbmc7CiAJCQkJfQogCkBAIC0yMzkxLDcgKzIzOTEsNyBA QCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhl cmUgaXMKIAkJCQlpZiAocmV0IHx8ICFjb25uLT5hZGRybGlzdCkKIAkJCQl7CiAJCQkJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgdHJhbnNsYXRlIFVuaXgtZG9tYWlu IHNvY2tldCBwYXRoIFwiJXNcIiB0byBhZGRyZXNzOiAlcyIsCi0JCQkJCQkJCQkgICBwb3J0c3Ry LCBnYWlfc3RyZXJyb3IocmV0KSk7CisJCQkJCQkJCQkJCXBvcnRzdHIsIGdhaV9zdHJlcnJvcihy ZXQpKTsKIAkJCQkJZ290byBrZWVwX2dvaW5nOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTI1MTMs NyArMjUxMyw3IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVy ZSB1bnRpbCB0aGVyZSBpcwogCQkJCQkJfQogCQkJCQkJZW1pdEhvc3RJZGVudGl0eUluZm8oY29u biwgaG9zdF9hZGRyKTsKIAkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3Vs ZCBub3QgY3JlYXRlIHNvY2tldDogJXMiLAotCQkJCQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoZXJy b3Jubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQkJCQkJCVNPQ0tfU1RSRVJST1Io ZXJyb3Jubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJCWdvdG8gZXJyb3JfcmV0dXJu OwogCQkJCQl9CiAKQEAgLTI1NDMsNyArMjU0Myw3IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ug d2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQlpZiAoIXBnX3NldF9u b2Jsb2NrKGNvbm4tPnNvY2spKQogCQkJCQl7CiAJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAiY291bGQgbm90IHNldCBzb2NrZXQgdG8gbm9uYmxvY2tpbmcgbW9kZTogJXMiLAot CQkJCQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1 ZikpKTsKKwkJCQkJCQkJCQkJCVNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVv ZihzZWJ1ZikpKTsKIAkJCQkJCWNvbm4tPnRyeV9uZXh0X2FkZHIgPSB0cnVlOwogCQkJCQkJZ290 byBrZWVwX2dvaW5nOwogCQkJCQl9CkBAIC0yNTUyLDcgKzI1NTIsNyBAQCBrZWVwX2dvaW5nOgkJ CQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQkJaWYg KGZjbnRsKGNvbm4tPnNvY2ssIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKQogCQkJCQl7CiAJ CQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IHNldCBzb2NrZXQg dG8gY2xvc2Utb24tZXhlYyBtb2RlOiAlcyIsCi0JCQkJCQkJCQkJICAgU09DS19TVFJFUlJPUihT T0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJCQkJCQkJU09DS19TVFJF UlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQkJCQkJY29ubi0+dHJ5 X25leHRfYWRkciA9IHRydWU7CiAJCQkJCQlnb3RvIGtlZXBfZ29pbmc7CiAJCQkJCX0KQEAgLTI1 ODEsOSArMjU4MSw5IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8g aGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQkJCQkJCQkoY2hhciAqKSAmb24sIHNpemVvZihvbikp IDwgMCkKIAkJCQkJCXsKIAkJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiJXMo JXMpIGZhaWxlZDogJXMiLAotCQkJCQkJCQkJCQkgICAic2V0c29ja29wdCIsCi0JCQkJCQkJCQkJ CSAgICJTT19LRUVQQUxJVkUiLAotCQkJCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJS Tk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCQkJCQkJInNldHNvY2tvcHQiLAor CQkJCQkJCQkJCQkJCSJTT19LRUVQQUxJVkUiLAorCQkJCQkJCQkJCQkJCVNPQ0tfU1RSRVJST1Io U09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJCQllcnIgPSAxOwogCQkJ CQkJfQogCQkJCQkJZWxzZSBpZiAoIXNldEtlZXBhbGl2ZXNJZGxlKGNvbm4pCkBAIC0yNzA4LDcg KzI3MDgsNyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUg dW50aWwgdGhlcmUgaXMKIAkJCQkJCQkgICAoY2hhciAqKSAmb3B0dmFsLCAmb3B0bGVuKSA9PSAt MSkKIAkJCQl7CiAJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3Qg Z2V0IHNvY2tldCBlcnJvciBzdGF0dXM6ICVzIiwKLQkJCQkJCQkJCSAgIFNPQ0tfU1RSRVJST1Io U09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQkJCQkJU09DS19TVFJF UlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQkJCQlnb3RvIGVycm9y X3JldHVybjsKIAkJCQl9CiAJCQkJZWxzZSBpZiAob3B0dmFsICE9IDApCkBAIC0yNzM1LDcgKzI3 MzUsNyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50 aWwgdGhlcmUgaXMKIAkJCQkJCQkJJmNvbm4tPmxhZGRyLnNhbGVuKSA8IDApCiAJCQkJewogCQkJ CQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IGdldCBjbGllbnQgYWRk cmVzcyBmcm9tIHNvY2tldDogJXMiLAotCQkJCQkJCQkJICAgU09DS19TVFJFUlJPUihTT0NLX0VS Uk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJCQkJCQlTT0NLX1NUUkVSUk9SKFNP Q0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJu OwogCQkJCX0KIApAQCAtMjc3NSw3ICsyNzc1LDcgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3 aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJCQkJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgInJlcXVpcmVwZWVyIHBhcmFtZXRlciBpcyBub3Qgc3VwcG9ydGVk IG9uIHRoaXMgcGxhdGZvcm0iKTsKIAkJCQkJCWVsc2UKIAkJCQkJCQlsaWJwcV9hcHBlbmRfY29u bl9lcnJvcihjb25uLCAiY291bGQgbm90IGdldCBwZWVyIGNyZWRlbnRpYWxzOiAlcyIsCi0JCQkJ CQkJCQkJCSAgIHN0cmVycm9yX3IoZXJybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJ CQkJCQkJCQkJc3RyZXJyb3JfcihlcnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJ CWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCQl9CiAKQEAgLTI3ODgsNyArMjc4OCw3IEBAIGtlZXBf Z29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwog CQkJCQlpZiAoc3RyY21wKHJlbW90ZV91c2VybmFtZSwgY29ubi0+cmVxdWlyZXBlZXIpICE9IDAp CiAJCQkJCXsKIAkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJyZXF1aXJlcGVl ciBzcGVjaWZpZXMgXCIlc1wiLCBidXQgYWN0dWFsIHBlZXIgdXNlciBuYW1lIGlzIFwiJXNcIiIs Ci0JCQkJCQkJCQkJICAgY29ubi0+cmVxdWlyZXBlZXIsIHJlbW90ZV91c2VybmFtZSk7CisJCQkJ CQkJCQkJCQljb25uLT5yZXF1aXJlcGVlciwgcmVtb3RlX3VzZXJuYW1lKTsKIAkJCQkJCWZyZWUo cmVtb3RlX3VzZXJuYW1lKTsKIAkJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCQl9CkBAIC0y ODI5LDcgKzI4MjksNyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRv IGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQkJaWYgKHBxUGFja2V0U2VuZChjb25uLCAwLCAmcHYs IHNpemVvZihwdikpICE9IFNUQVRVU19PSykKIAkJCQkJewogCQkJCQkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzZW5kIEdTU0FQSSBuZWdvdGlhdGlvbiBwYWNrZXQ6 ICVzIiwKLQkJCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXpl b2Yoc2VidWYpKSk7CisJCQkJCQkJCQkJCQlTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVm LCBzaXplb2Yoc2VidWYpKSk7CiAJCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQkJfQogCkBA IC0yODQwLDcgKzI4NDAsNyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNr IHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQllbHNlIGlmICghY29ubi0+Z2N0eCAmJiBjb25u LT5nc3NlbmNtb2RlWzBdID09ICdyJykKIAkJCQl7CiAJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vy cm9yKGNvbm4sCi0JCQkJCQkJCQkgICAiR1NTQVBJIGVuY3J5cHRpb24gcmVxdWlyZWQgYnV0IHdh cyBpbXBvc3NpYmxlIChwb3NzaWJseSBubyBjcmVkZW50aWFsIGNhY2hlLCBubyBzZXJ2ZXIgc3Vw cG9ydCwgb3IgdXNpbmcgYSBsb2NhbCBzb2NrZXQpIik7CisJCQkJCQkJCQkJCSJHU1NBUEkgZW5j cnlwdGlvbiByZXF1aXJlZCBidXQgd2FzIGltcG9zc2libGUgKHBvc3NpYmx5IG5vIGNyZWRlbnRp YWwgY2FjaGUsIG5vIHNlcnZlciBzdXBwb3J0LCBvciB1c2luZyBhIGxvY2FsIHNvY2tldCkiKTsK IAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJfQogI2VuZGlmCkBAIC0yODgyLDcgKzI4ODIs NyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwg dGhlcmUgaXMKIAkJCQkJaWYgKHBxUGFja2V0U2VuZChjb25uLCAwLCAmcHYsIHNpemVvZihwdikp ICE9IFNUQVRVU19PSykKIAkJCQkJewogCQkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29u biwgImNvdWxkIG5vdCBzZW5kIFNTTCBuZWdvdGlhdGlvbiBwYWNrZXQ6ICVzIiwKLQkJCQkJCQkJ CQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJ CQkJCQkJCQkJCQlTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYp KSk7CiAJCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQkJfQogCQkJCQkvKiBPaywgd2FpdCBm b3IgcmVzcG9uc2UgKi8KQEAgLTI5MTEsNyArMjkxMSw3IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyog V2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCWlmIChwcVBhY2tl dFNlbmQoY29ubiwgMCwgc3RhcnRwYWNrZXQsIHBhY2tldGxlbikgIT0gU1RBVFVTX09LKQogCQkJ CXsKIAkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzZW5kIHN0 YXJ0dXAgcGFja2V0OiAlcyIsCi0JCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8s IHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCQkJCVNPQ0tfU1RSRVJST1IoU09DS19F UlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJZnJlZShzdGFydHBhY2tldCk7CiAJ CQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCX0KQEAgLTMwMTIsNyArMzAxMiw3IEBAIGtlZXBf Z29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwog CQkJCQllbHNlCiAJCQkJCXsKIAkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJy ZWNlaXZlZCBpbnZhbGlkIHJlc3BvbnNlIHRvIFNTTCBuZWdvdGlhdGlvbjogJWMiLAotCQkJCQkJ CQkJCSAgIFNTTG9rKTsKKwkJCQkJCQkJCQkJCVNTTG9rKTsKIAkJCQkJCWdvdG8gZXJyb3JfcmV0 dXJuOwogCQkJCQl9CiAJCQkJfQpAQCAtMzEyMyw3ICszMTIzLDcgQEAga2VlcF9nb2luZzoJCQkJ CQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJCWVsc2Ug aWYgKGdzc19vayAhPSAnRycpCiAJCQkJCXsKIAkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJyZWNlaXZlZCBpbnZhbGlkIHJlc3BvbnNlIHRvIEdTU0FQSSBuZWdvdGlhdGlvbjog JWMiLAotCQkJCQkJCQkJCSAgIGdzc19vayk7CisJCQkJCQkJCQkJCQlnc3Nfb2spOwogCQkJCQkJ Z290byBlcnJvcl9yZXR1cm47CiAJCQkJCX0KIAkJCQl9CkBAIC0zMjAxLDcgKzMyMDEsNyBAQCBr ZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUg aXMKIAkJCQlpZiAoIShiZXJlc3AgPT0gJ1InIHx8IGJlcmVzcCA9PSAndicgfHwgYmVyZXNwID09 ICdFJykpCiAJCQkJewogCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZXhwZWN0 ZWQgYXV0aGVudGljYXRpb24gcmVxdWVzdCBmcm9tIHNlcnZlciwgYnV0IHJlY2VpdmVkICVjIiwK LQkJCQkJCQkJCSAgIGJlcmVzcCk7CisJCQkJCQkJCQkJCWJlcmVzcCk7CiAJCQkJCWdvdG8gZXJy b3JfcmV0dXJuOwogCQkJCX0KIApAQCAtMzIxNiwxNyArMzIxNiwxNyBAQCBrZWVwX2dvaW5nOgkJ CQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQkgKiBU cnkgdG8gdmFsaWRhdGUgbWVzc2FnZSBsZW5ndGggYmVmb3JlIHVzaW5nIGl0LgogCQkJCSAqIEF1 dGhlbnRpY2F0aW9uIHJlcXVlc3RzIGNhbid0IGJlIHZlcnkgbGFyZ2UsIGFsdGhvdWdoIEdTUwog CQkJCSAqIGF1dGggcmVxdWVzdHMgbWF5IG5vdCBiZSB0aGF0IHNtYWxsLiAgU2FtZSBmb3IKLQkJ CQkgKiBOZWdvdGlhdGVQcm90b2NvbFZlcnNpb24uICBFcnJvcnMgY2FuIGJlIGEKLQkJCQkgKiBs aXR0bGUgbGFyZ2VyLCBidXQgbm90IGh1Z2UuICBJZiB3ZSBzZWUgYSBsYXJnZSBhcHBhcmVudAot CQkJCSAqIGxlbmd0aCBpbiBhbiBlcnJvciwgaXQgbWVhbnMgd2UncmUgcmVhbGx5IHRhbGtpbmcg dG8gYQotCQkJCSAqIHByZS0zLjAtcHJvdG9jb2wgc2VydmVyOyBjb3BlLiAgKEJlZm9yZSB2ZXJz aW9uIDE0LCB0aGUKLQkJCQkgKiBzZXJ2ZXIgYWxzbyB1c2VkIHRoZSBvbGQgcHJvdG9jb2wgZm9y IGVycm9ycyB0aGF0IGhhcHBlbmVkCi0JCQkJICogYmVmb3JlIHByb2Nlc3NpbmcgdGhlIHN0YXJ0 dXAgcGFja2V0LikKKwkJCQkgKiBOZWdvdGlhdGVQcm90b2NvbFZlcnNpb24uICBFcnJvcnMgY2Fu IGJlIGEgbGl0dGxlIGxhcmdlciwKKwkJCQkgKiBidXQgbm90IGh1Z2UuICBJZiB3ZSBzZWUgYSBs YXJnZSBhcHBhcmVudCBsZW5ndGggaW4gYW4KKwkJCQkgKiBlcnJvciwgaXQgbWVhbnMgd2UncmUg cmVhbGx5IHRhbGtpbmcgdG8gYSBwcmUtMy4wLXByb3RvY29sCisJCQkJICogc2VydmVyOyBjb3Bl LiAgKEJlZm9yZSB2ZXJzaW9uIDE0LCB0aGUgc2VydmVyIGFsc28gdXNlZCB0aGUKKwkJCQkgKiBv bGQgcHJvdG9jb2wgZm9yIGVycm9ycyB0aGF0IGhhcHBlbmVkIGJlZm9yZSBwcm9jZXNzaW5nIHRo ZQorCQkJCSAqIHN0YXJ0dXAgcGFja2V0LikKIAkJCQkgKi8KIAkJCQlpZiAoKGJlcmVzcCA9PSAn UicgfHwgYmVyZXNwID09ICd2JykgJiYgKG1zZ0xlbmd0aCA8IDggfHwgbXNnTGVuZ3RoID4gMjAw MCkpCiAJCQkJewogCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZXhwZWN0ZWQg YXV0aGVudGljYXRpb24gcmVxdWVzdCBmcm9tIHNlcnZlciwgYnV0IHJlY2VpdmVkICVjIiwKLQkJ CQkJCQkJCSAgIGJlcmVzcCk7CisJCQkJCQkJCQkJCWJlcmVzcCk7CiAJCQkJCWdvdG8gZXJyb3Jf cmV0dXJuOwogCQkJCX0KIApAQCAtMzcwNSw3ICszNzA1LDcgQEAga2VlcF9nb2luZzoJCQkJCQkv KiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAKIAkJCQkvKiBBcHBl bmQgZXJyb3IgcmVwb3J0IHRvIGNvbm4tPmVycm9yTWVzc2FnZS4gKi8KIAkJCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjb25uLCAiXCIlc1wiIGZhaWxlZCIsCi0JCQkJCQkJCSAgIlNIT1cgdHJh bnNhY3Rpb25fcmVhZF9vbmx5Iik7CisJCQkJCQkJCQkJIlNIT1cgdHJhbnNhY3Rpb25fcmVhZF9v bmx5Iik7CiAKIAkJCQkvKiBDbG9zZSBjb25uZWN0aW9uIHBvbGl0ZWx5LiAqLwogCQkJCWNvbm4t PnN0YXR1cyA9IENPTk5FQ1RJT05fT0s7CkBAIC0zNzU1LDcgKzM3NTUsNyBAQCBrZWVwX2dvaW5n OgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAogCQkJ CS8qIEFwcGVuZCBlcnJvciByZXBvcnQgdG8gY29ubi0+ZXJyb3JNZXNzYWdlLiAqLwogCQkJCWxp YnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJcIiVzXCIgZmFpbGVkIiwKLQkJCQkJCQkJICAi U0VMRUNUIHBnX2lzX2luX3JlY292ZXJ5KCkiKTsKKwkJCQkJCQkJCQkiU0VMRUNUIHBnX2lzX2lu X3JlY292ZXJ5KCkiKTsKIAogCQkJCS8qIENsb3NlIGNvbm5lY3Rpb24gcG9saXRlbHkuICovCiAJ CQkJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9PSzsKQEAgLTM3NjgsOCArMzc2OCw4IEBAIGtl ZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBp cwogCiAJCWRlZmF1bHQ6CiAJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLAotCQkJCQkJ CSAgICJpbnZhbGlkIGNvbm5lY3Rpb24gc3RhdGUgJWQsIHByb2JhYmx5IGluZGljYXRpdmUgb2Yg bWVtb3J5IGNvcnJ1cHRpb24iLAotCQkJCQkJCSAgY29ubi0+c3RhdHVzKTsKKwkJCQkJCQkJCSJp bnZhbGlkIGNvbm5lY3Rpb24gc3RhdGUgJWQsIHByb2JhYmx5IGluZGljYXRpdmUgb2YgbWVtb3J5 IGNvcnJ1cHRpb24iLAorCQkJCQkJCQkJY29ubi0+c3RhdHVzKTsKIAkJCWdvdG8gZXJyb3JfcmV0 dXJuOwogCX0KIApAQCAtNzE0OCw3ICs3MTQ4LDcgQEAgcGdwYXNzZmlsZVdhcm5pbmcoUEdjb25u ICpjb25uKQogCiAJCWlmIChzcWxzdGF0ZSAmJiBzdHJjbXAoc3Fsc3RhdGUsIEVSUkNPREVfSU5W QUxJRF9QQVNTV09SRCkgPT0gMCkKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJw YXNzd29yZCByZXRyaWV2ZWQgZnJvbSBmaWxlIFwiJXNcIiIsCi0JCQkJCQkJICBjb25uLT5wZ3Bh c3NmaWxlKTsKKwkJCQkJCQkJCWNvbm4tPnBncGFzc2ZpbGUpOwogCX0KIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtZXhlYy5jCmluZGV4IGRhMjI5ZDYzMmEuLjg4NjAwY2U4ODMgMTAwNjQ0Ci0tLSBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1l eGVjLmMKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIFBRc2VuZFF1ZXJ5SW50ZXJuYWwoUEdjb25uICpj b25uLCBjb25zdCBjaGFyICpxdWVyeSwgYm9vbCBuZXdRdWVyeSkKIAlpZiAoY29ubi0+cGlwZWxp bmVTdGF0dXMgIT0gUFFfUElQRUxJTkVfT0ZGKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgIiVzIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUiLAotCQkJCQkJICAiUFFz ZW5kUXVlcnkiKTsKKwkJCQkJCQkJIlBRc2VuZFF1ZXJ5Iik7CiAJCXJldHVybiAwOwogCX0KIApA QCAtMTUxMiw3ICsxNTEyLDcgQEAgUFFzZW5kUXVlcnlQYXJhbXMoUEdjb25uICpjb25uLAogCWlm IChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlUKQogCXsK IAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm51bWJlciBvZiBwYXJhbWV0ZXJzIG11 c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCi0JCQkJCQkgICBQUV9RVUVSWV9QQVJBTV9NQVhfTElN SVQpOworCQkJCQkJCQlQUV9RVUVSWV9QQVJBTV9NQVhfTElNSVQpOwogCQlyZXR1cm4gMDsKIAl9 CiAKQEAgLTE1NTgsNyArMTU1OCw3IEBAIFBRc2VuZFByZXBhcmUoUEdjb25uICpjb25uLAogCWlm IChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlUKQogCXsK IAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm51bWJlciBvZiBwYXJhbWV0ZXJzIG11 c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCi0JCQkJCQkgICBQUV9RVUVSWV9QQVJBTV9NQVhfTElN SVQpOworCQkJCQkJCQlQUV9RVUVSWV9QQVJBTV9NQVhfTElNSVQpOwogCQlyZXR1cm4gMDsKIAl9 CiAKQEAgLTE2NTIsNyArMTY1Miw3IEBAIFBRc2VuZFF1ZXJ5UHJlcGFyZWQoUEdjb25uICpjb25u LAogCWlmIChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlU KQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm51bWJlciBvZiBwYXJhbWV0 ZXJzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCi0JCQkJCQkgICBQUV9RVUVSWV9QQVJBTV9N QVhfTElNSVQpOworCQkJCQkJCQlQUV9RVUVSWV9QQVJBTV9NQVhfTElNSVQpOwogCQlyZXR1cm4g MDsKIAl9CiAKQEAgLTIwOTksMTAgKzIwOTksOSBAQCBQUWdldFJlc3VsdChQR2Nvbm4gKmNvbm4p CiAKIAkJCS8qCiAJCQkgKiBXZSdyZSBhYm91dCB0byByZXR1cm4gdGhlIE5VTEwgdGhhdCB0ZXJt aW5hdGVzIHRoZSByb3VuZCBvZgotCQkJICogcmVzdWx0cyBmcm9tIHRoZSBjdXJyZW50IHF1ZXJ5 OyBwcmVwYXJlIHRvIHNlbmQgdGhlIHJlc3VsdHMKLQkJCSAqIG9mIHRoZSBuZXh0IHF1ZXJ5LCBp ZiBhbnksIHdoZW4gd2UncmUgY2FsbGVkIG5leHQuICBJZiB0aGVyZSdzCi0JCQkgKiBubyBuZXh0 IGVsZW1lbnQgaW4gdGhlIGNvbW1hbmQgcXVldWUsIHRoaXMgZ2V0cyB1cyBpbiBJRExFCi0JCQkg KiBzdGF0ZS4KKwkJCSAqIHJlc3VsdHMgZnJvbSB0aGUgY3VycmVudCBxdWVyeTsgcHJlcGFyZSB0 byBzZW5kIHRoZSByZXN1bHRzIG9mCisJCQkgKiB0aGUgbmV4dCBxdWVyeSwgaWYgYW55LCB3aGVu IHdlJ3JlIGNhbGxlZCBuZXh0LiAgSWYgdGhlcmUncyBubworCQkJICogbmV4dCBlbGVtZW50IGlu IHRoZSBjb21tYW5kIHF1ZXVlLCB0aGlzIGdldHMgdXMgaW4gSURMRSBzdGF0ZS4KIAkJCSAqLwog CQkJcHFQaXBlbGluZVByb2Nlc3NRdWV1ZShjb25uKTsKIAkJCXJlcyA9IE5VTEw7CQkJLyogcXVl cnkgaXMgY29tcGxldGUgKi8KQEAgLTMwNDcsNiArMzA0Niw3IEBAIHBxUGlwZWxpbmVQcm9jZXNz UXVldWUoUEdjb25uICpjb25uKQogCQkJcmV0dXJuOwogCiAJCWNhc2UgUEdBU1lOQ19JRExFOgor CiAJCQkvKgogCQkJICogSWYgd2UncmUgaW4gSURMRSBtb2RlIGFuZCB0aGVyZSdzIHNvbWUgY29t bWFuZCBpbiB0aGUgcXVldWUsCiAJCQkgKiBnZXQgdXMgaW50byBQSVBFTElORV9JRExFIG1vZGUg YW5kIHByb2Nlc3Mgbm9ybWFsbHkuICBPdGhlcndpc2UKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWxvYmouYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWxvYmouYwppbmRl eCBiY2QyMjhjZWYxLi41MDI4MmZmNDIzIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1sb2JqLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbG9iai5jCkBAIC0xNDIs NyArMTQyLDcgQEAgbG9fdHJ1bmNhdGUoUEdjb25uICpjb25uLCBpbnQgZmQsIHNpemVfdCBsZW4p CiAJaWYgKGNvbm4tPmxvYmpmdW5jcy0+Zm5fbG9fdHJ1bmNhdGUgPT0gMCkKIAl7CiAJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlv biAlcyIsCi0JCQkJCQkgICJsb190cnVuY2F0ZSIpOworCQkJCQkJCQkibG9fdHJ1bmNhdGUiKTsK IAkJcmV0dXJuIC0xOwogCX0KIApAQCAtMjA1LDcgKzIwNSw3IEBAIGxvX3RydW5jYXRlNjQoUEdj b25uICpjb25uLCBpbnQgZmQsIHBnX2ludDY0IGxlbikKIAlpZiAoY29ubi0+bG9iamZ1bmNzLT5m bl9sb190cnVuY2F0ZTY0ID09IDApCiAJewogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAiY2Fubm90IGRldGVybWluZSBPSUQgb2YgZnVuY3Rpb24gJXMiLAotCQkJCQkJICAibG9fdHJ1 bmNhdGU2NCIpOworCQkJCQkJCQkibG9fdHJ1bmNhdGU2NCIpOwogCQlyZXR1cm4gLTE7CiAJfQog CkBAIC0zOTUsNyArMzk1LDcgQEAgbG9fbHNlZWs2NChQR2Nvbm4gKmNvbm4sIGludCBmZCwgcGdf aW50NjQgb2Zmc2V0LCBpbnQgd2hlbmNlKQogCWlmIChjb25uLT5sb2JqZnVuY3MtPmZuX2xvX2xz ZWVrNjQgPT0gMCkKIAl7CiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3Qg ZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCi0JCQkJCQkgICJsb19sc2VlazY0Iik7CisJ CQkJCQkJCSJsb19sc2VlazY0Iik7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTQ4NSw3ICs0ODUs NyBAQCBsb19jcmVhdGUoUEdjb25uICpjb25uLCBPaWQgbG9iaklkKQogCWlmIChjb25uLT5sb2Jq ZnVuY3MtPmZuX2xvX2NyZWF0ZSA9PSAwKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgImNhbm5vdCBkZXRlcm1pbmUgT0lEIG9mIGZ1bmN0aW9uICVzIiwKLQkJCQkJCSAgImxv X2NyZWF0ZSIpOworCQkJCQkJCQkibG9fY3JlYXRlIik7CiAJCXJldHVybiBJbnZhbGlkT2lkOwog CX0KIApAQCAtNTU4LDcgKzU1OCw3IEBAIGxvX3RlbGw2NChQR2Nvbm4gKmNvbm4sIGludCBmZCkK IAlpZiAoY29ubi0+bG9iamZ1bmNzLT5mbl9sb190ZWxsNjQgPT0gMCkKIAl7CiAJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAl cyIsCi0JCQkJCQkgICJsb190ZWxsNjQiKTsKKwkJCQkJCQkJImxvX3RlbGw2NCIpOwogCQlyZXR1 cm4gLTE7CiAJfQogCkBAIC02NjcsNyArNjY3LDcgQEAgbG9faW1wb3J0X2ludGVybmFsKFBHY29u biAqY29ubiwgY29uc3QgY2hhciAqZmlsZW5hbWUsIE9pZCBvaWQpCiAJaWYgKGZkIDwgMCkKIAl7 CQkJCQkJCS8qIGVycm9yICovCiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3Vs ZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXMiLAotCQkJCQkJICBmaWxlbmFtZSwgc3RyZXJyb3Jf cihlcnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQkJZmlsZW5hbWUsIHN0cmVy cm9yX3IoZXJybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCXJldHVybiBJbnZhbGlkT2lk OwogCX0KIApAQCAtNzIzLDggKzcyMyw4IEBAIGxvX2ltcG9ydF9pbnRlcm5hbChQR2Nvbm4gKmNv bm4sIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBPaWQgb2lkKQogCQkvKiBkZWxpYmVyYXRlbHkgb3Zl cndyaXRlIGFueSBlcnJvciBmcm9tIGxvX2Nsb3NlICovCiAJCXBxQ2xlYXJDb25uRXJyb3JTdGF0 ZShjb25uKTsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCByZWFk IGZyb20gZmlsZSBcIiVzXCI6ICVzIiwKLQkJCQkJCSAgZmlsZW5hbWUsCi0JCQkJCQkgIHN0cmVy cm9yX3Ioc2F2ZV9lcnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQkJZmlsZW5h bWUsCisJCQkJCQkJCXN0cmVycm9yX3Ioc2F2ZV9lcnJubywgc2VidWYsIHNpemVvZihzZWJ1Zikp KTsKIAkJcmV0dXJuIEludmFsaWRPaWQ7CiAJfQogCkBAIC03NzgsOCArNzc4LDggQEAgbG9fZXhw b3J0KFBHY29ubiAqY29ubiwgT2lkIGxvYmpJZCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJCS8q IGRlbGliZXJhdGVseSBvdmVyd3JpdGUgYW55IGVycm9yIGZyb20gbG9fY2xvc2UgKi8KIAkJcHFD bGVhckNvbm5FcnJvclN0YXRlKGNvbm4pOwogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVzIiwKLQkJCQkJCSAgZmlsZW5hbWUsCi0J CQkJCQkgIHN0cmVycm9yX3Ioc2F2ZV9lcnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJ CQkJCQkJZmlsZW5hbWUsCisJCQkJCQkJCXN0cmVycm9yX3Ioc2F2ZV9lcnJubywgc2VidWYsIHNp emVvZihzZWJ1ZikpKTsKIAkJcmV0dXJuIC0xOwogCX0KIApAQCAtNzk5LDggKzc5OSw4IEBAIGxv X2V4cG9ydChQR2Nvbm4gKmNvbm4sIE9pZCBsb2JqSWQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQog CQkJLyogZGVsaWJlcmF0ZWx5IG92ZXJ3cml0ZSBhbnkgZXJyb3IgZnJvbSBsb19jbG9zZSAqLwog CQkJcHFDbGVhckNvbm5FcnJvclN0YXRlKGNvbm4pOwogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjogJXMiLAotCQkJCQkJCSAg ZmlsZW5hbWUsCi0JCQkJCQkJICBzdHJlcnJvcl9yKHNhdmVfZXJybm8sIHNlYnVmLCBzaXplb2Yo c2VidWYpKSk7CisJCQkJCQkJCQlmaWxlbmFtZSwKKwkJCQkJCQkJCXN0cmVycm9yX3Ioc2F2ZV9l cnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCX0KQEAg LTgyMiw3ICs4MjIsNyBAQCBsb19leHBvcnQoUEdjb25uICpjb25uLCBPaWQgbG9iaklkLCBjb25z dCBjaGFyICpmaWxlbmFtZSkKIAlpZiAoY2xvc2UoZmQpICE9IDAgJiYgcmVzdWx0ID49IDApCiAJ ewogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IHdyaXRlIHRvIGZp bGUgXCIlc1wiOiAlcyIsCi0JCQkJCQkgIGZpbGVuYW1lLCBzdHJlcnJvcl9yKGVycm5vLCBzZWJ1 Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJCQlmaWxlbmFtZSwgc3RyZXJyb3JfcihlcnJubywg c2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJcmVzdWx0ID0gLTE7CiAJfQogCkBAIC05NTQsNTYg Kzk1NCw1NiBAQCBsb19pbml0aWFsaXplKFBHY29ubiAqY29ubikKIAlpZiAobG9iamZ1bmNzLT5m bl9sb19vcGVuID09IDApCiAJewogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2Fu bm90IGRldGVybWluZSBPSUQgb2YgZnVuY3Rpb24gJXMiLAotCQkJCQkJICAibG9fb3BlbiIpOwor CQkJCQkJCQkibG9fb3BlbiIpOwogCQlmcmVlKGxvYmpmdW5jcyk7CiAJCXJldHVybiAtMTsKIAl9 CiAJaWYgKGxvYmpmdW5jcy0+Zm5fbG9fY2xvc2UgPT0gMCkKIAl7CiAJCWxpYnBxX2FwcGVuZF9j b25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCi0J CQkJCQkgICJsb19jbG9zZSIpOworCQkJCQkJCQkibG9fY2xvc2UiKTsKIAkJZnJlZShsb2JqZnVu Y3MpOwogCQlyZXR1cm4gLTE7CiAJfQogCWlmIChsb2JqZnVuY3MtPmZuX2xvX2NyZWF0ID09IDAp CiAJewogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2Fubm90IGRldGVybWluZSBP SUQgb2YgZnVuY3Rpb24gJXMiLAotCQkJCQkJICAibG9fY3JlYXQiKTsKKwkJCQkJCQkJImxvX2Ny ZWF0Iik7CiAJCWZyZWUobG9iamZ1bmNzKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlpZiAobG9iamZ1 bmNzLT5mbl9sb191bmxpbmsgPT0gMCkKIAl7CiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNv bm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCi0JCQkJCQkgICJsb191 bmxpbmsiKTsKKwkJCQkJCQkJImxvX3VubGluayIpOwogCQlmcmVlKGxvYmpmdW5jcyk7CiAJCXJl dHVybiAtMTsKIAl9CiAJaWYgKGxvYmpmdW5jcy0+Zm5fbG9fbHNlZWsgPT0gMCkKIAl7CiAJCWxp YnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5j dGlvbiAlcyIsCi0JCQkJCQkgICJsb19sc2VlayIpOworCQkJCQkJCQkibG9fbHNlZWsiKTsKIAkJ ZnJlZShsb2JqZnVuY3MpOwogCQlyZXR1cm4gLTE7CiAJfQogCWlmIChsb2JqZnVuY3MtPmZuX2xv X3RlbGwgPT0gMCkKIAl7CiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3Qg ZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCi0JCQkJCQkgICJsb190ZWxsIik7CisJCQkJ CQkJCSJsb190ZWxsIik7CiAJCWZyZWUobG9iamZ1bmNzKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlp ZiAobG9iamZ1bmNzLT5mbl9sb19yZWFkID09IDApCiAJewogCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiY2Fubm90IGRldGVybWluZSBPSUQgb2YgZnVuY3Rpb24gJXMiLAotCQkJCQkJ ICAibG9yZWFkIik7CisJCQkJCQkJCSJsb3JlYWQiKTsKIAkJZnJlZShsb2JqZnVuY3MpOwogCQly ZXR1cm4gLTE7CiAJfQogCWlmIChsb2JqZnVuY3MtPmZuX2xvX3dyaXRlID09IDApCiAJewogCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2Fubm90IGRldGVybWluZSBPSUQgb2YgZnVu Y3Rpb24gJXMiLAotCQkJCQkJICAibG93cml0ZSIpOworCQkJCQkJCQkibG93cml0ZSIpOwogCQlm cmVlKGxvYmpmdW5jcyk7CiAJCXJldHVybiAtMTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1taXNjLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1taXNjLmMKaW5k ZXggNDE1OTYxMGY2Yy4uZmFkYzQ2ODE3YiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtbWlzYy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLW1pc2MuYwpAQCAtNzQ5 LDggKzc0OSw4IEBAIHJldHJ5NDoKIAkgKi8KIGRlZmluaXRlbHlFT0Y6CiAJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgInNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3Rl ZGx5XG4iCi0JCQkJCSAgICJcdFRoaXMgcHJvYmFibHkgbWVhbnMgdGhlIHNlcnZlciB0ZXJtaW5h dGVkIGFibm9ybWFsbHlcbiIKLQkJCQkJICAgIlx0YmVmb3JlIG9yIHdoaWxlIHByb2Nlc3Npbmcg dGhlIHJlcXVlc3QuIik7CisJCQkJCQkJIlx0VGhpcyBwcm9iYWJseSBtZWFucyB0aGUgc2VydmVy IHRlcm1pbmF0ZWQgYWJub3JtYWxseVxuIgorCQkJCQkJCSJcdGJlZm9yZSBvciB3aGlsZSBwcm9j ZXNzaW5nIHRoZSByZXF1ZXN0LiIpOwogCiAJLyogQ29tZSBoZXJlIGlmIGxvd2VyLWxldmVsIGNv ZGUgYWxyZWFkeSBzZXQgYSBzdWl0YWJsZSBlcnJvck1lc3NhZ2UgKi8KIGRlZmluaXRlbHlGYWls ZWQ6CkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBwcVNvY2tldENoZWNrKFBHY29ubiAqY29ubiwgaW50 IGZvclJlYWQsIGludCBmb3JXcml0ZSwgdGltZV90IGVuZF90aW1lKQogCQljaGFyCQlzZWJ1ZltQ R19TVFJFUlJPUl9SX0JVRkxFTl07CiAKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg IiVzKCkgZmFpbGVkOiAlcyIsICJzZWxlY3QiLAotCQkJCQkJICBTT0NLX1NUUkVSUk9SKFNPQ0tf RVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCVNPQ0tfU1RSRVJST1IoU09D S19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAl9CiAKIAlyZXR1cm4gcmVzdWx0OwpA QCAtMTI4MCw3ICsxMjgwLDcgQEAgbGlicHFfbmdldHRleHQoY29uc3QgY2hhciAqbXNnaWQsIGNv bnN0IGNoYXIgKm1zZ2lkX3BsdXJhbCwgdW5zaWduZWQgbG9uZyBuKQogICogbmV3bGluZS4KICAq Lwogdm9pZAotbGlicHFfYXBwZW5kX2Vycm9yKFBRRXhwQnVmZmVyIGVycm9yTWVzc2FnZSwgY29u c3QgY2hhciAqZm10LCAuLi4pCitsaWJwcV9hcHBlbmRfZXJyb3IoUFFFeHBCdWZmZXIgZXJyb3JN ZXNzYWdlLCBjb25zdCBjaGFyICpmbXQsLi4uKQogewogCWludAkJCXNhdmVfZXJybm8gPSBlcnJu bzsKIAlib29sCQlkb25lOwpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgbGlicHFfYXBwZW5kX2Vycm9y KFBRRXhwQnVmZmVyIGVycm9yTWVzc2FnZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCiAgKiBmb3Jt YXQgc2hvdWxkIG5vdCBlbmQgd2l0aCBhIG5ld2xpbmUuCiAgKi8KIHZvaWQKLWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqZm10LCAuLi4pCitsaWJwcV9h cHBlbmRfY29ubl9lcnJvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiB7CiAJ aW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOwogCWJvb2wJCWRvbmU7CmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LXByb3RvY29sMy5jCmluZGV4IDM2NGJhZDJiODguLjdhOGU5Yzk5NjIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLXByb3RvY29sMy5jCkBAIC00NjYsNyArNDY2LDcgQEAgc3RhdGljIHZvaWQKIGhhbmRs ZVN5bmNMb3NzKFBHY29ubiAqY29ubiwgY2hhciBpZCwgaW50IG1zZ0xlbmd0aCkKIHsKIAlsaWJw cV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAibG9zdCBzeW5jaHJvbml6YXRpb24gd2l0aCBzZXJ2 ZXI6IGdvdCBtZXNzYWdlIHR5cGUgXCIlY1wiLCBsZW5ndGggJWQiLAotCQkJCQkgIGlkLCBtc2dM ZW5ndGgpOworCQkJCQkJCWlkLCBtc2dMZW5ndGgpOwogCS8qIGJ1aWxkIGFuIGVycm9yIHJlc3Vs dCBob2xkaW5nIHRoZSBlcnJvciBtZXNzYWdlICovCiAJcHFTYXZlRXJyb3JSZXN1bHQoY29ubik7 CiAJY29ubi0+YXN5bmNTdGF0dXMgPSBQR0FTWU5DX1JFQURZOwkvKiBkcm9wIG91dCBvZiBQUWdl dFJlc3VsdCB3YWl0IGxvb3AgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LXNlY3VyZS1jb21tb24uYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1jb21tb24u YwppbmRleCA3ZTQyNDZjNTFmLi42Mzc3ZTgwMGRkIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1zZWN1cmUtY29tbW9uLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt c2VjdXJlLWNvbW1vbi5jCkBAIC0yMjYsNyArMjI2LDcgQEAgcHFfdmVyaWZ5X3BlZXJfbmFtZV9t YXRjaGVzX2NlcnRpZmljYXRlX2lwKFBHY29ubiAqY29ubiwKIAkJICogd3JvbmcgZ2l2ZW4gdGhl IHN1YmplY3QgbWF0dGVyLgogCQkgKi8KIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg ImNlcnRpZmljYXRlIGNvbnRhaW5zIElQIGFkZHJlc3Mgd2l0aCBpbnZhbGlkIGxlbmd0aCAlenUi LAotCQkJCQkJICBpcGxlbik7CisJCQkJCQkJCWlwbGVuKTsKIAkJcmV0dXJuIC0xOwogCX0KIApA QCAtMjM1LDcgKzIzNSw3IEBAIHBxX3ZlcmlmeV9wZWVyX25hbWVfbWF0Y2hlc19jZXJ0aWZpY2F0 ZV9pcChQR2Nvbm4gKmNvbm4sCiAJaWYgKCFhZGRyc3RyKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRlJ3MgSVAgYWRkcmVz cyB0byBzdHJpbmc6ICVzIiwKLQkJCQkJCSAgc3RyZXJyb3JfcihlcnJubywgc2VidWYsIHNpemVv ZihzZWJ1ZikpKTsKKwkJCQkJCQkJc3RyZXJyb3JfcihlcnJubywgc2VidWYsIHNpemVvZihzZWJ1 ZikpKTsKIAkJcmV0dXJuIC0xOwogCX0KIApAQCAtMjkyLDcgKzI5Miw3IEBAIHBxX3ZlcmlmeV9w ZWVyX25hbWVfbWF0Y2hlc19jZXJ0aWZpY2F0ZShQR2Nvbm4gKmNvbm4pCiAJCWVsc2UgaWYgKG5h bWVzX2V4YW1pbmVkID09IDEpCiAJCXsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4s ICJzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yIFwiJXNcIiBkb2VzIG5vdCBtYXRjaCBob3N0IG5hbWUg XCIlc1wiIiwKLQkJCQkJCQkgIGZpcnN0X25hbWUsIGhvc3QpOworCQkJCQkJCQkJZmlyc3RfbmFt ZSwgaG9zdCk7CiAJCX0KIAkJZWxzZQogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1zZWN1cmUtZ3NzYXBpLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUt Z3NzYXBpLmMKaW5kZXggMGNlOTJkYmY0My4uYWY5NWRmYTMyMiAxMDA2NDQKLS0tIGEvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLWdzc2FwaS5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLXNlY3VyZS1nc3NhcGkuYwpAQCAtMjEzLDggKzIxMyw4IEBAIHBnX0dTU193cml0ZShQ R2Nvbm4gKmNvbm4sIGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAkJaWYgKG91dHB1dC5s ZW5ndGggPiBQUV9HU1NfU0VORF9CVUZGRVJfU0laRSAtIHNpemVvZih1aW50MzIpKQogCQl7CiAJ CQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2xpZW50IHRyaWVkIHRvIHNlbmQgb3Zl cnNpemUgR1NTQVBJIHBhY2tldCAoJXp1ID4gJXp1KSIsCi0JCQkJCQkJICAoc2l6ZV90KSBvdXRw dXQubGVuZ3RoLAotCQkJCQkJCSAgUFFfR1NTX1NFTkRfQlVGRkVSX1NJWkUgLSBzaXplb2YodWlu dDMyKSk7CisJCQkJCQkJCQkoc2l6ZV90KSBvdXRwdXQubGVuZ3RoLAorCQkJCQkJCQkJUFFfR1NT X1NFTkRfQlVGRkVSX1NJWkUgLSBzaXplb2YodWludDMyKSk7CiAJCQllcnJubyA9IEVJTzsJCS8q IGZvciBsYWNrIG9mIGEgYmV0dGVyIGlkZWEgKi8KIAkJCWdvdG8gY2xlYW51cDsKIAkJfQpAQCAt MzQ5LDggKzM0OSw4IEBAIHBnX0dTU19yZWFkKFBHY29ubiAqY29ubiwgdm9pZCAqcHRyLCBzaXpl X3QgbGVuKQogCQlpZiAoaW5wdXQubGVuZ3RoID4gUFFfR1NTX1JFQ1ZfQlVGRkVSX1NJWkUgLSBz aXplb2YodWludDMyKSkKIAkJewogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm92 ZXJzaXplIEdTU0FQSSBwYWNrZXQgc2VudCBieSB0aGUgc2VydmVyICglenUgPiAlenUpIiwKLQkJ CQkJCQkgIChzaXplX3QpIGlucHV0Lmxlbmd0aCwKLQkJCQkJCQkgIFBRX0dTU19SRUNWX0JVRkZF Ul9TSVpFIC0gc2l6ZW9mKHVpbnQzMikpOworCQkJCQkJCQkJKHNpemVfdCkgaW5wdXQubGVuZ3Ro LAorCQkJCQkJCQkJUFFfR1NTX1JFQ1ZfQlVGRkVSX1NJWkUgLSBzaXplb2YodWludDMyKSk7CiAJ CQllcnJubyA9IEVJTzsJCS8qIGZvciBsYWNrIG9mIGEgYmV0dGVyIGlkZWEgKi8KIAkJCXJldHVy biAtMTsKIAkJfQpAQCAtNTg4LDggKzU4OCw4IEBAIHBxc2VjdXJlX29wZW5fZ3NzKFBHY29ubiAq Y29ubikKIAkJaWYgKGlucHV0Lmxlbmd0aCA+IFBRX0dTU19SRUNWX0JVRkZFUl9TSVpFIC0gc2l6 ZW9mKHVpbnQzMikpCiAJCXsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJvdmVy c2l6ZSBHU1NBUEkgcGFja2V0IHNlbnQgYnkgdGhlIHNlcnZlciAoJXp1ID4gJXp1KSIsCi0JCQkJ CQkJICAoc2l6ZV90KSBpbnB1dC5sZW5ndGgsCi0JCQkJCQkJICBQUV9HU1NfUkVDVl9CVUZGRVJf U0laRSAtIHNpemVvZih1aW50MzIpKTsKKwkJCQkJCQkJCShzaXplX3QpIGlucHV0Lmxlbmd0aCwK KwkJCQkJCQkJCVBRX0dTU19SRUNWX0JVRkZFUl9TSVpFIC0gc2l6ZW9mKHVpbnQzMikpOwogCQkJ cmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1vcGVuc3NsLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1zZWN1cmUtb3BlbnNzbC5jCmluZGV4IGJhZDg1MzU5YjYuLjRlYjIxMmQxNWMgMTAwNjQ0Ci0t LSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1vcGVuc3NsLmMKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW9wZW5zc2wuYwpAQCAtMjEzLDEyICsyMTMsMTIgQEAg cmxvb3A6CiAJCQkJaWYgKHJlc3VsdF9lcnJubyA9PSBFUElQRSB8fAogCQkJCQlyZXN1bHRfZXJy bm8gPT0gRUNPTk5SRVNFVCkKIAkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInNl cnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3RlZGx5XG4iCi0JCQkJCQkJCQkgICAi XHRUaGlzIHByb2JhYmx5IG1lYW5zIHRoZSBzZXJ2ZXIgdGVybWluYXRlZCBhYm5vcm1hbGx5XG4i Ci0JCQkJCQkJCQkgICAiXHRiZWZvcmUgb3Igd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC4i KTsKKwkJCQkJCQkJCQkJIlx0VGhpcyBwcm9iYWJseSBtZWFucyB0aGUgc2VydmVyIHRlcm1pbmF0 ZWQgYWJub3JtYWxseVxuIgorCQkJCQkJCQkJCQkiXHRiZWZvcmUgb3Igd2hpbGUgcHJvY2Vzc2lu ZyB0aGUgcmVxdWVzdC4iKTsKIAkJCQllbHNlCiAJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJTU0wgU1lTQ0FMTCBlcnJvcjogJXMiLAotCQkJCQkJCQkJICBTT0NLX1NUUkVSUk9S KHJlc3VsdF9lcnJubywKLQkJCQkJCQkJCQkJCQlzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJ CQkJCQkJCQlTT0NLX1NUUkVSUk9SKHJlc3VsdF9lcnJubywKKwkJCQkJCQkJCQkJCQkJICBzZWJ1 Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtMzEzLDEyICszMTMs MTIgQEAgcGd0bHNfd3JpdGUoUEdjb25uICpjb25uLCBjb25zdCB2b2lkICpwdHIsIHNpemVfdCBs ZW4pCiAJCQkJcmVzdWx0X2Vycm5vID0gU09DS19FUlJOTzsKIAkJCQlpZiAocmVzdWx0X2Vycm5v ID09IEVQSVBFIHx8IHJlc3VsdF9lcnJubyA9PSBFQ09OTlJFU0VUKQogCQkJCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjb25uLCAic2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVj dGVkbHlcbiIKLQkJCQkJCQkJCSAgICJcdFRoaXMgcHJvYmFibHkgbWVhbnMgdGhlIHNlcnZlciB0 ZXJtaW5hdGVkIGFibm9ybWFsbHlcbiIKLQkJCQkJCQkJCSAgICJcdGJlZm9yZSBvciB3aGlsZSBw cm9jZXNzaW5nIHRoZSByZXF1ZXN0LiIpOworCQkJCQkJCQkJCQkiXHRUaGlzIHByb2JhYmx5IG1l YW5zIHRoZSBzZXJ2ZXIgdGVybWluYXRlZCBhYm5vcm1hbGx5XG4iCisJCQkJCQkJCQkJCSJcdGJl Zm9yZSBvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0LiIpOwogCQkJCWVsc2UKIAkJCQkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlNTTCBTWVNDQUxMIGVycm9yOiAlcyIsCi0J CQkJCQkJCQkgIFNPQ0tfU1RSRVJST1IocmVzdWx0X2Vycm5vLAotCQkJCQkJCQkJCQkJCXNlYnVm LCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCQkJCVNPQ0tfU1RSRVJST1IocmVzdWx0X2Vycm5v LAorCQkJCQkJCQkJCQkJCQkgIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCQl9CiAJCQllbHNl CiAJCQl7CkBAIC00MTAsNyArNDEwLDcgQEAgcGd0bHNfZ2V0X3BlZXJfY2VydGlmaWNhdGVfaGFz aChQR2Nvbm4gKmNvbm4sIHNpemVfdCAqbGVuKQogCQkJaWYgKGFsZ29fdHlwZSA9PSBOVUxMKQog CQkJewogCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgZmluZCBk aWdlc3QgZm9yIE5JRCAlcyIsCi0JCQkJCQkJCSAgT0JKX25pZDJzbihhbGdvX25pZCkpOworCQkJ CQkJCQkJCU9CSl9uaWQyc24oYWxnb19uaWQpKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KIAkJ CWJyZWFrOwpAQCAtOTYyLDcgKzk2Miw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29ubiAqY29ubikK IAkJaWYgKHNzbF9taW5fdmVyID09IC0xKQogCQl7CiAJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAiaW52YWxpZCB2YWx1ZSBcIiVzXCIgZm9yIG1pbmltdW0gU1NMIHByb3RvY29sIHZl cnNpb24iLAotCQkJCQkJCSAgY29ubi0+c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uKTsKKwkJCQkJ CQkJCWNvbm4tPnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbik7CiAJCQlTU0xfQ1RYX2ZyZWUoU1NM X2NvbnRleHQpOwogCQkJcmV0dXJuIC0xOwogCQl9CkBAIC05ODgsNyArOTg4LDcgQEAgaW5pdGlh bGl6ZV9TU0woUEdjb25uICpjb25uKQogCQlpZiAoc3NsX21heF92ZXIgPT0gLTEpCiAJCXsKIAkJ CWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJpbnZhbGlkIHZhbHVlIFwiJXNcIiBmb3Ig bWF4aW11bSBTU0wgcHJvdG9jb2wgdmVyc2lvbiIsCi0JCQkJCQkJICBjb25uLT5zc2xfbWF4X3By b3RvY29sX3ZlcnNpb24pOworCQkJCQkJCQkJY29ubi0+c3NsX21heF9wcm90b2NvbF92ZXJzaW9u KTsKIAkJCVNTTF9DVFhfZnJlZShTU0xfY29udGV4dCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAg LTEwMzIsNyArMTAzMiw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29ubiAqY29ubikKIAkJCWNoYXIJ ICAgKmVyciA9IFNTTGVycm1lc3NhZ2UoRVJSX2dldF9lcnJvcigpKTsKIAogCQkJbGlicHFfYXBw ZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCByZWFkIHJvb3QgY2VydGlmaWNhdGUgZmls ZSBcIiVzXCI6ICVzIiwKLQkJCQkJCQkgIGZuYnVmLCBlcnIpOworCQkJCQkJCQkJZm5idWYsIGVy cik7CiAJCQlTU0xlcnJmcmVlKGVycik7CiAJCQlTU0xfQ1RYX2ZyZWUoU1NMX2NvbnRleHQpOwog CQkJcmV0dXJuIC0xOwpAQCAtMTA4NCwxMCArMTA4NCwxMCBAQCBpbml0aWFsaXplX1NTTChQR2Nv bm4gKmNvbm4pCiAJCQkgKi8KIAkJCWlmIChmbmJ1ZlswXSA9PSAnXDAnKQogCQkJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgZ2V0IGhvbWUgZGlyZWN0b3J5IHRvIGxv Y2F0ZSByb290IGNlcnRpZmljYXRlIGZpbGVcbiIKLQkJCQkJCQkJICAgIkVpdGhlciBwcm92aWRl IHRoZSBmaWxlIG9yIGNoYW5nZSBzc2xtb2RlIHRvIGRpc2FibGUgc2VydmVyIGNlcnRpZmljYXRl IHZlcmlmaWNhdGlvbi4iKTsKKwkJCQkJCQkJCQkiRWl0aGVyIHByb3ZpZGUgdGhlIGZpbGUgb3Ig Y2hhbmdlIHNzbG1vZGUgdG8gZGlzYWJsZSBzZXJ2ZXIgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9u LiIpOwogCQkJZWxzZQogCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJyb290IGNl cnRpZmljYXRlIGZpbGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0XG4iCi0JCQkJCQkJCSAgICJFaXRo ZXIgcHJvdmlkZSB0aGUgZmlsZSBvciBjaGFuZ2Ugc3NsbW9kZSB0byBkaXNhYmxlIHNlcnZlciBj ZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24uIiwgZm5idWYpOworCQkJCQkJCQkJCSJFaXRoZXIgcHJv dmlkZSB0aGUgZmlsZSBvciBjaGFuZ2Ugc3NsbW9kZSB0byBkaXNhYmxlIHNlcnZlciBjZXJ0aWZp Y2F0ZSB2ZXJpZmljYXRpb24uIiwgZm5idWYpOwogCQkJU1NMX0NUWF9mcmVlKFNTTF9jb250ZXh0 KTsKIAkJCXJldHVybiAtMTsKIAkJfQpAQCAtMTExNyw3ICsxMTE3LDcgQEAgaW5pdGlhbGl6ZV9T U0woUEdjb25uICpjb25uKQogCQlpZiAoZXJybm8gIT0gRU5PRU5UICYmIGVycm5vICE9IEVOT1RE SVIpCiAJCXsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3Qgb3Bl biBjZXJ0aWZpY2F0ZSBmaWxlIFwiJXNcIjogJXMiLAotCQkJCQkJCSAgZm5idWYsIHN0cmVycm9y X3IoZXJybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCQlmbmJ1Ziwgc3RyZXJy b3JfcihlcnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCVNTTF9DVFhfZnJlZShTU0xf Y29udGV4dCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAgLTExMzUsNyArMTEzNSw3IEBAIGluaXRp YWxpemVfU1NMKFBHY29ubiAqY29ubikKIAkJCWNoYXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2Uo RVJSX2dldF9lcnJvcigpKTsKIAogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNv dWxkIG5vdCByZWFkIGNlcnRpZmljYXRlIGZpbGUgXCIlc1wiOiAlcyIsCi0JCQkJCQkJICBmbmJ1 ZiwgZXJyKTsKKwkJCQkJCQkJCWZuYnVmLCBlcnIpOwogCQkJU1NMZXJyZnJlZShlcnIpOwogCQkJ U1NMX0NUWF9mcmVlKFNTTF9jb250ZXh0KTsKIAkJCXJldHVybiAtMTsKQEAgLTEyMzQsNyArMTIz NCw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29ubiAqY29ubikKIAkJCQljaGFyCSAgICplcnIgPSBT U0xlcnJtZXNzYWdlKEVSUl9nZXRfZXJyb3IoKSk7CiAKIAkJCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiY291bGQgbm90IGxvYWQgU1NMIGVuZ2luZSBcIiVzXCI6ICVzIiwKLQkJCQkJ CQkJICBlbmdpbmVfc3RyLCBlcnIpOworCQkJCQkJCQkJCWVuZ2luZV9zdHIsIGVycik7CiAJCQkJ U1NMZXJyZnJlZShlcnIpOwogCQkJCWZyZWUoZW5naW5lX3N0cik7CiAJCQkJcmV0dXJuIC0xOwpA QCAtMTI0NSw3ICsxMjQ1LDcgQEAgaW5pdGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQogCQkJCWNo YXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2UoRVJSX2dldF9lcnJvcigpKTsKIAogCQkJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBTU0wgZW5naW5l IFwiJXNcIjogJXMiLAotCQkJCQkJCQkgIGVuZ2luZV9zdHIsIGVycik7CisJCQkJCQkJCQkJZW5n aW5lX3N0ciwgZXJyKTsKIAkJCQlTU0xlcnJmcmVlKGVycik7CiAJCQkJRU5HSU5FX2ZyZWUoY29u bi0+ZW5naW5lKTsKIAkJCQljb25uLT5lbmdpbmUgPSBOVUxMOwpAQCAtMTI2MCw3ICsxMjYwLDcg QEAgaW5pdGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQogCQkJCWNoYXIJICAgKmVyciA9IFNTTGVy cm1lc3NhZ2UoRVJSX2dldF9lcnJvcigpKTsKIAogCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJjb3VsZCBub3QgcmVhZCBwcml2YXRlIFNTTCBrZXkgXCIlc1wiIGZyb20gZW5naW5l IFwiJXNcIjogJXMiLAotCQkJCQkJCQkgIGVuZ2luZV9jb2xvbiwgZW5naW5lX3N0ciwgZXJyKTsK KwkJCQkJCQkJCQllbmdpbmVfY29sb24sIGVuZ2luZV9zdHIsIGVycik7CiAJCQkJU1NMZXJyZnJl ZShlcnIpOwogCQkJCUVOR0lORV9maW5pc2goY29ubi0+ZW5naW5lKTsKIAkJCQlFTkdJTkVfZnJl ZShjb25uLT5lbmdpbmUpOwpAQCAtMTI3Myw3ICsxMjczLDcgQEAgaW5pdGlhbGl6ZV9TU0woUEdj b25uICpjb25uKQogCQkJCWNoYXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2UoRVJSX2dldF9lcnJv cigpKTsKIAogCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgbG9h ZCBwcml2YXRlIFNTTCBrZXkgXCIlc1wiIGZyb20gZW5naW5lIFwiJXNcIjogJXMiLAotCQkJCQkJ CQkgIGVuZ2luZV9jb2xvbiwgZW5naW5lX3N0ciwgZXJyKTsKKwkJCQkJCQkJCQllbmdpbmVfY29s b24sIGVuZ2luZV9zdHIsIGVycik7CiAJCQkJU1NMZXJyZnJlZShlcnIpOwogCQkJCUVOR0lORV9m aW5pc2goY29ubi0+ZW5naW5lKTsKIAkJCQlFTkdJTkVfZnJlZShjb25uLT5lbmdpbmUpOwpAQCAt MTMxMCwxMCArMTMxMCwxMCBAQCBpbml0aWFsaXplX1NTTChQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJ CWlmIChlcnJubyA9PSBFTk9FTlQpCiAJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg ImNlcnRpZmljYXRlIHByZXNlbnQsIGJ1dCBub3QgcHJpdmF0ZSBrZXkgZmlsZSBcIiVzXCIiLAot CQkJCQkJCQkgIGZuYnVmKTsKKwkJCQkJCQkJCQlmbmJ1Zik7CiAJCQllbHNlCiAJCQkJbGlicHFf YXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzdGF0IHByaXZhdGUga2V5IGZpbGUg XCIlc1wiOiAlbSIsCi0JCQkJCQkJCSAgZm5idWYpOworCQkJCQkJCQkJCWZuYnVmKTsKIAkJCXJl dHVybiAtMTsKIAkJfQogCkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBpbml0aWFsaXplX1NTTChQR2Nv bm4gKmNvbm4pCiAJCWlmICghU19JU1JFRyhidWYuc3RfbW9kZSkpCiAJCXsKIAkJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJwcml2YXRlIGtleSBmaWxlIFwiJXNcIiBpcyBub3QgYSBy ZWd1bGFyIGZpbGUiLAotCQkJCQkJCSAgZm5idWYpOworCQkJCQkJCQkJZm5idWYpOwogCQkJcmV0 dXJuIC0xOwogCQl9CiAKQEAgLTEzNzgsNyArMTM3OCw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29u biAqY29ubikKIAkJCWlmIChTU0xfdXNlX1ByaXZhdGVLZXlfZmlsZShjb25uLT5zc2wsIGZuYnVm LCBTU0xfRklMRVRZUEVfQVNOMSkgIT0gMSkKIAkJCXsKIAkJCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiY291bGQgbm90IGxvYWQgcHJpdmF0ZSBrZXkgZmlsZSBcIiVzXCI6ICVzIiwK LQkJCQkJCQkJICBmbmJ1ZiwgZXJyKTsKKwkJCQkJCQkJCQlmbmJ1ZiwgZXJyKTsKIAkJCQlTU0xl cnJmcmVlKGVycik7CiAJCQkJcmV0dXJuIC0xOwogCQkJfQpAQCAtMTM5NCw3ICsxMzk0LDcgQEAg aW5pdGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQogCQljaGFyCSAgICplcnIgPSBTU0xlcnJtZXNz YWdlKEVSUl9nZXRfZXJyb3IoKSk7CiAKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg ImNlcnRpZmljYXRlIGRvZXMgbm90IG1hdGNoIHByaXZhdGUga2V5IGZpbGUgXCIlc1wiOiAlcyIs Ci0JCQkJCQkgIGZuYnVmLCBlcnIpOworCQkJCQkJCQlmbmJ1ZiwgZXJyKTsKIAkJU1NMZXJyZnJl ZShlcnIpOwogCQlyZXR1cm4gLTE7CiAJfQpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgb3Blbl9jbGll bnRfU1NMKFBHY29ubiAqY29ubikKIAogCQkJCQlpZiAociA9PSAtMSkKIAkJCQkJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJTU0wgU1lTQ0FMTCBlcnJvcjogJXMiLAotCQkJCQkJCQkJ CSAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJ CQkJCQkJCQkJU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkp OwogCQkJCQllbHNlCiAJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiU1NMIFNZ U0NBTEwgZXJyb3I6IEVPRiBkZXRlY3RlZCIpOwogCQkJCQlwZ3Rsc19jbG9zZShjb25uKTsKQEAg LTE0ODksMTIgKzE0ODksMTIgQEAgb3Blbl9jbGllbnRfU1NMKFBHY29ubiAqY29ubikKIAkJCQkJ CWNhc2UgU1NMX1JfVkVSU0lPTl9UT09fTE9XOgogI2VuZGlmCiAJCQkJCQkJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgIlRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIHNlcnZlciBkb2Vz IG5vdCBzdXBwb3J0IGFueSBTU0wgcHJvdG9jb2wgdmVyc2lvbiBiZXR3ZWVuICVzIGFuZCAlcy4i LAotCQkJCQkJCQkJCQkgIGNvbm4tPnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiA/Ci0JCQkJCQkJ CQkJCSAgY29ubi0+c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uIDoKLQkJCQkJCQkJCQkJICBNSU5f T1BFTlNTTF9UTFNfVkVSU0lPTiwKLQkJCQkJCQkJCQkJICBjb25uLT5zc2xfbWF4X3Byb3RvY29s X3ZlcnNpb24gPwotCQkJCQkJCQkJCQkgIGNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbiA6 Ci0JCQkJCQkJCQkJCSAgTUFYX09QRU5TU0xfVExTX1ZFUlNJT04pOworCQkJCQkJCQkJCQkJCWNv bm4tPnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiA/CisJCQkJCQkJCQkJCQkJY29ubi0+c3NsX21p bl9wcm90b2NvbF92ZXJzaW9uIDoKKwkJCQkJCQkJCQkJCQlNSU5fT1BFTlNTTF9UTFNfVkVSU0lP TiwKKwkJCQkJCQkJCQkJCQljb25uLT5zc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24gPworCQkJCQkJ CQkJCQkJCWNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbiA6CisJCQkJCQkJCQkJCQkJTUFY X09QRU5TU0xfVExTX1ZFUlNJT04pOwogCQkJCQkJCWJyZWFrOwogCQkJCQkJZGVmYXVsdDoKIAkJ CQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS5j IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKaW5kZXggZTc0ZDNjY2Y2OS4uMjE1 YzlhNzRlZCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKQEAgLTI1NSwxNCArMjU1LDE0IEBA IHBxc2VjdXJlX3Jhd19yZWFkKFBHY29ubiAqY29ubiwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQog CQkJY2FzZSBFUElQRToKIAkJCWNhc2UgRUNPTk5SRVNFVDoKIAkJCQlsaWJwcV9hcHBlbmRfY29u bl9lcnJvcihjb25uLCAic2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHlc biIKLQkJCQkJCQkJICAgIlx0VGhpcyBwcm9iYWJseSBtZWFucyB0aGUgc2VydmVyIHRlcm1pbmF0 ZWQgYWJub3JtYWxseVxuIgotCQkJCQkJCQkgICAiXHRiZWZvcmUgb3Igd2hpbGUgcHJvY2Vzc2lu ZyB0aGUgcmVxdWVzdC4iKTsKKwkJCQkJCQkJCQkiXHRUaGlzIHByb2JhYmx5IG1lYW5zIHRoZSBz ZXJ2ZXIgdGVybWluYXRlZCBhYm5vcm1hbGx5XG4iCisJCQkJCQkJCQkJIlx0YmVmb3JlIG9yIHdo aWxlIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QuIik7CiAJCQkJYnJlYWs7CiAKIAkJCWRlZmF1bHQ6 CiAJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCByZWNlaXZlIGRh dGEgZnJvbSBzZXJ2ZXI6ICVzIiwKLQkJCQkJCQkJICBTT0NLX1NUUkVSUk9SKHJlc3VsdF9lcnJu bywKLQkJCQkJCQkJCQkJCXNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCQkJU09DS19T VFJFUlJPUihyZXN1bHRfZXJybm8sCisJCQkJCQkJCQkJCQkJICBzZWJ1Ziwgc2l6ZW9mKHNlYnVm KSkpOwogCQkJCWJyZWFrOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGli cHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaAppbmRleCA1 MTI3NjJmOTk5Li5iNGJiNmRiNWE3IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9s aWJwcS1pbnQuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaApAQCAtODg4 LDggKzg4OCw4IEBAIGV4dGVybiBjaGFyICpsaWJwcV9uZ2V0dGV4dChjb25zdCBjaGFyICptc2dp ZCwgY29uc3QgY2hhciAqbXNnaWRfcGx1cmFsLCB1bnNpZ25lCiAgKi8KICN1bmRlZiBfCiAKLWV4 dGVybiB2b2lkIGxpYnBxX2FwcGVuZF9lcnJvcihQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2UsIGNv bnN0IGNoYXIgKmZtdCwgLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDMpOwotZXh0ZXJuIHZv aWQgbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpmbXQs IC4uLikgcGdfYXR0cmlidXRlX3ByaW50ZigyLCAzKTsKK2V4dGVybiB2b2lkIGxpYnBxX2FwcGVu ZF9lcnJvcihQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2UsIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBn X2F0dHJpYnV0ZV9wcmludGYoMiwgMyk7CitleHRlcm4gdm9pZCBsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9wcmlu dGYoMiwgMyk7CiAKIC8qCiAgKiBUaGVzZSBtYWNyb3MgYXJlIG5lZWRlZCB0byBsZXQgZXJyb3It aGFuZGxpbmcgY29kZSBiZSBwb3J0YWJsZSBiZXR3ZWVuCi0tIAoyLjM0LjEKCg== --_003_DBBPR83MB05071BB8A8838830CABAFFE1F7129DBBPR83MB0507EURP_ Content-Type: application/octet-stream; name="v9-0002-Add-non-blocking-version-of-PQcancel.patch" Content-Description: v9-0002-Add-non-blocking-version-of-PQcancel.patch Content-Disposition: attachment; filename="v9-0002-Add-non-blocking-version-of-PQcancel.patch"; size=57006; creation-date="Wed, 30 Nov 2022 09:20:01 GMT"; modification-date="Wed, 30 Nov 2022 09:20:01 GMT" Content-Transfer-Encoding: base64 RnJvbSA0MTAzYWM2MzAwNDliZDBjOWVhMjUxMDVjMjIyMDI3MzkwMTA3N2Q3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hIDxqZWx0ZS5mZW5uZW1hQG1pY3Jvc29m dC5jb20+CkRhdGU6IFdlZCwgMTIgSmFuIDIwMjIgMDk6NTI6MDUgKzAxMDAKU3ViamVjdDogW1BB VENIIHY5IDIvMl0gQWRkIG5vbi1ibG9ja2luZyB2ZXJzaW9uIG9mIFBRY2FuY2VsCgpUaGlzIHBh dGNoIG1ha2VzIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyBpbiBsaWJwcToKMS4gQWRkIGEgbmV3IFBR Y2FuY2VsU2VuZCBmdW5jdGlvbiwgd2hpY2ggc2VuZHMgY2FuY2VsbGF0aW9uIHJlcXVlc3RzCiAg IHVzaW5nIHRoZSByZWd1bGFyIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBjb2RlLiBUaGlzIG1h a2VzIHN1cmUKICAgdGhhdCBjYW5jZWwgcmVxdWVzdHMgc3VwcG9ydCBhbmQgdXNlIGFsbCBjb25u ZWN0aW9uIG9wdGlvbnMKICAgaW5jbHVkaW5nIGVuY3J5cHRpb24uCjIuIEFkZCBhIG5ldyBQUWNh bmNlbENvbm4gZnVuY3Rpb24gd2hpY2ggYWxsb3dzIHNlbmRpbmcgY2FuY2VsbGF0aW9uIGluCiAg IGEgbm9uLWJsb2NraW5nIHdheSBieSB1c2luZyBpdCB0b2dldGhlciB3aXRoIHRoZSBuZXdseSBh ZGRlZAogICBQUWNhbmNlbFBvbGwgYW5kIFBRY2FuY2VsU29ja2V0LgozLiBVc2UgdGhlc2UgdHdv IG5ldyBjYW5jZWxsYXRpb24gQVBJcyBldmVyeXdoZXJlIGluIHRoZSBjb2RlYmFzZSB3aGVyZQog ICBzaWduYWwtc2FmZXR5IGlzIG5vdCBhIG5lY2Vzc2l0eS4KClRoZSBleGlzdGluZyBQUWNhbmNl bCBBUEkgaXMgdXNpbmcgYmxvY2tpbmcgSU8uIFRoaXMgbWFrZXMgUFFjYW5jZWwKaW1wb3NzaWJs ZSB0byB1c2UgaW4gYW4gZXZlbnQgbG9vcCBiYXNlZCBjb2RlYmFzZSwgd2l0aG91dCBibG9ja2lu ZyB0aGUKZXZlbnQgbG9vcCB1bnRpbCB0aGUgY2FsbCByZXR1cm5zLiBQUWNhbmNlbENvbm4gY2Fu IG5vdyBiZSB1c2VkIGluc3RlYWQsCnRvIGhhdmUgYSBub24tYmxvY2tpbmcgd2F5IG9mIHNlbmRp bmcgY2FuY2VsIHJlcXVlc3RzLiBUaGUgcG9zdGdyZXNfZmR3CmNhbmNlbGxhdGlvbiBjb2RlIGhh cyBiZWVuIG1vZGlmaWVkIHRvIG1ha2UgdXNlIG9mIHRoaXMuCgpUaGlzIHBhdGNoIGFsc28gaW5j bHVkZXMgYSB0ZXN0IGZvciBhbGwgb2YgbGlicHEgY2FuY2VsbGF0aW9uIEFQSXMuIFRoZQp0ZXN0 IGNhbiBiZSBlYXNpbHkgcnVuIGxpa2UgdGhpczoKCiAgICBjZCBzcmMvdGVzdC9tb2R1bGVzL2xp YnBxX3BpcGVsaW5lCiAgICBtYWtlICYmIC4vbGlicHFfcGlwZWxpbmUgY2FuY2VsCi0tLQogY29u dHJpYi9kYmxpbmsvZGJsaW5rLmMgICAgICAgICAgICAgICAgICAgICAgIHwgIDIyICstCiBjb250 cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMgICAgICAgICAgICAgfCAgOTMgKysrKy0KIC4u Li9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCAgICB8ICAxNSArCiBjb250 cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbCAgICAgfCAgIDggKwogZG9jL3Ny Yy9zZ21sL2xpYnBxLnNnbWwgICAgICAgICAgICAgICAgICAgICAgIHwgMjc5ICsrKysrKysrKysr LS0KIHNyYy9mZV91dGlscy9jb25uZWN0X3V0aWxzLmMgICAgICAgICAgICAgICAgICB8ICAxMCAr LQogc3JjL2ludGVyZmFjZXMvbGlicHEvZXhwb3J0cy50eHQgICAgICAgICAgICAgIHwgICA4ICsK IHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyAgICAgICAgICAgICB8IDM3MyArKysr KysrKysrKysrKysrLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLW1pc2MuYyAgICAgICAgICAg ICAgICB8ICAxNSArLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW9wZW5zc2wuYyAg ICAgIHwgICAyICstCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUuYyAgICAgICAgICAg ICAgfCAgIDYgKwogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaCAgICAgICAgICAgICAg IHwgIDI1ICstCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaCAgICAgICAgICAgICAg fCAgIDkgKwogc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jICAgICAgICAgIHwg IDI5ICstCiAuLi4vbW9kdWxlcy9saWJwcV9waXBlbGluZS9saWJwcV9waXBlbGluZS5jICAgfCAy NjMgKysrKysrKysrKystCiAxNSBmaWxlcyBjaGFuZ2VkLCAxMDQ4IGluc2VydGlvbnMoKyksIDEw OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2RibGluay9kYmxpbmsuYyBiL2Nv bnRyaWIvZGJsaW5rL2RibGluay5jCmluZGV4IDA0MDk1YThmMGUuLjA1MDU4ZGM2NmIgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jCisrKyBiL2NvbnRyaWIvZGJsaW5rL2RibGlu ay5jCkBAIC0xMzc4LDIyICsxMzc4LDI0IEBAIFBHX0ZVTkNUSU9OX0lORk9fVjEoZGJsaW5rX2Nh bmNlbF9xdWVyeSk7CiBEYXR1bQogZGJsaW5rX2NhbmNlbF9xdWVyeShQR19GVU5DVElPTl9BUkdT KQogewotCWludAkJCXJlczsKIAlQR2Nvbm4JICAgKmNvbm47Ci0JUEdjYW5jZWwgICAqY2FuY2Vs OwotCWNoYXIJCWVycmJ1ZlsyNTZdOworCVBHY2FuY2VsQ29ubgkqY2FuY2VsQ29ubjsKKwljaGFy CSAgICptc2c7CiAKIAlkYmxpbmtfaW5pdCgpOwogCWNvbm4gPSBkYmxpbmtfZ2V0X25hbWVkX2Nv bm4odGV4dF90b19jc3RyaW5nKFBHX0dFVEFSR19URVhUX1BQKDApKSk7Ci0JY2FuY2VsID0gUFFn ZXRDYW5jZWwoY29ubik7Ci0KLQlyZXMgPSBQUWNhbmNlbChjYW5jZWwsIGVycmJ1ZiwgMjU2KTsK LQlQUWZyZWVDYW5jZWwoY2FuY2VsKTsKKwljYW5jZWxDb25uID0gUFFjYW5jZWxTZW5kKGNvbm4p OwogCi0JaWYgKHJlcyA9PSAxKQotCQlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dCgi T0siKSk7CisJaWYgKFBRY2FuY2VsU3RhdHVzKGNhbmNlbENvbm4pID09IENPTk5FQ1RJT05fQkFE KQorCXsKKwkJbXNnID0gcGNob21wKFBRY2FuY2VsRXJyb3JNZXNzYWdlKGNhbmNlbENvbm4pKTsK Kwl9CiAJZWxzZQotCQlQR19SRVRVUk5fVEVYVF9QKGNzdHJpbmdfdG9fdGV4dChlcnJidWYpKTsK Kwl7CisJCW1zZyA9ICJPSyI7CisJfQorCVBRY2FuY2VsRmluaXNoKGNhbmNlbENvbm4pOworCVBH X1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KG1zZykpOwogfQogCiAKZGlmZiAtLWdpdCBh L2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3 L2Nvbm5lY3Rpb24uYwppbmRleCBmMGM0NWIwMGRiLi5jZTVmOTA4YmIxIDEwMDY0NAotLS0gYS9j b250cmliL3Bvc3RncmVzX2Zkdy9jb25uZWN0aW9uLmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19m ZHcvY29ubmVjdGlvbi5jCkBAIC0xMjY0LDM1ICsxMjY0LDk4IEBAIHBnZmR3X3Jlc2V0X3hhY3Rf c3RhdGUoQ29ubkNhY2hlRW50cnkgKmVudHJ5LCBib29sIHRvcGxldmVsKQogc3RhdGljIGJvb2wK IHBnZmR3X2NhbmNlbF9xdWVyeShQR2Nvbm4gKmNvbm4pCiB7Ci0JUEdjYW5jZWwgICAqY2FuY2Vs OwotCWNoYXIJCWVycmJ1ZlsyNTZdOwogCVBHcmVzdWx0ICAgKnJlc3VsdCA9IE5VTEw7Ci0JVGlt ZXN0YW1wVHogZW5kdGltZTsKLQlib29sCQl0aW1lZF9vdXQ7CiAKIAkvKgogCSAqIElmIGl0IHRh a2VzIHRvbyBsb25nIHRvIGNhbmNlbCB0aGUgcXVlcnkgYW5kIGRpc2NhcmQgdGhlIHJlc3VsdCwg YXNzdW1lCiAJICogdGhlIGNvbm5lY3Rpb24gaXMgZGVhZC4KIAkgKi8KLQllbmR0aW1lID0gVGlt ZXN0YW1wVHpQbHVzTWlsbGlzZWNvbmRzKEdldEN1cnJlbnRUaW1lc3RhbXAoKSwgMzAwMDApOwor CVRpbWVzdGFtcFR6IGVuZHRpbWUgPSBUaW1lc3RhbXBUelBsdXNNaWxsaXNlY29uZHMoR2V0Q3Vy cmVudFRpbWVzdGFtcCgpLCAzMDAwMCk7CisJYm9vbAkJdGltZWRfb3V0ID0gZmFsc2U7CisJYm9v bAkJZmFpbGVkID0gZmFsc2U7CisJUEdjYW5jZWxDb25uCSpjYW5jZWxfY29ubiA9IFBRY2FuY2Vs Q29ubihjb25uKTsKIAotCS8qCi0JICogSXNzdWUgY2FuY2VsIHJlcXVlc3QuICBVbmZvcnR1bmF0 ZWx5LCB0aGVyZSdzIG5vIGdvb2Qgd2F5IHRvIGxpbWl0IHRoZQotCSAqIGFtb3VudCBvZiB0aW1l IHRoYXQgd2UgbWlnaHQgYmxvY2sgaW5zaWRlIFBRZ2V0Q2FuY2VsKCkuCi0JICovCi0JaWYgKChj YW5jZWwgPSBQUWdldENhbmNlbChjb25uKSkpCisKKwlpZiAoUFFjYW5jZWxTdGF0dXMoY2FuY2Vs X2Nvbm4pID09IENPTk5FQ1RJT05fQkFEKQorCXsKKwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShl cnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBu b3Qgc2VuZCBjYW5jZWwgcmVxdWVzdDogJXMiLAorCQkJCQkJcGNob21wKFBRY2FuY2VsRXJyb3JN ZXNzYWdlKGNhbmNlbF9jb25uKSkpKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKiBJbiB3 aGF0IGZvbGxvd3MsIGRvIG5vdCBsZWFrIGFueSBQR2NhbmNlbENvbm4gb24gYW4gZXJyb3IuICov CisJUEdfVFJZKCk7CisJeworCQl3aGlsZSAodHJ1ZSkKKwkJeworCQkJVGltZXN0YW1wVHogbm93 ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCQkJbG9uZwkJY3VyX3RpbWVvdXQ7CisJCQlQb3N0 Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlIHBvbGxyZXMgPSBQUWNhbmNlbFBvbGwoY2FuY2VsX2Nvbm4p OworCQkJaW50CQkJd2FpdEV2ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRIOworCisJCQlpZiAocG9sbHJlcyA9PSBQR1JFU19QT0xMSU5HX09LKQor CQkJeworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKiBJZiB0aW1lb3V0IGhhcyBleHBpcmVkLCBn aXZlIHVwLCBlbHNlIGdldCBzbGVlcCB0aW1lLiAqLworCQkJY3VyX3RpbWVvdXQgPSBUaW1lc3Rh bXBEaWZmZXJlbmNlTWlsbGlzZWNvbmRzKG5vdywgZW5kdGltZSk7CisJCQlpZiAoY3VyX3RpbWVv dXQgPD0gMCkKKwkJCXsKKwkJCQl0aW1lZF9vdXQgPSB0cnVlOworCQkJCWZhaWxlZCA9IHRydWU7 CisJCQkJZ290byBleGl0OworCQkJfQorCisJCQlzd2l0Y2ggKHBvbGxyZXMpCisJCQl7CisJCQkJ Y2FzZSBQR1JFU19QT0xMSU5HX1JFQURJTkc6CisJCQkJCXdhaXRFdmVudHMgfD0gV0xfU09DS0VU X1JFQURBQkxFOworCQkJCQlicmVhazsKKwkJCQljYXNlIFBHUkVTX1BPTExJTkdfV1JJVElORzoK KwkJCQkJd2FpdEV2ZW50cyB8PSBXTF9TT0NLRVRfV1JJVEVBQkxFOworCQkJCQlicmVhazsKKwkJ CQlkZWZhdWx0OgorCQkJCQlmYWlsZWQgPSB0cnVlOworCQkJCQlnb3RvIGV4aXQ7CisJCQl9CisK KwkJCS8qIFNsZWVwIHVudGlsIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIGRvICovCisJCQlXYWl0TGF0 Y2hPclNvY2tldChNeUxhdGNoLCB3YWl0RXZlbnRzLCBQUWNhbmNlbFNvY2tldChjYW5jZWxfY29u biksCisJCQkJCQkJICBjdXJfdGltZW91dCwgUEdfV0FJVF9FWFRFTlNJT04pOworCQkJUmVzZXRM YXRjaChNeUxhdGNoKTsKKworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQorZXhpdDoJ OworCX0KKwlQR19DQVRDSCgpOwogCXsKLQkJaWYgKCFQUWNhbmNlbChjYW5jZWwsIGVycmJ1Ziwg c2l6ZW9mKGVycmJ1ZikpKQorCQlQUWNhbmNlbEZpbmlzaChjYW5jZWxfY29ubik7CisJCVBHX1JF X1RIUk9XKCk7CisJfQorCVBHX0VORF9UUlkoKTsKKworCWlmIChmYWlsZWQpCisJeworCQlpZiAo dGltZWRfb3V0KQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJtc2coImNvdWxk IG5vdCBjYW5jZWwgcmVxdWVzdCBkdWUgdG8gdGltZW91dCIpKSk7CisJCX0KKwkJZWxzZQogCQl7 CiAJCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9G QUlMVVJFKSwKIAkJCQkJIGVycm1zZygiY291bGQgbm90IHNlbmQgY2FuY2VsIHJlcXVlc3Q6ICVz IiwKLQkJCQkJCQllcnJidWYpKSk7Ci0JCQlQUWZyZWVDYW5jZWwoY2FuY2VsKTsKLQkJCXJldHVy biBmYWxzZTsKKwkJCQkJCQlwY2hvbXAoUFFjYW5jZWxFcnJvck1lc3NhZ2UoY2FuY2VsX2Nvbm4p KSkpKTsKIAkJfQotCQlQUWZyZWVDYW5jZWwoY2FuY2VsKTsKKwkJUFFjYW5jZWxGaW5pc2goY2Fu Y2VsX2Nvbm4pOworCQlyZXR1cm4gZmFpbGVkOwogCX0KKwlQUWNhbmNlbEZpbmlzaChjYW5jZWxf Y29ubik7CiAKIAkvKiBHZXQgYW5kIGRpc2NhcmQgdGhlIHJlc3VsdCBvZiB0aGUgcXVlcnkuICov CiAJaWYgKHBnZmR3X2dldF9jbGVhbnVwX3Jlc3VsdChjb25uLCBlbmR0aW1lLCAmcmVzdWx0LCAm dGltZWRfb3V0KSkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bv c3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19m ZHcub3V0CmluZGV4IDJhYjNmMWVmYWEuLjEwMzZlYmMzMzYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0 Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtMjY4OCw2ICsyNjg4LDIxIEBA IFNFTEVDVCB0MS5jMSwgdDIuYzIgRlJPTSB2NCB0MSBMRUZUIEpPSU4gZnQ1IHQyIE9OICh0MS5j MSA9IHQyLmMxKSBPUkRFUiBCWSB0MS5jCiAoMTAgcm93cykKIAogQUxURVIgVklFVyB2NCBPV05F UiBUTyByZWdyZXNzX3ZpZXdfb3duZXI7CistLSBNYWtlIHN1cmUgdGhpcyBiaWcgQ1JPU1MgSk9J TiBxdWVyeSBpcyBwdXNoZWQgZG93bgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxF Q1QgY291bnQoKikgRlJPTSBmdDEgQ1JPU1MgSk9JTiBmdDIgQ1JPU1MgSk9JTiBmdDQgQ1JPU1Mg Sk9JTiBmdDU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEZvcmVpZ24gU2NhbgorICAgT3V0cHV0OiAoY291bnQoKikpCisgICBSZWxhdGlvbnM6IEFn Z3JlZ2F0ZSBvbiAoKCgocHVibGljLmZ0MSkgSU5ORVIgSk9JTiAocHVibGljLmZ0MikpIElOTkVS IEpPSU4gKHB1YmxpYy5mdDQpKSBJTk5FUiBKT0lOIChwdWJsaWMuZnQ1KSkKKyAgIFJlbW90ZSBT UUw6IFNFTEVDVCBjb3VudCgqKSBGUk9NICgoKCJTIDEiLiJUIDEiIHIxIElOTkVSIEpPSU4gIlMg MSIuIlQgMSIgcjIgT04gKFRSVUUpKSBJTk5FUiBKT0lOICJTIDEiLiJUIDMiIHI0IE9OIChUUlVF KSkgSU5ORVIgSk9JTiAiUyAxIi4iVCA0IiByNiBPTiAoVFJVRSkpCisoNCByb3dzKQorCistLSBN YWtlIHN1cmUgcXVlcnkgY2FuY2VsbGF0aW9uIHdvcmtzCitTRVQgc3RhdGVtZW50X3RpbWVvdXQg PSAnMTBtcyc7CitzZWxlY3QgY291bnQoKikgZnJvbSBmdDEgQ1JPU1MgSk9JTiBmdDIgQ1JPU1Mg Sk9JTiBmdDQgQ1JPU1MgSk9JTiBmdDU7IC0tIHRoaXMgdGFrZXMgdmVyeSBsb25nCitFUlJPUjog IGNhbmNlbGluZyBzdGF0ZW1lbnQgZHVlIHRvIHN0YXRlbWVudCB0aW1lb3V0CitSRVNFVCBzdGF0 ZW1lbnRfdGltZW91dDsKIC0tIGNsZWFudXAKIERST1AgT1dORUQgQlkgcmVncmVzc192aWV3X293 bmVyOwogRFJPUCBST0xFIHJlZ3Jlc3Nfdmlld19vd25lcjsKZGlmZiAtLWdpdCBhL2NvbnRyaWIv cG9zdGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcv c3FsL3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXggNTE1NjA0MjllMC4uMDkyM2Y5MzgwMyAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKKysrIGIvY29u dHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwKQEAgLTMyNiw2ICszMjYsNyBA QCBERUxFVEUgRlJPTSBsb2N0X2VtcHR5OwogQU5BTFlaRSBmdF9lbXB0eTsKIEVYUExBSU4gKFZF UkJPU0UsIENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBmdF9lbXB0eSBPUkRFUiBCWSBjMTsKIAor CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLSBXSEVSRSB3aXRoIHJlbW90ZWx5LWV4ZWN1dGFibGUgY29uZGl0 aW9ucwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpAQCAtNzEzLDYgKzcxNCwxMyBAQCBTRUxFQ1QgdDEuYzEsIHQy LmMyIEZST00gdjQgdDEgTEVGVCBKT0lOIGZ0NSB0MiBPTiAodDEuYzEgPSB0Mi5jMSkgT1JERVIg QlkgdDEuYwogU0VMRUNUIHQxLmMxLCB0Mi5jMiBGUk9NIHY0IHQxIExFRlQgSk9JTiBmdDUgdDIg T04gKHQxLmMxID0gdDIuYzEpIE9SREVSIEJZIHQxLmMxLCB0Mi5jMSBPRkZTRVQgMTAgTElNSVQg MTA7CiBBTFRFUiBWSUVXIHY0IE9XTkVSIFRPIHJlZ3Jlc3Nfdmlld19vd25lcjsKIAorLS0gTWFr ZSBzdXJlIHRoaXMgYmlnIENST1NTIEpPSU4gcXVlcnkgaXMgcHVzaGVkIGRvd24KK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIEZST00gZnQxIENST1NTIEpPSU4g ZnQyIENST1NTIEpPSU4gZnQ0IENST1NTIEpPSU4gZnQ1OworLS0gTWFrZSBzdXJlIHF1ZXJ5IGNh bmNlbGxhdGlvbiB3b3JrcworU0VUIHN0YXRlbWVudF90aW1lb3V0ID0gJzEwbXMnOworc2VsZWN0 IGNvdW50KCopIGZyb20gZnQxIENST1NTIEpPSU4gZnQyIENST1NTIEpPSU4gZnQ0IENST1NTIEpP SU4gZnQ1OyAtLSB0aGlzIHRha2VzIHZlcnkgbG9uZworUkVTRVQgc3RhdGVtZW50X3RpbWVvdXQ7 CisKIC0tIGNsZWFudXAKIERST1AgT1dORUQgQlkgcmVncmVzc192aWV3X293bmVyOwogRFJPUCBS T0xFIHJlZ3Jlc3Nfdmlld19vd25lcjsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9saWJwcS5z Z21sIGIvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKaW5kZXggZjk1NThkZWMzYi4uMmUyMWVhNmVl NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2xpYnBxLnNnbWwKQEAgLTI2NSw3ICsyNjUsNyBAQCBQR2Nvbm4gKlBRc2V0ZGIoY2hhciAqcGdo b3N0LAogICAgIDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRY29ubmVjdFN0YXJ0UGFyYW1zIj4K ICAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRY29ubmVjdFN0YXJ0UGFyYW1zPC9mdW5jdGlvbj48aW5k ZXh0ZXJtPjxwcmltYXJ5PlBRY29ubmVjdFN0YXJ0UGFyYW1zPC9wcmltYXJ5PjwvaW5kZXh0ZXJt PjwvdGVybT4KICAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRY29ubmVjdFN0YXJ0PC9mdW5jdGlvbj48 aW5kZXh0ZXJtPjxwcmltYXJ5PlBRY29ubmVjdFN0YXJ0PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwv dGVybT4KLSAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRY29ubmVjdFBvbGw8L2Z1bmN0aW9uPjxpbmRl eHRlcm0+PHByaW1hcnk+UFFjb25uZWN0UG9sbDwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+ CisgICAgIDx0ZXJtIGlkPSJsaWJwcS1QUWNvbm5lY3RQb2xsIj48ZnVuY3Rpb24+UFFjb25uZWN0 UG9sbDwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5QUWNvbm5lY3RQb2xsPC9wcmltYXJ5 PjwvaW5kZXh0ZXJtPjwvdGVybT4KICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+CiAgICAg ICAgPGluZGV4dGVybT48cHJpbWFyeT5ub25ibG9ja2luZyBjb25uZWN0aW9uPC9wcmltYXJ5Pjwv aW5kZXh0ZXJtPgpAQCAtNDkwOSw3ICs0OTA5LDcgQEAgaW50IFBRaXNCdXN5KFBHY29ubiAqY29u bik7CiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXNlbmRRdWVyeSIvPi88eHJlZiBsaW5rZW5k PSJsaWJwcS1QUWdldFJlc3VsdCIvPgogICAgY2FuIGFsc28gYXR0ZW1wdCB0byBjYW5jZWwgYSBj b21tYW5kIHRoYXQgaXMgc3RpbGwgYmVpbmcgcHJvY2Vzc2VkCiAgICBieSB0aGUgc2VydmVyOyBz ZWUgPHhyZWYgbGlua2VuZD0ibGlicHEtY2FuY2VsIi8+LiAgQnV0IHJlZ2FyZGxlc3Mgb2YKLSAg IHRoZSByZXR1cm4gdmFsdWUgb2YgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWwiLz4sIHRo ZSBhcHBsaWNhdGlvbgorICAgdGhlIHJldHVybiB2YWx1ZSBvZiA8eHJlZiBsaW5rZW5kPSJsaWJw cS1QUWNhbmNlbFNlbmQiLz4sIHRoZSBhcHBsaWNhdGlvbgogICAgbXVzdCBjb250aW51ZSB3aXRo IHRoZSBub3JtYWwgcmVzdWx0LXJlYWRpbmcgc2VxdWVuY2UgdXNpbmcKICAgIDx4cmVmIGxpbmtl bmQ9ImxpYnBxLVBRZ2V0UmVzdWx0Ii8+LiAgQSBzdWNjZXNzZnVsIGNhbmNlbGxhdGlvbiB3aWxs CiAgICBzaW1wbHkgY2F1c2UgdGhlIGNvbW1hbmQgdG8gdGVybWluYXRlIHNvb25lciB0aGFuIGl0 IHdvdWxkIGhhdmUKQEAgLTU2MjcsMTMgKzU2MjcsMjIwIEBAIGludCBQUXNldFNpbmdsZVJvd01v ZGUoUEdjb25uICpjb25uKTsKICAgIHRoaXMgc2VjdGlvbi4KIAogICAgPHZhcmlhYmxlbGlzdD4K KyAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWNhbmNlbFNlbmQiPgorICAgICA8dGVybT48 ZnVuY3Rpb24+UFFjYW5jZWxTZW5kPC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRY2Fu Y2VsU2VuZDwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CisKKyAgICAgPGxpc3RpdGVtPgor ICAgICAgPHBhcmE+CisgICAgICAgUmVxdWVzdHMgdGhhdCB0aGUgc2VydmVyIGFiYW5kb25zIHBy b2Nlc3Npbmcgb2YgdGhlIGN1cnJlbnQgY29tbWFuZC4KKzxzeW5vcHNpcz4KK1BHY2FuY2VsQ29u biAqUFFjYW5jZWxTZW5kKFBHY29ubiAqY29ubik7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJh PgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIHJlcXVlc3QgaXMgbWFkZSBvdmVyIGEgY29u bmVjdGlvbiB0aGF0IHVzZXMgdGhlIHNhbWUgY29ubmVjdGlvbgorICAgICAgIG9wdGlvbnMgYXMg dGhlIHRoZSBvcmlnaW5hbCA8c3RydWN0bmFtZT5QR2Nvbm48L3N0cnVjdG5hbWU+LiBTbyB3aGVu IHRoZQorICAgICAgIG9yaWdpbmFsIGNvbm5lY3Rpb24gaXMgZW5jcnlwdGVkICh1c2luZyBUTFMg b3IgR1NTKSwgdGhlIGNvbm5lY3Rpb24gZm9yCisgICAgICAgdGhlIGNhbmNlbCByZXF1ZXN0IGNv bm5lY3Rpb24gaXMgZW5jcnlwdGVkIGluIHRoZSBzYW1lLiBBbnkgY29ubmVjdGlvbgorICAgICAg IG9wdGlvbnMgdGhhdCBvbmx5IG1ha2Ugc2Vuc2UgZm9yIGF1dGhlbnRpY2F0aW9uIG9yIGFmdGVy IGF1dGhlbnRpY2F0aW9uCisgICAgICAgYXJlIGlnbm9yZWQgdGhvdWdoLCBiZWNhdXNlIGNhbmNl bGxhdGlvbiByZXF1ZXN0cyBkbyBub3QgcmVxdWlyZQorICAgICAgIGF1dGhlbnRpY2F0aW9uLgor ICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGZ1bmN0aW9uIHJldHVy bnMgYSA8c3RydWN0bmFtZT5QR2NhbmNlbENvbm48L3N0cnVjdG5hbWU+CisgICAgICAgb2JqZWN0 LiBCeSB1c2luZworICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsU3RhdHVzIi8+ CisgICAgICAgaXQgY2FuIGJlIGNoZWNrZWQgaWYgdGhlcmUgd2FzIGFueSBlcnJvciB3aGVuIHNl bmRpbmcgdGhlIGNhbmNlbGxhdGlvbgorICAgICAgIHJlcXVlc3QuIElmIDx4cmVmIGxpbmtlbmQ9 ImxpYnBxLVBRY2FuY2VsU3RhdHVzIi8+CisgICAgICAgcmV0dXJucyBmb3IgPHN5bWJvbD5DT05O RUNUSU9OX09LPC9zeW1ib2w+IHRoZSByZXF1ZXN0IHdhcworICAgICAgIHN1Y2Nlc3NmdWxseSBz ZW50LCBidXQgaWYgaXQgcmV0dXJucyA8c3ltYm9sPkNPTk5FQ1RJT05fQkFEPC9zeW1ib2w+Cisg ICAgICAgYW4gZXJyb3Igb2NjdXJlZC4gSWYgYW4gZXJyb3Igb2NjdXJlZCB0aGUgZXJyb3IgbWVz c2FnZSBjYW4gYmUgcmV0cmlldmVkIHVzaW5nCisgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEt UFFjYW5jZWxFcnJvck1lc3NhZ2UiLz4uCisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgor ICAgICAgIFN1Y2Nlc3NmdWwgZGlzcGF0Y2ggb2YgdGhlIGNhbmNlbGxhdGlvbiBpcyBubyBndWFy YW50ZWUgdGhhdCB0aGUgcmVxdWVzdAorICAgICAgIHdpbGwgaGF2ZSBhbnkgZWZmZWN0LCBob3dl dmVyLiBJZiB0aGUgY2FuY2VsbGF0aW9uIGlzIGVmZmVjdGl2ZSwgdGhlCisgICAgICAgY29tbWFu ZCBiZWluZyBjYW5jZWxsZWQgd2lsbCB0ZXJtaW5hdGUgZWFybHkgYW5kIHJldHVybiBhbiBlcnJv ciByZXN1bHQuCisgICAgICAgSWYgdGhlIGNhbmNlbGxhdGlvbiBmYWlscyAoc2F5LCBiZWNhdXNl IHRoZSBzZXJ2ZXIgd2FzIGFscmVhZHkgZG9uZQorICAgICAgIHByb2Nlc3NpbmcgdGhlIGNvbW1h bmQpLCB0aGVuIHRoZXJlIHdpbGwgYmUgbm8gdmlzaWJsZSByZXN1bHQgYXQgYWxsLgorICAgICAg PC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBOb3RlIHRoYXQgd2hlbiA8ZnVuY3Rpb24+ UFFjYW5jZWxTZW5kPC9mdW5jdGlvbj4gcmV0dXJucyBhIG5vbi1udWxsCisgICAgICAgcG9pbnRl ciwgeW91IG11c3QgY2FsbCA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbEZpbmlzaCIvPiB3 aGVuIHlvdSAKKyAgICAgICBhcmUgZmluaXNoZWQgd2l0aCBpdCwgaW4gb3JkZXIgdG8gZGlzcG9z ZSBvZiB0aGUgc3RydWN0dXJlIGFuZCBhbnkKKyAgICAgICBhc3NvY2lhdGVkIG1lbW9yeSBibG9j a3MuIFRoaXMgbXVzdCBiZSBkb25lIGV2ZW4gaWYgdGhlIGNhbmNlbCByZXF1ZXN0CisgICAgICAg ZmFpbGVkLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVu dHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFjYW5jZWxDb25uIj4KKyAgICAg PHRlcm0+PGZ1bmN0aW9uPlBRY2FuY2VsQ29ubjwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFy eT5QUWNhbmNlbENvbm48L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorCisgICAgIDxsaXN0 aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIEEgdmVyc2lvbiBvZiA8eHJlZiBsaW5rZW5kPSJs aWJwcS1QUWNhbmNlbFNlbmQiLz4gdGhhdCBjYW4gYmUgdXNlZCAKKyAgICAgICBpbiBhIG5vbi1i bG9ja2luZyBtYW5uZXIuCis8c3lub3BzaXM+CitQR2NhbmNlbENvbm4gKlBRY2FuY2VsQ29ubihQ R2Nvbm4gKmNvbm4pOworPC9zeW5vcHNpcz4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+ CisgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWxDb25uIi8+IGNyZWF0ZXMgYQor ICAgICAgIDxzdHJ1Y3RuYW1lPlBHY2FuY2VsQ29ubjwvc3RydWN0bmFtZT48aW5kZXh0ZXJtPjxw cmltYXJ5PlBHY2FuY2VsQ29ubjwvcHJpbWFyeT48L2luZGV4dGVybT4sCisgICAgICAgYnV0IGl0 IHdvbid0IGluc3RhbnRseSBzdGFydCBzZW5kaW5nIGEgY2FuY2VsIHJlcXVlc3Qgb3ZlciB0aGlz CisgICAgICAgY29ubmVjdGlvbiBsaWtlIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsU2Vu ZCIvPi4KKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbFN0YXR1cyIvPiBzaG91 bGQgYmUgY2FsbGVkIG9uIHRoZSByZXR1cm4KKyAgICAgICB2YWx1ZSB0byBjaGVjayBpZiB0aGUg PHN0cnVjdG5hbWU+IFBHY2FuY2VsQ29ubiA8L3N0cnVjdG5hbWU+IHdhcworICAgICAgIGNyZWF0 ZWQgc3VjY2Vzc2Z1bGx5LgorICAgICAgIFRoZSA8c3RydWN0bmFtZT5QR2NhbmNlbENvbm48L3N0 cnVjdG5hbWU+IG9iamVjdCBpcyBhbiBvcGFxdWUgc3RydWN0dXJlCisgICAgICAgdGhhdCBpcyBu b3QgbWVhbnQgdG8gYmUgYWNjZXNzZWQgZGlyZWN0bHkgYnkgdGhlIGFwcGxpY2F0aW9uLgorICAg ICAgIFRoaXMgPHN0cnVjdG5hbWU+UEdjYW5jZWxDb25uPC9zdHJ1Y3RuYW1lPiBvYmplY3QgY2Fu IGJlIHVzZWQgdG8gY2FuY2VsCisgICAgICAgdGhlIHF1ZXJ5IHRoYXQncyBydW5uaW5nIG9uIHRo ZSBvcmlnaW5hbCBjb25uZWN0aW9uIGluIGEgdGhyZWFkLXNhZmUgYW5kCisgICAgICAgbm9uLWJs b2NraW5nIHdheS4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAgTm90ZSB0 aGF0IHdoZW4gPGZ1bmN0aW9uPlBRY2FuY2VsQ29ubjwvZnVuY3Rpb24+IHJldHVybnMgYSBub24t bnVsbAorICAgICAgIHBvaW50ZXIsIHlvdSBtdXN0IGNhbGwgPHhyZWYgbGlua2VuZD0ibGlicHEt UFFjYW5jZWxGaW5pc2giLz4gd2hlbiB5b3UgCisgICAgICAgYXJlIGZpbmlzaGVkIHdpdGggaXQs IGluIG9yZGVyIHRvIGRpc3Bvc2Ugb2YgdGhlIHN0cnVjdHVyZSBhbmQgYW55CisgICAgICAgYXNz b2NpYXRlZCBtZW1vcnkgYmxvY2tzLiBUaGlzIG11c3QgYmUgZG9uZSBldmVuIGlmIHRoZSBjYW5j ZWwgcmVxdWVzdAorICAgICAgIGZhaWxlZCBvciB3YXMgYWJhbmRvbmVkLgorICAgICAgPC9wYXJh PgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3Rl bnRyeSBpZD0ibGlicHEtUFFjYW5jZWxTdGF0dXMiPgorICAgICA8dGVybT48ZnVuY3Rpb24+UFFj YW5jZWxTdGF0dXM8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFjYW5jZWxTdGF0dXM8 L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxw YXJhPgorICAgICAgIEEgdmVyc2lvbiBvZiA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXN0YXR1cyIv PiB0aGF0IGNhbiBiZSB1c2VkIGZvcgorICAgICAgIGNhbmNlbGxhdGlvbiBjb25uZWN0aW9ucy4K KzxzeW5vcHNpcz4KK0Nvbm5TdGF0dXNUeXBlIFBRY2FuY2VsU3RhdHVzKGNvbnN0IFBHY2FuY2Vs Q29ubiAqY29ubik7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgSW4gYWRkaXRpb24gdG8gYWxsIHRoZSBzdGF0dXNlcyB0aGF0IGEgPHN0cnVjdG5hbWU+ UEdjb25uPC9zdHJ1Y3RuYW1lPgorICAgICAgIGNhbiBoYXZlLCB0aGlzIGNvbm5lY3Rpb24gY2Fu IGhhdmUgb25lIGFkZGl0aW9uYWwgc3RhdHVzOgorCisgICAgICAgPHZhcmlhYmxlbGlzdD4KKyAg ICAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtY29ubmVjdGlvbi1zdGFydGluZyI+CisgICAg ICAgICA8dGVybT48c3ltYm9sPkNPTk5FQ1RJT05fU1RBUlRJTkc8L3N5bWJvbD48L3Rlcm0+Cisg ICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgIFdhaXRpbmcg Zm9yIHRoZSBmaXJzdCBjYWxsIHRvIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsUG9sbCIv PiwKKyAgICAgICAgICAgdG8gYWN0dWFsbHkgb3BlbiB0aGUgc29ja2V0LiBUaGlzIGlzIHRoZSBj b25uZWN0aW9uIHN0YXRlIHJpZ2h0IGFmdGVyCisgICAgICAgICAgIGNhbGxpbmcgPHhyZWYgbGlu a2VuZD0ibGlicHEtUFFjYW5jZWxDb25uIi8+LiBObyBjb25uZWN0aW9uIHRvIHRoZQorICAgICAg ICAgICBzZXJ2ZXIgaGFzIGJlZW4gaW5pdGlhdGVkIHlldCBhdCB0aGlzIHBvaW50LiBUbyBhY3R1 YWxseSBzdGFydAorICAgICAgICAgICBzZW5kaW5nIHRoZSBjYW5jZWwgcmVxdWVzdCB1c2UgPHhy ZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWxQb2xsIi8+LgorICAgICAgICAgIDwvcGFyYT4KKyAg ICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgIDwvdmFy aWFibGVsaXN0PgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBPbmUgZmlu YWwgbm90ZSBhYm91dCB0aGUgcmV0dXJuZWQgc3RhdHVzZXMgaXMgdGhhdCAKKyAgICAgICA8c3lt Ym9sPkNPTk5FQ1RJT05fT0s8L3N5bWJvbD4gaGFzIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG1lYW5p bmcgZm9yIGEKKyAgICAgICA8c3RydWN0bmFtZT5QR2NhbmNlbENvbm48L3N0cnVjdG5hbWU+IHRo YW4gd2hhdCBpdCBoYXMgZm9yIGEgCisgICAgICAgPHN0cnVjdG5hbWU+UEdjb25uPC9zdHJ1Y3Ru YW1lPi4gV2hlbiA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbFN0YXR1cyIvPgorICAgICAg IHJldHVybnMgPHN5bWJvbD5DT05ORUNUSU9OX09LPC9zeW1ib2w+IGZvciBhIDxzdHJ1Y3RuYW1l PlBHY2FuY2VsQ29ubjwvc3RydWN0bmFtZT4KKyAgICAgICBpdCBtZWFucyB0aGF0IHRoYXQgdGhl IGRpc3BhdGNoIG9mIHRoZSBjYW5jZWwgcmVxdWVzdCBoYXMgY29tcGxldGVkIChhbHRob3VnaAor ICAgICAgIHRoaXMgaXMgbm8gcHJvbWlzZSB0aGF0IHRoZSBxdWVyeSB3YXMgYWN0dWFsbHkgY2Fu Y2VsbGVkKS4KKyAgICAgICBXaGlsZSBhIDxzeW1ib2w+Q09OTkVDVElPTl9PSzwvc3ltYm9sPiBy ZXN1bHQgZm9yCisgICAgICAgPHN0cnVjdG5hbWU+UEdjb25uPC9zdHJ1Y3RuYW1lPiBtZWFucyB0 aGF0cXVlcmllcyBjYW4gYmUgc2VudCBvdmVyIHRoZQorICAgICAgIGNvbm5lY3Rpb24uCisgICAg ICA8L3BhcmE+CisKKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAg IDx2YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRY2FuY2VsUG9sbCI+CisgICAgIDx0ZXJtPjxmdW5j dGlvbj5QUWNhbmNlbFBvbGw8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFjYW5jZWxQ b2xsPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KKworICAgICA8bGlzdGl0ZW0+CisgICAg ICA8cGFyYT4KKyAgICAgICBBIHZlcnNpb24gb2YgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjb25u ZWN0UG9sbCIvPiB0aGF0IGNhbiBiZSB1c2VkIGZvcgorICAgICAgIGNhbmNlbGxhdGlvbiBjb25u ZWN0aW9ucy4KKzxzeW5vcHNpcz4KK1Bvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgUFFjYW5jZWxQ b2xsKFBHY2FuY2VsQ29ubiAqY29ubik7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJhPgorICAg ICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeSBp ZD0ibGlicHEtUFFjYW5jZWxFcnJvck1lc3NhZ2UiPgorICAgICA8dGVybT48ZnVuY3Rpb24+UFFj YW5jZWxFcnJvck1lc3NhZ2U8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFjYW5jZWxF cnJvck1lc3NhZ2U8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorCisgICAgIDxsaXN0aXRl bT4KKyAgICAgIDxwYXJhPgorICAgICAgIEEgdmVyc2lvbiBvZiA8eHJlZiBsaW5rZW5kPSJsaWJw cS1QUWVycm9yTWVzc2FnZSIvPiB0aGF0IGNhbiBiZSB1c2VkIGZvcgorICAgICAgIGNhbmNlbGxh dGlvbiBjb25uZWN0aW9ucy4KKzxzeW5vcHNpcz4KK2NoYXIgKlBRY2FuY2VsRXJyb3JNZXNzYWdl KGNvbnN0IFBHY2FuY2VsQ29ubiAqY29ubik7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJhPgor ICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRy eSBpZD0ibGlicHEtUFFjYW5jZWxGaW5pc2giPgorICAgICA8dGVybT48ZnVuY3Rpb24+UFFjYW5j ZWxGaW5pc2g8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFjYW5jZWxGaW5pc2g8L3By aW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4K KyAgICAgICBDbG9zZXMgdGhlIGNhbmNlbCBjb25uZWN0aW9uIChpZiBpdCBkaWQgbm90IGZpbmlz aCBzZW5kaW5nIHRoZSBjYW5jZWwgCisgICAgICAgcmVxdWVzdCB5ZXQpLiBBbHNvIGZyZWVzIG1l bW9yeSB1c2VkIGJ5IHRoZSA8c3RydWN0bmFtZT5QR2NhbmNlbENvbm48L3N0cnVjdG5hbWU+IAor ICAgICAgIG9iamVjdC4KKzxzeW5vcHNpcz4KK3ZvaWQgUFFjYW5jZWxGaW5pc2goUEdjYW5jZWxD b25uICpjb25uKTsKKzwvc3lub3BzaXM+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgor ICAgICAgIE5vdGUgdGhhdCBldmVuIGlmIHRoZSBjYW5jZWwgYXR0ZW1wdCBmYWlscyAoYXMKKyAg ICAgICBpbmRpY2F0ZWQgYnkgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWxTdGF0dXMiLz4p LCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGNhbGwgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5j ZWxGaW5pc2giLz4KKyAgICAgICB0byBmcmVlIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgPHN0cnVj dG5hbWU+UEdjYW5jZWxDb25uPC9zdHJ1Y3RuYW1lPiBvYmplY3QuCisgICAgICAgVGhlIDxzdHJ1 Y3RuYW1lPlBHY2FuY2VsQ29ubjwvc3RydWN0bmFtZT4gcG9pbnRlciBtdXN0IG5vdCBiZSB1c2Vk IGFnYWluIGFmdGVyCisgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWxGaW5pc2gi Lz4gaGFzIGJlZW4gY2FsbGVkLgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAg IDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFjYW5jZWxS ZXNldCI+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5QUWNhbmNlbFJlc2V0PC9mdW5jdGlvbj48aW5k ZXh0ZXJtPjxwcmltYXJ5PlBRY2FuY2VsUmVzZXQ8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJt PgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBSZXNldHMgdGhlIDxzeW1i b2w+UEdjYW5jZWxDb25uPC9zeW1ib2w+IHNvIGl0IGNhbiBiZSByZXVzZWQgZm9yIGEgbmV3IAor ICAgICAgIGNhbmNlbCBjb25uZWN0aW9uLgorPHN5bm9wc2lzPgordm9pZCBQUWNhbmNlbFJlc2V0 KFBHY2FuY2VsQ29ubiAqY29ubik7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJhPgorCisgICAg ICA8cGFyYT4KKyAgICAgICBJZiB0aGUgPHN5bWJvbD5QR2NhbmNlbENvbm48L3N5bWJvbD4gaXMg Y3VycmVudGx5IHVzZWQgdG8gc2VuZCBhIGNhbmNlbAorICAgICAgIHJlcXVlc3QsIHRoZW4gdGhp cyBjb25uZWN0aW9uIGlzIGNsb3NlZC4gSXQgd2lsbCB0aGVuIHByZXBhcmUgdGhlCisgICAgICAg PHN5bWJvbD5QR2NhbmNlbENvbm48L3N5bWJvbD4gb2JqZWN0IHN1Y2ggdGhhdCBpdCBjYW4gYmUg dXNlZCB0byBzZW5kIGEKKyAgICAgICBuZXcgY2FuY2VsIHJlcXVlc3QuIFRoaXMgY2FuIGJlIHVz ZWQgdG8gY3JlYXRlIG9uZSA8c3ltYm9sPlBHY2FuY2VsQ29ubjwvc3ltYm9sPgorICAgICAgIGZv ciBhIDxzeW1ib2w+UEdjb25uPC9zeW1ib2w+IGFuZCByZXVzZSB0aGF0IG11bHRpcGxlIHRpbWVz IHRocm91Z2hvdXQKKyAgICAgICB0aGUgbGlmZXRpbWUgb2YgdGhlIG9yaWdpbmFsIDxzeW1ib2w+ UEdjb25uPC9zeW1ib2w+LgorICAgICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwv dmFybGlzdGVudHJ5PgorCiAgICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFnZXRDYW5jZWwi PgogICAgICA8dGVybT48ZnVuY3Rpb24+UFFnZXRDYW5jZWw8L2Z1bmN0aW9uPjxpbmRleHRlcm0+ PHByaW1hcnk+UFFnZXRDYW5jZWw8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgogCiAgICAg IDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIENyZWF0ZXMgYSBkYXRhIHN0cnVjdHVy ZSBjb250YWluaW5nIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY2FuY2VsCi0gICAgICAgYSBj b21tYW5kIGlzc3VlZCB0aHJvdWdoIGEgcGFydGljdWxhciBkYXRhYmFzZSBjb25uZWN0aW9uLgor ICAgICAgIGEgY29tbWFuZCB1c2luZyA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbCIvPi4K IDxzeW5vcHNpcz4KIFBHY2FuY2VsICpQUWdldENhbmNlbChQR2Nvbm4gKmNvbm4pOwogPC9zeW5v cHNpcz4KQEAgLTU2NzUsMTQgKzU4ODIsMzAgQEAgdm9pZCBQUWZyZWVDYW5jZWwoUEdjYW5jZWwg KmNhbmNlbCk7CiAKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+Ci0gICAgICAgUmVxdWVz dHMgdGhhdCB0aGUgc2VydmVyIGFiYW5kb24gcHJvY2Vzc2luZyBvZiB0aGUgY3VycmVudCBjb21t YW5kLgorICAgICAgIEFuIGluc2VjdXJlIHZlcnNpb24gb2YKKyAgICAgICA8eHJlZiBsaW5rZW5k PSJsaWJwcS1QUWNhbmNlbFNlbmQiLz4sIGJ1dCBvbmUgdGhhdCBjYW4gYmUgdXNlZCBzYWZlbHkK KyAgICAgICBmcm9tIHdpdGhpbiBhIHNpZ25hbCBoYW5kbGVyLgogPHN5bm9wc2lzPgogaW50IFBR Y2FuY2VsKFBHY2FuY2VsICpjYW5jZWwsIGNoYXIgKmVycmJ1ZiwgaW50IGVycmJ1ZnNpemUpOwog PC9zeW5vcHNpcz4KICAgICAgIDwvcGFyYT4KIAogICAgICAgPHBhcmE+Ci0gICAgICAgVGhlIHJl dHVybiB2YWx1ZSBpcyAxIGlmIHRoZSBjYW5jZWwgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bGx5Cisg ICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWwiLz4gc2hvdWxkIG9ubHkgYmUgdXNl ZCBpZiBpdCdzIG5lY2Vzc2FyeQorICAgICAgIHRvIGNhbmNlbCBhIHF1ZXJ5IGZyb20gYSBzaWdu YWwtaGFuZGxlci4gSWYgc2lnbmFsLXNhZmV0eSBpcyBub3QgbmVlZGVkLAorICAgICAgIDx4cmVm IGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsU2VuZCIvPiBzaG91bGQgYmUgdXNlZCB0byBjYW5jZWwg dGhlIHF1ZXJ5IAorICAgICAgIGluc3RlYWQuCisgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEt UFFjYW5jZWwiLz4gY2FuIGJlIHNhZmVseSBpbnZva2VkIGZyb20gYSBzaWduYWwKKyAgICAgICBo YW5kbGVyLCBpZiB0aGUgPHBhcmFtZXRlcj5lcnJidWY8L3BhcmFtZXRlcj4gaXMgYSBsb2NhbCB2 YXJpYWJsZSBpbiB0aGUKKyAgICAgICBzaWduYWwgaGFuZGxlci4gIFRoZSA8c3RydWN0bmFtZT5Q R2NhbmNlbDwvc3RydWN0bmFtZT4gb2JqZWN0IGlzIHJlYWQtb25seQorICAgICAgIGFzIGZhciBh cyA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbCIvPiBpcyBjb25jZXJuZWQsIHNvIGl0IGNh bgorICAgICAgIGFsc28gYmUgaW52b2tlZCBmcm9tIGEgdGhyZWFkIHRoYXQgaXMgc2VwYXJhdGUg ZnJvbSB0aGUgb25lCisgICAgICAgbWFuaXB1bGF0aW5nIHRoZSA8c3RydWN0bmFtZT5QR2Nvbm48 L3N0cnVjdG5hbWU+IG9iamVjdC4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAg ICAgVGhlIHJldHVybiB2YWx1ZSBvZiA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbCIvPgor ICAgICAgIGlzIDEgaWYgdGhlIGNhbmNlbCByZXF1ZXN0IHdhcyBzdWNjZXNzZnVsbHkKICAgICAg ICBkaXNwYXRjaGVkIGFuZCAwIGlmIG5vdC4gIElmIG5vdCwgPHBhcmFtZXRlcj5lcnJidWY8L3Bh cmFtZXRlcj4gaXMgZmlsbGVkCiAgICAgICAgd2l0aCBhbiBleHBsYW5hdG9yeSBlcnJvciBtZXNz YWdlLiAgPHBhcmFtZXRlcj5lcnJidWY8L3BhcmFtZXRlcj4KICAgICAgICBtdXN0IGJlIGEgY2hh ciBhcnJheSBvZiBzaXplIDxwYXJhbWV0ZXI+ZXJyYnVmc2l6ZTwvcGFyYW1ldGVyPiAodGhlCkBA IC01NjkwLDIxICs1OTEzLDIyIEBAIGludCBQUWNhbmNlbChQR2NhbmNlbCAqY2FuY2VsLCBjaGFy ICplcnJidWYsIGludCBlcnJidWZzaXplKTsKICAgICAgIDwvcGFyYT4KIAogICAgICAgPHBhcmE+ Ci0gICAgICAgU3VjY2Vzc2Z1bCBkaXNwYXRjaCBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgcmVx dWVzdCB3aWxsIGhhdmUKLSAgICAgICBhbnkgZWZmZWN0LCBob3dldmVyLiAgSWYgdGhlIGNhbmNl bGxhdGlvbiBpcyBlZmZlY3RpdmUsIHRoZSBjdXJyZW50Ci0gICAgICAgY29tbWFuZCB3aWxsIHRl cm1pbmF0ZSBlYXJseSBhbmQgcmV0dXJuIGFuIGVycm9yIHJlc3VsdC4gIElmIHRoZQotICAgICAg IGNhbmNlbGxhdGlvbiBmYWlscyAoc2F5LCBiZWNhdXNlIHRoZSBzZXJ2ZXIgd2FzIGFscmVhZHkg ZG9uZQotICAgICAgIHByb2Nlc3NpbmcgdGhlIGNvbW1hbmQpLCB0aGVuIHRoZXJlIHdpbGwgYmUg bm8gdmlzaWJsZSByZXN1bHQgYXQKLSAgICAgICBhbGwuCi0gICAgICA8L3BhcmE+Ci0KLSAgICAg IDxwYXJhPgotICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsIi8+IGNhbiBzYWZl bHkgYmUgaW52b2tlZCBmcm9tIGEgc2lnbmFsCi0gICAgICAgaGFuZGxlciwgaWYgdGhlIDxwYXJh bWV0ZXI+ZXJyYnVmPC9wYXJhbWV0ZXI+IGlzIGEgbG9jYWwgdmFyaWFibGUgaW4gdGhlCi0gICAg ICAgc2lnbmFsIGhhbmRsZXIuICBUaGUgPHN0cnVjdG5hbWU+UEdjYW5jZWw8L3N0cnVjdG5hbWU+ IG9iamVjdCBpcyByZWFkLW9ubHkKLSAgICAgICBhcyBmYXIgYXMgPHhyZWYgbGlua2VuZD0ibGli cHEtUFFjYW5jZWwiLz4gaXMgY29uY2VybmVkLCBzbyBpdCBjYW4KLSAgICAgICBhbHNvIGJlIGlu dm9rZWQgZnJvbSBhIHRocmVhZCB0aGF0IGlzIHNlcGFyYXRlIGZyb20gdGhlIG9uZQotICAgICAg IG1hbmlwdWxhdGluZyB0aGUgPHN0cnVjdG5hbWU+UEdjb25uPC9zdHJ1Y3RuYW1lPiBvYmplY3Qu CisgICAgICAgVG8gYWNoaWV2ZSBzaWduYWwtc2FmZXR5LCBzb21lIGNvbmNlc3Npb25zIG5lZWRl ZCB0byBiZSBtYWRlIGluIHRoZQorICAgICAgIGltcGxlbWVudGF0aW9uIG9mIDx4cmVmIGxpbmtl bmQ9ImxpYnBxLVBRY2FuY2VsIi8+LiBOb3QgYWxsIGNvbm5lY3Rpb24KKyAgICAgICBvcHRpb25z IG9mIHRoZSBvcmlnaW5hbCBjb25uZWN0aW9uIGFyZSB1c2VkIHdoZW4gZXN0YWJsaXNoaW5nIGEK KyAgICAgICBjb25uZWN0aW9uIGZvciB0aGUgY2FuY2VsbGF0aW9uIHJlcXVlc3QuIFdoZW4gY2Fs bGluZyB0aGlzIGZ1bmN0aW9uIGEKKyAgICAgICBjb25uZWN0aW9uIGlzIG1hZGUgdG8gdGhlIHBv c3RncmVzIGhvc3QgdXNpbmcgdGhlIHNhbWUgcG9ydC4gVGhlIG9ubHkKKyAgICAgICBjb25uZWN0 aW9uIG9wdGlvbnMgdGhhdCBhcmUgaG9ub3JlZCBkdXJpbmcgdGhpcyBjb25uZWN0aW9uIGFyZQor ICAgICAgIDx2YXJuYW1lPmtlZXBhbGl2ZXM8L3Zhcm5hbWU+LAorICAgICAgIDx2YXJuYW1lPmtl ZXBhbGl2ZXNfaWRsZTwvdmFybmFtZT4sCisgICAgICAgPHZhcm5hbWU+a2VlcGFsaXZlc19pbnRl cnZhbDwvdmFybmFtZT4sCisgICAgICAgPHZhcm5hbWU+a2VlcGFsaXZlc19jb3VudDwvdmFybmFt ZT4sIGFuZAorICAgICAgIDx2YXJuYW1lPnRjcF91c2VyX3RpbWVvdXQ8L3Zhcm5hbWU+LgorICAg ICAgIFNvLCBmb3IgZXhhbXBsZQorICAgICAgIDx2YXJuYW1lPmNvbm5lY3RfdGltZW91dDwvdmFy bmFtZT4sCisgICAgICAgPHZhcm5hbWU+Z3NzZW5jbW9kZTwvdmFybmFtZT4sIGFuZAorICAgICAg IDx2YXJuYW1lPnNzbG1vZGU8L3Zhcm5hbWU+IGFyZSBpZ25vcmVkLiA8ZW1waGFzaXM+VGhpcyBt ZWFucyB0aGUgY29ubmVjdGlvbgorICAgICAgIGlzIG5ldmVyIGVuY3J5cHRlZCB1c2luZyBUTFMg b3IgR1NTPC9lbXBoYXNpcz4uCiAgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAg PC92YXJsaXN0ZW50cnk+CkBAIC01NzE2LDEzICs1OTQwLDIyIEBAIGludCBQUWNhbmNlbChQR2Nh bmNlbCAqY2FuY2VsLCBjaGFyICplcnJidWYsIGludCBlcnJidWZzaXplKTsKIAogICAgICA8bGlz dGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXJlcXVl c3RDYW5jZWwiLz4gaXMgYSBkZXByZWNhdGVkIHZhcmlhbnQgb2YKLSAgICAgICA8eHJlZiBsaW5r ZW5kPSJsaWJwcS1QUWNhbmNlbCIvPi4KKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXJl cXVlc3RDYW5jZWwiLz4gaXMgYSBkZXByZWNhdGVkIGFuZCBpbnNlY3VyZQorICAgICAgIHZhcmlh bnQgb2YgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWxTZW5kIi8+LgogPHN5bm9wc2lzPgog aW50IFBRcmVxdWVzdENhbmNlbChQR2Nvbm4gKmNvbm4pOwogPC9zeW5vcHNpcz4KICAgICAgIDwv cGFyYT4KIAorICAgICAgPHBhcmE+CisgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFyZXF1 ZXN0Q2FuY2VsIi8+IG9ubHkgZXhpc3RzIGJlY2F1c2Ugb2YgYmFja3dhcmRzCisgICAgICAgY29t cGF0aWJpbGl0eSByZWFzb25zLiA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbFNlbmQiLz4g c2hvdWxkIGJlCisgICAgICAgdXNlZCBpbnN0ZWFkLCB0byBhdm9pZCB0aGUgc2VjdXJpdHkgYW5k IHRocmVhZC1zYWZldHkgaXNzdWVzIHRoYXQgdGhpcworICAgICAgIGZ1bmN0aW9uIGhhcy4gVGhp cyBmdW5jdGlvbiBoYXMgdGhlIHNhbWUgc2VjdXJpdHkgaXNzdWVzIGFzCisgICAgICAgPHhyZWYg bGlua2VuZD0ibGlicHEtUFFjYW5jZWwiLz4sIGJ1dCB3aXRob3V0IHRoZSBiZW5lZml0IG9mIGJl aW5nCisgICAgICAgc2lnbmFsLXNhZmUuCisgICAgICA8L3BhcmE+CisKICAgICAgIDxwYXJhPgog ICAgICAgIFJlcXVlc3RzIHRoYXQgdGhlIHNlcnZlciBhYmFuZG9uIHByb2Nlc3Npbmcgb2YgdGhl IGN1cnJlbnQKICAgICAgICBjb21tYW5kLiAgSXQgb3BlcmF0ZXMgZGlyZWN0bHkgb24gdGhlCkBA IC04ODcxLDcgKzkxMDQsNyBAQCBpbnQgUFFpc3RocmVhZHNhZmUoKTsKICAgIFRoZSBkZXByZWNh dGVkIGZ1bmN0aW9ucyA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXJlcXVlc3RDYW5jZWwiLz4gYW5k CiAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUW9pZFN0YXR1cyIvPiBhcmUgbm90IHRocmVhZC1z YWZlIGFuZCBzaG91bGQgbm90IGJlCiAgICB1c2VkIGluIG11bHRpdGhyZWFkIHByb2dyYW1zLiAg PHhyZWYgbGlua2VuZD0ibGlicHEtUFFyZXF1ZXN0Q2FuY2VsIi8+Ci0gICBjYW4gYmUgcmVwbGFj ZWQgYnkgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWwiLz4uCisgICBjYW4gYmUgcmVwbGFj ZWQgYnkgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWxTZW5kIi8+LgogICAgPHhyZWYgbGlu a2VuZD0ibGlicHEtUFFvaWRTdGF0dXMiLz4gY2FuIGJlIHJlcGxhY2VkIGJ5CiAgICA8eHJlZiBs aW5rZW5kPSJsaWJwcS1QUW9pZFZhbHVlIi8+LgogICA8L3BhcmE+CmRpZmYgLS1naXQgYS9zcmMv ZmVfdXRpbHMvY29ubmVjdF91dGlscy5jIGIvc3JjL2ZlX3V0aWxzL2Nvbm5lY3RfdXRpbHMuYwpp bmRleCAxY2M5N2I3MmY3Li4wZjVlODRhZDcxIDEwMDY0NAotLS0gYS9zcmMvZmVfdXRpbHMvY29u bmVjdF91dGlscy5jCisrKyBiL3NyYy9mZV91dGlscy9jb25uZWN0X3V0aWxzLmMKQEAgLTE1Nywx OSArMTU3LDExIEBAIGNvbm5lY3RNYWludGVuYW5jZURhdGFiYXNlKENvbm5QYXJhbXMgKmNwYXJh bXMsCiB2b2lkCiBkaXNjb25uZWN0RGF0YWJhc2UoUEdjb25uICpjb25uKQogewotCWNoYXIJCWVy cmJ1ZlsyNTZdOwotCiAJQXNzZXJ0KGNvbm4gIT0gTlVMTCk7CiAKIAlpZiAoUFF0cmFuc2FjdGlv blN0YXR1cyhjb25uKSA9PSBQUVRSQU5TX0FDVElWRSkKIAl7Ci0JCVBHY2FuY2VsICAgKmNhbmNl bDsKLQotCQlpZiAoKGNhbmNlbCA9IFBRZ2V0Q2FuY2VsKGNvbm4pKSkKLQkJewotCQkJKHZvaWQp IFBRY2FuY2VsKGNhbmNlbCwgZXJyYnVmLCBzaXplb2YoZXJyYnVmKSk7Ci0JCQlQUWZyZWVDYW5j ZWwoY2FuY2VsKTsKLQkJfQorCQlQUWNhbmNlbEZpbmlzaChQUWNhbmNlbFNlbmQoY29ubikpOwog CX0KIAogCVBRZmluaXNoKGNvbm4pOwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEv ZXhwb3J0cy50eHQgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dAppbmRleCBlOGJj Yzg4MzcwLi5mNTZlOGMxODVjIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBv cnRzLnR4dAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dApAQCAtMTg2LDMg KzE4NiwxMSBAQCBQUXBpcGVsaW5lU3RhdHVzICAgICAgICAgIDE4MwogUFFzZXRUcmFjZUZsYWdz ICAgICAgICAgICAxODQKIFBRbWJsZW5Cb3VuZGVkICAgICAgICAgICAgMTg1CiBQUXNlbmRGbHVz aFJlcXVlc3QgICAgICAgIDE4NgorUFFjYW5jZWxTZW5kICAgICAgICAgICAgICAxODcKK1BRY2Fu Y2VsQ29ubiAgICAgICAgICAgICAgMTg4CitQUWNhbmNlbFBvbGwgICAgICAgICAgICAgIDE4OQor UFFjYW5jZWxTdGF0dXMgICAgICAgICAgICAxOTAKK1BRY2FuY2VsU29ja2V0ICAgICAgICAgICAg MTkxCitQUWNhbmNlbEVycm9yTWVzc2FnZSAgICAgIDE5MgorUFFjYW5jZWxSZXNldCAgICAgICAg ICAgICAxOTMKK1BRY2FuY2VsRmluaXNoICAgICAgICAgICAgMTk0CmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1j b25uZWN0LmMKaW5kZXggZDBjM2IyMWZiOS4uMzY0ZmQ0ZjAzMiAxMDA2NDQKLS0tIGEvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LWNvbm5lY3QuYwpAQCAtMzc2LDYgKzM3Niw3IEBAIHN0YXRpYyBQR1BpbmcgaW50ZXJuYWxfcGlu ZyhQR2Nvbm4gKmNvbm4pOwogc3RhdGljIFBHY29ubiAqbWFrZUVtcHR5UEdjb25uKHZvaWQpOwog c3RhdGljIHZvaWQgcHFGcmVlQ29tbWFuZFF1ZXVlKFBHY21kUXVldWVFbnRyeSAqcXVldWUpOwog c3RhdGljIGJvb2wgZmlsbFBHY29ubihQR2Nvbm4gKmNvbm4sIFBRY29ubmluZm9PcHRpb24gKmNv bm5PcHRpb25zKTsKK3N0YXRpYyBib29sIGNvcHlQR2Nvbm4oUEdjb25uICpzcmNDb25uLCBQR2Nv bm4gKmRzdENvbm4pOwogc3RhdGljIHZvaWQgZnJlZVBHY29ubihQR2Nvbm4gKmNvbm4pOwogc3Rh dGljIHZvaWQgY2xvc2VQR2Nvbm4oUEdjb25uICpjb25uKTsKIHN0YXRpYyB2b2lkIHJlbGVhc2Vf Y29ubl9hZGRyaW5mbyhQR2Nvbm4gKmNvbm4pOwpAQCAtNTk5LDggKzYwMCwxNyBAQCBwcURyb3BT ZXJ2ZXJEYXRhKFBHY29ubiAqY29ubikKIAljb25uLT53cml0ZV9mYWlsZWQgPSBmYWxzZTsKIAlm cmVlKGNvbm4tPndyaXRlX2Vycl9tc2cpOwogCWNvbm4tPndyaXRlX2Vycl9tc2cgPSBOVUxMOwot CWNvbm4tPmJlX3BpZCA9IDA7Ci0JY29ubi0+YmVfa2V5ID0gMDsKKworCS8qCisJICogQ2FuY2Vs IGNvbm5lY3Rpb25zIHNob3VsZCBzYXZlIHRoZWlyIGJlX3BpZCBhbmQgYmVfa2V5IGFjcm9zcwor CSAqIFBRcmVzZXRTdGFydCBpbnZvY2F0aW9ucy4gT3RoZXJ3aXNlIHRoZXkgZG9uJ3Qga25vdyB0 aGUgc2VjcmV0IHRva2VuIG9mCisJICogdGhlIGNvbm5lY3Rpb24gdGhleSBhcmUgc3VwcG9zZWQg dG8gY2FuY2VsIGFueW1vcmUuCisJICovCisJaWYgKCFjb25uLT5jYW5jZWxSZXF1ZXN0KQorCXsK KwkJY29ubi0+YmVfcGlkID0gMDsKKwkJY29ubi0+YmVfa2V5ID0gMDsKKwl9CiB9CiAKIApAQCAt NzMxLDYgKzc0MSw2OCBAQCBQUXBpbmcoY29uc3QgY2hhciAqY29ubmluZm8pCiAJcmV0dXJuIHJl dDsKIH0KIAorLyoKKyAqCQlQUWNhbmNlbENvbm4KKyAqCisgKiBBc3luY2hyb25vdXNseSBjYW5j ZWwgYSByZXF1ZXN0IG9uIHRoZSBnaXZlbiBjb25uZWN0aW9uLiBUaGlzIHJlcXVpcmVzCisgKiBw b2xsaW5nIHRoZSByZXR1cm5lZCBQR2Nvbm4gdG8gYWN0dWFsbHkgY29tcGxldGUgdGhlIGNhbmNl bGxhdGlvbiBvZiB0aGUKKyAqIHJlcXVlc3QuCisgKi8KK1BHY2FuY2VsQ29ubiAqCitQUWNhbmNl bENvbm4oUEdjb25uICpjb25uKQoreworCVBHY29ubgkgICAqY2FuY2VsQ29ubiA9IG1ha2VFbXB0 eVBHY29ubigpOworCisJaWYgKGNhbmNlbENvbm4gPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7CisK KwkvKiBDaGVjayB3ZSBoYXZlIGFuIG9wZW4gY29ubmVjdGlvbiAqLworCWlmICghY29ubikKKwl7 CisJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNhbmNlbENvbm4sICJwYXNzZWQgY29ubmVjdGlv biB3YXMgTlVMTCIpOworCQlyZXR1cm4gKFBHY2FuY2VsQ29ubiAqKSBjYW5jZWxDb25uOworCX0K KworCWlmIChjb25uLT5zb2NrID09IFBHSU5WQUxJRF9TT0NLRVQpCisJeworCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjYW5jZWxDb25uLCAicGFzc2VkIGNvbm5lY3Rpb24gaXMgbm90IG9wZW4i KTsKKwkJcmV0dXJuIChQR2NhbmNlbENvbm4gKikgY2FuY2VsQ29ubjsKKwl9CisKKwkvKgorCSAq IEluZGljYXRlIHRoYXQgdGhpcyBjb25uZWN0aW9uIGlzIHVzZWQgdG8gc2VuZCBhIGNhbmNlbGxh dGlvbgorCSAqLworCWNhbmNlbENvbm4tPmNhbmNlbFJlcXVlc3QgPSB0cnVlOworCisJaWYgKCFj b3B5UEdjb25uKGNvbm4sIGNhbmNlbENvbm4pKQorCQlyZXR1cm4gKFBHY2FuY2VsQ29ubiAqKSBj YW5jZWxDb25uOworCisJLyoKKwkgKiBDb21wdXRlIGRlcml2ZWQgb3B0aW9ucworCSAqLworCWlm ICghY29ubmVjdE9wdGlvbnMyKGNhbmNlbENvbm4pKQorCQlyZXR1cm4gKFBHY2FuY2VsQ29ubiAq KSBjYW5jZWxDb25uOworCisJLyoKKwkgKiBDb3B5IGNhbmNlbGF0aW9uIHRva2VuIGRhdGEgZnJv bSB0aGUgb3JpZ2luYWwgY29ubm5lY3Rpb24KKwkgKi8KKwljYW5jZWxDb25uLT5iZV9waWQgPSBj b25uLT5iZV9waWQ7CisJY2FuY2VsQ29ubi0+YmVfa2V5ID0gY29ubi0+YmVfa2V5OworCisJLyoK KwkgKiBDYW5jZWwgcmVxdWVzdHMgc2hvdWxkIG5vdCBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxl IGhvc3RzLiBUaGUgcmVxdWVzdAorCSAqIG5lZWRzIHRvIGJlIHNlbnQgdG8gdGhlIGV4YWN0IGhv c3QgYW5kIGFkZHJlc3MgdGhhdCB0aGUgb3JpZ2luYWwKKwkgKiBjb25uZWN0aW9uIHVzZWQuCisJ ICovCisJbWVtY3B5KCZjYW5jZWxDb25uLT5yYWRkciwgJmNvbm4tPnJhZGRyLCBzaXplb2YoU29j a0FkZHIpKTsKKwljYW5jZWxDb25uLT53aGljaGhvc3QgPSBjb25uLT53aGljaGhvc3Q7CisJY29u bi0+dHJ5X25leHRfaG9zdCA9IGZhbHNlOworCWNvbm4tPnRyeV9uZXh0X2FkZHIgPSBmYWxzZTsK KworCWNhbmNlbENvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fU1RBUlRJTkc7CisJcmV0dXJuIChQ R2NhbmNlbENvbm4gKikgY2FuY2VsQ29ubjsKK30KKwogLyoKICAqCQlQUWNvbm5lY3RTdGFydFBh cmFtcwogICoKQEAgLTkwNiw2ICs5NzgsNDUgQEAgZmlsbFBHY29ubihQR2Nvbm4gKmNvbm4sIFBR Y29ubmluZm9PcHRpb24gKmNvbm5PcHRpb25zKQogCXJldHVybiB0cnVlOwogfQogCisvKgorICog Q29weSBvdmVyIG9wdGlvbiB2YWx1ZXMgZnJvbSBzcmNDb25uIHRvIGRzdENvbm4KKyAqCisgKiBE b24ndCBwdXQgYW55dGhpbmcgY3V0ZSBoZXJlIC0tLSBpbnRlbGxpZ2VuY2Ugc2hvdWxkIGJlIGlu CisgKiBjb25uZWN0T3B0aW9uczIgLi4uCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3Mu IE9uIGZhaWx1cmUsIHJldHVybnMgZmFsc2UgYW5kIHNldHMgZXJyb3IgbWVzc2FnZSBvZgorICog ZHN0Q29ubi4KKyAqLworc3RhdGljIGJvb2wKK2NvcHlQR2Nvbm4oUEdjb25uICpzcmNDb25uLCBQ R2Nvbm4gKmRzdENvbm4pCit7CisJY29uc3QgaW50ZXJuYWxQUWNvbm5pbmZvT3B0aW9uICpvcHRp b247CisKKwkvKiBjb3B5IG92ZXIgY29ubmVjdGlvbiBvcHRpb25zICovCisJZm9yIChvcHRpb24g PSBQUWNvbm5pbmZvT3B0aW9uczsgb3B0aW9uLT5rZXl3b3JkOyBvcHRpb24rKykKKwl7CisJCWlm IChvcHRpb24tPmNvbm5vZnMgPj0gMCkKKwkJeworCQkJY29uc3QgY2hhciAqKnRtcCA9IChjb25z dCBjaGFyICoqKSAoKGNoYXIgKikgc3JjQ29ubiArIG9wdGlvbi0+Y29ubm9mcyk7CisKKwkJCWlm ICgqdG1wKQorCQkJeworCQkJCWNoYXIJICAqKmRzdENvbm5tZW1iZXIgPSAoY2hhciAqKikgKChj aGFyICopIGRzdENvbm4gKyBvcHRpb24tPmNvbm5vZnMpOworCisJCQkJaWYgKCpkc3RDb25ubWVt YmVyKQorCQkJCQlmcmVlKCpkc3RDb25ubWVtYmVyKTsKKwkJCQkqZHN0Q29ubm1lbWJlciA9IHN0 cmR1cCgqdG1wKTsKKwkJCQlpZiAoKmRzdENvbm5tZW1iZXIgPT0gTlVMTCkKKwkJCQl7CisJCQkJ CWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGRzdENvbm4sICJvdXQgb2YgbWVtb3J5Iik7CisJCQkJ CXJldHVybiBmYWxzZTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJcmV0dXJuIHRydWU7Cit9CisK IC8qCiAgKgkJY29ubmVjdE9wdGlvbnMxCiAgKgpAQCAtMjAzMCwxMCArMjE0MSwxNyBAQCBjb25u ZWN0REJTdGFydChQR2Nvbm4gKmNvbm4pCiAJICogU2V0IHVwIHRvIHRyeSB0byBjb25uZWN0IHRv IHRoZSBmaXJzdCBob3N0LiAgKFNldHRpbmcgd2hpY2hob3N0ID0gLTEgaXMKIAkgKiBhIGJpdCBv ZiBhIGNoZWF0LCBidXQgUFFjb25uZWN0UG9sbCB3aWxsIGFkdmFuY2UgaXQgdG8gMCBiZWZvcmUK IAkgKiBhbnl0aGluZyBlbHNlIGxvb2tzIGF0IGl0LikKKwkgKgorCSAqIENhbmNlbCByZXF1ZXN0 cyBhcmUgc3BlY2lhbCB0aG91Z2gsIHRoZXkgc2hvdWxkIG9ubHkgdHJ5IG9uZSBob3N0LAorCSAq IHdoaWNoIGlzIGRldGVybWluZWQgaW4gUFFjYW5jZWxDb25uLiBTbyBsZWF2ZSB0aGVzZSBzZXR0 aW5ncyBhbG9uZSBmb3IKKwkgKiBjYW5jZWwgcmVxdWVzdHMuCiAJICovCi0JY29ubi0+d2hpY2ho b3N0ID0gLTE7Ci0JY29ubi0+dHJ5X25leHRfYWRkciA9IGZhbHNlOwotCWNvbm4tPnRyeV9uZXh0 X2hvc3QgPSB0cnVlOworCWlmICghY29ubi0+Y2FuY2VsUmVxdWVzdCkKKwl7CisJCWNvbm4tPndo aWNoaG9zdCA9IC0xOworCQljb25uLT50cnlfbmV4dF9ob3N0ID0gdHJ1ZTsKKwkJY29ubi0+dHJ5 X25leHRfYWRkciA9IGZhbHNlOworCX0KIAljb25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX05FRURF RDsKIAogCS8qIEFsc28gcmVzZXQgdGhlIHRhcmdldF9zZXJ2ZXJfdHlwZSBzdGF0ZSBpZiBuZWVk ZWQgKi8KQEAgLTIwODIsNiArMjIwMCwxNSBAQCBjb25uZWN0REJDb21wbGV0ZShQR2Nvbm4gKmNv bm4pCiAJaWYgKGNvbm4gPT0gTlVMTCB8fCBjb25uLT5zdGF0dXMgPT0gQ09OTkVDVElPTl9CQUQp CiAJCXJldHVybiAwOwogCisJaWYgKGNvbm4tPnN0YXR1cyA9PSBDT05ORUNUSU9OX1NUQVJUSU5H KQorCXsKKwkJaWYgKCFjb25uZWN0REJTdGFydChjb25uKSkKKwkJeworCQkJY29ubi0+c3RhdHVz ID0gQ09OTkVDVElPTl9CQUQ7CisJCQlyZXR1cm4gMDsKKwkJfQorCX0KKwogCS8qCiAJICogU2V0 IHVwIGEgdGltZSBsaW1pdCwgaWYgY29ubmVjdF90aW1lb3V0IGlzbid0IHplcm8uCiAJICovCkBA IC0yMjIyLDggKzIzNDksOCBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAlzd2l0Y2gg KGNvbm4tPnN0YXR1cykKIAl7CiAJCQkvKgotCQkJICogV2UgcmVhbGx5IHNob3VsZG4ndCBoYXZl IGJlZW4gcG9sbGVkIGluIHRoZXNlIHR3byBjYXNlcywgYnV0IHdlCi0JCQkgKiBjYW4gaGFuZGxl IGl0LgorCQkJICogV2UgcmVhbGx5IHNob3VsZG4ndCBoYXZlIGJlZW4gcG9sbGVkIGluIHRoZXNl IHRocmVlIGNhc2VzLCBidXQKKwkJCSAqIHdlIGNhbiBoYW5kbGUgaXQuCiAJCQkgKi8KIAkJY2Fz ZSBDT05ORUNUSU9OX0JBRDoKIAkJCXJldHVybiBQR1JFU19QT0xMSU5HX0ZBSUxFRDsKQEAgLTIy NDAsNiArMjM2NywzNCBAQCBQUWNvbm5lY3RQb2xsKFBHY29ubiAqY29ubikKIAkJCQkvKiBMb2Fk IHdhaXRpbmcgZGF0YSAqLwogCQkJCWludAkJCW4gPSBwcVJlYWREYXRhKGNvbm4pOwogCisjaWZu ZGVmIFdJTjMyCisJCQkJaWYgKG4gPT0gLTIgJiYgY29ubi0+Y2FuY2VsUmVxdWVzdCkKKyNlbHNl CisKKwkJCQkvKgorCQkJCSAqIFdpbmRvd3MgaXMgYSBiaXQgc3BlY2lhbCBpbiBpdHMgRU9GIGJl aGF2aW91ciBmb3IgVENQLgorCQkJCSAqIFNvbWV0aW1lcyBpdCB3aWxsIGVycm9yIHdpdGggYW4g RUNPTk5SRVNFVCB3aGVuIHRoZXJlIGlzIGEKKwkJCQkgKiBjbGVhbiBjb25uZWN0aW9uIGNsb3N1 cmUuIFNlZSB0aGVzZSB0aHJlYWRzIGZvciBkZXRhaWxzOgorCQkJCSAqIGh0dHBzOi8vd3d3LnBv c3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC85MGIzNDA1Ny00MTc2LTdiYjAtMGRiYi05ODIy YTVmNjQyNWIlNDBncmVpei1yZWluc2RvcmYuZGUKKwkJCQkgKgorCQkJCSAqIGh0dHBzOi8vd3d3 LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC9DQSUyQmhVS0clMkJPZW9FVFpRJTNEUXc1 VWI1aDN0bXdRaEJtREElM0RudU5PM0tHJTNEeldmVXlwRkF3JTQwbWFpbC5nbWFpbC5jb20KKwkJ CQkgKgorCQkJCSAqIFBRY2FuY2VsIGlnbm9yZXMgc3VjaCBlcnJvcnMgYW5kIHJlcG9ydHMgc3Vj Y2VzcyBmb3IgdGhlCisJCQkJICogY2FuY2VsbGF0aW9uIGFueXdheSwgc28gZXZlbiBpZiB0aGlz IGlzIG5vdCBhbHdheXMgY29ycmVjdAorCQkJCSAqIHdlIGRvIHRoZSBzYW1lIGhlcmUuCisJCQkJ ICovCisJCQkJaWYgKG4gPCAwICYmIGNvbm4tPmNhbmNlbFJlcXVlc3QpCisjZW5kaWYKKwkJCQl7 CisJCQkJCS8qCisJCQkJCSAqIFRoaXMgaXMgdGhlIGV4cGVjdGVkIGVuZCBzdGF0ZSBmb3IgY2Fu Y2VsIGNvbm5lY3Rpb25zLgorCQkJCQkgKiBUaGV5IGFyZSBjbG9zZWQgb25jZSB0aGUgY2FuY2Vs IGlzIHByb2Nlc3NlZCBieSB0aGUKKwkJCQkJICogc2VydmVyLgorCQkJCQkgKi8KKwkJCQkJY29u bi0+c3RhdHVzID0gQ09OTkVDVElPTl9PSzsKKwkJCQkJcmVzZXRQUUV4cEJ1ZmZlcigmY29ubi0+ ZXJyb3JNZXNzYWdlKTsKKwkJCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfT0s7CisJCQkJfQogCQkJ CWlmIChuIDwgMCkKIAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJaWYgKG4gPT0gMCkKQEAg LTIyNDksNiArMjQwNCw3IEBAIFBRY29ubmVjdFBvbGwoUEdjb25uICpjb25uKQogCQkJfQogCiAJ CQkvKiBUaGVzZSBhcmUgd3JpdGluZyBzdGF0ZXMsIHNvIHdlIGp1c3QgcHJvY2VlZC4gKi8KKwkJ Y2FzZSBDT05ORUNUSU9OX1NUQVJUSU5HOgogCQljYXNlIENPTk5FQ1RJT05fU1RBUlRFRDoKIAkJ Y2FzZSBDT05ORUNUSU9OX01BREU6CiAJCQlicmVhazsKQEAgLTIyNzIsNiArMjQyOCwxNCBAQCBr ZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUg aXMKIAkvKiBUaW1lIHRvIGFkdmFuY2UgdG8gbmV4dCBhZGRyZXNzLCBvciBuZXh0IGhvc3QgaWYg bm8gbW9yZSBhZGRyZXNzZXM/ICovCiAJaWYgKGNvbm4tPnRyeV9uZXh0X2FkZHIpCiAJeworCQkv KgorCQkgKiBDYW5jZWwgcmVxdWVzdHMgbmV2ZXIgaGF2ZSBtb3JlIGFkZHJlc3NlcyB0byB0cnku IFRoZXkgc2hvdWxkIG9ubHkKKwkJICogdHJ5IGEgc2luZ2xlIG9uZS4KKwkJICovCisJCWlmIChj b25uLT5jYW5jZWxSZXF1ZXN0KQorCQl7CisJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJfQogCQlp ZiAoY29ubi0+YWRkcl9jdXIgJiYgY29ubi0+YWRkcl9jdXItPmFpX25leHQpCiAJCXsKIAkJCWNv bm4tPmFkZHJfY3VyID0gY29ubi0+YWRkcl9jdXItPmFpX25leHQ7CkBAIC0yMjkxLDYgKzI0NTUs MTUgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGls IHRoZXJlIGlzCiAJCWludAkJCXJldDsKIAkJY2hhcgkJcG9ydHN0cltNQVhQR1BBVEhdOwogCisJ CS8qCisJCSAqIENhbmNlbCByZXF1ZXN0cyBuZXZlciBoYXZlIG1vcmUgaG9zdHMgdG8gdHJ5LiBU aGV5IHNob3VsZCBvbmx5IHRyeQorCQkgKiBhIHNpbmdsZSBvbmUuCisJCSAqLworCQlpZiAoY29u bi0+Y2FuY2VsUmVxdWVzdCkKKwkJeworCQkJZ290byBlcnJvcl9yZXR1cm47CisJCX0KKwogCQlp ZiAoY29ubi0+d2hpY2hob3N0ICsgMSA8IGNvbm4tPm5jb25uaG9zdCkKIAkJCWNvbm4tPndoaWNo aG9zdCsrOwogCQllbHNlCkBAIC0yNDY2LDE5ICsyNjM5LDI3IEBAIGtlZXBfZ29pbmc6CQkJCQkJ LyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQljaGFyCQlo b3N0X2FkZHJbTklfTUFYSE9TVF07CiAKIAkJCQkJLyoKLQkJCQkJICogQWR2YW5jZSB0byBuZXh0 IHBvc3NpYmxlIGhvc3QsIGlmIHdlJ3ZlIHRyaWVkIGFsbCBvZgotCQkJCQkgKiB0aGUgYWRkcmVz c2VzIGZvciB0aGUgY3VycmVudCBob3N0LgorCQkJCQkgKiBDYW5jZWwgcmVxdWVzdHMgZG9uJ3Qg dXNlIGFkZHJfY3VyIGF0IGFsbC4gVGhleSBoYXZlCisJCQkJCSAqIHRoZWlyIHJhZGRyIGZpZWxk IGFscmVhZHkgZmlsbGVkIGluIGR1cmluZworCQkJCQkgKiBpbml0aWFsaXphdGlvbiBpbiBQUWNh bmNlbENvbm4uCiAJCQkJCSAqLwotCQkJCQlpZiAoYWRkcl9jdXIgPT0gTlVMTCkKKwkJCQkJaWYg KCFjb25uLT5jYW5jZWxSZXF1ZXN0KQogCQkJCQl7Ci0JCQkJCQljb25uLT50cnlfbmV4dF9ob3N0 ID0gdHJ1ZTsKLQkJCQkJCWdvdG8ga2VlcF9nb2luZzsKLQkJCQkJfQorCQkJCQkJLyoKKwkJCQkJ CSAqIEFkdmFuY2UgdG8gbmV4dCBwb3NzaWJsZSBob3N0LCBpZiB3ZSd2ZSB0cmllZCBhbGwKKwkJ CQkJCSAqIG9mIHRoZSBhZGRyZXNzZXMgZm9yIHRoZSBjdXJyZW50IGhvc3QuCisJCQkJCQkgKi8K KwkJCQkJCWlmIChhZGRyX2N1ciA9PSBOVUxMKQorCQkJCQkJeworCQkJCQkJCWNvbm4tPnRyeV9u ZXh0X2hvc3QgPSB0cnVlOworCQkJCQkJCWdvdG8ga2VlcF9nb2luZzsKKwkJCQkJCX0KIAotCQkJ CQkvKiBSZW1lbWJlciBjdXJyZW50IGFkZHJlc3MgZm9yIHBvc3NpYmxlIHVzZSBsYXRlciAqLwot CQkJCQltZW1jcHkoJmNvbm4tPnJhZGRyLmFkZHIsIGFkZHJfY3VyLT5haV9hZGRyLAotCQkJCQkJ ICAgYWRkcl9jdXItPmFpX2FkZHJsZW4pOwotCQkJCQljb25uLT5yYWRkci5zYWxlbiA9IGFkZHJf Y3VyLT5haV9hZGRybGVuOworCQkJCQkJLyogUmVtZW1iZXIgY3VycmVudCBhZGRyZXNzIGZvciBw b3NzaWJsZSB1c2UgbGF0ZXIgKi8KKwkJCQkJCW1lbWNweSgmY29ubi0+cmFkZHIuYWRkciwgYWRk cl9jdXItPmFpX2FkZHIsCisJCQkJCQkJICAgYWRkcl9jdXItPmFpX2FkZHJsZW4pOworCQkJCQkJ Y29ubi0+cmFkZHIuc2FsZW4gPSBhZGRyX2N1ci0+YWlfYWRkcmxlbjsKKwkJCQkJfQogCiAJCQkJ CS8qCiAJCQkJCSAqIFNldCBjb25uaXAsIHRvby4gIE5vdGUgd2UgcHVycG9zZWx5IGlnbm9yZSBz dHJkdXAKQEAgLTI0OTQsNyArMjY3NSw3IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBj b21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQkJY29ubi0+Y29ubmlwID0gc3Ry ZHVwKGhvc3RfYWRkcik7CiAKIAkJCQkJLyogVHJ5IHRvIGNyZWF0ZSB0aGUgc29ja2V0ICovCi0J CQkJCWNvbm4tPnNvY2sgPSBzb2NrZXQoYWRkcl9jdXItPmFpX2ZhbWlseSwgU09DS19TVFJFQU0s IDApOworCQkJCQljb25uLT5zb2NrID0gc29ja2V0KGNvbm4tPnJhZGRyLmFkZHIuc3NfZmFtaWx5 LCBTT0NLX1NUUkVBTSwgMCk7CiAJCQkJCWlmIChjb25uLT5zb2NrID09IFBHSU5WQUxJRF9TT0NL RVQpCiAJCQkJCXsKIAkJCQkJCWludAkJCWVycm9ybm8gPSBTT0NLX0VSUk5POwpAQCAtMjUwNCwx MiArMjY4NSwxOCBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhl cmUgdW50aWwgdGhlcmUgaXMKIAkJCQkJCSAqIGFkZHJlc3NlcyB0byB0cnk7IHRoaXMgcmVkdWNl cyB1c2VsZXNzIGNoYXR0ZXIgaW4KIAkJCQkJCSAqIGNhc2VzIHdoZXJlIHRoZSBhZGRyZXNzIGxp c3QgaW5jbHVkZXMgYm90aCBJUHY0IGFuZAogCQkJCQkJICogSVB2NiBidXQga2VybmVsIG9ubHkg YWNjZXB0cyBvbmUgZmFtaWx5LgorCQkJCQkJICoKKwkJCQkJCSAqIENhbmNlbCByZXF1ZXN0cyBu ZXZlciBoYXZlIG1vcmUgYWRkcmVzc2VzIHRvIHRyeS4KKwkJCQkJCSAqIFRoZXkgc2hvdWxkIG9u bHkgdHJ5IGEgc2luZ2xlIG9uZS4KIAkJCQkJCSAqLwotCQkJCQkJaWYgKGFkZHJfY3VyLT5haV9u ZXh0ICE9IE5VTEwgfHwKLQkJCQkJCQljb25uLT53aGljaGhvc3QgKyAxIDwgY29ubi0+bmNvbm5o b3N0KQorCQkJCQkJaWYgKCFjb25uLT5jYW5jZWxSZXF1ZXN0KQogCQkJCQkJewotCQkJCQkJCWNv bm4tPnRyeV9uZXh0X2FkZHIgPSB0cnVlOwotCQkJCQkJCWdvdG8ga2VlcF9nb2luZzsKKwkJCQkJ CQlpZiAoYWRkcl9jdXItPmFpX25leHQgIT0gTlVMTCB8fAorCQkJCQkJCQljb25uLT53aGljaGhv c3QgKyAxIDwgY29ubi0+bmNvbm5ob3N0KQorCQkJCQkJCXsKKwkJCQkJCQkJY29ubi0+dHJ5X25l eHRfYWRkciA9IHRydWU7CisJCQkJCQkJCWdvdG8ga2VlcF9nb2luZzsKKwkJCQkJCQl9CiAJCQkJ CQl9CiAJCQkJCQllbWl0SG9zdElkZW50aXR5SW5mbyhjb25uLCBob3N0X2FkZHIpOwogCQkJCQkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBjcmVhdGUgc29ja2V0OiAl cyIsCkBAIC0yNTMxLDcgKzI3MTgsNyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29t ZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQkJICogVENQIHNvY2tldHMsIG5vbmJs b2NrIG1vZGUsIGNsb3NlLW9uLWV4ZWMuICBUcnkgdGhlCiAJCQkJCSAqIG5leHQgYWRkcmVzcyBp ZiBhbnkgb2YgdGhpcyBmYWlscy4KIAkJCQkJICovCi0JCQkJCWlmIChhZGRyX2N1ci0+YWlfZmFt aWx5ICE9IEFGX1VOSVgpCisJCQkJCWlmIChjb25uLT5yYWRkci5hZGRyLnNzX2ZhbWlseSAhPSBB Rl9VTklYKQogCQkJCQl7CiAJCQkJCQlpZiAoIWNvbm5lY3ROb0RlbGF5KGNvbm4pKQogCQkJCQkJ ewpAQCAtMjU1OCw3ICsyNzQ1LDcgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3aWxsIGNvbWUg YmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJCX0KICNlbmRpZgkJCQkJCQkvKiBGX1NF VEZEICovCiAKLQkJCQkJaWYgKGFkZHJfY3VyLT5haV9mYW1pbHkgIT0gQUZfVU5JWCkKKwkJCQkJ aWYgKGNvbm4tPnJhZGRyLmFkZHIuc3NfZmFtaWx5ICE9IEFGX1VOSVgpCiAJCQkJCXsKICNpZm5k ZWYgV0lOMzIKIAkJCQkJCWludAkJCW9uID0gMTsKQEAgLTI2NTAsOCArMjgzNyw5IEBAIGtlZXBf Z29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwog CQkJCQkgKiBTdGFydC9tYWtlIGNvbm5lY3Rpb24uICBUaGlzIHNob3VsZCBub3QgYmxvY2ssIHNp bmNlIHdlCiAJCQkJCSAqIGFyZSBpbiBub25ibG9jayBtb2RlLiAgSWYgaXQgZG9lcywgd2VsbCwg dG9vIGJhZC4KIAkJCQkJICovCi0JCQkJCWlmIChjb25uZWN0KGNvbm4tPnNvY2ssIGFkZHJfY3Vy LT5haV9hZGRyLAotCQkJCQkJCQlhZGRyX2N1ci0+YWlfYWRkcmxlbikgPCAwKQorCQkJCQlpZiAo Y29ubmVjdChjb25uLT5zb2NrLAorCQkJCQkJCQkoc3RydWN0IHNvY2thZGRyICopICZjb25uLT5y YWRkci5hZGRyLAorCQkJCQkJCQljb25uLT5yYWRkci5zYWxlbikgPCAwKQogCQkJCQl7CiAJCQkJ CQlpZiAoU09DS19FUlJOTyA9PSBFSU5QUk9HUkVTUyB8fAogI2lmZGVmIFdJTjMyCkBAIC0yNjkw LDYgKzI4NzgsMTYgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0byBo ZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJfQogCQkJfQogCisJCWNhc2UgQ09OTkVDVElPTl9TVEFS VElORzoKKwkJCXsKKwkJCQlpZiAoIWNvbm5lY3REQlN0YXJ0KGNvbm4pKQorCQkJCXsKKwkJCQkJ Z290byBlcnJvcl9yZXR1cm47CisJCQkJfQorCQkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05f U1RBUlRFRDsKKwkJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19XUklUSU5HOworCQkJfQorCiAJCWNh c2UgQ09OTkVDVElPTl9TVEFSVEVEOgogCQkJewogCQkJCXNvY2tsZW5fdAlvcHRsZW4gPSBzaXpl b2Yob3B0dmFsKTsKQEAgLTI4OTEsNiArMzA4OSwyOSBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdl IHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQl9CiAjZW5kaWYJCQkJ CQkJLyogVVNFX1NTTCAqLwogCisJCQkJLyoKKwkJCQkgKiBGb3IgY2FuY2VsIHJlcXVlc3RzIHRo aXMgaXMgYXMgZmFyIGFzIHdlIG5lZWQgdG8gZ28gaW4gdGhlCisJCQkJICogY29ubmVjdGlvbiBl c3RhYmxpc2htZW50LiBOb3cgd2UgY2FuIGFjdHVhbGx5IHNlbmQgb3VyCisJCQkJICogY2FuY2Vs YXRpb24gcmVxdWVzdC4KKwkJCQkgKi8KKwkJCQlpZiAoY29ubi0+Y2FuY2VsUmVxdWVzdCkKKwkJ CQl7CisJCQkJCUNhbmNlbFJlcXVlc3RQYWNrZXQgY2FuY2VscGFja2V0OworCisJCQkJCXBhY2tl dGxlbiA9IHNpemVvZihjYW5jZWxwYWNrZXQpOworCQkJCQljYW5jZWxwYWNrZXQuY2FuY2VsUmVx dWVzdENvZGUgPSAoTXNnVHlwZSkgcGdfaHRvbjMyKENBTkNFTF9SRVFVRVNUX0NPREUpOworCQkJ CQljYW5jZWxwYWNrZXQuYmFja2VuZFBJRCA9IHBnX2h0b24zMihjb25uLT5iZV9waWQpOworCQkJ CQljYW5jZWxwYWNrZXQuY2FuY2VsQXV0aENvZGUgPSBwZ19odG9uMzIoY29ubi0+YmVfa2V5KTsK KwkJCQkJaWYgKHBxUGFja2V0U2VuZChjb25uLCAwLCAmY2FuY2VscGFja2V0LCBwYWNrZXRsZW4p ICE9IFNUQVRVU19PSykKKwkJCQkJeworCQkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29u biwgImNvdWxkIG5vdCBzZW5kIGNhbmNlbCBwYWNrZXQ6ICVzIiwKKwkJCQkJCQkJCQkJCVNPQ0tf U1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCWdvdG8g ZXJyb3JfcmV0dXJuOworCQkJCQl9CisJCQkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fQVdB SVRJTkdfUkVTUE9OU0U7CisJCQkJCXJldHVybiBQR1JFU19QT0xMSU5HX1JFQURJTkc7CisJCQkJ fQorCiAJCQkJLyoKIAkJCQkgKiBCdWlsZCB0aGUgc3RhcnR1cCBwYWNrZXQuCiAJCQkJICovCkBA IC00MDYzLDYgKzQyODQsMTUgQEAgcmVsZWFzZV9jb25uX2FkZHJpbmZvKFBHY29ubiAqY29ubikK IHN0YXRpYyB2b2lkCiBzZW5kVGVybWluYXRlQ29ubihQR2Nvbm4gKmNvbm4pCiB7CisJLyoKKwkg KiBUaGUgUG9zdGdyZXMgY2FuY2VsbGF0aW9uIHByb3RvY29sIGRvZXMgbm90IGhhdmUgYSBub3Rp b24gb2YgYQorCSAqIFRlcm1pbmF0ZSBtZXNzYWdlLCBzbyBkb24ndCBzZW5kIG9uZS4KKwkgKi8K KwlpZiAoY29ubi0+Y2FuY2VsUmVxdWVzdCkKKwl7CisJCXJldHVybjsKKwl9CisKIAkvKgogCSAq IE5vdGUgdGhhdCB0aGUgcHJvdG9jb2wgZG9lc24ndCBhbGxvdyB1cyB0byBzZW5kIFRlcm1pbmF0 ZSBtZXNzYWdlcwogCSAqIGR1cmluZyB0aGUgc3RhcnR1cCBwaGFzZS4KQEAgLTQ1MzEsNiArNDc2 MSw5NiBAQCBjYW5jZWxfZXJyUmV0dXJuOgogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIFBR cmVxdWVzdENhbmNlbDogb2xkLCBub3QgdGhyZWFkLXNhZmUgZnVuY3Rpb24gZm9yIHJlcXVlc3Rp bmcgcXVlcnkgY2FuY2VsCisgKgorICogUmV0dXJucyB0cnVlIGlmIGFibGUgdG8gc2VuZCB0aGUg Y2FuY2VsIHJlcXVlc3QsIGZhbHNlIGlmIG5vdC4KKyAqCisgKiBPbiBmYWlsdXJlLCB0aGUgZXJy b3IgbWVzc2FnZSBpcyBzYXZlZCBpbiBjb25uLT5lcnJvck1lc3NhZ2U7IHRoaXMgbWVhbnMKKyAq IHRoYXQgdGhpcyBjYW4ndCBiZSB1c2VkIHdoZW4gdGhlcmUgbWlnaHQgYmUgb3RoZXIgYWN0aXZl IG9wZXJhdGlvbnMgb24KKyAqIHRoZSBjb25uZWN0aW9uIG9iamVjdC4KKyAqCisgKiBOT1RFOiBl cnJvciBtZXNzYWdlcyB3aWxsIGJlIGN1dCBvZmYgYXQgdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUK KyAqIGVycm9yIG1lc3NhZ2UgYnVmZmVyLCBzaW5jZSB3ZSBkYXJlIG5vdCB0cnkgdG8gZXhwYW5k IGNvbm4tPmVycm9yTWVzc2FnZSEKKyAqLworUEdjYW5jZWxDb25uICoKK1BRY2FuY2VsU2VuZChQ R2Nvbm4gKmNvbm4pCit7CisJUEdjYW5jZWxDb25uICpjYW5jZWxDb25uID0gUFFjYW5jZWxDb25u KGNvbm4pOworCisJaWYgKGNhbmNlbENvbm4gJiYgY2FuY2VsQ29ubi0+Y29ubi5zdGF0dXMgIT0g Q09OTkVDVElPTl9CQUQpCisJCSh2b2lkKSBjb25uZWN0REJDb21wbGV0ZSgmY2FuY2VsQ29ubi0+ Y29ubik7CisKKwlyZXR1cm4gY2FuY2VsQ29ubjsKK30KKworLyoKKyAqCQlQUWNhbmNlbFBvbGwK KyAqCisgKiBQb2xsIGEgY2FuY2VsIGNvbm5lY3Rpb24uIEZvciB1c2FnZSBkZXRhaWxzIHNlZSBQ UWNvbm5lY3RQb2xsLgorICovCitQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlCitQUWNhbmNlbFBv bGwoUEdjYW5jZWxDb25uICogY2FuY2VsQ29ubikKK3sKKwlyZXR1cm4gUFFjb25uZWN0UG9sbCgo UEdjb25uICopIGNhbmNlbENvbm4pOworfQorCisvKgorICoJCVBRY2FuY2VsU3RhdHVzCisgKgor ICogR2V0IHRoZSBzdGF0dXMgb2YgYSBjYW5jZWwgY29ubmVjdGlvbi4KKyAqLworQ29ublN0YXR1 c1R5cGUKK1BRY2FuY2VsU3RhdHVzKGNvbnN0IFBHY2FuY2VsQ29ubiAqIGNhbmNlbENvbm4pCit7 CisJcmV0dXJuIFBRc3RhdHVzKChjb25zdCBQR2Nvbm4gKikgY2FuY2VsQ29ubik7Cit9CisKKy8q CisgKgkJUFFjYW5jZWxTb2NrZXQKKyAqCisgKiBHZXQgdGhlIHNvY2tldCBvZiB0aGUgY2FuY2Vs IGNvbm5lY3Rpb24uCisgKi8KK2ludAorUFFjYW5jZWxTb2NrZXQoY29uc3QgUEdjYW5jZWxDb25u ICogY2FuY2VsQ29ubikKK3sKKwlyZXR1cm4gUFFzb2NrZXQoKGNvbnN0IFBHY29ubiAqKSBjYW5j ZWxDb25uKTsKK30KKworLyoKKyAqCQlQUWNhbmNlbEVycm9yTWVzc2FnZQorICoKKyAqIEdldCB0 aGUgc29ja2V0IG9mIHRoZSBjYW5jZWwgY29ubmVjdGlvbi4KKyAqLworY2hhciAqCitQUWNhbmNl bEVycm9yTWVzc2FnZShjb25zdCBQR2NhbmNlbENvbm4gKiBjYW5jZWxDb25uKQoreworCXJldHVy biBQUWVycm9yTWVzc2FnZSgoY29uc3QgUEdjb25uICopIGNhbmNlbENvbm4pOworfQorCisvKgor ICoJCVBRY2FuY2VsUmVzZXQKKyAqCisgKiBSZXNldHMgdGhlIGNhbmNlbCBjb25uZWN0aW9uLCBz byBpdCBjYW4gYmUgcmV1c2VkIHRvIHNlbmQgYSBuZXcgY2FuY2VsCisgKiByZXF1ZXN0LgorICov Cit2b2lkCitQUWNhbmNlbFJlc2V0KFBHY2FuY2VsQ29ubiAqIGNhbmNlbENvbm4pCit7CisJY2xv c2VQR2Nvbm4oKFBHY29ubiAqKSBjYW5jZWxDb25uKTsKKwljYW5jZWxDb25uLT5jb25uLnN0YXR1 cyA9IENPTk5FQ1RJT05fU1RBUlRJTkc7Cit9CisKKy8qCisgKgkJUFFjYW5jZWxGaW5pc2gKKyAq CisgKiBDbG9zZXMgYW5kIGZyZWVzIHRoZSBjYW5jZWwgY29ubmVjdGlvbi4KKyAqLwordm9pZAor UFFjYW5jZWxGaW5pc2goUEdjYW5jZWxDb25uICogY2FuY2VsQ29ubikKK3sKKwlQUWZpbmlzaCgo UEdjb25uICopIGNhbmNlbENvbm4pOworfQogCiAvKgogICogUFFyZXF1ZXN0Q2FuY2VsOiBvbGQs IG5vdCB0aHJlYWQtc2FmZSBmdW5jdGlvbiBmb3IgcmVxdWVzdGluZyBxdWVyeSBjYW5jZWwKQEAg LTQ1ODksNiArNDkwOSw3IEBAIFBRcmVxdWVzdENhbmNlbChQR2Nvbm4gKmNvbm4pCiB9CiAKIAor CiAvKgogICogcHFQYWNrZXRTZW5kKCkgLS0gY29udmVuaWVuY2Ugcm91dGluZSB0byBzZW5kIGEg bWVzc2FnZSB0byBzZXJ2ZXIuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtbWlzYy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlzYy5jCmluZGV4IGZhZGM0Njgx N2IuLjQwYTdiOWFiNzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLW1pc2Mu YworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1taXNjLmMKQEAgLTU1Niw4ICs1NTYsMTEg QEAgcHFQdXRNc2dFbmQoUEdjb25uICpjb25uKQogICogUG9zc2libGUgcmV0dXJuIHZhbHVlczoK ICAqCSAxOiBzdWNjZXNzZnVsbHkgbG9hZGVkIGF0IGxlYXN0IG9uZSBtb3JlIGJ5dGUKICAqCSAw OiBubyBkYXRhIGlzIHByZXNlbnRseSBhdmFpbGFibGUsIGJ1dCBubyBlcnJvciBkZXRlY3RlZAot ICoJLTE6IGVycm9yIGRldGVjdGVkIChpbmNsdWRpbmcgRU9GID0gY29ubmVjdGlvbiBjbG9zdXJl KTsKKyAqCS0xOiBlcnJvciBkZXRlY3RlZCAoZXhjbHVkaW5nIEVPRiA9IGNvbm5lY3Rpb24gY2xv c3VyZSk7CiAgKgkJY29ubi0+ZXJyb3JNZXNzYWdlIHNldAorICoJLTI6IEVPRiBkZXRlY3RlZCwg Y29ubmVjdGlvbiBpcyBjbG9zZWQKKyAqCQljb25uLT5lcnJvck1lc3NhZ2Ugc2V0CisgKgogICog Tk9URTogY2FsbGVycyBtdXN0IG5vdCBhc3N1bWUgdGhhdCBwb2ludGVycyBvciBpbmRleGVzIGlu dG8gY29ubi0+aW5CdWZmZXIKICAqIHJlbWFpbiB2YWxpZCBhY3Jvc3MgdGhpcyBjYWxsIQogICog LS0tLS0tLS0tLQpAQCAtNjM5LDcgKzY0Miw3IEBAIHJldHJ5MzoKIAogCQkJZGVmYXVsdDoKIAkJ CQkvKiBwcXNlY3VyZV9yZWFkIHNldCB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgdXMgKi8KLQkJCQly ZXR1cm4gLTE7CisJCQkJcmV0dXJuIG5yZWFkOwogCQl9CiAJfQogCWlmIChucmVhZCA+IDApCkBA IC03MzQsNyArNzM3LDcgQEAgcmV0cnk0OgogCiAJCQlkZWZhdWx0OgogCQkJCS8qIHBxc2VjdXJl X3JlYWQgc2V0IHRoZSBlcnJvciBtZXNzYWdlIGZvciB1cyAqLwotCQkJCXJldHVybiAtMTsKKwkJ CQlyZXR1cm4gbnJlYWQ7CiAJCX0KIAl9CiAJaWYgKG5yZWFkID4gMCkKQEAgLTc1MSwxMyArNzU0 LDE3IEBAIGRlZmluaXRlbHlFT0Y6CiAJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInNl cnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3RlZGx5XG4iCiAJCQkJCQkJIlx0VGhp cyBwcm9iYWJseSBtZWFucyB0aGUgc2VydmVyIHRlcm1pbmF0ZWQgYWJub3JtYWxseVxuIgogCQkJ CQkJCSJcdGJlZm9yZSBvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0LiIpOworCS8qIERv ICpub3QqIGRyb3AgYW55IGFscmVhZHktcmVhZCBkYXRhOyBjYWxsZXIgc3RpbGwgd2FudHMgaXQg Ki8KKwlwcURyb3BDb25uZWN0aW9uKGNvbm4sIGZhbHNlKTsKKwljb25uLT5zdGF0dXMgPSBDT05O RUNUSU9OX0JBRDsJLyogTm8gbW9yZSBjb25uZWN0aW9uIHRvIGJhY2tlbmQgKi8KKwlyZXR1cm4g LTI7CiAKIAkvKiBDb21lIGhlcmUgaWYgbG93ZXItbGV2ZWwgY29kZSBhbHJlYWR5IHNldCBhIHN1 aXRhYmxlIGVycm9yTWVzc2FnZSAqLwogZGVmaW5pdGVseUZhaWxlZDoKIAkvKiBEbyAqbm90KiBk cm9wIGFueSBhbHJlYWR5LXJlYWQgZGF0YTsgY2FsbGVyIHN0aWxsIHdhbnRzIGl0ICovCiAJcHFE cm9wQ29ubmVjdGlvbihjb25uLCBmYWxzZSk7CiAJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9C QUQ7CS8qIE5vIG1vcmUgY29ubmVjdGlvbiB0byBiYWNrZW5kICovCi0JcmV0dXJuIC0xOworCXJl dHVybiBucmVhZCA8IDAgPyBucmVhZCA6IC0xOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW9wZW5zc2wuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLXNlY3VyZS1vcGVuc3NsLmMKaW5kZXggNGViMjEyZDE1Yy4uMWI4Mzk0NmFlZSAxMDA2NDQK LS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW9wZW5zc2wuYworKysgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtb3BlbnNzbC5jCkBAIC0yNDgsNyArMjQ4LDcgQEAg cmxvb3A6CiAJCQkgKi8KIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJTU0wgY29u bmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQgdW5leHBlY3RlZGx5Iik7CiAJCQlyZXN1bHRfZXJybm8g PSBFQ09OTlJFU0VUOwotCQkJbiA9IC0xOworCQkJbiA9IC0yOwogCQkJYnJlYWs7CiAJCWRlZmF1 bHQ6CiAJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAidW5yZWNvZ25pemVkIFNTTCBl cnJvciBjb2RlOiAlZCIsIGVycik7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1zZWN1cmUuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS5jCmluZGV4IDIxNWM5 YTc0ZWQuLjJjYmZhNTAxZTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNl Y3VyZS5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS5jCkBAIC0xOTksNiAr MTk5LDEyIEBAIHBxc2VjdXJlX2Nsb3NlKFBHY29ubiAqY29ubikKICAqIE9uIGZhaWx1cmUsIHRo aXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIGFwcGVuZGluZyBhIHN1aXRhYmxlIG1lc3Nh Z2UKICAqIHRvIGNvbm4tPmVycm9yTWVzc2FnZS4gIFRoZSBjYWxsZXIgbXVzdCBzdGlsbCBpbnNw ZWN0IGVycm5vLCBidXQgb25seQogICogdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gY29udGludWUv cmV0cnkgYWZ0ZXIgZXJyb3IuCisgKgorICogUmV0dXJucyAtMSBpbiBjYXNlIG9mIGZhaWx1cmVz LCBleGNlcHQgaW4gdGhlIGNhc2Ugb2Ygd2hlcmUgYSBmYWlsdXJlIG1lYW5zCisgKiB0aGF0IHRo ZXJlIHdhcyBhIGNsZWFuIGNvbm5lY3Rpb24gY2xvc3VyZSwgaW4gdGhvc2UgY2FzZXMgLTIgaXMg cmV0dXJuZWQuCisgKiBDdXJyZW50bHkgb25seSB0aGUgVExTIGltcGxlbWVudGF0aW9uIG9mIHBx c2VjdXJlX3JlYWQgZXZlciByZXR1cm5zIC0yLiBGb3IKKyAqIHRoZSBvdGhlciBpbXBsZW1lbnRh dGlvbnMgYSBjbGVhbiBjb25uZWN0aW9uIGNsb3N1cmUgaXMgZGV0ZWN0ZWQgaW4KKyAqIHBxUmVh ZERhdGEgaW5zdGVhZC4KICAqLwogc3NpemVfdAogcHFzZWN1cmVfcmVhZChQR2Nvbm4gKmNvbm4s IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2xpYnBxLWZlLmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCmluZGV4IGI3ZGYz MjI0YzAuLjY5N2UwZWQ4NWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBx LWZlLmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUuaApAQCAtNzgsNyArNzgs OSBAQCB0eXBlZGVmIGVudW0KIAlDT05ORUNUSU9OX0NPTlNVTUUsCQkJLyogQ29uc3VtaW5nIGFu eSBleHRyYSBtZXNzYWdlcy4gKi8KIAlDT05ORUNUSU9OX0dTU19TVEFSVFVQLAkJLyogTmVnb3Rp YXRpbmcgR1NTQVBJLiAqLwogCUNPTk5FQ1RJT05fQ0hFQ0tfVEFSR0VULAkvKiBDaGVja2luZyB0 YXJnZXQgc2VydmVyIHByb3BlcnRpZXMuICovCi0JQ09OTkVDVElPTl9DSEVDS19TVEFOREJZCS8q IENoZWNraW5nIGlmIHNlcnZlciBpcyBpbiBzdGFuZGJ5IG1vZGUuICovCisJQ09OTkVDVElPTl9D SEVDS19TVEFOREJZLAkvKiBDaGVja2luZyBpZiBzZXJ2ZXIgaXMgaW4gc3RhbmRieSBtb2RlLiAq LworCUNPTk5FQ1RJT05fU1RBUlRJTkcJCQkvKiBXYWl0aW5nIGZvciBjb25uZWN0aW9uIGF0dGVt cHQgdG8gYmUKKwkJCQkJCQkJICogc3RhcnRlZC4gICovCiB9IENvbm5TdGF0dXNUeXBlOwogCiB0 eXBlZGVmIGVudW0KQEAgLTE2NSw2ICsxNjcsMTEgQEAgdHlwZWRlZiBlbnVtCiAgKi8KIHR5cGVk ZWYgc3RydWN0IHBnX2Nvbm4gUEdjb25uOwogCisvKiBQR2NhbmNlbENvbm4gZW5jYXBzdWxhdGVz IGEgY2FuY2VsIGNvbm5lY3Rpb24gdG8gdGhlIGJhY2tlbmQuCisgKiBUaGUgY29udGVudHMgb2Yg dGhpcyBzdHJ1Y3QgYXJlIG5vdCBzdXBwb3NlZCB0byBiZSBrbm93biB0byBhcHBsaWNhdGlvbnMu CisgKi8KK3R5cGVkZWYgc3RydWN0IHBnX2NhbmNlbF9jb25uIFBHY2FuY2VsQ29ubjsKKwogLyog UEdyZXN1bHQgZW5jYXBzdWxhdGVzIHRoZSByZXN1bHQgb2YgYSBxdWVyeSAob3IgbW9yZSBwcmVj aXNlbHksIG9mIGEgc2luZ2xlCiAgKiBTUUwgY29tbWFuZCAtLS0gYSBxdWVyeSBzdHJpbmcgZ2l2 ZW4gdG8gUFFzZW5kUXVlcnkgY2FuIGNvbnRhaW4gbXVsdGlwbGUKICAqIGNvbW1hbmRzIGFuZCB0 aHVzIHJldHVybiBtdWx0aXBsZSBQR3Jlc3VsdCBvYmplY3RzKS4KQEAgLTMyMSwxNiArMzI4LDI4 IEBAIGV4dGVybiBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBlIFBRcmVzZXRQb2xsKFBHY29ubiAq Y29ubik7CiAvKiBTeW5jaHJvbm91cyAoYmxvY2tpbmcpICovCiBleHRlcm4gdm9pZCBQUXJlc2V0 KFBHY29ubiAqY29ubik7CiAKKy8qIGlzc3VlIGEgY2FuY2VsIHJlcXVlc3QgKi8KK2V4dGVybiBQ R2NhbmNlbENvbm4gKiBQUWNhbmNlbFNlbmQoUEdjb25uICpjb25uKTsKKy8qIG5vbi1ibG9ja2lu ZyB2ZXJzaW9uIG9mIFBRcmVxdWVzdFNlbmQgKi8KK2V4dGVybiBQR2NhbmNlbENvbm4gKiBQUWNh bmNlbENvbm4oUEdjb25uICpjb25uKTsKK2V4dGVybiBQb3N0Z3Jlc1BvbGxpbmdTdGF0dXNUeXBl IFBRY2FuY2VsUG9sbChQR2NhbmNlbENvbm4gKiBjYW5jZWxDb25uKTsKK2V4dGVybiBDb25uU3Rh dHVzVHlwZSBQUWNhbmNlbFN0YXR1cyhjb25zdCBQR2NhbmNlbENvbm4gKiBjYW5jZWxDb25uKTsK K2V4dGVybiBpbnQJUFFjYW5jZWxTb2NrZXQoY29uc3QgUEdjYW5jZWxDb25uICogY2FuY2VsQ29u bik7CitleHRlcm4gY2hhciAqUFFjYW5jZWxFcnJvck1lc3NhZ2UoY29uc3QgUEdjYW5jZWxDb25u ICogY2FuY2VsQ29ubik7CitleHRlcm4gdm9pZCBQUWNhbmNlbFJlc2V0KFBHY2FuY2VsQ29ubiAq IGNhbmNlbENvbm4pOworZXh0ZXJuIHZvaWQgUFFjYW5jZWxGaW5pc2goUEdjYW5jZWxDb25uICog Y2FuY2VsQ29ubik7CisKKwogLyogcmVxdWVzdCBhIGNhbmNlbCBzdHJ1Y3R1cmUgKi8KIGV4dGVy biBQR2NhbmNlbCAqUFFnZXRDYW5jZWwoUEdjb25uICpjb25uKTsKIAogLyogZnJlZSBhIGNhbmNl bCBzdHJ1Y3R1cmUgKi8KIGV4dGVybiB2b2lkIFBRZnJlZUNhbmNlbChQR2NhbmNlbCAqY2FuY2Vs KTsKIAotLyogaXNzdWUgYSBjYW5jZWwgcmVxdWVzdCAqLworLyogYSBsZXNzIHNlY3VyZSB2ZXJz aW9uIG9mIFBRY2FuY2VsU2VuZCwgYnV0IG9uZSB3aGljaCBpcyBzaWduYWwtc2FmZSAqLwogZXh0 ZXJuIGludAlQUWNhbmNlbChQR2NhbmNlbCAqY2FuY2VsLCBjaGFyICplcnJidWYsIGludCBlcnJi dWZzaXplKTsKIAotLyogYmFja3dhcmRzIGNvbXBhdGlibGUgdmVyc2lvbiBvZiBQUWNhbmNlbDsg bm90IHRocmVhZC1zYWZlICovCisvKiBkZXByZWNhdGVkIHZlcnNpb24gb2YgUFFjYW5jZWw7IG5v dCB0aHJlYWQtc2FmZSAqLwogZXh0ZXJuIGludAlQUXJlcXVlc3RDYW5jZWwoUEdjb25uICpjb25u KTsKIAogLyogQWNjZXNzb3IgZnVuY3Rpb25zIGZvciBQR2Nvbm4gb2JqZWN0cyAqLwpkaWZmIC0t Z2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9saWJwcS1pbnQuaAppbmRleCBiNGJiNmRiNWE3Li42ZTExN2Y4Yjg2IDEwMDY0NAotLS0g YS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS9saWJwcS1pbnQuaApAQCAtMzk3LDYgKzM5NywxMCBAQCBzdHJ1Y3QgcGdfY29ubgogCWNo YXIJICAgKnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbjsJLyogbWF4aW11bSBUTFMgcHJvdG9jb2wg dmVyc2lvbiAqLwogCWNoYXIJICAgKnRhcmdldF9zZXNzaW9uX2F0dHJzOwkvKiBkZXNpcmVkIHNl c3Npb24gcHJvcGVydGllcyAqLwogCisJYm9vbAkJY2FuY2VsUmVxdWVzdDsJLyogdHJ1ZSBpZiB0 aGlzIGNvbm5lY3Rpb24gaXMgdXNlZCB0byBzZW5kIGEKKwkJCQkJCQkJICogY2FuY2VsIHJlcXVl c3QsIGluc3RlYWQgb2YgYmVpbmcgYSBub3JtYWwKKwkJCQkJCQkJICogY29ubmVjdGlvbiB0aGF0 J3MgdXNlZCBmb3IgcXVlcmllcyAqLworCiAJLyogT3B0aW9uYWwgZmlsZSB0byB3cml0ZSB0cmFj ZSBpbmZvIHRvICovCiAJRklMRQkgICAqUGZkZWJ1ZzsKIAlpbnQJCQl0cmFjZUZsYWdzOwpAQCAt NTkyLDYgKzU5NiwxMSBAQCBzdHJ1Y3QgcGdfY29ubgogCVBRRXhwQnVmZmVyRGF0YSB3b3JrQnVm ZmVyOyAvKiBleHBhbnNpYmxlIHN0cmluZyAqLwogfTsKIAorc3RydWN0IHBnX2NhbmNlbF9jb25u Cit7CisJUEdjb25uCQljb25uOworfTsKKwogLyogUEdjYW5jZWwgc3RvcmVzIGFsbCBkYXRhIG5l Y2Vzc2FyeSB0byBjYW5jZWwgYSBjb25uZWN0aW9uLiBBIGNvcHkgb2YgdGhpcwogICogZGF0YSBp cyByZXF1aXJlZCB0byBzYWZlbHkgY2FuY2VsIGEgY29ubmVjdGlvbiBydW5uaW5nIG9uIGEgZGlm ZmVyZW50CiAgKiB0aHJlYWQuCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0 aW9udGVzdGVyLmMgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMKaW5kZXgg MGE2NjIzNTE1My4uMzc4MWY3OTgyYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lz b2xhdGlvbnRlc3Rlci5jCisrKyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb250ZXN0ZXIu YwpAQCAtOTQ2LDI2ICs5NDYsMjEgQEAgdHJ5X2NvbXBsZXRlX3N0ZXAoVGVzdFNwZWMgKnRlc3Rz cGVjLCBQZXJtdXRhdGlvblN0ZXAgKnBzdGVwLCBpbnQgZmxhZ3MpCiAJCQkgKi8KIAkJCWlmICh0 ZCA+IG1heF9zdGVwX3dhaXQgJiYgIWNhbmNlbGVkKQogCQkJewotCQkJCVBHY2FuY2VsICAgKmNh bmNlbCA9IFBRZ2V0Q2FuY2VsKGNvbm4pOworCQkJCVBHY2FuY2VsQ29ubiAqY2FuY2VsX2Nvbm4g PSBQUWNhbmNlbFNlbmQoY29ubik7CiAKLQkJCQlpZiAoY2FuY2VsICE9IE5VTEwpCisJCQkJaWYg KFBRY2FuY2VsU3RhdHVzKGNhbmNlbF9jb25uKSA9PSBDT05ORUNUSU9OX09LKQogCQkJCXsKLQkJ CQkJY2hhcgkJYnVmWzI1Nl07Ci0KLQkJCQkJaWYgKFBRY2FuY2VsKGNhbmNlbCwgYnVmLCBzaXpl b2YoYnVmKSkpCi0JCQkJCXsKLQkJCQkJCS8qCi0JCQkJCQkgKiBwcmludCB0byBzdGRvdXQgbm90 IHN0ZGVyciwgYXMgdGhpcyBzaG91bGQgYXBwZWFyCi0JCQkJCQkgKiBpbiB0aGUgdGVzdCBjYXNl J3MgcmVzdWx0cwotCQkJCQkJICovCi0JCQkJCQlwcmludGYoImlzb2xhdGlvbnRlc3RlcjogY2Fu Y2VsaW5nIHN0ZXAgJXMgYWZ0ZXIgJWQgc2Vjb25kc1xuIiwKLQkJCQkJCQkgICBzdGVwLT5uYW1l LCAoaW50KSAodGQgLyBVU0VDU19QRVJfU0VDKSk7Ci0JCQkJCQljYW5jZWxlZCA9IHRydWU7Ci0J CQkJCX0KLQkJCQkJZWxzZQotCQkJCQkJZnByaW50ZihzdGRlcnIsICJQUWNhbmNlbCBmYWlsZWQ6 ICVzXG4iLCBidWYpOwotCQkJCQlQUWZyZWVDYW5jZWwoY2FuY2VsKTsKKwkJCQkJLyoKKwkJCQkJ ICogcHJpbnQgdG8gc3Rkb3V0IG5vdCBzdGRlcnIsIGFzIHRoaXMgc2hvdWxkIGFwcGVhciBpbgor CQkJCQkgKiB0aGUgdGVzdCBjYXNlJ3MgcmVzdWx0cworCQkJCQkgKi8KKwkJCQkJcHJpbnRmKCJp c29sYXRpb250ZXN0ZXI6IGNhbmNlbGluZyBzdGVwICVzIGFmdGVyICVkIHNlY29uZHNcbiIsCisJ CQkJCQkgICBzdGVwLT5uYW1lLCAoaW50KSAodGQgLyBVU0VDU19QRVJfU0VDKSk7CisJCQkJCWNh bmNlbGVkID0gdHJ1ZTsKIAkJCQl9CisJCQkJZWxzZQorCQkJCQlmcHJpbnRmKHN0ZGVyciwgIlBR Y2FuY2VsIGZhaWxlZDogJXNcbiIsIFBRY2FuY2VsRXJyb3JNZXNzYWdlKGNhbmNlbF9jb25uKSk7 CisJCQkJUFFjYW5jZWxGaW5pc2goY2FuY2VsX2Nvbm4pOwogCQkJfQogCiAJCQkvKgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS9saWJwcV9waXBlbGluZS5jIGIv c3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGluZS9saWJwcV9waXBlbGluZS5jCmluZGV4IGEz N2U0ZTI1MDAuLjQwMThjNjFhM2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbGlicHFf cGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3Bp cGVsaW5lL2xpYnBxX3BpcGVsaW5lLmMKQEAgLTg2LDYgKzg2LDI2NCBAQCBwZ19mYXRhbF9pbXBs KGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsLi4uKQogCWV4aXQoMSk7CiB9CiAKKy8qCisgKiBD aGVjayB0aGF0IHRoZSBxdWVyeSBvbiB0aGUgZ2l2ZW4gY29ubmVjdGlvbiBnb3QgY2FuY2VsbGVk LgorICoKKyAqIFRoaXMgaXMgYSBmdW5jdGlvbiB3cmFwcGVkIGluIGEgbWFjcmNvIHRvIG1ha2Ug dGhlIHJlcG9ydGVkIGxpbmUgbnVtYmVyCisgKiBpbiBhbiBlcnJvciBtYXRjaCB0aGUgbGluZSBu dW1iZXIgb2YgdGhlIGludm9jYXRpb24uCisgKi8KKyNkZWZpbmUgY29uZmlybV9xdWVyeV9jYW5j ZWxsZWQoY29ubikgY29uZmlybV9xdWVyeV9jYW5jZWxsZWRfaW1wbChfX0xJTkVfXywgY29ubikK K3N0YXRpYyB2b2lkCitjb25maXJtX3F1ZXJ5X2NhbmNlbGxlZF9pbXBsKGludCBsaW5lLCBQR2Nv bm4gKmNvbm4pCit7CisJUEdyZXN1bHQgICAqcmVzID0gTlVMTDsKKworCXJlcyA9IFBRZ2V0UmVz dWx0KGNvbm4pOworCWlmIChyZXMgPT0gTlVMTCkKKwkJcGdfZmF0YWxfaW1wbChsaW5lLCAiUFFn ZXRSZXN1bHQgcmV0dXJuZWQgbnVsbDogJXMiLAorCQkJCQkgIFBRZXJyb3JNZXNzYWdlKGNvbm4p KTsKKwlpZiAoUFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19GQVRBTF9FUlJPUikKKwkJcGdf ZmF0YWxfaW1wbChsaW5lLCAicXVlcnkgZGlkIG5vdCBmYWlsIHdoZW4gaXQgd2FzIGV4cGVjdGVk Iik7CisJaWYgKHN0cmNtcChQUXJlc3VsdEVycm9yRmllbGQocmVzLCBQR19ESUFHX1NRTFNUQVRF KSwgIjU3MDE0IikgIT0gMCkKKwkJcGdfZmF0YWxfaW1wbChsaW5lLCAicXVlcnkgZmFpbGVkIHdp dGggYSBkaWZmZXJlbnQgZXJyb3IgdGhhbiBjYW5jZWxsYXRpb246ICVzIiwKKwkJCQkJICBQUWVy cm9yTWVzc2FnZShjb25uKSk7CisJUFFjbGVhcihyZXMpOworCXdoaWxlIChQUWlzQnVzeShjb25u KSkKKwl7CisJCVBRY29uc3VtZUlucHV0KGNvbm4pOworCX0KK30KKworI2RlZmluZSBzZW5kX2Nh bmNlbGxhYmxlX3F1ZXJ5KGNvbm4sIG1vbml0b3JDb25uKSBzZW5kX2NhbmNlbGxhYmxlX3F1ZXJ5 X2ltcGwoX19MSU5FX18sIGNvbm4sIG1vbml0b3JDb25uKQorc3RhdGljIHZvaWQKK3NlbmRfY2Fu Y2VsbGFibGVfcXVlcnlfaW1wbChpbnQgbGluZSwgUEdjb25uICpjb25uLCBQR2Nvbm4gKm1vbml0 b3JDb25uKQoreworCWNvbnN0IGNoYXIgKmVudl93YWl0OworCWNvbnN0IE9pZCBwYXJhbVR5cGVz WzFdID0ge0lOVDRPSUR9OworCisJZW52X3dhaXQgPSBnZXRlbnYoIlBHX1RFU1RfVElNRU9VVF9E RUZBVUxUIik7CisJaWYgKGVudl93YWl0ID09IE5VTEwpCisJCWVudl93YWl0ID0gIjE4MCI7CisK KwlpZiAoUFFzZW5kUXVlcnlQYXJhbXMoY29ubiwgIlNFTEVDVCBwZ19zbGVlcCgkMSkiLCAxLCBw YXJhbVR5cGVzLCAmZW52X3dhaXQsIE5VTEwsIE5VTEwsIDApICE9IDEpCisJCXBnX2ZhdGFsX2lt cGwobGluZSwgImZhaWxlZCB0byBzZW5kIHF1ZXJ5OiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4p KTsKKworCS8qCisJICogV2FpdCB1bnRpbCB0aGUgcXVlcnkgaXMgYWN0dWFsbHkgcnVubmluZy4g T3RoZXJ3aXNlIHNlbmRpbmcgYQorCSAqIGNhbmNlbGxhdGlvbiByZXF1ZXN0IG1pZ2h0IG5vdCBj YW5jZWwgdGhlIHF1ZXJ5IGR1ZSB0byByYWNlIGNvbmRpdGlvbnMuCisJICovCisJd2hpbGUgKHRy dWUpCisJeworCQljaGFyCSAgICp2YWx1ZSA9IE5VTEw7CisJCVBHcmVzdWx0ICAgKnJlcyA9IFBR ZXhlYygKKwkJCQkJCQkJIG1vbml0b3JDb25uLAorCQkJCQkJCQkgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgIgorCQkJCQkJCQkgInF1ZXJ5ID0gJ1NFTEVDVCBw Z19zbGVlcCgkMSknICIKKwkJCQkJCQkJICJBTkQgc3RhdGUgPSAnYWN0aXZlJyIpOworCisJCWlm IChQUXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX1RVUExFU19PSykKKwkJeworCQkJcGdfZmF0 YWwoIkNvbm5lY3Rpb24gdG8gZGF0YWJhc2UgZmFpbGVkOiAlcyIsIFBRZXJyb3JNZXNzYWdlKG1v bml0b3JDb25uKSk7CisJCX0KKwkJaWYgKFBRbnR1cGxlcyhyZXMpICE9IDEpCisJCXsKKwkJCXBn X2ZhdGFsKCJ1bmV4cGVjdGVkIG51bWJlciBvZiByb3dzIHJlY2VpdmVkOiAlZCIsIFBRbnR1cGxl cyhyZXMpKTsKKwkJfQorCQlpZiAoUFFuZmllbGRzKHJlcykgIT0gMSkKKwkJeworCQkJcGdfZmF0 YWwoInVuZXhwZWN0ZWQgbnVtYmVyIG9mIGNvbHVtbnMgcmVjZWl2ZWQ6ICVkIiwgUFFuZmllbGRz KHJlcykpOworCQl9CisJCXZhbHVlID0gUFFnZXR2YWx1ZShyZXMsIDAsIDApOworCQlpZiAoKnZh bHVlICE9ICcwJykKKwkJeworCQkJUFFjbGVhcihyZXMpOworCQkJYnJlYWs7CisJCX0KKwkJUFFj bGVhcihyZXMpOworCisJCS8qCisJCSAqIHdhaXQgMTBtcyBiZWZvcmUgcG9sbGluZyBhZ2Fpbgor CQkgKi8KKwkJcGdfdXNsZWVwKDEwMDAwKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X2Nh bmNlbChQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmNvbm5pbmZvKQoreworCVBHY2FuY2VsICAg KmNhbmNlbCA9IE5VTEw7CisJUEdjYW5jZWxDb25uCSAgICpjYW5jZWxDb25uID0gTlVMTDsKKwlQ R2Nvbm4JICAgKm1vbml0b3JDb25uID0gTlVMTDsKKwljaGFyCQllcnJvcmJ1ZlsyNTZdOworCisJ ZnByaW50ZihzdGRlcnIsICJ0ZXN0IGNhbmNlbGxhdGlvbnMuLi4gIik7CisKKwlpZiAoUFFzZXRu b25ibG9ja2luZyhjb25uLCAxKSAhPSAwKQorCQlwZ19mYXRhbCgiZmFpbGVkIHRvIHNldCBub25i bG9ja2luZyBtb2RlOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKworCS8qCisJICogTWFr ZSBhIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFiYXNlIHRvIG1vbml0b3IgdGhlIHF1ZXJ5IG9uIHRo ZSBtYWluCisJICogY29ubmVjdGlvbi4KKwkgKi8KKwltb25pdG9yQ29ubiA9IFBRY29ubmVjdGRi KGNvbm5pbmZvKTsKKwlpZiAoUFFzdGF0dXMoY29ubikgIT0gQ09OTkVDVElPTl9PSykKKwl7CisJ CXBnX2ZhdGFsKCJDb25uZWN0aW9uIHRvIGRhdGFiYXNlIGZhaWxlZDogJXMiLAorCQkJCSBQUWVy cm9yTWVzc2FnZShjb25uKSk7CisJfQorCisJLyogdGVzdCBQUWNhbmNlbCAqLworCXNlbmRfY2Fu Y2VsbGFibGVfcXVlcnkoY29ubiwgbW9uaXRvckNvbm4pOworCWNhbmNlbCA9IFBRZ2V0Q2FuY2Vs KGNvbm4pOworCWlmICghUFFjYW5jZWwoY2FuY2VsLCBlcnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVm KSkpCisJeworCQlwZ19mYXRhbCgiZmFpbGVkIHRvIHJ1biBQUWNhbmNlbDogJXMiLCBlcnJvcmJ1 Zik7CisJfTsKKwljb25maXJtX3F1ZXJ5X2NhbmNlbGxlZChjb25uKTsKKworCS8qIFBHY2FuY2Vs IG9iamVjdCBjYW4gYmUgcmV1c2VkIGZvciB0aGUgbmV4dCBxdWVyeSAqLworCXNlbmRfY2FuY2Vs bGFibGVfcXVlcnkoY29ubiwgbW9uaXRvckNvbm4pOworCWlmICghUFFjYW5jZWwoY2FuY2VsLCBl cnJvcmJ1Ziwgc2l6ZW9mKGVycm9yYnVmKSkpCisJeworCQlwZ19mYXRhbCgiZmFpbGVkIHRvIHJ1 biBQUWNhbmNlbDogJXMiLCBlcnJvcmJ1Zik7CisJfTsKKwljb25maXJtX3F1ZXJ5X2NhbmNlbGxl ZChjb25uKTsKKworCVBRZnJlZUNhbmNlbChjYW5jZWwpOworCisJLyogdGVzdCBQUXJlcXVlc3RD YW5jZWwgKi8KKwlzZW5kX2NhbmNlbGxhYmxlX3F1ZXJ5KGNvbm4sIG1vbml0b3JDb25uKTsKKwlp ZiAoIVBRcmVxdWVzdENhbmNlbChjb25uKSkKKwkJcGdfZmF0YWwoImZhaWxlZCB0byBydW4gUFFy ZXF1ZXN0Q2FuY2VsOiAlcyIsIFBRZXJyb3JNZXNzYWdlKGNvbm4pKTsKKwljb25maXJtX3F1ZXJ5 X2NhbmNlbGxlZChjb25uKTsKKworCS8qIHRlc3QgUFFjYW5jZWxTZW5kICovCisJc2VuZF9jYW5j ZWxsYWJsZV9xdWVyeShjb25uLCBtb25pdG9yQ29ubik7CisJY2FuY2VsQ29ubiA9IFBRY2FuY2Vs U2VuZChjb25uKTsKKwlpZiAoUFFjYW5jZWxTdGF0dXMoY2FuY2VsQ29ubikgPT0gQ09OTkVDVElP Tl9CQUQpCisJCXBnX2ZhdGFsKCJmYWlsZWQgdG8gcnVuIFBRY2FuY2VsU2VuZDogJXMiLCBQUWNh bmNlbEVycm9yTWVzc2FnZShjYW5jZWxDb25uKSk7CisJY29uZmlybV9xdWVyeV9jYW5jZWxsZWQo Y29ubik7CisJUFFjYW5jZWxGaW5pc2goY2FuY2VsQ29ubik7CisKKwkvKiB0ZXN0IFBRY2FuY2Vs Q29ubiBhbmQgdGhlbiBwb2xsaW5nIHdpdGggUFFjYW5jZWxQb2xsICovCisJc2VuZF9jYW5jZWxs YWJsZV9xdWVyeShjb25uLCBtb25pdG9yQ29ubik7CisJY2FuY2VsQ29ubiA9IFBRY2FuY2VsQ29u bihjb25uKTsKKwlpZiAoUFFjYW5jZWxTdGF0dXMoY2FuY2VsQ29ubikgPT0gQ09OTkVDVElPTl9C QUQpCisJCXBnX2ZhdGFsKCJiYWQgY2FuY2VsIGNvbm5lY3Rpb246ICVzIiwgUFFjYW5jZWxFcnJv ck1lc3NhZ2UoY2FuY2VsQ29ubikpOworCXdoaWxlICh0cnVlKQorCXsKKwkJc3RydWN0IHRpbWV2 YWwgdHY7CisJCWZkX3NldAkJaW5wdXRfbWFzazsKKwkJZmRfc2V0CQlvdXRwdXRfbWFzazsKKwkJ UG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSBwb2xscmVzID0gUFFjYW5jZWxQb2xsKGNhbmNlbENv bm4pOworCQlpbnQJCQlzb2NrID0gUFFjYW5jZWxTb2NrZXQoY2FuY2VsQ29ubik7CisKKwkJaWYg KHBvbGxyZXMgPT0gUEdSRVNfUE9MTElOR19PSykKKwkJeworCQkJYnJlYWs7CisJCX0KKworCQlG RF9aRVJPKCZpbnB1dF9tYXNrKTsKKwkJRkRfWkVSTygmb3V0cHV0X21hc2spOworCQlzd2l0Y2gg KHBvbGxyZXMpCisJCXsKKwkJCWNhc2UgUEdSRVNfUE9MTElOR19SRUFESU5HOgorCQkJCXBnX2Rl YnVnKCJwb2xsaW5nIGZvciByZWFkc1xuIik7CisJCQkJRkRfU0VUKHNvY2ssICZpbnB1dF9tYXNr KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgUEdSRVNfUE9MTElOR19XUklUSU5HOgorCQkJCXBnX2Rl YnVnKCJwb2xsaW5nIGZvciB3cml0ZXNcbiIpOworCQkJCUZEX1NFVChzb2NrLCAmb3V0cHV0X21h c2spOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQlwZ19mYXRhbCgiYmFkIGNhbmNlbCBj b25uZWN0aW9uOiAlcyIsIFBRY2FuY2VsRXJyb3JNZXNzYWdlKGNhbmNlbENvbm4pKTsKKwkJfQor CisJCWlmIChzb2NrIDwgMCkKKwkJCXBnX2ZhdGFsKCJzb2NrIGRpZCBub3QgZXhpc3Q6ICVzIiwg UFFjYW5jZWxFcnJvck1lc3NhZ2UoY2FuY2VsQ29ubikpOworCisJCXR2LnR2X3NlYyA9IDM7CisJ CXR2LnR2X3VzZWMgPSAwOworCisJCXdoaWxlICh0cnVlKQorCQl7CisJCQlpZiAoc2VsZWN0KHNv Y2sgKyAxLCAmaW5wdXRfbWFzaywgJm91dHB1dF9tYXNrLCBOVUxMLCAmdHYpIDwgMCkKKwkJCXsK KwkJCQlpZiAoZXJybm8gPT0gRUlOVFIpCisJCQkJCWNvbnRpbnVlOworCQkJCXBnX2ZhdGFsKCJz ZWxlY3QoKSBmYWlsZWQ6ICVtIik7CisJCQl9CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoUFFj YW5jZWxTdGF0dXMoY2FuY2VsQ29ubikgIT0gQ09OTkVDVElPTl9PSykKKwkJcGdfZmF0YWwoInVu ZXhwZWN0ZWQgY2FuY2VsIGNvbm5lY3Rpb24gc3RhdHVzOiAlcyIsIFBRY2FuY2VsRXJyb3JNZXNz YWdlKGNhbmNlbENvbm4pKTsKKwljb25maXJtX3F1ZXJ5X2NhbmNlbGxlZChjb25uKTsKKworCS8q CisJICogdGVzdCBQUWNhbmNlbFJlc2V0IHdvcmtzIG9uIHRoZSBjYW5jZWwgY29ubmVjdGlvbiBh bmQgaXQgY2FuIGJlIHJldXNlZAorCSAqIGFmdGVyCisJICovCisJUFFjYW5jZWxSZXNldChjYW5j ZWxDb25uKTsKKworCXNlbmRfY2FuY2VsbGFibGVfcXVlcnkoY29ubiwgbW9uaXRvckNvbm4pOwor CWlmIChQUWNhbmNlbFN0YXR1cyhjYW5jZWxDb25uKSA9PSBDT05ORUNUSU9OX0JBRCkKKwkJcGdf ZmF0YWwoImJhZCBjYW5jZWwgY29ubmVjdGlvbjogJXMiLCBQUWNhbmNlbEVycm9yTWVzc2FnZShj YW5jZWxDb25uKSk7CisJd2hpbGUgKHRydWUpCisJeworCQlzdHJ1Y3QgdGltZXZhbCB0djsKKwkJ ZmRfc2V0CQlpbnB1dF9tYXNrOworCQlmZF9zZXQJCW91dHB1dF9tYXNrOworCQlQb3N0Z3Jlc1Bv bGxpbmdTdGF0dXNUeXBlIHBvbGxyZXMgPSBQUWNhbmNlbFBvbGwoY2FuY2VsQ29ubik7CisJCWlu dAkJCXNvY2sgPSBQUWNhbmNlbFNvY2tldChjYW5jZWxDb25uKTsKKworCQlpZiAocG9sbHJlcyA9 PSBQR1JFU19QT0xMSU5HX09LKQorCQl7CisJCQlicmVhazsKKwkJfQorCisJCUZEX1pFUk8oJmlu cHV0X21hc2spOworCQlGRF9aRVJPKCZvdXRwdXRfbWFzayk7CisJCXN3aXRjaCAocG9sbHJlcykK KwkJeworCQkJY2FzZSBQR1JFU19QT0xMSU5HX1JFQURJTkc6CisJCQkJcGdfZGVidWcoInBvbGxp bmcgZm9yIHJlYWRzXG4iKTsKKwkJCQlGRF9TRVQoc29jaywgJmlucHV0X21hc2spOworCQkJCWJy ZWFrOworCQkJY2FzZSBQR1JFU19QT0xMSU5HX1dSSVRJTkc6CisJCQkJcGdfZGVidWcoInBvbGxp bmcgZm9yIHdyaXRlc1xuIik7CisJCQkJRkRfU0VUKHNvY2ssICZvdXRwdXRfbWFzayk7CisJCQkJ YnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXBnX2ZhdGFsKCJiYWQgY2FuY2VsIGNvbm5lY3Rpb246 ICVzIiwgUFFjYW5jZWxFcnJvck1lc3NhZ2UoY2FuY2VsQ29ubikpOworCQl9CisKKwkJaWYgKHNv Y2sgPCAwKQorCQkJcGdfZmF0YWwoInNvY2sgZGlkIG5vdCBleGlzdDogJXMiLCBQUWNhbmNlbEVy cm9yTWVzc2FnZShjYW5jZWxDb25uKSk7CisKKwkJdHYudHZfc2VjID0gMzsKKwkJdHYudHZfdXNl YyA9IDA7CisKKwkJd2hpbGUgKHRydWUpCisJCXsKKwkJCWlmIChzZWxlY3Qoc29jayArIDEsICZp bnB1dF9tYXNrLCAmb3V0cHV0X21hc2ssIE5VTEwsICZ0dikgPCAwKQorCQkJeworCQkJCWlmIChl cnJubyA9PSBFSU5UUikKKwkJCQkJY29udGludWU7CisJCQkJcGdfZmF0YWwoInNlbGVjdCgpIGZh aWxlZDogJW0iKTsKKwkJCX0KKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChQUWNhbmNlbFN0YXR1 cyhjYW5jZWxDb25uKSAhPSBDT05ORUNUSU9OX09LKQorCQlwZ19mYXRhbCgidW5leHBlY3RlZCBj YW5jZWwgY29ubmVjdGlvbiBzdGF0dXM6ICVzIiwgUFFjYW5jZWxFcnJvck1lc3NhZ2UoY2FuY2Vs Q29ubikpOworCWNvbmZpcm1fcXVlcnlfY2FuY2VsbGVkKGNvbm4pOworCisJUFFjYW5jZWxGaW5p c2goY2FuY2VsQ29ubik7CisKKwlmcHJpbnRmKHN0ZGVyciwgIm9rXG4iKTsKK30KKwogc3RhdGlj IHZvaWQKIHRlc3RfZGlzYWxsb3dlZF9pbl9waXBlbGluZShQR2Nvbm4gKmNvbm4pCiB7CkBAIC0x NjgxLDYgKzE5MzksNyBAQCB1c2FnZShjb25zdCBjaGFyICpwcm9nbmFtZSkKIHN0YXRpYyB2b2lk CiBwcmludF90ZXN0X2xpc3Qodm9pZCkKIHsKKwlwcmludGYoImNhbmNlbFxuIik7CiAJcHJpbnRm KCJkaXNhbGxvd2VkX2luX3BpcGVsaW5lXG4iKTsKIAlwcmludGYoIm11bHRpX3BpcGVsaW5lc1xu Iik7CiAJcHJpbnRmKCJub3N5bmNcbiIpOwpAQCAtMTc4Miw3ICsyMDQxLDkgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJCQlQUVRSQUNFX1NVUFBSRVNTX1RJTUVTVEFNUFMgfCBQ UVRSQUNFX1JFR1JFU1NfTU9ERSk7CiAJfQogCi0JaWYgKHN0cmNtcCh0ZXN0bmFtZSwgImRpc2Fs bG93ZWRfaW5fcGlwZWxpbmUiKSA9PSAwKQorCWlmIChzdHJjbXAodGVzdG5hbWUsICJjYW5jZWwi KSA9PSAwKQorCQl0ZXN0X2NhbmNlbChjb25uLCBjb25uaW5mbyk7CisJZWxzZSBpZiAoc3RyY21w KHRlc3RuYW1lLCAiZGlzYWxsb3dlZF9pbl9waXBlbGluZSIpID09IDApCiAJCXRlc3RfZGlzYWxs b3dlZF9pbl9waXBlbGluZShjb25uKTsKIAllbHNlIGlmIChzdHJjbXAodGVzdG5hbWUsICJtdWx0 aV9waXBlbGluZXMiKSA9PSAwKQogCQl0ZXN0X211bHRpX3BpcGVsaW5lcyhjb25uKTsKLS0gCjIu MzQuMQoK --_003_DBBPR83MB05071BB8A8838830CABAFFE1F7129DBBPR83MB0507EURP_--