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 1pCa2R-0000vl-Di for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Jan 2023 05:40:40 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pCa2Q-0003Dh-99 for pgsql-hackers@arkaria.postgresql.org; Tue, 03 Jan 2023 05:40:38 +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 1pCa2O-0003DY-RX for pgsql-hackers@lists.postgresql.org; Tue, 03 Jan 2023 05:40:37 +0000 Received: from esa5.fujitsucc.c3s2.iphmx.com ([68.232.159.76]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pCa2K-0007yi-7l for pgsql-hackers@lists.postgresql.org; Tue, 03 Jan 2023 05:40:35 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1672724432; x=1704260432; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=lQ0/YpICP0RTv/1r5F7hzB88sySlW2DH75qluCxKQsY=; b=p7EFz6P6RJTQuTVcOEi5CKifbDk5Q+x+nfbrDruYLvDwvvMXnODeqLQu BmDUcqfdGP8iWdIYN5RCrr4wVC8iUYRlaNXl1PDEB9t/d63OPPuLXcbQA rznFmSN5CrkfOleAHyky1Z9cO/a0qUVmsC4/vkN8rtuP/Zcng1ftsQh8+ jUt+2ENMINaggFzIEH3E4A1TukNs1iJ5LaV+TFsRPwtijqvqvD6QmL0N7 8g5V5ZQqUnwlp5Z6LSDwgU+o/Amgjmp+j6uN7ivqAXWJH+TYt1n4IlnN4 Ebs9cb4+X1ePwIU9PQaekiOrKWLdU36/eDNyph3NyRg/EXIuiU3LeYPC2 Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10578"; a="73889013" X-IronPort-AV: E=Sophos;i="5.96,296,1665414000"; d="scan'208,223";a="73889013" Received: from mail-os0jpn01lp2108.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.108]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jan 2023 14:40:26 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AAsaCw8zY4WUI7X0gutbk++FrON7j+ZacBZo1ODTiF21snjzyjs2k6xySkZxYlO+EkR29nnQMv/H8w5xSP6iIBaU+QVFz7YuqTmhnMXlZe0u/L+OQoip0nwz78QcSlRCPVm/Qq51oFKMaN8u+333niiSJO08wtTt4enE1/RkmFHlWvHAr9dyDpdCBfCKuka2vDKM5zHYm+BIUgiPTotaO+s3umzmdXRsqZslxa+nKm412U6G96oP7VZpjnuLcenlotld60B2HTff8W9V0D2mV/oemFmp9sqbyLBPmAs4l/p5x+EZuTDkaAdNYaze/1I9yck5eZEpSkaGzArjcyAiMw== 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=O5N9K/MjnodKgQfdd0EIQhXSh5F0FIvjy1oyvlnUi/g=; b=fOJj6weOHILsOM0iLrhJIrW4kCv+/vXjnjDZ71pIOb1Tyvt9WOoM4EaCuwyyiRWIBuypUcF/fEExOVz3gFxQT9wXhmyjdtIWkyYuLyUpG1/M4+Pqsy0+qD5yX2iEQVELPvH4gW8i2dxKD6ytZFq5xAMvS5+hB5+gpvU89cmk0us1jchcfOG/f942NCkiLUHxlLbjXhnJj+/wFYw2CFgItD4ne3YS0L+YviMxFqwjOaO4SBD+BKBiedj2Pku6kKg5d/zCHZ0/RKP7z0vYDu7DUKyv0nftHbiSahFrOXV8XW9ja6j8AavkJYwcwuiiEwHnSF73EQE3AS5bJ1Vj0Z1AcA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by TYCPR01MB8277.jpnprd01.prod.outlook.com (2603:1096:400:157::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Tue, 3 Jan 2023 05:40:22 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::212c:b8ab:a55a:2c69]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::212c:b8ab:a55a:2c69%9]) with mapi id 15.20.5944.019; Tue, 3 Jan 2023 05:40:22 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila CC: "houzj.fnst@fujitsu.com" , Peter Smith , Masahiko Sawada , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHZD4glaZYxcS7PWkmy2G012OfTrq5uS4SAgAHPyoCAACQbgIAAHfaAgAGmKgCAAB5KAIADDzOAgAFWGwCAABIHgIAA+NgAgABKNQCAAf/xAIABKiIAgAA6H4CABGPrgIAAfUiAgAEdO9CAAHFDAIABGuBQgAIn1oCAAV6qMIAEwHSAgAE52MA= Date: Tue, 3 Jan 2023 05:40:22 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9M2NlZWQ5NDUtZTA1Yy00NjY3LWEzMGUtMzk4MTI5NGJk?= =?utf-8?B?ZjNmO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMy0wMS0wM1QwNTozNzowNlo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS3PR01MB6275:EE_|TYCPR01MB8277:EE_ x-ms-office365-filtering-correlation-id: c68df1e8-6bdf-467c-cf6e-08daed4d01fe x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kx0JKsbogVVSipPGGevJ2QlDYkkmq+El6LMNQ+n1wRxM8W4BD1ko8Sqhl5Ob8/8BBhlzhGUy/PiagpP3hJ3J8n8G0xgwwDQZ1li5DPARxnn6ypNuIPeu8WsarFhcwuPckbzz/Gw3vxWbS1KWR81NutoG57Y0e9jgHTPbgut0wqDSNejUCuGDmrS3dC5heSXXRig/B9BuKW9UpDABHfqjTWqYcf4+ndr8fTNodnHTXQHla9wDb9gu9TFMq7Ll/THgnmK5CtmmOHfaNt9iIEsYhyn1sCax05hkSDtKj38Z7i6FPtvGC+hX6ixxQYvAguEMkX6ifWiwSsi2uTIccMMPDZmq1E+Fbw7KxXQMWqKNMGHiLsZRkhqS2rVMkcPGWIx/TTZSTbkbukD0tw1i9fvtLfZ9CQLQ4n7JuDqVsszoPJxuIj8WfBOz+KS+1dteQ8Dt2k2Gchu27IvFvwT4/B2V2Mi6MhbvSOyy/sIy8eaL0IK78ZwAMJwTtqHhsMqSIeC/mpiiZv1yCHc3ZRsCY6PV9caYxBkq2gElLYjlQ7jphaEQBPiZt8gySi6t/+f43sEVN1UuN4j4CRx2PO2p+T0N102ofxOZ+6ptU5ookr40DRLpDCso2+1yqvVxrBF0rNFvdim+ed8v+apkAqPLKVicAETeDyD34yNW2C/a0Y1AnWwOw2YVSUnEPT26Ns1FKA1De5Vk0+kEFCbkGIU2FA7jaLSgPPPmpmg3n9l3P+tjsv+s/nPslKZSu0a9yPCfuVwlxUaHD/b3wADD3wkberbcXQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(346002)(376002)(136003)(396003)(366004)(39860400002)(1590799012)(451199015)(9686003)(26005)(186003)(52536014)(99936003)(83380400001)(55016003)(8936002)(33656002)(71200400001)(53546011)(478600001)(7696005)(6506007)(1580799009)(316002)(6916009)(54906003)(66476007)(8676002)(66946007)(76116006)(85182001)(4326008)(66556008)(66446008)(64756008)(41300700001)(38070700005)(38100700002)(4744005)(122000001)(5660300002)(86362001)(2906002)(82960400001)(22166006);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?THBPTUsrVEtuOVZ2SFVMM0h5U0w3cXZYdFBLWmhDMTNWb01NMDVmNUg5Mlg1?= =?utf-8?B?UExwQVVWWWhGSnNMYld2S2pWNlJuaFhKd1VnYVZyZFl3bE0za2h6VjRNbGpx?= =?utf-8?B?QkZ6bEFHMWZUV2RSK0pIWnhXQWhSSEQyR3JyOUpiMWwwczYyVmQ1WnR2NVZP?= =?utf-8?B?YXU1RElXMDNPWkdsNjdxQkgrNTVNZXdOYjhSeXpqQnBHWFFqY3IyNk5Za1NW?= =?utf-8?B?TkJWUTArbmJVc0VOQk9TZTUzT21PUmo0aGpVNWtHbVhsRVpjcThXNjFxRE8z?= =?utf-8?B?a2RyWUN0MXJGYWtUTnhUWGwwRjdUbnhta2hkc3hOK25md2V5ay9OSVJCSjUy?= =?utf-8?B?d2FiajFYYktKTlpRR1dQNVAvRnZ6L2FGS29wcm1PWlJVUlo3Sk5tU0FPTzh1?= =?utf-8?B?WnhTNERpNkQxaTZvbEVHY3dsOUlIYXVmUG9pVyt2R2hpK0E2aFI2L2hmMTlH?= =?utf-8?B?WUhYSVJZcm5PYk1LNHI4RnlSSjAwa0NUbGlxallYNllicVM1STI1akJnZElM?= =?utf-8?B?aG4vRXA0VTVKcjZJL3hWR2I5UncxTnJucE4yOXBDQ0U1YWE1YjNJcDlQVFUw?= =?utf-8?B?VWxySHZvbHJWcUNFZkZwdG40Ny9yekkrY2dEZzcxZTg0b1ZpYzd1NzI4TWNB?= =?utf-8?B?N0JYUU11bzJNanJvVTB0YzloOGdpOFIvelQvZWpTdTlLNUs3RkVYMTh5MWhu?= =?utf-8?B?Y3hWQlhrY3ZKN0oreHhkVHl5cUNSR0h6a1pxTm9BZzhZKzdxVXQybGFjQXBu?= =?utf-8?B?c0hBSmtEK3FzSWlyeTJFMkwvRFRRdXBWMndwZG1WT2JCNXpQQnFiRHZSaDNF?= =?utf-8?B?S3BHUlBKRmNRSkxYd2JwcHhHaW1BWHZEQlo5VG83UlhVazZvNHg0aTVpd214?= =?utf-8?B?dFdRakUxcFJ6cWhYQVBmWjhnYWpZVVlwMGlvUVVOTU5FWXhMaVRhV2RGcVhj?= =?utf-8?B?NWliTndjWUtjNjNSbkd3RlU4YjhITnE3eDJxT01EYXFpMTl2TUFuaExkMG9P?= =?utf-8?B?TXV6R3NTSndJNHZkdHJ1QThMSnhSbnVGOU02MlZyNkhVOVJzd3Rtbkk3NkdE?= =?utf-8?B?NEkxeGFQL3FUODZoR2Vxd2t0dGU5VU5qS3QxQmQ2eEFIaVliaXd6b3Q1NFNl?= =?utf-8?B?SCtjOGlrSjNobjRMSk5yUWZqT1pwbGtiQ3FUTkpDakl5a1lFbkdnVU15OGFy?= =?utf-8?B?V1NRRi8vWFAwaWlvMkZ0cWZuNW5kTDNxN2J6ZElEUVpveGRBYTdxcnNQWkJR?= =?utf-8?B?UklEd1l4UkozdGxzSnhYaS96djUyYTNERTdpK0I5bmtRQ1d5MTZoSjNrbzZp?= =?utf-8?B?YkZzN3U2VmgwS2t6Zy91WW5EWUgzVGF6STlSQUhYMEx5U1U3dEd6MHNNb2ND?= =?utf-8?B?d0hHQTFuM1BZZ2xjVmR1K0k2Q2QzdldEYkNzNGJqdVFjb1piNzVTR0RXY2lP?= =?utf-8?B?cmhhTmt1eUQwQ3d6aWpwbURsTHcvYkRZQWkzSTJhRURITkR2RVFsMzV5UlE2?= =?utf-8?B?V0xwR1lheXQrZ0QydGl0K0ZpNTRSUm1lT0M1WXN2bHkvdjVWa1BScnY4K1h3?= =?utf-8?B?aTRMRGpqWlBGNFpWY0JLVmxuWUYvcWtWcWl2U2lJZm0vVDdsME9wbWNISTVh?= =?utf-8?B?azJLbWRTTEJEWThTUWswSnIvUEowWndVc2xJa3MzUFphTVpWUm12WmtnQjNn?= =?utf-8?B?RmVWdnYxak83d3ZqWmx6b0ZMWGUyMmI1UzUwc1RIZ3JySDljMm1OZDJiRTdE?= =?utf-8?B?Y0VUVDhud01xd21iNFhUTjBkWkxsTWRMa2xTWTRmTURkY08wNFJqTGxVVy9y?= =?utf-8?B?VFVGa3pMckNOK1hwUlFWdmo4SWdvQ0VSWUtQbE5kclQ2ZlBrcVRNdDMycEZV?= =?utf-8?B?WTNtWUpxLzdhQ2R5cEZ3bVJITkl2RFYxUWJ6bm9aYm50TG9PS0UrRjlUS3lo?= =?utf-8?B?Z3NuSWRrQUVYUnhUbC9WaEZjYi82ZXFHOTQ2eFJsZVA4NExReDdTb25za3h2?= =?utf-8?B?K2ppYUpHdkVYajRyOER1UDgrR1JEVm04WDgyK1RrNGp1WmZ6OEF1a1J4Tkw1?= =?utf-8?B?d2ZDUXRZNVZSeWNKV0RDQmUrcVBmZ0tQUzJuN1dERlgwMlI4bVZ2MVdSSjVY?= =?utf-8?Q?CFXIaDNqXTCCiAvlORV/fVZU2?= Content-Type: multipart/mixed; boundary="_006_OS3PR01MB6275D4B22266412FEEBDB3AE9EF49OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c68df1e8-6bdf-467c-cf6e-08daed4d01fe X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jan 2023 05:40:22.7775 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ua3KY39x4xvhNZlykOBBMDuAI+mooPiCiOK3GbHEcyMut8R33CHn3GSDkyx45lzHgrf+1olpEjzfGyKcjWMKaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB8277 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS3PR01MB6275D4B22266412FEEBDB3AE9EF49OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gTW9uLCBKYW4gMiwgMjAyMyBhdCAxODo1NCBQTSBBbWl0IEthcGlsYSA8YW1pdC5rYXBpbGEx NkBnbWFpbC5jb20+IHdyb3RlOg0KPiBPbiBGcmksIERlYyAzMCwgMjAyMiBhdCAzOjU1IFBNIHdh bmd3LmZuc3RAZnVqaXRzdS5jb20NCj4gPHdhbmd3LmZuc3RAZnVqaXRzdS5jb20+IHdyb3RlOg0K PiA+DQo+ID4gSSd2ZSBjaGVja2VkIGl0IGFuZCBpdCBsb29rcyBnb29kIHRvIG1lLg0KPiA+IFJl YmFzZWQgdGhlIG90aGVyIHBhdGNoZXMgYW5kIHJhbiB0aGUgcGdpZGVudCBmb3IgdGhlIHBhdGNo IHNldC4NCj4gPg0KPiA+IEF0dGFjaCB0aGUgbmV3IHBhdGNoIHNldC4NCj4gPg0KPiANCj4gSSBo YXZlIGFkZGVkIGEgZmV3IERFQlVHIG1lc3NhZ2VzIGFuZCBjaGFuZ2VkIGEgZmV3IGNvbW1lbnRz IGluIHRoZQ0KPiAwMDAxIHBhdGNoLiBXaXRoIHRoYXQgdjcxLTAwMDEqIGxvb2tzIGdvb2QgdG8g bWUgYW5kIEknbGwgY29tbWl0IGl0DQo+IGxhdGVyIHRoaXMgd2VlayAoYnkgVGh1cnNkYXkgb3Ig RnJpZGF5KSB1bmxlc3MgdGhlcmUgYXJlIGFueSBtYWpvcg0KPiBjb21tZW50cyBvciBvYmplY3Rp b25zLg0KDQpUaGFua3MgZm9yIHlvdXIgaW1wcm92ZW1lbnQuDQoNClJlYmFzZWQgdGhlIHBhdGNo IHNldCBiZWNhdXNlIHRoZSBuZXcgY2hhbmdlIGluIEhFQUQgKGM4ZTFiYTcpLg0KQXR0YWNoIHRo ZSBuZXcgcGF0Y2ggc2V0Lg0KDQpSZWdhcmRzLA0KV2FuZyB3ZWkNCg== --_006_OS3PR01MB6275D4B22266412FEEBDB3AE9EF49OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v72-0001-Perform-apply-of-large-transactions-by-parallel-.patch" Content-Description: v72-0001-Perform-apply-of-large-transactions-by-parallel-.patch Content-Disposition: attachment; filename="v72-0001-Perform-apply-of-large-transactions-by-parallel-.patch"; size=270084; creation-date="Tue, 03 Jan 2023 05:37:29 GMT"; modification-date="Tue, 03 Jan 2023 05:40:20 GMT" Content-Transfer-Encoding: base64 RnJvbSAyNjI1YTJlODJlNzYzMGM1YjI2ZjAzYzY3MWNlYzBmMjc0N2JmYmM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY3MiAxLzVdIFBlcmZvcm0gYXBwbHkgb2YgbGFyZ2UgdHJhbnNhY3Rpb25zIGJ5IHBhcmFsbGVs CiB3b3JrZXJzLgoKQ3VycmVudGx5LCBmb3IgbGFyZ2UgdHJhbnNhY3Rpb25zLCB0aGUgcHVibGlz aGVyIHNlbmRzIHRoZSBkYXRhIGluCm11bHRpcGxlIHN0cmVhbXMgKGNoYW5nZXMgZGl2aWRlZCBp bnRvIGNodW5rcyBkZXBlbmRpbmcgdXBvbgpsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtKSwgYW5k IHRoZW4gb24gdGhlIHN1YnNjcmliZXItc2lkZSwgdGhlIGFwcGx5CndvcmtlciB3cml0ZXMgdGhl IGNoYW5nZXMgaW50byB0ZW1wb3JhcnkgZmlsZXMgYW5kIG9uY2UgaXQgcmVjZWl2ZXMgdGhlCmNv bW1pdCwgaXQgcmVhZHMgZnJvbSB0aG9zZSBmaWxlcyBhbmQgYXBwbGllcyB0aGUgZW50aXJlIHRy YW5zYWN0aW9uLiBUbwppbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiBzdWNoIHRyYW5zYWN0aW9u cywgd2UgY2FuIGluc3RlYWQgYWxsb3cgdGhlbSB0bwpiZSBhcHBsaWVkIHZpYSBwYXJhbGxlbCB3 b3JrZXJzLgoKSW4gdGhpcyBhcHByb2FjaCwgd2UgYXNzaWduIGEgbmV3IHBhcmFsbGVsIGFwcGx5 IHdvcmtlciAoaWYgYXZhaWxhYmxlKSBhcwpzb29uIGFzIHRoZSB4YWN0J3MgZmlyc3Qgc3RyZWFt IGlzIHJlY2VpdmVkIGFuZCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgp3aWxsIHNlbmQgY2hhbmdl cyB0byB0aGlzIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFRoZSBwYXJhbGxlbCBhcHBs eQp3b3JrZXIgd2lsbCBkaXJlY3RseSBhcHBseSB0aGUgY2hhbmdlIGluc3RlYWQgb2Ygd3JpdGlu ZyBpdCB0byB0ZW1wb3JhcnkKZmlsZXMuIEhvd2V2ZXIsIGlmIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIHRpbWVzIG91dCB3aGlsZSBhdHRlbXB0aW5nIHRvCnNlbmQgYSBtZXNzYWdlIHRvIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIsIGl0IHdpbGwgc3dpdGNoIHRvCiJwYXJ0aWFsIHNlcmlhbGl6 ZSIgbW9kZSAtICBpbiB0aGlzIG1vZGUsIHRoZSBsZWFkZXIgc2VyaWFsaXplcyBhbGwKcmVtYWlu aW5nIGNoYW5nZXMgdG8gYSBmaWxlIGFuZCBub3RpZmllcyB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VycyB0bwpyZWFkIGFuZCBhcHBseSB0aGVtIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9u LiBXZSB1c2UgYSBub24tYmxvY2tpbmcKd2F5IHRvIHNlbmQgdGhlIG1lc3NhZ2VzIGZyb20gdGhl IGxlYWRlciBhcHBseSB3b3JrZXIgdG8gdGhlIHBhcmFsbGVsCmFwcGx5IHRvIGF2b2lkIGRlYWRs b2Nrcy4gV2Uga2VlcCB0aGlzIHBhcmFsbGVsIGFwcGx5IGFzc2lnbmVkIHRpbGwgdGhlCnRyYW5z YWN0aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0IGZvciB0aGUgd29ya2VyIHRv IGZpbmlzaCBhdApjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZyBhbmQgYXZv aWQgd3JpdGluZyB0byBhbmQgcmVhZGluZwpmcm9tIGZpbGVzIGluIG1vc3QgY2FzZXMuIFdlIHN0 aWxsIG5lZWQgdG8gc3BpbGwgaWYgdGhlcmUgaXMgbm8gd29ya2VyCmF2YWlsYWJsZS4KClRoaXMg cGF0Y2ggYWxzbyBleHRlbmRzIHRoZSBTVUJTQ1JJUFRJT04gJ3N0cmVhbWluZycgcGFyYW1ldGVy IHNvIHRoYXQgdGhlCnVzZXIgY2FuIGNvbnRyb2wgd2hldGhlciB0byBhcHBseSB0aGUgc3RyZWFt aW5nIHRyYW5zYWN0aW9uIGluIGEgcGFyYWxsZWwKYXBwbHkgd29ya2VyIG9yIHNwaWxsIHRoZSBj aGFuZ2UgdG8gZGlzay4gVGhlIHVzZXIgY2FuIHNldCB0aGUgc3RyZWFtaW5nCnBhcmFtZXRlciB0 byAnb24vb2ZmJywgb3IgJ3BhcmFsbGVsJy4gVGhlIHBhcmFtZXRlciB2YWx1ZSAncGFyYWxsZWwn IG1lYW5zCnRoZSBzdHJlYW1pbmcgd2lsbCBiZSBhcHBsaWVkIHZpYSBhIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciwgaWYgYXZhaWxhYmxlLgpUaGUgcGFyYW1ldGVyIHZhbHVlICdvbicgbWVhbnMgdGhl IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB3aWxsIGJlIHNwaWxsZWQKdG8gZGlzay4gVGhlIGRlZmF1 bHQgdmFsdWUgaXMgJ29mZicgKHNhbWUgYXMgY3VycmVudCBiZWhhdmlvdXIpLgoKSW4gYWRkaXRp b24sIHRoZSBwYXRjaCBleHRlbmRzIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIFNUUkVBTV9BQk9S VAptZXNzYWdlIHNvIHRoYXQgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGNhbiBhbHNvIGJlIHNl bnQgd2hpY2ggY2FuIGJlCnVzZWQgdG8gdXBkYXRlIHRoZSByZXBsaWNhdGlvbiBvcmlnaW4gaW4g cGFyYWxsZWwgYXBwbHkgd29ya2VyIHdoZW4gdGhlCnN0cmVhbWluZyB0cmFuc2FjdGlvbiBpcyBh Ym9ydGVkLiBCZWNhdXNlIHRoaXMgbWVzc2FnZSBleHRlbnNpb24gaXMgbmVlZGVkCnRvIHN1cHBv cnQgcGFyYWxsZWwgc3RyZWFtaW5nLCBwYXJhbGxlbCBzdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRl ZCBmb3IKcHVibGljYXRpb25zIG9uIHNlcnZlcnMgPCBQRzE2LgoKTm90ZTogU2luY2UgdGhlIGZp ZWxkICdzdWJzdHJlYW0nIG9mIGNhdGFsb2cgJ3BnX3N1YnNjcmlwdGlvbicgaGFzIGJlZW4KZXhw YW5kZWQsIHdlIG5lZWQgYnVtcCBjYXRhbG9nIHZlcnNpb24uCgpBdXRob3I6IEhvdSBaaGlqaWUs IFdhbmcgd2VpLCBBbWl0IEthcGlsYSB3aXRoIGRlc2lnbiBpbnB1dHMgZnJvbSBTYXdhZGEgTWFz YWhpa28KUmV2aWV3ZWQtYnk6IFNhd2FkYSBNYXNhaGlrbywgUGV0ZXIgU21pdGgsIFNoaSB5dSwg RGlsaXAgS3VtYXIsIEt1cm9kYSBIYXlhdG8KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMv bS9DQUE0ZUsxK3d5TjZ6cGFIVWtDTG9yRVdOeDc1TUcweGhNd2NGaHZqcW0yS1VSWkVBR3dAbWFp bC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAg ICAgICAgfCAgIDExICstCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAg ICAgICAgfCAgIDI4ICstCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAg ICAgICAgfCAgIDIyICstCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAg ICAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAg ICAgICB8ICAgMjkgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21s ICAgICB8ICAgMjQgKy0KIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAgICAg ICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAg ICAgICB8ICAgMjQgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAg ICAgICB8ICAgNjcgKy0KIHNyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYyAgICAgICAgICAgICAgICAg ICAgICB8ICAgMTggKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAg ICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyAgICAgICAg ICAgIHwgICAgNSArLQogLi4uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAg ICAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSAg ICAgIHwgICAgMSArCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMgfCAxNjE5ICsrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jICAgICAgfCAgICA1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2xhdW5jaGVyLmMgICAgfCAgMjIwICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9tZXNvbi5idWlsZCAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL29yaWdpbi5jICAgICAgfCAgIDI2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Byb3RvLmMgICAgICAgfCAgIDM3ICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9y ZGVyYnVmZmVyLmMgICAgICAgfCAgICA1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3RhYmxlc3luYy5jICAgfCAgIDI1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jICAgICAgfCAxMzgwICsrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAgIDIyICstCiBzcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgICA0ICsKIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9sbWdyLmMgICAgICAgICAgICAgICB8ICAgNDYgKwogc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMgICAgICAgfCAgICA2ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9sb2NrZnVuY3MuYyAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAgMTIgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUu YyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIxICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oICAgICAgICAgfCAgIDIxICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmggICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxsYXVuY2hlci5oICAgICB8ICAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmggICAgICAgIHwgICAyOCArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oICAgICAgIHwgICAgOCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9v cmlnaW4uaCAgICAgICAgICAgICAgfCAgICAyICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9w Z291dHB1dC5oICAgICAgICAgICAgfCAgICAyICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9y ZW9yZGVyYnVmZmVyLmggICAgICAgfCAgICA0ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5oICAgICAgICAgfCAgICAyICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgMjI3ICsrLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdy LmggICAgICAgICAgICAgICAgICAgIHwgICAgNSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2su aCAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICstCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2Nz aWduYWwuaCAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZl bnQuaCAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9z dWJzY3JpcHRpb24ub3V0ICAgIHwgICA0NiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2Ny aXB0aW9uLnNxbCAgICAgICAgIHwgICAgNiArLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1 X3N0cmVhbS5wbCAgICAgICAgIHwgIDI3NCArKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx Nl9zdHJlYW1fc3VieGFjdC5wbCB8ICAxMzAgKy0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx N19zdHJlYW1fZGRsLnBsICAgICB8ICAgIDMgKwogLi4uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fi b3J0LnBsICAgICAgICAgICAgIHwgIDIyMCArKy0KIC4uLi90LzAxOV9zdHJlYW1fc3VieGFjdF9k ZGxfYWJvcnQucGwgICAgICAgICB8ICAgIDMgKwogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29w aGFzZV9jYXNjYWRlLnBsICAgIHwgICAgMiArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3Bo YXNlX3N0cmVhbS5wbCAgICAgfCAgNTIzICsrKy0tLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAgNyArCiA1NyBmaWxlcyBjaGFuZ2VkLCA0NDcwIGlu c2VydGlvbnMoKyksIDc1OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwoKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwKaW5kZXggOTMxNmI4MTFhYy4uYzFlNDA0ODA1NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc5MTMs MTEgKzc5MTMsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBj b3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8cm93PgogICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4g PHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAg ICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1pbmcgb2YgaW4t cHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBob3cgdG8gaGFu ZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgorICAgICAgIDxs aXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRy YW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBjaGFu Z2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sgYW5kIGFwcGx5 IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUKKyAgICAg ICBwdWJsaXNoZXIgYW5kIHJlY2VpdmVkIGJ5IHRoZSBzdWJzY3JpYmVyLAorICAgICAgIDxsaXRl cmFsPnA8L2xpdGVyYWw+ID0gYXBwbHkgY2hhbmdlcyBkaXJlY3RseSB1c2luZyBhIHBhcmFsbGVs IGFwcGx5CisgICAgICAgd29ya2VyIGlmIGF2YWlsYWJsZSAoc2FtZSBhcyAndCcgaWYgbm8gd29y a2VyIGlzIGF2YWlsYWJsZSkKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sCmluZGV4IDA1YjM4NjJkMDkuLmEzM2E5MzU3MGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ5Njgs NyArNDk2OCw4IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8 L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8bGlzdGl0ZW0+CiAg ICAgICAgPHBhcmE+CiAgICAgICAgIFNwZWNpZmllcyBtYXhpbXVtIG51bWJlciBvZiBsb2dpY2Fs IHJlcGxpY2F0aW9uIHdvcmtlcnMuIFRoaXMgaW5jbHVkZXMKLSAgICAgICAgYm90aCBhcHBseSB3 b3JrZXJzIGFuZCB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2Vycy4KKyAgICAgICAgbGVhZGVy IGFwcGx5IHdvcmtlcnMsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGFuZCB0YWJsZSBzeW5jaHJv bml6YXRpb24KKyAgICAgICAgd29ya2Vycy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+ CiAgICAgICAgIExvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUg cG9vbCBkZWZpbmVkIGJ5CkBAIC01MDA4LDYgKzUwMDksMzEgQEAgQU5ZIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNs YXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2 YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgtcGFyYWxsZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2Ny aXB0aW9uIiB4cmVmbGFiZWw9Im1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3Jp cHRpb24iPgorICAgICAgPHRlcm0+PHZhcm5hbWU+bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbjwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAg PGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tYXhfcGFyYWxsZWxfYXBwbHlf d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRl cjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxp c3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxl bCBhcHBseSB3b3JrZXJzIHBlciBzdWJzY3JpcHRpb24uIFRoaXMKKyAgICAgICAgcGFyYW1ldGVy IGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgcGFyYWxsZWxpc20gZm9yIHN0cmVhbWluZyBvZgorICAg ICAgICBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgd2l0aCBzdWJzY3JpcHRpb24gcGFyYW1ldGVy CisgICAgICAgIDxsaXRlcmFsPnN0cmVhbWluZyA9IHBhcmFsbGVsPC9saXRlcmFsPi4KKyAgICAg ICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKKyAgICAgICAgPHZhcm5hbWU+ bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJh PgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyLiBUaGlzIHBh cmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jl c3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAg ICBsaW5lLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlz dGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDdiOWJiMDBlNWEuLjU0ZjQ4YmU4N2YgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTUwMSw2ICsxNTAxLDE2IEBA IENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4g InBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBtaWdodCBub3QgdmlvbGF0ZSBhbnkgY29uc3Ry YWludC4gIFRoaXMgY2FuIGVhc2lseSBtYWtlIHRoZSBzdWJzY3JpYmVyCiAgICBpbmNvbnNpc3Rl bnQuCiAgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlz IDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKKyAgIGZhaWxl ZCB0cmFuc2FjdGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJl IG5lY2Vzc2FyeSB0bworICAgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5v bjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiBhbmQKKyAgIGNhdXNlIHRoZSBz YW1lIGNvbmZsaWN0cyBhZ2FpbiBzbyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5z YWN0aW9uIHdpbGwKKyAgIGJlIHdyaXR0ZW4gdG8gdGhlIHNlcnZlciBsb2cuIEZvciB0aGUgdXNh Z2Ugb2YgZmluaXNoIExTTiwgcGxlYXNlIHJlZmVyIHRvIDxsaW5rCisgICBsaW5rZW5kPSJzcWwt YWx0ZXJzdWJzY3JpcHRpb24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4KKyAgIFNL SVA8L2NvbW1hbmQ+PC9saW5rPi4KKyAgPC9wYXJhPgogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9 ImxvZ2ljYWwtcmVwbGljYXRpb24tcmVzdHJpY3Rpb25zIj4KQEAgLTE4MDksOCArMTgxOSw5IEBA IENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4g InBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAKICAgIDxwYXJhPgogICAgIDxsaW5rIGxpbmtlbmQ9 Imd1Yy1tYXgtbG9naWNhbC1yZXBsaWNhdGlvbi13b3JrZXJzIj48dmFybmFtZT5tYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1lPjwvbGluaz4KLSAgICBtdXN0IGJlIHNldCB0 byBhdCBsZWFzdCB0aGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMgKGZvciBhcHBseSB3b3JrZXJz KSwgcGx1cwotICAgIHNvbWUgcmVzZXJ2ZSBmb3IgdGhlIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3 b3JrZXJzLgorICAgIG11c3QgYmUgc2V0IHRvIGF0IGxlYXN0IHRoZSBudW1iZXIgb2Ygc3Vic2Ny aXB0aW9ucyAoZm9yIGxlYWRlciBhcHBseQorICAgIHdvcmtlcnMpLCBwbHVzIHNvbWUgcmVzZXJ2 ZSBmb3IgdGhlIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJzIGFuZAorICAgIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMuCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtMTgyNyw2ICsxODM4 LDEzIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBv cmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICAgIHN1YnNjcmlwdGlvbiBpbml0aWFs aXphdGlvbiBvciB3aGVuIG5ldyB0YWJsZXMgYXJlIGFkZGVkLgogICAgPC9wYXJhPgogCisgICA8 cGFyYT4KKyAgICA8bGluayBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLWFwcGx5LXdvcmtlcnMt cGVyLXN1YnNjcmlwdGlvbiI+PHZhcm5hbWU+bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbjwvdmFybmFtZT48L2xpbms+CisgICAgIGNvbnRyb2xzIHRoZSBhbW91bnQg b2YgcGFyYWxsZWxpc20gZm9yIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcworICAgICB0cmFuc2Fj dGlvbnMgd2l0aCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyCisgICAgIDxsaXRlcmFsPnN0cmVhbWlu ZyA9IHBhcmFsbGVsPC9saXRlcmFsPi4KKyAgIDwvcGFyYT4KKwogICAgPHBhcmE+CiAgICAgTG9n aWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFyZSBhbHNvIGFmZmVjdGVkIGJ5CiAgICAgPGxpbmsg bGlua2VuZD0iZ3VjLXdhbC1yZWNlaXZlci10aW1lb3V0Ij48dmFybmFtZT53YWxfcmVjZWl2ZXJf dGltZW91dDwvdmFybmFtZT48L2xpbms+LApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggNWJjYmEwZmRl Yy4uY2YyMjBjM2JjYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAor KysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC0xODU4LDYgKzE4NTgsMTEgQEAg cG9zdGdyZXMgICAyNzA5MyAgMC4wICAwLjAgIDMwMDk2ICAyNzUyID8gICAgICAgIFNzICAgMTE6 MzQgICAwOjAwIHBvc3RncmVzOiBzZXIKICAgICAgIDxlbnRyeT48bGl0ZXJhbD5hZHZpc29yeTwv bGl0ZXJhbD48L2VudHJ5PgogICAgICAgPGVudHJ5PldhaXRpbmcgdG8gYWNxdWlyZSBhbiBhZHZp c29yeSB1c2VyIGxvY2suPC9lbnRyeT4KICAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8 ZW50cnk+PGxpdGVyYWw+YXBwbHl0cmFuc2FjdGlvbjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg PGVudHJ5PldhaXRpbmcgdG8gYWNxdWlyZSBhIGxvY2sgb24gYSByZW1vdGUgdHJhbnNhY3Rpb24g YmVpbmcgYXBwbGllZAorICAgICAgYnkgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIu PC9lbnRyeT4KKyAgICAgPC9yb3c+CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+ ZXh0ZW5kPC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+V2FpdGluZyB0byBleHRlbmQg YSByZWxhdGlvbi48L2VudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNn bWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCAwMzMxMmUwN2UyLi40MzllZjY3 NWYzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtMzEwMyw3ICszMTAzLDcgQEAgcHNxbCAiZGJuYW1lPXBv c3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAg PGxpc3RpdGVtPgogICAgICAgPHBhcmE+CiAgICAgICAgUHJvdG9jb2wgdmVyc2lvbi4gQ3VycmVu dGx5IHZlcnNpb25zIDxsaXRlcmFsPjE8L2xpdGVyYWw+LCA8bGl0ZXJhbD4yPC9saXRlcmFsPiwK LSAgICAgICBhbmQgPGxpdGVyYWw+MzwvbGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4KKyAgICAgICA8 bGl0ZXJhbD4zPC9saXRlcmFsPiwgYW5kIDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGFyZSBzdXBwb3J0 ZWQuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBWZXJzaW9uIDxsaXRlcmFs PjI8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNApAQCAt MzExMyw2ICszMTEzLDExIEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRh YmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4zPC9s aXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTUKICAgICAgICBh bmQgYWJvdmUsIGFuZCBpdCBhbGxvd3Mgc3RyZWFtaW5nIG9mIHR3by1waGFzZSBjb21taXRzLgog ICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD40PC9s aXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTYKKyAgICAgICBh bmQgYWJvdmUsIGFuZCBpdCBhbGxvd3Mgc3RyZWFtcyBvZiBsYXJnZSBpbi1wcm9ncmVzcyB0cmFu c2FjdGlvbnMgdG8KKyAgICAgICBiZSBhcHBsaWVkIGluIHBhcmFsbGVsLgorICAgICAgPC9wYXJh PgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC02ODgzLDYgKzY4 ODgsMjggQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAi SURFTlRJRllfU1lTVEVNOyIKICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVy bT5JbnQ2NCAoWExvZ1JlY1B0cik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8 cGFyYT4KKyAgICAgICAgIFRoZSBMU04gb2YgdGhlIGFib3J0LiBUaGlzIGZpZWxkIGlzIGF2YWls YWJsZSBzaW5jZSBwcm90b2NvbCB2ZXJzaW9uCisgICAgICAgICA0LgorICAgICAgICA8L3BhcmE+ CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFy bGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChUaW1lc3RhbXBUeik8L3Rlcm0+CisgICAg ICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEFib3J0IHRpbWVzdGFtcCBv ZiB0aGUgdHJhbnNhY3Rpb24uIFRoZSB2YWx1ZSBpcyBpbiBudW1iZXIKKyAgICAgICAgIG9mIG1p Y3Jvc2Vjb25kcyBzaW5jZSBQb3N0Z3JlU1FMIGVwb2NoICgyMDAwLTAxLTAxKS4gVGhpcyBmaWVs ZCBpcworICAgICAgICAgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24gNC4KKyAgICAg ICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwog ICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IGY5YTE3NzYz ODAuLmYxNzNhMDkwMzcgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNj cmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5z Z21sCkBAIC0yMjgsMTMgKzIyOCwyOSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAg IDwvdmFybGlzdGVudHJ5PgogCiAgICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgPHRlcm0+ PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pPC90ZXJt PgorICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5lbnVt PC90eXBlPik8L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAg ICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIGVuYWJsZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jl c3MgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0aW9uLiAgQnkgZGVm YXVsdCwgYWxsIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRo ZSBwdWJsaXNoZXIgYW5kIG9ubHkgdGhlbiBzZW50IHRvIHRoZQotICAgICAgICAgIHN1YnNjcmli ZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgICBmb3IgdGhpcyBzdWJzY3JpcHRpb24uICBUaGUgZGVm YXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+LAorICAgICAgICAgIG1lYW5pbmcg YWxsIHRyYW5zYWN0aW9ucyBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBv bmx5CisgICAgICAgICAgdGhlbiBzZW50IHRvIHRoZSBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisg ICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHNldCB0byA8 bGl0ZXJhbD5vbjwvbGl0ZXJhbD4sIHRoZSBpbmNvbWluZyBjaGFuZ2VzIGFyZSB3cml0dGVuIHRv CisgICAgICAgICAgdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgb25seSBhZnRlciB0 aGUgdHJhbnNhY3Rpb24gaXMKKyAgICAgICAgICBjb21taXR0ZWQgb24gdGhlIHB1Ymxpc2hlciBh bmQgcmVjZWl2ZWQgYnkgdGhlIHN1YnNjcmliZXIuCisgICAgICAgICA8L3BhcmE+CisKKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIElmIHNldCB0byA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJh bD4sIGluY29taW5nIGNoYW5nZXMgYXJlIGRpcmVjdGx5CisgICAgICAgICAgYXBwbGllZCB2aWEg b25lIG9mIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBpZiBhdmFpbGFibGUuIElmIG5vCisg ICAgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGZyZWUgdG8gaGFuZGxlIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbnMgdGhlbgorICAgICAgICAgIHRoZSBjaGFuZ2VzIGFyZSB3cml0dGVuIHRv IHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbGllZCBhZnRlciB0aGUKKyAgICAgICAgICB0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIGluIGEKKyAg ICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSByZW1v dGUgdHJhbnNhY3Rpb24KKyAgICAgICAgICBtaWdodCBub3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNl cnZlciBsb2cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAg PC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNn bWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggMTQzYWU1YjdiYi4uODQy OGVlNzg2NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbApAQCAtMTM3OSw4ICsxMzc5LDkgQEAKICAg ICAgICA8bGl0ZXJhbD52aXJ0dWFseGlkPC9saXRlcmFsPiwKICAgICAgICA8bGl0ZXJhbD5zcGVj dG9rZW48L2xpdGVyYWw+LAogICAgICAgIDxsaXRlcmFsPm9iamVjdDwvbGl0ZXJhbD4sCi0gICAg ICAgPGxpdGVyYWw+dXNlcmxvY2s8L2xpdGVyYWw+LCBvcgotICAgICAgIDxsaXRlcmFsPmFkdmlz b3J5PC9saXRlcmFsPi4KKyAgICAgICA8bGl0ZXJhbD51c2VybG9jazwvbGl0ZXJhbD4sCisgICAg ICAgPGxpdGVyYWw+YWR2aXNvcnk8L2xpdGVyYWw+LCBvcgorICAgICAgIDxsaXRlcmFsPmFwcGx5 dHJhbnNhY3Rpb248L2xpdGVyYWw+LgogICAgICAgIChTZWUgYWxzbyA8eHJlZiBsaW5rZW5kPSJ3 YWl0LWV2ZW50LWxvY2stdGFibGUiLz4uKQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IDI0MjIxNTQyZTcuLmZjZDJjMTk4 YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTE3MTIsNiArMTcxMiw3IEBAIFJl Y29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJaW50CQkJbmNoaWxkcmVuOwog CVRyYW5zYWN0aW9uSWQgKmNoaWxkcmVuOwogCVRpbWVzdGFtcFR6IHhhY3RfdGltZTsKKwlib29s CQlyZXBsb3JpZ2luOwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZlbid0IGJlZW4gYXNzaWduZWQgYW4g WElELCBub2JvZHkgd2lsbCBjYXJlIHdoZXRoZXIgd2UgYWJvcnRlZApAQCAtMTc0Miw2ICsxNzQz LDEzIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJCWVsb2coUEFO SUMsICJjYW5ub3QgYWJvcnQgdHJhbnNhY3Rpb24gJXUsIGl0IHdhcyBhbHJlYWR5IGNvbW1pdHRl ZCIsCiAJCQkgeGlkKTsKIAorCS8qCisJICogQXJlIHdlIHVzaW5nIHRoZSByZXBsaWNhdGlvbiBv cmlnaW5zIGZlYXR1cmU/ICBPciwgaW4gb3RoZXIgd29yZHMsIGFyZQorCSAqIHdlIHJlcGxheWlu ZyByZW1vdGUgYWN0aW9ucz8KKwkgKi8KKwlyZXBsb3JpZ2luID0gKHJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCisJCQkJICByZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOworCiAJLyogRmV0Y2ggdGhlIGRhdGEgd2Ug bmVlZCBmb3IgdGhlIGFib3J0IHJlY29yZCAqLwogCW5yZWxzID0gc21nckdldFBlbmRpbmdEZWxl dGVzKGZhbHNlLCAmcmVscyk7CiAJbmNoaWxkcmVuID0geGFjdEdldENvbW1pdHRlZENoaWxkcmVu KCZjaGlsZHJlbik7CkBAIC0xNzY1LDYgKzE3NzMsMTEgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9y dChib29sIGlzU3ViWGFjdCkKIAkJCQkJICAgTXlYYWN0RmxhZ3MsIEludmFsaWRUcmFuc2FjdGlv bklkLAogCQkJCQkgICBOVUxMKTsKIAorCWlmIChyZXBsb3JpZ2luKQorCQkvKiBNb3ZlIExTTnMg Zm9yd2FyZCBmb3IgdGhpcyByZXBsaWNhdGlvbiBvcmlnaW4gKi8KKwkJcmVwbG9yaWdpbl9zZXNz aW9uX2FkdmFuY2UocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24sCisJCQkJCQkJCSAgIFhh Y3RMYXN0UmVjRW5kKTsKKwogCS8qCiAJICogUmVwb3J0IHRoZSBsYXRlc3QgYXN5bmMgYWJvcnQg TFNOLCBzbyB0aGF0IHRoZSBXQUwgd3JpdGVyIGtub3dzIHRvCiAJICogZmx1c2ggdGhpcyBhYm9y dC4gVGhlcmUncyBub3RoaW5nIHRvIGJlIGdhaW5lZCBieSBkZWxheWluZyB0aGlzLCBzaW5jZQpA QCAtNTg2NywxMSArNTg4MCwxMCBAQCBYYWN0TG9nQWJvcnRSZWNvcmQoVGltZXN0YW1wVHogYWJv cnRfdGltZSwKIAl9CiAKIAkvKgotCSAqIER1bXAgdHJhbnNhY3Rpb24gb3JpZ2luIGluZm9ybWF0 aW9uIG9ubHkgZm9yIGFib3J0IHByZXBhcmVkLiBXZSBuZWVkCi0JICogdGhpcyBkdXJpbmcgcmVj b3ZlcnkgdG8gdXBkYXRlIHRoZSByZXBsaWNhdGlvbiBvcmlnaW4gcHJvZ3Jlc3MuCisJICogRHVt cCB0cmFuc2FjdGlvbiBvcmlnaW4gaW5mb3JtYXRpb24uIFdlIG5lZWQgdGhpcyBkdXJpbmcgcmVj b3ZlcnkgdG8KKwkgKiB1cGRhdGUgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBwcm9ncmVzcy4KIAkg Ki8KLQlpZiAoKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklk KSAmJgotCQlUcmFuc2FjdGlvbklkSXNWYWxpZCh0d29waGFzZV94aWQpKQorCWlmIChyZXBsb3Jp Z2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCkKIAl7CiAJCXhsX3hpbmZv LnhpbmZvIHw9IFhBQ1RfWElORk9fSEFTX09SSUdJTjsKIApAQCAtNTkyOCw4ICs1OTQwLDggQEAg WGFjdExvZ0Fib3J0UmVjb3JkKFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsCiAJaWYgKHhsX3hpbmZv LnhpbmZvICYgWEFDVF9YSU5GT19IQVNfT1JJR0lOKQogCQlYTG9nUmVnaXN0ZXJEYXRhKChjaGFy ICopICgmeGxfb3JpZ2luKSwgc2l6ZW9mKHhsX3hhY3Rfb3JpZ2luKSk7CiAKLQlpZiAoVHJhbnNh Y3Rpb25JZElzVmFsaWQodHdvcGhhc2VfeGlkKSkKLQkJWExvZ1NldFJlY29yZEZsYWdzKFhMT0df SU5DTFVERV9PUklHSU4pOworCS8qIEluY2x1ZGUgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiAqLwor CVhMb2dTZXRSZWNvcmRGbGFncyhYTE9HX0lOQ0xVREVfT1JJR0lOKTsKIAogCXJldHVybiBYTG9n SW5zZXJ0KFJNX1hBQ1RfSUQsIGluZm8pOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jCmluZGV4IGI5YzVkZjc5NmYuLmJjMWIxOTg1OGMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTg0LDcgKzg0LDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg U3ViT3B0cwogCWJvb2wJCWNvcHlfZGF0YTsKIAlib29sCQlyZWZyZXNoOwogCWJvb2wJCWJpbmFy eTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFtaW5nOwogCWJvb2wJCXR3b3BoYXNl OwogCWJvb2wJCWRpc2FibGVvbmVycjsKIAljaGFyCSAgICpvcmlnaW47CkBAIC0xMzgsNyArMTM4 LDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0 ICpzdG10X29wdGlvbnMsCiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfQklOQVJZ KSkKIAkJb3B0cy0+YmluYXJ5ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBT VUJPUFRfU1RSRUFNSU5HKSkKLQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJCW9wdHMtPnN0 cmVhbWluZyA9IExPR0lDQUxSRVBfU1RSRUFNX09GRjsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29w dHMsIFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29waGFzZSA9IGZhbHNlOwog CWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVfT05fRVJSKSkKQEAgLTI0 MSw3ICsyNDEsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3Rh dGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZl bCwgcHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX1NUUkVBTUlO RzsKLQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJb3B0cy0+ c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAo c3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNjI5LDcg KzYyOSw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1Ym93 bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJz Y3JpcHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZW5hYmxlZCk7CiAJ dmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFdID0gQm9vbEdldERhdHVt KG9wdHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0g MV0gPSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CiAJ dmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAxXSA9CiAJCUNo YXJHZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RB VEVfUEVORElORyA6CkBAIC0xMDk4LDcgKzEwOTgsNyBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlpZiAoSXNT ZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCiAJCQkJewogCQkJCQl2 YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPQotCQkJCQkJQm9vbEdl dERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLnN0cmVhbWlu Zyk7CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0g dHJ1ZTsKIAkJCQl9CiAKQEAgLTIxMjIsMyArMjEyMiw2MCBAQCBtZXJnZV9wdWJsaWNhdGlvbnMo TGlzdCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9vbCBhZGRwdWIsIGNvbnN0IGNo YXIgKgogCiAJcmV0dXJuIG9sZHB1Ymxpc3Q7CiB9CisKKy8qCisgKiBFeHRyYWN0IHRoZSBzdHJl YW1pbmcgbW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMgaXMgbGlrZQorICogZGVmR2V0 Qm9vbGVhbigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwgdmFsdWUgb2YgInBhcmFsbGVs Ii4KKyAqLworY2hhcgorZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpCit7CisJLyoK KwkgKiBJZiBubyBwYXJhbWV0ZXIgdmFsdWUgZ2l2ZW4sIGFzc3VtZSAidHJ1ZSIgaXMgbWVhbnQu CisJICovCisJaWYgKCFkZWYtPmFyZykKKwkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09OOwor CisJLyoKKwkgKiBBbGxvdyAwLCAxLCAiZmFsc2UiLCAidHJ1ZSIsICJvZmYiLCAib24iIG9yICJw YXJhbGxlbCIuCisJICovCisJc3dpdGNoIChub2RlVGFnKGRlZi0+YXJnKSkKKwl7CisJCWNhc2Ug VF9JbnRlZ2VyOgorCQkJc3dpdGNoIChpbnRWYWwoZGVmLT5hcmcpKQorCQkJeworCQkJCWNhc2Ug MDoKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsKKwkJCQljYXNlIDE6CisJCQkJ CXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBvdGhl cndpc2UsIGVycm9yIG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOwor CQlkZWZhdWx0OgorCQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVmKTsK KworCQkJCS8qCisJCQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hvdWxk IG1hdGNoIHVwIHdpdGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0cmlu ZyBwcm9kdWN0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJmYWxz ZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJCQkJ cmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFs LCAidHJ1ZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib24iKSA9PSAwKQor CQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT047CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAo c3ZhbCwgInBhcmFsbGVsIikgPT0gMCkKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX1BB UkFMTEVMOworCQkJfQorCQkJYnJlYWs7CisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHJlcXVpcmVzIGEgQm9v bGVhbiB2YWx1ZSBvciBcInBhcmFsbGVsXCIiLAorCQkJCQlkZWYtPmRlZm5hbWUpKSk7CisJcmV0 dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jIGIvc3JjL2JhY2tlbmQvbGlicHEv cHFtcS5jCmluZGV4IDc2NmVjYTk2NTcuLjM5ZTc3ZWY5NDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAgLTEzLDEx ICsxMywxMyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9w YXJhbGxlbC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFm b3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtl ci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgogCkBAIC0xNjIsOSArMTY0LDE5IEBAIG1xX3B1dG1lc3NhZ2UoY2hhciBtc2d0eXBlLCBj b25zdCBjaGFyICpzLCBzaXplX3QgbGVuKQogCQlyZXN1bHQgPSBzaG1fbXFfc2VuZHYocHFfbXFf aGFuZGxlLCBpb3YsIDIsIHRydWUsIHRydWUpOwogCiAJCWlmIChwcV9tcV9wYXJhbGxlbF9sZWFk ZXJfcGlkICE9IDApCi0JCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlk LAotCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAotCQkJCQkJICAgcHFfbXFfcGFy YWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQl7CisJCQlpZiAoSXNMb2dpY2FsUGFyYWxsZWxB cHBseVdvcmtlcigpKQorCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9w aWQsCisJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAorCQkJCQkJCSAg IHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlB c3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKKwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJh bGxlbF9sZWFkZXJfcGlkLAorCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwKKwkJ CQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCQl9CisJCX0KIAog CQlpZiAocmVzdWx0ICE9IFNITV9NUV9XT1VMRF9CTE9DSykKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9iZ3dvcmtlci5jCmluZGV4IDZmOGUzNDQ1MDkuLmU3YTRhNzEzNmEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTEyOCw2ICsxMjgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 CiAJfSwKIAl7CiAJCSJBcHBseVdvcmtlck1haW4iLCBBcHBseVdvcmtlck1haW4KKwl9LAorCXsK KwkJIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIiwgUGFyYWxsZWxBcHBseVdvcmtlck1haW4KIAl9 CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYwppbmRleCAyZWU4OTZmYzgwLi42ZDRi ZDc2YmY4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCisr KyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKQEAgLTk4LDggKzk4LDkgQEAg U2lnbmFsSGFuZGxlckZvckNyYXNoRXhpdChTSUdOQUxfQVJHUykKICAqIHNodXQgZG93biBhbmQg ZXhpdC4KICAqCiAgKiBUeXBpY2FsbHksIHRoaXMgaGFuZGxlciB3b3VsZCBiZSB1c2VkIGZvciBT SUdURVJNLCBidXQgc29tZSBwcm9jZXNzZXMgdXNlCi0gKiBvdGhlciBzaWduYWxzLiBJbiBwYXJ0 aWN1bGFyLCB0aGUgY2hlY2twb2ludGVyIGV4aXRzIG9uIFNJR1VTUjIsIGFuZCB0aGUKLSAqIFdB TCB3cml0ZXIgZXhpdHMgb24gZWl0aGVyIFNJR0lOVCBvciBTSUdURVJNLgorICogb3RoZXIgc2ln bmFscy4gSW4gcGFydGljdWxhciwgdGhlIGNoZWNrcG9pbnRlciBleGl0cyBvbiBTSUdVU1IyLCBh bmQgdGhlIFdBTAorICogd3JpdGVyIGFuZCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxl bCBhcHBseSB3b3JrZXIgZXhpdHMgb24gZWl0aGVyCisgKiBTSUdJTlQgb3IgU0lHVEVSTS4KICAq CiAgKiBTaHV0ZG93blJlcXVlc3RQZW5kaW5nIHNob3VsZCBiZSBjaGVja2VkIGF0IGEgY29udmVu aWVudCBwbGFjZSB3aXRoaW4gdGhlCiAgKiBtYWluIGxvb3AsIG9yIGVsc2UgdGhlIG1haW4gbG9v cCBzaG91bGQgY2FsbCBIYW5kbGVNYWluTG9vcEludGVycnVwdHMuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZl ci5jCmluZGV4IDIxOWNkNzNiN2YuLmM0MGM2MjIwZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5j CkBAIC00NDMsOSArNDQzLDkgQEAgbGlicHFyY3Zfc3RhcnRzdHJlYW1pbmcoV2FsUmVjZWl2ZXJD b25uICpjb25uLAogCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJwcm90b192ZXJzaW9uICcldSci LAogCQkJCQkJIG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lvbik7CiAKLQkJaWYg KG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nICYmCi0JCQlQUXNlcnZlclZlcnNpb24o Y29ubi0+c3RyZWFtQ29ubikgPj0gMTQwMDAwKQotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygm Y21kLCAiLCBzdHJlYW1pbmcgJ29uJyIpOworCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC5z dHJlYW1pbmdfc3RyKQorCQkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiLCBzdHJlYW1pbmcgJyVz JyIsCisJCQkJCQkJIG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0cik7CiAKIAkJ aWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwudHdvcGhhc2UgJiYKIAkJCVBRc2VydmVyVmVyc2lv bihjb25uLT5zdHJlYW1Db25uKSA+PSAxNTAwMDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9NYWtlZmlsZQppbmRleCBjNGUyZmRlYjcxLi4yZGMyNWUzN2JiIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKQEAgLTE1LDYgKzE1LDcgQEAgaW5jbHVkZSAk KHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0g LUkkKHNyY2RpcikgJChDUFBGTEFHUykKIAogT0JKUyA9IFwKKwlhcHBseXBhcmFsbGVsd29ya2Vy Lm8gXAogCWRlY29kZS5vIFwKIAlsYXVuY2hlci5vIFwKIAlsb2dpY2FsLm8gXApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iMGYzYmZkMWQzCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMKQEAgLTAsMCArMSwxNjE5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGFwcGx5 cGFyYWxsZWx3b3JrZXIuYworICoJICAgU3VwcG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFj dCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjMsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04K KyAqCSAgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGNvZGUgdG8gbGF1bmNoLCBzZXQgdXAs IGFuZCB0ZWFyZG93biBhIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIgd2hpY2ggcmVjZWl2ZXMg dGhlIGNoYW5nZXMgZnJvbSB0aGUgbGVhZGVyIHdvcmtlciBhbmQgaW52b2tlcyByb3V0aW5lcwor ICogdG8gYXBwbHkgdGhvc2Ugb24gdGhlIHN1YnNjcmliZXIgZGF0YWJhc2UuIEFkZGl0aW9uYWxs eSwgdGhpcyBmaWxlIGNvbnRhaW5zCisgKiByb3V0aW5lcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBz dXBwb3J0IHNldHRpbmcgdXAsIHVzaW5nLCBhbmQgdGVhcmluZyBkb3duIGEKKyAqIFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvIHdoaWNoIGlzIHJlcXVpcmVkIHNvIHRoZSBsZWFkZXIgd29ya2VyIGFu ZCBwYXJhbGxlbAorICogYXBwbHkgd29ya2VycyBjYW4gY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90 aGVyLgorICoKKyAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBhc3NpZ25lZCAoaWYg YXZhaWxhYmxlKSBhcyBzb29uIGFzIHhhY3QncworICogZmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVk IGZvciBzdWJzY3JpcHRpb25zIHRoYXQgaGF2ZSBzZXQgdGhlaXIgJ3N0cmVhbWluZycKKyAqIG9w dGlvbiBhcyBwYXJhbGxlbC4gVGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBzZW5kIGNoYW5n ZXMgdG8gdGhpcyBuZXcKKyAqIHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0aGlz IHdvcmtlciBhc3NpZ25lZCB0aWxsIHRoZSB0cmFuc2FjdGlvbgorICogY29tbWl0IGlzIHJlY2Vp dmVkIGFuZCBhbHNvIHdhaXQgZm9yIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0IGNvbW1pdC4gVGhp cworICogcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWQgZmlsZSBJL08gaW4gbW9z dCBjYXNlcywgYWx0aG91Z2ggd2UKKyAqIHN0aWxsIG5lZWQgdG8gc3BpbGwgdG8gYSBmaWxlIGlm IHRoZXJlIGlzIG5vIHdvcmtlciBhdmFpbGFibGUuIFNlZSBjb21tZW50cworICogYXRvcCBsb2dp Y2FsL3dvcmtlciB0byBrbm93IG1vcmUgYWJvdXQgc3RyZWFtZWQgeGFjdHMgd2hvc2UgY2hhbmdl cyBhcmUKKyAqIHNwaWxsZWQgdG8gZGlzay4gSXQgaXMgaW1wb3J0YW50IHRvIG1haW50YWluIGNv bW1pdCBvcmRlciB0byBhdm9pZCBmYWlsdXJlcworICogZHVlIHRvOiAoYSkgdHJhbnNhY3Rpb24g ZGVwZW5kZW5jaWVzIC0gc2F5IGlmIHdlIGluc2VydCBhIHJvdyBpbiB0aGUgZmlyc3QKKyAqIHRy YW5zYWN0aW9uIGFuZCB1cGRhdGUgaXQgaW4gdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBvbiBwdWJs aXNoZXIgdGhlbgorICogYWxsb3dpbmcgdGhlIHN1YnNjcmliZXIgdG8gYXBwbHkgYm90aCBpbiBw YXJhbGxlbCBjYW4gbGVhZCB0byBmYWlsdXJlIGluIHRoZQorICogdXBkYXRlOyAoYikgZGVhZGxv Y2tzIC0gYWxsb3dpbmcgdHJhbnNhY3Rpb25zIHRoYXQgdXBkYXRlIHRoZSBzYW1lIHNldCBvZgor ICogcm93cy90YWJsZXMgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIHRvIGJlIGFwcGxpZWQgaW4gcGFy YWxsZWwgY2FuIGxlYWQgdG8KKyAqIGRlYWRsb2Nrcy4KKyAqCisgKiBBIHdvcmtlciBwb29sIGlz IHVzZWQgdG8gYXZvaWQgcmVzdGFydGluZyB3b3JrZXJzIGZvciBlYWNoIHN0cmVhbWluZworICog dHJhbnNhY3Rpb24uIFdlIG1haW50YWluIGVhY2ggd29ya2VyJ3MgaW5mb3JtYXRpb24gKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvKQorICogaW4gdGhlIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLiBB ZnRlciBzdWNjZXNzZnVsbHkgbGF1bmNoaW5nIGEgbmV3IHdvcmtlciwKKyAqIGl0cyBpbmZvcm1h dGlvbiBpcyBhZGRlZCB0byB0aGUgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wuIE9uY2UgdGhlIHdv cmtlcgorICogZmluaXNoZXMgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLCBpdCBpcyBtYXJrZWQg YXMgYXZhaWxhYmxlIGZvciByZS11c2UuCisgKiBOb3csIGJlZm9yZSBzdGFydGluZyBhIG5ldyB3 b3JrZXIgdG8gYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgd2UKKyAqIGNoZWNrIHRo ZSBsaXN0IGZvciBhbnkgYXZhaWxhYmxlIHdvcmtlci4gTm90ZSB0aGF0IHdlIHJldGFpbiBhIG1h eGltdW0gb2YKKyAqIGhhbGYgdGhlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJz Y3JpcHRpb24gd29ya2VycyBpbiB0aGUgcG9vbCBhbmQKKyAqIGFmdGVyIHRoYXQsIHdlIHNpbXBs eSBleGl0IHRoZSB3b3JrZXIgYWZ0ZXIgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLgorICoKKyAq IFhYWCBUaGlzIHdvcmtlciBwb29sIHRocmVzaG9sZCBpcyBhcmJpdHJhcnkgYW5kIHdlIGNhbiBw cm92aWRlIGEgR1VDCisgKiB2YXJpYWJsZSBmb3IgdGhpcyBpbiB0aGUgZnV0dXJlIGlmIHJlcXVp cmVkLgorICoKKyAqIFRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgY3JlYXRlIGEgc2VwYXJh dGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQKKyAqIHdoZW4gZWFjaCBwYXJhbGxlbCBh cHBseSB3b3JrZXIgc3RhcnRzLiBUaGUgcmVhc29uIGZvciB0aGlzIGRlc2lnbiBpcyB0aGF0Cisg KiB3ZSBjYW5ub3QgcHJlZGljdCBob3cgbWFueSB3b3JrZXJzIHdpbGwgYmUgbmVlZGVkLiBJdCBt YXkgYmUgcG9zc2libGUgdG8KKyAqIGFsbG9jYXRlIGVub3VnaCBzaGFyZWQgbWVtb3J5IGluIG9u ZSBzZWdtZW50IGJhc2VkIG9uIHRoZSBtYXhpbXVtIG51bWJlciBvZgorICogcGFyYWxsZWwgYXBw bHkgd29ya2VycyAobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiks IGJ1dAorICogdGhpcyB3b3VsZCB3YXN0ZSBtZW1vcnkgaWYgbm8gcHJvY2VzcyBpcyBhY3R1YWxs eSBzdGFydGVkLgorICoKKyAqIFRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBjb250 YWluczogKGEpIGEgc2htX21xIHRoYXQgaXMgdXNlZCB0bworICogc2VuZCBjaGFuZ2VzIGluIHRo ZSB0cmFuc2FjdGlvbiBmcm9tIGxlYWRlciBhcHBseSB3b3JrZXIgdG8gcGFyYWxsZWwgYXBwbHkK KyAqIHdvcmtlcjsgKGIpIGFub3RoZXIgc2htX21xIHRoYXQgaXMgdXNlZCB0byBzZW5kIGVycm9y cyAoYW5kIG90aGVyIG1lc3NhZ2VzCisgKiByZXBvcnRlZCB2aWEgZWxvZy9lcmVwb3J0KSBmcm9t IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gbGVhZGVyIGFwcGx5CisgKiB3b3JrZXI7IChj KSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gYmUgc2hhcmVkIGFtb25nIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMKKyAqIGFuZCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciAoaS5lLiBtZW1iZXJzIG9m IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpLgorICoKKyAqIExvY2tpbmcgQ29uc2lkZXJhdGlv bnMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFNpbmNlIHRoZSBkYXRhYmFzZSBzdHJ1 Y3R1cmUgKHNjaGVtYSBvZiBzdWJzY3JpcHRpb24gdGFibGVzLCBjb25zdHJhaW50cywKKyAqIGV0 Yy4pIG9mIHRoZSBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgY291bGQgYmUgZGlmZmVyZW50LCBh cHBseWluZworICogdHJhbnNhY3Rpb25zIGluIHBhcmFsbGVsIG1vZGUgb24gdGhlIHN1YnNjcmli ZXIgc2lkZSBjYW4gY2F1c2Ugc29tZQorICogZGVhZGxvY2tzIHRoYXQgZG8gbm90IG9jY3VyIG9u IHRoZSBwdWJsaXNoZXIgc2lkZS4gVGhpcyBjYW4gaGFwcGVuIGV2ZW4KKyAqIHdpdGhvdXQgcGFy YWxsZWwgbW9kZSB3aGVuIHRoZXJlIGFyZSBjb25jdXJyZW50IG9wZXJhdGlvbnMgb24gdGhlCisg KiBzdWJzY3JpYmVyLiBJbiBvcmRlciB0byBkZXRlY3QgdGhlIGRlYWRsb2NrcyBhbW9uZyBsZWFk ZXIgKExBKSBhbmQgcGFyYWxsZWwKKyAqIGFwcGx5IChQQSkgd29ya2Vycywgd2UgdXNlZCBsbWdy IGxvY2tzIHdoZW4gdGhlIFBBIHdhaXRzIGZvciB0aGUgbmV4dCBzdHJlYW0KKyAqIChzZXQgb2Yg Y2hhbmdlcykgYW5kIExBIHdhaXRzIGZvciBQQSB0byBmaW5pc2ggdGhlIHRyYW5zYWN0aW9uLiBB biBhbHRlcm5hdGl2ZQorICogYXBwcm9hY2ggY291bGQgYmUgdG8gbm90IGFsbG93IHBhcmFsbGVs aXNtIHdoZW4gdGhlIHNjaGVtYSBvZiB0YWJsZXMgaXMKKyAqIGRpZmZlcmVudCBiZXR3ZWVuIHRo ZSBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgYnV0IHRoYXQgd291bGQgYmUgdG9vCisgKiByZXN0 cmljdGl2ZSBhbmQgd291bGQgcmVxdWlyZSB0aGUgcHVibGlzaGVyIHRvIHNlbmQgbXVjaCBtb3Jl IGluZm9ybWF0aW9uCisgKiB0aGFuIGl0IGlzIGN1cnJlbnRseSBzZW5kaW5nLgorICoKKyAqIENv bnNpZGVyIGEgY2FzZSB3aGVyZSB0aGUgc3Vic2NyaWJlZCB0YWJsZSBkb2VzIG5vdCBoYXZlIGEg dW5pcXVlIGtleSBvbiB0aGUKKyAqIHB1Ymxpc2hlciBhbmQgaGFzIGEgdW5pcXVlIGtleSBvbiB0 aGUgc3Vic2NyaWJlci4gVGhlIGRlYWRsb2NrIGNhbiBoYXBwZW4gaW4KKyAqIHRoZSBmb2xsb3dp bmcgd2F5czoKKyAqCisgKiAxKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIGFuZCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENvbnNpZGVyIHRoYXQgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciAoUEEpIGlzIGV4ZWN1dGluZyBUWC0xIGFuZCB0aGUKKyAq IGxlYWRlciBhcHBseSB3b3JrZXIgKExBKSBpcyBleGVjdXRpbmcgVFgtMiBjb25jdXJyZW50bHkg b24gdGhlIHN1YnNjcmliZXIuCisgKiBOb3csIExBIGlzIHdhaXRpbmcgZm9yIFBBIGJlY2F1c2Ug b2YgdGhlIHVuaXF1ZSBrZXkgY29uc3RyYWludCBvZiB0aGUKKyAqIHN1YnNjcmliZWQgdGFibGUg d2hpbGUgUEEgaXMgd2FpdGluZyBmb3IgTEEgdG8gc2VuZCB0aGUgbmV4dCBzdHJlYW0gb2YKKyAq IGNoYW5nZXMgb3IgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQgbWVzc2FnZS4KKyAqCisgKiBJ biBvcmRlciBmb3IgbG1nciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBMQSBhY3F1aXJlIGEgc2Vz c2lvbiBsb2NrIG9uIHRoZQorICogcmVtb3RlIHRyYW5zYWN0aW9uIChieSBwYV9sb2NrX3N0cmVh bSgpKSBhbmQgaGF2ZSBQQSB3YWl0IG9uIHRoZSBsb2NrIGJlZm9yZQorICogdHJ5aW5nIHRvIHJl Y2VpdmUgdGhlIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMuIFNwZWNpZmljYWxseSwgTEEgd2lsbCBh Y3F1aXJlCisgKiB0aGUgbG9jayBpbiBBY2Nlc3NFeGNsdXNpdmUgbW9kZSBiZWZvcmUgc2VuZGlu ZyB0aGUgU1RSRUFNX1NUT1AgYW5kIHdpbGwKKyAqIHJlbGVhc2UgaXQgaWYgYWxyZWFkeSBhY3F1 aXJlZCBhZnRlciBzZW5kaW5nIHRoZSBTVFJFQU1fU1RBUlQsIFNUUkVBTV9BQk9SVAorICogKGZv ciB0b3BsZXZlbCB0cmFuc2FjdGlvbiksIFNUUkVBTV9QUkVQQVJFLCBhbmQgU1RSRUFNX0NPTU1J VC4gVGhlIFBBIHdpbGwKKyAqIGFjcXVpcmUgdGhlIGxvY2sgaW4gQWNjZXNzU2hhcmUgbW9kZSBh ZnRlciBwcm9jZXNzaW5nIFNUUkVBTV9TVE9QIGFuZAorICogU1RSRUFNX0FCT1JUIChmb3Igc3Vi dHJhbnNhY3Rpb24pIGFuZCB0aGVuIHJlbGVhc2UgdGhlIGxvY2sgaW1tZWRpYXRlbHkKKyAqIGFm dGVyIGFjcXVpcmluZyBpdC4KKyAqCisgKiBUaGUgbG9jayBncmFwaCBmb3IgdGhlIGFib3ZlIGV4 YW1wbGUgd2lsbCBsb29rIGFzIGZvbGxvd3M6CisgKiBMQSAod2FpdGluZyB0byBhY3F1aXJlIHRo ZSBsb2NrIG9uIHRoZSB1bmlxdWUgaW5kZXgpIC0+IFBBICh3YWl0aW5nIHRvCisgKiBhY3F1aXJl IHRoZSBzdHJlYW0gbG9jaykgLT4gTEEKKyAqCisgKiBUaGlzIHdheSwgd2hlbiBQQSBpcyB3YWl0 aW5nIGZvciBMQSBmb3IgdGhlIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMsIHdlIGNhbgorICogaGF2 ZSBhIHdhaXQtZWRnZSBmcm9tIFBBIHRvIExBIGluIGxtZ3IsIHdoaWNoIHdpbGwgbWFrZSB1cyBk ZXRlY3QgdGhlCisgKiBkZWFkbG9jayBiZXR3ZWVuIExBIGFuZCBQQS4KKyAqCisgKiAyKSBEZWFk bG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzCisgKgorICogVGhpcyBzY2VuYXJpbyBpcyBzaW1pbGFyIHRvIHRoZSBmaXJzdCBjYXNl IGJ1dCBUWC0xIGFuZCBUWC0yIGFyZSBleGVjdXRlZCBieQorICogdHdvIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMgKFBBLTEgYW5kIFBBLTIgcmVzcGVjdGl2ZWx5KS4gSW4gdGhpcyBzY2VuYXJpbywK KyAqIFBBLTIgaXMgd2FpdGluZyBmb3IgUEEtMSB0byBjb21wbGV0ZSBpdHMgdHJhbnNhY3Rpb24g d2hpbGUgUEEtMSBpcyB3YWl0aW5nCisgKiBmb3Igc3Vic2VxdWVudCBpbnB1dCBmcm9tIExBLiBB bHNvLCBMQSBpcyB3YWl0aW5nIGZvciBQQS0yIHRvIGNvbXBsZXRlIGl0cworICogdHJhbnNhY3Rp b24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbW1pdCBvcmRlci4gVGhlcmUgaXMgYSBkZWFk bG9jayBhbW9uZworICogdGhlIHRocmVlIHByb2Nlc3Nlcy4KKyAqCisgKiBJbiBvcmRlciBmb3Ig bG1nciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBQQSBhY3F1aXJlIGEgc2Vzc2lvbiBsb2NrICh0 aGlzIGlzCisgKiBhIGRpZmZlcmVudCBsb2NrIHRoYW4gcmVmZXJyZWQgaW4gdGhlIHByZXZpb3Vz IGNhc2UsIHNlZQorICogcGFfbG9ja190cmFuc2FjdGlvbigpKSBvbiB0aGUgdHJhbnNhY3Rpb24g YmVpbmcgYXBwbGllZCBhbmQgaGF2ZSBMQSB3YWl0IG9uCisgKiB0aGUgbG9jayBiZWZvcmUgcHJv Y2VlZGluZyBpbiB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzLiBTcGVjaWZpY2FsbHks CisgKiBQQSB3aWxsIGFjcXVpcmUgdGhpcyBsb2NrIGluIEFjY2Vzc0V4Y2x1c2l2ZSBtb2RlIGJl Zm9yZSBleGVjdXRpbmcgdGhlIGZpcnN0CisgKiBtZXNzYWdlIG9mIHRoZSB0cmFuc2FjdGlvbiBh bmQgcmVsZWFzZSBpdCBhdCB0aGUgeGFjdCBlbmQuIExBIHdpbGwgYWNxdWlyZQorICogdGhpcyBs b2NrIGluIEFjY2Vzc1NoYXJlIG1vZGUgYXQgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzCisg KiAoU1RSRUFNX0NPTU1JVCBhbmQgU1RSRUFNX1BSRVBBUkUpIGFuZCByZWxlYXNlIGl0IGltbWVk aWF0ZWx5LgorICoKKyAqIFRoZSBsb2NrIGdyYXBoIGZvciB0aGUgYWJvdmUgZXhhbXBsZSB3aWxs IGxvb2sgYXMgZm9sbG93czoKKyAqIExBICh3YWl0aW5nIHRvIGFjcXVpcmUgdGhlIHRyYW5zYWN0 aW9uIGxvY2spIC0+IFBBLTIgKHdhaXRpbmcgdG8gYWNxdWlyZSB0aGUKKyAqIGxvY2sgZHVlIHRv IHVuaXF1ZSBpbmRleCBjb25zdHJhaW50KSAtPiBQQS0xICh3YWl0aW5nIHRvIGFjcXVpcmUgdGhl IHN0cmVhbQorICogbG9jaykgLT4gTEEKKyAqCisgKiBUaGlzIHdheSB3aGVuIExBIGlzIHdhaXRp bmcgdG8gZmluaXNoIHRoZSB0cmFuc2FjdGlvbiBlbmQgY29tbWFuZCB0byBwcmVzZXJ2ZQorICog dGhlIGNvbW1pdCBvcmRlciwgd2Ugd2lsbCBiZSBhYmxlIHRvIGRldGVjdCBkZWFkbG9jaywgaWYg YW55LgorICoKKyAqIE9uZSBtaWdodCB0aGluayB3ZSBjYW4gdXNlIFhhY3RMb2NrVGFibGVXYWl0 KCksIGJ1dCBYYWN0TG9ja1RhYmxlV2FpdCgpCisgKiBjb25zaWRlcnMgUFJFUEFSRUQgVFJBTlNB Q1RJT04gYXMgc3RpbGwgaW4gcHJvZ3Jlc3Mgd2hpY2ggbWVhbnMgdGhlIGxvY2sKKyAqIHdvbid0 IGJlIHJlbGVhc2VkIGV2ZW4gYWZ0ZXIgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMgcHJl cGFyZWQgdGhlCisgKiB0cmFuc2FjdGlvbi4KKyAqCisgKiAzKSBEZWFkbG9jayB3aGVuIHRoZSBz aG1fbXEgYnVmZmVyIGlzIGZ1bGwKKyAqCisgKiBJbiB0aGUgcHJldmlvdXMgc2NlbmFyaW8gKGll LiBQQS0xIGFuZCBQQS0yIGFyZSBleGVjdXRpbmcgdHJhbnNhY3Rpb25zCisgKiBjb25jdXJyZW50 bHkpLCBpZiB0aGUgc2htX21xIGJ1ZmZlciBiZXR3ZWVuIExBIGFuZCBQQS0yIGlzIGZ1bGwsIExB IGhhcyB0bworICogd2FpdCB0byBzZW5kIG1lc3NhZ2VzLCBhbmQgdGhpcyB3YWl0IGRvZXNuJ3Qg YXBwZWFyIGluIGxtZ3IuCisgKgorICogVG8gYXZvaWQgdGhpcyB3YWl0LCB3ZSB1c2UgYSBub24t YmxvY2tpbmcgd3JpdGUgYW5kIHdhaXQgd2l0aCBhIHRpbWVvdXQuIElmCisgKiB0aGUgdGltZW91 dCBpcyBleGNlZWRlZCwgdGhlIExBIHdpbGwgc2VyaWFsaXplIGFsbCB0aGUgcGVuZGluZyBtZXNz YWdlcyB0bworICogYSBmaWxlIGFuZCBpbmRpY2F0ZSBQQS0yIHRoYXQgaXQgbmVlZHMgdG8gcmVh ZCB0aGF0IGZpbGUgZm9yIHRoZSByZW1haW5pbmcKKyAqIG1lc3NhZ2VzLiBUaGVuIExBIHdpbGwg c3RhcnQgd2FpdGluZyBmb3IgY29tbWl0IGFzIGluIHRoZSBwcmV2aW91cyBjYXNlCisgKiB3aGlj aCB3aWxsIGRldGVjdCBkZWFkbG9jayBpZiBhbnkuIFNlZSBwYV9zZW5kX2RhdGEoKSBhbmQKKyAq IGVudW0gVHJhbnNBcHBseUFjdGlvbi4KKyAqCisgKiA0KSBMb2NrIHR5cGVzCisgKgorICogQm90 aCB0aGUgc3RyZWFtIGxvY2sgYW5kIHRoZSB0cmFuc2FjdGlvbiBsb2NrIG1lbnRpb25lZCBhYm92 ZSBhcmUKKyAqIHNlc3Npb24tbGV2ZWwgbG9ja3MgYmVjYXVzZSBib3RoIGxvY2tzIGNvdWxkIGJl IGFjcXVpcmVkIG91dHNpZGUgdGhlCisgKiB0cmFuc2FjdGlvbiwgYW5kIHRoZSBzdHJlYW0gbG9j ayBpbiB0aGUgbGVhZGVyIG5lZWRzIHRvIHBlcnNpc3QgYWNyb3NzCisgKiB0cmFuc2FjdGlvbiBi b3VuZGFyaWVzIGkuZS4gdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u LgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgorI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKKyNpbmNs dWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1 ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKKyNpbmNs dWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lw Yy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInRjb3AvdGNvcHByb3Qu aCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgi CisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZ X1NITV9NQUdJQyAweDc4N2NhMDY3CisKKy8qCisgKiBEU00ga2V5cyBmb3IgcGFyYWxsZWwgYXBw bHkgd29ya2VyLiBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5j ZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGgg cGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5l IFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQJCTEKKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZ X01RCQkJMgorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUJMworCisvKiBR dWV1ZSBzaXplIG9mIERTTSwgMTYgTUIgZm9yIG5vdy4gKi8KKyNkZWZpbmUgRFNNX1FVRVVFX1NJ WkUJKDE2ICogMTAyNCAqIDEwMjQpCisKKy8qCisgKiBFcnJvciBxdWV1ZSBzaXplIG9mIERTTS4g SXQgaXMgZGVzaXJhYmxlIHRvIG1ha2UgaXQgbGFyZ2UgZW5vdWdoIHRoYXQgYQorICogdHlwaWNh bCBFcnJvclJlc3BvbnNlIGNhbiBiZSBzZW50IHdpdGhvdXQgYmxvY2tpbmcuIFRoYXQgd2F5LCBh IHdvcmtlciB0aGF0CisgKiBlcnJvcnMgb3V0IGNhbiB3cml0ZSB0aGUgd2hvbGUgbWVzc2FnZSBp bnRvIHRoZSBxdWV1ZSBhbmQgdGVybWluYXRlIHdpdGhvdXQKKyAqIHdhaXRpbmcgZm9yIHRoZSB1 c2VyIGJhY2tlbmQuCisgKi8KKyNkZWZpbmUgRFNNX0VSUk9SX1FVRVVFX1NJWkUJCQkoMTYgKiAx MDI0KQorCisvKgorICogVGhlcmUgYXJlIHRocmVlIGZpZWxkcyBpbiBlYWNoIG1lc3NhZ2UgcmVj ZWl2ZWQgYnkgdGhlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXI6IHN0YXJ0X2xzbiwgZW5kX2xz biBhbmQgc2VuZF90aW1lLiBCZWNhdXNlIHdlIGhhdmUgdXBkYXRlZCB0aGVzZQorICogc3RhdGlz dGljcyBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwgd2UgY2FuIGlnbm9yZSB0aGVzZSBmaWVs ZHMgaW4gdGhlCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKHNlZSBmdW5jdGlvbiBMb2dpY2Fs UmVwQXBwbHlMb29wKS4KKyAqLworI2RlZmluZSBTSVpFX1NUQVRTX01FU1NBR0UgKDIgKiBzaXpl b2YoWExvZ1JlY1B0cikgKyBzaXplb2YoVGltZXN0YW1wVHopKQorCisvKgorICogVGhlIHR5cGUg b2Ygc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIGEgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBh IGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuCisgKi8KKyNkZWZpbmUgUEFSQUxM RUxfQVBQTFlfTE9DS19TVFJFQU0JMAorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QJ MQorCisvKgorICogSGFzaCB0YWJsZSBlbnRyeSB0byBtYXAgeGlkIHRvIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgc3RhdGUuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3Jr ZXJFbnRyeQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwkJCS8qIEhhc2gga2V5IC0tIG11c3QgYmUg Zmlyc3QgKi8KKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87Cit9IFBhcmFsbGVsQXBw bHlXb3JrZXJFbnRyeTsKKworLyoKKyAqIEEgaGFzaCB0YWJsZSB1c2VkIHRvIGNhY2hlIHRoZSBz dGF0ZSBvZiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaW5nIGFwcGxpZWQKKyAqIGJ5IHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICovCitzdGF0aWMgSFRBQiAqUGFyYWxsZWxBcHBseVR4 bkhhc2ggPSBOVUxMOworCisvKgorKiBBIGxpc3QgKHBvb2wpIG9mIGFjdGl2ZSBwYXJhbGxlbCBh cHBseSB3b3JrZXJzLiBUaGUgaW5mb3JtYXRpb24gZm9yCisqIHRoZSBuZXcgd29ya2VyIGlzIGFk ZGVkIHRvIHRoZSBsaXN0IGFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgaXQuIFRoZQorKiBs aXN0IGVudHJ5IGlzIHJlbW92ZWQgaWYgdGhlcmUgYXJlIGFscmVhZHkgZW5vdWdoIHdvcmtlcnMg aW4gdGhlIHdvcmtlcgorKiBwb29sIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLiBGb3Ig bW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgd29ya2VyCisqIHBvb2wsIHNlZSBjb21tZW50cyBh dG9wIHRoaXMgZmlsZS4KKyAqLworc3RhdGljIExpc3QgKlBhcmFsbGVsQXBwbHlXb3JrZXJQb29s ID0gTklMOworCisvKgorICogSW5mb3JtYXRpb24gc2hhcmVkIGJldHdlZW4gbGVhZGVyIGFwcGx5 IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitQYXJhbGxlbEFwcGx5V29y a2VyU2hhcmVkICpNeVBhcmFsbGVsU2hhcmVkID0gTlVMTDsKKworLyoKKyAqIElzIHRoZXJlIGEg bWVzc2FnZSBzZW50IGJ5IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgdGhlIGxlYWRlciBh cHBseQorICogd29ya2VyIG5lZWRzIHRvIHJlY2VpdmU/CisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9t aWNfdCBQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKKworLyoKKyAqIENhY2hl IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGFwcGx5 aW5nIHRoZQorICogY3VycmVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEl0IGlzIHVzZWQgdG8g c2F2ZSB0aGUgY29zdCBvZiBzZWFyY2hpbmcgdGhlCisgKiBoYXNoIHRhYmxlIHdoZW4gYXBwbHlp bmcgdGhlIGNoYW5nZXMgYmV0d2VlbiBTVFJFQU1fU1RBUlQgYW5kIFNUUkVBTV9TVE9QLgorICov CitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBO VUxMOworCisvKiBBIGxpc3QgdG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICov CitzdGF0aWMgTGlzdCAqc3VieGFjdGxpc3QgPSBOSUw7CisKK3N0YXRpYyB2b2lkIHBhX2ZyZWVf d29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKK3N0YXRpYyBQYXJh bGxlbFRyYW5zU3RhdGUgcGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJl ZCAqd3NoYXJlZCk7CitzdGF0aWMgUGFydGlhbEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9z dGF0ZSh2b2lkKTsKKworLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyBPSyB0byBzdGFydCBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9v bAorcGFfY2FuX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKQoreworCUFzc2VydChUcmFuc2FjdGlv bklkSXNWYWxpZCh4aWQpKTsKKworCS8qIE9ubHkgbGVhZGVyIGFwcGx5IHdvcmtlcnMgY2FuIHN0 YXJ0IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJaWYgKCFhbV9sZWFkZXJfYXBwbHlfd29y a2VyKCkpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogSXQgaXMgZ29vZCB0byBjaGVjayBm b3IgYW55IGNoYW5nZSBpbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciB0bworCSAqIGF2b2lk IHRoZSBjYXNlIHdoZXJlIGZvciBhIHZlcnkgbG9uZyB0aW1lIHRoZSBjaGFuZ2UgZG9lc24ndCBn ZXQKKwkgKiByZWZsZWN0ZWQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZXJlIGlzIGEgY29uc3Rh bnQgZmxvdyBvZiBzdHJlYW1pbmcKKwkgKiB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgaGFuZGxlZCBi eSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorCSAqCisJICogSXQgaXMgYmV0dGVyIHRvIGRvIGl0 IGJlZm9yZSB0aGUgYmVsb3cgY2hlY2tzIHNvIHRoYXQgdGhlIGxhdGVzdCB2YWx1ZXMKKwkgKiBv ZiBzdWJzY3JpcHRpb24gY2FuIGJlIHVzZWQgZm9yIHRoZSBjaGVja3MuCisJICovCisJbWF5YmVf cmVyZWFkX3N1YnNjcmlwdGlvbigpOworCisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJh bGxlbCBhcHBseSB3b3JrZXIgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBub3QKKwkgKiB1c2luZyBw YXJhbGxlbCBzdHJlYW1pbmcgbW9kZSwgb3IgaWYgdGhlIHB1Ymxpc2hlciBkb2VzIG5vdCBzdXBw b3J0CisJICogcGFyYWxsZWwgYXBwbHkuCisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXIt PnBhcmFsbGVsX2FwcGx5KQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0 IGEgbmV3IHBhcmFsbGVsIHdvcmtlciBpZiB1c2VyIGhhcyBzZXQgc2tpcGxzbiBhcyBpdCdzCisJ ICogcG9zc2libGUgdGhhdCB0aGV5IHdhbnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uLiBGb3IKKwkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLCB3ZSBuZWVkIHRvIHNlcmlhbGl6 ZSB0aGUgdHJhbnNhY3Rpb24gdG8gYSBmaWxlCisJICogc28gdGhhdCB3ZSBjYW4gZ2V0IHRoZSBs YXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ugd2hldGhlciB0bworCSAqIHNraXAg YmVmb3JlIHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFuZ2UuCisJICovCisJaWYgKCFYTG9nUmVj UHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKKwkJcmV0dXJuIGZhbHNlOwor CisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBs aWVkIHVzaW5nIGEgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUg d2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhCisJICogcmVsYXRpb24gdGhhdCBpcyBu b3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3Jf cmVsKSBhcyB3ZSB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdAorCSAqIHRpbWUu IFNvLCB3ZSBkb24ndCBzdGFydCB0aGUgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbiB0aGlz IGNhc2UuCisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIGZhbHNl OworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTZXQgdXAgYSBkeW5hbWljIHNoYXJlZCBt ZW1vcnkgc2VnbWVudC4KKyAqCisgKiBXZSBzZXQgdXAgYSBjb250cm9sIHJlZ2lvbiB0aGF0IGNv bnRhaW5zIGEgZml4ZWQtc2l6ZSB3b3JrZXIgaW5mbworICogKFBhcmFsbGVsQXBwbHlXb3JrZXJT aGFyZWQpLCBhIG1lc3NhZ2UgcXVldWUsIGFuZCBhbiBlcnJvciBxdWV1ZS4KKyAqCisgKiBSZXR1 cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGJvb2wK K3BhX3NldHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJc2htX3Rv Y19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2ht X3RvYyAgICAqdG9jOworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlzaG1f bXEJICAgKm1xOworCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsKKwlTaXplCQll cnJvcl9xdWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7CisKKwkvKgorCSAqIEVzdGlt YXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2UgdGhl IFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1zaXpl ZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVseS4K KwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgdGhl IGhlYWRlciwgYW5kIHR3byBvdGhlcgorCSAqIGtleXMgdG8gdHJhY2sgdGhlIGxvY2F0aW9ucyBv ZiB0aGUgbWVzc2FnZSBxdWV1ZSBhbmQgdGhlIGVycm9yIG1lc3NhZ2UKKwkgKiBxdWV1ZS4KKwkg Ki8KKwlzaG1fdG9jX2luaXRpYWxpemVfZXN0aW1hdG9yKCZlKTsKKwlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZlLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJmUsIHF1ZXVlX3NpemUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmso JmUsIGVycm9yX3F1ZXVlX3NpemUpOworCisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZlLCAzKTsK KwlzZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhlIHNoYXJl ZCBtZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMuICovCisJ c2VnID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJaWYgKCFzZWcpCisJ CXJldHVybiBmYWxzZTsKKworCXRvYyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlf U0hNX01BR0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisK KwkvKiBTZXQgdXAgdGhlIGhlYWRlciByZWdpb24uICovCisJc2hhcmVkID0gc2htX3RvY19hbGxv Y2F0ZSh0b2MsIHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSk7CisJU3BpbkxvY2tJ bml0KCZzaGFyZWQtPm11dGV4KTsKKworCXNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RS QU5TX1VOS05PV047CisJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5kaW5nX3N0cmVh bV9jb3VudCksIDApOworCXNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxpZFhMb2dSZWNQ dHI7CisJc2hhcmVkLT5maWxlc2V0X3N0YXRlID0gRlNfRU1QVFk7CisKKwlzaG1fdG9jX2luc2Vy dCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIHNoYXJlZCk7CisKKwkvKiBTZXQgdXAg bWVzc2FnZSBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2ht X3RvY19hbGxvY2F0ZSh0b2MsIHF1ZXVlX3NpemUpLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2lu c2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9NUSwgbXEpOworCXNobV9tcV9zZXRfc2VuZGVy KG1xLCBNeVByb2MpOworCisJLyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+bXFfaGFu ZGxlID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFNldCB1cCBlcnJvciBx dWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19hbGxv Y2F0ZSh0b2MsIGVycm9yX3F1ZXVlX3NpemUpLAorCQkJCQkgICBlcnJvcl9xdWV1ZV9zaXplKTsK KwlzaG1fdG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRSwgbXEp OworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1 ZXVlLiAqLworCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcs IE5VTEwpOworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdpbmZvLT5kc21f c2VnID0gc2VnOworCXdpbmZvLT5zaGFyZWQgPSBzaGFyZWQ7CisKKwlyZXR1cm4gdHJ1ZTsKK30K KworLyoKKyAqIFRyeSB0byBnZXQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0aGUgcG9v bC4gSWYgbm9uZSBpcyBhdmFpbGFibGUgdGhlbgorICogc3RhcnQgYSBuZXcgb25lLgorICovCitz dGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtl cih2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hlZDsK KwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJTGlzdENlbGwgICAqbGM7CisKKwkv KiBUcnkgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0aGUg d29ya2VyIHBvb2wuICovCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCisJ eworCQl3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJ CWlmICghd2luZm8tPmluX3VzZSkKKwkJCXJldHVybiB3aW5mbzsKKwl9CisKKwkvKgorCSAqIFN0 YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKgorCSAqIFRoZSB3b3JrZXIgaW5m byBjYW4gYmUgdXNlZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSB3b3JrZXIgcHJvY2Vzcywgc28K KwkgKiBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQgY29udGV4dC4KKwkgKi8KKwlvbGRjb250ZXh0 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwl3aW5mbyA9IChQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqKSBwYWxsb2MwKHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbykpOworCisJLyogU2V0dXAgc2hhcmVkIG1lbW9yeS4gKi8KKwlpZiAoIXBhX3NldHVwX2Rz bSh3aW5mbykpCisJeworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCXBm cmVlKHdpbmZvKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJbGF1bmNoZWQgPSBsb2dpY2FscmVw X3dvcmtlcl9sYXVuY2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAorCQkJCQkJCQkJCU15U3Vi c2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJCQkJ CQkJTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJ CQkJCQkJCQlkc21fc2VnbWVudF9oYW5kbGUod2luZm8tPmRzbV9zZWcpKTsKKworCWlmIChsYXVu Y2hlZCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gbGFwcGVuZChQYXJhbGxlbEFw cGx5V29ya2VyUG9vbCwgd2luZm8pOworCX0KKwllbHNlCisJeworCQlwYV9mcmVlX3dvcmtlcl9p bmZvKHdpbmZvKTsKKwkJd2luZm8gPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKKworCXJldHVybiB3aW5mbzsKK30KKworLyoKKyAqIEFsbG9jYXRlIGEg cGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgc3BlY2lmaWVk IHhpZC4KKyAqCisgKiBXZSBmaXJzdCB0cnkgdG8gZ2V0IGFuIGF2YWlsYWJsZSB3b3JrZXIgZnJv bSB0aGUgcG9vbCwgaWYgYW55IGFuZCB0aGVuIHRyeQorICogdG8gbGF1bmNoIGEgbmV3IHdvcmtl ci4gT24gc3VjY2Vzc2Z1bCBhbGxvY2F0aW9uLCByZW1lbWJlciB0aGUgd29ya2VyCisgKiBpbmZv cm1hdGlvbiBpbiB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IHdlIGNhbiBnZXQgaXQgbGF0ZXIgZm9y IHByb2Nlc3NpbmcgdGhlCisgKiBzdHJlYW1pbmcgY2hhbmdlcy4KKyAqLwordm9pZAorcGFfYWxs b2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJUGFyYWxsZWxBcHBseVdvcmtlckVu dHJ5ICplbnRyeTsKKworCWlmICghcGFfY2FuX3N0YXJ0KHhpZCkpCisJCXJldHVybjsKKworCS8q IEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3Rh dGUgaGFzaHRhYmxlLiAqLworCWlmICghUGFyYWxsZWxBcHBseVR4bkhhc2gpCisJeworCQlIQVNI Q1RMCQljdGw7CisKKwkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwkJY3RsLmtleXNp emUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7CisJCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFy YWxsZWxBcHBseVdvcmtlckVudHJ5KTsKKwkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7CisKKwkJ UGFyYWxsZWxBcHBseVR4bkhhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNhbCByZXBsaWNhdGlvbiBw YXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2giLAorCQkJCQkJCQkJCSAgIDE2LCAmY3RsLAorCQkJ CQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0KKwor CXdpbmZvID0gcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtlcigpOworCWlmICghd2luZm8pCisJCXJl dHVybjsKKworCS8qIENyZWF0ZSBhbiBlbnRyeSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlv bi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBI QVNIX0VOVEVSLCAmZm91bmQpOworCWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFi bGUgY29ycnVwdGVkIik7CisKKwkvKiBVcGRhdGUgdGhlIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9u IGluIHNoYXJlZCBtZW1vcnkuICovCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5t dXRleCk7CisJd2luZm8tPnNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05P V047CisJd2luZm8tPnNoYXJlZC0+eGlkID0geGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8t PnNoYXJlZC0+bXV0ZXgpOworCisJd2luZm8tPmluX3VzZSA9IHRydWU7CisJd2luZm8tPnNlcmlh bGl6ZV9jaGFuZ2VzID0gZmFsc2U7CisJZW50cnktPndpbmZvID0gd2luZm87CisJZW50cnktPnhp ZCA9IHhpZDsKK30KKworLyoKKyAqIEZpbmQgdGhlIGFzc2lnbmVkIHdvcmtlciBmb3IgdGhlIGdp dmVuIHRyYW5zYWN0aW9uLCBpZiBhbnkuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoK K3BhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCVBh cmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1Zh bGlkKHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFzaCkK KwkJcmV0dXJuIE5VTEw7CisKKwkvKiBSZXR1cm4gdGhlIGNhY2hlZCBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaWYgdmFsaWQuICovCisJaWYgKHN0cmVhbV9hcHBseV93b3JrZXIpCisJCXJldHVybiBz dHJlYW1fYXBwbHlfd29ya2VyOworCisJLyogRmluZCBhbiBlbnRyeSBmb3IgdGhlIHJlcXVlc3Rl ZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5I YXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJLyogVGhl IHdvcmtlciBtdXN0IG5vdCBoYXZlIGV4aXRlZC4gICovCisJCUFzc2VydChlbnRyeS0+d2luZm8t PmluX3VzZSk7CisJCXJldHVybiBlbnRyeS0+d2luZm87CisJfQorCisJcmV0dXJuIE5VTEw7Cit9 CisKKy8qCisgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBmb3IgcmV1c2UuCisgKgorICog VGhpcyByZW1vdmVzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZW50cnkgZnJvbSB0aGUgaGFz aCB0YWJsZSBzbyB0aGF0IGl0CisgKiBjYW4ndCBiZSB1c2VkLiBJZiB0aGVyZSBhcmUgZW5vdWdo IHdvcmtlcnMgaW4gdGhlIHBvb2wsIGl0IHN0b3BzIHRoZSB3b3JrZXIKKyAqIGFuZCBmcmVlcyB0 aGUgY29ycmVzcG9uZGluZyBpbmZvLiBPdGhlcndpc2UgaXQganVzdCBtYXJrcyB0aGUgd29ya2Vy IGFzCisgKiBhdmFpbGFibGUgZm9yIHJldXNlLgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9u IGFib3V0IHRoZSB3b3JrZXIgcG9vbCwgc2VlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlLgorICov CitzdGF0aWMgdm9pZAorcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvKQoreworCUFzc2VydCghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpOworCUFzc2VydCh3 aW5mby0+aW5fdXNlKTsKKwlBc3NlcnQocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkg PT0gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCisJaWYgKCFoYXNoX3NlYXJjaChQYXJhbGxl bEFwcGx5VHhuSGFzaCwgJndpbmZvLT5zaGFyZWQtPnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwpKQor CQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCS8qCisJICogU3RvcCB0 aGUgd29ya2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4KKwkgKgor CSAqIFhYWCBBZGRpdGlvbmFsbHksIHdlIGFsc28gc3RvcCB0aGUgd29ya2VyIGlmIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyCisJICogc2VyaWFsaXplIHBhcnQgb2YgdGhlIHRyYW5zYWN0aW9uIGRh dGEgZHVlIHRvIGEgc2VuZCB0aW1lb3V0LiBUaGlzIGlzCisJICogYmVjYXVzZSB0aGUgbWVzc2Fn ZSBjb3VsZCBiZSBwYXJ0aWFsbHkgd3JpdHRlbiB0byB0aGUgcXVldWUgYW5kIHRoZXJlCisJICog aXMgbm8gd2F5IHRvIGNsZWFuIHRoZSBxdWV1ZSBvdGhlciB0aGFuIHJlc2VuZGluZyB0aGUgbWVz c2FnZSB1bnRpbCBpdAorCSAqIHN1Y2NlZWRzLiBJbnN0ZWFkIG9mIHRyeWluZyB0byBzZW5kIHRo ZSBkYXRhIHdoaWNoIGFueXdheSB3b3VsZCBoYXZlCisJICogYmVlbiBzZXJpYWxpemVkIGFuZCB0 aGVuIGxldHRpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkZWFsIHdpdGgKKwkgKiB0aGUg c3B1cmlvdXMgbWVzc2FnZSwgd2Ugc3RvcCB0aGUgd29ya2VyLgorCSAqLworCWlmICh3aW5mby0+ c2VyaWFsaXplX2NoYW5nZXMgfHwKKwkJbGlzdF9sZW5ndGgoUGFyYWxsZWxBcHBseVdvcmtlclBv b2wpID4KKwkJKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAy KSkKKwl7CisJCWludAkJCXNsb3Rfbm87CisJCXVpbnQxNgkJZ2VuZXJhdGlvbjsKKworCQlTcGlu TG9ja0FjcXVpcmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKwkJZ2VuZXJhdGlvbiA9IHdpbmZv LT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisJCXNsb3Rfbm8gPSB3aW5m by0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworCQlTcGluTG9ja1JlbGVhc2Uo JndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKworCQlsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKHNs b3Rfbm8sIGdlbmVyYXRpb24pOworCisJCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCisJ CXJldHVybjsKKwl9CisKKwl3aW5mby0+aW5fdXNlID0gZmFsc2U7CisJd2luZm8tPnNlcmlhbGl6 ZV9jaGFuZ2VzID0gZmFsc2U7Cit9CisKKy8qCisgKiBGcmVlIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaW5mb3JtYXRpb24gYW5kIHVubGluayB0aGUgZmlsZXMgd2l0aAorICogc2VyaWFsaXpl ZCBjaGFuZ2VzIGlmIGFueS4KKyAqLworc3RhdGljIHZvaWQKK3BhX2ZyZWVfd29ya2VyX2luZm8o UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCUFzc2VydCh3aW5mbyk7CisKKwlp ZiAod2luZm8tPm1xX2hhbmRsZSkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+bXFfaGFuZGxlKTsK KworCWlmICh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKQorCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5l cnJvcl9tcV9oYW5kbGUpOworCisJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQg Y2hhbmdlcy4gKi8KKwlpZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQlzdHJlYW1fY2xl YW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB3aW5mby0+c2hhcmVkLT54aWQp OworCisJaWYgKHdpbmZvLT5kc21fc2VnKQorCQlkc21fZGV0YWNoKHdpbmZvLT5kc21fc2VnKTsK KworCS8qIFJlbW92ZSBmcm9tIHRoZSB3b3JrZXIgcG9vbC4gKi8KKwlQYXJhbGxlbEFwcGx5V29y a2VyUG9vbCA9IGxpc3RfZGVsZXRlX3B0cihQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCwgd2luZm8p OworCisJcGZyZWUod2luZm8pOworfQorCisvKgorICogRGV0YWNoIHRoZSBlcnJvciBxdWV1ZSBm b3IgYWxsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8KK3ZvaWQKK3BhX2RldGFjaF9hbGxf ZXJyb3JfbXEodm9pZCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIFBhcmFs bGVsQXBwbHlXb3JrZXJQb29sKQorCXsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv ID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJc2htX21xX2Rl dGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKwkJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9 IE5VTEw7CisJfQorfQorCisvKgorICogQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBwZW5kaW5nIHNw b29sZWQgbWVzc2FnZXMuCisgKi8KK3N0YXRpYyBib29sCitwYV9oYXNfc3Bvb2xlZF9tZXNzYWdl X3BlbmRpbmcoKQoreworCVBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKworCWZp bGVzZXRfc3RhdGUgPSBwYV9nZXRfZmlsZXNldF9zdGF0ZSgpOworCisJcmV0dXJuIChmaWxlc2V0 X3N0YXRlICE9IEZTX0VNUFRZKTsKK30KKworLyoKKyAqIFJlcGxheSB0aGUgc3Bvb2xlZCBtZXNz YWdlcyBvbmNlIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZAorICogc2VyaWFs aXppbmcgY2hhbmdlcyB0byB0aGUgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3Nwb29sZWRf bWVzc2FnZXModm9pZCkKK3sKKwlQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisK KwlmaWxlc2V0X3N0YXRlID0gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKTsKKworCS8qCisJICogSWYg dGhlIGxlYWRlciBhcHBseSB3b3JrZXIgaXMgYnVzeSBzZXJpYWxpemluZyB0aGUgcGFydGlhbCBj aGFuZ2VzIHRoZW4KKwkgKiBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jayBub3cgYW5kIHdhaXQgZm9y IHRoZSBsZWFkZXIgd29ya2VyIHRvIGZpbmlzaAorCSAqIHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2Vz LiBPdGhlcndpc2UsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd29uJ3QgZ2V0CisJICogYSBj aGFuY2UgdG8gcmVjZWl2ZSBhIFNUUkVBTV9TVE9QIChhbmQgYWNxdWlyZSB0aGUgc3RyZWFtIGxv Y2spIHVudGlsCisJICogdGhlIGxlYWRlciBoYWQgc2VyaWFsaXplZCBhbGwgY2hhbmdlcyB3aGlj aCBjYW4gbGVhZCB0byB1bmRldGVjdGVkCisJICogZGVhZGxvY2suCisJICoKKwkgKiBOb3RlIHRo YXQgdGhlIGZpbGVzZXQgc3RhdGUgY2FuIGJlIEZTX1NFUklBTElaRV9ET05FIG9uY2UgdGhlIGxl YWRlcgorCSAqIHdvcmtlciBoYXMgZmluaXNoZWQgc2VyaWFsaXppbmcgdGhlIGNoYW5nZXMuCisJ ICovCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTKQorCXsK KwkJcGFfbG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2sp OworCQlwYV91bmxvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVM b2NrKTsKKworCQlmaWxlc2V0X3N0YXRlID0gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKTsKKwl9CisK KwkvKgorCSAqIFdlIGNhbm5vdCByZWFkIHRoZSBmaWxlIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBs ZWFkZXIgaGFzIHNlcmlhbGl6ZWQgYWxsCisJICogY2hhbmdlcyB0byB0aGUgZmlsZSBiZWNhdXNl IHRoZXJlIG1heSBzdGlsbCBiZSBtZXNzYWdlcyBpbiB0aGUgbWVtb3J5CisJICogcXVldWUuIFdl IHdpbGwgYXBwbHkgYWxsIHNwb29sZWQgbWVzc2FnZXMgdGhlIG5leHQgdGltZSB3ZSBjYWxsIHRo aXMKKwkgKiBmdW5jdGlvbiBhbmQgdGhhdCB3aWxsIGVuc3VyZSB0aGVyZSBhcmUgbm8gbWVzc2Fn ZXMgbGVmdCBpbiB0aGUgbWVtb3J5CisJICogcXVldWUuCisJICovCisJaWYgKGZpbGVzZXRfc3Rh dGUgPT0gRlNfU0VSSUFMSVpFX0RPTkUpCisJeworCQlwYV9zZXRfZmlsZXNldF9zdGF0ZShNeVBh cmFsbGVsU2hhcmVkLCBGU19SRUFEWSk7CisJfQorCWVsc2UgaWYgKGZpbGVzZXRfc3RhdGUgPT0g RlNfUkVBRFkpCisJeworCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKCZNeVBhcmFsbGVsU2hhcmVk LT5maWxlc2V0LAorCQkJCQkJCSAgIE15UGFyYWxsZWxTaGFyZWQtPnhpZCwKKwkJCQkJCQkgICBJ bnZhbGlkWExvZ1JlY1B0cik7CisJCXBhX3NldF9maWxlc2V0X3N0YXRlKE15UGFyYWxsZWxTaGFy ZWQsIEZTX0VNUFRZKTsKKwl9Cit9CisKKy8qCisgKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFp biBsb29wIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK1Byb2Nl c3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cyh2b2lkKQoreworCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisKKwlpZiAoU2h1dGRvd25SZXF1ZXN0UGVuZGluZykKKwl7CisJCWVyZXBvcnQoTE9HLAor CQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZv ciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBmaW5pc2hlZCIsCisJCQkJCQlNeVN1YnNjcmlwdGlv bi0+bmFtZSkpKTsKKworCQlwcm9jX2V4aXQoMCk7CisJfQorCisJaWYgKENvbmZpZ1JlbG9hZFBl bmRpbmcpCisJeworCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOworCX0KK30KKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1h aW4gbG9vcC4gKi8KK3N0YXRpYyB2b2lkCitMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21x X2hhbmRsZSAqbXFoKQoreworCXNobV9tcV9yZXN1bHQgc2htcV9yZXM7CisJRXJyb3JDb250ZXh0 Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQgPSBDdXJyZW50TWVt b3J5Q29udGV4dDsKKworCS8qCisJICogSW5pdCB0aGUgQXBwbHlNZXNzYWdlQ29udGV4dCB3aGlj aCB3ZSBjbGVhbiB1cCBhZnRlciBlYWNoIHJlcGxpY2F0aW9uCisJICogcHJvdG9jb2wgbWVzc2Fn ZS4KKwkgKi8KKwlBcHBseU1lc3NhZ2VDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEFw cGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCSJBcHBseU1lc3NhZ2VDb250ZXh0IiwKKwkJCQkJCQkJ CQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9y IGNvbnRleHQgY2FsbGJhY2suIEZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aGlsZSBhcHBseWluZwor CSAqIGEgY2hhbmdlLgorCSAqLworCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3Jf Y2FsbGJhY2s7CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwor CWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJ dm9pZAkgICAqZGF0YTsKKwkJU2l6ZQkJbGVuOworCisJCVByb2Nlc3NQYXJhbGxlbEFwcGx5SW50 ZXJydXB0cygpOworCisJCS8qIEVuc3VyZSB3ZSBhcmUgcmVhZGluZyB0aGUgZGF0YSBpbnRvIG91 ciBtZW1vcnkgY29udGV4dC4gKi8KKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2Fn ZUNvbnRleHQpOworCisJCXNobXFfcmVzID0gc2htX21xX3JlY2VpdmUobXFoLCAmbGVuLCAmZGF0 YSwgdHJ1ZSk7CisKKwkJaWYgKHNobXFfcmVzID09IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlT dHJpbmdJbmZvRGF0YSBzOworCQkJaW50CQkJYzsKKworCQkJaWYgKGxlbiA9PSAwKQorCQkJCWVs b2coRVJST1IsICJpbnZhbGlkIG1lc3NhZ2UgbGVuZ3RoIik7CisKKwkJCXMuY3Vyc29yID0gMDsK KwkJCXMubWF4bGVuID0gLTE7CisJCQlzLmRhdGEgPSAoY2hhciAqKSBkYXRhOworCQkJcy5sZW4g PSBsZW47CisKKwkJCS8qCisJCQkgKiBUaGUgZmlyc3QgYnl0ZSBvZiBtZXNzYWdlcyBzZW50IGZy b20gbGVhZGVyIGFwcGx5IHdvcmtlciB0bworCQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBj YW4gb25seSBiZSAndycuCisJCQkgKi8KKwkJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJCWlm IChjICE9ICd3JykKKwkJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIs IGMpOworCisJCQkvKgorCQkJICogSWdub3JlIHN0YXRpc3RpY3MgZmllbGRzIHRoYXQgaGF2ZSBi ZWVuIHVwZGF0ZWQgYnkgdGhlIGxlYWRlcgorCQkJICogYXBwbHkgd29ya2VyLgorCQkJICoKKwkJ CSAqIFhYWCBXZSBjYW4gYXZvaWQgc2VuZGluZyB0aGUgc3RhdGlzdGljcyBmaWVsZHMgZnJvbSB0 aGUgbGVhZGVyCisJCQkgKiBhcHBseSB3b3JrZXIgYnV0IGZvciB0aGF0LCBpdCBuZWVkcyB0byBy ZWJ1aWxkIHRoZSBlbnRpcmUKKwkJCSAqIG1lc3NhZ2UgYnkgcmVtb3ZpbmcgdGhlc2UgZmllbGRz IHdoaWNoIGNvdWxkIGJlIG1vcmUgd29yayB0aGFuCisJCQkgKiBzaW1wbHkgaWdub3JpbmcgdGhl c2UgZmllbGRzIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXMuY3Vy c29yICs9IFNJWkVfU1RBVFNfTUVTU0FHRTsKKworCQkJYXBwbHlfZGlzcGF0Y2goJnMpOworCQl9 CisJCWVsc2UgaWYgKHNobXFfcmVzID09IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJeworCQkJLyog UmVwbGF5IHRoZSBjaGFuZ2VzIGZyb20gdGhlIGZpbGUsIGlmIGFueS4gKi8KKwkJCWlmIChwYV9o YXNfc3Bvb2xlZF9tZXNzYWdlX3BlbmRpbmcoKSkKKwkJCXsKKwkJCQlwYV9zcG9vbGVkX21lc3Nh Z2VzKCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJaW50CQkJcmM7CisKKwkJCQkvKiBXYWl0 IGZvciBtb3JlIHdvcmsuICovCisJCQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJCQkg ICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJ CQkgICAxMDAwTCwKKwkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlf TUFJTik7CisKKwkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQkJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlBc3NlcnQoc2htcV9yZXMgPT0gU0hN X01RX0RFVEFDSEVEKTsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3Qg Y29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKSkpOwor CQl9CisKKwkJTWVtb3J5Q29udGV4dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwl9CisKKwkvKiBQb3AgdGhlIGVycm9yIGNvbnRl eHQgc3RhY2suICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3Vz OworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBNYWtlIHN1 cmUgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdHJpZXMgdG8gcmVhZCBmcm9tIG91ciBlcnJvciBx dWV1ZSBvbmUgbW9yZQorICogdGltZS4gVGhpcyBndWFyZHMgYWdhaW5zdCB0aGUgY2FzZSB3aGVy ZSB3ZSBleGl0IHVuY2xlYW5seSB3aXRob3V0IHNlbmRpbmcKKyAqIGFuIEVycm9yUmVzcG9uc2Us IGZvciBleGFtcGxlIGJlY2F1c2Ugc29tZSBjb2RlIGNhbGxzIHByb2NfZXhpdCBkaXJlY3RseS4K KyAqLworc3RhdGljIHZvaWQKK3BhX3NodXRkb3duKGludCBjb2RlLCBEYXR1bSBhcmcpCit7CisJ U2VuZFByb2NTaWduYWwoTXlMb2dpY2FsUmVwV29ya2VyLT5hcHBseV9sZWFkZXJfcGlkLAorCQkJ CSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJCQkgICBJbnZhbGlkQmFja2Vu ZElkKTsKKworCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcp KTsKK30KKworLyoKKyAqIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBlbnRyeSBwb2ludC4KKyAqLwor dm9pZAorUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJUGFyYWxs ZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOworCWRzbV9oYW5kbGUJaGFuZGxlOworCWRzbV9z ZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCXNobV9tcQkgICAqbXE7CisJc2htX21x X2hhbmRsZSAqbXFoOworCXNobV9tcV9oYW5kbGUgKmVycm9yX21xaDsKKwlSZXBPcmlnaW5JZCBv cmlnaW5pZDsKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwor CWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRs aW5nLiAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7 CisJcHFzaWduYWwoU0lHSU5ULCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKKwlw cXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygp OworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50 IGZvciB0aGUgcGFyYWxsZWwgYXBwbHksIGFuZAorCSAqIGZpbmQgaXRzIHRhYmxlIG9mIGNvbnRl bnRzLgorCSAqCisJICogTGlrZSBwYXJhbGxlbCBxdWVyeSwgd2UgZG9uJ3QgbmVlZCByZXNvdXJj ZSBvd25lciBieSB0aGlzIHRpbWUuIFNlZQorCSAqIFBhcmFsbGVsV29ya2VyTWFpbi4KKwkgKi8K KwltZW1jcHkoJmhhbmRsZSwgTXlCZ3dvcmtlckVudHJ5LT5iZ3dfZXh0cmEsIHNpemVvZihkc21f aGFuZGxlKSk7CisJc2VnID0gZHNtX2F0dGFjaChoYW5kbGUpOworCWlmICghc2VnKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInVuYWJsZSB0byBtYXAgZHluYW1pYyBzaGFyZWQgbWVt b3J5IHNlZ21lbnQiKSkpOworCisJdG9jID0gc2htX3RvY19hdHRhY2goUEdfTE9HSUNBTF9BUFBM WV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSk7CisJaWYgKCF0b2MpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCisJCQkJIGVycm1zZygiYmFkIG1hZ2ljIG51bWJlciBpbiBkeW5hbWljIHNo YXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwliZWZvcmVfc2htZW1fZXhpdChwYV9zaHV0ZG93 biwgUG9pbnRlckdldERhdHVtKHNlZykpOworCisJLyogTG9vayB1cCB0aGUgc2hhcmVkIGluZm9y bWF0aW9uLiAqLworCXNoYXJlZCA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlf S0VZX1NIQVJFRCwgZmFsc2UpOworCU15UGFyYWxsZWxTaGFyZWQgPSBzaGFyZWQ7CisKKwkvKgor CSAqIEF0dGFjaCB0byB0aGUgbWVzc2FnZSBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9v a3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX01RLCBmYWxzZSk7CisJc2htX21xX3NldF9yZWNl aXZlcihtcSwgTXlQcm9jKTsKKwltcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOwor CisJLyoKKwkgKiBQcmltYXJ5IGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLiBOb3csIHdlIGNh biBhdHRhY2ggdG8gb3VyIHNsb3QuCisJICogVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciBkb2VzIG5vdCB3cml0ZSBkYXRhIHRvCisJICogdGhlIHVuaW5pdGlh bGl6ZWQgbWVtb3J5IHF1ZXVlLgorCSAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3Jr ZXJfc2xvdCk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsK KwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uID0gTXlMb2dp Y2FsUmVwV29ya2VyLT5nZW5lcmF0aW9uOworCU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBf d29ya2VyX3Nsb3Rfbm8gPSB3b3JrZXJfc2xvdDsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxs ZWxTaGFyZWQtPm11dGV4KTsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBlcnJvciBxdWV1ZS4K KwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9S X1FVRVVFLCBmYWxzZSk7CisJc2htX21xX3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisJZXJyb3Jf bXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCXBxX3JlZGlyZWN0X3RvX3No bV9tcShzZWcsIGVycm9yX21xaCk7CisJcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihNeUxvZ2ljYWxS ZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQsCisJCQkJCQkgICBJbnZhbGlkQmFja2VuZElkKTsK KworCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3Jr ZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0g MDsKKworCUluaXRpYWxpemVBcHBseVdvcmtlcigpOworCisJLyogU2V0dXAgcmVwbGljYXRpb24g b3JpZ2luIHRyYWNraW5nLiAqLworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJUmVwbGlj YXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChNeVN1YnNjcmlwdGlvbi0+b2lkLCBJbnZhbGlk T2lkLAorCQkJCQkJCQkJICAgb3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKKwlvcmln aW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7CisKKwkvKgorCSAq IFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZG9lc24ndCBuZWVkIHRvIG1vbm9wb2xpemUgdGhp cyByZXBsaWNhdGlvbgorCSAqIG9yaWdpbiB3aGljaCB3YXMgYWxyZWFkeSBhY3F1aXJlZCBieSBp dHMgbGVhZGVyIHByb2Nlc3MuCisJICovCisJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdp bmlkLCBNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQpOworCXJlcGxvcmlnaW5f c2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KworCS8qCisJICogU2V0dXAgY2FsbGJhY2sgZm9yIHN5c2NhY2hlIHNvIHRoYXQgd2Uga25vdyB3 aGVuIHNvbWV0aGluZyBjaGFuZ2VzIGluCisJICogdGhlIHN1YnNjcmlwdGlvbiByZWxhdGlvbiBz dGF0ZS4KKwkgKi8KKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhTVUJTQ1JJUFRJT05S RUxNQVAsCisJCQkJCQkJCSAgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcywKKwkJCQkJ CQkJICAoRGF0dW0pIDApOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdp bm5hbWUpOworCisJTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKG1xaCk7CisKKwkvKgorCSAqIFRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbXVzdCBub3QgZ2V0IGhlcmUgYmVjYXVzZSB0aGUgcGFy YWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgd2lsbCBvbmx5IHN0b3Agd2hlbiBpdCByZWNlaXZlcyBh IFNJR1RFUk0gb3IgU0lHSU5UIGZyb20gdGhlCisJICogbGVhZGVyLCBvciB3aGVuIHRoZXJlIHRo ZXJlIGlzIGFuIGVycm9yLiBOb25lIG9mIHRoZXNlIGNhc2VzIHdpbGwgYWxsb3cKKwkgKiB0aGUg Y29kZSB0byByZWFjaCBoZXJlLgorCSAqLworCUFzc2VydChmYWxzZSk7Cit9CisKKy8qCisgKiBI YW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRlcnJ1cHQgaW5kaWNhdGluZyBhIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBtZXNzYWdlLgorICoKKyAqIE5vdGU6IHRoaXMgaXMgY2FsbGVkIHdpdGhpbiBhIHNp Z25hbCBoYW5kbGVyISBBbGwgd2UgY2FuIGRvIGlzIHNldCBhIGZsYWcKKyAqIHRoYXQgd2lsbCBj YXVzZSB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIGludm9rZQorICogSGFuZGxl UGFyYWxsZWxBcHBseU1lc3NhZ2VzKCkuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlN ZXNzYWdlSW50ZXJydXB0KHZvaWQpCit7CisJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJUGFy YWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsKKwlTZXRMYXRjaChNeUxhdGNoKTsKK30K KworLyoKKyAqIEhhbmRsZSBhIHNpbmdsZSBwcm90b2NvbCBtZXNzYWdlIHJlY2VpdmVkIGZyb20g YSBzaW5nbGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK0hh bmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywg U3RyaW5nSW5mbyBtc2cpCit7CisJY2hhcgkJbXNndHlwZTsKKworCW1zZ3R5cGUgPSBwcV9nZXRt c2dieXRlKG1zZyk7CisKKwlzd2l0Y2ggKG1zZ3R5cGUpCisJeworCQljYXNlICdFJzoJCQkJLyog RXJyb3JSZXNwb25zZSAqLworCQkJeworCQkJCUVycm9yRGF0YQllZGF0YTsKKworCQkJCS8qIFBh cnNlIEVycm9yUmVzcG9uc2UuICovCisJCQkJcHFfcGFyc2VfZXJyb3Jub3RpY2UobXNnLCAmZWRh dGEpOworCisJCQkJLyoKKwkJCQkgKiBJZiBkZXNpcmVkLCBhZGQgYSBjb250ZXh0IGxpbmUgdG8g c2hvdyB0aGF0IHRoaXMgaXMgYQorCQkJCSAqIG1lc3NhZ2UgcHJvcGFnYXRlZCBmcm9tIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLiBPdGhlcndpc2UsCisJCQkJICogaXQgY2FuIHNvbWV0aW1lcyBi ZSBjb25mdXNpbmcgdG8gdW5kZXJzdGFuZCB3aGF0IGFjdHVhbGx5CisJCQkJICogaGFwcGVuZWQu CisJCQkJICovCisJCQkJaWYgKGVkYXRhLmNvbnRleHQpCisJCQkJCWVkYXRhLmNvbnRleHQgPSBw c3ByaW50ZigiJXNcbiVzIiwgZWRhdGEuY29udGV4dCwKKwkJCQkJCQkJCQkJIF8oImxvZ2ljYWwg cmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCQkJCWVsc2UKKwkJCQkJZWRh dGEuY29udGV4dCA9IHBzdHJkdXAoXygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBs eSB3b3JrZXIiKSk7CisKKwkJCQkvKgorCQkJCSAqIENvbnRleHQgYmV5b25kIHRoYXQgc2hvdWxk IHVzZSB0aGUgZXJyb3IgY29udGV4dCBjYWxsYmFja3MKKwkJCQkgKiB0aGF0IHdlcmUgaW4gZWZm ZWN0IGluIExvZ2ljYWxSZXBBcHBseUxvb3AoKS4KKwkJCQkgKi8KKwkJCQllcnJvcl9jb250ZXh0 X3N0YWNrID0gYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsKKworCQkJCS8qCisJCQkJICogVGhl IGFjdHVhbCBlcnJvciBtdXN0IGhhdmUgYmVlbiByZXBvcnRlZCBieSB0aGUgcGFyYWxsZWwKKwkJ CQkgKiBhcHBseSB3b3JrZXIuCisJCQkJICovCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJ IGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdGVk IGR1ZSB0byBlcnJvciIpLAorCQkJCQkJIGVycmNvbnRleHQoIiVzIiwgZWRhdGEuY29udGV4dCkp KTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIERvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgYWJvdXQg Tm90aWNlUmVzcG9uc2UgYW5kCisJCQkgKiBOb3RpZnlSZXNwb25zZSBhcyB0aGUgbG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIgZG9lc24ndCBuZWVkCisJCQkgKiB0byBzZW5kIG1lc3NhZ2VzIHRv IHRoZSBjbGllbnQuCisJCQkgKi8KKwkJY2FzZSAnTic6CisJCWNhc2UgJ0EnOgorCQkJYnJlYWs7 CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbWVzc2FnZSB0eXBl IHJlY2VpdmVkIGZyb20gbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXI6 ICVjIChtZXNzYWdlIGxlbmd0aCAlZCBieXRlcykiLAorCQkJCSBtc2d0eXBlLCBtc2ctPmxlbik7 CisJfQorfQorCisvKgorICogSGFuZGxlIGFueSBxdWV1ZWQgcHJvdG9jb2wgbWVzc2FnZXMgcmVj ZWl2ZWQgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICovCit2b2lkCitIYW5kbGVQYXJh bGxlbEFwcGx5TWVzc2FnZXModm9pZCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKwlNZW1vcnlDb250 ZXh0IG9sZGNvbnRleHQ7CisKKwlzdGF0aWMgTWVtb3J5Q29udGV4dCBocGFtX2NvbnRleHQgPSBO VUxMOworCisJLyoKKwkgKiBUaGlzIGlzIGludm9rZWQgZnJvbSBQcm9jZXNzSW50ZXJydXB0cygp LCBhbmQgc2luY2Ugc29tZSBvZiB0aGUKKwkgKiBmdW5jdGlvbnMgaXQgY2FsbHMgY29udGFpbiBD SEVDS19GT1JfSU5URVJSVVBUUygpLCB0aGVyZSBpcyBhIHBvdGVudGlhbAorCSAqIGZvciByZWN1 cnNpdmUgY2FsbHMgaWYgbW9yZSBzaWduYWxzIGFyZSByZWNlaXZlZCB3aGlsZSB0aGlzIHJ1bnMu IEl0J3MKKwkgKiB1bmNsZWFyIHRoYXQgcmVjdXJzaXZlIGVudHJ5IHdvdWxkIGJlIHNhZmUsIGFu ZCBpdCBkb2Vzbid0IHNlZW0gdXNlZnVsCisJICogZXZlbiBpZiBpdCBpcyBzYWZlLCBzbyBsZXQn cyBibG9jayBpbnRlcnJ1cHRzIHVudGlsIGRvbmUuCisJICovCisJSE9MRF9JTlRFUlJVUFRTKCk7 CisKKwkvKgorCSAqIE1vcmVvdmVyLCBDdXJyZW50TWVtb3J5Q29udGV4dCBtaWdodCBiZSBwb2lu dGluZyBhbG1vc3QgYW55d2hlcmUuIFdlCisJICogZG9uJ3Qgd2FudCB0byByaXNrIGxlYWtpbmcg ZGF0YSBpbnRvIGxvbmctbGl2ZWQgY29udGV4dHMsIHNvIGxldCdzIGRvCisJICogb3VyIHdvcmsg aGVyZSBpbiBhIHByaXZhdGUgY29udGV4dCB0aGF0IHdlIGNhbiByZXNldCBvbiBlYWNoIHVzZS4K KwkgKi8KKwlpZiAoIWhwYW1fY29udGV4dCkJCQkvKiBmaXJzdCB0aW1lIHRocm91Z2g/ICovCisJ CWhwYW1fY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAor CQkJCQkJCQkJCQkgIkhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyIsCisJCQkJCQkJCQkJCSBB TExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKwllbHNlCisJCU1lbW9yeUNvbnRleHRSZXNldChocGFt X2NvbnRleHQpOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhocGFtX2Nv bnRleHQpOworCisJUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7CisKKwlmb3Jl YWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkKKwl7CisJCXNobV9tcV9yZXN1bHQgcmVz OworCQlTaXplCQluYnl0ZXM7CisJCXZvaWQJICAgKmRhdGE7CisJCVBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOwor CisJCS8qCisJCSAqIFRoZSBsZWFkZXIgd2lsbCBkZXRhY2ggZnJvbSB0aGUgZXJyb3IgcXVldWUg YW5kIHNldCBpdCB0byBOVUxMCisJCSAqIGJlZm9yZSBwcmVwYXJpbmcgdG8gc3RvcCBhbGwgcGFy YWxsZWwgYXBwbHkgd29ya2Vycywgc28gd2UgZG9uJ3QKKwkJICogbmVlZCB0byBoYW5kbGUgZXJy b3IgbWVzc2FnZXMgYW55bW9yZS4gU2VlCisJCSAqIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaC4K KwkJICovCisJCWlmICghd2luZm8tPmVycm9yX21xX2hhbmRsZSkKKwkJCWNvbnRpbnVlOworCisJ CXJlcyA9IHNobV9tcV9yZWNlaXZlKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUsICZuYnl0ZXMsICZk YXRhLCB0cnVlKTsKKworCQlpZiAocmVzID09IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJCWNvbnRp bnVlOworCQllbHNlIGlmIChyZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0lu Zm9EYXRhIG1zZzsKKworCQkJaW5pdFN0cmluZ0luZm8oJm1zZyk7CisJCQlhcHBlbmRCaW5hcnlT dHJpbmdJbmZvKCZtc2csIGRhdGEsIG5ieXRlcyk7CisJCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVz c2FnZSh3aW5mbywgJm1zZyk7CisJCQlwZnJlZShtc2cuZGF0YSk7CisJCX0KKwkJZWxzZQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJF UVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9n aWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSkpOworCX0KKworCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qIE1pZ2h0IGFzIHdlbGwgY2xlYXIg dGhlIGNvbnRleHQgb24gb3VyIHdheSBvdXQgKi8KKwlNZW1vcnlDb250ZXh0UmVzZXQoaHBhbV9j b250ZXh0KTsKKworCVJFU1VNRV9JTlRFUlJVUFRTKCk7Cit9CisKKy8qCisgKiBTZW5kIHRoZSBk YXRhIHRvIHRoZSBzcGVjaWZpZWQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHZpYSBzaGFyZWQtbWVt b3J5CisgKiBxdWV1ZS4KKyAqCisgKiBSZXR1cm4gZmFsc2UgaWYgdGhlIGF0dGVtcHQgdG8gc2Vu ZCBkYXRhIHZpYSBzaGFyZWQgbWVtb3J5IHRpbWVzIG91dCwgdHJ1ZQorICogb3RoZXJ3aXNlLgor ICovCitib29sCitwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBT aXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlpbnQJCQlyYzsKKwlzaG1fbXFfcmVz dWx0IHJlc3VsdDsKKwlUaW1lc3RhbXBUeiBzdGFydFRpbWUgPSAwOworCisJQXNzZXJ0KCFJc1Ry YW5zYWN0aW9uU3RhdGUoKSk7CisJQXNzZXJ0KCF3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpOwor CisvKgorICogVGhpcyB0aW1lb3V0IGlzIGEgYml0IGFyYml0cmFyeSBidXQgdGVzdGluZyByZXZl YWxlZCB0aGF0IGl0IGlzIHN1ZmZpY2llbnQKKyAqIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdW5sZXNz IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgd2FpdGluZyBvbiBzb21lCisgKiBsb2NrIG9y IHRoZXJlIGlzIGEgc2VyaW91cyByZXNvdXJjZSBjcnVuY2guIFNlZSB0aGUgY29tbWVudHMgYXRv cCB0aGlzIGZpbGUKKyAqIHRvIGtub3cgd2h5IHdlIGFyZSB1c2luZyBhIG5vbi1ibG9ja2luZyB3 YXkgdG8gc2VuZCB0aGUgbWVzc2FnZS4KKyAqLworI2RlZmluZSBTSE1fU0VORF9SRVRSWV9JTlRF UlZBTF9NUyAxMDAwCisjZGVmaW5lIFNITV9TRU5EX1RJTUVPVVRfTVMJCSgxMDAwMCAtIFNITV9T RU5EX1JFVFJZX0lOVEVSVkFMX01TKQorCisJZm9yICg7OykKKwl7CisJCXJlc3VsdCA9IHNobV9t cV9zZW5kKHdpbmZvLT5tcV9oYW5kbGUsIG5ieXRlcywgZGF0YSwgdHJ1ZSwgdHJ1ZSk7CisKKwkJ aWYgKHJlc3VsdCA9PSBTSE1fTVFfU1VDQ0VTUykKKwkJCXJldHVybiB0cnVlOworCQllbHNlIGlm IChyZXN1bHQgPT0gU0hNX01RX0RFVEFDSEVEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBl cnJtc2coImNvdWxkIG5vdCBzZW5kIGRhdGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7CisK KwkJQXNzZXJ0KHJlc3VsdCA9PSBTSE1fTVFfV09VTERfQkxPQ0spOworCisJCS8qIFdhaXQgYmVm b3JlIHJldHJ5aW5nLiAqLworCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkgICBXTF9M QVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJICAgU0hN X1NFTkRfUkVUUllfSU5URVJWQUxfTVMsCisJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJB TExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOworCisJCWlmIChyYyAmIFdMX0xBVENIX1NFVCkKKwkJ eworCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJ CX0KKworCQlpZiAoc3RhcnRUaW1lID09IDApCisJCQlzdGFydFRpbWUgPSBHZXRDdXJyZW50VGlt ZXN0YW1wKCk7CisJCWVsc2UgaWYgKFRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGlt ZSwgR2V0Q3VycmVudFRpbWVzdGFtcCgpLAorCQkJCQkJCQkJCQlTSE1fU0VORF9USU1FT1VUX01T KSkKKwkJeworCQkJZXJlcG9ydChMT0csCisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRp b24gYXBwbHkgd29ya2VyIHdpbGwgc2VyaWFsaXplIHRoZSByZW1haW5pbmcgY2hhbmdlcyBvZiBy ZW1vdGUgdHJhbnNhY3Rpb24gJXUgdG8gYSBmaWxlIiwKKwkJCQkJCQl3aW5mby0+c2hhcmVkLT54 aWQpKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9Cit9CisKKy8qCisgKiBTd2l0Y2ggdG8g UEFSVElBTF9TRVJJQUxJWkUgbW9kZSBmb3IgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gLS0gdGhp cyBtZWFucworICogdGhhdCB0aGUgY3VycmVudCBkYXRhIGFuZCBhbnkgc3Vic2VxdWVudCBkYXRh IGZvciB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUKKyAqIHNlcmlhbGl6ZWQgdG8gYSBmaWxlLiBU aGlzIGlzIGRvbmUgdG8gcHJldmVudCBwb3NzaWJsZSBkZWFkbG9ja3Mgd2l0aAorICogYW5vdGhl ciBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKHJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wIHRoaXMg ZmlsZSkuCisgKi8KK3ZvaWQKK3BhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZShQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8sCisJCQkJCQkJICAgYm9vbCBzdHJlYW1fbG9ja2VkKQor eworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjb3VsZCBiZSBzdHVjayBmb3Ig c29tZSByZWFzb24gKHNheSB3YWl0aW5nCisJICogb24gc29tZSBsb2NrIGJ5IG90aGVyIGJhY2tl bmQpLCBzbyBzdG9wIHRyeWluZyB0byBzZW5kIGRhdGEgZGlyZWN0bHkgdG8KKwkgKiBpdCBhbmQg c3RhcnQgc2VyaWFsaXppbmcgZGF0YSB0byB0aGUgZmlsZSBpbnN0ZWFkLgorCSAqLworCXdpbmZv LT5zZXJpYWxpemVfY2hhbmdlcyA9IHRydWU7CisKKwkvKiBJbml0aWFsaXplIHRoZSBzdHJlYW0g ZmlsZXNldC4gKi8KKwlzdHJlYW1fc3RhcnRfaW50ZXJuYWwod2luZm8tPnNoYXJlZC0+eGlkLCB0 cnVlKTsKKworCS8qCisJICogQWNxdWlyZXMgdGhlIHN0cmVhbSBsb2NrIGlmIG5vdCBhbHJlYWR5 IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciB3aWxsIHdh aXQgZm9yIHRoZSBsZWFkZXIgdG8gcmVsZWFzZSB0aGUgc3RyZWFtIGxvY2sgdW50aWwKKwkgKiB0 aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4KKwkgKi8KKwlpZiAoIXN0cmVhbV9sb2NrZWQpCisJ CXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7 CisKKwlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfSU5f UFJPR1JFU1MpOworfQorCisvKgorICogV2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyJ3MgdHJhbnNhY3Rpb24gc3RhdGUgaGFzIHJlYWNoZWQgb3IKKyAqIGV4Y2VlZGVkIHRoZSBn aXZlbiB4YWN0X3N0YXRlLgorICovCitzdGF0aWMgdm9pZAorcGFfd2FpdF9mb3JfeGFjdF9zdGF0 ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCisJCQkJCSAgIFBhcmFsbGVsVHJhbnNT dGF0ZSB4YWN0X3N0YXRlKQoreworCWZvciAoOzspCisJeworCQkvKgorCQkgKiBTdG9wIGlmIHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBoYXMgcmVhY2hlZCBvciBleGNlZWRlZCB0aGUgZ2l2ZW4KKwkJ ICogeGFjdF9zdGF0ZS4KKwkJICovCisJCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hh cmVkKSA+PSB4YWN0X3N0YXRlKQorCQkJYnJlYWs7CisKKwkJLyogV2FpdCB0byBiZSBzaWduYWxs ZWQuICovCisJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJCSBXTF9MQVRDSF9TRVQg fCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAxMEwsCisJCQkJCQkg V0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisKKwkJLyog UmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCisJCVJlc2V0TGF0Y2goTXlMYXRj aCk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdlcmUg d2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwl9Cit9CisKKy8qCisgKiBX YWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIncyB0cmFuc2FjdGlvbiBmaW5pc2hl cy4KKyAqLworc3RhdGljIHZvaWQKK3BhX3dhaXRfZm9yX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwkvKgorCSAqIFdhaXQgdW50aWwgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBzZXQgdGhlIHN0YXRlIHRvCisJICogUEFSQUxMRUxfVFJBTlNfU1RBUlRF RCB3aGljaCBtZWFucyBpdCBoYXMgYWNxdWlyZWQgdGhlIHRyYW5zYWN0aW9uCisJICogbG9jay4g VGhpcyBpcyB0byBwcmV2ZW50IGxlYWRlciBhcHBseSB3b3JrZXIgZnJvbSBhY3F1aXJpbmcgdGhl CisJICogdHJhbnNhY3Rpb24gbG9jayBlYXJsaWVyIHRoYW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4KKwkgKi8KKwlwYV93YWl0X2Zvcl94YWN0X3N0YXRlKHdpbmZvLCBQQVJBTExFTF9UUkFO U19TVEFSVEVEKTsKKworCS8qCisJICogV2FpdCBmb3IgdGhlIHRyYW5zYWN0aW9uIGxvY2sgdG8g YmUgcmVsZWFzZWQuIFRoaXMgaXMgcmVxdWlyZWQgdG8KKwkgKiBkZXRlY3QgZGVhZGxvY2sgYW1v bmcgbGVhZGVyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBSZWZlciB0byB0aGUKKwkgKiBj b21tZW50cyBhdG9wIHRoaXMgZmlsZS4KKwkgKi8KKwlwYV9sb2NrX3RyYW5zYWN0aW9uKHdpbmZv LT5zaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlwYV91bmxvY2tfdHJhbnNhY3Rpb24o d2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJLyoKKwkgKiBDaGVjayBp ZiB0aGUgc3RhdGUgYmVjb21lcyBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCBpbiBjYXNlIHRoZSBw YXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcyBj YXVzaW5nIHRoZSBsb2NrIHRvIGJlCisJICogcmVsZWFzZWQuCisJICovCisJaWYgKHBhX2dldF94 YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpICE9IFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFV SVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSkpOworfQorCisvKgorICogU2V0 IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBmb3IgYSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CisgKi8KK3ZvaWQKK3BhX3NldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQg KndzaGFyZWQsCisJCQkJICBQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlTcGlu TG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwl3c2hhcmVkLT54YWN0X3N0YXRlID0geGFj dF9zdGF0ZTsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKK30KKworLyoKKyAq IEdldCB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgZm9yIGEgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkgd29y a2VyLgorICovCitzdGF0aWMgUGFyYWxsZWxUcmFuc1N0YXRlCitwYV9nZXRfeGFjdF9zdGF0ZShQ YXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkKQoreworCVBhcmFsbGVsVHJhbnNTdGF0 ZSB4YWN0X3N0YXRlOworCisJU3BpbkxvY2tBY3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJeGFj dF9zdGF0ZSA9IHdzaGFyZWQtPnhhY3Rfc3RhdGU7CisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVk LT5tdXRleCk7CisKKwlyZXR1cm4geGFjdF9zdGF0ZTsKK30KKworLyoKKyAqIENhY2hlIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24uCisgKi8KK3ZvaWQKK3BhX3NldF9zdHJl YW1fYXBwbHlfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlzdHJl YW1fYXBwbHlfd29ya2VyID0gd2luZm87Cit9CisKKy8qCisgKiBGb3JtIGEgdW5pcXVlIHNhdmVw b2ludCBuYW1lIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorICoKKyAqIE5vdGUgdGhh dCBkaWZmZXJlbnQgc3Vic2NyaXB0aW9ucyBmb3IgcHVibGljYXRpb25zIG9uIGRpZmZlcmVudCBu b2RlcyBjYW4KKyAqIHJlY2VpdmUgc2FtZSByZW1vdGUgeGlkLCBzbyB3ZSBuZWVkIHRvIHVzZSBz dWJzY3JpcHRpb24gaWQgYWxvbmcgd2l0aCBpdC4KKyAqCisgKiBSZXR1cm4gdGhlIG5hbWUgaW4g dGhlIHN1cHBsaWVkIGJ1ZmZlci4KKyAqLworc3RhdGljIHZvaWQKK3BhX3NhdmVwb2ludF9uYW1l KE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyICpzcG5hbWUsIFNpemUgc3pzcCkK K3sKKwlzbnByaW50ZihzcG5hbWUsIHN6c3AsICJwZ19zcF8ldV8ldSIsIHN1Ym9pZCwgeGlkKTsK K30KKworLyoKKyAqIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGluIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBpZiBuZWVkZWQuCisgKgorICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBjYW4gZmlndXJlIG91dCBpZiBhIG5ldyBzdWJ0cmFuc2FjdGlvbiB3YXMKKyAqIHN0YXJ0ZWQg YnkgY2hlY2tpbmcgaWYgdGhlIG5ldyBjaGFuZ2UgYXJyaXZlZCB3aXRoIGEgZGlmZmVyZW50IHhp ZC4gSW4gdGhhdAorICogY2FzZSBkZWZpbmUgYSBuYW1lZCBzYXZlcG9pbnQsIHNvIHRoYXQgd2Ug YXJlIGFibGUgdG8gcm9sbGJhY2sgdG8gaXQKKyAqIGlmIHJlcXVpcmVkLgorICovCit2b2lkCitw YV9zdGFydF9zdWJ0cmFucyhUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkLCBUcmFuc2FjdGlvbklk IHRvcF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlkICE9IHRvcF94aWQgJiYKKwkJIWxpc3RfbWVt YmVyX3hpZChzdWJ4YWN0bGlzdCwgY3VycmVudF94aWQpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBv bGRjdHg7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFUQUxFTl07CisKKwkJcGFfc2F2ZXBvaW50X25h bWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgY3VycmVudF94aWQsCisJCQkJCQkgIHNwbmFtZSwgc2l6 ZW9mKHNwbmFtZSkpOworCisJCWVsb2coREVCVUcxLCAiZGVmaW5pbmcgc2F2ZXBvaW50ICVzIGlu IGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKwor CQkvKiBXZSBtdXN0IGJlIGluIHRyYW5zYWN0aW9uIGJsb2NrIHRvIGRlZmluZSB0aGUgU0FWRVBP SU5ULiAqLworCQlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlpZiAoIUlzVHJh bnNhY3Rpb25TdGF0ZSgpKQorCQkJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCUJl Z2luVHJhbnNhY3Rpb25CbG9jaygpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJ CX0KKworCQlEZWZpbmVTYXZlcG9pbnQoc3BuYW1lKTsKKworCQkvKgorCQkgKiBDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQgaXMgbmVlZGVkIHRvIHN0YXJ0IGEgc3VidHJhbnNhY3Rpb24gYWZ0ZXIK KwkJICogaXNzdWluZyBhIFNBVkVQT0lOVCBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jayAoc2Vl CisJCSAqIFN0YXJ0U3ViVHJhbnNhY3Rpb24oKSkuCisJCSAqLworCQlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wVHJhbnNh Y3Rpb25Db250ZXh0KTsKKwkJc3VieGFjdGxpc3QgPSBsYXBwZW5kX3hpZChzdWJ4YWN0bGlzdCwg Y3VycmVudF94aWQpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9Cit9CisK Ky8qIFJlc2V0IHRoZSBsaXN0IHRoYXQgbWFpbnRhaW5zIHN1YnRyYW5zYWN0aW9ucy4gKi8KK3Zv aWQKK3BhX3Jlc2V0X3N1YnRyYW5zKHZvaWQpCit7CisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIHRv IGZyZWUgdGhpcyBleHBsaWNpdGx5IGFzIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IHdpbGwgYmUKKwkg KiBmcmVlZCBhdCB0aGUgdHJhbnNhY3Rpb24gZW5kLgorCSAqLworCXN1YnhhY3RsaXN0ID0gTklM OworfQorCisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5z YWN0aW9uIHdhcyBhcHBsaWVkIGluIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqLwor dm9pZAorcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2Rh dGEpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSBhYm9ydF9kYXRhLT54aWQ7CisJVHJhbnNhY3Rp b25JZCBzdWJ4aWQgPSBhYm9ydF9kYXRhLT5zdWJ4aWQ7CisKKwkvKgorCSAqIFVwZGF0ZSBvcmln aW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlv bgorCSAqIGluIGNhc2Ugb2YgY3Jhc2guCisJICovCisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdp bl9sc24gPSBhYm9ydF9kYXRhLT5hYm9ydF9sc247CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdp bl90aW1lc3RhbXAgPSBhYm9ydF9kYXRhLT5hYm9ydF90aW1lOworCisJLyoKKwkgKiBJZiB0aGUg dHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFj dCwgc28KKwkgKiBqdXN0IGZyZWUgdGhlIHN1YnhhY3RsaXN0LgorCSAqLworCWlmIChzdWJ4aWQg PT0geGlkKQorCXsKKwkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxM RUxfVFJBTlNfRklOSVNIRUQpOworCisJCS8qCisJCSAqIFJlbGVhc2UgdGhlIGxvY2sgYXMgd2Ug bWlnaHQgYmUgcHJvY2Vzc2luZyBhbiBlbXB0eSBzdHJlYW1pbmcKKwkJICogdHJhbnNhY3Rpb24g aW4gd2hpY2ggY2FzZSB0aGUgbG9jayB3b24ndCBiZSByZWxlYXNlZCBkdXJpbmcKKwkJICogdHJh bnNhY3Rpb24gcm9sbGJhY2suCisJCSAqLworCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oeGlkLCBB Y2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQlBYm9ydEN1cnJlbnRUcmFuc2FjdGlvbigpOworCisJ CWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJeworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhm YWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCisJCXBhX3Jlc2V0 X3N1YnRyYW5zKCk7CisKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxM KTsKKwl9CisJZWxzZQorCXsKKwkJLyogT0ssIHNvIGl0J3MgYSBzdWJ4YWN0LiBSb2xsYmFjayB0 byB0aGUgc2F2ZXBvaW50LiAqLworCQlpbnQJCQlpOworCQljaGFyCQlzcG5hbWVbTkFNRURBVEFM RU5dOworCisJCXBhX3NhdmVwb2ludF9uYW1lKE15U3Vic2NyaXB0aW9uLT5vaWQsIHN1YnhpZCwg c3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJyb2xsaW5nIGJhY2sg dG8gc2F2ZXBvaW50ICVzIGluIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29y a2VyIiwgc3BuYW1lKTsKKworCQkvKgorCQkgKiBTZWFyY2ggdGhlIHN1YnhhY3RsaXN0LCBkZXRl cm1pbmUgdGhlIG9mZnNldCB0cmFja2VkIGZvciB0aGUKKwkJICogc3VieGFjdCwgYW5kIHRydW5j YXRlIHRoZSBsaXN0LgorCQkgKgorCQkgKiBOb3RlIHRoYXQgZm9yIGFuIGVtcHR5IHN1Yi10cmFu c2FjdGlvbiB3ZSB3b24ndCBmaW5kIHRoZSBzdWJ4aWQKKwkJICogaGVyZS4KKwkJICovCisJCWZv ciAoaSA9IGxpc3RfbGVuZ3RoKHN1YnhhY3RsaXN0KSAtIDE7IGkgPj0gMDsgaS0tKQorCQl7CisJ CQlUcmFuc2FjdGlvbklkIHhpZF90bXAgPSBsZmlyc3RfeGlkKGxpc3RfbnRoX2NlbGwoc3VieGFj dGxpc3QsIGkpKTsKKworCQkJaWYgKHhpZF90bXAgPT0gc3VieGlkKQorCQkJeworCQkJCVJvbGxi YWNrVG9TYXZlcG9pbnQoc3BuYW1lKTsKKwkJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KwkJCQlzdWJ4YWN0bGlzdCA9IGxpc3RfdHJ1bmNhdGUoc3VieGFjdGxpc3QsIGkpOworCQkJCWJy ZWFrOworCQkJfQorCQl9CisJfQorfQorCisvKgorICogU2V0IHRoZSBmaWxlc2V0IHN0YXRlIGZv ciBhIHBhcnRpY3VsYXIgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBUaGUgZmlsZXNldAorICogd2ls bCBiZSBzZXQgb25jZSB0aGUgbGVhZGVyIHdvcmtlciBzZXJpYWxpemVkIGFsbCBjaGFuZ2VzIHRv IHRoZSBmaWxlCisgKiBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGJ5IHBhcmFsbGVsIGFwcGx5IHdv cmtlci4KKyAqLwordm9pZAorcGFfc2V0X2ZpbGVzZXRfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtl clNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJIFBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0 ZSkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwl3c2hhcmVkLT5maWxl c2V0X3N0YXRlID0gZmlsZXNldF9zdGF0ZTsKKworCWlmIChmaWxlc2V0X3N0YXRlID09IEZTX1NF UklBTElaRV9ET05FKQorCXsKKwkJQXNzZXJ0KGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSk7CisJ CUFzc2VydChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJd3NoYXJlZC0+ ZmlsZXNldCA9ICpNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0OworCX0KKworCVNw aW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworfQorCisvKgorICogR2V0IHRoZSBmaWxl c2V0IHN0YXRlIGZvciB0aGUgY3VycmVudCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3N0 YXRpYyBQYXJ0aWFsRmlsZVNldFN0YXRlCitwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lkKQorewor CVBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKworCUFzc2VydChhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTaGFyZWQt Pm11dGV4KTsKKwlmaWxlc2V0X3N0YXRlID0gTXlQYXJhbGxlbFNoYXJlZC0+ZmlsZXNldF9zdGF0 ZTsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKworCXJldHVy biBmaWxlc2V0X3N0YXRlOworfQorCisvKgorICogSGVscGVyIGZ1bmN0aW9ucyB0byBhY3F1aXJl IGFuZCByZWxlYXNlIGEgbG9jayBmb3IgZWFjaCBzdHJlYW0gYmxvY2suCisgKgorICogU2V0IGxv Y2t0YWdfZmllbGQ0IHRvIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNIHRvIGluZGljYXRlIHRo YXQgaXQncyBhCisgKiBzdHJlYW0gbG9jay4KKyAqCisgKiBSZWZlciB0byB0aGUgY29tbWVudHMg YXRvcCB0aGlzIGZpbGUgdG8gc2VlIGhvdyB0aGUgc3RyZWFtIGxvY2sgaXMgdXNlZC4KKyAqLwor dm9pZAorcGFfbG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2Rl KQoreworCUxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCB4aWQsCisJCQkJCQkJCSAgIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNLCBsb2Nr bW9kZSk7Cit9CisKK3ZvaWQKK3BhX3VubG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExP Q0tNT0RFIGxvY2ttb2RlKQoreworCVVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJCSBQQVJBTExFTF9BUFBMWV9M T0NLX1NUUkVBTSwgbG9ja21vZGUpOworfQorCisvKgorICogSGVscGVyIGZ1bmN0aW9ucyB0byBh Y3F1aXJlIGFuZCByZWxlYXNlIGEgbG9jayBmb3IgZWFjaCBsb2NhbCB0cmFuc2FjdGlvbgorICog YXBwbHkuCisgKgorICogU2V0IGxvY2t0YWdfZmllbGQ0IHRvIFBBUkFMTEVMX0FQUExZX0xPQ0tf WEFDVCB0byBpbmRpY2F0ZSB0aGF0IGl0J3MgYQorICogdHJhbnNhY3Rpb24gbG9jay4KKyAqCisg KiBOb3RlIHRoYXQgYWxsIHRoZSBjYWxsZXJzIG11c3QgcGFzcyBhIHJlbW90ZSB0cmFuc2FjdGlv biBJRCBpbnN0ZWFkIG9mIGEKKyAqIGxvY2FsIHRyYW5zYWN0aW9uIElEIGFzIHhpZC4gVGhpcyBp cyBiZWNhdXNlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiBJRCB3aWxsCisgKiBvbmx5IGJlIGFzc2ln bmVkIHdoaWxlIGFwcGx5aW5nIHRoZSBmaXJzdCBjaGFuZ2UgaW4gdGhlIHBhcmFsbGVsIGFwcGx5 IGJ1dAorICogaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBmaXJzdCBjaGFuZ2UgaW4gdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBpcyBibG9ja2VkCisgKiBieSBhIGNvbmN1cnJlbnRseSBleGVjdXRp bmcgdHJhbnNhY3Rpb24gaW4gYW5vdGhlciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFdlCisgKiBj YW4gb25seSBjb21tdW5pY2F0ZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gaWQgdG8gdGhlIGxlYWRl ciBhZnRlciBhcHBseWluZworICogdGhlIGZpcnN0IGNoYW5nZSBzbyBpdCB3b24ndCBiZSBhYmxl IHRvIHdhaXQgYWZ0ZXIgc2VuZGluZyB0aGUgeGFjdCBmaW5pc2gKKyAqIGNvbW1hbmQgdXNpbmcg dGhpcyBsb2NrLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZSB0 byBzZWUgaG93IHRoZSB0cmFuc2FjdGlvbiBsb2NrIGlzCisgKiB1c2VkLgorICovCit2b2lkCitw YV9sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkK K3sKKwlMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgeGlkLAorCQkJCQkJCQkgICBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QsIGxvY2ttb2Rl KTsKK30KKwordm9pZAorcGFfdW5sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBM T0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCQkgUEFSQUxMRUxfQVBQTFlf TE9DS19YQUNULCBsb2NrbW9kZSk7Cit9CisKKy8qCisgKiBEZWNyZW1lbnQgdGhlIG51bWJlciBv ZiBwZW5kaW5nIHN0cmVhbWluZyBibG9ja3MgYW5kIHdhaXQgb24gdGhlIHN0cmVhbSBsb2NrCisg KiBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIGJsb2NrIGF2YWlsYWJsZS4KKyAqLwordm9pZAorcGFf ZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2sodm9pZCkKK3sKKwlBc3NlcnQoYW1fcGFyYWxsZWxf YXBwbHlfd29ya2VyKCkpOworCisJLyoKKwkgKiBJdCBpcyBvbmx5IHBvc3NpYmxlIHRvIG5vdCBo YXZlIGFueSBwZW5kaW5nIHN0cmVhbSBjaHVua3Mgd2hlbiB3ZSBhcmUKKwkgKiBhcHBseWluZyBz cG9vbGVkIG1lc3NhZ2VzLgorCSAqLworCWlmIChwZ19hdG9taWNfcmVhZF91MzIoJk15UGFyYWxs ZWxTaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2NvdW50KSA9PSAwKQorCXsKKwkJaWYgKHBhX2hhc19z cG9vbGVkX21lc3NhZ2VfcGVuZGluZygpKQorCQkJcmV0dXJuOworCisJCWVsb2coRVJST1IsICJp bnZhbGlkIHBlbmRpbmcgc3RyZWFtaW5nIGNodW5rIDAiKTsKKwl9CisKKwlpZiAocGdfYXRvbWlj X3N1Yl9mZXRjaF91MzIoJk15UGFyYWxsZWxTaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2NvdW50LCAx KSA9PSAwKQorCXsKKwkJcGFfbG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nl c3NTaGFyZUxvY2spOworCQlwYV91bmxvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwg QWNjZXNzU2hhcmVMb2NrKTsKKwl9Cit9CisKKy8qCisgKiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLgorICovCit2 b2lkCitwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFhMb2dS ZWNQdHIgcmVtb3RlX2xzbikKK3sKKwlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsK KworCS8qCisJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCBwYXJhbGxl bCBhcHBseSB3b3JrZXIgY2FuCisJICogY29udGludWUgdG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hh bmdlcy4KKwkgKi8KKwlwYV91bmxvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNz RXhjbHVzaXZlTG9jayk7CisKKwkvKgorCSAqIFdhaXQgZm9yIHRoYXQgd29ya2VyIHRvIGZpbmlz aC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJICogb3JkZXIgd2hpY2gg YXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJICog ZGVhZGxvY2tzLgorCSAqLworCXBhX3dhaXRfZm9yX3hhY3RfZmluaXNoKHdpbmZvKTsKKworCWlm ICghWExvZ1JlY1B0cklzSW52YWxpZChyZW1vdGVfbHNuKSkKKwkJc3RvcmVfZmx1c2hfcG9zaXRp b24ocmVtb3RlX2xzbiwgd2luZm8tPnNoYXJlZC0+bGFzdF9jb21taXRfZW5kKTsKKworCXBhX2Zy ZWVfd29ya2VyKHdpbmZvKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29k ZS5jCmluZGV4IGMzYmM4ZWNjOTIuLmE1M2UyM2M2NzkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZWNvZGUuYwpAQCAtODIyLDEwICs4MjIsMTEgQEAgRGVjb2RlQWJvcnQoTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJCWZvciAo aSA9IDA7IGkgPCBwYXJzZWQtPm5zdWJ4YWN0czsgaSsrKQogCQl7CiAJCQlSZW9yZGVyQnVmZmVy QWJvcnQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLAotCQkJCQkJCSAgIGJ1Zi0+ cmVjb3JkLT5FbmRSZWNQdHIpOworCQkJCQkJCSAgIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIsIGFi b3J0X3RpbWUpOwogCQl9CiAKLQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgeGlk LCBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVv cmRlciwgeGlkLCBidWYtPnJlY29yZC0+RW5kUmVjUHRyLAorCQkJCQkJICAgYWJvcnRfdGltZSk7 CiAJfQogCiAJLyogdXBkYXRlIHRoZSBkZWNvZGluZyBzdGF0cyAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IGE2OWUzNzFjMDUuLmFmYjdhY2RkYWEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTU1LDYg KzU1LDcgQEAKIC8qIEdVQyB2YXJpYWJsZXMgKi8KIGludAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0 aW9uX3dvcmtlcnMgPSA0OwogaW50CQkJbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9u ID0gMjsKK2ludAkJCW1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g PSAyOwogCiBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXIgPSBOVUxMOwogCkBA IC03NCw2ICs3NSw3IEBAIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfbGF1bmNoZXJfb25leGl0KGlu dCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfb25leGl0 KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfZGV0 YWNoKHZvaWQpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXIpOworc3RhdGljIGludAlsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3Vu dChPaWQgc3ViaWQpOwogCiBzdGF0aWMgYm9vbCBvbl9jb21taXRfbGF1bmNoZXJfd2FrZXVwID0g ZmFsc2U7CiAKQEAgLTE1Miw4ICsxNTQsMTAgQEAgZ2V0X3N1YnNjcmlwdGlvbl9saXN0KHZvaWQp CiAgKgogICogVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgY2xlYW5pbmcgdXAgdGhlIHNoYXJlZCBt ZW1vcnkgaW4gY2FzZSB0aGUgd29ya2VyCiAgKiBmYWlscyB0byBhdHRhY2guCisgKgorICogUmV0 dXJucyB3aGV0aGVyIHRoZSBhdHRhY2ggd2FzIHN1Y2Nlc3NmdWwuCiAgKi8KLXN0YXRpYyB2b2lk CitzdGF0aWMgYm9vbAogV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBX b3JrZXIgKndvcmtlciwKIAkJCQkJCQkgICB1aW50MTYgZ2VuZXJhdGlvbiwKIAkJCQkJCQkgICBC YWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCkBAIC0xNjksMTEgKzE3MywxMSBAQCBXYWl0 Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCiAJ CUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKLQkJLyog V29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkOyBubyBuZWVkIHRvIGRvIGFueXRoaW5n LiAqLworCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQuIFJldHVybiBmYWxz ZSBpZiBkaWVkLiAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+cHJvYykKIAkJ ewogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCQlyZXR1cm47CisJ CQlyZXR1cm4gd29ya2VyLT5pbl91c2U7CiAJCX0KIAogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrKTsKQEAgLTE4OCw3ICsxOTIsNyBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3Jr ZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJaWYgKGdlbmVyYXRpb24gPT0g d29ya2VyLT5nZW5lcmF0aW9uKQogCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAod29ya2Vy KTsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOwor CQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKIAkJLyoKQEAgLTIxMCw2ICsyMTQsOCBAQCBXYWl0Rm9y UmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogLyoKICAq IFdhbGtzIHRoZSB3b3JrZXJzIGFycmF5IGFuZCBzZWFyY2hlcyBmb3Igb25lIHRoYXQgbWF0Y2hl cyBnaXZlbgogICogc3Vic2NyaXB0aW9uIGlkIGFuZCByZWxpZC4KKyAqCisgKiBXZSBhcmUgb25s eSBpbnRlcmVzdGVkIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5bmMgd29y a2VyLgogICovCiBMb2dpY2FsUmVwV29ya2VyICoKIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lk IHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQpAQCAtMjI0LDYgKzIzMCwxMCBA QCBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBib29sIG9ubHlf cnVubmluZykKIAl7CiAJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29y a2Vyc1tpXTsKIAorCQkvKiBTa2lwIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJCWlmIChp c1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQljb250aW51ZTsKKwogCQlpZiAody0+aW5fdXNl ICYmIHctPnN1YmlkID09IHN1YmlkICYmIHctPnJlbGlkID09IHJlbGlkICYmCiAJCQkoIW9ubHlf cnVubmluZyB8fCB3LT5wcm9jKSkKIAkJewpAQCAtMjYwLDExICsyNzAsMTMgQEAgbG9naWNhbHJl cF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZykKIH0KIAogLyoKLSAq IFN0YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUuCisgKiBTdGFy dCBuZXcgbG9naWNhbCByZXBsaWNhdGlvbiBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUu CisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCiAgKi8K LXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1Ymlk LCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJCQkJIE9pZCByZWxpZCkKKwkJ CQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSkKIHsKIAlCYWNrZ3JvdW5k V29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3dfaGFuZGxlOwpAQCAtMjcz LDcgKzI4NSwxMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJp ZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlpbnQJCQlzbG90ID0gMDsKIAlM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWludAkJCW5zeW5jd29ya2VyczsKKwlp bnQJCQlucGFyYWxsZWxhcHBseXdvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93OworCWJvb2wJCWlz X3BhcmFsbGVsX2FwcGx5X3dvcmtlciA9IChzdWJ3b3JrZXJfZHNtICE9IERTTV9IQU5ETEVfSU5W QUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2sgLSB0YWJsZXN5bmMgd29ya2VyIGNhbm5vdCBiZSBh IHN1YndvcmtlciAqLworCUFzc2VydCghKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciAmJiBPaWRJ c1ZhbGlkKHJlbGlkKSkpOwogCiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJybXNnX2ludGVybmFs KCJzdGFydGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiIsCkBAIC0zNTEsNyArMzY4LDIwIEBAIHJldHJ5OgogCWlmIChPaWRJc1ZhbGlkKHJlbGlk KSAmJiBuc3luY3dvcmtlcnMgPj0gbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQog CXsKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVybjsKKwkJ cmV0dXJuIGZhbHNlOworCX0KKworCW5wYXJhbGxlbGFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBf cGFfd29ya2VyX2NvdW50KHN1YmlkKTsKKworCS8qCisJICogUmV0dXJuIGZhbHNlIGlmIHRoZSBu dW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyByZWFjaGVkIHRoZSBsaW1pdAorCSAqIHBl ciBzdWJzY3JpcHRpb24uCisJICovCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciAmJgor CQlucGFyYWxsZWxhcHBseXdvcmtlcnMgPj0gbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbikKKwl7CisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2sp OworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyoKQEAgLTM2NSw3ICszOTUsNyBAQCByZXRyeToK IAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJ CSBlcnJtc2coIm91dCBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBzbG90cyIpLAogCQkJ CSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfbG9naWNhbF9yZXBsaWNh dGlvbl93b3JrZXJzLiIpKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8q IFByZXBhcmUgdGhlIHdvcmtlciBzbG90LiAqLwpAQCAtMzgwLDYgKzQxMCw4IEBAIHJldHJ5Ogog CXdvcmtlci0+cmVsc3RhdGUgPSBTVUJSRUxfU1RBVEVfVU5LTk9XTjsKIAl3b3JrZXItPnJlbHN0 YXRlX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCXdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBO VUxMOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtl ciA/IE15UHJvY1BpZCA6IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGlz X3BhcmFsbGVsX2FwcGx5X3dvcmtlcjsKIAl3b3JrZXItPmxhc3RfbHNuID0gSW52YWxpZFhMb2dS ZWNQdHI7CiAJVElNRVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3NlbmRfdGltZSk7CiAJVElN RVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3JlY3ZfdGltZSk7CkBAIC0zOTcsMTkgKzQyOSwz NCBAQCByZXRyeToKIAkJQkdXT1JLRVJfQkFDS0VORF9EQVRBQkFTRV9DT05ORUNUSU9OOwogCWJn dy5iZ3dfc3RhcnRfdGltZSA9IEJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDsKIAlzbnBy aW50ZihiZ3cuYmd3X2xpYnJhcnlfbmFtZSwgQkdXX01BWExFTiwgInBvc3RncmVzIik7Ci0Jc25w cmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWlu Iik7CisKKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3 X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJQYXJhbGxlbEFwcGx5V29ya2VyTWFpbiIpOwor CWVsc2UKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBw bHlXb3JrZXJNYWluIik7CisKIAlpZiAoT2lkSXNWYWxpZChyZWxpZCkpCiAJCXNucHJpbnRmKGJn dy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gJXUgc3luYyAldSIsIHN1YmlkLCByZWxpZCk7CisJZWxzZSBpZiAo aXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19N QVhMRU4sCisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBm b3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwogCWVsc2UKIAkJc25wcmludGYoYmd3LmJnd19u YW1lLCBCR1dfTUFYTEVOLAotCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1 YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKLQlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhM RU4sICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciIpOworCQkJCSAibG9naWNhbCByZXBsaWNh dGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKKworCWlmIChp c19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01B WExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgd29ya2VyIik7CisJZWxzZQorCQlz bnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdv cmtlciIpOwogCiAJYmd3LmJnd19yZXN0YXJ0X3RpbWUgPSBCR1dfTkVWRVJfUkVTVEFSVDsKIAli Z3cuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7CiAJYmd3LmJnd19tYWluX2FyZyA9IEludDMy R2V0RGF0dW0oc2xvdCk7CiAKKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQltZW1j cHkoYmd3LmJnd19leHRyYSwgJnN1Yndvcmtlcl9kc20sIHNpemVvZihkc21faGFuZGxlKSk7CisK IAlpZiAoIVJlZ2lzdGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJmJndywgJmJnd19oYW5kbGUp KQogCXsKIAkJLyogRmFpbGVkIHRvIHN0YXJ0IHdvcmtlciwgc28gY2xlYW4gdXAgdGhlIHdvcmtl ciBzbG90LiAqLwpAQCAtNDIyLDMzICs0NjksMjMgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJS Q09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2Yg YmFja2dyb3VuZCB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQg dG8gaW5jcmVhc2UgbWF4X3dvcmtlcl9wcm9jZXNzZXMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1 cm4gZmFsc2U7CiAJfQogCiAJLyogTm93IHdhaXQgdW50aWwgaXQgYXR0YWNoZXMuICovCi0JV2Fp dEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hhbmRs ZSk7CisJcmV0dXJuIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVy YXRpb24sIGJnd19oYW5kbGUpOwogfQogCiAvKgotICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXIgZm9yIHN1YmlkL3JlbGlkLCBpZiBhbnksIGFuZCB3YWl0IHVudGlsCi0gKiBp dCBkZXRhY2hlcyBmcm9tIHRoZSBzbG90LgorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gc3RvcCB0 aGUgd29ya2VyIGFuZCB3YWl0IHVudGlsIGl0IGRldGFjaGVzIGZyb20gdGhlCisgKiBzbG90Lgog ICovCi12b2lkCi1sb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQor c3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdv cmtlciAqd29ya2VyLCBpbnQgc2lnbm8pCiB7Ci0JTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwog CXVpbnQxNgkJZ2VuZXJhdGlvbjsKIAotCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxv Y2ssIExXX1NIQVJFRCk7Ci0KLQl3b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1Ymlk LCByZWxpZCwgZmFsc2UpOwotCi0JLyogTm8gd29ya2VyLCBub3RoaW5nIHRvIGRvLiAqLwotCWlm ICghd29ya2VyKQotCXsKLQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0J CXJldHVybjsKLQl9CisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2RlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrLCBMV19TSEFSRUQpKTsKIAogCS8qCiAJICogUmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlv biB3YXMgb3VyIHdvcmtlciBzbyB3ZSBjYW4gY2hlY2sgaWYgd2hhdCB3ZSBzZWUKQEAgLTQ4Niwx MCArNTIzLDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkK IAkJICogZGlmZmVyZW50LCBtZWFuaW5nIHRoYXQgYSBkaWZmZXJlbnQgd29ya2VyIGhhcyB0YWtl biB0aGUgc2xvdC4KIAkJICovCiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5nZW5l cmF0aW9uICE9IGdlbmVyYXRpb24pCi0JCXsKLQkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdv cmtlckxvY2spOwogCQkJcmV0dXJuOwotCQl9CiAKIAkJLyogV29ya2VyIGhhcyBhc3NpZ25lZCBw cm9jLCBzbyBpdCBoYXMgc3RhcnRlZC4gKi8KIAkJaWYgKHdvcmtlci0+cHJvYykKQEAgLTQ5Nyw3 ICs1MzEsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQog CX0KIAogCS8qIE5vdyB0ZXJtaW5hdGUgdGhlIHdvcmtlciAuLi4gKi8KLQlraWxsKHdvcmtlci0+ cHJvYy0+cGlkLCBTSUdURVJNKTsKKwlraWxsKHdvcmtlci0+cHJvYy0+cGlkLCBzaWdubyk7CiAK IAkvKiAuLi4gYW5kIHdhaXQgZm9yIGl0IHRvIGRpZS4gKi8KIAlmb3IgKDs7KQpAQCAtNTIzLDYg KzU1Nyw1MyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQog CiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAJfQor fQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1Ymlk L3JlbGlkLCBpZiBhbnkuCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1 YmlkLCBPaWQgcmVsaWQpCit7CisJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOworCisJTFdMb2Nr QWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCXdvcmtlciA9IGxv Z2ljYWxyZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJlbGlkLCBmYWxzZSk7CisKKwlpZiAod29ya2Vy KQorCXsKKwkJQXNzZXJ0KCFpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSk7CisJCWxvZ2lj YWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyLCBTSUdURVJNKTsKKwl9CisKKwlMV0xv Y2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKK30KKworLyoKKyAqIFN0b3AgdGhlIGxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNvcnJlc3BvbmRpbmcgdG8g dGhlCisgKiBpbnB1dCBzbG90IG51bWJlci4KKyAqCisgKiBOb2RlIHRoYXQgdGhlIGZ1bmN0aW9u IHNlbmRzIFNJR0lOVCBpbnN0ZWFkIG9mIFNJR1RFUk0gdG8gdGhlIHBhcmFsbGVsIGFwcGx5Cisg KiB3b3JrZXIgc28gdGhhdCB0aGUgd29ya2VyIGV4aXRzIGNsZWFubHkuCisgKi8KK3ZvaWQKK2xv Z2ljYWxyZXBfcGFfd29ya2VyX3N0b3AoaW50IHNsb3Rfbm8sIHVpbnQxNiBnZW5lcmF0aW9uKQor eworCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcjsKKworCUFzc2VydChzbG90X25vID49IDAgJiYg c2xvdF9ubyA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMpOworCisJTFdMb2NrQWNx dWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCXdvcmtlciA9ICZMb2dp Y2FsUmVwQ3R4LT53b3JrZXJzW3Nsb3Rfbm9dOworCUFzc2VydChpc1BhcmFsbGVsQXBwbHlXb3Jr ZXIod29ya2VyKSk7CisKKwkvKgorCSAqIE9ubHkgc3RvcCB0aGUgd29ya2VyIGlmIHRoZSBnZW5l cmF0aW9uIG1hdGNoZXMgYW5kIHRoZSB3b3JrZXIgaXMgYWxpdmUuCisJICovCisJaWYgKHdvcmtl ci0+Z2VuZXJhdGlvbiA9PSBnZW5lcmF0aW9uICYmIHdvcmtlci0+cHJvYykKKwkJbG9naWNhbHJl cF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIsIFNJR0lOVCk7CiAKIAlMV0xvY2tSZWxlYXNl KExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIH0KQEAgLTU5NSwxMSArNjc2LDQwIEBAIGxvZ2ljYWxy ZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCkKIH0KIAogLyoKLSAqIERldGFjaCB0aGUgd29ya2Vy IChjbGVhbnMgdXAgdGhlIHdvcmtlciBpbmZvKS4KKyAqIFN0b3AgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMgaWYgYW55LCBhbmQgZGV0YWNoIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgKiAo Y2xlYW5zIHVwIHRoZSB3b3JrZXIgaW5mbykuCiAgKi8KIHN0YXRpYyB2b2lkCiBsb2dpY2FscmVw X3dvcmtlcl9kZXRhY2godm9pZCkKIHsKKwkvKiBTdG9wIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzLiAqLworCWlmIChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJeworCQlMaXN0CSAgICp3 b3JrZXJzOworCQlMaXN0Q2VsbCAgICpsYzsKKworCQkvKgorCQkgKiBEZXRhY2ggZnJvbSB0aGUg ZXJyb3JfbXFfaGFuZGxlIGZvciBhbGwgcGFyYWxsZWwgYXBwbHkgd29ya2VycworCQkgKiBiZWZv cmUgdGVybWluYXRpbmcgdGhlbS4gVGhpcyBwcmV2ZW50cyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciBmcm9tCisJCSAqIHJlY2VpdmluZyB0aGUgd29ya2VyIHRlcm1pbmF0aW9uIG1lc3NhZ2UgYW5k IHNlbmRpbmcgaXQgdG8gbG9ncworCQkgKiB3aGVuIHRoZSBzYW1lIGlzIGFscmVhZHkgZG9uZSBi eSB0aGUgcGFyYWxsZWwgd29ya2VyLgorCQkgKi8KKwkJcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSgp OworCisJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisK KwkJd29ya2VycyA9IGxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHRydWUpOworCQlmb3JlYWNoKGxjLCB3b3JrZXJzKQorCQl7CisJCQlMb2dpY2FsUmVw V29ya2VyICp3ID0gKExvZ2ljYWxSZXBXb3JrZXIgKikgbGZpcnN0KGxjKTsKKworCQkJaWYgKGlz UGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVy bmFsKHcsIFNJR1RFUk0pOworCQl9CisKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7CisJfQorCiAJLyogQmxvY2sgY29uY3VycmVudCBhY2Nlc3MuICovCiAJTFdMb2NrQWNx dWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfRVhDTFVTSVZFKTsKIApAQCAtNjIyLDYgKzcz Miw4IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2Vy KQogCXdvcmtlci0+dXNlcmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnN1YmlkID0gSW52YWxp ZE9pZDsKIAl3b3JrZXItPnJlbGlkID0gSW52YWxpZE9pZDsKKwl3b3JrZXItPmFwcGx5X2xlYWRl cl9waWQgPSBJbnZhbGlkUGlkOworCXdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKIH0K IAogLyoKQEAgLTY1Myw2ICs3NjUsMTMgQEAgbG9naWNhbHJlcF93b3JrZXJfb25leGl0KGludCBj b2RlLCBEYXR1bSBhcmcpCiAJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQg IT0gTlVMTCkKIAkJRmlsZVNldERlbGV0ZUFsbChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9m aWxlc2V0KTsKIAorCS8qCisJICogU2Vzc2lvbiBsZXZlbCBsb2NrcyBtYXkgYmUgYWNxdWlyZWQg b3V0c2lkZSBvZiBhIHRyYW5zYWN0aW9uIGluCisJICogcGFyYWxsZWwgYXBwbHkgbW9kZSBhbmQg d2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUgd29ya2VyCisJICogdGVybWluYXRlcywgc28g bWFudWFsbHkgcmVsZWFzZSBhbGwgbG9ja3MgYmVmb3JlIHRoZSB3b3JrZXIgZXhpdHMuCisJICov CisJTG9ja1JlbGVhc2VBbGwoREVGQVVMVF9MT0NLTUVUSE9ELCB0cnVlKTsKKwogCUFwcGx5TGF1 bmNoZXJXYWtldXAoKTsKIH0KIApAQCAtNjgwLDYgKzc5OSwzMyBAQCBsb2dpY2FscmVwX3N5bmNf d29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIAlyZXR1cm4gcmVzOwogfQogCisvKgorICogQ291bnQg dGhlIG51bWJlciBvZiByZWdpc3RlcmVkIChidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bm5pbmcpIHBh cmFsbGVsIGFwcGx5CisgKiB3b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworc3RhdGlj IGludAorbG9naWNhbHJlcF9wYV93b3JrZXJfY291bnQoT2lkIHN1YmlkKQoreworCWludAkJCWk7 CisJaW50CQkJcmVzID0gMDsKKworCUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29y a2VyTG9jaykpOworCisJLyoKKwkgKiBTY2FuIGFsbCBhdHRhY2hlZCBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzLCBvbmx5IGNvdW50aW5nIHRob3NlIHdoaWNoCisJICogaGF2ZSB0aGUgZ2l2ZW4gc3Vi c2NyaXB0aW9uIGlkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNh dGlvbl93b3JrZXJzOyBpKyspCisJeworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxS ZXBDdHgtPndvcmtlcnNbaV07CisKKwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYmIGlzUGFyYWxs ZWxBcHBseVdvcmtlcih3KSkKKwkJCXJlcysrOworCX0KKworCXJldHVybiByZXM7Cit9CisKIC8q CiAgKiBBcHBseUxhdW5jaGVyU2htZW1TaXplCiAgKgkJQ29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9y IHJlcGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJlZCBtZW1vcnkKQEAgLTg2OSw3ICsxMDE1LDcgQEAg QXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCXdhaXRfdGltZSA9IHdhbF9y ZXRyaWV2ZV9yZXRyeV9pbnRlcnZhbDsKIAogCQkJCQlsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2go c3ViLT5kYmlkLCBzdWItPm9pZCwgc3ViLT5uYW1lLAotCQkJCQkJCQkJCQkgc3ViLT5vd25lciwg SW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkLCBEU01fSEFO RExFX0lOVkFMSUQpOwogCQkJCX0KIAkJCX0KIApAQCAtOTUyLDYgKzEwOTgsMTAgQEAgcGdfc3Rh dF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWlmIChPaWRJc1ZhbGlkKHN1 YmlkKSAmJiB3b3JrZXIuc3ViaWQgIT0gc3ViaWQpCiAJCQljb250aW51ZTsKIAorCQkvKiBTa2lw IGlmIHRoaXMgaXMgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKi8KKwkJaWYgKGlzUGFyYWxsZWxB cHBseVdvcmtlcigmd29ya2VyKSkKKwkJCWNvbnRpbnVlOworCiAJCXdvcmtlcl9waWQgPSB3b3Jr ZXIucHJvYy0+cGlkOwogCiAJCXZhbHVlc1swXSA9IE9iamVjdElkR2V0RGF0dW0od29ya2VyLnN1 YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24u YnVpbGQgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCmluZGV4 IDcxNDRkN2E4YTQuLmQ0OGNkNGM1OTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9tZXNvbi5idWlsZApAQCAtMSw2ICsxLDcgQEAKICMgQ29weXJpZ2h0IChjKSAyMDIyLTIw MjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKIGJhY2tlbmRfc291cmNl cyArPSBmaWxlcygKKyAgJ2FwcGx5cGFyYWxsZWx3b3JrZXIuYycsCiAgICdkZWNvZGUuYycsCiAg ICdsYXVuY2hlci5jJywKICAgJ2xvZ2ljYWwuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9vcmlnaW4uYwppbmRleCBmYzg2NzY4ZWQ2Li5iNzU0YzQzODQwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTEwNzUsMTIgKzEwNzUsMjAgQEAgUmVw bGljYXRpb25PcmlnaW5FeGl0Q2xlYW51cChpbnQgY29kZSwgRGF0dW0gYXJnKQogICogYXJyYXkg ZG9lc24ndCBoYXZlIHRvIGJlIHNlYXJjaGVkIHdoZW4gY2FsbGluZwogICogcmVwbG9yaWdpbl9z ZXNzaW9uX2FkdmFuY2UoKS4KICAqCi0gKiBPYnZpb3VzbHkgb25seSBvbmUgc3VjaCBjYWNoZWQg b3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2VzcyBhbmQgdGhlIGN1cnJlbnQKLSAqIGNhY2hlZCB2 YWx1ZSBjYW4gb25seSBiZSBzZXQgYWdhaW4gYWZ0ZXIgdGhlIHByZXZpb3VzIHZhbHVlIGlzIHRv cm4gZG93bgotICogd2l0aCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKS4KKyAqIE5vcm1hbGx5 IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3Mgc28gdGhl IGNhY2hlZAorICogdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWluIGFmdGVyIHRoZSBwcmV2aW91 cyB2YWx1ZSBpcyB0b3JuIGRvd24gd2l0aAorICogcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCku IEZvciB0aGlzIG5vcm1hbCBjYXNlIHBhc3MgYWNxdWlyZWRfYnkgPSAwCisgKiAobWVhbmluZyB0 aGUgc2xvdCBpcyBub3QgYWxsb3dlZCB0byBiZSBhbHJlYWR5IGFjcXVpcmVkIGJ5IGFub3RoZXIg cHJvY2VzcykuCisgKgorICogSG93ZXZlciwgc29tZXRpbWVzIG11bHRpcGxlIHByb2Nlc3NlcyBj YW4gc2FmZWx5IHJlLXVzZSB0aGUgc2FtZSBvcmlnaW4gc2xvdAorICogKGZvciBleGFtcGxlLCBt dWx0aXBsZSBwYXJhbGxlbCBhcHBseSBwcm9jZXNzZXMgY2FuIHNhZmVseSB1c2UgdGhlIHNhbWUK KyAqIG9yaWdpbiwgcHJvdmlkZWQgdGhleSBtYWludGFpbiBjb21taXQgb3JkZXIgYnkgYWxsb3dp bmcgb25seSBvbmUgcHJvY2VzcyB0bworICogY29tbWl0IGF0IGEgdGltZSkuIEZvciB0aGlzIGNh c2UgdGhlIGZpcnN0IHByb2Nlc3MgbXVzdCBwYXNzIGFjcXVpcmVkX2J5ID0KKyAqIDAsIGFuZCB0 aGVuIHRoZSBvdGhlciBwcm9jZXNzZXMgc2hhcmluZyB0aGF0IHNhbWUgb3JpZ2luIGNhbiBwYXNz CisgKiBhY3F1aXJlZF9ieSA9IFBJRCBvZiB0aGUgZmlyc3QgcHJvY2Vzcy4KICAqLwogdm9pZAot cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCityZXBsb3JpZ2luX3Nl c3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KQogewogCXN0YXRp YyBib29sIHJlZ2lzdGVyZWRfY2xlYW51cDsKIAlpbnQJCQlpOwpAQCAtMTEyMiw3ICsxMTMwLDcg QEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAJCWlmIChjdXJz dGF0ZS0+cm9pZGVudCAhPSBub2RlKQogCQkJY29udGludWU7CiAKLQkJZWxzZSBpZiAoY3Vyc3Rh dGUtPmFjcXVpcmVkX2J5ICE9IDApCisJCWVsc2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAh PSAwICYmIGFjcXVpcmVkX2J5ID09IDApCiAJCXsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShl cnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VTRSksCkBAIC0xMTUzLDcgKzExNjEsMTEgQEAgcmVw bG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAKIAlBc3NlcnQoc2Vzc2lv bl9yZXBsaWNhdGlvbl9zdGF0ZS0+cm9pZGVudCAhPSBJbnZhbGlkUmVwT3JpZ2luSWQpOwogCi0J c2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJaWYg KGFjcXVpcmVkX2J5ID09IDApCisJCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVk X2J5ID0gTXlQcm9jUGlkOworCWVsc2UgaWYgKHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFj cXVpcmVkX2J5ICE9IGFjcXVpcmVkX2J5KQorCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQg cmVwbGljYXRpb24gc3RhdGUgc2xvdCBmb3IgcmVwbGljYXRpb24gb3JpZ2luIHdpdGggT0lEICV1 IHdoaWNoIHdhcyBhY3F1aXJlZCBieSAlZCIsCisJCQkgbm9kZSwgYWNxdWlyZWRfYnkpOwogCiAJ TFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvbk9yaWdpbkxvY2spOwogCkBAIC0xMzM3LDcgKzEzNDks NyBAQCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cChQR19GVU5DVElPTl9BUkdT KQogCiAJbmFtZSA9IHRleHRfdG9fY3N0cmluZygodGV4dCAqKSBEYXR1bUdldFBvaW50ZXIoUEdf R0VUQVJHX0RBVFVNKDApKSk7CiAJb3JpZ2luID0gcmVwbG9yaWdpbl9ieV9uYW1lKG5hbWUsIGZh bHNlKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luKTsKKwlyZXBsb3JpZ2luX3Nl c3Npb25fc2V0dXAob3JpZ2luLCAwKTsKIAogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBv cmlnaW47CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJv dG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBkMDBl OTBkZDVlLi4zYTlkNTNhNjFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90 by5jCkBAIC0xMTY0LDEwICsxMTY0LDE0IEBAIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0 KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIC8qCiAg KiBXcml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhlIG91dHB1dCBzdHJlYW0uIE5vdGUgdGhhdCB4aWQg YW5kIHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1lIGZvciB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9u IGFib3J0LgorICoKKyAqIElmIHdyaXRlX2Fib3J0X2luZm8gaXMgdHJ1ZSwgc2VuZCB0aGUgYWJv cnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVyd2lzZSBkb24ndC4KICAqLwog dm9pZAogbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5z YWN0aW9uSWQgeGlkLAotCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCisJCQkJCQkJICBU cmFuc2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJICBUaW1l c3RhbXBUeiBhYm9ydF90aW1lLCBib29sIHdyaXRlX2Fib3J0X2luZm8pCiB7CiAJcHFfc2VuZGJ5 dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JUKTsKIApAQCAtMTE3NiwxOSArMTE4 MCw0MCBAQCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJh bnNhY3Rpb25JZCB4aWQsCiAJLyogdHJhbnNhY3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIob3V0 LCB4aWQpOwogCXBxX3NlbmRpbnQzMihvdXQsIHN1YnhpZCk7CisKKwlpZiAod3JpdGVfYWJvcnRf aW5mbykKKwl7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X2xzbik7CisJCXBxX3NlbmRpbnQ2 NChvdXQsIGFib3J0X3RpbWUpOworCX0KIH0KIAogLyoKICAqIFJlYWQgU1RSRUFNIEFCT1JUIGZy b20gdGhlIG91dHB1dCBzdHJlYW0uCisgKgorICogSWYgcmVhZF9hYm9ydF9pbmZvIGlzIHRydWUs IHJlYWQgdGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2Ug ZG9uJ3QuCiAgKi8KIHZvaWQKLWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5m byBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQp Citsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJIExv Z2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJIGJvb2wgcmVhZF9h Ym9ydF9pbmZvKQogewotCUFzc2VydCh4aWQgJiYgc3VieGlkKTsKKwlBc3NlcnQoYWJvcnRfZGF0 YSk7CisKKwlhYm9ydF9kYXRhLT54aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2Rh dGEtPnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CiAKLQkqeGlkID0gcHFfZ2V0bXNnaW50 KGluLCA0KTsKLQkqc3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlpZiAocmVhZF9hYm9y dF9pbmZvKQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gcHFfZ2V0bXNnaW50NjQoaW4p OworCQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCX0KKwll bHNlCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJ YWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IDA7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCBmMjg0ZmMyZTMwLi42 NmZiMDM5MDNiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jl b3JkZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3Jk ZXJidWZmZXIuYwpAQCAtMjg3Myw3ICsyODczLDggQEAgUmVvcmRlckJ1ZmZlckZpbmlzaFByZXBh cmVkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKICAqIGRpc2suCiAgKi8K IHZvaWQKLVJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25J ZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIg KnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJICAgVGltZXN0YW1w VHogYWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47CiAKQEAgLTI4ODQsNiAr Mjg4NSw4IEBAIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rp b25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJuOwog CisJdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CisKIAkvKiBGb3Igc3Ry ZWFtZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0 LiAqLwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDJmZGZlYjViNGMuLjAxNmQwYTQ4Mzgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMTQs NyArMTQsNyBAQAogICoJICBUaGUgaW5pdGlhbCBkYXRhIHN5bmNocm9uaXphdGlvbiBpcyBkb25l IHNlcGFyYXRlbHkgZm9yIGVhY2ggdGFibGUsCiAgKgkgIGluIGEgc2VwYXJhdGUgYXBwbHkgd29y a2VyIHRoYXQgb25seSBmZXRjaGVzIHRoZSBpbml0aWFsIHNuYXBzaG90IGRhdGEKICAqCSAgZnJv bSB0aGUgcHVibGlzaGVyIGFuZCB0aGVuIHN5bmNocm9uaXplcyB0aGUgcG9zaXRpb24gaW4gdGhl IHN0cmVhbSB3aXRoCi0gKgkgIHRoZSBtYWluIGFwcGx5IHdvcmtlci4KKyAqCSAgdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIuCiAgKgogICoJICBUaGVyZSBhcmUgc2V2ZXJhbCByZWFzb25zIGZvciBk b2luZyB0aGUgc3luY2hyb25pemF0aW9uIHRoaXMgd2F5OgogICoJICAgLSBJdCBhbGxvd3MgdXMg dG8gcGFyYWxsZWxpemUgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24KQEAgLTE1Myw3 ICsxNTMsNyBAQCBmaW5pc2hfc3luY193b3JrZXIodm9pZCkKIAkJCQkJZ2V0X3JlbF9uYW1lKE15 TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCi0JLyogRmluZCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgYW5kIHNpZ25hbCBpdC4gKi8KKwkv KiBGaW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBzaWduYWwgaXQuICovCiAJbG9naWNh bHJlcF93b3JrZXJfd2FrZXVwKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIEludmFsaWRPaWQp OwogCiAJLyogU3RvcCBncmFjZWZ1bGx5ICovCkBAIC02MDksNyArNjA5LDggQEAgcHJvY2Vzc19z eW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIAkJCQkJCQkJ CQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5u YW1lLAogCQkJCQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAotCQkJCQkJCQkJ CQkJIHJzdGF0ZS0+cmVsaWQpOworCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQsCisJCQkJCQkJ CQkJCQkgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQkJCWhlbnRyeS0+bGFzdF9zdGFydF90aW1l ID0gbm93OwogCQkJCQl9CiAJCQkJfQpAQCAtNjMwLDYgKzYzMSwxNCBAQCBwcm9jZXNzX3N5bmNp bmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogdm9pZAogcHJvY2Vz c19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogeworCS8qCisJICogU2tp cCBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBiZWNhdXNlIHRoZXkgb25seSBvcGVyYXRlIG9u IHRhYmxlcworCSAqIHRoYXQgYXJlIGluIGEgUkVBRFkgc3RhdGUuIFNlZSBwYV9jYW5fc3RhcnQo KSBhbmQKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKCkuCisJICovCisJaWYgKGFt X3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAlpZiAoYW1fdGFibGVzeW5j X3dvcmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9zeW5jKGN1cnJlbnRfbHNu KTsKIAllbHNlCkBAIC0xMjQ3LDcgKzEyNTYsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQo WExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCiAJLyoKIAkgKiBIZXJlIHdlIHVzZSB0aGUg c2xvdCBuYW1lIGluc3RlYWQgb2YgdGhlIHN1YnNjcmlwdGlvbiBuYW1lIGFzIHRoZQotCSAqIGFw cGxpY2F0aW9uX25hbWUsIHNvIHRoYXQgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG1haW4gYXBw bHkgd29ya2VyLAorCSAqIGFwcGxpY2F0aW9uX25hbWUsIHNvIHRoYXQgaXQgaXMgZGlmZmVyZW50 IGZyb20gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsCiAJICogc28gdGhhdCBzeW5jaHJvbm91cyBy ZXBsaWNhdGlvbiBjYW4gZGlzdGluZ3Vpc2ggdGhlbS4KIAkgKi8KIAlMb2dSZXBXb3JrZXJXYWxS Y3ZDb25uID0KQEAgLTEyOTUsNyArMTMwNCw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChY TG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCSAqIHRpbWUgdGhpcyB0YWJsZXN5bmMgd2Fz IGxhdW5jaGVkLgogCQkgKi8KIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lu bmFtZSwgZmFsc2UpOwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQly ZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJCSpvcmlnaW5fc3RhcnRwb3MgPSByZXBsb3JpZ2luX3Nl c3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIApAQCAtMTQwNiw3ICsxNDE1LDcgQEAgTG9naWNh bFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJCQkJCSAg IHRydWUgLyogZ28gYmFja3dhcmQgKi8gLCB0cnVlIC8qIFdBTCBsb2cgKi8gKTsKIAkJVW5sb2Nr UmVsYXRpb25PaWQoUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKIAotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQlyZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu ID0gb3JpZ2luaWQ7CiAJfQogCWVsc2UKQEAgLTE0NjEsOCArMTQ3MCw4IEBAIGNvcHlfdGFibGVf ZG9uZToKIAlTcGluTG9ja1JlbGVhc2UoJk15TG9naWNhbFJlcFdvcmtlci0+cmVsbXV0ZXgpOwog CiAJLyoKLQkgKiBGaW5hbGx5LCB3YWl0IHVudGlsIHRoZSBtYWluIGFwcGx5IHdvcmtlciB0ZWxs cyB1cyB0byBjYXRjaCB1cCBhbmQgdGhlbgotCSAqIHJldHVybiB0byBsZXQgTG9naWNhbFJlcEFw cGx5TG9vcCBkbyBpdC4KKwkgKiBGaW5hbGx5LCB3YWl0IHVudGlsIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIHRlbGxzIHVzIHRvIGNhdGNoIHVwIGFuZAorCSAqIHRoZW4gcmV0dXJuIHRvIGxldCBM b2dpY2FsUmVwQXBwbHlMb29wIGRvIGl0LgogCSAqLwogCXdhaXRfZm9yX3dvcmtlcl9zdGF0ZV9j aGFuZ2UoU1VCUkVMX1NUQVRFX0NBVENIVVApOwogCXJldHVybiBzbG90bmFtZTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDQ0NmY4NGZhOTcuLjM3NTcyZGIz OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjIsOCAr MjIsMTIgQEAKICAqIFNUUkVBTUVEIFRSQU5TQUNUSU9OUwogICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKiBTdHJlYW1lZCB0cmFuc2FjdGlvbnMgKGxhcmdlIHRyYW5zYWN0aW9ucyBleGNlZWRp bmcgYSBtZW1vcnkgbGltaXQgb24gdGhlCi0gKiB1cHN0cmVhbSkgYXJlIG5vdCBhcHBsaWVkIGlt bWVkaWF0ZWx5LCBidXQgaW5zdGVhZCwgdGhlIGRhdGEgaXMgd3JpdHRlbgotICogdG8gdGVtcG9y YXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBmaW5hbCBjb21taXQg YXJyaXZlcy4KKyAqIHVwc3RyZWFtKSBhcmUgYXBwbGllZCB1c2luZyBvbmUgb2YgdHdvIGFwcHJv YWNoZXM6CisgKgorICogMSkgV3JpdGUgdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBseSB3aGVu IHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcworICoKKyAqIFRoaXMgYXBwcm9hY2ggaXMgdXNlZCB3 aGVuIHRoZSB1c2VyIGhhcyBzZXQgdGhlIHN1YnNjcmlwdGlvbidzIHN0cmVhbWluZworICogb3B0 aW9uIGFzIG9uLgogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAobm9uLXN0cmVhbWVkKSBjYXNl LCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAgKiB0byBoYW5kbGUgYWJvcnRz IG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlvbnMuIFRo aXMKQEAgLTUwLDYgKzU0LDEyIEBACiAgKiB0aGUgZmlsZSB3ZSBkZXNpcmVkIGFjcm9zcyBtdWx0 aXBsZSBzdHJlYW0tb3BlbiBjYWxscyBmb3IgdGhlIHNhbWUKICAqIHRyYW5zYWN0aW9uLgogICoK KyAqIDIpIFBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgorICogVGhpcyBhcHByb2FjaCBpcyB1 c2VkIHdoZW4gdGhlIHVzZXIgaGFzIHNldCB0aGUgc3Vic2NyaXB0aW9uJ3Mgc3RyZWFtaW5nCisg KiBvcHRpb24gYXMgcGFyYWxsZWwuIFNlZSBsb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBm b3IgaW5mb3JtYXRpb24gYWJvdXQKKyAqIHRoaXMgYXBwcm9hY2guCisgKgogICogVFdPX1BIQVNF IFRSQU5TQUNUSU9OUwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVHdvIHBoYXNlIHRy YW5zYWN0aW9ucyBhcmUgcmVwbGF5ZWQgYXQgcHJlcGFyZSBhbmQgdGhlbiBjb21taXR0ZWQgb3IK QEAgLTIzMyw3ICsyNDMsNTIgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJn CiAJY2hhcgkgICAqb3JpZ2luX25hbWU7CiB9IEFwcGx5RXJyb3JDYWxsYmFja0FyZzsKIAotc3Rh dGljIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQorLyoK KyAqIFRoZSBhY3Rpb24gdG8gYmUgdGFrZW4gZm9yIHRoZSBjaGFuZ2VzIGluIHRoZSB0cmFuc2Fj dGlvbi4KKyAqCisgKiBUUkFOU19MRUFERVJfQVBQTFk6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0 aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgY2hhbmdlcyBvZiB0aGUK KyAqIHRyYW5zYWN0aW9uIGFyZSBhcHBsaWVkIGRpcmVjdGx5IGJ5IHRoZSB3b3JrZXIuCisgKgor ICogVFJBTlNfTEVBREVSX1NFUklBTElaRToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2Ug YXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5bmMKKyAqIHdvcmtlci4g Q2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCB3 aGVuIHRoZQorICogZmluYWwgY29tbWl0IGFycml2ZXMuCisgKgorICogVFJBTlNfTEVBREVSX1NF TkRfVE9fUEFSQUxMRUw6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgbmVlZCB0byBzZW5kCisgKiB0aGUgY2hhbmdlcyB0byB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NF UklBTElaRToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIGFuZCBoYXZlIHNlbnQgc29tZQorICogY2hhbmdlcyBkaXJlY3RseSB0byB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZCB0aGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlCisg KiBzZXJpYWxpemVkIHRvIGEgZmlsZSwgZHVlIHRvIHRpbWVvdXQgd2hpbGUgc2VuZGluZyBkYXRh LiBUaGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciB3aWxsIGFwcGx5IHRoZXNlIHNlcmlhbGl6 ZWQgY2hhbmdlcyB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcy4KKyAqCisgKiBXZSBjYW4n dCB1c2UgVFJBTlNfTEVBREVSX1NFUklBTElaRSBmb3IgdGhpcyBjYXNlIGJlY2F1c2UsIGluIGFk ZGl0aW9uIHRvCisgKiBzZXJpYWxpemluZyBjaGFuZ2VzLCB0aGUgbGVhZGVyIHdvcmtlciBhbHNv IG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKyAqIFNUUkVBTV9YWFggbWVzc2FnZSB0byBhIGZpbGUs IGFuZCB3YWl0IGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvCisgKiBmaW5pc2ggdGhl IHRyYW5zYWN0aW9uIHdoZW4gcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1h bmQuIFNvCisgKiB0aGlzIG5ldyBhY3Rpb24gd2FzIGludHJvZHVjZWQgdG8ga2VlcCB0aGUgY29k ZSBhbmQgbG9naWMgY2xlYXIuCisgKgorICogVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisgKiBUaGlz IGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFu ZCBjaGFuZ2VzIG9mCisgKiB0aGUgdHJhbnNhY3Rpb24gYXJlIGFwcGxpZWQgZGlyZWN0bHkgYnkg dGhlIHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVtCit7CisJLyogVGhlIGFjdGlvbiBmb3Igbm9u LXN0cmVhbWluZyB0cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVSX0FQUExZLAorCisJLyog QWN0aW9ucyBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfU0VS SUFMSVpFLAorCVRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMLAorCVRSQU5TX0xFQURFUl9Q QVJUSUFMX1NFUklBTElaRSwKKwlUUkFOU19QQVJBTExFTF9BUFBMWQorfSBUcmFuc0FwcGx5QWN0 aW9uOworCisvKiBlcnJjb250ZXh0IHRyYWNrZXIgKi8KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBh cHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVM TCwKQEAgLTI0Myw3ICsyOTgsOSBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5 X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRp YyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOworRXJyb3JDb250ZXh0 Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBOVUxMOworCitNZW1vcnlDb250 ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwogTWVtb3J5Q29udGV4dCBBcHBseUNvbnRl eHQgPSBOVUxMOwogCiAvKiBwZXIgc3RyZWFtIGNvbnRleHQgZm9yIHN0cmVhbWluZyB0cmFuc2Fj dGlvbnMgKi8KQEAgLTI2MiwxNyArMzE5LDI2IEBAIHN0YXRpYyBib29sIGluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uID0gZmFsc2U7CiAKIHN0YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKIAorLyoKKyAqIFRoZSBudW1iZXIgb2YgY2hhbmdlcyBhcHBs aWVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkdXJpbmcgb25lIHN0cmVhbWluZworICogYmxv Y2suCisgKi8KK3N0YXRpYyB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKKwog LyoKICAqIFdlIGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyAo SU5TRVJULCBVUERBVEUsIGV0Yy4pIGZvcgogICogdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcmVt b3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVzIHRoZSBzdWJza2lwbHNuLgogICog T25jZSB3ZSBzdGFydCBza2lwcGluZyBjaGFuZ2VzLCB3ZSBkb24ndCBzdG9wIGl0IHVudGlsIHdl IHNraXAgYWxsIGNoYW5nZXMgb2YKICAqIHRoZSB0cmFuc2FjdGlvbiBldmVuIGlmIHBnX3N1YnNj cmlwdGlvbiBpcyB1cGRhdGVkIGFuZCBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbgotICogZ2V0cyBj aGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gY2FzZXMsIHdlCi0gKiBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNo YW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CisgKiBnZXRzIGNoYW5nZWQgb3Ig cmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcyAo c3RyZWFtaW5nID0gb24pLAorICogd2UgZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5n IHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAogICogdG8gc2tpcCBh cHBseWluZyB0aGUgY2hhbmdlcyB3aGVuIHN0YXJ0aW5nIHRvIGFwcGx5IGNoYW5nZXMuIFRoZSBz dWJza2lwbHNuIGlzCiAgKiBjbGVhcmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBza2lwcGluZyB0aGUg dHJhbnNhY3Rpb24gb3IgYXBwbHlpbmcgbm9uLWVtcHR5CiAgKiB0cmFuc2FjdGlvbi4gVGhlIGxh dHRlciBwcmV2ZW50cyB0aGUgbWlzdGFrZW5seSBzcGVjaWZpZWQgc3Vic2tpcGxzbiBmcm9tCi0g KiBiZWluZyBsZWZ0LgorICogYmVpbmcgbGVmdC4gTm90ZSB0aGF0IHdlIGNhbm5vdCBza2lwIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHdoZW4gdXNpbmcKKyAqIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZSBhcHBseWlu ZworICogdGhlIGNoYW5nZXMuIFNvLCB3ZSBkb24ndCBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgd2hlbiBmaW5pc2ggTFNOIGlzIHNldAorICogYnkgdGhlIHVzZXIuCiAgKi8KIHN0YXRpYyBY TG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVm aW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQo c2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAgLTMxMiwyMyArMzc4LDE2IEBAIHN0YXRpYyBpbmxp bmUgdm9pZCBjbGVhbnVwX3N1YnhhY3RfaW5mbyh2b2lkKTsKIC8qCiAgKiBTZXJpYWxpemUgYW5k IGRlc2VyaWFsaXplIGNoYW5nZXMgZm9yIGEgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCiAgKi8KLXN0 YXRpYyB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4 aWQpOwogc3RhdGljIHZvaWQgc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9u SWQgeGlkLAogCQkJCQkJCSBib29sIGZpcnN0X3NlZ21lbnQpOwogc3RhdGljIHZvaWQgc3RyZWFt X3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKK3N0YXRpYyB2b2lkIHN0 cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgYWN0aW9u LCBTdHJpbmdJbmZvIHMpOwogc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAK IHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNl LCBib29sIHJlcXVlc3RSZXBseSk7CiAKLXN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9u KFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7Ci0KLXN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJz Y3JpcHRpb24odm9pZCk7Ci0KIHN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0 KHZvaWQpOwogCi0vKiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAq Lwotc3RhdGljIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZv aWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29t bWl0X2RhdGEpOwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBs eUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZv LApAQCAtMzUyLDE5ICs0MTEsMzIgQEAgc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX3R1cGxlX3Jv dXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIC8qIENvbXB1dGUgR0lEIGZvciB0d29f cGhhc2UgdHJhbnNhY3Rpb25zICovCiBzdGF0aWMgdm9pZCBUd29QaGFzZVRyYW5zYWN0aW9uR2lk KE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKmdpZCwgaW50IHN6Z2lkKTsKIAot LyogQ29tbW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVz c2FnZXMgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25J ZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKLQogLyogRnVuY3Rpb25zIGZvciBza2lwcGluZyBjaGFu Z2VzICovCiBzdGF0aWMgdm9pZCBtYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKFhMb2dSZWNQ dHIgZmluaXNoX2xzbik7CiBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7 CiBzdGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5p c2hfbHNuKTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3Rh dGljIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUg dm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9n UmVjUHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF9pbmZvKHZvaWQpOwogCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25f YXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqKndpbmZvKTsKKworLyoKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUg bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2dl dF93b3JrZXJfbmFtZSh2b2lkKQoreworCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCisJCXJl dHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIi KTsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIF8oImxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIik7CisJZWxzZQorCQlyZXR1 cm4gXygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKTsKK30KKwogLyoKICAqIEZv cm0gdGhlIG9yaWdpbiBuYW1lIGZvciB0aGUgc3Vic2NyaXB0aW9uLgogICoKQEAgLTM5NCwxOSAr NDY2LDQzIEBAIFJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoT2lkIHN1Ym9pZCwg T2lkIHJlbGlkLAogICoKICAqIFRoaXMgaXMgbWFpbmx5IG5lZWRlZCBmb3IgaW5pdGlhbCByZWxh dGlvbiBkYXRhIHN5bmMgYXMgdGhhdCBydW5zIGluCiAgKiBzZXBhcmF0ZSB3b3JrZXIgcHJvY2Vz cyBydW5uaW5nIGluIHBhcmFsbGVsIGFuZCB3ZSBuZWVkIHNvbWUgd2F5IHRvIHNraXAKLSAqIGNo YW5nZXMgY29taW5nIHRvIHRoZSBtYWluIGFwcGx5IHdvcmtlciBkdXJpbmcgdGhlIHN5bmMgb2Yg YSB0YWJsZS4KKyAqIGNoYW5nZXMgY29taW5nIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1 cmluZyB0aGUgc3luYyBvZiBhIHRhYmxlLgogICoKICAqIE5vdGUgd2UgbmVlZCB0byBkbyBzbWFs bGVyIG9yIGVxdWFscyBjb21wYXJpc29uIGZvciBTWU5DRE9ORSBzdGF0ZSBiZWNhdXNlCiAgKiBp dCBtaWdodCBob2xkIHBvc2l0aW9uIG9mIGVuZCBvZiBpbml0aWFsIHNsb3QgY29uc2lzdGVudCBw b2ludCBXQUwKICAqIHJlY29yZCArIDEgKGllIHN0YXJ0IG9mIG5leHQgcmVjb3JkKSBhbmQgbmV4 dCByZWNvcmQgY2FuIGJlIENPTU1JVCBvZgogICogdHJhbnNhY3Rpb24gd2UgYXJlIG5vdyBwcm9j ZXNzaW5nICh3aGljaCBpcyB3aGF0IHdlIHNldCByZW1vdGVfZmluYWxfbHNuCiAgKiB0byBpbiBh cHBseV9oYW5kbGVfYmVnaW4pLgorICoKKyAqIE5vdGUgdGhhdCBmb3Igc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIHRoZSBwYXJhbGxlbAorICogYXBwbHkg d29ya2VyLCB3ZSBkaXNhbGxvdyBhcHBseWluZyBjaGFuZ2VzIGlmIHRoZSB0YXJnZXQgdGFibGUg aW4gdGhlCisgKiBzdWJzY3JpcHRpb24gaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSwgYmVjYXVz ZSB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8KKyAqIGFwcGx5IHRoZSBjaGFuZ2UgYXMgd2Ug d29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4KKyAqCisgKiBXZSBhbHJl YWR5IGNoZWNrZWQgdGhpcyBpbiBwYV9jYW5fc3RhcnQoKSBiZWZvcmUgYXNzaWduaW5nIHRoZQor ICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIsIGJ1dCBpdCBh bHNvIG5lZWRzIHRvIGJlCisgKiBjaGVja2VkIGhlcmUgYmVjYXVzZSBpZiB0aGUgdXNlciBleGVj dXRlcyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gKKyAqIFBVQkxJQ0FUSU9OIGluIHBh cmFsbGVsLCB0aGUgbmV3IHRhYmxlIGNhbiBiZSBhZGRlZCB0byBwZ19zdWJzY3JpcHRpb25fcmVs CisgKiB3aGlsZSBhcHBseWluZyB0aGlzIHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgYm9vbAog c2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkK IHsKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQlyZXR1cm4gTXlMb2dpY2FsUmVwV29y a2VyLT5yZWxpZCA9PSByZWwtPmxvY2FscmVsb2lkOworCWVsc2UgaWYgKGFtX3BhcmFsbGVsX2Fw cGx5X3dvcmtlcigpKQorCXsKKwkJLyogV2UgZG9uJ3Qgc3luY2hyb25pemUgcmVsJ3MgdGhhdCBh cmUgaW4gdW5rbm93biBzdGF0ZS4gKi8KKwkJaWYgKHJlbC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRF X1JFQURZICYmCisJCQlyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9VTktOT1dOKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJ U0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCIsCisJCQkJCQkJ TXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0 cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9ucyB1c2luZyBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzIHVudGlsIGFsbCB0YWJsZXMgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC4iKSkpOworCisJCXJl dHVybiByZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWTsKKwl9CiAJZWxzZQogCQlyZXR1 cm4gKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZIHx8CiAJCQkJKHJlbC0+c3RhdGUg PT0gU1VCUkVMX1NUQVRFX1NZTkNET05FICYmCkBAIC00NTIsNDMgKzU0OCwxMTAgQEAgZW5kX3Jl cGxpY2F0aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2Fj dGlvbnMuCisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgor ICogSW4gdGhlIHN0cmVhbWluZyBjYXNlIChyZWNlaXZpbmcgYSBibG9jayBvZiB0aGUgc3RyZWFt ZWQgdHJhbnNhY3Rpb24pLCBmb3IKKyAqIHNlcmlhbGl6ZSBtb2RlLCBzaW1wbHkgcmVkaXJlY3Qg aXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVsCisgKiB0cmFuc2FjdGlvbiwgYW5k IGZvciBwYXJhbGxlbCBtb2RlLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQgdGhl CisgKiBjaGFuZ2VzIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYW5kIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgd2lsbCBkZWZpbmUKKyAqIHNhdmVwb2ludHMgaWYgbmVlZGVkLiAoTE9HSUNB TF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19UWVBFCisgKiBtZXNzYWdlcyB3 aWxsIGJlIGFwcGxpZWQgYnkgYm90aCBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBh cHBseQorICogd29ya2VycykuCiAgKgotICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2Vpdmlu ZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRpcmVj dCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBS ZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyAod2hlbiB0aGUgY2hhbmdlIGlz IGVpdGhlciBzZXJpYWxpemVkCisgKiB0byBmaWxlIG9yIHNlbnQgdG8gcGFyYWxsZWwgYXBwbHkg d29ya2VyKSwgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUgb3IKKyAqIG5lZWRzIHRvIGJl IHByb2Nlc3NlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIpLgogICoKLSAqIFJldHVybnMgdHJ1 ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCBmYWxzZSBvdGhlcndpc2UgKHJlZ3VsYXIgbW9k ZSkuCisgKiBFeGNlcHRpb246IElmIHRoZSBtZXNzYWdlIGJlaW5nIHByb2Nlc3NlZCBpcyBMT0dJ Q0FMX1JFUF9NU0dfUkVMQVRJT04KKyAqIG9yIExPR0lDQUxfUkVQX01TR19UWVBFLCByZXR1cm4g ZmFsc2UgZXZlbiBpZiB0aGUgbWVzc2FnZSBuZWVkcyB0byBiZSBzZW50CisgKiB0byBhIHBhcmFs bGVsIGFwcGx5IHdvcmtlci4KICAqLwogc3RhdGljIGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFu c2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFu c2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkOworCVBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwlT dHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2c7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNh Y3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAKIAkvKiBub3QgaW4gc3Ry ZWFtaW5nIG1vZGUgKi8KLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChhcHBs eV9hY3Rpb24gPT0gVFJBTlNfTEVBREVSX0FQUExZKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlBc3Nl cnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJl YW1feGlkKSk7CiAKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbmVlZHMgdGhl IHhpZCBpbiB0aGlzIG1lc3NhZ2UgdG8gZGVjaWRlCisJICogd2hldGhlciB0byBkZWZpbmUgYSBz YXZlcG9pbnQsIHNvIHNhdmUgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgdGhhdCBoYXMKKwkgKiBub3Qg bW92ZWQgdGhlIGN1cnNvciBhZnRlciB0aGUgeGlkLiBXZSB3aWxsIHNlcmlhbGl6ZSB0aGlzIG1l c3NhZ2UgdG8gYQorCSAqIGZpbGUgaW4gUEFSVElBTF9TRVJJQUxJWkUgbW9kZS4KKwkgKi8KKwlv cmlnaW5hbF9tc2cgPSAqczsKKwogCS8qCiAJICogV2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgWElE IG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1lc3NhZ2UsIHNv IGV4dHJhY3QgaXQuCiAJICovCi0JeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOworCWN1cnJlbnRf eGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwogCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4 aWQpKQorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3VycmVudF94aWQpKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkg ZXJybXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9uIElEIGluIHN0cmVhbWVkIHJlcGxp Y2F0aW9uIHRyYW5zYWN0aW9uIikpKTsKIAotCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhl IGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCi0Jc3VieGFjdF9pbmZvX2FkZCh4aWQp OworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFM SVpFOgorCQkJQXNzZXJ0KHN0cmVhbV9mZCk7CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRo ZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQkv KiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUp LiAqLworCQkJc3VieGFjdF9pbmZvX2FkZChjdXJyZW50X3hpZCk7CisKKwkJCS8qIFdyaXRlIHRo ZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLworCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShh Y3Rpb24sIHMpOworCQkJcmV0dXJuIHRydWU7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9U T19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBYWFggVGhlIHB1 Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKKwkJ CSAqIG1lc3NhZ2VzIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBk YXRlIHRoZQorCQkJICogcmVsYXRpb24vdHlwZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLiBTZWUg ZnVuY3Rpb24KKwkJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCQkgKi8KKwkJCWlmIChw YV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQkJcmV0dXJuIChhY3Rpb24g IT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OICYmCisJCQkJCQlhY3Rpb24gIT0gTE9HSUNBTF9S RVBfTVNHX1RZUEUpOworCisJCQkvKgorCQkJICogU3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlIHdo ZW4gd2UgYXJlIG5vdCBhYmxlIHRvIHNlbmQgdGhlIGNoYW5nZQorCQkJICogdG8gcGFyYWxsZWwg YXBwbHkgd29ya2VyLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUo d2luZm8sIGZhbHNlKTsKKworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVB REVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sICZv cmlnaW5hbF9tc2cpOwogCi0JcmV0dXJuIHRydWU7CisJCQkvKiBTYW1lIHJlYXNvbiBhcyBUUkFO U19MRUFERVJfU0VORF9UT19QQVJBTExFTCBjYXNlLiAqLworCQkJcmV0dXJuIChhY3Rpb24gIT0g TE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OICYmCisJCQkJCWFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9N U0dfVFlQRSk7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCXBhcmFsbGVsX3N0 cmVhbV9uY2hhbmdlcyArPSAxOworCisJCQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3Vi eGFjdCBpZiBuZWVkZWQuICovCisJCQlwYV9zdGFydF9zdWJ0cmFucyhjdXJyZW50X3hpZCwgc3Ry ZWFtX3hpZCk7CisJCQlyZXR1cm4gZmFsc2U7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxz ZSk7CisJCQlyZXR1cm4gZmFsc2U7CQkvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8KKwl9 CiB9CiAKIC8qCkBAIC05MjYsOCArMTA4OSwxMSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRl cm5hbChMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJICogQmVnaW5U cmFuc2FjdGlvbkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBiYWxhbmNlIHRoZSBFbmRUcmFuc2FjdGlv bkJsb2NrCiAJICogY2FsbGVkIHdpdGhpbiB0aGUgUHJlcGFyZVRyYW5zYWN0aW9uQmxvY2sgYmVs b3cuCiAJICovCi0JQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7IC8qIENvbXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJ aWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwl7CisJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygp OworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRp bmcgQmVnaW4gY29tbWFuZC4gKi8KKwl9CiAKIAkvKgogCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUg c28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgpAQCAtOTc0 LDcgKzExNDAsNyBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAotCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwlzdG9yZV9mbHVzaF9w b3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCiAJaW5f cmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKQEAgLTk5Niw2ICsxMTYyLDEyIEBAIGFwcGx5 X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBhIENPTU1JVCBQ UkVQQVJFRCBvZiBhIHByZXZpb3VzbHkgUFJFUEFSRUQgdHJhbnNhY3Rpb24uCisgKgorICogTm90 ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMg cHJlcGFyZWQgaW4gYQorICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBJbiB0aGF0IGNhc2UsIHdl IGhhdmUgYWxyZWFkeSB3YWl0ZWQgZm9yIHRoZSBwcmVwYXJlCisgKiB0byBmaW5pc2ggaW4gYXBw bHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKCkgd2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZQorICog b3BlcmF0aW9ucyBpbiB0aGF0IHRyYW5zYWN0aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNj cmliZXIsIHNvIG5vCisgKiBjb25jdXJyZW50IHRyYW5zYWN0aW9uIGNhbiBjYXVzZSBkZWFkbG9j ayBvciB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5IGlzc3Vlcy4KICAqLwogc3RhdGljIHZvaWQKIGFw cGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTAyNSw3ICsxMTk3 LDcgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAotCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwlzdG9yZV9mbHVzaF9w b3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCWluX3Jl bW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQg YXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTEwMzksNiArMTIxMSwx MiBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAq IEhhbmRsZSBhIFJPTExCQUNLIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJFRCBUUkFO U0FDVElPTi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUgaWYg dGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUK KyAqIHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxs IGVuc3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBo YXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8KKyAqIGNvbmN1cnJlbnQgdHJhbnNhY3Rp b24gY2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kgaXNzdWVzLgog ICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0lu Zm8gcykKQEAgLTEwODAsNyArMTI1OCw3IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJl ZChTdHJpbmdJbmZvIHMpCiAKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVf Zmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuKTsKKwlzdG9yZV9m bHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24sIFhhY3RMYXN0Q29t bWl0RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAogCS8qIFByb2Nlc3Mg YW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCkBA IC0xMDkyLDE1ICsxMjcwLDE2IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJp bmdJbmZvIHMpCiAKIC8qCiAgKiBIYW5kbGUgU1RSRUFNIFBSRVBBUkUuCi0gKgotICogTG9naWMg aXMgaW4gdHdvIHBhcnRzOgotICogMS4gUmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25z Ci0gKiAyLiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZAogICovCiBzdGF0aWMgdm9p ZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2Fs UmVwUHJlcGFyZWRUeG5EYXRhIHByZXBhcmVfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkvKiBTYXZlIHRo ZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBvcmln aW5hbF9tc2cgPSAqczsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9y dChFUlJPUiwKQEAgLTExMTYsMjQgKzEyOTUsOTggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVw YXJlKFN0cmluZ0luZm8gcykKIAlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX3ByZXBhcmUocywgJnBy ZXBhcmVfZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChwcmVwYXJlX2RhdGEu eGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNlaXZl ZCBwcmVwYXJlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHByZXBhcmVfZGF0YS54aWQp OworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocHJlcGFyZV9k YXRhLnhpZCwgJndpbmZvKTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9u cy4gKi8KLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVf ZGF0YS5wcmVwYXJlX2xzbik7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRS QU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVw YXJlZC4gKi8KLQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsK KwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxl LCBzbyByZXBsYXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJ CQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQsCisJCQkJCQkJCSAgIHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xz bik7CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCS8qIE1hcmsgdGhlIHRyYW5z YWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwo JnByZXBhcmVfZGF0YSk7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2Rh dGEuZW5kX2xzbik7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xz biwgWGFjdExhc3RDb21taXRFbmQpOwogCi0JaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7 CisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJLyogVW5saW5rIHRoZSBm aWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJc3Ry ZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRh LnhpZCk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFN IFBSRVBBUkUgY29tbWFuZCIpOworCQkJYnJlYWs7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdp dGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2NsZWFu dXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJ CWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOwor CisJCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJ CS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQkJ cGFfeGFjdF9maW5pc2god2luZm8sIHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsK KwkJCX0KKworCQkJLyoKKwkJCSAqIFN3aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFy ZSBub3QgYWJsZSB0byBzZW5kIHRoZSBjaGFuZ2UKKwkJCSAqIHRvIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0 cnVlKTsKKworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJ QUxfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJc3RyZWFtX29wZW5fYW5kX3dy aXRlX2NoYW5nZShwcmVwYXJlX2RhdGEueGlkLAorCQkJCQkJCQkJCSBMT0dJQ0FMX1JFUF9NU0df U1RSRUFNX1BSRVBBUkUsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlwYV9zZXRf ZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisKKwkJCS8q IEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQlwYV94 YWN0X2ZpbmlzaCh3aW5mbywgcHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBj bG9zZSB0aGUgZmlsZSBiZWZvcmUgcHJlcGFyaW5nLgorCQkJICovCisJCQlpZiAoc3RyZWFtX2Zk KQorCQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAo KTsKKworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBs eV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKworCQkJZW5kX3JlcGxp Y2F0aW9uX3N0ZXAoKTsKKworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCU15 UGFyYWxsZWxTaGFyZWQtPmxhc3RfY29tbWl0X2VuZCA9IFhhY3RMYXN0Q29tbWl0RW5kOworCisJ CQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5J U0hFRCk7CisJCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBB Y2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQkJZWxv ZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gUFJFUEFSRSBjb21tYW5k Iik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFr OworCX0KKworCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0 YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nl c3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE3MCw2ICsxNDIz LDQ3IEBAIGFwcGx5X2hhbmRsZV9vcmlnaW4oU3RyaW5nSW5mbyBzKQogCQkJCSBlcnJtc2dfaW50 ZXJuYWwoIk9SSUdJTiBtZXNzYWdlIHNlbnQgb3V0IG9mIG9yZGVyIikpKTsKIH0KIAorLyoKKyAq IEluaXRpYWxpemUgZmlsZXNldCAoaWYgbm90IGFscmVhZHkgZG9uZSkuCisgKgorICogQ3JlYXRl IGEgbmV3IGZpbGUgd2hlbiBmaXJzdF9zZWdtZW50IGlzIHRydWUsIG90aGVyd2lzZSBvcGVuIHRo ZSBleGlzdGluZworICogZmlsZS4KKyAqLwordm9pZAorc3RyZWFtX3N0YXJ0X2ludGVybmFsKFRy YW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCit7CisJYmVnaW5fcmVwbGljYXRp b25fc3RlcCgpOworCisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmls ZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsIGJlCisJICogdXNlZCBmb3IgdGhlIGVu dGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAor CSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBt ZXNzYWdlIGZyb20gYW55CisJICogdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlz IGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLgorCSAqIE5vdywgd2UgY291bGQgY3Jl YXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAorCSAq IHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCSAqLwor CWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkKKwl7CisJCU1lbW9yeUNv bnRleHQgb2xkY3R4OworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNv bnRleHQpOworCisJCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Mo c2l6ZW9mKEZpbGVTZXQpKTsKKwkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCisJ LyogT3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwlzdHJlYW1f b3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwgZmlyc3Rfc2VnbWVudCk7 CisKKwkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBz dWJ4YWN0IGZpbGUuICovCisJaWYgKCFmaXJzdF9zZWdtZW50KQorCQlzdWJ4YWN0X2luZm9fcmVh ZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0 ZXAoKTsKK30KKwogLyoKICAqIEhhbmRsZSBTVFJFQU0gU1RBUlQgbWVzc2FnZS4KICAqLwpAQCAt MTE3NywyMSArMTQ3MSwxNyBAQCBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFy dChTdHJpbmdJbmZvIHMpCiB7CiAJYm9vbAkJZmlyc3Rfc2VnbWVudDsKKwlQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkv KiBTYXZlIHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZv RGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikK IAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElP TiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdl IikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRo aXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3RyZWFtIHN0b3Ag dW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0Ci0JICogd2ls bCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVk IHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Ig c2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KLQkg Ki8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0KIAkvKiBub3RpZnkgaGFuZGxlIG1ldGhv ZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2FjdGlvbiAqLwogCWluX3N0cmVhbWVk X3RyYW5zYWN0aW9uID0gdHJ1ZTsKIApAQCAtMTIwNSw1NCArMTQ5NSwxMTMgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF94YWN0KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAotCS8qCi0JICogSW5pdGlh bGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMg d2lsbCBiZQotCSAqIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBz byBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQKLQkgKiBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBv biB0aGUgdmVyeSBmaXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBmcm9tIGFueQotCSAqIHRyYW5zYWN0 aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0 aW9ucy4KLQkgKiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9m IHRoZSB3b3JrZXIgYXMgd2VsbCBidXQKLQkgKiB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBp dCB3aWxsIGV2ZXIgYmUgdXNlZC4KLQkgKi8KLQlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCA9PSBOVUxMKQorCS8qIFRyeSB0byBhbGxvY2F0ZSBhIHdvcmtlciBmb3IgdGhl IHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwlpZiAoZmlyc3Rfc2VnbWVudCkKKwkJcGFfYWxs b2NhdGVfd29ya2VyKHN0cmVhbV94aWQpOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0 aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9h Y3Rpb24pCiAJewotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2FzZSBUUkFOU19MRUFERVJf U0VSSUFMSVpFOgogCi0JCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRl eHQpOworCQkJLyoKKwkJCSAqIEZ1bmN0aW9uIHN0cmVhbV9zdGFydF9pbnRlcm5hbCBzdGFydHMg YSB0cmFuc2FjdGlvbi4gVGhpcworCQkJICogdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQg b24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhCisJCQkgKiB0YWJsZXN5bmMgd29ya2Vy IGluIHdoaWNoIGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIKKwkJCSAqIHByb2Nlc3Np bmcgYWxsIHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGlzIHRyYW5zYWN0aW9uIGZvcgorCQkJICog aGFuZGxpbmcgdGhlIEJ1ZkZpbGUsIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcg ZGF0YQorCQkJICogYW5kIHN1YnhhY3QgaW5mby4KKwkJCSAqLworCQkJc3RyZWFtX3N0YXJ0X2lu dGVybmFsKHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQkJYnJlYWs7CiAKLQkJTXlMb2dp Y2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwot CQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJY2Fz ZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CiAKLQkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7Ci0JfQorCQkJLyoKKwkJCSAqIE9uY2Ugd2Ug c3RhcnQgc2VyaWFsaXppbmcgdGhlIGNoYW5nZXMsIHRoZSBwYXJhbGxlbCBhcHBseQorCQkJICog d29ya2VyIHdpbGwgd2FpdCBmb3IgdGhlIGxlYWRlciB0byByZWxlYXNlIHRoZSBzdHJlYW0gbG9j aworCQkJICogdW50aWwgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uIFNvLCB3ZSBkb24ndCBu ZWVkIHRvIHJlbGVhc2UKKwkJCSAqIHRoZSBsb2NrIG9yIGluY3JlbWVudCB0aGUgc3RyZWFtIGNv dW50IGluIHRoYXQgY2FzZS4KKwkJCSAqLworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+ bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9i amVjdCBsb2NrIHNvIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5CisJCQkJICogd29ya2VyIGNhbiBj b250aW51ZSB0byByZWNlaXZlIGNoYW5nZXMuCisJCQkJICovCisJCQkJaWYgKCFmaXJzdF9zZWdt ZW50KQorCQkJCQlwYV91bmxvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhj bHVzaXZlTG9jayk7CiAKLQkvKiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0 aW9uICovCi0Jc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJl YW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJCQkvKgorCQkJCSAqIEluY3JlbWVudCB0aGUgbnVt YmVyIG9mIHN0cmVhbWluZyBibG9ja3Mgd2FpdGluZyB0byBiZQorCQkJCSAqIHByb2Nlc3NlZCBi eSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJCQkJICovCisJCQkJcGdfYXRvbWljX2FkZF9mZXRj aF91MzIoJndpbmZvLT5zaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2NvdW50LCAxKTsKIAotCS8qIGlm IHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmls ZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV9zZXRfc3RyZWFt X2FwcGx5X3dvcmtlcih3aW5mbyk7CisJCQkJYnJlYWs7CisJCQl9CiAKLQlwZ3N0YXRfcmVwb3J0 X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOworCQkJLyoKKwkJCSAqIFN3aXRjaCB0byBz ZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBub3QgYWJsZSB0byBzZW5kIHRoZSBjaGFuZ2UKKwkJ CSAqIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3Bh cnRpYWxfc2VyaWFsaXplKHdpbmZvLCAhZmlyc3Rfc2VnbWVudCk7CiAKLQllbmRfcmVwbGljYXRp b25fc3RlcCgpOworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BB UlRJQUxfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIE9wZW4g dGhlIHNwb29sIGZpbGUgdW5sZXNzIGl0IHdhcyBhbHJlYWR5IG9wZW5lZCB3aGVuIHN3aXRjaGlu ZworCQkJICogdG8gc2VyaWFsaXplIG1vZGUuIFRoZSB0cmFuc2FjdGlvbiBzdGFydGVkIGluCisJ CQkgKiBzdHJlYW1fc3RhcnRfaW50ZXJuYWwgd2lsbCBiZSBjb21taXR0ZWQgb24gdGhlIHN0cmVh bSBzdG9wLgorCQkJICovCisJCQlpZiAoYXBwbHlfYWN0aW9uICE9IFRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMKQorCQkJCXN0cmVhbV9zdGFydF9pbnRlcm5hbChzdHJlYW1feGlkLCBmaXJz dF9zZWdtZW50KTsKKworCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShMT0dJQ0FMX1JFUF9NU0dfU1RS RUFNX1NUQVJULCAmb3JpZ2luYWxfbXNnKTsKKworCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwkJCXBhX3NldF9zdHJlYW1fYXBw bHlfd29ya2VyKHdpbmZvKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQ TFk6CisJCQlpZiAoZmlyc3Rfc2VnbWVudCkKKwkJCXsKKwkJCQkvKiBIb2xkIHRoZSBsb2NrIHVu dGlsIHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLiAqLworCQkJCXBhX2xvY2tfdHJhbnNhY3Rp b24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCQlwYV9z ZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19TVEFSVEVEKTsK KwkJCX0KKworCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKKwkJCWJyZWFrOworCisJ CWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJcGdzdGF0X3Jl cG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKIH0KIAogLyoKLSAqIEhhbmRsZSBT VFJFQU0gU1RPUCBtZXNzYWdlLgorICogVXBkYXRlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBzdWJ4 YWN0cyBhbmQgY2xvc2UgdGhlIGZpbGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBzaG91bGQgYmUg Y2FsbGVkIHdoZW4gdGhlIHN0cmVhbV9zdGFydF9pbnRlcm5hbCBmdW5jdGlvbiBoYXMKKyAqIGJl ZW4gY2FsbGVkLgogICovCi1zdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0 cmluZ0luZm8gcykKK3ZvaWQKK3N0cmVhbV9zdG9wX2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlk KQogewotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCi0JCWVyZXBvcnQoRVJST1IsCi0J CQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCSBlcnJtc2dfaW50 ZXJuYWwoIlNUUkVBTSBTVE9QIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RBUlQiKSkpOwotCiAJ LyoKLQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlh bGl6ZSBpbmZvcm1hdGlvbiBhYm91dAotCSAqIHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJh bnNhY3Rpb24uCisJICogU2VyaWFsaXplIGluZm9ybWF0aW9uIGFib3V0IHN1YnhhY3RzIGZvciB0 aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24sIHRoZW4KKwkgKiBjbG9zZSB0aGUgc3RyZWFtIG1lc3Nh Z2VzIHNwb29sIGZpbGUuCiAJICovCi0Jc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCXN0cmVhbV9jbG9zZV9maWxlKCk7CiAKIAkvKiBXZSBt dXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KQEAgLTEyNjEsNDAgKzE2MTAs MTI0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJLyogQ29tbWl0 IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CiAKLQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwotCiAJLyogUmVzZXQgcGVy LXN0cmVhbSBjb250ZXh0ICovCiAJTWVtb3J5Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdD b250ZXh0KTsKLQotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7Ci0J cmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RS RUFNIGFib3J0IG1lc3NhZ2UuCisgKiBIYW5kbGUgU1RSRUFNIFNUT1AgbWVzc2FnZS4KICAqLwog c3RhdGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQorYXBw bHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhp ZDsKLQlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKLQlpZiAoaW5fc3RyZWFtZWRf dHJhbnNhY3Rpb24pCisJaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChF UlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJIGVy cm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIp KSk7CisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNU UkVBTSBTVEFSVCIpKSk7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlf YWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7 CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKwkJCXN0cmVhbV9zdG9wX2ludGVybmFs KHN0cmVhbV94aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19Q QVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBMb2NrIGJlZm9yZSBz ZW5kaW5nIHRoZSBTVFJFQU1fU1RPUCBtZXNzYWdlIHNvIHRoYXQgdGhlIGxlYWRlcgorCQkJICog Y2FuIGhvbGQgdGhlIGxvY2sgZmlyc3QgYW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2ls bCB3YWl0CisJCQkgKiBmb3IgbGVhZGVyIHRvIHJlbGVhc2UgdGhlIGxvY2suIFNlZSBMb2NraW5n IENvbnNpZGVyYXRpb25zIGF0b3AKKwkJCSAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYy4KKwkJCSAq LworCQkJcGFfbG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVM b2NrKTsKKworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJ CXsKKwkJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihOVUxMKTsKKwkJCQlicmVhazsKKwkJ CX0KKworCQkJLyoKKwkJCSAqIFN3aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBu b3QgYWJsZSB0byBzZW5kIHRoZSBjaGFuZ2UKKwkJCSAqIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVl KTsKKworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxf U0VSSUFMSVpFOgorCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShMT0dJQ0FMX1JFUF9NU0dfU1RSRUFN X1NUT1AsIHMpOworCQkJc3RyZWFtX3N0b3BfaW50ZXJuYWwoc3RyZWFtX3hpZCk7CisJCQlwYV9z ZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihOVUxMKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNf UEFSQUxMRUxfQVBQTFk6CisJCQllbG9nKERFQlVHMSwgImFwcGxpZWQgJXUgY2hhbmdlcyBpbiB0 aGUgc3RyZWFtaW5nIGNodW5rIiwKKwkJCQkgcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzKTsKKwor CQkJLyoKKwkJCSAqIEJ5IHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBwcm9jZXNz aW5nIHRoZSBjaGFuZ2VzIGluCisJCQkgKiB0aGUgY3VycmVudCBzdHJlYW1pbmcgYmxvY2ssIHRo ZSBsZWFkZXIgYXBwbHkgd29ya2VyIG1heSBoYXZlCisJCQkgKiBzZW50IG11bHRpcGxlIHN0cmVh bWluZyBibG9ja3MuIFRoaXMgY2FuIGxlYWQgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtl ciBzdGFydCB3YWl0aW5nIGV2ZW4gd2hlbiB0aGVyZSBhcmUgbW9yZSBjaHVuayBvZiBzdHJlYW1z CisJCQkgKiBpbiB0aGUgcXVldWUuIFNvLCB0cnkgdG8gbG9jayBvbmx5IGlmIHRoZXJlIGlzIG5v IG1lc3NhZ2UgbGVmdAorCQkJICogaW4gdGhlIHF1ZXVlLiBTZWUgTG9ja2luZyBDb25zaWRlcmF0 aW9ucyBhdG9wCisJCQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMuCisJCQkgKgorCQkJICogTm90 ZSB0aGF0IGhlcmUgd2UgaGF2ZSBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIHdlIGNhbiBzdGFydAor CQkJICogd2FpdGluZyBldmVuIHdoZW4gdGhlcmUgYXJlIHBlbmRpbmcgc3RyZWFtaW5nIGNodW5r cy4gVGhpcyBjYW4KKwkJCSAqIGhhcHBlbiBpZiB0aGUgbGVhZGVyIHNlbmRzIGFub3RoZXIgc3Ry ZWFtaW5nIGJsb2NrIGFuZCBhY3F1aXJlcworCQkJICogdGhlIHN0cmVhbSBsb2NrIGFnYWluIGFm dGVyIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2hlY2tzCisJCQkgKiB0aGF0IHRoZXJlIGlz IG5vIHBlbmRpbmcgc3RyZWFtaW5nIGJsb2NrIGFuZCBiZWZvcmUgaXQgYWN0dWFsbHkKKwkJCSAq IHN0YXJ0cyB3YWl0aW5nIG9uIGEgbG9jay4gV2UgY2FuIGhhbmRsZSB0aGlzIGNhc2UgYnkgbm90 CisJCQkgKiBhbGxvd2luZyB0aGUgbGVhZGVyIHRvIGluY3JlbWVudCB0aGUgc3RyZWFtIGJsb2Nr IGNvdW50IGR1cmluZworCQkJICogdGhlIHRpbWUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFjcXVp cmVzIHRoZSBsb2NrIGJ1dCBpdCBpcyBub3QKKwkJCSAqIGNsZWFyIHdoZXRoZXIgdGhhdCBpcyB3 b3J0aCB0aGUgY29tcGxleGl0eS4KKwkJCSAqCisJCQkgKiBOb3csIGlmIHRoaXMgbWlzc2VkIGNo dW5rIGNvbnRhaW5zIHJvbGxiYWNrIHRvIHNhdmVwb2ludCwgdGhlbgorCQkJICogdGhlcmUgaXMg YSByaXNrIG9mIGRlYWRsb2NrIHdoaWNoIHByb2JhYmx5IHNob3VsZG4ndCBoYXBwZW4KKwkJCSAq IGFmdGVyIHJlc3RhcnQuCisJCQkgKi8KKwkJCXBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2Nr KCk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFr OworCX0KKworCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkvKgorCSAqIFRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY291bGQgYmUgaW4gYSB0cmFuc2FjdGlvbiBpbiB3aGlj aCBjYXNlIHdlCisJICogbmVlZCB0byByZXBvcnQgdGhlIHN0YXRlIGFzIFNUQVRFX0lETEVJTlRS QU5TQUNUSU9OLgorCSAqLworCWlmIChJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkp CisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwp OworCWVsc2UKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAot CWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJnhpZCwgJnN1YnhpZCk7CisJcmVzZXRf YXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7Cit9CiAKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24g dG8gaGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0aW9uIHdhcwor ICogc2VyaWFsaXplZCB0byBmaWxlLgorICovCitzdGF0aWMgdm9pZAorc3RyZWFtX2Fib3J0X2lu dGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKK3sKIAkvKgog CSAqIElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0 b3BsZXZlbCB4YWN0LCBzbwogCSAqIGp1c3QgZGVsZXRlIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6 ZWQgaW5mby4KIAkgKi8KIAlpZiAoeGlkID09IHN1YnhpZCkKLQl7Ci0JCXNldF9hcHBseV9lcnJv cl9jb250ZXh0X3hhY3QoeGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAJCXN0cmVhbV9jbGVhbnVw X2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7Ci0JfQogCWVsc2UKIAl7CiAJ CS8qCkBAIC0xMzE4LDggKzE3NTEsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmlu Z0luZm8gcykKIAkJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAkJY2hhcgkJcGF0aFtNQVhQR1BBVEhd OwogCi0JCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlkLCBJbnZhbGlkWExvZ1Jl Y1B0cik7Ci0KIAkJc3ViaWR4ID0gLTE7CiAJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJ c3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKQEAgLTEz NDQsNDcgKzE3NzUsMjM3IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBz KQogCQkJY2xlYW51cF9zdWJ4YWN0X2luZm8oKTsKIAkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7 CiAJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQkJCXJlc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfaW5mbygpOwogCQkJcmV0dXJuOwogCQl9CiAKLQkJLyogb3BlbiB0aGUgY2hhbmdlcyBm aWxlICovCi0JCWNoYW5nZXNfZmlsZW5hbWUocGF0aCwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgeGlkKTsKLQkJZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dpY2FsUmVwV29ya2VyLT5z dHJlYW1fZmlsZXNldCwgcGF0aCwKLQkJCQkJCQkJT19SRFdSLCBmYWxzZSk7CisJCS8qIG9wZW4g dGhlIGNoYW5nZXMgZmlsZSAqLworCQljaGFuZ2VzX2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCWZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KE15TG9naWNh bFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQsIHBhdGgsCisJCQkJCQkJCU9fUkRXUiwgZmFsc2Up OworCisJCS8qIE9LLCB0cnVuY2F0ZSB0aGUgZmlsZSBhdCB0aGUgcmlnaHQgb2Zmc2V0ICovCisJ CUJ1ZkZpbGVUcnVuY2F0ZUZpbGVTZXQoZmQsIHN1YnhhY3RfZGF0YS5zdWJ4YWN0c1tzdWJpZHhd LmZpbGVubywKKwkJCQkJCQkgICBzdWJ4YWN0X2RhdGEuc3VieGFjdHNbc3ViaWR4XS5vZmZzZXQp OworCQlCdWZGaWxlQ2xvc2UoZmQpOworCisJCS8qIGRpc2NhcmQgdGhlIHN1YnhhY3RzIGFkZGVk IGxhdGVyICovCisJCXN1YnhhY3RfZGF0YS5uc3VieGFjdHMgPSBzdWJpZHg7CisKKwkJLyogd3Jp dGUgdGhlIHVwZGF0ZWQgc3VieGFjdCBsaXN0ICovCisJCXN1YnhhY3RfaW5mb193cml0ZShNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCisJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7 CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCX0KK30KKworLyoKKyAqIEhhbmRsZSBT VFJFQU0gQUJPUlQgbWVzc2FnZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJl YW1fYWJvcnQoU3RyaW5nSW5mbyBzKQoreworCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0 aW9uSWQgc3VieGlkOworCUxvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgYWJvcnRfZGF0YTsKKwlQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9h Y3Rpb247CisKKwkvKiBTYXZlIHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8K KwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKKwlib29sCQl0b3BsZXZlbF94YWN0 OworCisJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkgZXJybXNnX2ludGVy bmFsKCJTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKworCS8q IFdlIHJlY2VpdmUgYWJvcnQgaW5mb3JtYXRpb24gb25seSB3aGVuIHdlIGNhbiBhcHBseSBpbiBw YXJhbGxlbC4gKi8KKwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZhYm9ydF9kYXRh LAorCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSk7CisKKwl4aWQg PSBhYm9ydF9kYXRhLnhpZDsKKwlzdWJ4aWQgPSBhYm9ydF9kYXRhLnN1YnhpZDsKKwl0b3BsZXZl bF94YWN0ID0gKHhpZCA9PSBzdWJ4aWQpOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFj dChzdWJ4aWQsIGFib3J0X2RhdGEuYWJvcnRfbHNuKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90 cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9h Y3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisKKwkJCS8qCisJCQkg KiBXZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZSB0cmFuc2FjdGlvbiBo YXMgYmVlbgorCQkJICogc2VyaWFsaXplZCB0byBmaWxlLgorCQkJICovCisJCQlzdHJlYW1fYWJv cnRfaW50ZXJuYWwoeGlkLCBzdWJ4aWQpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHBy b2Nlc3NpbmcgdGhlIFNUUkVBTSBBQk9SVCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQljYXNl IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJ LyoKKwkJCSAqIEZvciB0aGUgY2FzZSBvZiBhYm9ydGluZyB0aGUgc3VidHJhbnNhY3Rpb24sIHdl IGluY3JlbWVudCB0aGUKKwkJCSAqIG51bWJlciBvZiBzdHJlYW1pbmcgYmxvY2tzIGFuZCB0YWtl IHRoZSBsb2NrIGFnYWluIGJlZm9yZQorCQkJICogc2VuZGluZyB0aGUgU1RSRUFNX0FCT1JUIHRv IGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdpbGwgd2FpdCBv biB0aGUgbG9jayBmb3IgdGhlIG5leHQgc2V0IG9mIGNoYW5nZXMgYWZ0ZXIKKwkJCSAqIHByb2Nl c3NpbmcgdGhlIFNUUkVBTV9BQk9SVCBtZXNzYWdlIGlmIGl0IGlzIG5vdCBhbHJlYWR5CisJCQkg KiB3YWl0aW5nIGZvciBTVFJFQU1fU1RPUCBtZXNzYWdlLgorCQkJICoKKwkJCSAqIEl0IGlzIGlt cG9ydGFudCB0byBwZXJmb3JtIHRoaXMgbG9ja2luZyBiZWZvcmUgc2VuZGluZyB0aGUKKwkJCSAq IFNUUkVBTV9BQk9SVCBtZXNzYWdlIHNvIHRoYXQgdGhlIGxlYWRlciBjYW4gaG9sZCB0aGUgbG9j ayBmaXJzdAorCQkJICogYW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCB3YWl0IGZv ciB0aGUgbGVhZGVyIHRvCisJCQkgKiByZWxlYXNlIHRoZSBsb2NrLiBUaGlzIGlzIHRoZSBzYW1l IGFzIHdoYXQgd2UgZG8gaW4KKwkJCSAqIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcC4gU2VlIExv Y2tpbmcgQ29uc2lkZXJhdGlvbnMgYXRvcAorCQkJICogYXBwbHlwYXJhbGxlbHdvcmtlci5jLgor CQkJICovCisJCQlpZiAoIXRvcGxldmVsX3hhY3QpCisJCQl7CisJCQkJcGFfdW5sb2NrX3N0cmVh bSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJCXBnX2F0b21pY19hZGRfZmV0Y2hfdTMy KCZ3aW5mby0+c2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCwgMSk7CisJCQkJcGFfbG9ja19z dHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCX0KKworCQkJaWYgKHBhX3NlbmRf ZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFVubGlr ZSBTVFJFQU1fQ09NTUlUIGFuZCBTVFJFQU1fUFJFUEFSRSwgd2UgZG9uJ3QgbmVlZCB0bworCQkJ CSAqIHdhaXQgaGVyZSBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBmaW5pc2ggYXMg dGhhdAorCQkJCSAqIGlzIG5vdCByZXF1aXJlZCB0byBtYWludGFpbiB0aGUgY29tbWl0IG9yZGVy IGFuZCB3b24ndCBoYXZlCisJCQkJICogdGhlIHJpc2sgb2YgZmFpbHVyZXMgZHVlIHRvIHRyYW5z YWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJCQkgKiBkZWFkbG9ja3MuIEhvd2V2ZXIsIGl0IGlz IHBvc3NpYmxlIHRoYXQgYmVmb3JlIHRoZSBwYXJhbGxlbAorCQkJCSAqIHdvcmtlciBmaW5pc2hl cyBhbmQgd2UgY2xlYXIgdGhlIHdvcmtlciBpbmZvLCB0aGUgeGlkCisJCQkJICogd3JhcGFyb3Vu ZCBoYXBwZW5zIG9uIHRoZSB1cHN0cmVhbSBhbmQgYSBuZXcgdHJhbnNhY3Rpb24KKwkJCQkgKiB3 aXRoIHRoZSBzYW1lIHhpZCBjYW4gYXBwZWFyIGFuZCB0aGF0IGNhbiBsZWFkIHRvIGR1cGxpY2F0 ZQorCQkJCSAqIGVudHJpZXMgaW4gUGFyYWxsZWxBcHBseVR4bkhhc2guIFlldCBhbm90aGVyIHBy b2JsZW0gY291bGQKKwkJCQkgKiBiZSB0aGF0IHdlIG1heSBoYXZlIHNlcmlhbGl6ZWQgdGhlIGNo YW5nZXMgaW4gcGFydGlhbAorCQkJCSAqIHNlcmlhbGl6ZSBtb2RlIGFuZCB0aGUgZmlsZSBjb250 YWluaW5nIHhhY3QgY2hhbmdlcyBtYXkKKwkJCQkgKiBhbHJlYWR5IGV4aXN0LCBhbmQgYWZ0ZXIg eGlkIHdyYXBhcm91bmQgdHJ5aW5nIHRvIGNyZWF0ZQorCQkJCSAqIHRoZSBmaWxlIGZvciB0aGUg c2FtZSB4aWQgY2FuIGxlYWQgdG8gYW4gZXJyb3IuIFRvIGF2b2lkCisJCQkJICogdGhlc2UgcHJv YmxlbXMsIHdlIGRlY2lkZSB0byB3YWl0IGZvciB0aGUgYWJvcnRzIHRvIGZpbmlzaC4KKwkJCQkg KgorCQkJCSAqIE5vdGUsIGl0IGlzIG9rYXkgdG8gbm90IHVwZGF0ZSB0aGUgZmx1c2ggbG9jYXRp b24gcG9zaXRpb24KKwkJCQkgKiBmb3IgYWJvcnRzIGFzIGluIHdvcnN0IGNhc2UgdGhhdCBtZWFu cyBzdWNoIGEgdHJhbnNhY3Rpb24KKwkJCQkgKiB3b24ndCBiZSBzZW50IGFnYWluIGFmdGVyIHJl c3RhcnQuCisJCQkJICovCisJCQkJaWYgKHRvcGxldmVsX3hhY3QpCisJCQkJCXBhX3hhY3RfZmlu aXNoKHdpbmZvLCBJbnZhbGlkWExvZ1JlY1B0cik7CisKKwkJCQlicmVhazsKKwkJCX0KKworCQkJ LyoKKwkJCSAqIFN3aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBub3QgYWJsZSB0 byBzZW5kIHRoZSBjaGFuZ2UKKwkJCSAqIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCSAq LworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKworCQkJ LyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpF OgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFBhcmFsbGVsIGFwcGx5IHdvcmtl ciBtaWdodCBoYXZlIGFwcGxpZWQgc29tZSBjaGFuZ2VzLCBzbyB3cml0ZQorCQkJICogdGhlIFNU UkVBTV9BQk9SVCBtZXNzYWdlIHNvIHRoYXQgaXQgY2FuIHJvbGxiYWNrIHRoZQorCQkJICogc3Vi dHJhbnNhY3Rpb24gaWYgbmVlZGVkLgorCQkJICovCisJCQlzdHJlYW1fb3Blbl9hbmRfd3JpdGVf Y2hhbmdlKHhpZCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCwKKwkJCQkJCQkJCQkgJm9y aWdpbmFsX21zZyk7CisKKwkJCWlmICh0b3BsZXZlbF94YWN0KQorCQkJeworCQkJCXBhX3NldF9m aWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKwkJCQlwYV94 YWN0X2ZpbmlzaCh3aW5mbywgSW52YWxpZFhMb2dSZWNQdHIpOworCQkJfQorCQkJYnJlYWs7CisK KwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkg KiBjbG9zZSB0aGUgZmlsZSBiZWZvcmUgYWJvcnRpbmcuCisJCQkgKi8KKwkJCWlmICh0b3BsZXZl bF94YWN0ICYmIHN0cmVhbV9mZCkKKwkJCQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCisJCQlwYV9z dHJlYW1fYWJvcnQoJmFib3J0X2RhdGEpOworCisJCQkvKgorCQkJICogV2UgbmVlZCB0byB3YWl0 IGFmdGVyIHByb2Nlc3Npbmcgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IGZvciB0aGUKKwkJCSAqIG5l eHQgc2V0IG9mIGNoYW5nZXMuCisJCQkgKgorCQkJICogV2UgaGF2ZSBhIHJhY2UgY29uZGl0aW9u IGhlcmUgZHVlIHRvIHdoaWNoIHdlIGNhbiBzdGFydCB3YWl0aW5nCisJCQkgKiBoZXJlIHdoZW4g dGhlcmUgYXJlIG1vcmUgY2h1bmsgb2Ygc3RyZWFtcyBpbiB0aGUgcXVldWUuIFNlZQorCQkJICog YXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9wLgorCQkJICovCisJCQlpZiAoIXRvcGxldmVsX3hhY3Qp CisJCQkJcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2soKTsKKworCQkJZWxvZyhERUJVRzEs ICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gQUJPUlQgY29tbWFuZCIpOworCQkJYnJl YWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CisKKwly ZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKK30KKworLyoKKyAqIEVuc3VyZSB0aGF0 IHRoZSBwYXNzZWQgbG9jYXRpb24gaXMgZmlsZXNldCdzIGVuZC4KKyAqLworc3RhdGljIHZvaWQK K2Vuc3VyZV9sYXN0X21lc3NhZ2UoRmlsZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9u SWQgeGlkLCBpbnQgZmlsZW5vLAorCQkJCQlvZmZfdCBvZmZzZXQpCit7CisJY2hhcgkJcGF0aFtN QVhQR1BBVEhdOworCUJ1ZkZpbGUgICAgKmZkOworCWludAkJCWxhc3RfZmlsZW5vOworCW9mZl90 CQlsYXN0X29mZnNldDsKKworCUFzc2VydCghSXNUcmFuc2FjdGlvblN0YXRlKCkpOwogCi0JCS8q IE9LLCB0cnVuY2F0ZSB0aGUgZmlsZSBhdCB0aGUgcmlnaHQgb2Zmc2V0ICovCi0JCUJ1ZkZpbGVU cnVuY2F0ZUZpbGVTZXQoZmQsIHN1YnhhY3RfZGF0YS5zdWJ4YWN0c1tzdWJpZHhdLmZpbGVubywK LQkJCQkJCQkgICBzdWJ4YWN0X2RhdGEuc3VieGFjdHNbc3ViaWR4XS5vZmZzZXQpOwotCQlCdWZG aWxlQ2xvc2UoZmQpOworCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAotCQkvKiBkaXNjYXJk IHRoZSBzdWJ4YWN0cyBhZGRlZCBsYXRlciAqLwotCQlzdWJ4YWN0X2RhdGEubnN1YnhhY3RzID0g c3ViaWR4OworCWNoYW5nZXNfZmlsZW5hbWUocGF0aCwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgeGlkKTsKIAotCQkvKiB3cml0ZSB0aGUgdXBkYXRlZCBzdWJ4YWN0IGxpc3QgKi8KLQkJc3Vi eGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJZmQgPSBC dWZGaWxlT3BlbkZpbGVTZXQoc3RyZWFtX2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZLCBmYWxzZSk7 CiAKLQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKLQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7Ci0JfQorCUJ1ZkZpbGVTZWVrKGZkLCAwLCAwLCBTRUVLX0VORCk7CisJQnVmRmlsZVRlbGwo ZmQsICZsYXN0X2ZpbGVubywgJmxhc3Rfb2Zmc2V0KTsKIAotCXJlc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfaW5mbygpOworCUJ1ZkZpbGVDbG9zZShmZCk7CisKKwllbmRfcmVwbGljYXRpb25fc3Rl cCgpOworCisJaWYgKGxhc3RfZmlsZW5vICE9IGZpbGVubyB8fCBsYXN0X29mZnNldCAhPSBvZmZz ZXQpCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG1lc3NhZ2UgbGVmdCBpbiBzdHJlYW1pbmcg dHJhbnNhY3Rpb24ncyBjaGFuZ2VzIGZpbGUgXCIlc1wiIiwKKwkJCSBwYXRoKTsKIH0KIAogLyoK ICAqIENvbW1vbiBzcG9vbGZpbGUgcHJvY2Vzc2luZy4KICAqLwotc3RhdGljIHZvaWQKLWFwcGx5 X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQordm9p ZAorYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhGaWxlU2V0ICpzdHJlYW1fZmlsZXNldCwgVHJhbnNh Y3Rpb25JZCB4aWQsCisJCQkJCSAgIFhMb2dSZWNQdHIgbHNuKQogewogCVN0cmluZ0luZm9EYXRh IHMyOwogCWludAkJCW5jaGFuZ2VzOwogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAljaGFyCSAg ICpidWZmZXIgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0OwotCUJ1ZkZpbGUgICAgKmZk OworCVJlc291cmNlT3duZXIgb2xkb3duZXI7CisJaW50CQkJZmlsZW5vOworCW9mZl90CQlvZmZz ZXQ7CiAKLQltYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKGxzbik7CisJaWYgKCFhbV9wYXJh bGxlbF9hcHBseV93b3JrZXIoKSkKKwkJbWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhsc24p OwogCiAJLyogTWFrZSBzdXJlIHdlIGhhdmUgYW4gb3BlbiB0cmFuc2FjdGlvbiAqLwogCWJlZ2lu X3JlcGxpY2F0aW9uX3N0ZXAoKTsKQEAgLTE0MDAsOCArMjAyMSwxNiBAQCBhcHBseV9zcG9vbGVk X21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAljaGFuZ2VzX2Zp bGVuYW1lKHBhdGgsIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CiAJZWxvZyhERUJV RzEsICJyZXBsYXlpbmcgY2hhbmdlcyBmcm9tIGZpbGUgXCIlc1wiIiwgcGF0aCk7CiAKLQlmZCA9 IEJ1ZkZpbGVPcGVuRmlsZVNldChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCBw YXRoLCBPX1JET05MWSwKLQkJCQkJCQlmYWxzZSk7CisJLyoKKwkgKiBNYWtlIHN1cmUgdGhlIGZp bGUgaXMgb3duZWQgYnkgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlCisJICog ZmlsZSB3aWxsIG5vdCBiZSBhY2NpZGVudGFsbHkgY2xvc2VkIHdoZW4gYWJvcnRpbmcgYSBzdWJ0 cmFuc2FjdGlvbi4KKwkgKi8KKwlvbGRvd25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCUN1 cnJlbnRSZXNvdXJjZU93bmVyID0gVG9wVHJhbnNhY3Rpb25SZXNvdXJjZU93bmVyOworCisJc3Ry ZWFtX2ZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KHN0cmVhbV9maWxlc2V0LCBwYXRoLCBPX1JET05M WSwgZmFsc2UpOworCisJQ3VycmVudFJlc291cmNlT3duZXIgPSBvbGRvd25lcjsKIAogCWJ1ZmZl ciA9IHBhbGxvYyhCTENLU1opOwogCWluaXRTdHJpbmdJbmZvKCZzMik7CkBAIC0xNDMyLDcgKzIw NjEsNyBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVj UHRyIGxzbikKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAogCQkvKiByZWFkIGxlbmd0aCBv ZiB0aGUgb24tZGlzayByZWNvcmQgKi8KLQkJbmJ5dGVzID0gQnVmRmlsZVJlYWQoZmQsICZsZW4s IHNpemVvZihsZW4pKTsKKwkJbmJ5dGVzID0gQnVmRmlsZVJlYWQoc3RyZWFtX2ZkLCAmbGVuLCBz aXplb2YobGVuKSk7CiAKIAkJLyogaGF2ZSB3ZSByZWFjaGVkIGVuZCBvZiB0aGUgZmlsZT8gKi8K IAkJaWYgKG5ieXRlcyA9PSAwKQpAQCAtMTQ1MywxMiArMjA4MiwxNCBAQCBhcHBseV9zcG9vbGVk X21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAkJYnVmZmVyID0g cmVwYWxsb2MoYnVmZmVyLCBsZW4pOwogCiAJCS8qIGFuZCBmaW5hbGx5IHJlYWQgdGhlIGRhdGEg aW50byB0aGUgYnVmZmVyICovCi0JCWlmIChCdWZGaWxlUmVhZChmZCwgYnVmZmVyLCBsZW4pICE9 IGxlbikKKwkJaWYgKEJ1ZkZpbGVSZWFkKHN0cmVhbV9mZCwgYnVmZmVyLCBsZW4pICE9IGxlbikK IAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJ CQkgZXJybXNnKCJjb3VsZCBub3QgcmVhZCBmcm9tIHN0cmVhbWluZyB0cmFuc2FjdGlvbidzIGNo YW5nZXMgZmlsZSBcIiVzXCI6ICVtIiwKIAkJCQkJCQlwYXRoKSkpOwogCisJCUJ1ZkZpbGVUZWxs KHN0cmVhbV9mZCwgJmZpbGVubywgJm9mZnNldCk7CisKIAkJLyogY29weSB0aGUgYnVmZmVyIHRv IHRoZSBzdHJpbmdpbmZvIGFuZCBjYWxsIGFwcGx5X2Rpc3BhdGNoICovCiAJCXJlc2V0U3RyaW5n SW5mbygmczIpOwogCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZzMiwgYnVmZmVyLCBsZW4pOwpA QCAtMTQ3NCwxNSArMjEwNSwyNCBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAogCQluY2hhbmdlcysrOwogCisJCS8qCisJCSAqIEl0 IGlzIHBvc3NpYmxlIHRoZSBmaWxlIGhhcyBiZWVuIGNsb3NlZCBiZWNhdXNlIHdlIGhhdmUgcHJv Y2Vzc2VkCisJCSAqIHRoZSB0cmFuc2FjdGlvbiBlbmQgbWVzc2FnZSBsaWtlIHN0cmVhbV9jb21t aXQgaW4gd2hpY2ggY2FzZSB0aGF0CisJCSAqIG11c3QgYmUgdGhlIGxhc3QgbWVzc2FnZS4KKwkJ ICovCisJCWlmICghc3RyZWFtX2ZkKQorCQl7CisJCQllbnN1cmVfbGFzdF9tZXNzYWdlKHN0cmVh bV9maWxlc2V0LCB4aWQsIGZpbGVubywgb2Zmc2V0KTsKKwkJCWJyZWFrOworCQl9CisKIAkJaWYg KG5jaGFuZ2VzICUgMTAwMCA9PSAwKQogCQkJZWxvZyhERUJVRzEsICJyZXBsYXllZCAlZCBjaGFu Z2VzIGZyb20gZmlsZSBcIiVzXCIiLAogCQkJCSBuY2hhbmdlcywgcGF0aCk7CiAJfQogCi0JQnVm RmlsZUNsb3NlKGZkKTsKLQotCXBmcmVlKGJ1ZmZlcik7Ci0JcGZyZWUoczIuZGF0YSk7CisJaWYg KHN0cmVhbV9mZCkKKwkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKIAogCWVsb2coREVCVUcxLCAicmVw bGF5ZWQgJWQgKGFsbCkgY2hhbmdlcyBmcm9tIGZpbGUgXCIlc1wiIiwKIAkJIG5jaGFuZ2VzLCBw YXRoKTsKQEAgLTE0OTgsNiArMjEzOCwxMSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChT dHJpbmdJbmZvIHMpCiB7CiAJVHJhbnNhY3Rpb25JZCB4aWQ7CiAJTG9naWNhbFJlcENvbW1pdERh dGEgY29tbWl0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5z QXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUg aXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CiAK IAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xNTA3 LDE0ICsyMTUyLDg1IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykK IAl4aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEpOwog CXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNu KTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2Fj dGlvbiAldSIsIHhpZCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2Fj dGlvbih4aWQsICZ3aW5mbyk7CiAKLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0 X2RhdGEuY29tbWl0X2xzbik7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRS QU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZj b21taXRfZGF0YSk7CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlh bGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9u cy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhNeUxvZ2ljYWxSZXBXb3JrZXIt PnN0cmVhbV9maWxlc2V0LCB4aWQsCisJCQkJCQkJCSAgIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24p OworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJ CS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3Qg aW5mby4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQsIHhpZCk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RS RUFNIENPTU1JVCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9T RU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJaWYgKHBhX3NlbmRfZGF0 YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJCQkvKiBGaW5pc2ggcHJvY2Vzc2lu ZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAqLworCQkJCXBhX3hhY3RfZmluaXNoKHdpbmZv LCBjb21taXRfZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyoKKwkJCSAq IFN3aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBub3QgYWJsZSB0byBzZW5kIHRo ZSBjaGFuZ2UKKwkJCSAqIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCSAqLworCQkJcGFf c3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKworCQkJLyogZmFsbCB0 aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJQXNz ZXJ0KHdpbmZvKTsKKworCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZSh4aWQsIExPR0lD QUxfUkVQX01TR19TVFJFQU1fQ09NTUlULAorCQkJCQkJCQkJCSAmb3JpZ2luYWxfbXNnKTsKKwor CQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VSSUFMSVpFX0RPTkUp OwogCi0JLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3Vi eGFjdCBpbmZvICovCi0Jc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgeGlkKTsKKwkJCS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24uICovCisJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7 CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJ ICogSWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzcG9vbGVkIG1lc3Nh Z2VzIHRoZW4KKwkJCSAqIGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBjb21taXR0aW5nLgorCQkJICov CisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwkJCWFwcGx5 X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKworCQkJTXlQYXJhbGxlbFNo YXJlZC0+bGFzdF9jb21taXRfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisKKwkJCS8qCisJCQkg KiBJdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBhcyBmaW5pc2hl ZCBiZWZvcmUKKwkJCSAqIHJlbGVhc2luZyB0aGUgbG9jay4gU2VlIHBhX3dhaXRfZm9yX3hhY3Rf ZmluaXNoLgorCQkJICovCisJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQ QVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisJCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oeGlkLCBB Y2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQkJZWxv ZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gQ09NTUlUIGNvbW1hbmQi KTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7 CisJfQogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXpl ZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVu ZF9sc24pOwpAQCAtMTU1OCw5ICsyMjc0LDE2IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJu YWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKQogCQlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLT5jb21taXR0aW1lOwogCiAJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJ eworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKwkJfQorCiAJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQkJc3RvcmVf Zmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEtPmVuZF9sc24pOworCQlzdG9yZV9mbHVzaF9wb3Np dGlvbihjb21taXRfZGF0YS0+ZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCX0KIAllbHNl CiAJewpAQCAtMjUxMSw3ICszMjM0LDcgQEAgYXBwbHlfaGFuZGxlX3RydW5jYXRlKFN0cmluZ0lu Zm8gcykKIC8qCiAgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29sIG1lc3NhZ2UgZGlzcGF0 Y2hlci4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8g cykKIHsKIAlMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24gPSBwcV9nZXRtc2dieXRlKHMpOwpAQCAt MjY3NSwxNyArMzM5OCwyNCBAQCBnZXRfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciAqd3JpdGUs IFhMb2dSZWNQdHIgKmZsdXNoLAogLyoKICAqIFN0b3JlIGN1cnJlbnQgcmVtb3RlL2xvY2FsIGxz biBwYWlyIGluIHRoZSB0cmFja2luZyBsaXN0LgogICovCi1zdGF0aWMgdm9pZAotc3RvcmVfZmx1 c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKQordm9pZAorc3RvcmVfZmx1c2hfcG9z aXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBYTG9nUmVjUHRyIGxvY2FsX2xzbikKIHsKIAlG bHVzaFBvc2l0aW9uICpmbHVzaHBvczsKIAorCS8qCisJICogU2tpcCBmb3IgcGFyYWxsZWwgYXBw bHkgd29ya2VycywgYmVjYXVzZSB0aGUgbHNuX21hcHBpbmcgaXMgbWFpbnRhaW5lZAorCSAqIGJ5 IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLgorCSAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93 b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVudCBj b250ZXh0ICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKIAkvKiBU cmFjayBjb21taXQgbHNuICAqLwogCWZsdXNocG9zID0gKEZsdXNoUG9zaXRpb24gKikgcGFsbG9j KHNpemVvZihGbHVzaFBvc2l0aW9uKSk7Ci0JZmx1c2hwb3MtPmxvY2FsX2VuZCA9IFhhY3RMYXN0 Q29tbWl0RW5kOworCWZsdXNocG9zLT5sb2NhbF9lbmQgPSBsb2NhbF9sc247CiAJZmx1c2hwb3Mt PnJlbW90ZV9lbmQgPSByZW1vdGVfbHNuOwogCiAJZGxpc3RfcHVzaF90YWlsKCZsc25fbWFwcGlu ZywgJmZsdXNocG9zLT5ub2RlKTsKQEAgLTI3NDQsNiArMzQ3NCw3IEBAIExvZ2ljYWxSZXBBcHBs eUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCWVycmNhbGxiYWNrLmNhbGxiYWNrID0g YXBwbHlfZXJyb3JfY2FsbGJhY2s7CiAJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250 ZXh0X3N0YWNrOwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisJYXBwbHlf ZXJyb3JfY29udGV4dF9zdGFjayA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAKIAkvKiBUaGlzIG91 dGVyIGxvb3AgaXRlcmF0ZXMgb25jZSBwZXIgd2FpdC4gKi8KIAlmb3IgKDs7KQpAQCAtMjk1OCw2 ICszNjg5LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQp CiAKIAkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KIAllcnJvcl9jb250ZXh0X3N0 YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CisJYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9 IGVycm9yX2NvbnRleHRfc3RhY2s7CiAKIAkvKiBBbGwgZG9uZSAqLwogCXdhbHJjdl9lbmRzdHJl YW1pbmcoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgJnRsaSk7CkBAIC0zMDU2LDkgKzM3ODgsMzEg QEAgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJvb2wgcmVx dWVzdFJlcGx5KQogfQogCiAvKgotICogUmVyZWFkIHN1YnNjcmlwdGlvbiBpbmZvIGlmIG5lZWRl ZC4gTW9zdCBjaGFuZ2VzIHdpbGwgYmUgZXhpdC4KKyAqIEV4aXQgcm91dGluZSBmb3IgYXBwbHkg d29ya2VycyBkdWUgdG8gc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBjaGFuZ2VzLgogICovCiBzdGF0 aWMgdm9pZAorYXBwbHlfd29ya2VyX2V4aXQodm9pZCkKK3sKKwlpZiAoYW1fcGFyYWxsZWxfYXBw bHlfd29ya2VyKCkpCisJeworCQkvKgorCQkgKiBEb24ndCBzdG9wIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgYXMgdGhlIGxlYWRlciB3aWxsIGRldGVjdCB0aGUKKwkJICogc3Vic2NyaXB0aW9u IHBhcmFtZXRlciBjaGFuZ2UgYW5kIHJlc3RhcnQgbG9naWNhbCByZXBsaWNhdGlvbiBsYXRlcgor CQkgKiBhbnl3YXkuIFRoaXMgYWxzbyBwcmV2ZW50cyB0aGUgbGVhZGVyIGZyb20gcmVwb3J0aW5n IGVycm9ycyB3aGVuCisJCSAqIHRyeWluZyB0byBjb21tdW5pY2F0ZSB3aXRoIGEgc3RvcHBlZCBw YXJhbGxlbCBhcHBseSB3b3JrZXIsIHdoaWNoCisJCSAqIHdvdWxkIGFjY2lkZW50YWxseSBkaXNh YmxlIHN1YnNjcmlwdGlvbnMgaWYgZGlzYWJsZV9vbl9lcnJvciB3YXMKKwkJICogc2V0LgorCQkg Ki8KKwkJcmV0dXJuOworCX0KKworCXByb2NfZXhpdCgwKTsKK30KKworLyoKKyAqIFJlcmVhZCBz dWJzY3JpcHRpb24gaW5mbyBpZiBuZWVkZWQuIE1vc3QgY2hhbmdlcyB3aWxsIGJlIGV4aXQuCisg Ki8KK3ZvaWQKIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIHsKIAlNZW1vcnlDb250 ZXh0IG9sZGN0eDsKQEAgLTMwODgsOSArMzg0Miw5IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRp b24odm9pZCkKIAlpZiAoIW5ld3N1YikKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2co ImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IHdpbGwgIgotCQkJCQkJInN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1vdmVk IiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJz dCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShl cnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRoZSBz dWJzY3JpcHRpb24gd2FzIHJlbW92ZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vi c2NyaXB0aW9uLT5uYW1lKSkpOwogCiAJCXByb2NfZXhpdCgwKTsKIAl9CkBAIC0zMDk5LDExICsz ODUzLDExIEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAlpZiAoIW5ld3N1Yi0+ ZW5hYmxlZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgIgotCQkJCQkJ InN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCIsCi0JCQkJCQlNeVN1 YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5h bWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Ig c3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdh cyBkaXNhYmxlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5h bWUpKSk7CiAKLQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3JrZXJfZXhpdCgpOwogCX0KIAog CS8qICFzbG90bmFtZSBzaG91bGQgbmV2ZXIgaGFwcGVuIHdoZW4gZW5hYmxlZCBpcyB0cnVlLiAq LwpAQCAtMzExNCw3ICszODY4LDEwIEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkK IAogCS8qCiAJICogRXhpdCBpZiBhbnkgcGFyYW1ldGVyIHRoYXQgYWZmZWN0cyB0aGUgcmVtb3Rl IGNvbm5lY3Rpb24gd2FzIGNoYW5nZWQuCi0JICogVGhlIGxhdW5jaGVyIHdpbGwgc3RhcnQgYSBu ZXcgd29ya2VyLgorCSAqIFRoZSBsYXVuY2hlciB3aWxsIHN0YXJ0IGEgbmV3IHdvcmtlciBidXQg bm90ZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB3b24ndCByZXN0YXJ0IGlm IHRoZSBzdHJlYW1pbmcgb3B0aW9uJ3MgdmFsdWUgaXMgY2hhbmdlZCBmcm9tCisJICogJ3BhcmFs bGVsJyB0byBhbnkgb3RoZXIgdmFsdWUgb3IgdGhlIHNlcnZlciBkZWNpZGVzIG5vdCB0byBzdHJl YW0gdGhlCisJICogaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24uCiAJICovCiAJaWYgKHN0cmNtcChu ZXdzdWItPmNvbm5pbmZvLCBNeVN1YnNjcmlwdGlvbi0+Y29ubmluZm8pICE9IDAgfHwKIAkJc3Ry Y21wKG5ld3N1Yi0+bmFtZSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpICE9IDAgfHwKQEAgLTMxMjUs MTEgKzM4ODIsMTcgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCQluZXdzdWIt Pm93bmVyICE9IE15U3Vic2NyaXB0aW9uLT5vd25lciB8fAogCQkhZXF1YWwobmV3c3ViLT5wdWJs aWNhdGlvbnMsIE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlvbnMpKQogCXsKLQkJZXJlcG9ydChM T0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1 YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hh bmdlIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQlpZiAoYW1fcGFyYWxsZWxf YXBwbHlfd29ya2VyKCkpCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVycm1zZygibG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIg d2lsbCBzdG9wIGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKKwkJCQkJCQlNeVN1YnNj cmlwdGlvbi0+bmFtZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChMT0csCisJCQkvKiB0cmFuc2xh dG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAq LworCQkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQg YmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCWdldF93b3JrZXJfbmFtZSgp LCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5X3dv cmtlcl9leGl0KCk7CiAJfQogCiAJLyogQ2hlY2sgZm9yIG90aGVyIGNoYW5nZXMgdGhhdCBzaG91 bGQgbmV2ZXIgaGFwcGVuIHRvby4gKi8KQEAgLTMzODEsNyArNDE0NCw3IEBAIGNoYW5nZXNfZmls ZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKICAqIHRvcGxl dmVsIHRyYW5zYWN0aW9uLiBFYWNoIHN1YnNjcmlwdGlvbiBoYXMgYSBzZXBhcmF0ZSBzZXQgb2Yg ZmlsZXMKICAqIGZvciBhbnkgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCiAgKi8KLXN0YXRpYyB2b2lk Cit2b2lkCiBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlk KQogewogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKQEAgLTM0MDQsOSArNDE2Nyw2IEBAIHN0cmVh bV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpCiAgKiBieSBzdHJl YW1feGlkIChnbG9iYWwgdmFyaWFibGUpLiBJZiBpdCdzIHRoZSBmaXJzdCBjaHVuayBvZiBzdHJl YW1lZAogICogY2hhbmdlcyBmb3IgdGhpcyB0cmFuc2FjdGlvbiwgY3JlYXRlIHRoZSBidWZmaWxl LCBvdGhlcndpc2Ugb3BlbiB0aGUKICAqIHByZXZpb3VzbHkgY3JlYXRlZCBmaWxlLgotICoKLSAq IFRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSAic3RyZWFtaW5n IiBibG9jaywgaS5lLgotICogYmV0d2VlbiBzdHJlYW1fc3RhcnQvc3RyZWFtX3N0b3AgbWVzc2Fn ZXMgZnJvbSB0aGUgdXBzdHJlYW0uCiAgKi8KIHN0YXRpYyB2b2lkCiBzdHJlYW1fb3Blbl9maWxl KE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKQEAgLTM0 MTQsNyArNDE3NCw2IEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklk IHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAlNZW1v cnlDb250ZXh0IG9sZGN4dDsKIAotCUFzc2VydChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbik7CiAJ QXNzZXJ0KE9pZElzVmFsaWQoc3ViaWQpKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQo eGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCA9PSBOVUxMKTsKQEAgLTM0NTMsMTUgKzQyMTIsMTAg QEAgc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZp cnN0X3NlZ21lbnQpCiAvKgogICogc3RyZWFtX2Nsb3NlX2ZpbGUKICAqCSAgQ2xvc2UgdGhlIGN1 cnJlbnRseSBvcGVuIGZpbGUgd2l0aCBzdHJlYW1lZCBjaGFuZ2VzLgotICoKLSAqIFRoaXMgY2Fu IG9ubHkgYmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgYSBzdHJlYW1pbmcgYmxvY2ssIGkuZS4gYXQg c3RyZWFtX3N0b3AKLSAqIG1lc3NhZ2UgZnJvbSB0aGUgdXBzdHJlYW0uCiAgKi8KIHN0YXRpYyB2 b2lkCiBzdHJlYW1fY2xvc2VfZmlsZSh2b2lkKQogewotCUFzc2VydChpbl9zdHJlYW1lZF90cmFu c2FjdGlvbik7Ci0JQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAlB c3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCiAJQnVmRmlsZUNsb3NlKHN0cmVhbV9mZCk7CkBA IC0zNDgzLDggKzQyMzcsNiBAQCBzdHJlYW1fd3JpdGVfY2hhbmdlKGNoYXIgYWN0aW9uLCBTdHJp bmdJbmZvIHMpCiB7CiAJaW50CQkJbGVuOwogCi0JQXNzZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uKTsKLQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCUFzc2Vy dChzdHJlYW1fZmQgIT0gTlVMTCk7CiAKIAkvKiB0b3RhbCBvbi1kaXNrIHNpemUsIGluY2x1ZGlu ZyB0aGUgYWN0aW9uIHR5cGUgY2hhcmFjdGVyICovCkBAIC0zNTAyLDYgKzQyNTQsMjYgQEAgc3Ry ZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogCUJ1ZkZpbGVXcml0 ZShzdHJlYW1fZmQsICZzLT5kYXRhW3MtPmN1cnNvcl0sIGxlbik7CiB9CiAKKy8qCisgKiBzdHJl YW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlCisgKgkgIFNlcmlhbGl6ZSBhIG1lc3NhZ2UgdG8gYSBm aWxlIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBz aW1pbGFyIHRvIHN0cmVhbV93cml0ZV9jaGFuZ2UgZXhjZXB0IHRoYXQgaXQgd2lsbCBvcGVuIHRo ZQorICogdGFyZ2V0IGZpbGUgaWYgbm90IGFscmVhZHkgYmVmb3JlIHdyaXRpbmcgdGhlIG1lc3Nh Z2UgYW5kIGNsb3NlIHRoZSBmaWxlIGF0CisgKiB0aGUgZW5kLgorICovCitzdGF0aWMgdm9pZAor c3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShUcmFuc2FjdGlvbklkIHhpZCwgY2hhciBhY3Rp b24sIFN0cmluZ0luZm8gcykKK3sKKwlBc3NlcnQoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsK KworCWlmICghc3RyZWFtX2ZkKQorCQlzdHJlYW1fc3RhcnRfaW50ZXJuYWwoeGlkLCBmYWxzZSk7 CisKKwlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJc3RyZWFtX3N0b3BfaW50ZXJu YWwoeGlkKTsKK30KKwogLyoKICAqIENsZWFudXAgdGhlIG1lbW9yeSBmb3Igc3VieGFjdHMgYW5k IHJlc2V0IHRoZSByZWxhdGVkIHZhcmlhYmxlcy4KICAqLwpAQCAtMzYxMywzNyArNDM4NSwxNiBA QCBzdGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAlQR19FTkRfVFJZKCk7 CiB9CiAKLS8qIExvZ2ljYWwgUmVwbGljYXRpb24gQXBwbHkgd29ya2VyIGVudHJ5IHBvaW50ICov CisvKgorICogQ29tbW9uIGluaXRpYWxpemF0aW9uIGZvciBsZWFkZXIgYXBwbHkgd29ya2VyIGFu ZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKgorICogSW5pdGlhbGl6ZSB0aGUgZGF0YWJhc2Ug Y29ubmVjdGlvbiwgaW4tbWVtb3J5IHN1YnNjcmlwdGlvbiBhbmQgbmVjZXNzYXJ5CisgKiBjb25m aWcgb3B0aW9ucy4KKyAqLwogdm9pZAotQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQor SW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpCiB7Ci0JaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1 bUdldEludDMyKG1haW5fYXJnKTsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKLQljaGFyCQlvcmln aW5uYW1lW05BTUVEQVRBTEVOXTsKLQlYTG9nUmVjUHRyCW9yaWdpbl9zdGFydHBvcyA9IEludmFs aWRYTG9nUmVjUHRyOwotCWNoYXIJICAgKm15c2xvdG5hbWUgPSBOVUxMOwotCVdhbFJjdlN0cmVh bU9wdGlvbnMgb3B0aW9uczsKLQlpbnQJCQlzZXJ2ZXJfdmVyc2lvbjsKLQotCS8qIEF0dGFjaCB0 byBzbG90ICovCi0JbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKLQotCS8q IFNldHVwIHNpZ25hbCBoYW5kbGluZyAqLwotCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxl ckZvckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKLQlCYWNrZ3JvdW5k V29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKLQotCS8qCi0JICogV2UgZG9uJ3QgY3VycmVudGx5IG5l ZWQgYW55IFJlc291cmNlT3duZXIgaW4gYSB3YWxyZWNlaXZlciBwcm9jZXNzLCBidXQKLQkgKiBp ZiB3ZSBkaWQsIHdlIGNvdWxkIGNhbGwgQ3JlYXRlQXV4UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVy ZS4KLQkgKi8KLQotCS8qIEluaXRpYWxpc2Ugc3RhdHMgdG8gYSBzYW5pc2ggdmFsdWUgKi8KLQlN eUxvZ2ljYWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5s YXN0X3JlY3ZfdGltZSA9Ci0JCU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IEdldEN1 cnJlbnRUaW1lc3RhbXAoKTsKLQotCS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9u cyAqLwotCWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKIAogCS8qIFJ1biBh cyByZXBsaWNhIHNlc3Npb24gcmVwbGljYXRpb24gcm9sZS4gKi8KIAlTZXRDb25maWdPcHRpb24o InNlc3Npb25fcmVwbGljYXRpb25fcm9sZSIsICJyZXBsaWNhIiwKQEAgLTM2NzEsOSArNDQyMiwx MCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJaWYgKCFNeVN1YnNjcmlwdGlv bikKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24g YXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgd2lsbCBub3QgIgotCQkJCQkJInN0YXJ0 IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCi0J CQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKSkpOworCQkvKiB0cmFuc2xhdG9yOiAlcyBp cyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2co IiVzIGZvciBzdWJzY3JpcHRpb24gJXUgd2lsbCBub3Qgc3RhcnQgYmVjYXVzZSB0aGUgc3Vic2Ny aXB0aW9uIHdhcyByZW1vdmVkIGR1cmluZyBzdGFydHVwIiwKKwkJCQkJCWdldF93b3JrZXJfbmFt ZSgpLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKSkpOworCiAJCXByb2NfZXhpdCgwKTsKIAl9 CiAKQEAgLTM2ODMsMTEgKzQ0MzUsMTEgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJn KQogCWlmICghTXlTdWJzY3JpcHRpb24tPmVuYWJsZWQpCiAJewogCQllcmVwb3J0KExPRywKLQkJ CQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0 aW9uIFwiJXNcIiB3aWxsIG5vdCAiCi0JCQkJCQkic3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0 aW9uIHdhcyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNh bCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9u IFwiJXNcIiB3aWxsIG5vdCBzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2Fi bGVkIGR1cmluZyBzdGFydHVwIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlw dGlvbi0+bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5X3dvcmtlcl9leGl0KCk7 CiAJfQogCiAJLyogU2V0dXAgc3luY2hyb25vdXMgY29tbWl0IGFjY29yZGluZyB0byB0aGUgdXNl cidzIHdpc2hlcyAqLwpAQCAtMzcwMiwxMyArNDQ1NCw0OSBAQCBBcHBseVdvcmtlck1haW4oRGF0 dW0gbWFpbl9hcmcpCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJZXJlcG9ydChMT0cs CiAJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jaHJvbml6YXRpb24g d29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiLCB0YWJsZSBcIiVzXCIgaGFzIHN0YXJ0ZWQi LAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsIGdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBX b3JrZXItPnJlbGlkKSkpKTsKKwkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJZ2V0 X3JlbF9uYW1lKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOwogCWVsc2UKIAkJZXJlcG9y dChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24t Pm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2lj YWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlv biBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2Ny aXB0aW9uLT5uYW1lKSkpOwogCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CisKKy8q IExvZ2ljYWwgUmVwbGljYXRpb24gQXBwbHkgd29ya2VyIGVudHJ5IHBvaW50ICovCit2b2lkCitB cHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBE YXR1bUdldEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsK KwlYTG9nUmVjUHRyCW9yaWdpbl9zdGFydHBvcyA9IEludmFsaWRYTG9nUmVjUHRyOworCWNoYXIJ ICAgKm15c2xvdG5hbWUgPSBOVUxMOworCVdhbFJjdlN0cmVhbU9wdGlvbnMgb3B0aW9uczsKKwlp bnQJCQlzZXJ2ZXJfdmVyc2lvbjsKKworCS8qIEF0dGFjaCB0byBzbG90ICovCisJbG9naWNhbHJl cF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGlu ZyAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJ cHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMo KTsKKworCS8qCisJICogV2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgYW55IFJlc291cmNlT3duZXIg aW4gYSB3YWxyZWNlaXZlciBwcm9jZXNzLCBidXQKKwkgKiBpZiB3ZSBkaWQsIHdlIGNvdWxkIGNh bGwgQ3JlYXRlQXV4UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVyZS4KKwkgKi8KKworCS8qIEluaXRp YWxpc2Ugc3RhdHMgdG8gYSBzYW5pc2ggdmFsdWUgKi8KKwlNeUxvZ2ljYWxSZXBXb3JrZXItPmxh c3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9CisJCU15 TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKwor CS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLworCWxvYWRfZmlsZSgibGli cHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKKworCUluaXRpYWxpemVBcHBseVdvcmtlcigpOwogCiAJ LyogQ29ubmVjdCB0byB0aGUgb3JpZ2luIGFuZCBzdGFydCB0aGUgcmVwbGljYXRpb24uICovCiAJ ZWxvZyhERUJVRzEsICJjb25uZWN0aW5nIHRvIHB1Ymxpc2hlciB1c2luZyBjb25uZWN0aW9uIHN0 cmluZyBcIiVzXCIiLApAQCAtMzcxOCwyMCArNDUwNiwxNSBAQCBBcHBseVdvcmtlck1haW4oRGF0 dW0gbWFpbl9hcmcpCiAJewogCQlzdGFydF90YWJsZV9zeW5jKCZvcmlnaW5fc3RhcnRwb3MsICZt eXNsb3RuYW1lKTsKIAotCQkvKgotCQkgKiBBbGxvY2F0ZSB0aGUgb3JpZ2luIG5hbWUgaW4gbG9u Zy1saXZlZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0Ci0JCSAqIG1lc3NhZ2UuCi0JCSAqLwog CQlSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE15U3Vic2NyaXB0aW9uLT5vaWQs CiAJCQkJCQkJCQkJICAgTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCwKIAkJCQkJCQkJCQkgICBv cmlnaW5uYW1lLAogCQkJCQkJCQkJCSAgIHNpemVvZihvcmlnaW5uYW1lKSk7Ci0JCWFwcGx5X2Vy cm9yX2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlD b250ZXh0LAotCQkJCQkJCQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUpOworCQlzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9vcmlnaW4ob3JpZ2lubmFtZSk7CiAJfQogCWVsc2UKIAl7Ci0JCS8qIFRoaXMg aXMgbWFpbiBhcHBseSB3b3JrZXIgKi8KKwkJLyogVGhpcyBpcyB0aGUgbGVhZGVyIGFwcGx5IHdv cmtlciAqLwogCQlSZXBPcmlnaW5JZCBvcmlnaW5pZDsKIAkJVGltZUxpbmVJRAlzdGFydHBvaW50 VExJOwogCQljaGFyCSAgICplcnI7CkBAIC0zNzU1LDcgKzQ1MzgsNyBAQCBBcHBseVdvcmtlck1h aW4oRGF0dW0gbWFpbl9hcmcpCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdp bm5hbWUsIHRydWUpOwogCQlpZiAoIU9pZElzVmFsaWQob3JpZ2luaWQpKQogCQkJb3JpZ2luaWQg PSByZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3Nl dHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsK IAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQlvcmlnaW5fc3RhcnRw b3MgPSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIAkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CkBAIC0zNzczLDEyICs0NTU2LDcgQEAgQXBwbHlXb3JrZXJNYWlu KERhdHVtIG1haW5fYXJnKQogCQkgKi8KIAkJKHZvaWQpIHdhbHJjdl9pZGVudGlmeV9zeXN0ZW0o TG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgJnN0YXJ0cG9pbnRUTEkpOwogCi0JCS8qCi0JCSAqIEFs bG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNv bnRleHQKLQkJICogbWVzc2FnZS4KLQkJICovCi0JCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5v cmlnaW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250ZXh0LAotCQkJCQkJCQkJ CQkJCQkJCSAgIG9yaWdpbm5hbWUpOworCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9vcmlnaW4o b3JpZ2lubmFtZSk7CiAJfQogCiAJLyoKQEAgLTM3OTYsMTMgKzQ1NzQsMzYgQEAgQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJc2VydmVyX3ZlcnNpb24gPSB3YWxyY3Zfc2VydmVy X3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CiAJb3B0aW9ucy5wcm90by5sb2dpY2Fs LnByb3RvX3ZlcnNpb24gPQorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAgPyBMT0dJQ0FMUkVQ X1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CiAJCXNlcnZlcl92ZXJzaW9uID49 IDE1MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gOgogCQlzZXJ2 ZXJfdmVyc2lvbiA+PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05V TSA6CiAJCUxPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU07CiAKIAlvcHRpb25zLnByb3RvLmxv Z2ljYWwucHVibGljYXRpb25fbmFtZXMgPSBNeVN1YnNjcmlwdGlvbi0+cHVibGljYXRpb25zOwog CW9wdGlvbnMucHJvdG8ubG9naWNhbC5iaW5hcnkgPSBNeVN1YnNjcmlwdGlvbi0+YmluYXJ5Owot CW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgPSBNeVN1YnNjcmlwdGlvbi0+c3RyZWFt OworCisJLyoKKwkgKiBBc3NpZ24gdGhlIGFwcHJvcHJpYXRlIG9wdGlvbiB2YWx1ZSBmb3Igc3Ry ZWFtaW5nIG9wdGlvbiBhY2NvcmRpbmcgdG8KKwkgKiB0aGUgJ3N0cmVhbWluZycgbW9kZSBhbmQg dGhlIHB1Ymxpc2hlcidzIGFiaWxpdHkgdG8gc3VwcG9ydCB0aGF0IG1vZGUuCisJICovCisJaWYg KHNlcnZlcl92ZXJzaW9uID49IDE2MDAwMCAmJgorCQlNeVN1YnNjcmlwdGlvbi0+c3RyZWFtID09 IExPR0lDQUxSRVBfU1RSRUFNX1BBUkFMTEVMKQorCXsKKwkJb3B0aW9ucy5wcm90by5sb2dpY2Fs LnN0cmVhbWluZ19zdHIgPSAicGFyYWxsZWwiOworCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFs bGVsX2FwcGx5ID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAoc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAw ICYmCisJCQkgTXlTdWJzY3JpcHRpb24tPnN0cmVhbSAhPSBMT0dJQ0FMUkVQX1NUUkVBTV9PRkYp CisJeworCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0ciA9ICJvbiI7CisJCU15 TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKKwl9CisJZWxzZQorCXsK KwkJb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSBOVUxMOworCQlNeUxvZ2lj YWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7CisJfQorCiAJb3B0aW9ucy5wcm90 by5sb2dpY2FsLnR3b3BoYXNlID0gZmFsc2U7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLm9yaWdp biA9IHBzdHJkdXAoTXlTdWJzY3JpcHRpb24tPm9yaWdpbik7CiAKQEAgLTM4OTksNiArNDcwMCwx NSBAQCBJc0xvZ2ljYWxXb3JrZXIodm9pZCkKIAlyZXR1cm4gTXlMb2dpY2FsUmVwV29ya2VyICE9 IE5VTEw7CiB9CiAKKy8qCisgKiBJcyBjdXJyZW50IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0 aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcj8KKyAqLworYm9vbAorSXNMb2dpY2FsUGFyYWxsZWxB cHBseVdvcmtlcih2b2lkKQoreworCXJldHVybiBJc0xvZ2ljYWxXb3JrZXIoKSAmJiBhbV9wYXJh bGxlbF9hcHBseV93b3JrZXIoKTsKK30KKwogLyoKICAqIFN0YXJ0IHNraXBwaW5nIGNoYW5nZXMg b2YgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hlcyB0aGUKICAqIExTTiBz cGVjaWZpZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KQEAgLTM5NjEsNyArNDc3MSw3IEBA IGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiAJWExv Z1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsKIAlib29sCQlzdGFy dGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lw bHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikpIHx8IGFt X3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQogCQlyZXR1cm47CiAKIAlpZiAoIUlzVHJhbnNhY3Rp b25TdGF0ZSgpKQpAQCAtNDAzMyw3ICs0ODQzLDcgQEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBf bHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIH0KIAogLyogRXJyb3IgY2FsbGJhY2sgdG8gZ2l2 ZSBtb3JlIGNvbnRleHQgaW5mbyBhYm91dCB0aGUgY2hhbmdlIGJlaW5nIGFwcGxpZWQgKi8KLXN0 YXRpYyB2b2lkCit2b2lkCiBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpCiB7CiAJQXBw bHlFcnJvckNhbGxiYWNrQXJnICplcnJhcmcgPSAmYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnOwpA QCAtNDA2MSwyMyArNDg3MSw0NyBAQCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpCiAJ CQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKIAkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFy Zy0+ZmluaXNoX2xzbikpOwogCX0KLQllbHNlIGlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0gPCAw KQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBv cmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0 YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAl WC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21l c3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVy ZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJ ICAgZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZp bmlzaF9sc24pKTsKIAllbHNlCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIg Zm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIiBp biB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAotCQkJCSAgIGVycmFyZy0+b3Jp Z2luX25hbWUsCi0JCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5k KSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCi0JCQkJICAgZXJyYXJn LT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwu YXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKLQkJCQkgICBlcnJhcmctPnJlbW90ZV94 aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCXsKKwkJ aWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCisJCXsKKwkJCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyBy ZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0 eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0 cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAg bG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFy Zy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVy ZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCk7CisJCQllbHNlCisJCQkJ ZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2lu IFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0 IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgi LAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVz c2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3Rl cmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJ CQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJy YXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAoWExvZ1JlY1B0cklz SW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQoInByb2Nlc3Npbmcg cmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2Ug dHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29s dW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9u YW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwK KwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFy Zy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVy ZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+cmVt b3RlX3hpZCk7CisJCQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0 YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNc IiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wi IGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmct Pm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5j b21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJ CSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVs LT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVy cmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlz aF9sc24pKTsKKwkJfQorCX0KIH0KIAogLyogU2V0IHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIG9m IGFwcGx5IGVycm9yIGNhbGxiYWNrICovCkBAIC00MDk3LDMgKzQ5MzEsNTMgQEAgcmVzZXRfYXBw bHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpCiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLnJl bW90ZV9hdHRudW0gPSAtMTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KEludmFsaWRU cmFuc2FjdGlvbklkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiB9CisKKy8qCisgKiBBbGxvY2F0ZSB0 aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0IG1l c3NhZ2UuCisgKi8KK3ZvaWQKK3NldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpv cmlnaW5uYW1lKQoreworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1l bW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lu bmFtZSk7Cit9CisKKy8qCisgKiBSZXR1cm4gdGhlIGFjdGlvbiB0byBiZSB0YWtlbiBmb3IgdGhl IGdpdmVuIHRyYW5zYWN0aW9uLiAqd2luZm8gaXMKKyAqIGFzc2lnbmVkIHRvIHRoZSBkZXN0aW5h dGlvbiBwYXJhbGxlbCB3b3JrZXIgaW5mbyB3aGVuIHRoZSBsZWFkZXIgYXBwbHkKKyAqIHdvcmtl ciBoYXMgdG8gcGFzcyBhbGwgdGhlIHRyYW5zYWN0aW9uJ3MgY2hhbmdlcyB0byB0aGUgcGFyYWxs ZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLworc3RhdGljIFRyYW5zQXBwbHlBY3Rpb24KK2dldF90 cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICoqd2luZm8pCit7CisJKndpbmZvID0gTlVMTDsKKworCWlmIChhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSkKKwl7CisJCXJldHVybiBUUkFOU19QQVJBTExFTF9BUFBMWTsKKwl9 CisJZWxzZSBpZiAoaW5fcmVtb3RlX3RyYW5zYWN0aW9uKQorCXsKKwkJcmV0dXJuIFRSQU5TX0xF QURFUl9BUFBMWTsKKwl9CisKKwkvKgorCSAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRo aXMgdHJhbnNhY3Rpb24gdXNpbmcgYSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlci4KKwkgKi8K Kwkqd2luZm8gPSBwYV9maW5kX3dvcmtlcih4aWQpOworCisJaWYgKCEqd2luZm8pCisJeworCQly ZXR1cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRTsKKwl9CisJZWxzZSBpZiAoKCp3aW5mbyktPnNl cmlhbGl6ZV9jaGFuZ2VzKQorCXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklB TElaRTsKKwl9CisJZWxzZQorCXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFM TEVMOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5j CmluZGV4IDc3MzcyNDI1MTYuLmU1MzdmYzkxZTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImNhdGFs b2cvcGdfcHVibGljYXRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKKyNpbmNsdWRlICJjb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNs dWRlICJmbWdyLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0yOTAsNyArMjkx LDcgQEAgcGFyc2Vfb3V0cHV0X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRh ICpkYXRhKQogCWJvb2wJCW9yaWdpbl9vcHRpb25fZ2l2ZW4gPSBmYWxzZTsKIAogCWRhdGEtPmJp bmFyeSA9IGZhbHNlOwotCWRhdGEtPnN0cmVhbWluZyA9IGZhbHNlOworCWRhdGEtPnN0cmVhbWlu ZyA9IExPR0lDQUxSRVBfU1RSRUFNX09GRjsKIAlkYXRhLT5tZXNzYWdlcyA9IGZhbHNlOwogCWRh dGEtPnR3b19waGFzZSA9IGZhbHNlOwogCkBAIC0zNjksNyArMzcwLDcgQEAgcGFyc2Vfb3V0cHV0 X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRhICpkYXRhKQogCQkJCQkJIGVy cm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOwogCQkJc3RyZWFtaW5n X2dpdmVuID0gdHJ1ZTsKIAotCQkJZGF0YS0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVhbihkZWZl bCk7CisJCQlkYXRhLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVsKTsKIAkJ fQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAwKQog CQl7CkBAIC00NjEsMTMgKzQ2MiwyMCBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCQkgKiB3ZSBvbmx5IGFs bG93IGl0IHdpdGggc3VmZmljaWVudCB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCwgYW5kIHdoZW4K IAkJICogdGhlIG91dHB1dCBwbHVnaW4gc3VwcG9ydHMgaXQuCiAJCSAqLwotCQlpZiAoIWRhdGEt PnN0cmVhbWluZykKKwkJaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9P RkYpCiAJCQljdHgtPnN0cmVhbWluZyA9IGZhbHNlOwotCQllbHNlIGlmIChkYXRhLT5wcm90b2Nv bF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0pCisJCWVsc2Ug aWYgKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9PTiAmJgorCQkJCSBkYXRh LT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0p CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKIAkJCQkJIGVycm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQgZG9l cyBub3Qgc3VwcG9ydCBzdHJlYW1pbmcsIG5lZWQgJWQgb3IgaGlnaGVyIiwKIAkJCQkJCQlkYXRh LT5wcm90b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkp KTsKKwkJZWxzZSBpZiAoZGF0YS0+c3RyZWFtaW5nID09IExPR0lDQUxSRVBfU1RSRUFNX1BBUkFM TEVMICYmCisJCQkJIGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NU UkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJj b2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJyZXF1 ZXN0ZWQgcHJvdG9fdmVyc2lvbj0lZCBkb2VzIG5vdCBzdXBwb3J0IHBhcmFsbGVsIHN0cmVhbWlu ZywgbmVlZCAlZCBvciBoaWdoZXIiLAorCQkJCQkJCWRhdGEtPnByb3RvY29sX3ZlcnNpb24sIExP R0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNKSkpOwogCQllbHNlIGlm ICghY3R4LT5zdHJlYW1pbmcpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKQEAgLTE4NDEsNiArMTg0OSw4IEBAIHBnb3V0 cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJ CQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4bjsK KwlQR091dHB1dERhdGEgKmRhdGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdp bl9wcml2YXRlOworCWJvb2wJCXdyaXRlX2Fib3J0X2luZm8gPSAoZGF0YS0+c3RyZWFtaW5nID09 IExPR0lDQUxSRVBfU1RSRUFNX1BBUkFMTEVMKTsKIAogCS8qCiAJICogVGhlIGFib3J0IHNob3Vs ZCBoYXBwZW4gb3V0c2lkZSBzdHJlYW1pbmcgYmxvY2ssIGV2ZW4gZm9yIHN0cmVhbWVkCkBAIC0x ODU0LDcgKzE4NjQsOSBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwKIAlBc3NlcnQocmJ0eG5faXNfc3RyZWFtZWQodG9wdHhuKSk7CiAK IAlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKLQlsb2dpY2FscmVwX3dyaXRl X3N0cmVhbV9hYm9ydChjdHgtPm91dCwgdG9wdHhuLT54aWQsIHR4bi0+eGlkKTsKKwlsb2dpY2Fs cmVwX3dyaXRlX3N0cmVhbV9hYm9ydChjdHgtPm91dCwgdG9wdHhuLT54aWQsIHR4bi0+eGlkLCBh Ym9ydF9sc24sCisJCQkJCQkJCSAgdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSwgd3JpdGVfYWJv cnRfaW5mbyk7CisKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCiAJY2xlYW51cF9y ZWxfc3luY19jYWNoZSh0b3B0eG4tPnhpZCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y3NpZ25hbC5jCmluZGV4IDQzZmJiZGJjODYuLjM5NWIyY2Y2OTAgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9wcm9jc2lnbmFsLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9h c3luYy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgog I2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC02NTcsNiArNjU4LDkgQEAgcHJvY3NpZ25hbF9z aWd1c3IxX2hhbmRsZXIoU0lHTkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lH X0xPR19NRU1PUllfQ09OVEVYVCkpCiAJCUhhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQo KTsKIAorCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdF KSkKKwkJSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQoKTsKKwogCWlmIChDaGVj a1Byb2NTaWduYWwoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSkpCiAJCVJlY292 ZXJ5Q29uZmxpY3RJbnRlcnJ1cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCmluZGV4IDIwZGNjYTM4ZDkuLmVlOWI4OWE2NzIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwpAQCAtMTExNyw2ICsxMTE3LDQ1IEBAIFVubG9ja1NoYXJl ZE9iamVjdEZvclNlc3Npb24oT2lkIGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1Ymlk LAogCUxvY2tSZWxlYXNlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlKTsKIH0KIAorLyoKKyAqCQlMb2Nr QXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24KKyAqCisgKiBPYnRhaW4gYSBzZXNzaW9uLWxldmVs IGxvY2sgb24gYSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9naWNhbAorICogcmVw bGljYXRpb24gc3Vic2NyaWJlci4gU2VlIExvY2tSZWxhdGlvbklkRm9yU2Vzc2lvbiBmb3Igbm90 ZXMgYWJvdXQKKyAqIHNlc3Npb24tbGV2ZWwgbG9ja3MuCisgKi8KK3ZvaWQKK0xvY2tBcHBseVRy YW5zYWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2 IG9iamlkLAorCQkJCQkJCSAgIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsK KworCVNFVF9MT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFi YXNlSWQsCisJCQkJCQkJCSAgc3Vib2lkLAorCQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmpp ZCk7CisKKwkodm9pZCkgTG9ja0FjcXVpcmUoJnRhZywgbG9ja21vZGUsIHRydWUsIGZhbHNlKTsK K30KKworLyoKKyAqCQlVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbgorICovCit2b2lk CitVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lkLCBUcmFuc2FjdGlv bklkIHhpZCwgdWludDE2IG9iamlkLAorCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUpCit7CisJ TE9DS1RBRwkJdGFnOworCisJU0VUX0xPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04odGFnLAorCQkJ CQkJCQkgIE15RGF0YWJhc2VJZCwKKwkJCQkJCQkJICBzdWJvaWQsCisJCQkJCQkJCSAgeGlkLAor CQkJCQkJCQkgIG9iamlkKTsKKworCUxvY2tSZWxlYXNlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlKTsK K30KIAogLyoKICAqIEFwcGVuZCBhIGRlc2NyaXB0aW9uIG9mIGEgbG9ja2FibGUgb2JqZWN0IHRv IGJ1Zi4KQEAgLTEyMDIsNiArMTI0MSwxMyBAQCBEZXNjcmliZUxvY2tUYWcoU3RyaW5nSW5mbyBi dWYsIGNvbnN0IExPQ0tUQUcgKnRhZykKIAkJCQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkMywKIAkJ CQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkNCk7CiAJCQlicmVhazsKKwkJY2FzZSBMT0NLVEFHX0FQ UExZX1RSQU5TQUNUSU9OOgorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsCisJCQkJCQkJIF8oInJl bW90ZSB0cmFuc2FjdGlvbiAldSBvZiBzdWJzY3JpcHRpb24gJXUgb2YgZGF0YWJhc2UgJXUiKSwK KwkJCQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkMywKKwkJCQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxk MiwKKwkJCQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkMSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoK IAkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLAogCQkJCQkJCSBfKCJ1bnJlY29nbml6ZWQgbG9ja3Rh ZyB0eXBlICVkIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggMzE0NzllODIxMi4uMjI0YWIyOTBhZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5k L3Rjb3AvcG9zdGdyZXMuYwpAQCAtMzM5MSw2ICszMzkxLDkgQEAgUHJvY2Vzc0ludGVycnVwdHMo dm9pZCkKIAogCWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKIAkJUHJvY2Vzc0xvZ01lbW9y eUNvbnRleHRJbnRlcnJ1cHQoKTsKKworCWlmIChQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcp CisJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcygpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IGY5NTc0ZTgwMGYuLjZlNDU5OTI3OGMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTIzMCw2ICsyMzAsOSBA QCBwZ3N0YXRfZ2V0X3dhaXRfYWN0aXZpdHkoV2FpdEV2ZW50QWN0aXZpdHkgdykKIAkJY2FzZSBX QUlUX0VWRU5UX0xPR0lDQUxfTEFVTkNIRVJfTUFJTjoKIAkJCWV2ZW50X25hbWUgPSAiTG9naWNh bExhdW5jaGVyTWFpbiI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFS QUxMRUxfQVBQTFlfTUFJTjoKKwkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBwbHlN YWluIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTToK IAkJCWV2ZW50X25hbWUgPSAiUmVjb3ZlcnlXYWxTdHJlYW0iOwogCQkJYnJlYWs7CkBAIC0zODgs NiArMzkxLDkgQEAgcGdzdGF0X2dldF93YWl0X2lwYyhXYWl0RXZlbnRJUEMgdykKIAkJY2FzZSBX QUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJUOgogCQkJZXZlbnRfbmFtZSA9ICJI YXNoR3Jvd0J1Y2tldHNSZWluc2VydCI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xP R0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFOgorCQkJZXZlbnRfbmFtZSA9ICJMb2dp Y2FsUGFyYWxsZWxBcHBseVN0YXRlQ2hhbmdlIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZF TlRfTE9HSUNBTF9TWU5DX0RBVEE6CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxTeW5jRGF0YSI7 CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3Mu YyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwppbmRleCAzY2NlNGJkYmMxLi5m MThlNDE2MmFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCkBAIC0zNywxMCArMzcsMTEg QEAgY29uc3QgY2hhciAqY29uc3QgTG9ja1RhZ1R5cGVOYW1lc1tdID0gewogCSJzcGVjdG9rZW4i LAogCSJvYmplY3QiLAogCSJ1c2VybG9jayIsCi0JImFkdmlzb3J5IgorCSJhZHZpc29yeSIsCisJ ImFwcGx5dHJhbnNhY3Rpb24iCiB9OwogCi1TdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKExvY2tU YWdUeXBlTmFtZXMpID09IChMT0NLVEFHX0FEVklTT1JZICsgMSksCitTdGF0aWNBc3NlcnREZWNs KGxlbmd0aG9mKExvY2tUYWdUeXBlTmFtZXMpID09IChMT0NLVEFHX0xBU1RfVFlQRSArIDEpLAog CQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21hdGNoIik7CiAKIC8qIFRoaXMgbXVzdCBtYXRjaCBlbnVt IFByZWRpY2F0ZUxvY2tUYXJnZXRUeXBlIChwcmVkaWNhdGVfaW50ZXJuYWxzLmgpICovCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDY4MzI4YjE0MDIuLjkyNTQ1YjQ5NTggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0zMDAyLDYgKzMwMDIsMTggQEAgc3Ry dWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwK IAl9LAogCisJeworCQl7Im1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRp b24iLAorCQkJUEdDX1NJR0hVUCwKKwkJCVJFUExJQ0FUSU9OX1NVQlNDUklCRVJTLAorCQkJZ2V0 dGV4dF9ub29wKCJNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHBlciBz dWJzY3JpcHRpb24uIiksCisJCQlOVUxMLAorCQl9LAorCQkmbWF4X3BhcmFsbGVsX2FwcGx5X3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbiwKKwkJMiwgMCwgTUFYX1BBUkFMTEVMX1dPUktFUl9MSU1J VCwKKwkJTlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsibG9nX3JvdGF0aW9uX2FnZSIs IFBHQ19TSUdIVVAsIExPR0dJTkdfV0hFUkUsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGFt b3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGZvcmNpbmcgIgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDVhZmRlYjA0ZGUuLmMyYWRhOTIw NTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUK QEAgLTM1OSw2ICszNTksNyBAQAogI21heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0 CSMgdGFrZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nlc3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWly ZXMgcmVzdGFydCkKICNtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFr ZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCisjbWF4X3BhcmFsbGVsX2Fw cGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2Fs X3JlcGxpY2F0aW9uX3dvcmtlcnMKIAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwppbmRleCA3NTVkNzVhZTRkLi5mZTNiNGEwYmQ3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1MzMsNyAr NDUzMyw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpZiAoZm91dC0+cmVt b3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHMu c3Vic3RyZWFtLFxuIik7CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBm YWxzZSBBUyBzdWJzdHJlYW0sXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIg J2YnIEFTIHN1YnN0cmVhbSxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUw MDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ2NzAsOCArNDY3MCwxMCBA QCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8g KnN1YmluZm8pCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJiaW5hcnksICJ0IikgPT0gMCkKIAkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGJpbmFyeSA9IHRydWUiKTsKIAotCWlmIChz dHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAiZiIpICE9IDApCisJaWYgKHN0cmNtcChzdWJpbmZv LT5zdWJzdHJlYW0sICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIs IHN0cmVhbWluZyA9IG9uIik7CisJZWxzZSBpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwg InAiKSA9PSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0g cGFyYWxsZWwiKTsKIAogCWlmIChzdHJjbXAoc3ViaW5mby0+c3VidHdvcGhhc2VzdGF0ZSwgdHdv X3BoYXNlX2Rpc2FibGVkKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwg dHdvX3BoYXNlID0gb24iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggNTIzZmFiNjFiOS4uNjY1NWYwNzcyMiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKQEAgLTY1MDIsMTEgKzY1MDIsMjQgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0 IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl7CiAJCS8qIEJpbmFyeSBtb2RlIGFuZCBz dHJlYW1pbmcgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHYxNCBhbmQgaGlnaGVyICovCiAJCWlmIChw c2V0LnN2ZXJzaW9uID49IDE0MDAwMCkKKwkJewogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwK LQkJCQkJCQkgICIsIHN1YmJpbmFyeSBBUyBcIiVzXCJcbiIKLQkJCQkJCQkgICIsIHN1YnN0cmVh bSBBUyBcIiVzXCJcbiIsCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkJpbmFyeSIpLAotCQkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJCQkJCQkJICAiLCBzdWJiaW5hcnkgQVMg XCIlc1wiXG4iLAorCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJCaW5hcnkiKSk7CisKKwkJCWlmIChw c2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJ CQkJCQkgICIsIChDQVNFIHN1YnN0cmVhbVxuIgorCQkJCQkJCQkgICIgICAgV0hFTiAnZicgVEhF TiAnb2ZmJ1xuIgorCQkJCQkJCQkgICIgICAgV0hFTiAndCcgVEhFTiAnb24nXG4iCisJCQkJCQkJ CSAgIiAgICBXSEVOICdwJyBUSEVOICdwYXJhbGxlbCdcbiIKKwkJCQkJCQkJICAiICAgRU5EKSBB UyBcIiVzXCJcbiIsCisJCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJCQll bHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCBzdWJzdHJlYW0g QVMgXCIlc1wiXG4iLAorCQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikpOworCQl9 CiAKIAkJLyogVHdvX3BoYXNlIGFuZCBkaXNhYmxlX29uX2Vycm9yIGFyZSBvbmx5IHN1cHBvcnRl ZCBpbiB2MTUgYW5kIGhpZ2hlciAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCBlYjRlZWI0NDhiLi44MGIxZmI2 MzRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTgwLDcgKzgwLDgg QEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBC S0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJiaW5hcnk7CQkvKiBUcnVlIGlm IHRoZSBzdWJzY3JpcHRpb24gd2FudHMgdGhlCiAJCQkJCQkJCSAqIHB1Ymxpc2hlciB0byBzZW5k IGRhdGEgaW4gYmluYXJ5ICovCiAKLQlib29sCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJv Z3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1w cm9ncmVzcyB0cmFuc2FjdGlvbnMuIFNlZQorCQkJCQkJCQkgKiBTVUJTVFJFQU1feHh4IGNvbnN0 YW50cy4gKi8KIAogCWNoYXIJCXN1YnR3b3BoYXNlc3RhdGU7CS8qIFN0cmVhbSB0d28tcGhhc2Ug dHJhbnNhY3Rpb25zICovCiAKQEAgLTEyNCw3ICsxMjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJz Y3JpcHRpb24KIAlib29sCQllbmFibGVkOwkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRp b24gaXMgZW5hYmxlZCAqLwogCWJvb2wJCWJpbmFyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1 YnNjcmlwdGlvbiB3YW50cyBkYXRhIGluCiAJCQkJCQkJCSAqIGJpbmFyeSBmb3JtYXQgKi8KLQli b29sCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9u cy4gKi8KKwljaGFyCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRy YW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwog CWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFsbG93IHN0cmVhbWluZyB0d28tcGhhc2UgdHJhbnNh Y3Rpb25zICovCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNj cmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBh IHdvcmtlciBlcnJvcgpAQCAtMTM3LDYgKzEzOSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3Jp cHRpb24KIAkJCQkJCQkJICogc3BlY2lmaWVkIG9yaWdpbiAqLwogfSBTdWJzY3JpcHRpb247CiAK Ky8qIERpc2FsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisjZGVm aW5lIExPR0lDQUxSRVBfU1RSRUFNX09GRiAnZicKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnMgYXJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQKKyAq IGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHVwc3Ry ZWFtLgorICovCisjZGVmaW5lIExPR0lDQUxSRVBfU1RSRUFNX09OICd0JworCisvKgorICogU3Ry ZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyBhcmUgYXBwbGllZCBpbW1lZGlhdGVseSB2 aWEgYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICovCisjZGVmaW5lIExPR0lDQUxSRVBf U1RSRUFNX1BBUkFMTEVMICdwJworCiBleHRlcm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRp b24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlw dGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9u KE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRp b25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKaW5kZXgg ZjU5YWFmNDg1Ny4uMjE0ZGM2YzI5ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlv bmNtZHMuaApAQCAtMjYsNCArMjYsNiBAQCBleHRlcm4gdm9pZCBEcm9wU3Vic2NyaXB0aW9uKERy b3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpOwogZXh0ZXJuIE9iamVj dEFkZHJlc3MgQWx0ZXJTdWJzY3JpcHRpb25Pd25lcihjb25zdCBjaGFyICpuYW1lLCBPaWQgbmV3 T3duZXJJZCk7CiBleHRlcm4gdm9pZCBBbHRlclN1YnNjcmlwdGlvbk93bmVyX29pZChPaWQgc3Vi aWQsIE9pZCBuZXdPd25lcklkKTsKIAorZXh0ZXJuIGNoYXIgZGVmR2V0U3RyZWFtaW5nTW9kZShE ZWZFbGVtICpkZWYpOworCiAjZW5kaWYJCQkJCQkJLyogU1VCU0NSSVBUSU9OQ01EU19IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGUxNjYxYjZjOTEu LmM4NTU5M2FkMTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5o CkBAIC0xNCw2ICsxNCw3IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxf cmVwbGljYXRpb25fd29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29y a2Vyc19wZXJfc3Vic2NyaXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOwogCiBleHRlcm4gdm9pZCBBcHBseUxh dW5jaGVyUmVnaXN0ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyTWFpbihEYXR1 bSBtYWluX2FyZyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IGQ2 NDI2NDNhYWUuLjBlYTJkZjUwODggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90 by5oCkBAIC0zMiwxMiArMzIsMTcgQEAKICAqCiAgKiBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNF X1ZFUlNJT05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24gd2l0aAogICogc3Vw cG9ydCBmb3IgdHdvLXBoYXNlIGNvbW1pdCBkZWNvZGluZyAoYXQgcHJlcGFyZSB0aW1lKS4gSW50 cm9kdWNlZCBpbiBQRzE1LgorICoKKyAqIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVM X1ZFUlNJT05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24KKyAqIHdoZXJlIHdl IHN1cHBvcnQgYXBwbHlpbmcgbGFyZ2Ugc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBpbiBwYXJhbGxl bC4KKyAqIEludHJvZHVjZWQgaW4gUEcxNi4KICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RP X01JTl9WRVJTSU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU0g MQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSAyCiAjZGVmaW5l IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gMwotI2RlZmluZSBMT0dJQ0FM UkVQX1BST1RPX01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJ T05fTlVNCisjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05f TlVNIDQKKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJF UF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0KIAogLyoKICAqIExvZ2ljYWwgbWVz c2FnZSB0eXBlcwpAQCAtMTc1LDYgKzE4MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVw Um9sbGJhY2tQcmVwYXJlZFR4bkRhdGEKIAljaGFyCQlnaWRbR0lEU0laRV07CiB9IExvZ2ljYWxS ZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YTsKIAorLyoKKyAqIFRyYW5zYWN0aW9uIHByb3RvY29s IGluZm9ybWF0aW9uIGZvciBzdHJlYW0gYWJvcnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IExvZ2lj YWxSZXBTdHJlYW1BYm9ydERhdGEKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlv bklkIHN1YnhpZDsKKwlYTG9nUmVjUHRyCWFib3J0X2xzbjsKKwlUaW1lc3RhbXBUeiBhYm9ydF90 aW1lOworfSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhOworCiBleHRlcm4gdm9pZCBsb2dpY2Fs cmVwX3dyaXRlX2JlZ2luKFN0cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwog ZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX2JlZ2luKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJ CSAgTG9naWNhbFJlcEJlZ2luRGF0YSAqYmVnaW5fZGF0YSk7CkBAIC0yNDYsOSArMjYyLDEzIEBA IGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91 dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuCiBleHRlcm4gVHJhbnNhY3Rpb25JZCBsb2dpY2FscmVw X3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkJCQkJICAgTG9naWNh bFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3Jp dGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJ CQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJ CQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpOworCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBz dWJ4aWQsCisJCQkJCQkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJCQkJCQkJCQkgIFRp bWVzdGFtcFR6IGFib3J0X3RpbWUsCisJCQkJCQkJCQkJICBib29sIHdyaXRlX2Fib3J0X2luZm8p OworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGlu LAorCQkJCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJ CQkJCQkJCSBib29sIHJlYWRfYWJvcnRfaW5mbyk7CiBleHRlcm4gY2hhciAqbG9naWNhbHJlcF9t ZXNzYWdlX3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uKTsKIAogI2VuZGlmCQkJCQkJCS8q IExPR0lDQUxfUFJPVE9fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o CmluZGV4IGYxZTdlOGEzNDguLjY5MzVjYjM5NDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2Fsd29ya2VyLmgKQEAgLTEyLDggKzEyLDE2IEBACiAjaWZuZGVmIExPR0lDQUxXT1JLRVJf SAogI2RlZmluZSBMT0dJQ0FMV09SS0VSX0gKIAorI2luY2x1ZGUgPHNpZ25hbC5oPgorCitleHRl cm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNzYWdl UGVuZGluZzsKKwogZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsK K2V4dGVybiB2b2lkIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAog ZXh0ZXJuIGJvb2wgSXNMb2dpY2FsV29ya2VyKHZvaWQpOworZXh0ZXJuIGJvb2wgSXNMb2dpY2Fs UGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBw bHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBs eU1lc3NhZ2VzKHZvaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFdPUktFUl9IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL29yaWdpbi5oCmluZGV4IDM3ODVmOTVmYTEuLjUzMTM1MTA5M2UgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCisrKyBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL29yaWdpbi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4dGVybiBYTG9nUmVjUHRy IHJlcGxvcmlnaW5fZ2V0X3Byb2dyZXNzKFJlcE9yaWdpbklkIG5vZGUsIGJvb2wgZmx1c2gpOwog CiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShYTG9nUmVjUHRyIHJlbW90 ZV9jb21taXQsCiAJCQkJCQkJCQkgICBYTG9nUmVjUHRyIGxvY2FsX2NvbW1pdCk7Ci1leHRlcm4g dm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSk7CitleHRlcm4g dm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVp cmVkX2J5KTsKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCh2b2lkKTsKIGV4 dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoYm9vbCBmbHVz aCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCmluZGV4IDY2MzMxMWFmYTkuLmI0YTgw MTU0MDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaApAQCAtMjYsNyArMjYsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQR091dHB1dERhdGEKIAlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsK IAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWlu ZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJbWVzc2FnZXM7CiAJYm9vbAkJdHdvX3BoYXNl OwogCWNoYXIJICAgKm9yaWdpbjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIu aAppbmRleCBhNDJhMTIwNGQzLi5mNmM0ZGQ3NWRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v cmVvcmRlcmJ1ZmZlci5oCkBAIC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRl ckJ1ZmZlclRYTgogCXsKIAkJVGltZXN0YW1wVHogY29tbWl0X3RpbWU7CiAJCVRpbWVzdGFtcFR6 IHByZXBhcmVfdGltZTsKKwkJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKIAl9CQkJeGFjdF90aW1l OwogCiAJLyoKQEAgLTY3OCw3ICs2NzksOCBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNz aWduQ2hpbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogZXh0ZXJuIHZv aWQgUmVvcmRlckJ1ZmZlckNvbW1pdENoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlv bklkIHhpZCwKIAkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBjb21t aXRfbHNuLAogCQkJCQkJCQkJIFhMb2dSZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBSZW9y ZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9n UmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZl ciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBUaW1l c3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChS ZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRlc3RSdW5uaW5nWGlkKTsKIGV4dGVy biB2b2lkIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVySW52YWxp ZGF0ZShSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNu KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCmluZGV4IGZkNjEzNjhkNTQuLmRl Y2ZmZTM1MmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaApAQCAtMTgyLDcg KzE4Miw3IEBAIHR5cGVkZWYgc3RydWN0CiAJCQl1aW50MzIJCXByb3RvX3ZlcnNpb247CS8qIExv Z2ljYWwgcHJvdG9jb2wgdmVyc2lvbiAqLwogCQkJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7 CS8qIFN0cmluZyBsaXN0IG9mIHB1YmxpY2F0aW9ucyAqLwogCQkJYm9vbAkJYmluYXJ5OyAvKiBB c2sgcHVibGlzaGVyIHRvIHVzZSBiaW5hcnkgKi8KLQkJCWJvb2wJCXN0cmVhbWluZzsJLyogU3Ry ZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLworCQkJY2hhcgkgICAqc3RyZWFtaW5nX3N0 cjsJLyogU3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLwogCQkJYm9vbAkJdHdvcGhh c2U7CS8qIFN0cmVhbWluZyBvZiB0d28tcGhhc2UgdHJhbnNhY3Rpb25zIGF0CiAJCQkJCQkJCQkg KiBwcmVwYXJlIHRpbWUgKi8KIAkJCWNoYXIJICAgKm9yaWdpbjsgLyogT25seSBwdWJsaXNoIGRh dGEgb3JpZ2luYXRpbmcgZnJvbSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgKaW5kZXggMmEzZWM1YzJkOC4uZGI4OTFlZWE4YSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTE3LDggKzE3LDEzIEBACiAjaW5jbHVkZSAi YWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIK ICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIK KyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKKyNpbmNsdWRlICJzdG9y YWdlL2J1ZmZpbGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRlICJz dG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgorI2luY2x1ZGUgInN0 b3JhZ2Uvc2htX3RvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogCiAKQEAgLTUzLDEz ICs1OCwyNCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAKIAkvKgogCSAqIFVz ZWQgdG8gY3JlYXRlIHRoZSBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGZpbGVzIGZvciB0aGUgc3RyZWFt aW5nCi0JICogdHJhbnNhY3Rpb25zLiAgVXBvbiB0aGUgYXJyaXZhbCBvZiB0aGUgZmlyc3Qgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLCB0aGUKLQkgKiBmaWxlc2V0IHdpbGwgYmUgaW5pdGlhbGl6ZWQs IGFuZCBpdCB3aWxsIGJlIGRlbGV0ZWQgd2hlbiB0aGUgd29ya2VyCi0JICogZXhpdHMuICBVbmRl ciB0aGlzLCBzZXBhcmF0ZSBidWZmaWxlcyB3b3VsZCBiZSBjcmVhdGVkIGZvciBlYWNoCi0JICog dHJhbnNhY3Rpb24gd2hpY2ggd2lsbCBiZSBkZWxldGVkIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBp cyBmaW5pc2hlZC4KKwkgKiB0cmFuc2FjdGlvbnMuICBVcG9uIHRoZSBhcnJpdmFsIG9mIHRoZSBm aXJzdCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gb3IKKwkgKiB3aGVuIHRoZSBmaXJzdC10aW1lIGxl YWRlciBhcHBseSB3b3JrZXIgdGltZXMgb3V0IHdoaWxlIHNlbmRpbmcgY2hhbmdlcworCSAqIHRv IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHRoZSBmaWxlc2V0IHdpbGwgYmUgaW5pdGlhbGl6 ZWQsIGFuZCBpdAorCSAqIHdpbGwgYmUgZGVsZXRlZCB3aGVuIHRoZSB3b3JrZXIgZXhpdHMuICBV bmRlciB0aGlzLCBzZXBhcmF0ZSBidWZmaWxlcworCSAqIHdvdWxkIGJlIGNyZWF0ZWQgZm9yIGVh Y2ggdHJhbnNhY3Rpb24gd2hpY2ggd2lsbCBiZSBkZWxldGVkIGFmdGVyIHRoZQorCSAqIHRyYW5z YWN0aW9uIGlzIGZpbmlzaGVkLgogCSAqLwogCUZpbGVTZXQgICAgKnN0cmVhbV9maWxlc2V0Owog CisJLyoKKwkgKiBQSUQgb2YgbGVhZGVyIGFwcGx5IHdvcmtlciBpZiB0aGlzIHNsb3QgaXMgdXNl ZCBmb3IgYSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciwgSW52YWxpZFBpZCBvdGhlcndpc2Uu CisJICovCisJcGlkX3QJCWFwcGx5X2xlYWRlcl9waWQ7CisKKwkvKiBJbmRpY2F0ZXMgd2hldGhl ciBhcHBseSBjYW4gYmUgcGVyZm9ybWVkIGluIHBhcmFsbGVsLiAqLworCWJvb2wJCXBhcmFsbGVs X2FwcGx5OworCiAJLyogU3RhdHMuICovCiAJWExvZ1JlY1B0cglsYXN0X2xzbjsKIAlUaW1lc3Rh bXBUeiBsYXN0X3NlbmRfdGltZTsKQEAgLTY4LDkgKzg0LDEzOCBAQCB0eXBlZGVmIHN0cnVjdCBM b2dpY2FsUmVwV29ya2VyCiAJVGltZXN0YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdv cmtlcjsKIAorLyoKKyAqIFN0YXRlIG9mIHRoZSB0cmFuc2FjdGlvbiBpbiBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCisgKgorICogVGhlIGVudW0gdmFsdWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBvcmRl ciBhcyB0aGUgdHJhbnNhY3Rpb24gc3RhdGUKKyAqIHRyYW5zaXRpb25zLgorICovCit0eXBlZGVm IGVudW0gUGFyYWxsZWxUcmFuc1N0YXRlCit7CisJUEFSQUxMRUxfVFJBTlNfVU5LTk9XTiwKKwlQ QVJBTExFTF9UUkFOU19TVEFSVEVELAorCVBBUkFMTEVMX1RSQU5TX0ZJTklTSEVECit9IFBhcmFs bGVsVHJhbnNTdGF0ZTsKKworLyoKKyAqIFN0YXRlIG9mIGZpbGVzZXQgdXNlZCB0byBjb21tdW5p Y2F0ZSBjaGFuZ2VzIGZyb20gbGVhZGVyIHRvIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisg KgorICogRlNfRU1QVFkgaW5kaWNhdGVzIGFuIGluaXRpYWwgc3RhdGUgd2hlcmUgdGhlIGxlYWRl ciBkb2Vzbid0IG5lZWQgdG8gdXNlCisgKiB0aGUgZmlsZSB0byBjb21tdW5pY2F0ZSB3aXRoIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKgorICogRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNT IGluZGljYXRlcyB0aGF0IHRoZSBsZWFkZXIgaXMgc2VyaWFsaXppbmcgY2hhbmdlcworICogdG8g dGhlIGZpbGUuCisgKgorICogRlNfU0VSSUFMSVpFX0RPTkUgaW5kaWNhdGVzIHRoYXQgdGhlIGxl YWRlciBoYXMgc2VyaWFsaXplZCBhbGwgY2hhbmdlcyB0bworICogdGhlIGZpbGUuCisgKgorICog RlNfUkVBRFkgaW5kaWNhdGVzIHRoYXQgaXQgaXMgbm93IG9rIGZvciBhIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciB0bworICogcmVhZCB0aGUgZmlsZS4KKyAqLwordHlwZWRlZiBlbnVtIFBhcnRpYWxG aWxlU2V0U3RhdGUKK3sKKwlGU19FTVBUWSwKKwlGU19TRVJJQUxJWkVfSU5fUFJPR1JFU1MsCisJ RlNfU0VSSUFMSVpFX0RPTkUsCisJRlNfUkVBRFkKK30gUGFydGlhbEZpbGVTZXRTdGF0ZTsKKwor LyoKKyAqIFN0cnVjdCBmb3Igc2hhcmluZyBpbmZvcm1hdGlvbiBiZXR3ZWVuIGxlYWRlciBhcHBs eSB3b3JrZXIgYW5kIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJzLgorICovCit0eXBlZGVmIHN0 cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCit7CisJc2xvY2tfdAkJbXV0ZXg7CisKKwlU cmFuc2FjdGlvbklkIHhpZDsKKworCS8qCisJICogU3RhdGUgdXNlZCB0byBlbnN1cmUgY29tbWl0 IG9yZGVyaW5nLgorCSAqCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHNldCBp dCB0byBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCBhZnRlcgorCSAqIGhhbmRsaW5nIHRoZSB0cmFu c2FjdGlvbiBmaW5pc2ggY29tbWFuZHMgd2hpbGUgdGhlIGFwcGx5IGxlYWRlciB3aWxsCisJICog d2FpdCBmb3IgaXQgdG8gYmVjb21lIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEIGJlZm9yZSBwcm9j ZWVkaW5nIGluCisJICogdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIChlLmcuIFNUUkVBTV9D T01NSVQvU1RSRUFNX1BSRVBBUkUvCisJICogU1RSRUFNX0FCT1JUKS4KKwkgKi8KKwlQYXJhbGxl bFRyYW5zU3RhdGUgeGFjdF9zdGF0ZTsKKworCS8qIEluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJl c3BvbmRpbmcgTG9naWNhbFJlcFdvcmtlciBzbG90LiAqLworCXVpbnQxNgkJbG9naWNhbHJlcF93 b3JrZXJfZ2VuZXJhdGlvbjsKKwlpbnQJCQlsb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworCisJ LyoKKwkgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGVyZSBhcmUgcGVuZGluZyBzdHJlYW1pbmcgYmxv Y2tzIGluIHRoZSBxdWV1ZS4gVGhlCisJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgY2hl Y2sgaXQgYmVmb3JlIHN0YXJ0aW5nIHRvIHdhaXQuCisJICovCisJcGdfYXRvbWljX3VpbnQzMiBw ZW5kaW5nX3N0cmVhbV9jb3VudDsKKworCS8qCisJICogWGFjdExhc3RDb21taXRFbmQgZnJvbSB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBUaGlzIGlzIHJlcXVpcmVkIGJ5CisJICogdGhlIGxl YWRlciB3b3JrZXIgc28gaXQgY2FuIHVwZGF0ZSB0aGUgbHNuX21hcHBpbmdzLgorCSAqLworCVhM b2dSZWNQdHIJbGFzdF9jb21taXRfZW5kOworCisJLyoKKwkgKiBBZnRlciBlbnRlcmluZyBQQVJU SUFMX1NFUklBTElaRSBtb2RlLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsCisJICogc2Vy aWFsaXplIGNoYW5nZXMgdG8gdGhlIGZpbGUsIGFuZCBzaGFyZSB0aGUgZmlsZXNldCB3aXRoIHRo ZSBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciB3aGVuIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0 aW9uIGZpbmlzaCBjb21tYW5kLiBUaGVuIHRoZQorCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3 aWxsIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdlcy4KKwkgKgorCSAqIEZpbGVTZXQgaXMg dXNlZCBoZXJlIGluc3RlYWQgb2YgU2hhcmVkRmlsZVNldCBiZWNhdXNlIHdlIG5lZWQgaXQgdG8K KwkgKiBzdXJ2aXZlIGFmdGVyIHJlbGVhc2luZyB0aGUgc2hhcmVkIG1lbW9yeSBzbyB0aGF0IHRo ZSBsZWFkZXIgYXBwbHkKKwkgKiB3b3JrZXIgY2FuIHJlLXVzZSB0aGUgc2FtZSBmaWxlc2V0IGZv ciB0aGUgbmV4dCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJICovCisJUGFydGlhbEZpbGVTZXRT dGF0ZSBmaWxlc2V0X3N0YXRlOworCUZpbGVTZXQJCWZpbGVzZXQ7Cit9IFBhcmFsbGVsQXBwbHlX b3JrZXJTaGFyZWQ7CisKKy8qCisgKiBJbmZvcm1hdGlvbiB3aGljaCBpcyB1c2VkIHRvIG1hbmFn ZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxl bEFwcGx5V29ya2VySW5mbworeworCS8qCisJICogVGhpcyBxdWV1ZSBpcyB1c2VkIHRvIHNlbmQg Y2hhbmdlcyBmcm9tIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvIHRoZQorCSAqIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KKwkgKi8KKwlzaG1fbXFfaGFuZGxlICptcV9oYW5kbGU7CisKKwkvKgor CSAqIFRoaXMgcXVldWUgaXMgdXNlZCB0byB0cmFuc2ZlciBlcnJvciBtZXNzYWdlcyBmcm9tIHRo ZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB0byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4K KwkgKi8KKwlzaG1fbXFfaGFuZGxlICplcnJvcl9tcV9oYW5kbGU7CisKKwlkc21fc2VnbWVudCAq ZHNtX3NlZzsKKworCS8qCisJICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgbmVlZHMgdG8gc2VyaWFsaXplIHRoZQorCSAqIHJlbWFpbmluZyBjaGFuZ2VzIHRvIGEg ZmlsZSBkdWUgdG8gdGltZW91dCB3aGVuIGF0dGVtcHRpbmcgdG8gc2VuZCBkYXRhCisJICogdG8g dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4KKwkgKi8KKwlib29s CQlzZXJpYWxpemVfY2hhbmdlczsKKworCS8qCisJICogVHJ1ZSBpZiB0aGUgd29ya2VyIGlzIGJl aW5nIHVzZWQgdG8gcHJvY2VzcyBhIHBhcmFsbGVsIGFwcGx5CisJICogdHJhbnNhY3Rpb24uIEZh bHNlIGluZGljYXRlcyB0aGlzIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4KKwkgKi8K Kwlib29sCQlpbl91c2U7CisKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7Cit9 IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvOworCiAvKiBNYWluIG1lbW9yeSBjb250ZXh0IGZvciBh cHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2VyIGxpZmV0aW1lLiAqLwogZXh0ZXJu IFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0OwogCitleHRlcm4gUEdETExJ TVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0OworCitleHRlcm4gUEdETExJ TVBPUlQgRXJyb3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CisK K2V4dGVybiBQR0RMTElNUE9SVCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpNeVBhcmFsbGVs U2hhcmVkOworCiAvKiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVybiBQR0RMTElN UE9SVCBzdHJ1Y3QgV2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uOwogCkBA IC04NCw5ICsyMjksMTEgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGlu dCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2VyICpsb2dpY2FscmVwX3dvcmtlcl9maW5k KE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkJYm9vbCBvbmx5X3J1bm5pbmcpOwog ZXh0ZXJuIExpc3QgKmxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5 X3J1bm5pbmcpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlk LCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCi0JCQkJCQkJCQkgT2lkIHVzZXJpZCwg T2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJp ZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAorCQkJCQkJCQkJIE9pZCB1c2VyaWQs IE9pZCByZWxpZCwKKwkJCQkJCQkJCSBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20pOwogZXh0ZXJu IHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CitleHRl cm4gdm9pZCBsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKGludCBzbG90X25vLCB1aW50MTYgZ2Vu ZXJhdGlvbik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1Ymlk LCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCkBAIC0xMDMsMTAgKzI1MCw3OCBAQCBleHRlcm4g dm9pZCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwogZXh0 ZXJuIHZvaWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1bSBhcmcsIGludCBj YWNoZWlkLAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0ZXJuIHZvaWQgc3Ry ZWFtX3N0YXJ0X2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQp OworZXh0ZXJuIHZvaWQgc3RyZWFtX3N0b3BfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQpOwor CisvKiBDb21tb24gc3RyZWFtaW5nIGZ1bmN0aW9uIHRvIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBt ZXNzYWdlcyAqLworZXh0ZXJuIHZvaWQgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhGaWxlU2V0ICpz dHJlYW1fZmlsZXNldCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCSAgIFhMb2dSZWNQdHIg bHNuKTsKKworZXh0ZXJuIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKKworZXh0 ZXJuIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKKworZXh0ZXJuIHZvaWQg c3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7CisKK2V4 dGVybiB2b2lkIEluaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKTsKKworZXh0ZXJuIHZvaWQgc3Rv cmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBYTG9nUmVjUHRyIGxvY2Fs X2xzbik7CisKKy8qIEZ1bmN0aW9uIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLworZXh0ZXJu IHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKK2V4dGVybiB2b2lkIHNldF9h cHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1lKTsKKworLyogUGFyYWxs ZWwgYXBwbHkgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlvbnMgKi8KK2V4dGVybiB2b2lkIHBh X2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiB2 b2lkIHBhX2RldGFjaF9hbGxfZXJyb3JfbXEodm9pZCk7CisKK2V4dGVybiBib29sIHBhX3NlbmRf ZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAorCQkJCQkJ IGNvbnN0IHZvaWQgKmRhdGEpOworZXh0ZXJuIHZvaWQgcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2Vy aWFsaXplKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKKwkJCQkJCQkJCQkgICBib29s IHN0cmVhbV9sb2NrZWQpOworCitleHRlcm4gdm9pZCBwYV9zZXRfeGFjdF9zdGF0ZShQYXJhbGxl bEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCSAgUGFyYWxsZWxUcmFuc1N0YXRl IGluX3hhY3QpOworZXh0ZXJuIHZvaWQgcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKKworZXh0ZXJuIHZvaWQgcGFfc3RhcnRfc3VidHJh bnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwKKwkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgdG9w X3hpZCk7CitleHRlcm4gdm9pZCBwYV9yZXNldF9zdWJ0cmFucyh2b2lkKTsKK2V4dGVybiB2b2lk IHBhX3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKTsK K2V4dGVybiB2b2lkIHBhX3NldF9maWxlc2V0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFy ZWQgKndzaGFyZWQsCisJCQkJCQkJCSBQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGUp OworCitleHRlcm4gdm9pZCBwYV9sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01P REUgbG9ja21vZGUpOworZXh0ZXJuIHZvaWQgcGFfdW5sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklk IHhpZCwgTE9DS01PREUgbG9ja21vZGUpOworCitleHRlcm4gdm9pZCBwYV9sb2NrX3RyYW5zYWN0 aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CitleHRlcm4gdm9pZCBw YV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2Rl KTsKKworZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2sodm9pZCk7CisK K2V4dGVybiB2b2lkIHBhX3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5m bywKKwkJCQkJCSAgIFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7CisKKyNkZWZpbmUgaXNQYXJhbGxl bEFwcGx5V29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5hcHBseV9sZWFkZXJfcGlkICE9IEludmFs aWRQaWQpCisKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVzeW5jX3dvcmtlcih2b2lkKQog ewogCXJldHVybiBPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpOwogfQogCitz dGF0aWMgaW5saW5lIGJvb2wKK2FtX2xlYWRlcl9hcHBseV93b3JrZXIodm9pZCkKK3sKKwlyZXR1 cm4gKCFhbV90YWJsZXN5bmNfd29ya2VyKCkgJiYKKwkJCSFpc1BhcmFsbGVsQXBwbHlXb3JrZXIo TXlMb2dpY2FsUmVwV29ya2VyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fcGFyYWxs ZWxfYXBwbHlfd29ya2VyKHZvaWQpCit7CisJcmV0dXJuIGlzUGFyYWxsZWxBcHBseVdvcmtlcihN eUxvZ2ljYWxSZXBXb3JrZXIpOworfQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFM X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9sbWdyLmgKaW5kZXggOTk1YzhlOGZkMy4uNGVlOTFlM2NmOSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9s bWdyLmgKQEAgLTEwNyw2ICsxMDcsMTEgQEAgZXh0ZXJuIHZvaWQgTG9ja1NoYXJlZE9iamVjdEZv clNlc3Npb24oT2lkIGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogZXh0ZXJu IHZvaWQgVW5sb2NrU2hhcmVkT2JqZWN0Rm9yU2Vzc2lvbihPaWQgY2xhc3NpZCwgT2lkIG9iamlk LCB1aW50MTYgb2Jqc3ViaWQsCiAJCQkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAorZXh0 ZXJuIHZvaWQgTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5z YWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQsCisJCQkJCQkJCQkJICAgTE9DS01PREUgbG9ja21v ZGUpOworZXh0ZXJuIHZvaWQgVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1 Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJCQkJIExPQ0tN T0RFIGxvY2ttb2RlKTsKKwogLyogRGVzY3JpYmUgYSBsb2NrdGFnIGZvciBlcnJvciBtZXNzYWdl cyAqLwogZXh0ZXJuIHZvaWQgRGVzY3JpYmVMb2NrVGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBM T0NLVEFHICp0YWcpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCmluZGV4IDlhNzE5MzQ4YmMuLjE5MGJkZGI3Njcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCisrKyBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvbG9jay5oCkBAIC0xNDksMTAgKzE0OSwxMiBAQCB0eXBlZGVmIGVudW0gTG9ja1Rh Z1R5cGUKIAlMT0NLVEFHX1NQRUNVTEFUSVZFX1RPS0VOLAkvKiBzcGVjdWxhdGl2ZSBpbnNlcnRp b24gWGlkIGFuZCB0b2tlbiAqLwogCUxPQ0tUQUdfT0JKRUNULAkJCQkvKiBub24tcmVsYXRpb24g ZGF0YWJhc2Ugb2JqZWN0ICovCiAJTE9DS1RBR19VU0VSTE9DSywJCQkvKiByZXNlcnZlZCBmb3Ig b2xkIGNvbnRyaWIvdXNlcmxvY2sgY29kZSAqLwotCUxPQ0tUQUdfQURWSVNPUlkJCQkvKiBhZHZp c29yeSB1c2VyIGxvY2tzICovCisJTE9DS1RBR19BRFZJU09SWSwJCQkvKiBhZHZpc29yeSB1c2Vy IGxvY2tzICovCisJTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTgkvKiB0cmFuc2FjdGlvbiBiZWlu ZyBhcHBsaWVkIG9uIGEgbG9naWNhbAorCQkJCQkJCQkgKiByZXBsaWNhdGlvbiBzdWJzY3JpYmVy ICovCiB9IExvY2tUYWdUeXBlOwogCi0jZGVmaW5lIExPQ0tUQUdfTEFTVF9UWVBFCUxPQ0tUQUdf QURWSVNPUlkKKyNkZWZpbmUgTE9DS1RBR19MQVNUX1RZUEUJTE9DS1RBR19BUFBMWV9UUkFOU0FD VElPTgogCiBleHRlcm4gUEdETExJTVBPUlQgY29uc3QgY2hhciAqY29uc3QgTG9ja1RhZ1R5cGVO YW1lc1tdOwogCkBAIC0yNzgsNiArMjgwLDE3IEBAIHR5cGVkZWYgc3RydWN0IExPQ0tUQUcKIAkg KGxvY2t0YWcpLmxvY2t0YWdfdHlwZSA9IExPQ0tUQUdfQURWSVNPUlksIFwKIAkgKGxvY2t0YWcp LmxvY2t0YWdfbG9ja21ldGhvZGlkID0gVVNFUl9MT0NLTUVUSE9EKQogCisvKgorICogSUQgaW5m byBmb3IgYSByZW1vdGUgdHJhbnNhY3Rpb24gb24gYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNj cmliZXIgaXM6IERCCisgKiBPSUQgKyBTVUJTQ1JJUFRJT04gT0lEICsgVFJBTlNBQ1RJT04gSUQg KyBPQkpJRAorICovCisjZGVmaW5lIFNFVF9MT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OKGxvY2t0 YWcsZGJvaWQsc3Vib2lkLHhpZCxvYmppZCkgXAorCSgobG9ja3RhZykubG9ja3RhZ19maWVsZDEg PSAoZGJvaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMiA9IChzdWJvaWQpLCBcCisJ IChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMyA9ICh4aWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFn X2ZpZWxkNCA9IChvYmppZCksIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfdHlwZSA9IExPQ0tUQUdf QVBQTFlfVFJBTlNBQ1RJT04sIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfbG9ja21ldGhvZGlkID0g REVGQVVMVF9MT0NLTUVUSE9EKQogCiAvKgogICogUGVyLWxvY2tlZC1vYmplY3QgbG9jayBpbmZv cm1hdGlvbjoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggNDVlMmYxZmU5ZC4uOTA1YWYy MjMxYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRl ZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMg dG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2Jh bCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyog YXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX1BBUkFM TEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJz ICovCiAKIAkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVS WV9DT05GTElDVF9EQVRBQkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRf ZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCBmNTMyNTRhZDFm Li42Y2FjZDZlZGFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC00Miw2ICs0Miw3IEBAIHR5 cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4sCiAJV0FJVF9FVkVOVF9M T0dJQ0FMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU4sCisJ V0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVOVF9SRUNP VkVSWV9XQUxfU1RSRUFNLAogCVdBSVRfRVZFTlRfU1lTTE9HR0VSX01BSU4sCiAJV0FJVF9FVkVO VF9XQUxfUkVDRUlWRVJfTUFJTiwKQEAgLTEwNSw2ICsxMDYsNyBAQCB0eXBlZGVmIGVudW0KIAlX QUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0FMTE9DQVRFLAogCVdBSVRfRVZFTlRfSEFTSF9H Uk9XX0JVQ0tFVFNfRUxFQ1QsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VS VCwKKwlXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFLAogCVdB SVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RB VEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggYzEzZDIxOGRjZi4uMWVkNmY0YzM5YyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTE3LDcgKzEx Nyw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkg Y3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKIC0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IG5vbmUg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjQgU0VUIChvcmlnaW4gPSBhbnkpOwpAQCAtMTI1LDcgKzEyNSw3IEBA IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55KTsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAg ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYg ICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEg cm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIzOwpAQCAtMTM4LDcgKzEz OCw3IEBAIEVSUk9SOiAgaW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6IG1pc3Npbmcg Ij0iIGFmdGVyICJmb29iYXIiIGluIGNvbm5lY3RpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBm ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAor IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCBQVUJMSUNBVElPTiB0ZXN0cHViMiwgdGVzdHB1YjMgV0lUSCAocmVm cmVzaCA9IGZhbHNlKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzEyMzQ1Jyk7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAg ICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzEyMzQ1CisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1 YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QyIHwgMC8xMjM0NQogKDEgcm93KQogCiAtLSBvayAtIHdpdGggbHNuID0gTk9ORQpA QCAtMTcwLDcgKzE3MCw3IEBAIEVSUk9SOiAgaW52YWxpZCBXQUwgbG9jYXRpb24gKExTTik6IDAv MAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwg ZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8w CisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAg fCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIEJFR0lOOwpAQCAt MjA1LDcgKzIwNSw3IEBAIEhJTlQ6ICBBdmFpbGFibGUgdmFsdWVzOiBsb2NhbCwgcmVtb3RlX3dy aXRlLCByZW1vdGVfYXBwbHksIG9uLCBvZmYuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgICBOYW1lICAgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlvbiAgICAg fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgbG9jYWwgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1 Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0 ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IGFueSAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNz X2RvZXNub3RleGlzdDIgfCAwLzAKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8ga2VlcCB0 aGUgcmVzdCBzaW1wbGUKQEAgLTI0Miw3ICsyNDIsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVw bGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwg ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK ICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJv dykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGJpbmFyeSA9IGZh bHNlKTsKQEAgLTI1MSwxMyArMjUxLDEzIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVh bWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3lu Y2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g CiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYg ICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisg cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YjsKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBmYWls IC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1p bmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlCitF UlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgInBhcmFsbGVsIgog LS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05O RUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIg V0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5JTkc6ICBzdWJz Y3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCkBAIC0yNjYsNyArMjY2 LDE1IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkg Y3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0 ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAor IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorKDEgcm93KQorCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworXGRScysKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlv biB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CkBAIC0yNzUsNyArMjgzLDcgQEAgQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1Ymxp Y2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAog LS0gZmFpbCAtIHB1YmxpY2F0aW9uIGFscmVhZHkgZXhpc3RzCkBAIC0yOTMsNyArMzAxLDcgQEAg RVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1YjEiIGlzIGFscmVhZHkgaW4gc3Vic2NyaXB0aW9u ICJyZWdyZXNzX3Rlc3RzdWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAgICAgICAgfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0 cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVibGljYXRp b24gdXNlZCBtb3JlIHRoZW4gb25jZQpAQCAtMzExLDcgKzMxOSw3IEBAIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVzdHB1YjIg V0lUSCAocmVmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CkBAIC0zNTAs NyArMzU4LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51 YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IGYgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFpbCAtIGFsdGVyIG9m IHR3b19waGFzZSBvcHRpb24gbm90IHN1cHBvcnRlZC4KQEAgLTM2Miw3ICszNzAsNyBAQCBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1ZSk7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAg fCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQog CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9O RSk7CkBAIC0zNzUsNyArMzgzLDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5 b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlv biB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25f dXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8IHAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVS IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKQEAg LTM5MSw3ICszOTksNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0 IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKQEAg LTM5OSw3ICs0MDcsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAo ZGlzYWJsZV9vbl9lcnJvciA9IHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3du ZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlw dGlvbi5zcWwKaW5kZXggZWFlYWRlOGNjZS4uNzk5MWFiZmU4ZiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdWJzY3JpcHRpb24uc3FsCkBAIC0xNjcsNyArMTY3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCiBEUk9QIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWI7CiAKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29s ZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZh bHNlLCBzdHJlYW1pbmcgPSBmb28pOwogCiAtLSBub3cgaXQgd29ya3MKQEAgLTE3NSw2ICsxNzUs MTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIAogXGRScysKIAorQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKKworXGRScysK KwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZh bHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUg PSBOT05FKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVh bS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggZTI1OWMx MDBkNS4uOTFlOGFhOGMwYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1 X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBA IC04LDYgKzgsMTI4IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhhdCB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZCBhcHBseWluZyB0aGUgc3RyZWFtaW5n CisjIHRyYW5zYWN0aW9uLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRp c19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFy L0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5 cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisKKyMgQ29tbW9uIHRlc3Qgc3RlcHMg Zm9yIGJvdGggdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgor c3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBh aXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAk aW4gID0gJyc7CisJbXkgJG91dCA9ICcnOworCisJbXkgJG9mZnNldCA9IDA7CisKKwlteSAkdGlt ZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRf ZGVmYXVsdCk7CisKKwlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdw b3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCisJCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisK KwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMg JG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSRpbiAuPSBxeworCUJFR0lOOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMywgNTAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUg bW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK Kwl9OworCSRoLT5wdW1wX25iOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkpOworCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOworCUNPTU1JVDsKKwl9KTsKKworCSRpbiAu PSBxeworCUNPTU1JVDsKKwlccQorCX07CisJJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0 aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVtIGhlcmUKKworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwlteSAk cmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworCisJIyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4g YmluYXJ5IG1vZGUKKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7CisKKwkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91 Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkg cyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJ fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCwgJ0NPTU1JVCcpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJ CSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hh bmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmli ZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFp bnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0 cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0 MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3VudChkID0gOTk5KSBG Uk9NIHRlc3RfdGFiIgorCSk7CisJaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLAorCQkn Y2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsbHkgY2hhbmdlZCBkYXRhJyk7CisKKwkj IENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVi bGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMjYsMTcgKzE0OCwyNyBAQCAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxLCAnZm9vJyksICgyLCAnYmFy JykiKTsKIAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBU QUJMRSB0ZXN0X3RhYl8yIChhIGludCkiKTsKKwogIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2Ny aWJlcgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBU QUJMRSB0ZXN0X3RhYiAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdGV4dCwgYyB0aW1lc3RhbXB0eiBE RUZBVUxUIG5vdygpLCBkIGJpZ2ludCBERUZBVUxUIDk5OSkiCiApOwogCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl8yIChhIGlu dCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VU5JUVVFIElOREVYIGlkeF90YWIgb24gdGVzdF90YWJfMihhKSIpOworCiAjIFNldHVwIGxvZ2lj YWwgcmVwbGljYXRpb24KIG15ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+ Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0 X3RhYiIpOworCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIs IHRlc3RfdGFiXzIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElP TiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FU SU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDYgKzE4MSw0MyBA QCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlh bCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCit0ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9k ZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkg JG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAn JGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyk7CisKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBT RVQoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGJpbmFyeSA9IG9mZikiKTsKKworJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VC U0NSSVBUSU9OIjsKKworIyBXZSBuZWVkIHRvIGNoZWNrIERFQlVHIGxvZ3MgdG8gZW5zdXJlIHRo YXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMKKyMgYXBwbGllZCB0aGUgdHJhbnNhY3Rp b24uIFNvLCBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7 Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisKKyMgUnVuIGEgcXVlcnkgdG8gbWFrZSBzdXJl IHRoYXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4gZWZmZWN0LgorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIDF9KTsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVf cHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKKyMgVGVzdCB0aGF0 IHRoZSBkZWFkbG9jayBpcyBkZXRlY3RlZCBhbW9uZyB0aGUgbGVhZGVyIGFuZCBwYXJhbGxlbCBh cHBseQorIyB3b3JrZXJzLgorCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywgImRlYWRsb2NrX3RpbWVvdXQgPSAxMG1zIik7Ciskbm9kZV9zdWJzY3JpYmVy LT5yZWxvYWQ7CisKKyMgUnVuIGEgcXVlcnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBo YXMgdGFrZW4gZWZmZWN0LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHF7U0VMRUNUIDF9KTsKKwogIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVh Y2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgogbXkgJGluICA9ICcnOwogbXkgJG91dCA9ICcn OwpAQCAtNTgsNzMgKzIyNyw5MCBAQCBteSAkdGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgkUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CiBteSAkaCA9ICRub2RlX3B1 Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIs CiAJb25fZXJyb3Jfc3RvcCA9PiAwKTsKIAorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2Vl biB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5CisjIHdvcmtl ciBjYW4gYmUgZGV0ZWN0ZWQuCisKK215ICRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCiAkaW4gLj0gcXsKIEJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiXzIg U0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKIH07CiAkaC0+cHVt cF9uYjsKIAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJF R0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkpOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDUwMDA7Ci1DT01NSVQ7Ci19KTsKKyMgRW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQgYmVmb3JlIHRoZQorIyBsZWFk ZXIgd29ya2VyLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAo IFtBLVowLTldKzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1 bmsvLAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiSU5TRVJUIElOVE8gdGVzdF90YWJfMiB2YWx1ZXMoMSkiKTsKIAogJGluIC49IHF7CiBDT01N SVQ7CiBccQogfTsKLSRoLT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBm YWlsLCBzbyBpZ25vcmUgdGhlbSBoZXJlCiskaC0+ZmluaXNoOwogCiskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2cocXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVk LywKKwkkb2Zmc2V0KTsKKworIyBJbiBvcmRlciBmb3IgdGhlIHR3byB0cmFuc2FjdGlvbnMgdG8g YmUgY29tcGxldGVkIG5vcm1hbGx5IHdpdGhvdXQgY2F1c2luZworIyBjb25mbGljdHMgZHVlIHRv IHRoZSB1bmlxdWUgaW5kZXgsIHdlIHRlbXBvcmFyaWx5IGRyb3AgaXQuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisjIFdh aXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFw cGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CiAKICRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLCAnY2hlY2sgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJl c3VsdCwgcXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9w cGluZyBpbmRleCcpOwogCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorIyBD bGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWJfMiIpOworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBT RVQgKGJpbmFyeSA9IG9uKSIpOworCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIgb24gdGVz dF90YWJfMihhKSIpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3Mg dG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKLVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKKyMgQ29uZmlybSBp ZiBhIGRlYWRsb2NrIGJldHdlZW4gdHdvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgY2FuIGJlIGRl dGVjdGVkLgogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2 NyksICdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKyRpbiAu PSBxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRo YXQgdGhlIGZpcnN0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNv bW1hbmQKKyMgYmVmb3JlIHRoZSBzZWNvbmQgb25lLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2Vz IGluIHRoZSBzdHJlYW1pbmcgY2h1bmsvLAorCSRvZmZzZXQpOwogCi0jIENoYW5nZSB0aGUgbG9j YWwgdmFsdWVzIG9mIHRoZSBleHRyYSBjb2x1bW5zIG9uIHRoZSBzdWJzY3JpYmVyLAotIyB1cGRh dGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVj dGVkCi0jIHZhbHVlcy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyBiZWhhdmUKLSMgcHJvcGVybHkgYWZ0ZXIgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24u Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRFIHRlc3Rf dGFiIFNFVCBjID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAn MXMnIgotKTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCSJJTlNFUlQgSU5UTyB0ZXN0X3Rh Yl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiKTsKIAorJGlu IC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZyhxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZGVhZGxvY2sgZGV0ZWN0ZWQv LAorCSRvZmZzZXQpOworCisjIEluIG9yZGVyIGZvciB0aGUgdHdvIHRyYW5zYWN0aW9ucyB0byBi ZSBjb21wbGV0ZWQgbm9ybWFsbHkgd2l0aG91dCBjYXVzaW5nCisjIGNvbmZsaWN0cyBkdWUgdG8g dGhlIHVuaXF1ZSBpbmRleCwgd2UgdGVtcG9yYXJpbHkgZHJvcCBpdC4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7CisKKyMgV2Fp dCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBw bHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK IAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCi0pOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2 NjY3fDY2NjcpLAotCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2Vk IGRhdGEnKTsKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFx KDEwMDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGlu ZGV4Jyk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXgg NjQ5ZGQ5NWY3YS4uMmYwMTQ4YzNhOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx Nl9zdHJlYW1fc3VieGFjdC5wbApAQCAtOCw2ICs4LDczIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKKyMgQ2hlY2sgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZCBh cHBseWluZyB0aGUgc3RyZWFtaW5nCisjIHRyYW5zYWN0aW9uLgorc3ViIGNoZWNrX3BhcmFsbGVs X2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0 eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9j ZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisK KyMgQ29tbW9uIHRlc3Qgc3RlcHMgZm9yIGJvdGggdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFt aW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsK KworCW15ICRvZmZzZXQgPSAwOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgorCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsK KwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczE7CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg2LCA4KSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDksIDExKSBzKGkpOworCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEyLCAxNCkg cyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQg czQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygxNSwgMTcpIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVy LCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCW15ICRyZXN1bHQgPQorCSAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3Vs dCwgcXEoMTJ8MTJ8MTIpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIg aW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0 cycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAy KSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9CisK ICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0 KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEwNCwxMCBAQCAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7 CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFt aW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRh cF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFw cG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAg LTQ5LDQxICsxMjAsMzQgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8Mnwy KSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJ bnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKLVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDYsIDgpIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBP SU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg5LCAxMSkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEyLCAxNCkgcyhpKTsKLVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1LCAx NykgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19 KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJl c3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1p cygkcmVzdWx0LCBxcSgxMnwxMnwxMiksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJz Y3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwg ZGVmYXVsdHMnCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJl YW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7 CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0 aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBv ciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFm dGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKKyMgV2UgbmVlZCB0byBjaGVjayBERUJVRyBs b2dzIHRvIGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzCisjIGFwcGxp ZWQgdGhlIHRyYW5zYWN0aW9uLiBTbywgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKyRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNz YWdlcyA9IGRlYnVnMSIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisjIFJ1biBhIHF1 ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCAxfSk7CisKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEp OworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCmluZGV4IDJmYmQ2NDNlOTgu LjYyNjY3NmEzODMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJl YW1fZGRsLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBs CkBAIC0yLDYgKzIsOSBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMywgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKIAogIyBUZXN0IHN0cmVhbWluZyBvZiBsYXJnZSB0cmFu c2FjdGlvbiB3aXRoIERETCBhbmQgc3VidHJhbnNhY3Rpb25zCisjCisjIFRoaXMgZmlsZSBpcyBt YWlubHkgdG8gdGVzdCB0aGUgRERML0RNTCBpbnRlcmFjdGlvbiBvZiB0aGUgcHVibGlzaGVyIHNp ZGUsCisjIHNvIHdlIGRpZG4ndCBhZGQgYSBwYXJhbGxlbCBhcHBseSB2ZXJzaW9uIGZvciB0aGUg dGVzdHMgaW4gdGhpcyBmaWxlLgogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDE3MGVlMTBjMWQuLmRjZTE0YjE1MGEg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9h Ym9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3Rf YWJvcnQucGwKQEAgLTgsNiArOCwxMjQgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVj ayB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzIGZpbmlzaGVkIGFwcGx5aW5nIHRo ZSBzdHJlYW1pbmcKKyMgdHJhbnNhY3Rpb24uCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJ bXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87 CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jf bG9nKAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhl IFNUUkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBDb21tb24g dGVzdCBzdGVwcyBmb3IgYm90aCB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxs ZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9m ZnNldCA9IDA7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgc3RyZWFtZWQgdHJh bnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSk7CisJU0FWRVBPSU5UIHMyOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNSwgbWQ1KDU6OnRleHQpKTsKKwlTQVZFUE9JTlQg czM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg2LCBtZDUoNjo6dGV4dCkpOworCVJP TExCQUNLIFRPIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNywgbWQ1KDc6OnRl eHQpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDgs IG1kNSg4Ojp0ZXh0KSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoOSwgbWQ1KDk6OnRleHQpKTsKKwlTQVZFUE9JTlQgczU7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgxMCwgbWQ1KDEwOjp0ZXh0KSk7CisJQ09NTUlUOworCX0pOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQn KTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSg2fDApLAorCQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyBy ZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRl ZmF1bHRzJworCSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgc3RyZWFtZWQg dHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKKwkjIHN1 YnRyYW5zYWN0aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTEs IG1kNSgxMTo6dGV4dCkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDEyLCBtZDUoMTI6OnRleHQpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8g dGVzdF90YWIgVkFMVUVTICgxMywgbWQ1KDEzOjp0ZXh0KSk7CisJU0FWRVBPSU5UIHMzOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTQsIG1kNSgxNDo6dGV4dCkpOworCVJFTEVBU0Ug czI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxNSwgbWQ1KDE1Ojp0ZXh0KSk7CisJ Uk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJz Y3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1bHQgPQor CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg3fDApLAor CQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJl cicpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIHN0cmVhbWVkIHRyYW5zYWN0 aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBWQUxVRVMgKDE2LCBtZDUoMTY6OnRleHQpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICgxNywgbWQ1KDE3Ojp0ZXh0KSk7CisJU0FWRVBPSU5UIHMy OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTgsIG1kNSgxODo6dGV4dCkpOworCVJP TExCQUNLOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwsICdBQk9SVCcpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDd8MCksICdjaGVjayByb2xsYmFjayB3YXMg cmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVi bGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRu b2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0z Niw2ICsxNTQsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAki Q1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRh cHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JF QVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBh cHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVh bWluZyA9IG9uKSIKICk7CkBAIC00OCw4MSArMTcwLDMzIEBAIG15ICRyZXN1bHQgPQogCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8 MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMg c3RyZWFtZWQgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBWQUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczI7 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDUsIG1kNSg1Ojp0ZXh0KSk7Ci1TQVZFUE9J TlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDYsIG1kNSg2Ojp0ZXh0KSk7Ci1S T0xMQkFDSyBUTyBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNywgbWQ1KDc6OnRl eHQpKTsKLVJPTExCQUNLIFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg4LCBt ZDUoODo6dGV4dCkpOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICg5LCBtZDUoOTo6dGV4dCkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICgxMCwgbWQ1KDEwOjp0ZXh0KSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDZ8MCksCi0JJ2NoZWNrIHJvbGxi YWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJh bGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotIyBzdHJlYW1lZCB0cmFuc2FjdGlv biB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlciBzdWJ0cmFuc2FjdGlvbgot IyBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTEsIG1kNSgxMTo6dGV4dCkp OwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxMiwgbWQ1KDEy Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDEz LCBtZDUoMTM6OnRleHQpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoMTQsIG1kNSgxNDo6dGV4dCkpOwotUkVMRUFTRSBzMjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoMTUsIG1kNSgxNTo6dGV4dCkpOwotUk9MTEJBQ0sgVE8gczE7Ci1DT01NSVQ7 Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot JHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDd8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1 YnNjcmliZXInKTsKLQotIyBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVj ZWl2aW5nIHJvbGxiYWNrCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE2LCBtZDUoMTY6OnRl eHQpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTcsIG1k NSgxNzo6dGV4dCkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICgxOCwgbWQ1KDE4Ojp0ZXh0KSk7Ci1ST0xMQkFDSzsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykg RlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoN3wwKSwgJ2NoZWNrIHJvbGxiYWNrIHdh cyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcg PSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5 IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKworIyBXZSBuZWVkIHRv IGNoZWNrIERFQlVHIGxvZ3MgdG8gZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBoYXMKKyMgYXBwbGllZCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBidW1wIHVwIHRoZSBsb2cgdmVy Ym9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics ICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7 CisKKyMgUnVuIGEgcXVlcnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4g ZWZmZWN0LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNU IDF9KTsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNo ZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFt X3N1YnhhY3RfZGRsX2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVh bV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAppbmRleCA5NjJlMzQ3Mjg4Li5iMzAyMjNkZTUxIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fi b3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9k ZGxfYWJvcnQucGwKQEAgLTMsNiArMyw5IEBACiAKICMgVGVzdCBzdHJlYW1pbmcgb2YgdHJhbnNh Y3Rpb24gd2l0aCBzdWJ0cmFuc2FjdGlvbnMsIERETHMsIERNTHMsIGFuZAogIyByb2xsYmFja3MK KyMKKyMgVGhpcyBmaWxlIGlzIG1haW5seSB0byB0ZXN0IHRoZSBEREwvRE1MIGludGVyYWN0aW9u IG9mIHRoZSBwdWJsaXNoZXIgc2lkZSwKKyMgc28gd2UgZGlkbid0IGFkZCBhIHBhcmFsbGVsIGFw cGx5IHZlcnNpb24gZm9yIHRoZSB0ZXN0cyBpbiB0aGlzIGZpbGUuCiB1c2Ugc3RyaWN0OwogdXNl IHdhcm5pbmdzOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDhlM2U3NGIxMzQu LmU2MjRlYmU1NWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29w aGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFz ZV9jYXNjYWRlLnBsCkBAIC01LDYgKzUsOCBAQAogIwogIyBJbmNsdWRlcyB0ZXN0cyBmb3Igb3B0 aW9ucyAyUEMgKG5vdC1zdHJlYW1pbmcpIGFuZCBhbHNvIGZvciAyUEMgKHN0cmVhbWluZykuCiAj CisjIFR3by1waGFzZSBhbmQgcGFyYWxsZWwgYXBwbHkgd2lsbCBiZSB0ZXN0ZWQgaW4gMDIzX3R3 b3BoYXNlX3N0cmVhbSwgc28gd2UKKyMgZGlkbid0IGFkZCBhIHBhcmFsbGVsIGFwcGx5IHZlcnNp b24gZm9yIHRoZSB0ZXN0cyBpbiB0aGlzIGZpbGUuCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdz OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAppbmRleCA3Y2Q4MDE3NGExLi4xZjVjNTYzNzNh IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFt LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwK QEAgLTgsNiArOCwyODcgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGF0IHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzIGZpbmlzaGVkIGFwcGx5aW5nIHRoZSBzdHJlYW1p bmcKKyMgdHJhbnNhY3Rpb24uCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAo JGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJ cXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAk dHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBDb21tb24gdGVzdCBzdGVw cyBmb3IgYm90aCB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMu CitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7 CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJF IC8gQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFu c2FjdGlvbi4KKwkjIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBh bGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0 LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl cgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUpIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7 Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDR8NHw0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0 dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7 CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJF IC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiBy b3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0 cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4 cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJ IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBk YXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJ JG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0 LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7CisJ CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FD VElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rp b24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyfDJ8 MiksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25s eSB0aGUgb3JpZ2luYWwgMiByb3dzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0 ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24g Y3Jhc2ggcmVzdGFydC4KKwkjIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dz LgorCSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQuCisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRp bmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyBy ZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMgTm90ZTog Ym90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KKwkjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsK KwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygzLCA1KSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikg V0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKwor CSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCSRub2RlX3B1Ymxpc2hlci0+ c3RvcCgnaW1tZWRpYXRlJyk7CisKKwkkbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCSRub2RlX3N1 YnNjcmliZXItPnN0YXJ0OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIs ICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY29tbWl0IHBvc3QgdGhl IHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09N TUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJs ZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKKwlpcygkcmVzdWx0LCBxcSg0fDR8NCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZl IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBE byBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4K KwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMg My4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJF LgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCB0aGUg MlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVy CisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJv d3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IHNvbWUgcm93cy4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVk X3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3 ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0 cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0 IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdm b29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vi c2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBzdGls bCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0aGUg b3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5z YWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUg Q09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3 aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1l ZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMg YWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgorCSMK KwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVy CisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiBy b3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBzb21lIHJvd3MuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJl ZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4g cHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cg d2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMg dHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2Vy dCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAn Zm9vYmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24g c3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg1fDV8NSksCisJCSdSb3dzIGluc2VydGVkIGJ5 IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2Ny aWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJ JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVh bnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpA QCAtNDgsNiArMzI5LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBt eSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3Jlcycs ICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKQEAgLTY0LDIzNiArMzQ5LDM4IEBAIG15 ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdw b3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2Fp dGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwg cXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicp OwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUg LyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNh Y3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxsIGRh dGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUg cm93cy4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVH SU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShi KSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEs MykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3Ry YW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rp b24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVf cHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSMgY2hlY2sgdGhh dCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg0 fDR8NCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2Rl ICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAk b2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJs ZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNj cmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFj ayBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhl IG9yaWdpbmFsIDIgcm93cy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBG aXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0 ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIHNvbWUgcm93cy4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFi Jzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmli ZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAyUEMg dHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8 MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9u bHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9u IHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDaGVj ayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCBy ZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KLSMgMi4g VGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQuCi0jIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hl ciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7 fSk7Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlz aGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKLQotJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2Rl X3N1YnNjcmliZXItPnN0YXJ0OwogCi0jIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3Rf cHJlcGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg0fDR8 NCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIs IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBi dXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sg dG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEg aXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUg d2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQ QVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAz IHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSku Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUg ZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMywgNSkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUg bW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK LQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFu c2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlv biBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJl Y29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6 IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0 aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5 OTk5OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQg J3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24g c3Vic2NyaWJlciwKLSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0 aWxsIHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRz aWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24g aXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBS RVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSBy ZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBD LgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBS RVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMg ZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCAr IGluc2VydGVkIDEgPSAzMzM1KS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQot IyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxp Y2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQg ZGVsZXRlIHNvbWUgcm93cy4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK LQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNj cmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CiAKLSMgSW5zZXJ0IGEgZGlmZmVy ZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0j IE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ug c3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50 aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0jIDJQ QyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Cisj IFdlIG5lZWQgdG8gY2hlY2sgREVCVUcgbG9ncyB0byBlbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGhhcworIyBhcHBsaWVkIHRoZSB0cmFuc2FjdGlvbi4gU28sIGJ1bXAgdXAg dGhlIGxvZyB2ZXJib3NpdHkuCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmli ZXItPnJlbG9hZDsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKyMgUnVuIGEgcXVlcnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4g ZWZmZWN0LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNU IDF9KTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDV8NXw1KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdl bGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBl eHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CmluZGV4IDUwZDg2Y2IwMWIuLjIzYmFmZWM1ZjcgMTAwNjQ0Ci0tLSBhL3NyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CkBAIC0xNDczLDYgKzE0NzMsNyBAQCBMb2dpY2FsUmVwUmVsSWQKIExvZ2ljYWxS ZXBSZWxNYXBFbnRyeQogTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQcmVw YXJlZFR4bkRhdGEKK0xvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKIExvZ2ljYWxSZXBUdXBsZURh dGEKIExvZ2ljYWxSZXBUeXAKIExvZ2ljYWxSZXBXb3JrZXIKQEAgLTE4NzYsNiArMTg3Nyw5IEBA IFBhZ2VYTG9nUmVjUHRyCiBQYWdldGFibGVFbnRyeQogUGFpcnMKIFBhcmFsbGVsQXBwZW5kU3Rh dGUKK1BhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQorUGFyYWxsZWxBcHBseVdvcmtlckluZm8KK1Bh cmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQKIFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlCiBQYXJhbGxl bEJsb2NrVGFibGVTY2FuRGVzYwogUGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlcgpAQCAtMTg5 NSw2ICsxODk5LDcgQEAgUGFyYWxsZWxTbG90UmVzdWx0SGFuZGxlcgogUGFyYWxsZWxTdGF0ZQog UGFyYWxsZWxUYWJsZVNjYW5EZXNjCiBQYXJhbGxlbFRhYmxlU2NhbkRlc2NEYXRhCitQYXJhbGxl bFRyYW5zU3RhdGUKIFBhcmFsbGVsVmFjdXVtU3RhdGUKIFBhcmFsbGVsV29ya2VyQ29udGV4dAog UGFyYWxsZWxXb3JrZXJJbmZvCkBAIC0xOTI0LDYgKzE5MjksNyBAQCBQYXJzZXJTdGF0ZQogUGFy dENsYXVzZUluZm8KIFBhcnRDbGF1c2VNYXRjaFN0YXR1cwogUGFydENsYXVzZVRhcmdldAorUGFy dGlhbEZpbGVTZXRTdGF0ZQogUGFydGl0aW9uQm91bmRJbmZvCiBQYXJ0aXRpb25Cb3VuZEluZm9E YXRhCiBQYXJ0aXRpb25Cb3VuZFNwZWMKQEAgLTI3NzQsNiArMjc4MCw3IEBAIFRvY0VudHJ5CiBU b2tlbkF1eERhdGEKIFRva2VuaXplZEF1dGhMaW5lCiBUcmFja0l0ZW0KK1RyYW5zQXBwbHlBY3Rp b24KIFRyYW5zSW52YWxpZGF0aW9uSW5mbwogVHJhbnNTdGF0ZQogVHJhbnNhY3Rpb25JZAotLSAK Mi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB6275D4B22266412FEEBDB3AE9EF49OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v72-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v72-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v72-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=12715; creation-date="Tue, 03 Jan 2023 05:37:31 GMT"; modification-date="Tue, 03 Jan 2023 05:40:20 GMT" Content-Transfer-Encoding: base64 RnJvbSA5YjBkNjAzMzg4Zjk4M2MwZmRkODk0YzUyOTc3YjlhMDg3OTBlMzdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IEthcGlsYSA8YWthcGlsYUBwb3N0Z3Jlc3FsLm9yZz4K RGF0ZTogTW9uLCAyIEphbiAyMDIzIDE1OjM3OjI1ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2NzIg Mi81XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJpYWxp emluZyBtZXNzYWdlcyB0byBkaXNrLgoKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAg ICAgICAgICAgICAgICAgICAgfCAgMzIgKysrKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jIHwgIDEyICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jICAgICAgfCAgIDkgKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jICAgICAgICAgICB8ICAxNCArKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmggICAgIHwgICA0ICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJl YW0ucGwgICAgICAgICB8IDE0NCArKysrKysrKysrKysrKysrKy0KIDYgZmlsZXMgY2hhbmdlZCwg MjEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGEzM2E5MzU3 MGIuLjY2OWJhYmY3ZWIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTExNjUwLDYgKzExNjUwLDM4IEBAIExPRzog IENsZWFuVXBMb2NrOiBkZWxldGluZzogbG9jaygweGI3YWNkODQ0KSBpZCgyNDY4OCwyNDY5Niww LDAsMCwxKQogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAg PHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXN0cmVhbS1zZXJpYWxpemUtdGhyZXNob2xkIiB4cmVmbGFi ZWw9InN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPnN0 cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4p CisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPnN0cmVhbV9zZXJp YWxpemVfdGhyZXNob2xkPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFy eT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgor ICAgICAgIDxwYXJhPgorICAgICAgICBGb3JjZXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdG8g c2VyaWFsaXplIG1lc3NhZ2VzIHRvIGZpbGVzIGFmdGVyCisgICAgICAgIHNlbmRpbmcgc3BlY2lm aWVkIGFtb3VudCBvZiBzdHJlYW1pbmcgY2h1bmtzIHRvIHRoZSBwYXJhbGxlbCBhcHBseQorICAg ICAgICB3b3JrZXIuIFNldHRpbmcgdGhpcyB0byB6ZXJvIHNlcmlhbGl6ZSBhbGwgbWVzc2FnZXMu IEEgdmFsdWUgb2YKKyAgICAgICAgPGxpdGVyYWw+LTE8L2xpdGVyYWw+ICh0aGUgZGVmYXVsdCkg ZGlzYWJsZXMgdGhpcyBmZWF0dXJlLiBUaGlzIGlzCisgICAgICAgIGludGVuZGVkIHRvIHRlc3Qg c2VyaWFsaXphdGlvbiB0byBmaWxlcyB3aXRoCisgICAgICAgIDxsaXRlcmFsPnN0cmVhbWluZyA9 IHBhcmFsbGVsPC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAg ICAgICAgV2hlbiBsb2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNjcmlwdGlvbiA8bGl0ZXJhbD5zdHJl YW1pbmc8L2xpdGVyYWw+CisgICAgICAgIHBhcmFtZXRlciBpcyBzZXQgdG8gPGxpdGVyYWw+cGFy YWxsZWw8L2xpdGVyYWw+LCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgorICAgICAgICBzZW5kcyBt ZXNzYWdlcyB0byBwYXJhbGxlbCB3b3JrZXJzIHdpdGggYSB0aW1lb3V0LiBCeSBkZWZhdWx0LCB0 aGUKKyAgICAgICAgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsIHNlcmlhbGl6ZSB0aGUgcmVtYWlu aW5nIG1lc3NhZ2VzIHRvIGZpbGVzIGlmCisgICAgICAgIHRoZSB0aW1lb3V0IGlzIGV4Y2VlZGVk LiBJZiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gYW55IHZhbHVlIG90aGVyIHRoYW4KKyAgICAgICAg PGxpdGVyYWw+LTE8L2xpdGVyYWw+LCBzZXJpYWxpemUgdG8gZmlsZXMgZXZlbiB3aXRob3V0IHRp bWVvdXQuCisgICAgICAgPC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgcGFy YW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwv ZmlsZW5hbWU+CisgICAgICAgIGZpbGUgb3Igb24gdGhlIHNlcnZlciBjb21tYW5kIGxpbmUuCisg ICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisK ICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9zZWN0MT4KICAgPHNlY3QxIGlkPSJydW50aW1lLWNv bmZpZy1zaG9ydCI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IGIwZjNiZmQxZDMuLmE5MjczZTAwMmQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCkBAIC0yNTQsNiArMjU0LDkgQEAgc3RhdGljIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICpzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKIC8qIEEgbGlzdCB0byBtYWludGFpbiBzdWJ0 cmFuc2FjdGlvbnMsIGlmIGFueS4gKi8KIHN0YXRpYyBMaXN0ICpzdWJ4YWN0bGlzdCA9IE5JTDsK IAorLyogR1VDIHZhcmlhYmxlICovCitpbnQJCQlzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCA9 IC0xOworCiBzdGF0aWMgdm9pZCBwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbyk7CiBzdGF0aWMgUGFyYWxsZWxUcmFuc1N0YXRlIHBhX2dldF94YWN0X3N0 YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOwogc3RhdGljIFBhcnRpYWxG aWxlU2V0U3RhdGUgcGFfZ2V0X2ZpbGVzZXRfc3RhdGUodm9pZCk7CkBAIC0xMTQzLDYgKzExNDYs MTUgQEAgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBu Ynl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCiAJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSk7 CiAJQXNzZXJ0KCF3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMpOwogCisJLyogRm9yY2UgdG8gc2Vy aWFsaXplIG1lc3NhZ2VzIGlmIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGlzIHJlYWNoZWQu ICovCisJaWYgKHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkICE9IC0xICYmCisJCShzdHJlYW1f c2VyaWFsaXplX3RocmVzaG9sZCA9PSAwIHx8CisJCSBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9s ZCA8IHBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzKSkKKwl7CisJCXBhcmFsbGVsX3N0cmVhbV9uY2h1 bmtzID0gMDsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogLyoKICAqIFRoaXMgdGltZW91dCBpcyBh IGJpdCBhcmJpdHJhcnkgYnV0IHRlc3RpbmcgcmV2ZWFsZWQgdGhhdCBpdCBpcyBzdWZmaWNpZW50 CiAgKiB0byBzZW5kIHRoZSBtZXNzYWdlIHVubGVzcyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGlzIHdhaXRpbmcgb24gc29tZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMKaW5kZXggMzc1NzJkYjM5Yi4uZTFjNjE2YmIyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zMjUsNiArMzI1LDEyIEBAIHN0YXRpYyBUcmFuc2FjdGlv bklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKICAqLwogc3RhdGljIHVpbnQz MiBwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgPSAwOwogCisvKgorICogVGhlIG51bWJlciBvZiBz dHJlYW1pbmcgY2h1bmtzIHNlbnQgYnkgbGVhZGVyIGFwcGx5IHdvcmtlciBkdXJpbmcgb25lCisg KiBzdHJlYW1lZCB0cmFuc2FjdGlvbi4gVGhpcyBpcyBvbmx5IHVzZWQgd2hlbiBzdHJlYW1fc2Vy aWFsaXplX3RocmVzaG9sZCA+IDAuCisgKi8KK3VpbnQzMgkJcGFyYWxsZWxfc3RyZWFtX25jaHVu a3MgPSAwOworCiAvKgogICogV2UgZW5hYmxlIHNraXBwaW5nIGFsbCBkYXRhIG1vZGlmaWNhdGlv biBjaGFuZ2VzIChJTlNFUlQsIFVQREFURSwgZXRjLikgZm9yCiAgKiB0aGUgc3Vic2NyaXB0aW9u IGlmIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24ncyBmaW5pc2ggTFNOIG1hdGNoZXMgdGhlIHN1YnNr aXBsc24uCkBAIC0xNTE5LDYgKzE1MjUsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0 cmluZ0luZm8gcykKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFz c2VydCh3aW5mbyk7CiAKKwkJCWlmIChzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCA+IDApCisJ CQkJcGFyYWxsZWxfc3RyZWFtX25jaHVua3MrKzsKKwogCQkJLyoKIAkJCSAqIE9uY2Ugd2Ugc3Rh cnQgc2VyaWFsaXppbmcgdGhlIGNoYW5nZXMsIHRoZSBwYXJhbGxlbCBhcHBseQogCQkJICogd29y a2VyIHdpbGwgd2FpdCBmb3IgdGhlIGxlYWRlciB0byByZWxlYXNlIHRoZSBzdHJlYW0gbG9jawpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA5MjU0NWI0OTU4Li4zMDJjZWI3OTBi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtNjEsNiArNjEsNyBAQAogI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgiCisjaW5jbHVkZSAi cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3Iu aCIKICNpbmNsdWRlICJzdG9yYWdlL2xhcmdlX29iamVjdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv cGdfc2htZW0uaCIKQEAgLTMwMTQsNiArMzAxNSwxOSBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25m aWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsic3Ry ZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQiLCBQR0NfU0lHSFVQLCBERVZFTE9QRVJfT1BUSU9OUywK KwkJCWdldHRleHRfbm9vcCgiRm9yY2VzIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvIHNlcmlh bGl6ZSBtZXNzYWdlcyAiCisJCQkJCQkgInRvIGZpbGVzIGFmdGVyIHNlbmRpbmcgc3BlY2lmaWVk IGFtb3VudCBvZiBzdHJlYW1pbmcgIgorCQkJCQkJICJjaHVua3MgaW4gc3RyZWFtaW5nIHBhcmFs bGVsIG1vZGUuIiksCisJCQlnZXR0ZXh0X25vb3AoIkEgdmFsdWUgb2YgLTEgZGlzYWJsZXMgdGhp cyBmZWF0dXJlLiIpLAorCQkJR1VDX05PVF9JTl9TQU1QTEUKKwkJfSwKKwkJJnN0cmVhbV9zZXJp YWxpemVfdGhyZXNob2xkLAorCQktMSwgLTEsIElOVF9NQVgsCisJCU5VTEwsIE5VTEwsIE5VTEwK Kwl9LAorCiAJewogCQl7ImxvZ19yb3RhdGlvbl9hZ2UiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dI RVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJl Zm9yZSBmb3JjaW5nICIKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgK aW5kZXggZGI4OTFlZWE4YS4uYTY4Mjc5MTQ5MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKQEAgLTIyNSw2ICsyMjUsMTAgQEAgZXh0ZXJuIFBHRExMSU1QT1JU IExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlcjsKIAogZXh0ZXJuIFBHRExMSU1Q T1JUIGJvb2wgaW5fcmVtb3RlX3RyYW5zYWN0aW9uOwogCitleHRlcm4gUEdETExJTVBPUlQgaW50 IHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkOworCitleHRlcm4gUEdETExJTVBPUlQgdWludDMy IHBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzOworCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtl cl9hdHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxSZXBXb3JrZXIgKmxvZ2ljYWxyZXBf d29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCQlib29sIG9ubHlf cnVubmluZyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFt LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCA5MWU4YWE4 YzBhLi44M2Q2OTU2ZWU2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVf c3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAg LTEzMywxMyArMTMzLDIwIEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogIyBDcmVhdGUgcHVibGlzaGVy IG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9 PiAnbG9naWNhbCcpOwotJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKLQknbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0InKTsKKyRub2RlX3B1Ymxp c2hlci0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29uZicsIHFxKAorbWF4X3ByZXBhcmVk X3RyYW5zYWN0aW9ucyA9IDEwCitsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtID0gNjRrQgorKSk7 CiAkbm9kZV9wdWJsaXNoZXItPnN0YXJ0OwogCiAjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKIG15 ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNj cmliZXInKTsKICRub2RlX3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9n aWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVzcWwuY29u ZicsIHFxKAorbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEwCispKTsKICRub2RlX3N1YnNj cmliZXItPnN0YXJ0OwogCiAjIENyZWF0ZSBzb21lIHByZWV4aXN0aW5nIGNvbnRlbnQgb24gcHVi bGlzaGVyCkBAIC0xNzAsNyArMTc3LDcgQEAgbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CiAjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxp Y2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5n ID0gb24pIgorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxp c2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9w dWIgV0lUSCAoc3RyZWFtaW5nID0gb24sIHR3b19waGFzZSA9IG9uKSIKICk7CiAKICMgV2FpdCBm b3IgaW5pdGlhbCB0YWJsZSBzeW5jIHRvIGZpbmlzaApAQCAtMzEyLDYgKzMxOSwxMzcgQEAgJHJl c3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOwogaXMoJHJlc3VsdCwgcXEoMTAwMDApLCAnZGF0 YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKIAorIyBD bGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWJfMiIpOworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBUZXN0IHNlcmlh bGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2sKKworIyBTZXQgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hv bGQgdG8gemVybywgc28gdGhlIG1lc3NhZ2VzIHdpbGwgYmUgc2VyaWFsaXplZCB0byBkaXNrLgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJJ0FMVEVSIFNZU1RFTSBT RVQgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPSAwOycpOworJG5vZGVfc3Vic2NyaWJlci0+ cmVsb2FkOworCisjIFJ1biBhIHF1ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFz IHRha2VuIGVmZmVjdC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx e1NFTEVDVCAxfSk7CisKKyMgU2VyaWFsaXplIHRoZSBDT01NSVQgdHJhbnNhY3Rpb24uCisjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMDApIHMoaSkiKTsKKworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2FnZXMgYXJlIHNl cmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICgg W0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJlYW1lZCBjaGFu Z2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJz Y3JpYmVyCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSg1 MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYnkgc2VyaWFsaXppbmcgbWVz c2FnZXMgdG8gZGlzaycpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9u bWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBU QUJMRSB0ZXN0X3RhYl8yIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworCisjIFNlcmlhbGl6ZSB0aGUgUFJFUEFSRSB0cmFuc2FjdGlvbi4KKyMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3hhY3Qn OworCX0pOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXplZC4KKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8g b3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAorCSRvZmZz ZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisj IENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKK2lzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisjIENoZWNr IHRoYXQgMlBDIGdldHMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ3hhY3QnOyIpOworCiskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9N IHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CisKKyMgQ2xl YW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiXzIiKTsKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgU2VyaWFsaXplIHRo ZSBBQk9SVCB0b3AtdHJhbnNhY3Rpb24uCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2FnZXMgYXJl IHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6 ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJlYW1lZCBj aGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vi c2NyaWJlcgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJlc3VsdCwgcXEo MCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3Nh Z2VzIHRvIGRpc2snKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1l bnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFC TEUgdGVzdF90YWJfMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworIyBTZXJpYWxpemUgdGhlIEFCT1JUIHN1Yi10cmFuc2FjdGlvbi4KKyMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworCVNBVkVQT0lOVCBzcDsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBz KGkpOworCVJPTExCQUNLIFRPIHNwOworCUNPTU1JVDsKKwl9KTsKKworIyBFbnN1cmUgdGhhdCB0 aGUgbWVzc2FnZXMgYXJlIHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMi IGZvciBzdHJlYW1lZCBjaGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IG9ubHkgc3ViLXRyYW5z YWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlci4KKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CisKICRub2RlX3N1YnNj cmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKLS0gCjIuMjMuMC53aW5kb3dz LjEKCg== --_006_OS3PR01MB6275D4B22266412FEEBDB3AE9EF49OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v72-0003-Stop-extra-worker-if-GUC-was-changed.patch" Content-Description: v72-0003-Stop-extra-worker-if-GUC-was-changed.patch Content-Disposition: attachment; filename="v72-0003-Stop-extra-worker-if-GUC-was-changed.patch"; size=4230; creation-date="Tue, 03 Jan 2023 05:37:32 GMT"; modification-date="Tue, 03 Jan 2023 05:40:20 GMT" Content-Transfer-Encoding: base64 RnJvbSAyNWI1YzJkNzdlOGFiOTNiOTAwMzU1YjEzM2UyNDVjOTNmOTMzODBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGVybG9ja2NwcCA8c2hlcmxvY2tjcHBAZm94bWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgRGVjIDIwMjIgMjA6NDM6MjEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY3 MiAzLzVdIFN0b3AgZXh0cmEgd29ya2VyIGlmIEdVQyB3YXMgY2hhbmdlZAoKSWYgdGhlIG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gaXMgY2hhbmdlZCB0byBhCmxv d2VyIHZhbHVlLCB0cnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgdG8ga2VlcCB0 aGUgbnVtYmVyIG9mCndvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uCi0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgNjAgKysrKysrKysrKysrKysrLS0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDcgKysrCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgMSArCiAzIGZpbGVzIGNo YW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXgg YTkyNzNlMDAyZC4uNTIxMDFjZmM3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTU0Miw2ICs1NDIsMjUgQEAg cGFfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8q CisgKiBTdG9wIHRoZSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIGZyZWUgdGhlIGNv cnJlc3BvbmRpbmcgaW5mby4KKyAqLworc3RhdGljIHZvaWQKK3BhX3N0b3Bfd29ya2VyKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlpbnQJCQlzbG90X25vOworCXVpbnQxNgkJ Z2VuZXJhdGlvbjsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwor CWdlbmVyYXRpb24gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9u OworCXNsb3Rfbm8gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOwor CVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJbG9naWNhbHJlcF9w YV93b3JrZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCXBhX2ZyZWVfd29ya2VyX2lu Zm8od2luZm8pOworfQorCiAvKgogICogTWFrZXMgdGhlIHdvcmtlciBhdmFpbGFibGUgZm9yIHJl dXNlLgogICoKQEAgLTU3NywyMyArNTk2LDQyIEBAIHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbykKIAkJbGlzdF9sZW5ndGgoUGFyYWxsZWxBcHBseVdvcmtlclBv b2wpID4KIAkJKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAy KSkKIAl7Ci0JCWludAkJCXNsb3Rfbm87Ci0JCXVpbnQxNgkJZ2VuZXJhdGlvbjsKLQotCQlTcGlu TG9ja0FjcXVpcmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKLQkJZ2VuZXJhdGlvbiA9IHdpbmZv LT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247Ci0JCXNsb3Rfbm8gPSB3aW5m by0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOwotCQlTcGluTG9ja1JlbGVhc2Uo JndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKwkJcGFfc3RvcF93b3JrZXIod2luZm8pOworCQlyZXR1 cm47CisJfQogCi0JCWxvZ2ljYWxyZXBfcGFfd29ya2VyX3N0b3Aoc2xvdF9ubywgZ2VuZXJhdGlv bik7CisJd2luZm8tPmluX3VzZSA9IGZhbHNlOworCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9 IGZhbHNlOworfQogCi0JCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworLyoKKyAqIFRyeSB0 byBzdG9wIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgdGhhdCBhcmUgbm90IGluIHVzZSB0byBrZWVw IHRoZSBudW1iZXIgb2YKKyAqIHdvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLgorICovCit2b2lkCitwYV9zdG9w X2lkbGVfd29ya2Vycyh2b2lkKQoreworCUxpc3QJICAgKmFjdGl2ZV93b3JrZXJzOworCUxpc3RD ZWxsICAgKmxjOworCWludAkJCW1heF9hcHBseXdvcmtlcnMgPSBtYXhfcGFyYWxsZWxfYXBwbHlf d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMjsKIAorCWlmIChsaXN0X2xlbmd0aChQYXJhbGxl bEFwcGx5V29ya2VyUG9vbCkgPD0gbWF4X2FwcGx5d29ya2VycykKIAkJcmV0dXJuOworCisJYWN0 aXZlX3dvcmtlcnMgPSBsaXN0X2NvcHkoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpOworCisJZm9y ZWFjaChsYywgYWN0aXZlX3dvcmtlcnMpCisJeworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQlwYV9z dG9wX3dvcmtlcih3aW5mbyk7CisKKwkJLyogUmVjaGVjayB0aGUgbnVtYmVyIG9mIHdvcmtlcnMu ICovCisJCWlmIChsaXN0X2xlbmd0aChQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkgPD0gbWF4X2Fw cGx5d29ya2VycykKKwkJCWJyZWFrOwogCX0KIAotCXdpbmZvLT5pbl91c2UgPSBmYWxzZTsKLQl3 aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSBmYWxzZTsKKwlsaXN0X2ZyZWUoYWN0aXZlX3dvcmtl cnMpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5k ZXggZTFjNjE2YmIyZS4uYWI3NzMzMzA1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCkBAIC0zNjM2LDYgKzM2MzYsMTMgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChY TG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAJCXsKIAkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBm YWxzZTsKIAkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCisJCQkvKgorCQkJICog VHJ5IHRvIHN0b3AgZnJlZSB3b3JrZXJzIGluIHRoZSBwb29sIGluIGNhc2UgdGhlCisJCQkgKiBt YXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIGlzIGNoYW5nZWQgdG8g YQorCQkJICogbG93ZXIgdmFsdWUuCisJCQkgKi8KKwkJCXBhX3N0b3BfaWRsZV93b3JrZXJzKCk7 CiAJCX0KIAogCQlpZiAocmMgJiBXTF9USU1FT1VUKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaAppbmRleCBhNjgyNzkxNDkwLi5mM2IyZjJkZTMxIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjc4LDYgKzI3OCw3IEBAIGV4 dGVybiB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1l KTsKIC8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICovCiBl eHRlcm4gdm9pZCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJu IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhp ZCk7CitleHRlcm4gdm9pZCBwYV9zdG9wX2lkbGVfd29ya2Vycyh2b2lkKTsKIGV4dGVybiB2b2lk IHBhX2RldGFjaF9hbGxfZXJyb3JfbXEodm9pZCk7CiAKIGV4dGVybiBib29sIHBhX3NlbmRfZGF0 YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAotLSAKMi4yMy4w LndpbmRvd3MuMQoK --_006_OS3PR01MB6275D4B22266412FEEBDB3AE9EF49OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v72-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v72-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v72-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=21656; creation-date="Tue, 03 Jan 2023 05:37:34 GMT"; modification-date="Tue, 03 Jan 2023 05:40:21 GMT" Content-Transfer-Encoding: base64 RnJvbSBkYTMxYzViM2MyZjYwOGYyMjA2OGYwYjk1OGNmZjhhYWQyYTA5MDFlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NzIgNC81XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku CgpOb3RlOiBTaW5jZSB3ZSBhZGQgYSBuZXcgZmllbGQgJ3N1YnJldHJ5JyB0byBjYXRhbG9nICdw Z19zdWJzY3JpcHRpb24nIGhhcyBiZWVuCmV4cGFuZGVkLCB3ZSBuZWVkIGJ1bXAgY2F0YWxvZyB2 ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAg ICB8ICAxMCArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAg fCAgMTEgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8 ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgIDEg KwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgIDMwICsr Kwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgMTgyICsr KysrKysrKysrKystLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAg ICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAg ICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgg ICAgIHwgICAyICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAg ICB8ICA2MyArKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDI2MyBpbnNlcnRpb25zKCspLCA1NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGMxZTQwNDgwNTQuLmQ5MTgzMjdlYzIgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCkBAIC03OTQ4LDYgKzc5NDgsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFj ZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+ JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3VicmV0cnk8L3N0cnVjdGZpZWxkPiA8 dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1 ZSBpZiBwcmV2aW91cyBjaGFuZ2UgZmFpbGVkIHRvIGJlIGFwcGxpZWQgd2hpbGUgdGhlcmUgd2Vy ZSBhbnkKKyAgICAgICBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgbmVjZXNzaXRhdGlu ZyBhIHJldHJ5LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxy b3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJjb25uaW5mbzwvc3Ry dWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbAppbmRleCA1NGY0OGJlODdmLi5jYjRmNWM2ZjE5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwKQEAgLTE1MDQsMTIgKzE1MDQsMTEgQEAgQ09OVEVYVDogIHByb2Nlc3Np bmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAi SU5TRVIKIAogICA8cGFyYT4KICAgIFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKLSAgIGZhaWxlZCB0cmFuc2Fj dGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2Fy eSB0bwotICAgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJh bD4gb3IgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiBhbmQKLSAgIGNhdXNlIHRoZSBzYW1lIGNvbmZs aWN0cyBhZ2FpbiBzbyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdp bGwKLSAgIGJlIHdyaXR0ZW4gdG8gdGhlIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmlu aXNoIExTTiwgcGxlYXNlIHJlZmVyIHRvIDxsaW5rCi0gICBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJz Y3JpcHRpb24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4KLSAgIFNLSVA8L2NvbW1h bmQ+PC9saW5rPi4KKyAgIGZhaWxlZCB0cmFuc2FjdGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIElu IHRoYXQgY2FzZSwgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbgorICAgd2lsbCBiZSByZXRyaWVkIGlu IDxsaXRlcmFsPnN0cmVhbWluZyA9IG9uPC9saXRlcmFsPiBtb2RlLiBJZiBpdCBmYWlscworICAg YWdhaW4sIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbCBiZSB3 cml0dGVuIHRvIHRoZQorICAgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNO LCBwbGVhc2UgcmVmZXIgdG8KKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlv biI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBTS0lQPC9jb21tYW5kPjwvbGluaz4u CiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlw dGlvbi5zZ21sCmluZGV4IGYxNzNhMDkwMzcuLjY0ZDU4MDJhZGQgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNTEsNiArMjUxLDExIEBAIENSRUFURSBT VUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9u YW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3Rl IHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyBpbiBhCiAgICAgICAgICAgcGFyYWxsZWwgYXBwbHkg d29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uCiAgICAgICAg ICAgbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9nLgorICAgICAgICAgIFdo ZW4gYXBwbHlpbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucywgaWYgYSBkZWFkbG9jayBpcyBkZXRl Y3RlZCwgdGhlCisgICAgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgZXhpdCB3aXRo IGFuIGVycm9yLiBUaGUKKyAgICAgICAgICA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4gbW9k ZSBpcyBkaXNyZWdhcmRlZCB3aGVuIHJldHJ5aW5nOworICAgICAgICAgIGluc3RlYWQgdGhlIHRy YW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCB1c2luZyA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4KKyAg ICAgICAgICBtb2RlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5k ZXggYTU2YWUzMTFjMy4uMGViNWZmYjNlMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5jCkBAIC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wg bWlzc2luZ19vaykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0tPnN1YnN0cmVhbTsKIAlzdWItPnR3 b3BoYXNlc3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0YXRlOwogCXN1Yi0+ZGlzYWJsZW9u ZXJyID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1Yi0+cmV0cnkgPSBzdWJmb3JtLT5z dWJyZXRyeTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRy KFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA0 NDdjOWI5NzBmLi5hZjA3Njg0YjIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBSRVZPS0UgQUxMIE9OIHBnX3JlcGxpY2F0aW9uX29yaWdp bl9zdGF0dXMgRlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX3N1YnNjcmlwdGlvbiBGUk9N IHB1YmxpYzsKIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJza2lwbHNuLCBzdWJuYW1l LCBzdWJvd25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3ViYmluYXJ5LCBzdWJzdHJl YW0sIHN1YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKLSAgICAgICAgICAgICAgc3Vi c2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAg ICAgICAgICAgICBzdWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1Ymxp Y2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CiAK IENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggYmMxYjE5ODU4Yy4uODM2N2JjNmY0ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjM1LDYgKzYzNSw3IEBA IENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgog CQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMu ZGlzYWJsZW9uZXJyKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAx XSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YmNvbm5pbmZvIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKIAlpZiAo b3B0cy5zbG90X25hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDUyMTAxY2ZjNzAuLjViNjMwYjZjNzQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCkBAIC0zMTIsNiArMzEyLDE3IEBAIHBhX2Nhbl9zdGFydChUcmFuc2FjdGlvbklk IHhpZCkKIAlpZiAoIUFsbFRhYmxlc3luY3NSZWFkeSgpKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkv KgorCSAqIERvbid0IHVzZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNh dXNlIGl0IGlzIHBvc3NpYmxlCisJICogdGhhdCBhIGRlYWRsb2NrIHdhcyBkZXRlY3RlZCB0aGUg bGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFwcGx5IGEKKwkgKiB0cmFuc2FjdGlvbiB1c2luZyBhIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5KQor CXsKKwkJZWxvZyhERUJVRzEsICJwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBub3QgdXNlZCBm b3IgcmV0cmllcyIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJcmV0dXJuIHRydWU7CiB9CiAK QEAgLTE2NjcsMyArMTY3OCwyMiBAQCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8sIFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAogCXBhX2ZyZWVfd29ya2VyKHdp bmZvKTsKIH0KKworLyogQ2hlY2sgaWYgYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJz LiAqLworYm9vbAorcGFfaGF2ZV9hY3RpdmVfd29ya2VyKHZvaWQpCit7CisJTGlzdENlbGwgICAq bGM7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkKKwl7CisJCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp0bXBfd2luZm87CisKKwkJdG1wX3dpbmZvID0gKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHRtcF93aW5mby0+aW5fdXNl KQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggYWI3NzMzMzA1Yy4uMDhlOTgyZGQwYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zOTIsNyArMzky LDcgQEAgc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lk IHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVl c3RSZXBseSk7CiAKLXN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQp Oworc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3Iodm9pZCk7CiAKIHN0YXRp YyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEg KmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwo QXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKQEAgLTQyOSw2ICs0MjksOCBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogc3RhdGljIFRy YW5zQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklk IHhpZCwKIAkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbyk7CiAK K3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSk7CisKIC8qCiAg KiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyLgogICov CkBAIC0xMDQ0LDYgKzEwNDYsOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0KFN0cmluZ0luZm8gcykK IAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBh cmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7 CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJ cmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CkBAIC0xMTUwLDYgKzExNTUsOSBA QCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAlpbl9yZW1vdGVfdHJhbnNh Y3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJz Y3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJl IGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFi bGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTIwNiw2ICsxMjE0LDkgQEAgYXBwbHlf aGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRp b24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAlpbl9yZW1vdGVf dHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNl dF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRo YXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNp bmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTI2Nyw2ICsxMjc4LDkgQEAg YXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVz aF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24sIFhhY3RMYXN0Q29tbWl0 RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSBy ZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJv Y2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4g Ki8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xz bik7CiAKQEAgLTEzOTIsNiArMTQwNiw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShT dHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAl9CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4g Ki8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfc3Rh dChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hy b25pemVkIGluIHBhcmFsbGVsLiAqLwpAQCAtMTk2Miw2ICsxOTc5LDEwIEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJfQogCisJLyogUmVzZXQg dGhlIHJldHJ5IGZsYWcuICovCisJaWYgKHRvcGxldmVsX3hhY3QpCisJCXNldF9zdWJzY3JpcHRp b25fcmV0cnkoZmFsc2UpOworCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9 CiAKQEAgLTIyNDQsNiArMjI2NSw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmlu Z0luZm8gcykKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25p emVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEu ZW5kX2xzbik7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0 aW9uX3JldHJ5KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwg TlVMTCk7CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKQEAgLTQzNDUsMjAg KzQzNjksMjggQEAgc3RhcnRfdGFibGVfc3luYyhYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3Ms IGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1p dCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8g YW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1p dEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVy cm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUg d29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uICovCisJCXBnc3RhdF9y ZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwog CQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRp b25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2Vy IGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uLiBBYm9ydAotCQkJICogdGhlIGN1 cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFu Ci0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24o KTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5v aWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JF X1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2Ny aXB0aW9uX3JldHJ5KHRydWUpOworCisJCXByb2NfZXhpdCgwKTsKIAl9CiAJUEdfRU5EX1RSWSgp OwogCkBAIC00MzgzLDIwICs0NDE1LDI3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2lu X3N0YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJy b3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQor CQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVw b3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUo KTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZh aWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0 aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJICFhbV90YWJsZXN5bmNf d29ya2VyKCkpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlz YWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVw b3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMuIEFib3J0IHRoZQot CQkJICogY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNl bnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFu c2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3Jp cHRpb24tPm9pZCwgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0 aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKIAl9CiAJUEdfRU5E X1RSWSgpOwogfQpAQCAtNDY3MiwzOSArNDcxMSwyMCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpCiB9CiAKIC8qCi0gKiBBZnRlciBlcnJvciByZWNvdmVyeSwgZGlzYWJsZSB0aGUg c3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBhbmQgZXhpdCBjbGVhbmx5Lgor ICogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCiBz dGF0aWMgdm9pZAotRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKK0Rpc2FibGVTdWJz Y3JpcHRpb25PbkVycm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdl LCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCi0JICogc3RhdGUK LQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJlcG9ydCgpOwotCUFib3J0 T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgpOwotCi0JUkVTVU1FX0lO VEVSUlVQVFMoKTsKLQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgZWl0aGVy IHRhYmxlIHN5bmNocm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBnc3RhdF9yZXBvcnRfc3Vic2Ny aXB0aW9uX2Vycm9yKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0JCQkJCQkJCQkgIWFtX3Rh Ymxlc3luY193b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gKi8KIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJzY3JpcHRpb24oTXlTdWJzY3Jp cHRpb24tPm9pZCk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBOb3RpZnkg dGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgZXhpdCAqLworCS8qIE5vdGlm eSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkICovCiAJZXJlcG9ydChMT0csCiAJ CQllcnJtc2coInN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgYmVjYXVzZSBv ZiBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCXByb2NfZXhp dCgwKTsKIH0KIAogLyoKQEAgLTQ5OTcsMyArNTAxNyw3MSBAQCBnZXRfdHJhbnNhY3Rpb25fYXBw bHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndp bmZvKQogCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw7CiAJfQogfQorCisv KgorICogU2V0IHN1YnJldHJ5IG9mIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nLgorICoKKyAqIElm IHJldHJ5IGlzIHRydWUsIHN1YnNjcmliZXIgaXMgYWJvdXQgdG8gZXhpdCB3aXRoIGFuIGVycm9y LiBPdGhlcndpc2UsIGl0CisgKiBtZWFucyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGll ZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGJvb2wgcmV0cnkpCit7CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJ c3RhcnRlZF90eCA9IGZhbHNlOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07 CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFsdWVz W05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisKKwkvKiBGYXN0IHBhdGggLSBpZiBubyBzdGF0ZSBj aGFuZ2UgdGhlbiBub3RoaW5nIHRvIGRvICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRyeSA9 PSByZXRyeSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBmb3IgcGFyYWxsZWwg YXBwbHkgd29ya2VycyAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0 dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBzZXQgcmV0cnkgaWYgbm8gYWN0aXZlIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlpZiAocmV0cnkgJiYgIXBhX2hhdmVfYWN0aXZlX3dvcmtl cigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJLyog TG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRoZSBjYXRhbG9nICovCisJcmVsID0gdGFibGVf b3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAgPSBT ZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0 RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1 cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0Iiwg TXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9ja1NoYXJlZE9iamVjdChTdWJzY3JpcHRpb25S ZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lkLCAwLAorCQkJCQkgQWNjZXNzU2hhcmVMb2Nr KTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICovCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9m KHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1lbXNl dChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBsYWNlcykpOworCisJLyogU2V0IHN1YnJldHJ5 ICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0 RGF0dW0ocmV0cnkpOworCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0g MV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERl c2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRl IHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwg dHVwKTsKKworCS8qIENsZWFudXAuICovCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwl0YWJsZV9j bG9zZShyZWwsIE5vTG9jayk7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBmZTNiNGEwYmQ3Li43MDNhZWIyOTg0IDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMKQEAgLTQ1NjAsOCArNDU2MCw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2 ZSAqZm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwogCiAJLyoKLQkgKiBHZXQgc3Vic2Ny aXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGluIHRoZSBkdW1wIGFz Ci0JICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBi ZSByZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVk ZSBzdWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRoZSBkdW1wIGFzIGFmdGVyIHJlc3Rv cmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUKKwkgKiByZWxldmFudC4K IAkgKi8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CiAJaV9vaWQg PSBQUWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24u aAppbmRleCA4MGIxZmI2MzRjLi5lMGFlMzVhZDZhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgKQEAgLTg4LDYgKzg4LDExIEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYx MDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJ Ym9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVycm9yIHNob3VsZCBj YXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBkaXNhYmxlZCAqLwogCisJ Ym9vbAkJc3VicmV0cnkgQktJX0RFRkFVTFQoZik7CS8qIFRydWUgaWYgcHJldmlvdXMgY2hhbmdl IGZhaWxlZAorCQkJCQkJCQkJCQkgKiB0byBiZSBhcHBsaWVkIHdoaWxlIHRoZXJlIHdlcmUKKwkJ CQkJCQkJCQkJICogYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseQorCQkJCQkJCQkJCQkgKiB3b3Jr ZXJzICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVs ZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIg Ki8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBAIC0xMzEsNiArMTM2 LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkv KiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0 b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJCQkJCQkgKiBvY2N1cnMg Ki8KKwlib29sCQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgcHJldmlvdXMgY2hhbmdlIGZhaWxl ZCB0byBiZQorCQkJCQkJCQkgKiBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2Vy ICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVi bGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNhdGlv biBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNvbW1pdCBz ZXR0aW5nIGZvciB3b3JrZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgKaW5kZXggZjNiMmYyZGUzMS4uNDJjMzNhNDE3OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTMwOCw2ICszMDgsOCBAQCBleHRlcm4gdm9pZCBw YV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKTsKIGV4dGVybiB2b2lkIHBhX3hhY3Rf ZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKIAkJCQkJCSAgIFhMb2dSZWNQ dHIgcmVtb3RlX2xzbik7CiAKK2V4dGVybiBib29sIHBhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lk KTsKKwogI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFw cGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKIAogc3RhdGljIGlubGluZSBib29sCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCA4M2Q2OTU2ZWU2Li40MDU0YTVmMzQ4 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTc0LDggKzc0LDE2IEBA IHN1YiB0ZXN0X3N0cmVhbWluZwogCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJyk7CiAKIAkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCW15 ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSk7CiAJJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 YiBTRVQgKGJpbmFyeSA9IG9uKSIpOworCSRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisJICApCisJICBvciBkaWUKKwkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCiAJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiAJJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CkBAIC00NTAsNiArNDU4LDYxIEBAICRyZXN1bHQgPQog aXMoJHJlc3VsdCwgcXEoNTAwMCksCiAJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5 IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKIAorIyBDbGVhbiB1cCB0ZXN0IGRhdGEg ZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWJfMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRlc3Qg cmUtYXBwbHkgYSBmYWlsZWQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBsZWFkZXIg YXBwbHkKKyMgd29ya2VyIGFuZCBhcHBseSBzdWJzZXF1ZW50IHN0cmVhbWluZyB0cmFuc2FjdGlv biB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkKKyMgd29ya2VyIGFmdGVyIHRoaXMgcmV0cnkgc3Vj Y2VlZHMuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYiBvbiB0ZXN0X3Rh Yl8yKGEpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3Rh Yl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYl8yIHZhbHVlcygxKTsKK0NPTU1JVDt9KTsKKworIyBDaGVjayBpZiB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIG5vdCBzdGFydGVkIGJlY2F1c2UgdGhlIGFib3ZlCisj IHRyYW5zYWN0aW9uIGZhaWxlZCB0byBiZSBhcHBsaWVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzIGFyZSBub3QgdXNlZCBmb3IgcmV0cmllcy8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUg dW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisj IFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhl IGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUw MDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgn KTsKKworIyBBZnRlciBzdWNjZXNzZnVsbHkgcmV0cnlpbmcgdG8gYXBwbHkgYSBmYWlsZWQgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLCBhcHBseQorIyB0aGUgZm9sbG93aW5nIHN0cmVhbWluZyB0cmFu c2FjdGlvbiB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCisjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJ TlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEs IDEwMDAwKSBzKGkpIik7CisKK2NoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAk b2Zmc2V0LCAxLCAnQ09NTUlUJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsK K2lzKCRyZXN1bHQsIHFxKDEwMDAxKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg dXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcicpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5z dG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_006_OS3PR01MB6275D4B22266412FEEBDB3AE9EF49OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v72-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v72-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v72-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=9720; creation-date="Tue, 03 Jan 2023 05:37:35 GMT"; modification-date="Tue, 03 Jan 2023 05:40:22 GMT" Content-Transfer-Encoding: base64 RnJvbSBjMDcwZGIwZTM1YzNhMmE0ZjE1YTBkZDVjZDVhNWJmMjQxYjFjNjM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djcyIDUvNV0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgfCAgMyArLQog ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgIHwgMjYgKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgfCAg MSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgfCAzMiArKysr KysrKysrKystLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAg ICAgICAgfCAgNiArKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAg ICAgfCAgMyArLQogNiBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCBjYjRmNWM2ZjE5 Li42MjU0Mzg4YjA0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE2 OTEsNyArMTY5MSw4IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBs aWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBzdWJzY3JpcHRpb24u ICBBIGRpc2FibGVkIHN1YnNjcmlwdGlvbiBvciBhIGNyYXNoZWQgc3Vic2NyaXB0aW9uIHdpbGwg aGF2ZQogICAgemVybyByb3dzIGluIHRoaXMgdmlldy4gIElmIHRoZSBpbml0aWFsIGRhdGEgc3lu Y2hyb25pemF0aW9uIG9mIGFueQogICAgdGFibGUgaXMgaW4gcHJvZ3Jlc3MsIHRoZXJlIHdpbGwg YmUgYWRkaXRpb25hbCB3b3JrZXJzIGZvciB0aGUgdGFibGVzCi0gICBiZWluZyBzeW5jaHJvbml6 ZWQuCisgICBiZWluZyBzeW5jaHJvbml6ZWQuIE1vcmVvdmVyLCBpZiB0aGUgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIGlzIGFwcGxpZWQgaW4KKyAgIHBhcmFsbGVsLCB0aGVyZSB3aWxsIGJlIGFkZGl0 aW9uYWwgd29ya2Vycy4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmlu ZGV4IGNmMjIwYzNiY2IuLmMyZTdiZGI3N2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzE5Niwx MyArMzE5NiwyNCBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJP TSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPjwvZW50 cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2Yg dGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAg ICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBs eSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNocm9uaXphdGlvbiB3b3JrZXIuCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAg ICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgog ICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0 aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25pemluZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFp biBhcHBseSB3b3JrZXIKKyAgICAgICBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0z MjEyLDcgKzMyMjMsNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQg RlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgog ICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2 ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0gICAgICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAg ICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxsIGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMjEsNyArMzIzMiw4 IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRf YWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNn X3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwv dHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBs YXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQg dGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVs bCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9l bnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMzAsNyArMzI0Miw4IEBAIFNFTEVDVCBwaWQsIHdh aXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2Fp dF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3Ry dWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwv cGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2Ug cmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBs YXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAg ICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTMyMzksNyArMzI1Miw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBp CiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVzdF9lbmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3 cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAg ICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FM IHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyNDksNyArMzI2Myw3IEBAIFNF TEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZp dHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAg ICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdp biBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAgICBzZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8 L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGFmMDc2ODRiMjAu LmFlZjkyNmFmN2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0OSw2 ICs5NDksNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAg ICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAgICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAg IHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBz dC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxh c3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYwppbmRleCBhZmI3YWNkZGFhLi5iMzllMGYxY2ZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBJc0xvZ2ljYWxM YXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElP Tl9BUkdTKQogewotI2RlZmluZSBQR19TVEFUX0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVm aW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FS R0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQR19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJ UmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRp bmZvOwpAQCAtMTA5OCwxMCArMTA5OCw2IEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19G VU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9 IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJLyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwg YXBwbHkgd29ya2VyICovCi0JCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCi0J CQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlkID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1 ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdvcmtlci5zdWJpZCk7CkBAIC0xMTEwLDI2ICsxMTA2 LDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQllbHNl CiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0od29ya2Vy X3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCisKKwkJ aWYgKHdvcmtlci5hcHBseV9sZWFkZXJfcGlkID09IEludmFsaWRQaWQpCiAJCQludWxsc1szXSA9 IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1szXSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xz bik7Ci0JCWlmICh3b3JrZXIubGFzdF9zZW5kX3RpbWUgPT0gMCkKKwkJCXZhbHVlc1szXSA9IElu dDMyR2V0RGF0dW0od29ya2VyLmFwcGx5X2xlYWRlcl9waWQpOworCisJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCiAJCQludWxsc1s0XSA9IHRydWU7CiAJCWVsc2UK LQkJCXZhbHVlc1s0XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1l KTsKLQkJaWYgKHdvcmtlci5sYXN0X3JlY3ZfdGltZSA9PSAwKQorCQkJdmFsdWVzWzRdID0gTFNO R2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKKwkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9 PSAwKQogCQkJbnVsbHNbNV0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNV0gPSBUaW1lc3Rh bXBUekdldERhdHVtKHdvcmtlci5sYXN0X3JlY3ZfdGltZSk7Ci0JCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQorCQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXRE YXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUpOworCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1l ID09IDApCiAJCQludWxsc1s2XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s2XSA9IExTTkdl dERhdHVtKHdvcmtlci5yZXBseV9sc24pOwotCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkK KwkJCXZhbHVlc1s2XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1l KTsKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLnJlcGx5X2xzbikpCiAJCQludWxs c1s3XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s3XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0o d29ya2VyLnJlcGx5X3RpbWUpOworCQkJdmFsdWVzWzddID0gTFNOR2V0RGF0dW0od29ya2VyLnJl cGx5X2xzbik7CisJCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQorCQkJbnVsbHNbOF0gPSB0 cnVlOworCQllbHNlCisJCQl2YWx1ZXNbOF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5y ZXBseV90aW1lKTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwg cnNpbmZvLT5zZXREZXNjLAogCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IDdiZTlhNTAxNDcuLjYzNGM2ZDQ3NTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdApAQCAtNTQyNiw5ICs1NDI2LDkgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vi c2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3Jl dHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBw cm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJn dHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0 eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxv LG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZl ZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5k X2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9p ZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3Rh bXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJv YXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNl aXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3Rf ZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJz Y3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAyNicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJy ZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFtZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xh dGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKaW5kZXggZmI5ZjkzNmQ0My4uN2U2ZWE2MGY5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTIwOTQsNiArMjA5NCw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5w aWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBz dS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAgICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0 LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUs CkBAIC0yMTAxLDcgKzIxMDIsNyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9p ZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3RfZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3Rp bWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlvbiBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9n ZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkgc3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVk X2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBsYXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9l bmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9OICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAg IExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwg cmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3BpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5k X3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRf dGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0 YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAgcy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9y X2NvdW50LAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB6275D4B22266412FEEBDB3AE9EF49OS3PR01MB6275jpnp_--