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 1ojGgB-0004CH-Ri for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Oct 2022 09:08:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ojGg9-0001nh-Mf for pgsql-hackers@arkaria.postgresql.org; Fri, 14 Oct 2022 09:08:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ojGg8-0001nX-UF for pgsql-hackers@lists.postgresql.org; Fri, 14 Oct 2022 09:08:29 +0000 Received: from esa7.fujitsucc.c3s2.iphmx.com ([68.232.159.87]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ojGg4-0003Cs-Df for pgsql-hackers@lists.postgresql.org; Fri, 14 Oct 2022 09:08:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1665738504; x=1697274504; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=SdFoEhJU41b9v6w63SLxbWmiGUtR2sWVmz1kQ8MNeIc=; b=RFmP/DtHVIjxcSJk8G9wq+UA60XWeXPUv+FDiGb0muHZtfT57zTyE7o9 F8GCUyS2AxRbrKKEwfSc/xSTRsQ+qFmYW7WSuIIeDBbfqwf5hqJNjQm68 Fmjz0+bjYQqYhozK65cLieHE5e1gJW6i9s7z3S213slOC1RcF+b98jVGf FNkAcVcXF4t2tJ1mxJ/+q0DFSK/9vdCu9LAj7EObrd99eQk31ySXGk5xU Dnjn3XwVDyC4ke6mXJxt8VcuNdtLxmFovATMZeR+fKKu4JjR7eWc7F264 N9gibOKvgQTu0HGRMQLV61A2NFPFA76LtqgTUDfodO0jaxGhnNsFNQyML g==; X-IronPort-AV: E=McAfee;i="6500,9779,10499"; a="67617095" X-IronPort-AV: E=Sophos;i="5.95,182,1661785200"; d="scan'208,223";a="67617095" Received: from mail-os0jpn01lp2110.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.110]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Oct 2022 18:08:18 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P/V1Q715mWEqQTsAXjAd/cGMqARrGNO/dps1Uy3cdAau5dXN8xKEW7D5+OtZx1keKmJS+gSfg/3+I9nmXEXGJqPWl1ijYq2+9A+N+L8hSpf4k2WgTwd5BlwGpzK9EDWInAjg+DTX1d8TAr9ltSdWVpiwczMswP3F3tuglNWUzJIO4q/g6gFX+Pzej/thwra3tqykYkFF0WpYlYi4IQw8uLJD17XxZvxTxEsgPDp52YawlUGXuwkbwWc3yNVmIRASsHRligBvehHAGEUdJrkllnJx94j67IO1S83CEVwuNxV/CZ/jbexq7zESluQzSDZBAuULiV+4qaYhp5wt6oN91A== 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=bF7OLlApzLsQ1svkdsAPlWFVg1oYTf+f3OgWtl5DF3c=; b=TeGCIZw4WXiNXECrSuFAxJYd5wHj1IQbeHZpTU+QmtuxFkWYsh592Ftw9Ko/FnU+fRwSejNOe3wvSUivUPBFQfPvBedq4ztUtNAVNTXr+Wu1+G6xtZhJMuHnYAbwd3xfPgTLvUbPEUDrTpA08OE2RNm9vUtVifXmC3kqGkAt31EyAT1SDlF2MV43BR7flpefXllgz2zCYbJNAvQZicewBqme18mVak3Lv6KRxwGhLw8iUFQROIt+nqZZbafwj8QX5UjBxAIu66GMeMt4Gk9sYwcxEN4WKuYAMkDKXl4zqMlUApx349FEg16Qa88i/utQ1MTrrRSn4B14hjjnfQqGHw== 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 OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by TYAPR01MB5420.jpnprd01.prod.outlook.com (2603:1096:404:803f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5723.26; Fri, 14 Oct 2022 09:08:14 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::86d7:4009:43c3:7f83]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::86d7:4009:43c3:7f83%7]) with mapi id 15.20.5709.021; Fri, 14 Oct 2022 09:08:13 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila , "wangw.fnst@fujitsu.com" CC: Peter Smith , Dilip Kumar , Masahiko Sawada , "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: AQHYSXX5ZKpBKXxeUU2FhEhnmXQum6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5aggAGsWiCAATu3gIAEyyEAgABeLHCABFBngIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgAS/1gCABHgYgIAKpESAgAfOw4CAA0tmAIAAMWoQ Date: Fri, 14 Oct 2022 09:08:13 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ZTY4MmUxNGItNTIzYy00MDkzLTgxOTUtY2U4MjhlN2Ix?= =?utf-8?B?MWJkO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0xMC0xNFQwNzoyNjoyOVo7TVNJUF9MYWJl?= =?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: OS0PR01MB5716:EE_|TYAPR01MB5420:EE_ x-ms-office365-filtering-correlation-id: 1e48aab5-41ec-48f8-e371-08daadc39fac x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: p6mgfkeQg49CTFV6AndBp85AFaUW7jCSXaCY7od3nP1Cu2Ex5FunDPtr/FbUd6PbfNSVVqQ3i/vCjDedikQeB6f3p95b9a5h1vkgkPGelr7JUnt0pBq2oVgHnnpemDY7ruOWG7YMP20BYPSddAYCidRDASinw9W1oMZRZfiB51SqeD4bzXBPDuBTTe0cKokgEWKTM9tZnRz+YDAafJ8YM65Mh7mbniumTD6YvD4ews2WAk9Sh2EREOXhEekGE3xcMDsQoE0snttxdGy1Lm0AjRLOrz9bokbsncFvk0oKMYGoJ62CxT66F/IFG7XADV4/3btxcwp+DdvbHwvetqO6KEu7ghRKKUOpDoyIzZyvpQDelZfzWH8m3UJaXW2wFek60D79IdFB+hopkwYKQ8IQP8LcZwzqO4xkuamhoFWKwRwWXavDpznsVhaDREp6k+8Cs5xTvyLSKZJbw0AVJlwehhU06YcZgJ2kc3cQlaTfjT1NCDPTNE7epfSrWlQOe++K8nO4XkwJLIUoPn2Y8kMDpNskLwtVniYGw1IdUdyoStmlRUa0SnhrouWl7jVpL7Fz/Q8A/CJUbiOaAN1//SDYnZd9fq+F/BCR3pSupBd+4aWuIg/9l7NNnslFUhI5/GQqp9WIP4GjwGSL90hRuUQp58p8AAmyRqU4dsEY0JVHRv+3TjZLsoKI7IyUFcaseLKMnxD3QHp9z6KAxNq/ieyB0Gmgp2VYxymw3i3jCQx8POYryD9jyukV5NwBSqJWANUdhcgKLBmV5YuTwmHC1CY9hEUlvCzWNsAVtmy7S1Wv4luxaOm+d8kLM0i3lMg4fX04DQN+bvraOvM65tAqWV9J0El8aR8PVgpDgH646dMo/M2hPEVCf7N/dDAbD0xwa+tm x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(39860400002)(346002)(396003)(136003)(366004)(1590799012)(451199015)(1580799009)(316002)(33656002)(82960400001)(85182001)(38100700002)(38070700005)(9686003)(8936002)(66946007)(64756008)(66476007)(99936003)(41300700001)(6636002)(8676002)(4326008)(66446008)(2906002)(66556008)(86362001)(122000001)(5660300002)(52536014)(76116006)(55016003)(966005)(83380400001)(6506007)(7696005)(26005)(53546011)(186003)(110136005)(54906003)(478600001)(71200400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WWE4WTRrYUtadGJVOWVxTUsvOFNhekhrK3dZYjJnOEMvYTM3ZnpjeVRLRkla?= =?utf-8?B?aU81UVlhMkJRNFFDdENnOEFVaXBGRk5NaU12RTVac3drVUhpTzliVlpKK0hU?= =?utf-8?B?M2x6YnNudXpRbXpoWGh6SW1jUHZKU0QyampWcTlWOW1Wa1dSTFdEaENVckM4?= =?utf-8?B?cXFOZmZZZXhOWGdRaFpOTVllOW1NZnpRM1R0dnp3WXBMblRjNkVweHVmZE5s?= =?utf-8?B?Zk5MNnJCRzl5NzNZWjBUMUtSMEJMWkpWU0JtUU5hdGszcEFGU3hVdmxuVTUz?= =?utf-8?B?b1pEWGM4OC9Ock9lTUpsUUxvaUZsZDUyU05NcXRtR0VjU1kzNWdoMzg1U0JG?= =?utf-8?B?aTJTblFiR1lhbFJUa01YVEE3am04MVF0VU1DaE04R1lqZDdZS3Y3R2JSdHUx?= =?utf-8?B?Z09LZmY3aWw1Zm9SSXdXenYvZ3VYUkppcmRHMXl6TVhDUXROQk91THJCRkJq?= =?utf-8?B?QmRUS0M4T0JzSXU1dGhoMXI4VDVVeWN4Q2NRK2padFdKNVRyNDhwbXNCSFc0?= =?utf-8?B?bXVDbkd2blU3ZWJxaWRpbUkraHFQcHY3ckpRdVJTRDBYL3haR3ZxQzZKS2Nx?= =?utf-8?B?ZngxVTBzdUduRHlsWDV5ckNQSys2UGQ4WDJObHJRTnZMMGJDWVhjYXhRUTJa?= =?utf-8?B?K0t2ZkFSY1hLWHRiekljL25JSDc4NWxUbjIrblB0R1hjRVRVc2RBTHAyK0ZB?= =?utf-8?B?Nzc4Rmx4aUpqVkRFVEhNV0oyclB2SjVCdk9kbUFzMGVLWFRaNlA2MjVObWlL?= =?utf-8?B?YThOcWpLVHlZZ1VuTjd1STFZaWRNek5SeG0rMldhOU80YjIxUFd6RXMvUi9L?= =?utf-8?B?WmhNV0FONDYwOTE2Sk5DdUJaeU9kcWhMNmN4R0NTTFBhcEdCb2FyU25VMWR4?= =?utf-8?B?dUNGak1GYzR3VlJGWWtUQkIra3FET2RYZlpKcXg3UUVqOVJMemxZRTBTWWRm?= =?utf-8?B?Uis0dWVFcGhCSE5EQlZVUVJjUFRhRXl6MzVIY3hjUFAwT0NYbXI1aUU4UEQx?= =?utf-8?B?SDltdDIzZE52Y2E3SVFDdlhuTVJSVVhzd0F4VGJTa1Yrc2ZQYjA5cGJKY1U1?= =?utf-8?B?UGRJY2ZZTkxYWi9NMnp0OFg1UkhjbGhFekNHNDdXSlNRNFdVTXI5YUJyeHFO?= =?utf-8?B?RVc1MnNBUkxKUzlIL2pYSjk1SWxOdUl3dHRIWFE4N0FhUjFSalNDS3p3NUwx?= =?utf-8?B?SXdXZXVOK0ZCUnNZOStmMkNIQ3J2VFRLcEVxVnk5d1o2SGNkRVBheVJ6cmdi?= =?utf-8?B?cVpmRTA5S3ROdzU2ZWVoL2hpL29HaWFmY3FnQ1VHeXhXOVpOSDRHQjhmcVpm?= =?utf-8?B?SzFpdUtrTWlaVGRjVzhHcWd2WHo1Y1pQSzVnMmd1Z1BDRjkzWGV6NkdTR1M0?= =?utf-8?B?TXhrRjFwT1pjbTRTbUNoYTRHWCtnQ24vUE9ZSFloeS9nd1gyV1BCVEk4cncw?= =?utf-8?B?NnMzbERZNXJiczJQRzVGVUFsaWxQcXZHdVRpNkFlenZaU0xBbHNzQmNQTkdY?= =?utf-8?B?UnV0ZDgxTkQ3MVlVTHVZeUo2MTdHVVJtcUVCQnFtZytDNWY0RmMzd1JqUXJk?= =?utf-8?B?N2pXMXZxbFQrc0pWVTVRaHVoMC9RZHBFNUZ1VWk3VE96MGg3QzFReDVMZVg5?= =?utf-8?B?U2Nab3IyZlpIbEVKR1g5YnU1UnFUTit1bmxjU1VtY1l5RXdoSzdMeWk1dEIz?= =?utf-8?B?RkYxTXc3b01sNEh6Rk8vLzlWdnE1RlhiczU3cnd1TlkvT2I4dVdSZFNFM3hz?= =?utf-8?B?TDhhdEhRb3dYYi9XdlhrMSt1WVFuZkkvTUlhUVJrWE84TjNFN0tJM1pEUEhN?= =?utf-8?B?T1FjL2tCZVphMTNCVUtleHBjamxQRFgwSUZkTUk2QUIzeDg0VHp6QWRRRmRD?= =?utf-8?B?YVNrUEJJRkduNUw2eUkzUGpyQnFORTZTU3VjNEhSdTBmUDZVenQrT0cxT2tX?= =?utf-8?B?R1JqTUhwRHdNcTBISWU3RC9GdWhVK2lLclNGZHNxRkRGcWY2RHI3aXNOYkE4?= =?utf-8?B?QmJ6VktXUHRBTW1SbEZ6TlVwQkw5TGN4OEQ1c3FBUU1MaUgxQmJmaGZpOG5X?= =?utf-8?B?ZGtER2w1RlZOM0xVa212d0UzdGIyTDUyMFJKZmMwZEVHeW9SVEN2VUhTSnMw?= =?utf-8?Q?WzUqGyWT9yQlJczsnfzge3vx7?= Content-Type: multipart/mixed; boundary="_007_OS0PR01MB57160760B34E1655718F4D1994249OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1e48aab5-41ec-48f8-e371-08daadc39fac X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Oct 2022 09:08:13.5169 (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: /w0cCIPBMPZfxrIvuKfstAXTOMNqYRovBgh1s4dNbpjqf8OgXJjJlkI7bkJ+CsoFzUDljcxXHN6UwHrjzMmDaA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYAPR01MB5420 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_007_OS0PR01MB57160760B34E1655718F4D1994249OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpZGF5LCBPY3RvYmVyIDE0LCAyMDIyIDEyOjMwIFBNIEFtaXQgS2FwaWxhIDxhbWl0Lmth cGlsYTE2QGdtYWlsLmNvbT4gd3JvdGU6DQo+IA0KPiBPbiBXZWQsIE9jdCAxMiwgMjAyMiBhdCA3 OjQxIEFNIHdhbmd3LmZuc3RAZnVqaXRzdS5jb20NCj4gPHdhbmd3LmZuc3RAZnVqaXRzdS5jb20+ IHdyb3RlOg0KPiA+DQo+ID4gT24gRnJpLCBPY3QgNywgMjAyMiBhdCAxNDoxOCBQTSBIb3UsIFpo aWppZS/kvq8g5b+X5p2wDQo+IDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29tPiB3cm90ZToNCj4g PiA+IEF0dGFjaCB0aGUgbmV3IHZlcnNpb24gcGF0Y2ggc2V0IHdoaWNoIGFkZHJlc3NlZCBtb3N0 IG9mIHRoZSBjb21tZW50cy4NCj4gPg0KPiA+IFJlYmFzZWQgdGhlIHBhdGNoIHNldCBiZWNhdXNl IHRoZSBuZXcgY2hhbmdlIGluIEhFQUQgKDc3NmUxYzgpLg0KPiA+DQo+ID4gQXR0YWNoIHRoZSBu ZXcgcGF0Y2ggc2V0Lg0KPiA+DQo+IA0KPiArc3RhdGljIHZvaWQNCj4gK0hhbmRsZVBhcmFsbGVs QXBwbHlNZXNzYWdlKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU3RyaW5nSW5mbw0K PiArbXNnKQ0KPiB7DQo+IC4uLg0KPiArIGNhc2UgJ1gnOiAvKiBUZXJtaW5hdGUsIGluZGljYXRp bmcgY2xlYW4gZXhpdCAqLyB7DQo+ICsgc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFu ZGxlKTsNCj4gKyB3aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gTlVMTDsNCj4gKyBicmVhazsNCj4g KyB9DQo+IC4uLg0KPiB9DQo+IA0KPiBJIGRvbid0IHNlZSB0aGUgdXNlIG9mIHRoaXMgbWVzc2Fn ZSBpbiB0aGUgcGF0Y2guIElmIHRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IHRoZQ0KPiBsYXRlc3Qg dmVyc2lvbiB0aGVuIHdlIGNhbiByZW1vdmUgaXQgYW5kIGl0cyBjb3JyZXNwb25kaW5nIGhhbmRs aW5nIGluDQo+IHBhcmFsbGVsX2FwcGx5X3N0YXJ0X3dvcmtlcigpLiBJIGFtIHJlZmVycmluZyB0 byB0aGUgYmVsb3cgY29kZSBpbg0KPiBwYXJhbGxlbF9hcHBseV9zdGFydF93b3JrZXIoKToNCg0K VGhhbmtzIGZvciB0aGUgY29tbWVudHMsIEkgcmVtb3ZlZCB0aGVzZSBjb2RlcyBpbiB0aGUgbmV3 IHZlcnNpb24gcGF0Y2ggc2V0Lg0KDQpJIGFsc28gZGlkIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyBp biB0aGUgbmV3IHZlcnNpb24gcGF0Y2g6DQoNClswMDAxXSANCiogVGVhY2ggdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciB0byBjYXRjaCB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBjaGFuZ2Ug aW4NCnRoZSBtYWluIGxvb3Agc28gdGhhdCB1c2VyIGNhbiBjaGFuZ2UgdGhlIHN0cmVhbWluZyBv cHRpb24gdG8gIm9uIiB0byBzdG9wDQp0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBpbiBjYXNl IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VycyBnZXQgc3R1Y2sgYmVjYXVzZSBvZg0Kc29tZSBkZWFk bG9jayBwcm9ibGVtcyBkaXNjdXNzZWQgaW4gWzFdLg0KDQoqIFNvbWUgY29zbWV0aWMgY2hhbmdl cy4NCg0KKiBBZGRyZXNzIGNvbW1lbnRzIGZyb20gUGV0ZXJbMl0uDQoNClswMDA0XQ0KKiBEaXNh bGxvdyByZXBsaWNhdGluZyBmcm9tIG9yIHRvIGEgcGFydGl0aW9uZWQgdGFibGUgaW4gcGFyYWxs ZWwgc3RyZWFtaW5nDQptb2RlLiBUaGlzIGlzIHRvIGF2b2lkIHRoZSBkZWFkbG9jayBjYXNlcyB3 aGVuIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSdzDQppbmhlcml0YW5jZSBzdHJ1Y3R1cmUgaXMgZGlm ZmVyZW50IGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGFzDQpkaXNjdXNzZWQgWzFd Lg0KDQoNClsxXSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBQTRlSzFK WUZYRW9GaEpBdmcxcVUlM0RuWnJaTHdfODdYJTNEMllXUUdGQmJjQkdpckFVd0ElNDBtYWlsLmdt YWlsLmNvbQ0KWzJdIGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FIdXQl MkJQdnhMOHRKMlpVcEVqa2JSRmU2cUtTSCUyQnI1NEJRN3dNOHAlM0QzMzV0VWJ1WGJnJTQwbWFp bC5nbWFpbC5jb20NCg0KQmVzdCByZWdhcmRzLA0KSG91IHpqDQo= --_007_OS0PR01MB57160760B34E1655718F4D1994249OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v38-0006-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v38-0006-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v38-0006-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8952; creation-date="Fri, 14 Oct 2022 09:04:00 GMT"; modification-date="Fri, 14 Oct 2022 09:08:07 GMT" Content-Transfer-Encoding: base64 RnJvbSBhODNmODI0ZjVlNjU2ODY1YWFhZjA1ZDVjNTE3MWRjNmY3ZjhjYWQ5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djM4IDYvNl0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgfCAyNiArKysr KysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAg ICB8ICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyB8IDMy ICsrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg ICAgICAgICAgICB8ICA2ICsrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 ICAgICAgICB8ICAzICstCiA1IGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDI1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDM0MmIyMGViZWIuLjE3NzRiMGM5MDcg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzE3OCwxMyArMzE3OCwyNCBAQCBTRUxFQ1QgcGlkLCB3 YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdh aXRfZXZlbnQgaQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlk PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAgICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNo cm9uaXphdGlvbiB3b3JrZXIuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK ICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+ CiAgICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25p emluZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFpbiBhcHBseSB3b3JrZXIKKyAgICAgICBtYWlu IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJh PjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0zMTk0LDcgKzMyMDUsNyBAQCBTRUxFQ1QgcGlk LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJF IHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3 cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0g ICAgICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAgICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxs IGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTMyMDMsNyArMzIxNCw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBp CiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBv cmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2 ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwg YXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMy MTIsNyArMzIyNCw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZp ZWxkPmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3 aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAg IFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNl bmRlcgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBv cmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMjEsNyArMzIz NCw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0 YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVz dF9lbmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJh PgogICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVw b3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBs b2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKQEAgLTMyMzEsNyArMzI0NSw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwg d2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAg ICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQg bG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdpbiBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAg ICBzZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCmluZGV4IGY0YTAwNDk2ZWUuLjNmMTVjZjI0ZTkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0Niw2ICs5NDYsNyBAQCBDUkVBVEUgVklFVyBwZ19z dGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAgICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAg ICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAgIHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFw cGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBzdC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJl Y2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCA0YTc3ODRlMjhkLi4wYjE1 MjA4NThmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5j aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBA IC0xMDY2LDcgKzEwNjYsNyBAQCBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0 YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19TVEFU X0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElP Tl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FSR0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQ R19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJl dHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwpAQCAtMTA5MiwxMCArMTA5Miw2IEBA IHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNW YWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJ LyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCi0JCWlmIChpc1Bh cmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCi0JCQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlk ID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdv cmtlci5zdWJpZCk7CkBAIC0xMTA0LDI2ICsxMTAwLDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlw dGlvbihQR19GVU5DVElPTl9BUkdTKQogCQllbHNlCiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZh bHVlc1syXSA9IEludDMyR2V0RGF0dW0od29ya2VyX3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCisKKwkJaWYgKHdvcmtlci5hcHBseV9sZWFkZXJfcGlk ID09IEludmFsaWRQaWQpCiAJCQludWxsc1szXSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1sz XSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xzbik7Ci0JCWlmICh3b3JrZXIubGFzdF9zZW5k X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1szXSA9IEludDMyR2V0RGF0dW0od29ya2VyLmFwcGx5X2xl YWRlcl9waWQpOworCisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikp CiAJCQludWxsc1s0XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s0XSA9IFRpbWVzdGFtcFR6 R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1lKTsKLQkJaWYgKHdvcmtlci5sYXN0X3JlY3Zf dGltZSA9PSAwKQorCQkJdmFsdWVzWzRdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsK KwkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQogCQkJbnVsbHNbNV0gPSB0cnVlOwog CQllbHNlCi0JCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3Jl Y3ZfdGltZSk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQor CQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUp OworCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCiAJCQludWxsc1s2XSA9IHRydWU7 CiAJCWVsc2UKLQkJCXZhbHVlc1s2XSA9IExTTkdldERhdHVtKHdvcmtlci5yZXBseV9sc24pOwot CQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1s2XSA9IFRpbWVzdGFtcFR6 R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFs aWQod29ya2VyLnJlcGx5X2xzbikpCiAJCQludWxsc1s3XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZh bHVlc1s3XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJlcGx5X3RpbWUpOworCQkJdmFs dWVzWzddID0gTFNOR2V0RGF0dW0od29ya2VyLnJlcGx5X2xzbik7CisJCWlmICh3b3JrZXIucmVw bHlfdGltZSA9PSAwKQorCQkJbnVsbHNbOF0gPSB0cnVlOworCQllbHNlCisJCQl2YWx1ZXNbOF0g PSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5yZXBseV90aW1lKTsKIAogCQl0dXBsZXN0b3Jl X3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLAogCQkJCQkJCSB2 YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDY4YmIwMzJkM2UuLjFl NTgzYTE1ZDYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTM5Niw5ICs1Mzk2LDkgQEAK ICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAn LCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9h cmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0 LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAg cHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAn e3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxh c3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAg cHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFt cHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3RhbXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAn e2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxy ZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1l LGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywK ICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAy NicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJyZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFt ZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggOWRkMTM3NDE1ZS4uYzY5 ZjZlNDcxYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwODYsNiArMjA4 Niw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5waWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwg U0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAg ICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xz biwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUsCkBAIC0yMDkzLDcgKzIwOTQsNyBAQCBwZ19z dGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3Rf ZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3RpbWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlv biBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkg c3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBs YXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9O ICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJz Y3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3Bp ZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGlt ZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9p ZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAg cy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9yX2NvdW50LAotLSAKMi4yMy4wLndpbmRvd3Mu MQoK --_007_OS0PR01MB57160760B34E1655718F4D1994249OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v38-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v38-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v38-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=140620; creation-date="Fri, 14 Oct 2022 09:04:00 GMT"; modification-date="Fri, 14 Oct 2022 09:08:08 GMT" Content-Transfer-Encoding: base64 RnJvbSAxZDE3NzYxMTg1ZDc2NmJkMzA1NzEwYWZjOTg1ZTg5MzVmNzllYzMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYzOF0gUGVyZm9ybSBzdHJlYW1pbmcgbG9naWNhbCB0cmFuc2FjdGlvbnMgYnkgcGFyYWxsZWwK IHdvcmtlcnMKCkN1cnJlbnRseSwgZm9yIGxhcmdlIHRyYW5zYWN0aW9ucywgdGhlIHB1Ymxpc2hl ciBzZW5kcyB0aGUgZGF0YSBpbiBtdWx0aXBsZQpzdHJlYW1zIChjaGFuZ2VzIGRpdmlkZWQgaW50 byBjaHVua3MgZGVwZW5kaW5nIHVwb24gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSksCmFuZCB0 aGVuIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUsIHRoZSBhcHBseSB3b3JrZXIgd3JpdGVzIHRoZSBj aGFuZ2VzIGludG8KdGVtcG9yYXJ5IGZpbGVzIGFuZCBvbmNlIGl0IHJlY2VpdmVzIHRoZSBjb21t aXQsIGl0IHJlYWRzIGZyb20gdGhvc2UgZmlsZXMgYW5kCmFwcGxpZXMgdGhlIGVudGlyZSB0cmFu c2FjdGlvbi4gVG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaAp0cmFuc2FjdGlvbnMs IHdlIGNhbiBpbnN0ZWFkIGFsbG93IHRoZW0gdG8gYmUgYXBwbGllZCB2aWEgcGFyYWxsZWwgd29y a2Vycy4KCkluIHRoaXMgYXBwcm9hY2gsIHdlIGFzc2lnbiBhIG5ldyBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgKGlmIGF2YWlsYWJsZSkgYXMKc29vbiBhcyB0aGUgeGFjdCdzIGZpcnN0IHN0cmVhbSBp cyByZWNlaXZlZCBhbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbApzZW5kIGNoYW5nZXMg dG8gdGhpcyBuZXcgd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LiBUaGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyCndpbGwgZGlyZWN0bHkgYXBwbHkgdGhlIGNoYW5nZSBpbnN0ZWFkIG9mIHdyaXRpbmcg aXQgdG8gdGVtcG9yYXJ5IGZpbGVzLiBXZQprZWVwIHRoaXMgd29ya2VyIGFzc2lnbmVkIHRpbGwg dGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0CmZvciB0aGUg d29ya2VyIHRvIGZpbmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmlu ZyBhbmQgYXZvaWRzCndyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbSBmaWxlcyBpbiBtb3N0IGNh c2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmCnRoZXJlIGlzIG5vIHdvcmtlciBhdmFpbGFi bGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcn IHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhIHBhcmFsbGVsIGFwcGx5CndvcmtlciBvciBz cGlsbCB0aGUgY2hhbmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBw YXJhbWV0ZXIgdG8KJ29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIgdmFsdWUgJ3Bh cmFsbGVsJyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEgYSBwYXJhbGxl bCBhcHBseSB3b3JrZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2YWx1ZQonb24nIG1l YW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVkIHRvIGRpc2suIFRo ZSBkZWZhdWx0IHZhbHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVoYXZpb3VyKS4KCklu IGFkZGl0aW9uLCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBTVFJF QU1fQUJPUlQgbWVzc2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0X2xzbiBjYW4gYWxz byBiZSBzZW50IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVwbGljYXRpb24gb3Jp Z2luIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aGVuIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gaXMKYWJvcnRlZC4gQmVjYXVzZSB0aGlzIG1lc3NhZ2UgZXh0ZW5zaW9uIGlzIG5lZWRlZCB0 byBzdXBwb3J0IHBhcmFsbGVsCnN0cmVhbWluZywgcGFyYWxsZWwgc3RyZWFtaW5nIGlzIG5vdCBz dXBwb3J0ZWQgZm9yIHB1YmxpY2F0aW9ucyBvbiBzZXJ2ZXJzIDwKUEcxNi4KLS0tCiBkb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOCAr LQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgICAgICAgfCAg IDIxICstCiBkb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMjkgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAg ICAgICAgIHwgICAyNCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAg ICAgICAgICAgICAgfCAgIDEzICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2RlZmluZS5jICAgICAg ICAgICAgICAgICAgICAgIHwgICA1OCArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jICAgICAgICAgICAgfCAgIDEwICstCiBzcmMvYmFja2VuZC9saWJwcS9wcW1xLmMg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICAgICAgIHwgICAgMyArCiAuLi4vbGlicHF3YWxyZWNl aXZlci9saWJwcXdhbHJlY2VpdmVyLmMgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICAgICAgIHwgICAgMSArCiAuLi4vcmVw bGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgICAgICB8IDEwOTMgKysrKysr KysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMg ICAgICAgICAgIHwgICAxMCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVu Y2hlci5jICAgICAgICAgfCAgMjAyICsrKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbWVzb24uYnVpbGQgICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMgICAgICAgICAgICB8ICAgMzcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgIHwgICAxMCArLQogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgICAgICAgfCAgIDEwICstCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgICAgICB8ICA4ODEgKysrKysrKysr KysrKy0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgICAg ICAgfCAgIDIxICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAg ICAgICAgICB8ICAgIDQgKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZl bnQuYyAgICAgICAgICAgIHwgICAgNiArCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYyAgICAgICAgICAgICAgICB8ICAgMTIgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0 Z3Jlc3FsLmNvbmYuc2FtcGxlICAgICAgfCAgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgICAgICAgfCAgIDIxICstCiBzcmMvaW5jbHVkZS9j b21tYW5kcy9kZWZyZW0uaCAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggICAgICAgICAgfCAgICAxICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICAgICAgIHwgICAyOCArLQog c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgICAgICAgfCAgICA4 ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICAgICAgIHwg ICAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgICAg ICAgfCAgICA3ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAg ICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oICAgICAgICAgIHwgIDEzNSArKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5o ICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50 LmggICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9zdWJzY3JpcHRpb24ub3V0ICAgICAgICAgfCAgIDEyICstCiBzcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdWJzY3JpcHRpb24uc3FsICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICAgICAgIHwgICAgNSArCiA0MSBmaWxlcyBj aGFuZ2VkLCAyNDg4IGluc2VydGlvbnMoKyksIDI2MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3Jr ZXIuYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMDBmODMzZC4uYzU3NjlkYSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwK QEAgLTc4OTIsMTEgKzc4OTIsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0 ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8 cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFt PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxw YXJhPgotICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1p bmcgb2YgaW4tcHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBo b3cgdG8gaGFuZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgor ICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxs IHRoZSBjaGFuZ2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sg YW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0 aGUKKyAgICAgICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBhcHBs eSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKyAgICAgICB3b3JrZXIg aWYgYXZhaWxhYmxlIChzYW1lIGFzICd0JyBpZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlKQogICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggNjYzMTJiNS4u Njc0MmYyYyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDk0Nyw3ICs0OTQ3LDggQEAgQU5ZIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxl IGNsYXNzPSIKICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lm aWVzIG1heGltdW0gbnVtYmVyIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBp bmNsdWRlcwotICAgICAgICBib3RoIGFwcGx5IHdvcmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXph dGlvbiB3b3JrZXJzLgorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VycywgcGFyYWxsZWwgYXBw bHkgd29ya2VycywgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbgorICAgICAgICB3b3JrZXJzLgog ICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlv biB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKQEAgLTQ5ODcsNiAr NDk4OCwzMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9y ZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAg ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1wYXJh bGxlbC1hcHBseS13b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X3BhcmFs bGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFt ZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAo PHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5 Pjx2YXJuYW1lPm1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zh cm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRl cm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAg ICAgIE1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlw dGlvbi4gVGhpcworICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJh bGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9u cyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5n ID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wg ZGVmaW5lZCBieQorICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3Jr ZXJzPC92YXJuYW1lPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRo ZSBkZWZhdWx0IHZhbHVlIGlzIDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0 aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Ig b24gdGhlIHNlcnZlciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxp c3Q+CiAgICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5k ZXggZTk4NTM4ZS4uOWU3NTNmZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CkBAIC0xMzQwLDYgKzEzNDAsMTYgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIG1pZ2h0 IG5vdCB2aW9sYXRlIGFueSBjb25zdHJhaW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2UgdGhlIHN1 YnNjcmliZXIKICAgIGluY29uc2lzdGVudC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hl biB0aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUg ZmluaXNoIExTTiBvZgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4g SW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhlIHN0cmVh bWluZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVy YWw+IGFuZAorICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2gg TFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0byB0aGUg c2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8g PGxpbmsKKyAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIg U1VCU0NSSVBUSU9OIC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAg PC9zZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMi PgpAQCAtMTUyMSw3ICsxNTMxLDggQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIHN1YnNj cmlwdGlvbi4gIEEgZGlzYWJsZWQgc3Vic2NyaXB0aW9uIG9yIGEgY3Jhc2hlZCBzdWJzY3JpcHRp b24gd2lsbCBoYXZlCiAgICB6ZXJvIHJvd3MgaW4gdGhpcyB2aWV3LiAgSWYgdGhlIGluaXRpYWwg ZGF0YSBzeW5jaHJvbml6YXRpb24gb2YgYW55CiAgICB0YWJsZSBpcyBpbiBwcm9ncmVzcywgdGhl cmUgd2lsbCBiZSBhZGRpdGlvbmFsIHdvcmtlcnMgZm9yIHRoZSB0YWJsZXMKLSAgIGJlaW5nIHN5 bmNocm9uaXplZC4KKyAgIGJlaW5nIHN5bmNocm9uaXplZC4gTW9yZW92ZXIsIGlmIHRoZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gaXMgYXBwbGllZCBpbgorICAgcGFyYWxsZWwsIHRoZXJlIHdpbGwg YmUgYWRkaXRpb25hbCB3b3JrZXJzLgogICA8L3BhcmE+CiAgPC9zZWN0MT4KIApAQCAtMTYxNiw4 ICsxNjI3LDEyIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNh dGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICB0byB0aGUgc3Vic2NyaWJl ciwgcGx1cyBzb21lIHJlc2VydmUgZm9yIHRhYmxlIHN5bmNocm9uaXphdGlvbi4KICAgIDx2YXJu YW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+IG11c3QgYmUgc2V0 IHRvIGF0IGxlYXN0CiAgICB0aGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMsIGFnYWluIHBsdXMg c29tZSByZXNlcnZlIGZvciB0aGUgdGFibGUKLSAgIHN5bmNocm9uaXphdGlvbi4gIEFkZGl0aW9u YWxseSB0aGUgPHZhcm5hbWU+bWF4X3dvcmtlcl9wcm9jZXNzZXM8L3Zhcm5hbWU+Ci0gICBtYXkg bmVlZCB0byBiZSBhZGp1c3RlZCB0byBhY2NvbW1vZGF0ZSBmb3IgcmVwbGljYXRpb24gd29ya2Vy cywgYXQgbGVhc3QKKyAgIHN5bmNocm9uaXphdGlvbi4gSWYgdGhlIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgPGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPgorICAgaXMgc2V0IHRvIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPiwKKyAgIDxsaXRlcmFsPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnM8L2xpdGVyYWw+IHNob3VsZCBiZSBpbmNyZWFzZWQKKyAgIGFjY29yZGluZyB0byB0 aGUgZGVzaXJlZCBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gIEFkZGl0aW9uYWxs eSB0aGUKKyAgIDx2YXJuYW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPiBtYXkgbmVl ZCB0byBiZSBhZGp1c3RlZCB0bworICAgYWNjb21tb2RhdGUgZm9yIHJlcGxpY2F0aW9uIHdvcmtl cnMsIGF0IGxlYXN0CiAgICAoPHZhcm5hbWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy czwvdmFybmFtZT4KICAgICsgPGxpdGVyYWw+MTwvbGl0ZXJhbD4pLiAgTm90ZSB0aGF0IHNvbWUg ZXh0ZW5zaW9ucyBhbmQgcGFyYWxsZWwgcXVlcmllcwogICAgYWxzbyB0YWtlIHdvcmtlciBzbG90 cyBmcm9tIDx2YXJuYW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPi4KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNn bWwKaW5kZXggNWZkZDQyOS4uYzZhMGU4MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3Rv Y29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTMxMDIsNyArMzEw Miw3IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklE RU5USUZZX1NZU1RFTTsiCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIFBy b3RvY29sIHZlcnNpb24uIEN1cnJlbnRseSB2ZXJzaW9ucyA8bGl0ZXJhbD4xPC9saXRlcmFsPiwg PGxpdGVyYWw+MjwvbGl0ZXJhbD4sCi0gICAgICAgYW5kIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGFy ZSBzdXBwb3J0ZWQuCisgICAgICAgPGxpdGVyYWw+MzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD40 PC9saXRlcmFsPiBhcmUgc3VwcG9ydGVkLgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAg ICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4yPC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Ig c2VydmVyIHZlcnNpb24gMTQKQEAgLTMxMTIsNiArMzExMiwxMSBAQCBwc3FsICJkYm5hbWU9cG9z dGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAg IFZlcnNpb24gPGxpdGVyYWw+MzwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZl ciB2ZXJzaW9uIDE1CiAgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbWluZyBv ZiB0d28tcGhhc2UgY29tbWl0cy4KICAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAg IFZlcnNpb24gPGxpdGVyYWw+NDwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZl ciB2ZXJzaW9uIDE2CisgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbXMgb2Yg bGFyZ2UgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisgICAgICAgYmUgYXBwbGllZCBpbiBw YXJhbGxlbC4KKyAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3Rl bnRyeT4KIApAQCAtNjg4Miw2ICs2ODg3LDI4IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBs aWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgICAgIDwvcGFyYT4K ICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFhMb2dSZWNQdHIpPC90ZXJtPgorICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBUaGUgTFNOIG9mIHRoZSBhYm9y dC4gVGhpcyBmaWVsZCBpcyBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wgdmVyc2lvbgorICAgICAg ICAgNC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoVGlt ZXN0YW1wVHopPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAg ICAgICBBYm9ydCB0aW1lc3RhbXAgb2YgdGhlIHRyYW5zYWN0aW9uLiBUaGUgdmFsdWUgaXMgaW4g bnVtYmVyCisgICAgICAgICBvZiBtaWNyb3NlY29uZHMgc2luY2UgUG9zdGdyZVNRTCBlcG9jaCAo MjAwMC0wMS0wMSkuIFRoaXMgZmllbGQgaXMKKyAgICAgICAgIGF2YWlsYWJsZSBzaW5jZSBwcm90 b2NvbCB2ZXJzaW9uIDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9saXN0aXRl bT4KICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRp b24uc2dtbAppbmRleCBiZDEyZTcxLi4wM2ZjMDQ3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjIyLDEzICsyMjIsMjkgQEAgQ1JFQVRFIFNVQlNDUklQ VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3Jl cGxhY2VhYmwKICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgIDx2YXJsaXN0ZW50cnk+ Ci0gICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmJvb2xl YW48L3R5cGU+KTwvdGVybT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRl cmFsPiAoPHR5cGU+ZW51bTwvdHlwZT4pPC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAg ICAgICA8cGFyYT4KICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciB0byBlbmFibGUgc3RyZWFt aW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGZvciB0aGlzIHN1YnNj cmlwdGlvbi4gIEJ5IGRlZmF1bHQsIGFsbCB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBhcmUgZnVs bHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBvbmx5IHRoZW4gc2VudCB0byB0aGUKLSAg ICAgICAgICBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisgICAgICAgICAgZm9yIHRoaXMgc3Vic2Ny aXB0aW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiwKKyAg ICAgICAgICBtZWFuaW5nIGFsbCB0cmFuc2FjdGlvbnMgYXJlIGZ1bGx5IGRlY29kZWQgb24gdGhl IHB1Ymxpc2hlciBhbmQgb25seQorICAgICAgICAgIHRoZW4gc2VudCB0byB0aGUgc3Vic2NyaWJl ciBhcyBhIHdob2xlLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+LCB0aGUgaW5jb21pbmcgY2hhbmdl cyBhcmUgd3JpdHRlbiB0bworICAgICAgICAgIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBs aWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzCisgICAgICAgICAgY29tbWl0dGVkIG9u IHRoZSBwdWJsaXNoZXIgYW5kIHJlY2VpdmVkIGJ5IHRoZSBzdWJzY3JpYmVyLgorICAgICAgICAg PC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+ cGFyYWxsZWw8L2xpdGVyYWw+LCBpbmNvbWluZyBjaGFuZ2VzIGFyZSBkaXJlY3RseQorICAgICAg ICAgIGFwcGxpZWQgdmlhIG9uZSBvZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgaWYgYXZh aWxhYmxlLiBJZiBubworICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBmcmVlIHRv IGhhbmRsZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoZW4KKyAgICAgICAgICB0aGUgY2hhbmdl cyBhcmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGxpZWQgYWZ0ZXIgdGhlCisg ICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3RlIHRoYXQgaWYgYW4gZXJyb3Ig aGFwcGVucyBpbiBhCisgICAgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB0aGUgZmluaXNo IExTTiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uCisgICAgICAgICAgbWlnaHQgbm90IGJlIHJl cG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9nLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xp c3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5j CmluZGV4IGMxZmZiZDguLmM1NWQ5YWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hhY3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAg LTE3MTEsNiArMTcxMSw3IEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3Qp CiAJaW50CQkJbmNoaWxkcmVuOwogCVRyYW5zYWN0aW9uSWQgKmNoaWxkcmVuOwogCVRpbWVzdGFt cFR6IHhhY3RfdGltZTsKKwlib29sCQlyZXBsb3JpZ2luOwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZl bid0IGJlZW4gYXNzaWduZWQgYW4gWElELCBub2JvZHkgd2lsbCBjYXJlIHdoZXRoZXIgd2UgYWJv cnRlZApAQCAtMTc0MSw2ICsxNzQyLDEzIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBp c1N1YlhhY3QpCiAJCWVsb2coUEFOSUMsICJjYW5ub3QgYWJvcnQgdHJhbnNhY3Rpb24gJXUsIGl0 IHdhcyBhbHJlYWR5IGNvbW1pdHRlZCIsCiAJCQkgeGlkKTsKIAorCS8qCisJICogQXJlIHdlIHVz aW5nIHRoZSByZXBsaWNhdGlvbiBvcmlnaW5zIGZlYXR1cmU/ICBPciwgaW4gb3RoZXIgd29yZHMs IGFyZQorCSAqIHdlIHJlcGxheWluZyByZW1vdGUgYWN0aW9ucz8KKwkgKi8KKwlyZXBsb3JpZ2lu ID0gKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCisJ CQkJICByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOworCiAJ LyogRmV0Y2ggdGhlIGRhdGEgd2UgbmVlZCBmb3IgdGhlIGFib3J0IHJlY29yZCAqLwogCW5yZWxz ID0gc21nckdldFBlbmRpbmdEZWxldGVzKGZhbHNlLCAmcmVscyk7CiAJbmNoaWxkcmVuID0geGFj dEdldENvbW1pdHRlZENoaWxkcmVuKCZjaGlsZHJlbik7CkBAIC0xNzY1LDYgKzE3NzMsMTEgQEAg UmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAkJCQkJICAgTXlYYWN0Rmxh Z3MsIEludmFsaWRUcmFuc2FjdGlvbklkLAogCQkJCQkgICBOVUxMKTsKIAorCWlmIChyZXBsb3Jp Z2luKQorCQkvKiBNb3ZlIExTTnMgZm9yd2FyZCBmb3IgdGhpcyByZXBsaWNhdGlvbiBvcmlnaW4g Ki8KKwkJcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdp bl9sc24sCisJCQkJCQkJCSAgIFhhY3RMYXN0UmVjRW5kKTsKKwogCS8qCiAJICogUmVwb3J0IHRo ZSBsYXRlc3QgYXN5bmMgYWJvcnQgTFNOLCBzbyB0aGF0IHRoZSBXQUwgd3JpdGVyIGtub3dzIHRv CiAJICogZmx1c2ggdGhpcyBhYm9ydC4gVGhlcmUncyBub3RoaW5nIHRvIGJlIGdhaW5lZCBieSBk ZWxheWluZyB0aGlzLCBzaW5jZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZGVm aW5lLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kZWZpbmUuYwppbmRleCA4NmI4OTA3Li4xMTMx MmQxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kZWZpbmUuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy9kZWZpbmUuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgPG1h dGguaD4KIAogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNs dWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgpA QCAtMzQ2LDYgKzM0Nyw2MyBAQCBkZWZHZXRTdHJpbmdMaXN0KERlZkVsZW0gKmRlZikKIH0KIAog LyoKKyAqIEV4dHJhY3QgdGhlIHN0cmVhbWluZyBtb2RlIHZhbHVlIGZyb20gYSBEZWZFbGVtLiAg VGhpcyBpcyBsaWtlCisgKiBkZWZHZXRCb29sZWFuKCkgYnV0IGFsc28gYWNjZXB0cyB0aGUgc3Bl Y2lhbCB2YWx1ZSBvZiAicGFyYWxsZWwiLgorICovCitjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2Rl KERlZkVsZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciB2YWx1ZSBnaXZlbiwg YXNzdW1lICJ0cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkKKwkJ cmV0dXJuIFNVQlNUUkVBTV9PTjsKKworCS8qCisJICogQWxsb3cgMCwgMSwgImZhbHNlIiwgInRy dWUiLCAib2ZmIiwgIm9uIiBvciAicGFyYWxsZWwiLgorCSAqLworCXN3aXRjaCAobm9kZVRhZyhk ZWYtPmFyZykpCisJeworCQljYXNlIFRfSW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+ YXJnKSkKKwkJCXsKKwkJCQljYXNlIDA6CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJ CWNhc2UgMToKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkv KiBvdGhlcndpc2UsIGVycm9yIG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJy ZWFrOworCQlkZWZhdWx0OgorCQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmco ZGVmKTsKKworCQkJCS8qCisJCQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUg c2hvdWxkIG1hdGNoIHVwIHdpdGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29y X3N0cmluZyBwcm9kdWN0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWws ICJmYWxzZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkK KwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwg InRydWUiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJ CQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFy YWxsZWwiKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX1BBUkFMTEVMOworCQkJfQorCQkJ YnJlYWs7CisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciBcInBh cmFsbGVsXCIiLAorCQkJCQlkZWYtPmRlZm5hbWUpKSk7CisJcmV0dXJuIFNVQlNUUkVBTV9PRkY7 CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCit9CisKKy8qCiAgKiBSYWlzZSBhbiBlcnJvciBh Ym91dCBhIGNvbmZsaWN0aW5nIERlZkVsZW0uCiAgKi8KIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCA4ZmI4OWE5Li45NTg2OWEyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC04NCw3ICs4NCw3IEBAIHR5cGVkZWYgc3Ry dWN0IFN1Yk9wdHMKIAlib29sCQljb3B5X2RhdGE7CiAJYm9vbAkJcmVmcmVzaDsKIAlib29sCQli aW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQl0d29w aGFzZTsKIAlib29sCQlkaXNhYmxlb25lcnI7CiAJY2hhcgkgICAqb3JpZ2luOwpAQCAtMTM4LDcg KzEzOCw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqc3RtdF9vcHRpb25zLAogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0JJ TkFSWSkpCiAJCW9wdHMtPmJpbmFyeSA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0 cywgU1VCT1BUX1NUUkVBTUlORykpCi0JCW9wdHMtPnN0cmVhbWluZyA9IGZhbHNlOworCQlvcHRz LT5zdHJlYW1pbmcgPSBTVUJTVFJFQU1fT0ZGOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywg U1VCT1BUX1RXT1BIQVNFX0NPTU1JVCkpCiAJCW9wdHMtPnR3b3BoYXNlID0gZmFsc2U7CiAJaWYg KElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfRElTQUJMRV9PTl9FUlIpKQpAQCAtMjQxLDcg KzI0MSw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqc3RtdF9vcHRpb25zLAogCQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBw c3RhdGUpOwogCiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfU1RSRUFNSU5HOwot CQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CisJCQlvcHRzLT5zdHJl YW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVsKTsKIAkJfQogCQllbHNlIGlmIChzdHJj bXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAwKQogCQl7CkBAIC02MjksNyArNjI5 LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2Ny aXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3duZXIg LSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJlbmFibGVkIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5lbmFibGVkKTsKIAl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViYmluYXJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0 cy5iaW5hcnkpOwotCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9 IEJvb2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0 aW9uX3N1YnN0cmVhbSAtIDFdID0gQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VidHdvcGhhc2VzdGF0ZSAtIDFdID0KIAkJQ2hhckdl dERhdHVtKG9wdHMudHdvcGhhc2UgPwogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9Q RU5ESU5HIDoKQEAgLTEwOTgsNyArMTA5OCw3IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCWlmIChJc1NldChv cHRzLnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5HKSkKIAkJCQl7CiAJCQkJCXZhbHVl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9Ci0JCQkJCQlCb29sR2V0RGF0 dW0ob3B0cy5zdHJlYW1pbmcpOworCQkJCQkJQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsK IAkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSB0cnVl OwogCQkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jIGIvc3JjL2Jh Y2tlbmQvbGlicHEvcHFtcS5jCmluZGV4IDRkMDQxNWUuLjZkNTM5NGUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAg LTEzLDExICsxMywxMyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFj Y2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGli cHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCiAjaW5jbHVkZSAibWlzY2Fk bWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bHdvcmtlci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogCkBAIC0xNjIsOSArMTY0LDE5IEBAIG1xX3B1dG1lc3NhZ2UoY2hhciBtc2d0 eXBlLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuKQogCQlyZXN1bHQgPSBzaG1fbXFfc2VuZHYo cHFfbXFfaGFuZGxlLCBpb3YsIDIsIHRydWUsIHRydWUpOwogCiAJCWlmIChwcV9tcV9wYXJhbGxl bF9sZWFkZXJfcGlkICE9IDApCi0JCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFk ZXJfcGlkLAotCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAotCQkJCQkJICAgcHFf bXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQl7CisJCQlpZiAoSXNQYXJhbGxlbFdv cmtlcigpKQorCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCisJ CQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFs bGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlBc3NlcnQoSXNMb2dp Y2FsUGFyYWxsZWxBcHBseVdvcmtlcigpKTsKKwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJh bGxlbF9sZWFkZXJfcGlkLAorCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FH RSwKKwkJCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCQl9CisJ CX0KIAogCQlpZiAocmVzdWx0ICE9IFNITV9NUV9XT1VMRF9CTE9DSykKIAkJCWJyZWFrOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDBkNzJkZTIuLjJkZmE5YWIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTEyOCw2ICsxMjgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0 CiAJfSwKIAl7CiAJCSJBcHBseVdvcmtlck1haW4iLCBBcHBseVdvcmtlck1haW4KKwl9LAorCXsK KwkJIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIiwgUGFyYWxsZWxBcHBseVdvcmtlck1haW4KIAl9 CiB9OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2Vp dmVyL2xpYnBxd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2Fs cmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCmluZGV4IDdmNjk3YjAuLjIyNWRhODEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxy ZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIv bGlicHF3YWxyZWNlaXZlci5jCkBAIC00NDMsOSArNDQzLDkgQEAgbGlicHFyY3Zfc3RhcnRzdHJl YW1pbmcoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJw cm90b192ZXJzaW9uICcldSciLAogCQkJCQkJIG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwucHJvdG9f dmVyc2lvbik7CiAKLQkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nICYmCi0J CQlQUXNlcnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTQwMDAwKQotCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZygmY21kLCAiLCBzdHJlYW1pbmcgJ29uJyIpOworCQlpZiAob3B0aW9u cy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyKQorCQkJYXBwZW5kU3RyaW5nSW5mbygmY21k LCAiLCBzdHJlYW1pbmcgJyVzJyIsCisJCQkJCQkJIG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3Ry ZWFtaW5nX3N0cik7CiAKIAkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwudHdvcGhhc2UgJiYK IAkJCVBRc2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAxNTAwMDApCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQppbmRleCBjNGUyZmRlLi4yZGMyNWUzIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKQEAgLTE1LDYgKzE1LDcg QEAgaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogb3ZlcnJpZGUg Q1BQRkxBR1MgOj0gLUkkKHNyY2RpcikgJChDUFBGTEFHUykKIAogT0JKUyA9IFwKKwlhcHBseXBh cmFsbGVsd29ya2VyLm8gXAogCWRlY29kZS5vIFwKIAlsYXVuY2hlci5vIFwKIAlsb2dpY2FsLm8g XApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxs ZWx3b3JrZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDA2YWI5Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMKQEAgLTAsMCArMSwxMDkzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq IGFwcGx5cGFyYWxsZWx3b3JrZXIuYworICogICAgIFN1cHBvcnQgcm91dGluZXMgZm9yIGFwcGx5 aW5nIHhhY3QgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisgKgorICogQ29weXJpZ2h0IChjKSAy MDE2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURF TlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMKKyAqCisgKiBUaGlzIGZpbGUgY29udGFpbnMgcm91dGluZXMgdGhhdCBh cmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBzZXR0aW5nIHVwLCB1c2luZywKKyAqIGFuZCB0ZWFyaW5n IGRvd24gYSBQYXJhbGxlbEFwcGx5V29ya2VySW5mby4KKyAqCisgKiBSZWZlciB0byB0aGUgY29t bWVudHMgaW4gdGhlIGZpbGUgaGVhZGVyIG9mIGxvZ2ljYWwvd29ya2VyLmMgdG8gc2VlIG1vcmUK KyAqIGluZm9ybWF0aW9uIGFib3V0IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgorICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJs aWJwcS9wcWZvcm1hdC5oIgorI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKKyNpbmNsdWRlICJtYi9w Z193Y2hhci5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50 ZXJydXB0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgiCisjaW5j bHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L29yaWdpbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInRjb3AvdGNvcHBy b3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxz LmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNo ZS5oIgorCisjZGVmaW5lIFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDIDB4Nzg3Y2EwNjcKKwor LyoKKyAqIERTTSBrZXlzIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICBVbmxpa2Ugb3RoZXIg cGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5 IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4g dXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFS RUQJCTEKKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX01RCQkJMgorI2RlZmluZSBQQVJBTExF TF9BUFBMWV9LRVlfRVJST1JfUVVFVUUJMworCisvKiBRdWV1ZSBzaXplIG9mIERTTSwgMTYgTUIg Zm9yIG5vdy4gKi8KKyNkZWZpbmUgRFNNX1FVRVVFX1NJWkUJKDE2ICogMTAyNCAqIDEwMjQpCisK Ky8qCisgKiBFcnJvciBxdWV1ZSBzaXplIG9mIERTTS4gSXQgaXMgZGVzaXJhYmxlIHRvIG1ha2Ug aXQgbGFyZ2UgZW5vdWdoIHRoYXQgYQorICogdHlwaWNhbCBFcnJvclJlc3BvbnNlIGNhbiBiZSBz ZW50IHdpdGhvdXQgYmxvY2tpbmcuICBUaGF0IHdheSwgYSB3b3JrZXIgdGhhdAorICogZXJyb3Jz IG91dCBjYW4gd3JpdGUgdGhlIHdob2xlIG1lc3NhZ2UgaW50byB0aGUgcXVldWUgYW5kIHRlcm1p bmF0ZSB3aXRob3V0CisgKiB3YWl0aW5nIGZvciB0aGUgdXNlciBiYWNrZW5kLgorICovCisjZGVm aW5lIERTTV9FUlJPUl9RVUVVRV9TSVpFCQkJKDE2ICogMTAyNCkKKworLyoKKyAqIFRoZXJlIGFy ZSB0aHJlZSBmaWVsZHMgaW4gZWFjaCBtZXNzYWdlIHJlY2VpdmVkIGJ5IHRoZSBwYXJhbGxlbCBh cHBseQorICogd29ya2VyOiBzdGFydF9sc24sIGVuZF9sc24gYW5kIHNlbmRfdGltZS4gQmVjYXVz ZSB3ZSBoYXZlIHVwZGF0ZWQgdGhlc2UKKyAqIHN0YXRpc3RpY3MgaW4gdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIsIHdlIGNhbiBpZ25vcmUgdGhlc2UgZmllbGRzIGluIHRoZQorICogcGFyYWxsZWwg YXBwbHkgd29ya2VyIChzZWUgZnVuY3Rpb24gTG9naWNhbFJlcEFwcGx5TG9vcCkuCisgKi8KKyNk ZWZpbmUgU0laRV9TVEFUU19NRVNTQUdFICgyICogc2l6ZW9mKFhMb2dSZWNQdHIpICsgc2l6ZW9m KFRpbWVzdGFtcFR6KSkKKworLyoKKyAqIEhhc2ggdGFibGUgZW50cnkgdG8gbWFwIHhpZCB0byB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlLgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJh bGxlbEFwcGx5V29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsJCQkvKiBIYXNoIGtl eSAtLSBtdXN0IGJlIGZpcnN0ICovCisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwor fSBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnk7CisKKy8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg aGFzaCB0YWJsZSAoaW5pdGlhbGl6ZWQgb24gZmlyc3QgdXNlKS4gKi8KK3N0YXRpYyBIVEFCICpQ YXJhbGxlbEFwcGx5V29ya2Vyc0hhc2ggPSBOVUxMOworCisvKgorICogQSBsaXN0IHRvIG1haW50 YWluIHRoZSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gVGhlIGluZm9ybWF0aW9uIGZv cgorICogdGhlIG5ldyB3b3JrZXIgaXMgYWRkZWQgdG8gdGhlIGxpc3QgYWZ0ZXIgc3VjY2Vzc2Z1 bGx5IGxhdW5jaGluZyBpdC4gVGhlCisgKiBsaXN0IGVudHJ5IGlzIHJlbW92ZWQgYXQgdGhlIGVu ZCBvZiB0aGUgdHJhbnNhY3Rpb24gaWYgdGhlcmUgYXJlIGFscmVhZHkKKyAqIGVub3VnaCB3b3Jr ZXJzIGluIHRoZSB3b3JrZXIgcG9vbC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdv cmtlcgorICogcG9vbCwgc2VlIGNvbW1lbnRzIGF0b3Agd29ya2VyLmMuIFdlIGFsc28gcmVtb3Zl IHRoZSBlbnRyeSBmcm9tIHRoZSBsaXN0IGlmCisgKiB0aGUgd29ya2VyIGlzIGV4aXRlZCBkdWUg dG8gc29tZSBlcnJvci4KKyAqLworc3RhdGljIExpc3QgKlBhcmFsbGVsQXBwbHlXb3JrZXJzTGlz dCA9IE5JTDsKKworLyoKKyAqIEluZm9ybWF0aW9uIHNoYXJlZCBiZXR3ZWVuIGxlYWRlciBhcHBs eSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworUGFyYWxsZWxBcHBseVdv cmtlclNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZCA9IE5VTEw7CisKKy8qCisgKiBJcyB0aGVyZSBh IG1lc3NhZ2UgcGVuZGluZyBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hpY2ggd2UgbmVlZCB0 bworICogcmVjZWl2ZT8KKyAqLwordm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlN ZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCisvKgorICogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgYXBwbHlpbmcgdGhlCisgKiBjdXJyZW50 IHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gSXQgaXMgdXNlZCB0byBzYXZlIHRoZSBjb3N0IG9mIHNl YXJjaGluZyB0aGUKKyAqIGhhc2ggdGFibGUgd2hlbiBhcHBseWluZyB0aGUgY2hhbmdlcyBiZXR3 ZWVuIFNUUkVBTV9TVEFSVCBhbmQgU1RSRUFNX1NUT1AuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICpzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKKworLyogQSBsaXN0IHRvIG1haW50 YWluIHN1YnRyYW5zYWN0aW9ucywgaWYgYW55LiAqLworTGlzdAkgICAqc3VieGFjdGxpc3QgPSBO SUw7CisKK3N0YXRpYyBib29sIHBhcmFsbGVsX2FwcGx5X2Nhbl9zdGFydChUcmFuc2FjdGlvbklk IHhpZCk7CitzdGF0aWMgYm9vbCBwYXJhbGxlbF9hcHBseV9zZXR1cF9kc20oUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvKTsKK3N0YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqcGFy YWxsZWxfYXBwbHlfc2V0dXBfd29ya2VyKHZvaWQpOworc3RhdGljIGJvb2wgcGFyYWxsZWxfYXBw bHlfZ2V0X2luX3hhY3QoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7CitzdGF0 aWMgdm9pZCBwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbyk7CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgaXQgaXMgT0sgdG8gc3Rh cnQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIGZhbHNlIG90aGVyd2lzZS4KKyAqLworc3RhdGlj IGJvb2wKK3BhcmFsbGVsX2FwcGx5X2Nhbl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlp ZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJ ICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIHRoZSBzdWJzY3Jp cHRpb24gaXMgbm90IHVzaW5nCisJICogcGFyYWxsZWwgc3RyZWFtaW5nIG1vZGUsIG9yIGlmIHRo ZSBwdWJsaXNoZXIgZG9lcyBub3Qgc3VwcG9ydCBwYXJhbGxlbAorCSAqIGFwcGx5LgorCSAqLwor CWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSkKKwkJcmV0dXJuIGZhbHNl OworCisJLyogT25seSBsZWFkZXIgYXBwbHkgd29ya2VycyBjYW4gc3RhcnQgcGFyYWxsZWwgYXBw bHkgd29ya2Vycy4gKi8KKwlpZiAoIWFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJu IGZhbHNlOworCisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJhbGxlbCB3b3JrZXIgaWYg dXNlciBoYXMgc2V0IHNraXBsc24gYXMgaXQncworCSAqIHBvc3NpYmxlIHRoYXQgdXNlciB3YW50 IHRvIHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yCisJICogc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB3ZSBuZWVkIHRvIHNwaWxsIHRoZSB0cmFuc2FjdGlvbiB0byBkaXNrIHNvIHRo YXQKKwkgKiB3ZSBjYW4gZ2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVk Z2Ugd2hldGhlciB0byBza2lwCisJICogYmVmb3JlIHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFu Z2UuCisJICovCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lw bHNuKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0 aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwKKwkgKiBhcHBseSB3 b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBh CisJICogcmVsYXRpb24gdGhhdCBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUKKwkgKiBz aG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKSBhcyB3ZSB3b24ndCBrbm93IHJlbW90ZV9maW5h bF9sc24gYnkgdGhhdAorCSAqIHRpbWUuIFNvLCB3ZSBkb24ndCBzdGFydCB0aGUgbmV3IHBhcmFs bGVsIGFwcGx5IHdvcmtlciBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNz UmVhZHkoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBT dGFydCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNw ZWNpZmllZCB4aWQuCisgKgorICogSWYgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgZm91bmQg YnV0IG5vdCBpbiB1c2UgdGhlbiByZS11c2UgaXQsIG90aGVyd2lzZQorICogc3RhcnQgYSBmcmVz aCBvbmUuIENhY2hlIHRoZSB3b3JrZXIgaW5mb3JtYXRpb24gaW4gUGFyYWxsZWxBcHBseVdvcmtl cnNIYXNoCisgKiBrZXllZCBieSB0aGUgc3BlY2lmaWVkIHhpZC4KKyAqLwordm9pZAorcGFyYWxs ZWxfYXBwbHlfc3RhcnRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5k OworCUxpc3RDZWxsICAgKmxjOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5V TEw7CisJUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5ICplbnRyeTsKKworCWlmICghcGFyYWxsZWxf YXBwbHlfY2FuX3N0YXJ0KHhpZCkpCisJCXJldHVybjsKKworCS8qIEZpcnN0IHRpbWUgdGhyb3Vn aCwgaW5pdGlhbGl6ZSBhcHBseSB3b3JrZXJzIGhhc2h0YWJsZS4gKi8KKwlpZiAoUGFyYWxsZWxB cHBseVdvcmtlcnNIYXNoID09IE5VTEwpCisJeworCQlIQVNIQ1RMCQljdGw7CisKKwkJTWVtU2V0 KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwkJY3RsLmtleXNpemUgPSBzaXplb2YoVHJhbnNhY3Rp b25JZCk7CisJCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5 KTsKKwkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7CisKKwkJUGFyYWxsZWxBcHBseVdvcmtlcnNI YXNoID0gaGFzaF9jcmVhdGUoImxvZ2ljYWwgYXBwbHkgd29ya2VycyBoYXNoIiwKKwkJCQkJCQkJ CQkJICAgMTYsICZjdGwsCisJCQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBI QVNIX0NPTlRFWFQpOworCX0KKworCS8qIFRyeSB0byBnZXQgYSBmcmVlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlci4gKi8KKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QpCisJewor CQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqdG1wX3dpbmZvOworCisJCXRtcF93aW5mbyA9IChQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCWlmICghdG1wX3dpbmZv LT5pbl91c2UpCisJCXsKKwkJCS8qIEZvdW5kIGEgd29ya2VyIHRoYXQgaGFzIG5vdCBiZWVuIGFz c2lnbmVkIGEgdHJhbnNhY3Rpb24uICovCisJCQl3aW5mbyA9IHRtcF93aW5mbzsKKwkJCWJyZWFr OworCQl9CisJfQorCisJaWYgKHdpbmZvID09IE5VTEwpCisJeworCQkvKiBUcnkgdG8gc3RhcnQg YSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQl3aW5mbyA9IHBhcmFsbGVsX2FwcGx5 X3NldHVwX3dvcmtlcigpOworCisJCWlmICh3aW5mbyA9PSBOVUxMKQorCQkJcmV0dXJuOworCX0K KworCS8qIENyZWF0ZSBlbnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5 ID0gaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0VOVEVS LCAmZm91bmQpOworCWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVw dGVkIik7CisKKwkvKgorCSAqIFNldCB0aGUgaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCBmbGFnIGlu IHRoZSBsZWFkZXIgaW5zdGVhZCBvZiB0aGUKKwkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8g YXZvaWQgdGhlIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBsZWFkZXIgaGFzCisJICogYWxyZWFk eSBzdGFydGVkIHdhaXRpbmcgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gZmluaXNo CisJICogcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gd2hpbGUgdGhlIGNoaWxkIHByb2Nlc3Mg aGFzIG5vdCB5ZXQKKwkgKiBwcm9jZXNzZWQgdGhlIGZpcnN0IFNUUkVBTV9TVEFSVCBhbmQgaGFz IG5vdCBzZXQgdGhlCisJICogaW5fcGFyYWxsZWxfYXBwbHlfeGFjdCB0byB0cnVlLgorCSAqLwor CXBhcmFsbGVsX2FwcGx5X3NldF9pbl94YWN0KHdpbmZvLT5zaGFyZWQsIHRydWUpOworCisJd2lu Zm8tPmluX3VzZSA9IHRydWU7CisJZW50cnktPndpbmZvID0gd2luZm87CisJZW50cnktPnhpZCA9 IHhpZDsKK30KKworLyoKKyAqIEZpbmQgdGhlIGFzc2lnbmVkIHdvcmtlciBmb3IgdGhlIGdpdmVu IHRyYW5zYWN0aW9uLCBpZiBhbnkuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoKK3Bh cmFsbGVsX2FwcGx5X2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZv dW5kOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAoIVRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKFBhcmFsbGVsQXBwbHlX b3JrZXJzSGFzaCA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJldHVybiB0aGUgY2Fj aGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAoc3RyZWFtX2FwcGx5 X3dvcmtlciAhPSBOVUxMKQorCQlyZXR1cm4gc3RyZWFtX2FwcGx5X3dvcmtlcjsKKworCS8qCisJ ICogRmluZCBlbnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLworCWVudHJ5ID0g aGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZm b3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJQXNzZXJ0KHBhcmFsbGVsX2FwcGx5X2dldF9pbl94 YWN0KGVudHJ5LT53aW5mby0+c2hhcmVkKSk7CisJCUFzc2VydChlbnRyeS0+d2luZm8tPmluX3Vz ZSk7CisKKwkJcmV0dXJuIGVudHJ5LT53aW5mbzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKwor LyoKKyAqIFJlbW92ZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGVudHJ5IGZyb20gdGhlIGhh c2ggdGFibGUuIFN0b3AgdGhlIHdvcmtlcgorICogaWYgdGhlcmUgYXJlIGVub3VnaCB3b3JrZXJz IGluIHRoZSBwb29sLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAqIHdvcmtlciBw b29sLCBzZWUgY29tbWVudHMgYXRvcCB3b3JrZXIuYy4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBw bHlfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBUcmFuc2FjdGlv bklkIHhpZCkKK3sKKwlpbnQJCQluYXBwbHl3b3JrZXJzOworCisJQXNzZXJ0KCFhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSk7CisJQXNzZXJ0KCFwYXJhbGxlbF9hcHBseV9nZXRfaW5feGFjdCh3 aW5mby0+c2hhcmVkKSk7CisKKwlpZiAoIWhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlXb3JrZXJz SGFzaCwgJnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwpKQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJs ZSBjb3JydXB0ZWQiKTsKKworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExX X1NIQVJFRCk7CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFyYWxsZWxfYXBwbHlfd29y a2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOworCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOworCisJd2luZm8tPmluX3VzZSA9IGZhbHNlOworCisJLyogQXJl IHRoZXJlIGVub3VnaCB3b3JrZXJzIGluIHRoZSBwb29sPyAqLworCWlmIChuYXBwbHl3b3JrZXJz ID4gKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyKSkKKwl7 CisJCWludAkJc2xvdF9ubzsKKwkJdWludDE2CWdlbmVyYXRpb247CisKKwkJLyoKKwkJICogRGV0 YWNoIHRoZSBlcnJvciBxdWV1ZSBiZWZvcmUgdGVybWluYXRpbmcgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcgorCQkgKiB0byBwcmV2ZW50IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGZyb20gcmVj ZWl2aW5nIHRoZSB3b3JrZXIKKwkJICogdGVybWluYXRpb24gbWVzc2FnZSB3aGljaCB3aWxsIGNh dXNlIHRoZSBsZWFkZXIgdG8gZXhpdC4KKwkJICovCisJCXNobV9tcV9kZXRhY2god2luZm8tPmVy cm9yX21xX2hhbmRsZSk7CisJCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBOVUxMOworCisJCVNw aW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCQlzbG90X25vID0gd2luZm8t PnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKKwkJZ2VuZXJhdGlvbiA9IHdpbmZv LT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisJCVNwaW5Mb2NrUmVsZWFz ZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfYnlf c2xvdChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCQlQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3Qg PSBsaXN0X2RlbGV0ZV9wdHIoUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0LAorCQkJCQkJCQkJCQkJ ICAgd2luZm8pOworCisJCXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyX2luZm8od2luZm8pOwor CX0KK30KKworLyogRnJlZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uLiAq Lworc3RhdGljIHZvaWQKK3BhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvKQoreworCUFzc2VydCh3aW5mbyk7CisKKwlpZiAod2luZm8t Pm1xX2hhbmRsZSAhPSBOVUxMKQorCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5tcV9oYW5kbGUpOwor CisJaWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgIT0gTlVMTCkKKwkJc2htX21xX2RldGFjaCh3 aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKworCWlmICh3aW5mby0+ZHNtX3NlZyAhPSBOVUxMKQor CQlkc21fZGV0YWNoKHdpbmZvLT5kc21fc2VnKTsKKworCXBmcmVlKHdpbmZvKTsKK30KKworLyog UGFyYWxsZWwgYXBwbHkgd29ya2VyIG1haW4gbG9vcC4gKi8KK3N0YXRpYyB2b2lkCitMb2dpY2Fs UGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQoreworCXNobV9tcV9yZXN1bHQg c2htcV9yZXM7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwkvKgorCSAq IEluaXQgdGhlIEFwcGx5TWVzc2FnZUNvbnRleHQgd2hpY2ggd2UgY2xlYW4gdXAgYWZ0ZXIgZWFj aCByZXBsaWNhdGlvbgorCSAqIHByb3RvY29sIG1lc3NhZ2UuCisJICovCisJQXBwbHlNZXNzYWdl Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJ CQkiQXBwbHlNZXNzYWdlQ29udGV4dCIsCisJCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJ WkVTKTsKKworCS8qCisJICogUHVzaCBhcHBseSBlcnJvciBjb250ZXh0IGNhbGxiYWNrLiBGaWVs ZHMgd2lsbCBiZSBmaWxsZWQgd2hpbGUgYXBwbHlpbmcKKwkgKiBhIGNoYW5nZS4KKwkgKi8KKwll cnJjYWxsYmFjay5jYWxsYmFjayA9IGFwcGx5X2Vycm9yX2NhbGxiYWNrOworCWVycmNhbGxiYWNr LnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0g JmVycmNhbGxiYWNrOworCisJZm9yICg7OykKKwl7CisJCXZvaWQJICAgKmRhdGE7CisJCVNpemUJ CWxlbjsKKwkJaW50CQkJYzsKKwkJaW50CQkJcmM7CisJCVN0cmluZ0luZm9EYXRhIHM7CisJCU1l bW9yeUNvbnRleHQgb2xkY3R4OworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJLyog RW5zdXJlIHdlIGFyZSByZWFkaW5nIHRoZSBkYXRhIGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAq LworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7 CisKKwkJc2htcV9yZXMgPSBzaG1fbXFfcmVjZWl2ZShtcWgsICZsZW4sICZkYXRhLCB0cnVlKTsK KworCQlpZiAoc2htcV9yZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJCWlmIChsZW4gPT0g MCkKKwkJCQlicmVhazsKKworCQkJcy5jdXJzb3IgPSAwOworCQkJcy5tYXhsZW4gPSAtMTsKKwkJ CXMuZGF0YSA9IChjaGFyICopIGRhdGE7CisJCQlzLmxlbiA9IGxlbjsKKworCQkJLyoKKwkJCSAq IFRoZSBmaXJzdCBieXRlIG9mIG1lc3NhZ2UgZm9yIGFkZGl0aW9uYWwgY29tbXVuaWNhdGlvbiBi ZXR3ZWVuCisJCQkgKiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzIGNhbiBvbmx5IGJlICd3Jy4KKwkJCSAqLworCQkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOwor CQkJaWYgKGMgIT0gJ3cnKQorCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIG1lc3NhZ2UgXCIl Y1wiIiwgYyk7CisKKwkJCS8qCisJCQkgKiBJZ25vcmUgc3RhdGlzdGljcyBmaWVsZHMgdGhhdCBo YXZlIGJlZW4gdXBkYXRlZCBieSB0aGUgbGVhZGVyCisJCQkgKiBhcHBseSB3b3JrZXIuCisJCQkg Ki8KKwkJCXMuY3Vyc29yICs9IFNJWkVfU1RBVFNfTUVTU0FHRTsKKworCQkJYXBwbHlfZGlzcGF0 Y2goJnMpOworCisJCQlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlNZXNzYWdlQ29udGV4dCk7CisJ CX0KKwkJZWxzZSBpZiAoc2htcV9yZXMgPT0gU0hNX01RX0RFVEFDSEVEKQorCQl7CisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIikpKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCUFzc2VydChzaG1xX3JlcyA9 PSBTSE1fTVFfV09VTERfQkxPQ0spOworCisJCQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KQorCQkJeworCQkJCS8qCisJCQkJICogSWYgd2UgZGlkbid0IGdldCBhbnkgdHJhbnNhY3Rpb25z IGZvciBhIHdoaWxlIHRoZXJlIG1pZ2h0IGJlCisJCQkJICogdW5jb25zdW1lZCBpbnZhbGlkYXRp b24gbWVzc2FnZXMgaW4gdGhlIHF1ZXVlLCBjb25zdW1lIHRoZW0KKwkJCQkgKiBub3cuCisJCQkJ ICovCisJCQkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwkJCQltYXliZV9yZXJlYWRf c3Vic2NyaXB0aW9uKCk7CisJCQl9CisKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgp OworCQkJTWVtb3J5Q29udGV4dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCQkvKiBX YWl0IGZvciBtb3JlIHdvcmsuICovCisJCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkJ ICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJ CQkgICAxMDAwTCwKKwkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9N QUlOKTsKKworCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJeworCQkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJCX0KKworCQkJaWYgKENv bmZpZ1JlbG9hZFBlbmRpbmcpCisJCQl7CisJCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNl OworCQkJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCQkJfQorCQl9CisJfQorCisJ LyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrLiAqLworCWVycm9yX2NvbnRleHRfc3RhY2sg PSBlcnJjYWxsYmFjay5wcmV2aW91czsKK30KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciB0cmllcyB0byByZWFkIGZyb20gb3VyIGVycm9yIHF1ZXVlIG9uZSBtb3Jl CisgKiB0aW1lLiBUaGlzIGd1YXJkcyBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJlIHdlIGV4aXQgdW5j bGVhbmx5IHdpdGhvdXQgc2VuZGluZworICogYW4gRXJyb3JSZXNwb25zZSwgZm9yIGV4YW1wbGUg YmVjYXVzZSBzb21lIGNvZGUgY2FsbHMgcHJvY19leGl0IGRpcmVjdGx5LgorICovCitzdGF0aWMg dm9pZAorcGFyYWxsZWxfYXBwbHlfc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKK3sKKwlT ZW5kUHJvY1NpZ25hbChNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQsCisJCQkJ ICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAorCQkJCSAgIEludmFsaWRCYWNrZW5k SWQpOworCisJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQgKikgRGF0dW1HZXRQb2ludGVyKGFyZykp OworfQorCisvKgorICogUGFyYWxsZWwgYXBwbHkgd29ya2VyIGVudHJ5IHBvaW50LgorICovCit2 b2lkCitQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK3sKKwlQYXJhbGxl bEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJZHNtX2hhbmRsZQloYW5kbGU7CisJZHNtX3Nl Z21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJc2htX21xCSAgICptcTsKKwlzaG1fbXFf aGFuZGxlICptcWg7CisJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFoOworCWludAkJCXdvcmtlcl9z bG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFU QUxFTl07CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcuICovCisJcHFzaWduYWwoU0lHSFVQ LCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUp OworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJLyoKKwkgKiBBdHRhY2gg dG8gdGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGZvciB0aGUgcGFyYWxsZWwgYXBw bHksIGFuZAorCSAqIGZpbmQgaXRzIHRhYmxlIG9mIGNvbnRlbnRzLgorCSAqCisJICogTGlrZSBw YXJhbGxlbCBxdWVyeSwgd2UgZG9uJ3QgbmVlZCByZXNvdXJjZSBvd25lciBieSB0aGlzIHRpbWUu IFNlZQorCSAqIFBhcmFsbGVsV29ya2VyTWFpbi4KKwkgKi8KKwltZW1jcHkoJmhhbmRsZSwgTXlC Z3dvcmtlckVudHJ5LT5iZ3dfZXh0cmEsIHNpemVvZihkc21faGFuZGxlKSk7CisJc2VnID0gZHNt X2F0dGFjaChoYW5kbGUpOworCWlmIChzZWcgPT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJ CQkgZXJybXNnKCJ1bmFibGUgdG8gbWFwIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50Iikp KTsKKworCXRvYyA9IHNobV90b2NfYXR0YWNoKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDLCBk c21fc2VnbWVudF9hZGRyZXNzKHNlZykpOworCWlmICh0b2MgPT0gTlVMTCkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NU QVRFKSwKKwkJCQkgZXJybXNnKCJiYWQgbWFnaWMgbnVtYmVyIGluIGR5bmFtaWMgc2hhcmVkIG1l bW9yeSBzZWdtZW50IikpKTsKKworCWJlZm9yZV9zaG1lbV9leGl0KHBhcmFsbGVsX2FwcGx5X3No dXRkb3duLCBQb2ludGVyR2V0RGF0dW0oc2VnKSk7CisKKwkvKiBMb29rIHVwIHRoZSBzaGFyZWQg aW5mb3JtYXRpb24uICovCisJc2hhcmVkID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9B UFBMWV9LRVlfU0hBUkVELCBmYWxzZSk7CisJTXlQYXJhbGxlbFNoYXJlZCA9IHNoYXJlZDsKKwor CS8qCisJICogQXR0YWNoIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3Rv Y19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIGZhbHNlKTsKKwlzaG1fbXFfc2V0 X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCW1xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVM TCk7CisKKwkvKgorCSAqIFByaW1hcnkgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUuIE5vdywg d2UgY2FuIGF0dGFjaCB0byBvdXIgc2xvdC4KKwkgKiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRo ZSBsZWFkZXIgYXBwbHkgd29ya2VyIGRvZXMgbm90IHdyaXRlIGRhdGEgdG8KKwkgKiB0aGUgdW5p bml0aWFsaXplZCBtZW1vcnkgcXVldWUuCisJICovCisJbG9naWNhbHJlcF93b3JrZXJfYXR0YWNo KHdvcmtlcl9zbG90KTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0 ZXgpOworCU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb24gPSBN eUxvZ2ljYWxSZXBXb3JrZXItPmdlbmVyYXRpb247CisJTXlQYXJhbGxlbFNoYXJlZC0+bG9naWNh bHJlcF93b3JrZXJfc2xvdF9ubyA9IHdvcmtlcl9zbG90OworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQ YXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIGVycm9yIHF1 ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlf RVJST1JfUVVFVUUsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKwll cnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJcHFfcmVkaXJlY3Rf dG9fc2htX21xKHNlZywgZXJyb3JfbXFoKTsKKwlwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKE15TG9n aWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkJCSAgIEludmFsaWRCYWNrZW5k SWQpOworCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJl cFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3Rp bWUgPSAwOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CisKKwkvKgorCSAqIFNldHVwIGNh bGxiYWNrIGZvciBzeXNjYWNoZSBzbyB0aGF0IHdlIGtub3cgd2hlbiBzb21ldGhpbmcgY2hhbmdl cyBpbgorCSAqIHRoZSBzdWJzY3JpcHRpb24gcmVsYXRpb24gc3RhdGUuCisJICovCisJQ2FjaGVS ZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBUSU9OUkVMTUFQLAorCQkJCQkJCQkgIGlu dmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwor CS8qCisJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGEgbG9uZy1saXZlZCBjb250ZXh0 IGZvciBlcnJvciBjb250ZXh0CisJICogbWVzc2FnZS4KKwkgKi8KKwlSZXBsaWNhdGlvbk9yaWdp bk5hbWVGb3JMb2dpY2FsUmVwKE15U3Vic2NyaXB0aW9uLT5vaWQsIEludmFsaWRPaWQsCisJCQkJ CQkJCQkgICBvcmlnaW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSkpOworCWFwcGx5X2Vycm9yX2Nh bGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlDb250ZXh0 LAorCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisKKwlMb2dpY2FsUGFyYWxsZWxBcHBs eUxvb3AobXFoKTsKKworCXByb2NfZXhpdCgwKTsKK30KKworLyoKKyAqIEhhbmRsZSByZWNlaXB0 IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG1lc3Nh Z2UuCisgKgorICogTm90ZTogdGhpcyBpcyBjYWxsZWQgd2l0aGluIGEgc2lnbmFsIGhhbmRsZXIh ICBBbGwgd2UgY2FuIGRvIGlzIHNldCBhIGZsYWcKKyAqIHRoYXQgd2lsbCBjYXVzZSB0aGUgbmV4 dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIGludm9rZQorICogSGFuZGxlUGFyYWxsZWxBcHBs eU1lc3NhZ2VzKCkuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJy dXB0KHZvaWQpCit7CisJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJUGFyYWxsZWxBcHBseU1l c3NhZ2VQZW5kaW5nID0gdHJ1ZTsKKwlTZXRMYXRjaChNeUxhdGNoKTsKK30KKworLyoKKyAqIEhh bmRsZSBhIHNpbmdsZSBwcm90b2NvbCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gYSBzaW5nbGUgcGFy YWxsZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK0hhbmRsZVBhcmFsbGVs QXBwbHlNZXNzYWdlKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU3RyaW5nSW5mbyBt c2cpCit7CisJY2hhcgkJbXNndHlwZTsKKworCW1zZ3R5cGUgPSBwcV9nZXRtc2dieXRlKG1zZyk7 CisKKwlzd2l0Y2ggKG1zZ3R5cGUpCisJeworCQljYXNlICdFJzoJCQkJLyogRXJyb3JSZXNwb25z ZSAqLworCQkJeworCQkJCUVycm9yRGF0YQllZGF0YTsKKwkJCQlFcnJvckNvbnRleHRDYWxsYmFj ayAqc2F2ZV9lcnJvcl9jb250ZXh0X3N0YWNrOworCisJCQkJLyogUGFyc2UgRXJyb3JSZXNwb25z ZS4gKi8KKwkJCQlwcV9wYXJzZV9lcnJvcm5vdGljZShtc2csICZlZGF0YSk7CisKKwkJCQkvKiBE ZWF0aCBvZiBhIHdvcmtlciBpc24ndCBlbm91Z2gganVzdGlmaWNhdGlvbiBmb3Igc3VpY2lkZS4g Ki8KKwkJCQllZGF0YS5lbGV2ZWwgPSBNaW4oZWRhdGEuZWxldmVsLCBFUlJPUik7CisKKwkJCQkv KgorCQkJCSAqIElmIGRlc2lyZWQsIGFkZCBhIGNvbnRleHQgbGluZSB0byBzaG93IHRoYXQgdGhp cyBpcyBhCisJCQkJICogbWVzc2FnZSBwcm9wYWdhdGVkIGZyb20gYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuIE90aGVyd2lzZSwKKwkJCQkgKiBpdCBjYW4gc29tZXRpbWVzIGJlIGNvbmZ1c2luZyB0 byB1bmRlcnN0YW5kIHdoYXQgYWN0dWFsbHkKKwkJCQkgKiBoYXBwZW5lZC4KKwkJCQkgKi8KKwkJ CQlpZiAoZWRhdGEuY29udGV4dCkKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzcHJpbnRmKCIlc1xu JXMiLCBlZGF0YS5jb250ZXh0LAorCQkJCQkJCQkJCQkgXygicGFyYWxsZWwgYXBwbHkgd29ya2Vy IikpOworCQkJCWVsc2UKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzdHJkdXAoXygicGFyYWxsZWwg YXBwbHkgd29ya2VyIikpOworCisJCQkJLyoKKwkJCQkgKiBDb250ZXh0IGJleW9uZCB0aGF0IHNo b3VsZCB1c2UgdGhlIGVycm9yIGNvbnRleHQgY2FsbGJhY2tzCisJCQkJICogdGhhdCB3ZXJlIGlu IGVmZmVjdCBpbiBMb2dpY2FsUmVwQXBwbHlMb29wKCkuCisJCQkJICovCisJCQkJc2F2ZV9lcnJv cl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwkJCQllcnJvcl9jb250ZXh0 X3N0YWNrID0gYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsKKworCQkJCVRocm93RXJyb3JEYXRh KCZlZGF0YSk7CisKKwkJCQkvKiBTaG91bGQgbm90IHJlYWNoIGhlcmUgYWZ0ZXIgcmV0aHJvd2lu ZyBhbiBlcnJvci4gKi8KKwkJCQllcnJvcl9jb250ZXh0X3N0YWNrID0gc2F2ZV9lcnJvcl9jb250 ZXh0X3N0YWNrOworCisJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBEb24ndCBuZWVk IHRvIGRvIGFueXRoaW5nIGFib3V0IE5vdGljZVJlc3BvbnNlIGFuZAorCQkJICogTm90aWZ5UmVz cG9uc2UgYXMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGRvZXNuJ3QgbmVlZAorCQkJ ICogdG8gc2VuZCBtZXNzYWdlcyB0byB0aGUgY2xpZW50LgorCQkJICovCisJCWNhc2UgJ04nOgor CQljYXNlICdBJzoKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgbWVzc2FnZSB0eXBlIHJlY2VpdmVkIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2Vy OiAlYyAobWVzc2FnZSBsZW5ndGggJWQgYnl0ZXMpIiwKKwkJCQkJIG1zZ3R5cGUsIG1zZy0+bGVu KTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgYW55IHF1ZXVlZCBwcm90b2NvbCBtZXNzYWdlcyBy ZWNlaXZlZCBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8KK3ZvaWQKK0hhbmRsZVBh cmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQoreworCUxpc3RDZWxsICAgKmxjOworCU1lbW9yeUNv bnRleHQgb2xkY29udGV4dDsKKworCXN0YXRpYyBNZW1vcnlDb250ZXh0IGhwYW1fY29udGV4dCA9 IE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaXMgaW52b2tlZCBmcm9tIFByb2Nlc3NJbnRlcnJ1cHRz KCksIGFuZCBzaW5jZSBzb21lIG9mIHRoZQorCSAqIGZ1bmN0aW9ucyBpdCBjYWxscyBjb250YWlu IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIHRoZXJlIGlzIGEgcG90ZW50aWFsCisJICogZm9yIHJl Y3Vyc2l2ZSBjYWxscyBpZiBtb3JlIHNpZ25hbHMgYXJlIHJlY2VpdmVkIHdoaWxlIHRoaXMgcnVu cy4gIEl0J3MKKwkgKiB1bmNsZWFyIHRoYXQgcmVjdXJzaXZlIGVudHJ5IHdvdWxkIGJlIHNhZmUs IGFuZCBpdCBkb2Vzbid0IHNlZW0gdXNlZnVsCisJICogZXZlbiBpZiBpdCBpcyBzYWZlLCBzbyBs ZXQncyBibG9jayBpbnRlcnJ1cHRzIHVudGlsIGRvbmUuCisJICovCisJSE9MRF9JTlRFUlJVUFRT KCk7CisKKwkvKgorCSAqIE1vcmVvdmVyLCBDdXJyZW50TWVtb3J5Q29udGV4dCBtaWdodCBiZSBw b2ludGluZyBhbG1vc3QgYW55d2hlcmUuICBXZQorCSAqIGRvbid0IHdhbnQgdG8gcmlzayBsZWFr aW5nIGRhdGEgaW50byBsb25nLWxpdmVkIGNvbnRleHRzLCBzbyBsZXQncyBkbworCSAqIG91ciB3 b3JrIGhlcmUgaW4gYSBwcml2YXRlIGNvbnRleHQgdGhhdCB3ZSBjYW4gcmVzZXQgb24gZWFjaCB1 c2UuCisJICovCisJaWYgKGhwYW1fY29udGV4dCA9PSBOVUxMKQkvKiBmaXJzdCB0aW1lIHRocm91 Z2g/ICovCisJCWhwYW1fY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlD b250ZXh0LAorCQkJCQkJCQkJCQkiSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzIiwKKwkJCQkJ CQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJZWxzZQorCQlNZW1vcnlDb250ZXh0UmVz ZXQoaHBhbV9jb250ZXh0KTsKKworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o aHBhbV9jb250ZXh0KTsKKworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNlOwor CisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJc2htX21xX3Jl c3VsdCByZXM7CisJCVNpemUJCW5ieXRlczsKKwkJdm9pZAkgICAqZGF0YTsKKwkJUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJz dChsYyk7CisKKwkJcmVzID0gc2htX21xX3JlY2VpdmUod2luZm8tPmVycm9yX21xX2hhbmRsZSwg Jm5ieXRlcywgJmRhdGEsIHRydWUpOworCisJCWlmIChyZXMgPT0gU0hNX01RX1dPVUxEX0JMT0NL KQorCQkJYnJlYWs7CisJCWVsc2UgaWYgKHJlcyA9PSBTSE1fTVFfU1VDQ0VTUykKKwkJeworCQkJ U3RyaW5nSW5mb0RhdGEgbXNnOworCisJCQlpbml0U3RyaW5nSW5mbygmbXNnKTsKKwkJCWFwcGVu ZEJpbmFyeVN0cmluZ0luZm8oJm1zZywgZGF0YSwgbmJ5dGVzKTsKKwkJCUhhbmRsZVBhcmFsbGVs QXBwbHlNZXNzYWdlKHdpbmZvLCAmbXNnKTsKKwkJCXBmcmVlKG1zZy5kYXRhKTsKKwkJfQorCQll bHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRv IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSkpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qIE1pZ2h0IGFzIHdlbGwgY2xlYXIgdGhlIGNvbnRleHQg b24gb3VyIHdheSBvdXQgKi8KKwlNZW1vcnlDb250ZXh0UmVzZXQoaHBhbV9jb250ZXh0KTsKKwor CVJFU1VNRV9JTlRFUlJVUFRTKCk7Cit9CisKKy8qCisgKiBTZXQgdXAgYSBkeW5hbWljIHNoYXJl ZCBtZW1vcnkgc2VnbWVudC4KKyAqCisgKiBXZSBzZXQgdXAgYSBjb250cm9sIHJlZ2lvbiB0aGF0 IGNvbnRhaW5zIGEgZml4ZWQtc2l6ZSB3b3JrZXIgaW5mbworICogKFBhcmFsbGVsQXBwbHlXb3Jr ZXJTaGFyZWQpLCBhIG1lc3NhZ2UgcXVldWUsIGFuZCBhbiBlcnJvciBxdWV1ZS4KKyAqCisgKiBS ZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGJv b2wKK3BhcmFsbGVsX2FwcGx5X3NldHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm8pCit7CisJc2htX3RvY19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdt ZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQg KnNoYXJlZDsKKwlzaG1fbXEJICAgKm1xOworCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVFVUVf U0laRTsKKwlTaXplCQllcnJvcl9xdWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7CisK KwkvKgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgor CSAqIEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGlu ZyBvZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1 bmsgc2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUg bG9jYXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHR3byBvdGhlcgorCSAqIGtleXMgdG8gdHJhY2sg dGhlIGxvY2F0aW9ucyBvZiB0aGUgbWVzc2FnZSBxdWV1ZSBhbmQgdGhlIGVycm9yIG1lc3NhZ2UK KwkgKiBxdWV1ZS4KKwkgKi8KKwlzaG1fdG9jX2luaXRpYWxpemVfZXN0aW1hdG9yKCZlKTsKKwlz aG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJl ZCkpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHF1ZXVlX3NpemUpOworCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJmUsIGVycm9yX3F1ZXVlX3NpemUpOworCisJc2htX3RvY19lc3RpbWF0 ZV9rZXlzKCZlLCAzKTsKKwlzZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBD cmVhdGUgdGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2Yg Y29udGVudHMuICovCisJc2VnID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7 CisJaWYgKHNlZyA9PSBOVUxMKQorCQlyZXR1cm4gZmFsc2U7CisKKwl0b2MgPSBzaG1fdG9jX2Ny ZWF0ZShQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcp LAorCQkJCQkJIHNlZ3NpemUpOworCisJLyogU2V0IHVwIHRoZSBoZWFkZXIgcmVnaW9uLiAqLwor CXNoYXJlZCA9IHNobV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtl clNoYXJlZCkpOworCVNwaW5Mb2NrSW5pdCgmc2hhcmVkLT5tdXRleCk7CisKKwlzaGFyZWQtPmlu X3BhcmFsbGVsX2FwcGx5X3hhY3QgPSBmYWxzZTsKKworCXNobV90b2NfaW5zZXJ0KHRvYywgUEFS QUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgc2hhcmVkKTsKKworCS8qIFNldCB1cCBtZXNzYWdlIHF1 ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9j YXRlKHRvYywgcXVldWVfc2l6ZSksIHF1ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywg UEFSQUxMRUxfQVBQTFlfS0VZX01RLCBtcSk7CisJc2htX21xX3NldF9zZW5kZXIobXEsIE15UHJv Yyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVlLiAqLworCXdpbmZvLT5tcV9oYW5kbGUgPSBzaG1f bXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogU2V0IHVwIGVycm9yIHF1ZXVlIGZvciB0 aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywg ZXJyb3JfcXVldWVfc2l6ZSksCisJCQkJCSAgIGVycm9yX3F1ZXVlX3NpemUpOworCXNobV90b2Nf aW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBtcSk7CisJc2htX21x X3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJ d2luZm8tPmVycm9yX21xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisK KwkvKiBSZXR1cm4gcmVzdWx0cyB0byBjYWxsZXIuICovCisJd2luZm8tPmRzbV9zZWcgPSBzZWc7 CisJd2luZm8tPnNoYXJlZCA9IHNoYXJlZDsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICog U3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHByb2Nlc3MgYW5kIGFsbG9jYXRlIHNoYXJlZCBt ZW1vcnkgZm9yIGl0LgorICovCitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFy YWxsZWxfYXBwbHlfc2V0dXBfd29ya2VyKHZvaWQpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250 ZXh0OworCWJvb2wJCWxhdW5jaGVkOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsK KworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwor CXdpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIHBhbGxvYzAoc2l6ZW9mKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvKSk7CisKKwkvKiBTZXR1cCBzaGFyZWQgbWVtb3J5LiAqLworCWlm ICghcGFyYWxsZWxfYXBwbHlfc2V0dXBfZHNtKHdpbmZvKSkKKwl7CisJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJcGZyZWUod2luZm8pOworCisJCXJldHVybiBOVUxMOwor CX0KKworCWxhdW5jaGVkID0gbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE15TG9naWNhbFJlcFdv cmtlci0+ZGJpZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCU15 U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlk LAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxlKHdp bmZvLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJeworCQlQYXJhbGxlbEFwcGx5V29y a2Vyc0xpc3QgPSBsYXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCwgd2luZm8pOworCX0K KwllbHNlCisJeworCQlwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKKwor CQl3aW5mbyA9IE5VTEw7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OworCisJcmV0dXJuIHdpbmZvOworfQorCisvKgorICogU2VuZCB0aGUgZGF0YSB0byB0aGUgc3Bl Y2lmaWVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB2aWEgc2hhcmVkLW1lbW9yeSBxdWV1ZS4KKyAq Lwordm9pZAorcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp3aW5mbywgU2l6ZSBuYnl0ZXMsCisJCQkJCQkgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlzaG1f bXFfcmVzdWx0IHJlc3VsdDsKKworCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdpbmZvLT5tcV9oYW5k bGUsIG5ieXRlcywgZGF0YSwgZmFsc2UsIHRydWUpOworCisJaWYgKHJlc3VsdCAhPSBTSE1fTVFf U1VDQ0VTUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBk YXRhIHRvIHNoYXJlZC1tZW1vcnkgcXVldWUiKSkpOworfQorCisvKgorICogV2FpdCB1bnRpbCB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHByb2Nlc3NlZCB0aGUgdHJhbnNhY3Rpb24gZmluaXNo IGNvbW1hbmQuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX3hhY3RfZmluaXNo KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlmb3IgKDs7KQorCXsKKwkJLyoK KwkJICogU3RvcCBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcyBwcm9jZXNzZWQgdGhl IHRyYW5zYWN0aW9uCisJCSAqIGZpbmlzaCBjb21tYW5kLgorCQkgKi8KKwkJaWYgKCFwYXJhbGxl bF9hcHBseV9nZXRfaW5feGFjdCh3aW5mby0+c2hhcmVkKSkKKwkJCWJyZWFrOworCisJCS8qIFdh aXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJ CQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJ CQkgMTAwMEwsCisJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRF X0NIQU5HRSk7CisKKwkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCisJ CVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3Vy cmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsK Kwl9Cit9CisKKy8qCisgKiBTZXQgdGhlIGluX3BhcmFsbGVsX2FwcGx5X3hhY3QgZmxhZyBmb3Ig dGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBw bHlfc2V0X2luX3hhY3QoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJ CSAgIGJvb2wgaW5feGFjdCkKK3sKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsK Kwl3c2hhcmVkLT5pbl9wYXJhbGxlbF9hcHBseV94YWN0ID0gaW5feGFjdDsKKwlTcGluTG9ja1Jl bGVhc2UoJndzaGFyZWQtPm11dGV4KTsKK30KKworLyoKKyAqIEdldCB0aGUgaW5fcGFyYWxsZWxf YXBwbHlfeGFjdCBmbGFnIGZvciB0aGUgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICov CitzdGF0aWMgYm9vbAorcGFyYWxsZWxfYXBwbHlfZ2V0X2luX3hhY3QoUGFyYWxsZWxBcHBseVdv cmtlclNoYXJlZCAqd3NoYXJlZCkKK3sKKwlib29sCQlpbl94YWN0OworCisJU3BpbkxvY2tBY3F1 aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJaW5feGFjdCA9IHdzaGFyZWQtPmluX3BhcmFsbGVsX2Fw cGx5X3hhY3Q7CisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7CisKKwlyZXR1cm4g aW5feGFjdDsKK30KKworLyoKKyAqIEZvcm0gdGhlIHNhdmVwb2ludCBuYW1lIGZvciB0aGUgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLgorICoKKyAqIFJldHVybiB0aGUgbmFtZSBpbiB0aGUgc3VwcGxp ZWQgYnVmZmVyLgorICovCitzdGF0aWMgdm9pZAorcGFyYWxsZWxfYXBwbHlfc2F2ZXBvaW50X25h bWUoT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJICBjaGFyICpzcG5hbWUs IFNpemUgc3pzcCkKK3sKKwlzbnByaW50ZihzcG5hbWUsIHN6c3AsICJwZ19zcF8ldV8ldSIsIHN1 Ym9pZCwgeGlkKTsKK30KKworLyoKKyAqIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0 IGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiBuZWVkZWQuCisgKgorICogVGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBjYW4gZmlndXJlIG91dCBpZiBhIG5ldyBzdWJ0cmFuc2FjdGlvbiB3YXMK KyAqIHN0YXJ0ZWQgYnkgY2hlY2tpbmcgaWYgdGhlIG5ldyBjaGFuZ2UgYXJyaXZlZCB3aXRoIGEg ZGlmZmVyZW50IHhpZC4gSW4gdGhhdAorICogY2FzZSBkZWZpbmUgYSBuYW1lZCBzYXZlcG9pbnQs IHNvIHRoYXQgd2UgYXJlIGFibGUgdG8gcm9sbGJhY2sgdG8gaXQKKyAqIGlmIHJlcXVpcmVkLgor ICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9zdGFydF9zdWJ0cmFucyhUcmFuc2FjdGlvbklkIGN1 cnJlbnRfeGlkLCBUcmFuc2FjdGlvbklkIHRvcF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlkICE9 IHRvcF94aWQgJiYKKwkJIWxpc3RfbWVtYmVyX3hpZChzdWJ4YWN0bGlzdCwgY3VycmVudF94aWQp KQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFUQUxF Tl07CisKKwkJcGFyYWxsZWxfYXBwbHlfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9p ZCwgY3VycmVudF94aWQsCisJCQkJCQkJCQkgIHNwbmFtZSwgc2l6ZW9mKHNwbmFtZSkpOworCisJ CWVsb2coREVCVUcxLCAiZGVmaW5pbmcgc2F2ZXBvaW50ICVzIGluIHBhcmFsbGVsIGFwcGx5IHdv cmtlciIsIHNwbmFtZSk7CisKKwkJLyogV2UgbXVzdCBiZSBpbiB0cmFuc2FjdGlvbiBibG9jayB0 byBkZWZpbmUgdGhlIFNBVkVQT0lOVC4gKi8KKwkJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkK KwkJeworCQkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsKKwkJfQorCisJCURlZmluZVNhdmVwb2ludChzcG5hbWUpOworCisJCS8qCisJCSAq IENvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCBpcyBuZWVkZWQgdG8gc3RhcnQgYSBzdWJ0cmFuc2Fj dGlvbiBhZnRlcgorCQkgKiBpc3N1aW5nIGEgU0FWRVBPSU5UIGluc2lkZSBhIHRyYW5zYWN0aW9u IGJsb2NrIChzZWUKKwkJICogU3RhcnRTdWJUcmFuc2FjdGlvbigpKS4KKwkJICovCisJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhBcHBseUNvbnRleHQpOworCQlzdWJ4YWN0bGlzdCA9IGxhcHBlbmRfeGlkKHN1YnhhY3RsaXN0 LCBjdXJyZW50X3hpZCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30K KworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlv biB3YXMgYXBwbGllZCBpbiBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQK K3BhcmFsbGVsX2FwcGx5X3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICph Ym9ydF9kYXRhKQoreworCVRyYW5zYWN0aW9uSWQgeGlkID0gYWJvcnRfZGF0YS0+eGlkOworCVRy YW5zYWN0aW9uSWQgc3VieGlkID0gYWJvcnRfZGF0YS0+c3VieGlkOworCisJLyoKKwkgKiBVcGRh dGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3Qg cG9zaXRpb24KKwkgKiBpbiBjYXNlIG9mIGNyYXNoLgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW5fbHNuID0gYWJvcnRfZGF0YS0+YWJvcnRfbHNuOworCXJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW5fdGltZXN0YW1wID0gYWJvcnRfZGF0YS0+YWJvcnRfdGltZTsKKworCS8qCisJICog SWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxl dmVsIHhhY3QsIHNvCisJICoganVzdCBmcmVlIHRoZSBzdWJ4YWN0bGlzdC4KKwkgKi8KKwlpZiAo c3VieGlkID09IHhpZCkKKwl7CisJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsK KworCQlBYm9ydEN1cnJlbnRUcmFuc2FjdGlvbigpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxv Y2soKSkKKwkJeworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCisJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVz ZXQoKTsKKworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCisJ CWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOworCX0KKwllbHNl CisJeworCQkvKgorCQkgKiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJvbGxiYWNrIHRvIHRoZSBz YXZlcG9pbnQuCisJCSAqCisJCSAqIFdlIGFsc28gbmVlZCB0byByZWFkIHRoZSBzdWJ4YWN0bGlz dCwgZGV0ZXJtaW5lIHRoZSBvZmZzZXQgdHJhY2tlZAorCQkgKiBmb3IgdGhlIHN1YnhhY3QsIGFu ZCB0cnVuY2F0ZSB0aGUgbGlzdC4KKwkJICovCisJCWludAkJCWk7CisJCWJvb2wJCWZvdW5kID0g ZmFsc2U7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFUQUxFTl07CisKKwkJcGFyYWxsZWxfYXBwbHlf c2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgc3VieGlkLCBzcG5hbWUsCisJCQkJ CQkJCQkgIHNpemVvZihzcG5hbWUpKTsKKworCQllbG9nKERFQlVHMSwgInJvbGxpbmcgYmFjayB0 byBzYXZlcG9pbnQgJXMgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQlm b3IgKGkgPSBsaXN0X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJewor CQkJVHJhbnNhY3Rpb25JZCB4aWRfdG1wID0gbGZpcnN0X3hpZChsaXN0X250aF9jZWxsKHN1Ynhh Y3RsaXN0LCBpKSk7CisKKwkJCWlmICh4aWRfdG1wID09IHN1YnhpZCkKKwkJCXsKKwkJCQlmb3Vu ZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlpZiAoZm91bmQpCisJCXsKKwkJ CVJvbGxiYWNrVG9TYXZlcG9pbnQoc3BuYW1lKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCQkJc3VieGFjdGxpc3QgPSBsaXN0X3RydW5jYXRlKHN1YnhhY3RsaXN0LCBpICsgMSk7 CisJCX0KKworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9O LCBOVUxMKTsKKwl9CisKKwlwYXJhbGxlbF9hcHBseV9zZXRfaW5feGFjdChNeVBhcmFsbGVsU2hh cmVkLCBmYWxzZSk7Cit9CisKKy8qIFNldHVwIHJlcGxpY2F0aW9uIG9yaWdpbiB0cmFja2luZy4g Ki8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAodm9pZCkKK3sKKwlSZXBP cmlnaW5JZCBvcmlnaW5pZDsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKwlib29s CQlzdGFydGVkX3R4ID0gZmFsc2U7CisKKwkvKiBUaGlzIGZ1bmN0aW9uIG1pZ2h0IGJlIGNhbGxl ZCBpbnNpZGUgb3Igb3V0c2lkZSBvZiB0cmFuc2FjdGlvbi4gKi8KKwlpZiAoIUlzVHJhbnNhY3Rp b25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90 eCA9IHRydWU7CisJfQorCisJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChNeVN1 YnNjcmlwdGlvbi0+b2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJICAgb3JpZ2lubmFtZSwgc2l6 ZW9mKG9yaWdpbm5hbWUpKTsKKwlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5u YW1lLCBmYWxzZSk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CisKKy8qIFJlc2V0IHJlcGxpY2F0aW9uIG9y aWdpbiB0cmFja2luZy4gKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQo dm9pZCkKK3sKKwlyZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKTsKKworCXJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW4gPSBJbnZhbGlkUmVwT3JpZ2luSWQ7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbl9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu X3RpbWVzdGFtcCA9IDA7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUu YwppbmRleCAyY2MwYWM5Li4zMDM1NTdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvZGVjb2RlLmMKQEAgLTY1Miw5ICs2NTIsMTAgQEAgRGVjb2RlQ29tbWl0KExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCXsKIAkJZm9yIChpID0g MDsgaSA8IHBhcnNlZC0+bnN1YnhhY3RzOyBpKyspCiAJCXsKLQkJCVJlb3JkZXJCdWZmZXJGb3Jn ZXQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLCBidWYtPm9yaWdwdHIpOworCQkJ UmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1 Zi0+b3JpZ3B0ciwKKwkJCQkJCQkJY29tbWl0X3RpbWUpOwogCQl9Ci0JCVJlb3JkZXJCdWZmZXJG b3JnZXQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0cik7CisJCVJlb3JkZXJCdWZmZXJG b3JnZXQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0ciwgY29tbWl0X3RpbWUpOwogCiAJ CXJldHVybjsKIAl9CkBAIC04MjIsMTAgKzgyMywxMSBAQCBEZWNvZGVBYm9ydChMb2dpY2FsRGVj b2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAkJZm9yIChpID0gMDsg aSA8IHBhcnNlZC0+bnN1YnhhY3RzOyBpKyspCiAJCXsKIAkJCVJlb3JkZXJCdWZmZXJBYm9ydChj dHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sCi0JCQkJCQkJICAgYnVmLT5yZWNvcmQt PkVuZFJlY1B0cik7CisJCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwgYWJvcnRfdGlt ZSk7CiAJCX0KIAotCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+ cmVjb3JkLT5FbmRSZWNQdHIpOworCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4 aWQsIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIsCisJCQkJCQkgICBhYm9ydF90aW1lKTsKIAl9CiAK IAkvKiB1cGRhdGUgdGhlIGRlY29kaW5nIHN0YXRzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggM2JiZDUyMi4uOGZkMmQ2ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtNTQsNiArNTQsNyBAQAogCiBp bnQJCQltYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNDsKIGludAkJCW1heF9zeW5j X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CitpbnQJCQltYXhfcGFyYWxsZWxfYXBwbHlf d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKIAogTG9naWNhbFJlcFdvcmtlciAqTXlMb2dp Y2FsUmVwV29ya2VyID0gTlVMTDsKIApAQCAtMTUxLDggKzE1MiwxMCBAQCBnZXRfc3Vic2NyaXB0 aW9uX2xpc3Qodm9pZCkKICAqCiAgKiBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBjbGVhbmluZyB1 cCB0aGUgc2hhcmVkIG1lbW9yeSBpbiBjYXNlIHRoZSB3b3JrZXIKICAqIGZhaWxzIHRvIGF0dGFj aC4KKyAqCisgKiBSZXR1cm4gd2hldGhlciB0aGUgYXR0YWNoIHdhcyBzdWNjZXNzZnVsLgogICov Ci1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFj aChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJCQkJCQkJICAgdWludDE2IGdlbmVyYXRpb24s CiAJCQkJCQkJICAgQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQpAQCAtMTY4LDExICsx NzEsMTEgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIg KndvcmtlciwKIAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFS RUQpOwogCi0JCS8qIFdvcmtlciBlaXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZDsgbm8gbmVlZCB0 byBkbyBhbnl0aGluZy4gKi8KKwkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVk LiBSZXR1cm4gZmFsc2UgaWYgZGllZC4gKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3Jr ZXItPnByb2MpCiAJCXsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwot CQkJcmV0dXJuOworCQkJcmV0dXJuIHdvcmtlci0+aW5fdXNlOwogCQl9CiAKIAkJTFdMb2NrUmVs ZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CkBAIC0xODcsNyArMTkwLDcgQEAgV2FpdEZvclJl cGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCWlmIChn ZW5lcmF0aW9uID09IHdvcmtlci0+Z2VuZXJhdGlvbikKIAkJCQlsb2dpY2FscmVwX3dvcmtlcl9j bGVhbnVwKHdvcmtlcik7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsK LQkJCXJldHVybjsKKwkJCXJldHVybiBmYWxzZTsKIAkJfQogCiAJCS8qCkBAIC0yMDksNiArMjEy LDggQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlciwKIC8qCiAgKiBXYWxrcyB0aGUgd29ya2VycyBhcnJheSBhbmQgc2VhcmNoZXMgZm9yIG9u ZSB0aGF0IG1hdGNoZXMgZ2l2ZW4KICAqIHN1YnNjcmlwdGlvbiBpZCBhbmQgcmVsaWQuCisgKgor ICogV2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBvciB0 YWJsZSBzeW5jIHdvcmtlci4KICAqLwogTG9naWNhbFJlcFdvcmtlciAqCiBsb2dpY2FscmVwX3dv cmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKQEAgLTIy Myw2ICsyMjgsMTAgQEAgbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxp ZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiAJewogCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2lj YWxSZXBDdHgtPndvcmtlcnNbaV07CiAKKwkJLyogU2tpcCBwYXJhbGxlbCBhcHBseSB3b3JrZXJz LiAqLworCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJY29udGludWU7CisKIAkJ aWYgKHctPmluX3VzZSAmJiB3LT5zdWJpZCA9PSBzdWJpZCAmJiB3LT5yZWxpZCA9PSByZWxpZCAm JgogCQkJKCFvbmx5X3J1bm5pbmcgfHwgdy0+cHJvYykpCiAJCXsKQEAgLTI1OSwxMSArMjY4LDEz IEBAIGxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcp CiB9CiAKIC8qCi0gKiBTdGFydCBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3Np YmxlLgorICogU3RhcnQgbmV3IGJhY2tncm91bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqCisg KiBSZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KICAqLwotdm9pZAor Ym9vbAogbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0 IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQsCi0JCQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9p ZCByZWxpZCwgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIg Ymd3OwogCUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd19oYW5kbGU7CkBAIC0yNzIsNyArMjgz LDEyIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25z dCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAogCWludAkJCXNsb3QgPSAwOwogCUxvZ2ljYWxS ZXBXb3JrZXIgKndvcmtlciA9IE5VTEw7CiAJaW50CQkJbnN5bmN3b3JrZXJzOworCWludAkJCW5w YXJhbGxlbGFwcGx5d29ya2VyczsKIAlUaW1lc3RhbXBUeiBub3c7CisJYm9vbAkJaXNfcGFyYWxs ZWxfYXBwbHlfd29ya2VyID0gKHN1Yndvcmtlcl9kc20gIT0gRFNNX0hBTkRMRV9JTlZBTElEKTsK KworCS8qIFNhbml0eSBjaGVjayAtIHRhYmxlc3luYyB3b3JrZXIgY2Fubm90IGJlIGEgc3Vid29y a2VyICovCisJQXNzZXJ0KCEoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyICYmIE9pZElzVmFsaWQo cmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoInN0YXJ0 aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwK QEAgLTM1MCw3ICszNjYsMjYgQEAgcmV0cnk6CiAJaWYgKE9pZElzVmFsaWQocmVsaWQpICYmIG5z eW5jd29ya2VycyA+PSBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCiAJewogCQlM V0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOworCQlyZXR1cm4g ZmFsc2U7CisJfQorCisJbnBhcmFsbGVsYXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9wYXJhbGxl bF9hcHBseV93b3JrZXJfY291bnQoc3ViaWQpOworCisJLyoKKwkgKiBSZXR1cm4gZmFsc2UgaWYg dGhlIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHJlYWNoZWQgdGhlIGxpbWl0CisJ ICogcGVyIHN1YnNjcmlwdGlvbi4KKwkgKi8KKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2Vy ICYmCisJCW5wYXJhbGxlbGFwcGx5d29ya2VycyA+PSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uKQorCXsKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7CisKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFU SU9OX0xJTUlUX0VYQ0VFREVEKSwKKwkJCQkgZXJybXNnKCJvdXQgb2YgcGFyYWxsZWwgYXBwbHkg d29ya2VycyIpLAorCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhf cGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLiIpKSk7CisKKwkJcmV0dXJu IGZhbHNlOwogCX0KIAogCS8qCkBAIC0zNjQsNyArMzk5LDcgQEAgcmV0cnk6CiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJv dXQgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgi WW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy cy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBQcmVwYXJlIHRo ZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTM3OSw2ICs0MTQsOCBAQCByZXRyeToKIAl3b3JrZXItPnJl bHN0YXRlID0gU1VCUkVMX1NUQVRFX1VOS05PV047CiAJd29ya2VyLT5yZWxzdGF0ZV9sc24gPSBJ bnZhbGlkWExvZ1JlY1B0cjsKIAl3b3JrZXItPnN0cmVhbV9maWxlc2V0ID0gTlVMTDsKKwl3b3Jr ZXItPmFwcGx5X2xlYWRlcl9waWQgPSBpc19wYXJhbGxlbF9hcHBseV93b3JrZXIgPyBNeVByb2NQ aWQgOiBJbnZhbGlkUGlkOworCXdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBpc19wYXJhbGxlbF9h cHBseV93b3JrZXI7CiAJd29ya2VyLT5sYXN0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCVRJ TUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9zZW5kX3RpbWUpOwogCVRJTUVTVEFNUF9OT0JF R0lOKHdvcmtlci0+bGFzdF9yZWN2X3RpbWUpOwpAQCAtMzk2LDE5ICs0MzMsMzQgQEAgcmV0cnk6 CiAJCUJHV09SS0VSX0JBQ0tFTkRfREFUQUJBU0VfQ09OTkVDVElPTjsKIAliZ3cuYmd3X3N0YXJ0 X3RpbWUgPSBCZ1dvcmtlclN0YXJ0X1JlY292ZXJ5RmluaXNoZWQ7CiAJc25wcmludGYoYmd3LmJn d19saWJyYXJ5X25hbWUsIEJHV19NQVhMRU4sICJwb3N0Z3JlcyIpOwotCXNucHJpbnRmKGJndy5i Z3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIpOworCisJaWYg KGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9u YW1lLCBCR1dfTUFYTEVOLCAiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iKTsKKwllbHNlCisJCXNu cHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFp biIpOworCiAJaWYgKE9pZElzVmFsaWQocmVsaWQpKQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUs IEJHV19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2Ny aXB0aW9uICV1IHN5bmMgJXUiLCBzdWJpZCwgcmVsaWQpOworCWVsc2UgaWYgKGlzX3BhcmFsbGVs X2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAorCQkJ CSAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlw dGlvbiAldSIsIHN1YmlkKTsKIAllbHNlCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01B WExFTiwKIAkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24g JXUiLCBzdWJpZCk7Ci0Jc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNh bCByZXBsaWNhdGlvbiB3b3JrZXIiKTsKKworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIp CisJCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRp b24gcGFyYWxsZWwgd29ya2VyIik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJH V19NQVhMRU4sICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciIpOwogCiAJYmd3LmJnd19yZXN0 YXJ0X3RpbWUgPSBCR1dfTkVWRVJfUkVTVEFSVDsKIAliZ3cuYmd3X25vdGlmeV9waWQgPSBNeVBy b2NQaWQ7CiAJYmd3LmJnd19tYWluX2FyZyA9IEludDMyR2V0RGF0dW0oc2xvdCk7CiAKKwlpZiAo aXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQltZW1jcHkoYmd3LmJnd19leHRyYSwgJnN1Yndv cmtlcl9kc20sIHNpemVvZihkc21faGFuZGxlKSk7CisKIAlpZiAoIVJlZ2lzdGVyRHluYW1pY0Jh Y2tncm91bmRXb3JrZXIoJmJndywgJmJnd19oYW5kbGUpKQogCXsKIAkJLyogRmFpbGVkIHRvIHN0 YXJ0IHdvcmtlciwgc28gY2xlYW4gdXAgdGhlIHdvcmtlciBzbG90LiAqLwpAQCAtNDIxLDMzICs0 NzMsMjIgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlU X0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2YgYmFja2dyb3VuZCB3b3JrZXIgc2xvdHMi KSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3dvcmtlcl9w cm9jZXNzZXMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogTm93 IHdhaXQgdW50aWwgaXQgYXR0YWNoZXMuICovCi0JV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0 YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7CisJcmV0dXJuIFdhaXRGb3JSZXBs aWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVyYXRpb24sIGJnd19oYW5kbGUpOwogfQog CiAvKgotICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YmlkL3Jl bGlkLCBpZiBhbnksIGFuZCB3YWl0IHVudGlsCi0gKiBpdCBkZXRhY2hlcyBmcm9tIHRoZSBzbG90 LgorICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gc3RvcCB0aGUgd29ya2VyIGFuZCB3YWl0IGZvciBp dCB0byBkaWUuCiAgKi8KLXZvaWQKLWxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBP aWQgcmVsaWQpCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiB7Ci0JTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwog CXVpbnQxNgkJZ2VuZXJhdGlvbjsKIAotCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxv Y2ssIExXX1NIQVJFRCk7Ci0KLQl3b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1Ymlk LCByZWxpZCwgZmFsc2UpOwotCi0JLyogTm8gd29ya2VyLCBub3RoaW5nIHRvIGRvLiAqLwotCWlm ICghd29ya2VyKQotCXsKLQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0J CXJldHVybjsKLQl9CisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2RlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrLCBMV19TSEFSRUQpKTsKIAogCS8qCiAJICogUmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlv biB3YXMgb3VyIHdvcmtlciBzbyB3ZSBjYW4gY2hlY2sgaWYgd2hhdCB3ZSBzZWUKQEAgLTQ4NSwx MCArNTI2LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkK IAkJICogZGlmZmVyZW50LCBtZWFuaW5nIHRoYXQgYSBkaWZmZXJlbnQgd29ya2VyIGhhcyB0YWtl biB0aGUgc2xvdC4KIAkJICovCiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5nZW5l cmF0aW9uICE9IGdlbmVyYXRpb24pCi0JCXsKLQkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdv cmtlckxvY2spOwogCQkJcmV0dXJuOwotCQl9CiAKIAkJLyogV29ya2VyIGhhcyBhc3NpZ25lZCBw cm9jLCBzbyBpdCBoYXMgc3RhcnRlZC4gKi8KIAkJaWYgKHdvcmtlci0+cHJvYykKQEAgLTUyMiw2 ICs1NjAsNTAgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkK IAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCX0K K30KKworLyoKKyAqIFN0b3AgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJp ZC9yZWxpZCwgaWYgYW55LCBhbmQgd2FpdCB1bnRpbAorICogaXQgZGV0YWNoZXMgZnJvbSB0aGUg c2xvdC4KKyAqLwordm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCBy ZWxpZCkKK3sKKwlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CisKKwlMV0xvY2tBY3F1aXJlKExv Z2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0gbG9naWNhbHJlcF93 b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKKworCWlmICh3b3JrZXIpCisJeworCQlB c3NlcnQoIWlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKwkJbG9naWNhbHJlcF93b3Jr ZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIpOworCX0KKworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJl cFdvcmtlckxvY2spOworfQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3 b3JrZXIgY29ycmVzcG9uZGluZyB0byB0aGUgaW5wdXQgc2xvdCBudW1iZXIsCisgKiBhbmQgd2Fp dCB1bnRpbCBpdCBkZXRhY2hlcyBmcm9tIHRoZSBzbG90LgorICovCit2b2lkCitsb2dpY2FscmVw X3dvcmtlcl9zdG9wX2J5X3Nsb3QoaW50IHNsb3Rfbm8sIHVpbnQxNiBnZW5lcmF0aW9uKQorewor CUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcjsKKworCUFzc2VydChzbG90X25vID49MCAmJiBzbG90 X25vIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycyk7CisKKwlMV0xvY2tBY3F1aXJl KExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0gJkxvZ2ljYWxS ZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisKKwkvKgorCSAqIE9ubHkgc3RvcCB0aGUgd29ya2Vy IGlmIHRoZSBnZW5lcmF0aW9uIG1hdGNoZXMgYW5kIHRoZSB3b3JrZXIgaXMgYWxpdmUuCisJICov CisJaWYgKHdvcmtlci0+Z2VuZXJhdGlvbiA9PSBnZW5lcmF0aW9uICYmIHdvcmtlci0+cHJvYykK KwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIpOwogCiAJTFdMb2NrUmVs ZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiB9CkBAIC01OTQsMTEgKzY3NiwzMiBAQCBsb2dp Y2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpCiB9CiAKIC8qCi0gKiBEZXRhY2ggdGhlIHdv cmtlciAoY2xlYW5zIHVwIHRoZSB3b3JrZXIgaW5mbykuCisgKiBTdG9wIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXJzIGlmIGFueSwgYW5kIGRldGFjaCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgor ICogKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgogICovCiBzdGF0aWMgdm9pZAogbG9naWNh bHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpCiB7CisJLyogU3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2Vycy4gKi8KKwlpZiAoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJTGlzdAkg ICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2Fs UmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3Jr ZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMs IHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtl ciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJ CWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodyk7CisJCX0KKworCQlMV0xvY2tSZWxl YXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9jayBjb25jdXJyZW50IGFj Y2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19FWENMVVNJ VkUpOwogCkBAIC02MjEsNiArNzI0LDggQEAgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJbnZhbGlkT2lkOwogCXdv cmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+cmVsaWQgPSBJbnZhbGlkT2lkOwor CXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxl bF9hcHBseSA9IGZhbHNlOwogfQogCiAvKgpAQCAtNjgwLDYgKzc4NSwzMyBAQCBsb2dpY2FscmVw X3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIH0KIAogLyoKKyAqIENvdW50IHRoZSBudW1i ZXIgb2YgcmVnaXN0ZXJlZCAoYnV0IG5vdCBuZWNlc3NhcmlseSBydW5uaW5nKSBwYXJhbGxlbCBh cHBseQorICogd29ya2VycyBmb3IgYSBzdWJzY3JpcHRpb24uCisgKi8KK2ludAorbG9naWNhbHJl cF9wYXJhbGxlbF9hcHBseV93b3JrZXJfY291bnQoT2lkIHN1YmlkKQoreworCWludAkJCWk7CisJ aW50CQkJcmVzID0gMDsKKworCUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2Vy TG9jaykpOworCisJLyoKKwkgKiBTY2FuIGFsbCBhdHRhY2hlZCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzLCBvbmx5IGNvdW50aW5nIHRob3NlIHdoaWNoCisJICogaGF2ZSB0aGUgZ2l2ZW4gc3Vic2Ny aXB0aW9uIGlkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlv bl93b3JrZXJzOyBpKyspCisJeworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBD dHgtPndvcmtlcnNbaV07CisKKwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYmIGlzUGFyYWxsZWxB cHBseVdvcmtlcih3KSkKKwkJCXJlcysrOworCX0KKworCXJldHVybiByZXM7Cit9CisKKy8qCiAg KiBBcHBseUxhdW5jaGVyU2htZW1TaXplCiAgKgkJQ29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIHJl cGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJlZCBtZW1vcnkKICAqLwpAQCAtODY4LDcgKzEwMDAsNyBA QCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJd2FpdF90aW1lID0gd2Fs X3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwogCiAJCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2xhdW5j aChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUsCi0JCQkJCQkJCQkJCSBzdWItPm93bmVy LCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQsIERTTV9I QU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJfQogCkBAIC05NTEsNiArMTA4MywxMCBAQCBwZ19z dGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJT05fQVJHUykKIAkJaWYgKE9pZElzVmFsaWQo c3ViaWQpICYmIHdvcmtlci5zdWJpZCAhPSBzdWJpZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qIFNr aXAgaWYgdGhpcyBpcyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworCQlpZiAoaXNQYXJhbGxl bEFwcGx5V29ya2VyKCZ3b3JrZXIpKQorCQkJY29udGludWU7CisKIAkJd29ya2VyX3BpZCA9IHdv cmtlci5wcm9jLT5waWQ7CiAKIAkJdmFsdWVzWzBdID0gT2JqZWN0SWRHZXREYXR1bSh3b3JrZXIu c3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNv bi5idWlsZCBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5k ZXggNzczNTgzYS4uMjZiZmMwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L21lc29uLmJ1aWxkCkBAIC0xLDQgKzEsNSBAQAogYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAor ICAnYXBwbHlwYXJhbGxlbHdvcmtlci5jJywKICAgJ2RlY29kZS5jJywKICAgJ2xhdW5jaGVyLmMn LAogICAnbG9naWNhbC5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpp bmRleCBmZjg1MTNlLi5kNjE2MGU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9w cm90by5jCkBAIC0xMTYzLDEwICsxMTYzLDE0IEBAIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29t bWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIC8q CiAgKiBXcml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhlIG91dHB1dCBzdHJlYW0uIE5vdGUgdGhhdCB4 aWQgYW5kIHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1lIGZvciB0aGUgdG9wLWxldmVsIHRyYW5zYWN0 aW9uIGFib3J0LgorICoKKyAqIElmIHdyaXRlX2Fib3J0X2luZm8gaXMgdHJ1ZSwgc2VuZCB0aGUg YWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVyd2lzZSBkb24ndC4KICAq Lwogdm9pZAogbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRy YW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCisJCQkJCQkJ ICBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJICBU aW1lc3RhbXBUeiBhYm9ydF90aW1lLCBib29sIHdyaXRlX2Fib3J0X2luZm8pCiB7CiAJcHFfc2Vu ZGJ5dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JUKTsKIApAQCAtMTE3NSwxOSAr MTE3OSw0MCBAQCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwg VHJhbnNhY3Rpb25JZCB4aWQsCiAJLyogdHJhbnNhY3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIo b3V0LCB4aWQpOwogCXBxX3NlbmRpbnQzMihvdXQsIHN1YnhpZCk7CisKKwlpZiAod3JpdGVfYWJv cnRfaW5mbykKKwl7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X2xzbik7CisJCXBxX3NlbmRp bnQ2NChvdXQsIGFib3J0X3RpbWUpOworCX0KIH0KIAogLyoKICAqIFJlYWQgU1RSRUFNIEFCT1JU IGZyb20gdGhlIG91dHB1dCBzdHJlYW0uCisgKgorICogSWYgcmVhZF9hYm9ydF9pbmZvIGlzIHRy dWUsIHJlYWQgdGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndp c2UgZG9uJ3QuCiAgKi8KIHZvaWQKLWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5n SW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4 aWQpCitsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJ IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJIGJvb2wgcmVh ZF9hYm9ydF9pbmZvKQogewotCUFzc2VydCh4aWQgJiYgc3VieGlkKTsKKwlBc3NlcnQoYWJvcnRf ZGF0YSk7CisKKwlhYm9ydF9kYXRhLT54aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0 X2RhdGEtPnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CiAKLQkqeGlkID0gcHFfZ2V0bXNn aW50KGluLCA0KTsKLQkqc3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlpZiAocmVhZF9h Ym9ydF9pbmZvKQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gcHFfZ2V0bXNnaW50NjQo aW4pOworCQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCX0K KwllbHNlCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsK KwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IDA7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCA2ZGZmOTkxLi4y MDRjOGEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3Jk ZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYwpAQCAtMjgzOSw3ICsyODM5LDggQEAgUmVvcmRlckJ1ZmZlckZpbmlzaFByZXBhcmVk KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKICAqIGRpc2suCiAgKi8KIHZv aWQKLVJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4 aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJICAgVGltZXN0YW1wVHog YWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47CiAKQEAgLTI4NTAsNiArMjg1 MSw4IEBAIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25J ZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJ dHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CisKIAkvKiBGb3Igc3RyZWFt ZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0LiAq LwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCXsKQEAgLTI5MjQsNyArMjkyNyw4IEBA IFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBv bGRlc3RSdW5uaW5nWGlkKQogICogdG8gdGhpcyB4aWQgbWlnaHQgcmUtY3JlYXRlIHRoZSB0cmFu c2FjdGlvbiBpbmNvbXBsZXRlbHkuCiAgKi8KIHZvaWQKLVJlb3JkZXJCdWZmZXJGb3JnZXQoUmVv cmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3Jk ZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9n UmVjUHRyIGxzbiwKKwkJCQkJVGltZXN0YW1wVHogYWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVm ZmVyVFhOICp0eG47CiAKQEAgLTI5MzUsNiArMjkzOSw4IEBAIFJlb3JkZXJCdWZmZXJGb3JnZXQo UmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlp ZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUg PSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhl IHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQo dHhuKSkKIAkJcmItPnN0cmVhbV9hYm9ydChyYiwgdHhuLCBsc24pOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggOTRlODEzYS4uOGJkNDk5OCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC02MDksNyAr NjA5LDggQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJy ZW50X2xzbikKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCQkJ IE15U3Vic2NyaXB0aW9uLT5uYW1lLAogCQkJCQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+ dXNlcmlkLAotCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQpOworCQkJCQkJCQkJCQkJIHJzdGF0 ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQkJCWhlbnRy eS0+bGFzdF9zdGFydF90aW1lID0gbm93OwogCQkJCQl9CiAJCQkJfQpAQCAtNjMwLDYgKzYzMSwx MyBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRf bHNuKQogdm9pZAogcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNu KQogeworCS8qCisJICogU2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gU2VlIHBhcmFs bGVsX2FwcGx5X2Nhbl9zdGFydCgpIGZvcgorCSAqIGRldGFpbHMuCisJICovCisJaWYgKGFtX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAlpZiAoYW1fdGFibGVzeW5jX3dv cmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9zeW5jKGN1cnJlbnRfbHNuKTsK IAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA1MjUw YWU3Li44ZmU2ODM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK QEAgLTIyLDggKzIyLDU1IEBACiAgKiBTVFJFQU1FRCBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICogU3RyZWFtZWQgdHJhbnNhY3Rpb25zIChsYXJnZSB0cmFuc2FjdGlv bnMgZXhjZWVkaW5nIGEgbWVtb3J5IGxpbWl0IG9uIHRoZQotICogdXBzdHJlYW0pIGFyZSBub3Qg YXBwbGllZCBpbW1lZGlhdGVseSwgYnV0IGluc3RlYWQsIHRoZSBkYXRhIGlzIHdyaXR0ZW4KLSAq IHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmlu YWwgY29tbWl0IGFycml2ZXMuCisgKiB1cHN0cmVhbSkgYXJlIGFwcGxpZWQgdXNpbmcgb25lIG9m IHR3byBhcHByb2FjaGVzOgorICoKKyAqIDEpIFBhcmFsbGVsIGFwcGx5IHdvcmtlcnMKKyAqCisg KiBJZiBzdHJlYW1pbmcgPSBwYXJhbGxlbCwgd2UgYXNzaWduIGEgbmV3IHBhcmFsbGVsIGFwcGx5 IHdvcmtlciAoaWYKKyAqIGF2YWlsYWJsZSkgYXMgc29vbiBhcyB0aGUgeGFjdCdzIGZpcnN0IHN0 cmVhbSBpcyByZWNlaXZlZC4gVGhlIGxlYWRlciBhcHBseQorICogd29ya2VyIHdpbGwgc2VuZCBj aGFuZ2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0aGlz CisgKiB3b3JrZXIgYXNzaWduZWQgdGlsbCB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IGlzIHJlY2Vp dmVkIGFuZCBhbHNvIHdhaXQgZm9yCisgKiB0aGUgd29ya2VyIHRvIGZpbmlzaCBhdCBjb21taXQu IFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWRzCisgKiBmaWxlIEkvTyBp biBtb3N0IGNhc2VzLCBhbHRob3VnaCB3ZSBzdGlsbCBuZWVkIHRvIHNwaWxsIHRvIGEgZmlsZSBp ZiB0aGVyZQorICogaXMgbm8gd29ya2VyIGF2YWlsYWJsZS4gSXQgaXMgaW1wb3J0YW50IHRvIG1h aW50YWluIGNvbW1pdCBvcmRlciB0byBhdm9pZAorICogZmFpbHVyZXMgZHVlIHRvIChhKSB0cmFu c2FjdGlvbiBkZXBlbmRlbmNpZXMsIHNheSBpZiB3ZSBpbnNlcnQgYSByb3cgaW4gdGhlCisgKiBm aXJzdCB0cmFuc2FjdGlvbiBhbmQgdXBkYXRlIGl0IGluIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24g dGhlbiBhbGxvd2luZyB0bworICogYXBwbHkgYm90aCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0byBm YWlsdXJlIGluIHRoZSB1cGRhdGUuIChiKSBkZWFkbG9ja3MsCisgKiBhbGxvd2luZyB0cmFuc2Fj dGlvbnMgdGhhdCB1cGRhdGUgdGhlIHNhbWUgc2V0IG9mIHJvd3MvdGFibGVzIGluIG9wcG9zaXRl CisgKiBvcmRlciB0byBiZSBhcHBsaWVkIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGRlYWRsb2Nr cy4KKyAqCisgKiBXZSBtYWludGFpbiBhIHdvcmtlciBwb29sIHRvIGF2b2lkIHJlc3RhcnRpbmcg d29ya2VycyBmb3IgZWFjaCBzdHJlYW1pbmcKKyAqIHRyYW5zYWN0aW9uLiBXZSBtYWludGFpbiBl YWNoIHdvcmtlcidzIGluZm9ybWF0aW9uIGluIHRoZQorICogUGFyYWxsZWxBcHBseVdvcmtlcnNM aXN0LiBBZnRlciBzdWNjZXNzZnVsbHkgbGF1bmNoaW5nIGEgbmV3IHdvcmtlciwgaXRzCisgKiBp bmZvcm1hdGlvbiBpcyBhZGRlZCB0byB0aGUgUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0LiBPbmNl IHRoZSB3b3JrZXIKKyAqIGZpbmlzaGVzIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbiwgd2UgbWFy ayBpdCBhdmFpbGFibGUgZm9yIHJlLXVzZS4gTm93LAorICogYmVmb3JlIHN0YXJ0aW5nIGEgbmV3 IHdvcmtlciB0byBhcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB3ZSBjaGVjaworICog dGhlIGxpc3QgZm9yIGFueSBhdmFpbGFibGUgd29ya2VyLiBOb3RlIHRoYXQgd2UgbWFpbnRhaW4g YSBtYXhpbXVtIG9mIGhhbGYKKyAqIHRoZSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uIHdvcmtlcnMgaW4gdGhlIHBvb2wgYW5kCisgKiBhZnRlciB0aGF0LCB3ZSBz aW1wbHkgZXhpdCB0aGUgd29ya2VyIGFmdGVyIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbi4KKyAq CisgKiBYWFggVGhpcyB3b3JrZXIgcG9vbCB0aHJlc2hvbGQgaXMgYSBiaXQgYXJiaXRyYXJ5IGFu ZCB3ZSBjYW4gcHJvdmlkZSBhIEdVQworICogdmFyaWFibGUgZm9yIHRoaXMgaW4gdGhlIGZ1dHVy ZSBpZiByZXF1aXJlZC4KKyAqCisgKiBUaGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsIGNyZWF0 ZSBzZXBhcmF0ZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudAorICogd2hlbiBlYWNoIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBzdGFydHMuIFRoZSByZWFzb24gZm9yIHRoaXMgZGVzaWduIGlz IHRoYXQKKyAqIHdlIGNhbm5vdCBjb3VudCBob3cgbWFueSB3b3JrZXJzIHdpbGwgYmUgc3RhcnRl ZC4gSXQgbWF5IGJlIHBvc3NpYmxlIHRvCisgKiBhbGxvY2F0ZSBlbm91Z2ggc2hhcmVkIG1lbW9y eSBpbiBvbmUgc2VnbWVudCBiYXNlZCBvbiB0aGUgbWF4aW11bSBudW1iZXIgb2YKKyAqIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMgKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3Jp cHRpb24pLCBidXQgdGhpcworICogd291bGQgd2FzdGUgbWVtb3J5IGlmIG5vIHByb2Nlc3MgaXMg YWN0dWFsbHkgc3RhcnRlZC4KKyAqCisgKiBUaGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21l bnQgd2lsbCBjb250YWluIChhKSBhIHNobV9tcSB0aGF0IGNhbiBiZQorICogdXNlZCB0byBzZW5k IGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGZyb20gbGVhZGVyIGFwcGx5IHdvcmtlciB0byBw YXJhbGxlbAorICogYXBwbHkgd29ya2VyIChiKSBhbm90aGVyIHNobV9tcSB0aGF0IGNhbiBiZSB1 c2VkIHRvIHNlbmQgZXJyb3JzIChhbmQgb3RoZXIKKyAqIG1lc3NhZ2VzIHJlcG9ydGVkIHZpYSBl bG9nL2VyZXBvcnQpIGZyb20gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBsZWFkZXIKKyAq IGFwcGx5IHdvcmtlciAoYykgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGJlIHNoYXJlZCBhbW9u ZyBwYXJhbGxlbCBhcHBseQorICogd29ya2VycyBhbmQgbGVhZGVyIGFwcGx5IHdvcmtlciAoaS5l LiBpbl9wYXJhbGxlbF9hcHBseV94YWN0IGZsYWcgYW5kIHRoZQorICogY29ycmVzcG9uZGluZyBM b2dpY2FsUmVwV29ya2VyIHNsb3QgaW5mb3JtYXRpb24pLgorICoKKyAqIElmIG5vIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBpcyBhdmFpbGFibGUgdG8gaGFuZGxlIHRoZSBzdHJlYW1lZCB0cmFuc2Fj dGlvbgorICogd2UgZm9sbG93IGFwcHJvYWNoIDIuCisgKgorICogMikgV3JpdGUgdG8gdGVtcG9y YXJ5IGZpbGVzIGFuZCBhcHBseSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcwogICoKICAq IFVubGlrZSB0aGUgcmVndWxhciAobm9uLXN0cmVhbWVkKSBjYXNlLCBoYW5kbGluZyBzdHJlYW1l ZCB0cmFuc2FjdGlvbnMgaGFzCiAgKiB0byBoYW5kbGUgYWJvcnRzIG9mIGJvdGggdGhlIHRvcGxl dmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTIxOSwyMCArMjY2 LDM1IEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5RXhlY3V0aW9uRGF0YQogCVBhcnRpdGlvblR1cGxl Um91dGluZyAqcHJvdXRlOwkvKiBwYXJ0aXRpb24gcm91dGluZyBpbmZvICovCiB9IEFwcGx5RXhl Y3V0aW9uRGF0YTsKIAotLyogU3RydWN0IGZvciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBl cnJjb250ZXh0IGluZm9ybWF0aW9uICovCi10eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJh Y2tBcmcKKy8qCisgKiBXaGF0IGFjdGlvbiB0byB0YWtlIGZvciB0aGUgdHJhbnNhY3Rpb24uCisg KgorICogVFJBTlNfTEVBREVSX0FQUExZIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIGFuZCBjaGFuZ2VzCisgKiBvZiB0aGUgdHJhbnNhY3Rpb24gYXJlIGFwcGxp ZWQgZGlyZWN0bHkgaW4gdGhlIHdvcmtlci4KKyAqCisgKiBUUkFOU19MRUFERVJfU0VSSUFMSVpF IG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZAorICogY2hh bmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCB3aGVu IHRoZSBmaW5hbAorICogY29tbWl0IGFycml2ZXMuCisgKgorICogVFJBTlNfTEVBREVSX1NFTkRf VE9fUEFSQUxMRUwgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIK KyAqIGFuZCBuZWVkIHRvIHNlbmQgdGhlIGNoYW5nZXMgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4KKyAqCisgKiBUUkFOU19QQVJBTExFTF9BUFBMWSBtZWFucyB0aGF0IHdlIGFyZSBpbiB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZAorICogY2hhbmdlcyBvZiB0aGUgdHJhbnNhY3Rp b24gYXJlIGFwcGxpZWQgZGlyZWN0bHkgaW4gdGhlIHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVt CiB7Ci0JTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICovCi0JTG9n aWNhbFJlcFJlbE1hcEVudHJ5ICpyZWw7CisJLyogVGhlIGFjdGlvbiBmb3Igbm9uLXN0cmVhbWlu ZyB0cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVSX0FQUExZLAogCi0JLyogUmVtb3RlIG5v ZGUgaW5mb3JtYXRpb24gKi8KLQlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlk ICovCi0JVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwotCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsK LQljaGFyCSAgICpvcmlnaW5fbmFtZTsKLX0gQXBwbHlFcnJvckNhbGxiYWNrQXJnOworCS8qIEFj dGlvbnMgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVSX1NFUklB TElaRSwKKwlUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCwKKwlUUkFOU19QQVJBTExFTF9B UFBMWQorfSBUcmFuc0FwcGx5QWN0aW9uOwogCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJn IGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CisvKiBlcnJjb250ZXh0IHRyYWNrZXIgKi8KK0Fw cGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21t YW5kID0gMCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Miw3ICszMDQsOSBAQCBzdGF0aWMgQXBwbHlF cnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1l ID0gTlVMTCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQg PSBOVUxMOworRXJyb3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sg PSBOVUxMOworCitNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwogTWVt b3J5Q29udGV4dCBBcHBseUNvbnRleHQgPSBOVUxMOwogCiAvKiBwZXIgc3RyZWFtIGNvbnRleHQg Zm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgKi8KQEAgLTI1MSwyNyArMzE1LDM1IEBAIHN0YXRp YyBNZW1vcnlDb250ZXh0IExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0ID0gTlVMTDsKIFdhbFJlY2Vp dmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9IE5VTEw7CiAKIFN1YnNjcmlwdGlvbiAq TXlTdWJzY3JpcHRpb24gPSBOVUxMOwotc3RhdGljIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZCA9 IGZhbHNlOworYm9vbAkJTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwogCiBib29sCQlpbl9y ZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIHN0YXRpYyBYTG9nUmVjUHRyIHJlbW90ZV9maW5h bF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAogLyogZmllbGRzIHZhbGlkIG9ubHkgd2hlbiBw cm9jZXNzaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9uICovCi1zdGF0aWMgYm9vbCBpbl9zdHJlYW1l ZF90cmFuc2FjdGlvbiA9IGZhbHNlOworYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZh bHNlOwogCiBzdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0 aW9uSWQ7CiAKIC8qCisgKiBUaGUgbnVtYmVyIG9mIGNoYW5nZXMgc2VudCB0byBwYXJhbGxlbCBh cHBseSB3b3JrZXJzIGR1cmluZyBvbmUgc3RyZWFtaW5nCisgKiBibG9jay4KKyAqLworc3RhdGlj IHVpbnQzMiBuY2hhbmdlcyA9IDA7CisKKy8qCiAgKiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRh dGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRo ZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0 Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tpcHBpbmcgY2hhbmdlcywg d2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2VzIG9mCiAgKiB0aGUgdHJh bnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRpb24gaXMgdXBkYXRlZCBhbmQgTXlTdWJzY3Jp cHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxz bywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzLCB3ZQotICogZG9uJ3Qgc2tpcCByZWNl aXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9y IG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVhbWluZyA9IG9uKSwKKyAqIHdlIGRvbid0IHNr aXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hl dGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlpbmcgdGhlIGNoYW5nZXMgd2hlbiBzdGFydGlu ZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tpcGxzbiBpcwogICogY2xlYXJlZCBhZnRlciBz dWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5zYWN0aW9uIG9yIGFwcGx5aW5nIG5vbi1lbXB0 eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIgcHJldmVudHMgdGhlIG1pc3Rha2VubHkgc3Bl Y2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVpbmcgbGVmdC4KKyAqIGJlaW5nIGxlZnQuIE5v dGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB3aGVuIHVz aW5nCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGJlY2F1c2Ugd2UgY2Fubm90IGdldCB0aGUg ZmluaXNoIExTTiBiZWZvcmUKKyAqIGFwcGx5aW5nIHRoZSBjaGFuZ2VzLgogICovCiBzdGF0aWMg WExvZ1JlY1B0ciBza2lwX3hhY3RfZmluaXNoX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogI2Rl ZmluZSBpc19za2lwcGluZ19jaGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9nUmVjUHRySXNJbnZhbGlk KHNraXBfeGFjdF9maW5pc2hfbHNuKSkpCkBAIC0zMjEsMTMgKzM5Myw4IEBAIHN0YXRpYyB2b2lk IHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVl c3RSZXBseSk7CiAKIHN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIg cmVtb3RlX2xzbik7CiAKLXN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9p ZCk7Ci0KIHN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOwogCi0v KiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwotc3RhdGljIHZv aWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZvaWQgYXBwbHlfaGFu ZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwog c3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRh dGEgKmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLApAQCAtMzYwLDEw ICs0MjcsMTIgQEAgc3RhdGljIHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwogc3Rh dGljIHZvaWQgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xz bik7CiAKIC8qIEZ1bmN0aW9ucyBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KLXN0YXRpYyB2 b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgaW5saW5lIHZvaWQg c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0 ciBsc24pOwogc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5m byh2b2lkKTsKIAorc3RhdGljIFRyYW5zQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5 X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKip3aW5mbyk7CisKIC8qCiAgKiBGb3JtIHRoZSBvcmlnaW4gbmFtZSBmb3IgdGhl IHN1YnNjcmlwdGlvbi4KICAqCkBAIC00MDAsMTIgKzQ2OSwzNCBAQCBSZXBsaWNhdGlvbk9yaWdp bk5hbWVGb3JMb2dpY2FsUmVwKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKICAqIHJlY29yZCArIDEg KGllIHN0YXJ0IG9mIG5leHQgcmVjb3JkKSBhbmQgbmV4dCByZWNvcmQgY2FuIGJlIENPTU1JVCBv ZgogICogdHJhbnNhY3Rpb24gd2UgYXJlIG5vdyBwcm9jZXNzaW5nICh3aGljaCBpcyB3aGF0IHdl IHNldCByZW1vdGVfZmluYWxfbHNuCiAgKiB0byBpbiBhcHBseV9oYW5kbGVfYmVnaW4pLgorICoK KyAqIE5vdGUgdGhhdCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBh cHBsaWVkIGluIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLCB3ZSBkaXNhbGxvdyBhcHBs eWluZyBjaGFuZ2VzIG9uIGEgdGFibGUgdGhhdCBpcyBub3QgaW4KKyAqIHRoZSBSRUFEWSBzdGF0 ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBh cyB3ZQorICogd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQgdGltZS4KKyAqCisg KiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyBpbiBwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoKSBi ZWZvcmUgYXNzaWduaW5nIHRoZQorICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBwYXJh bGxlbCB3b3JrZXIsIGJ1dCBpdCBhbHNvIG5lZWRzIHRvIGJlCisgKiBjaGVja2VkIGhlcmUgYmVj YXVzZSBpZiB0aGUgdXNlciBleGVjdXRlcyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gK KyAqIFBVQkxJQ0FUSU9OIGluIHBhcmFsbGVsLCB0aGUgbmV3IHRhYmxlIGNhbiBiZSBhZGRlZCB0 byBwZ19zdWJzY3JpcHRpb25fcmVsCisgKiB3aGlsZSBhcHBseWluZyB0aGlzIHRyYW5zYWN0aW9u LgogICovCiBzdGF0aWMgYm9vbAogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChMb2dpY2Fs UmVwUmVsTWFwRW50cnkgKnJlbCkKIHsKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQly ZXR1cm4gTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCA9PSByZWwtPmxvY2FscmVsb2lkOworCWVs c2UgaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJaWYgKHJlbC0+c3RhdGUg IT0gU1VCUkVMX1NUQVRFX1JFQURZKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygi bG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXJzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IHdpbGwgcmVzdGFydCIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCQkgZXJy ZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIHVz aW5nIHBhcmFsbGVsICIKKwkJCQkJCQkgICAiYXBwbHkgd29ya2VycyB1bnRpbCBhbGwgdGFibGVz IGFyZSBzeW5jaHJvbml6ZWQuIikpKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CiAJZWxzZQogCQly ZXR1cm4gKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1JFQURZIHx8CiAJCQkJKHJlbC0+c3Rh dGUgPT0gU1VCUkVMX1NUQVRFX1NZTkNET05FICYmCkBAIC00NTEsNDMgKzU0Miw4NSBAQCBlbmRf cmVwbGljYXRpb25fc3RlcCh2b2lkKQogfQogCiAvKgotICogSGFuZGxlIHN0cmVhbWVkIHRyYW5z YWN0aW9ucy4KKyAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgZm9yIGJvdGggdGhlIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2Vycy4KKyAq CisgKiBJbiBzdHJlYW1pbmcgY2FzZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJh bnNhY3Rpb24pLCBmb3IKKyAqIFNVQlNUUkVBTV9PTiBtb2RlLCBzaW1wbHkgcmVkaXJlY3QgaXQg dG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVsCisgKiB0cmFuc2FjdGlvbiwgYW5kIGZv ciBTVUJTVFJFQU1fUEFSQUxMRUwgbW9kZSwgc2VuZCB0aGUgY2hhbmdlcyB0byBwYXJhbGxlbAor ICogYXBwbHkgd29ya2VycyAoTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQ X01TR19UWVBFIGNoYW5nZXMKKyAqIHdpbGwgYmUgYXBwbGllZCBieSBib3RoIGxlYWRlciBhcHBs eSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMpLgogICoKLSAqIElmIGluIHN0cmVh bWluZyBtb2RlIChyZWNlaXZpbmcgYSBibG9jayBvZiBzdHJlYW1lZCB0cmFuc2FjdGlvbiksIHdl Ci0gKiBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVs IHRyYW5zYWN0aW9uLgorICogRm9yIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbnMsIHJldHVybnMg ZmFsc2UuCisgKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIHRydWUgaWYgaW4g bGVhZGVyIGFwcGx5IHdvcmtlciwgZmFsc2UKKyAqIG90aGVyd2lzZS4KICAqCi0gKiBSZXR1cm5z IHRydWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFy IG1vZGUpLgorICogRXhjZXB0aW9uOiBJZiB0aGUgbWVzc2FnZSBiZWluZyBwcm9jZXNzZWQgaXMg TE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OCisgKiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSwgcmV0 dXJuIGZhbHNlIGV2ZW4gaWYgdGhlIG1lc3NhZ2UgbmVlZHMgdG8gYmUgc2VudAorICogdG8gYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCiAgKi8KIHN0YXRpYyBib29sCiBoYW5kbGVfc3RyZWFtZWRf dHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7Ci0J VHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZDsKKwlQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247 CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94 aWQsICZ3aW5mbyk7CiAKIAkvKiBub3QgaW4gc3RyZWFtaW5nIG1vZGUgKi8KLQlpZiAoIWluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChhcHBseV9hY3Rpb24gPT0gVFJBTlNfTEVBREVSX0FQ UExZKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCUFz c2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAKIAkvKgogCSAqIFdlIHNo b3VsZCBoYXZlIHJlY2VpdmVkIFhJRCBvZiB0aGUgc3VieGFjdCBhcyB0aGUgZmlyc3QgcGFydCBv ZiB0aGUKIAkgKiBtZXNzYWdlLCBzbyBleHRyYWN0IGl0LgogCSAqLwotCXhpZCA9IHBxX2dldG1z Z2ludChzLCA0KTsKKwljdXJyZW50X3hpZCA9IHBxX2dldG1zZ2ludChzLCA0KTsKIAotCWlmICgh VHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGN1 cnJlbnRfeGlkKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RP Q09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiaW52YWxpZCB0cmFuc2FjdGlv biBJRCBpbiBzdHJlYW1lZCByZXBsaWNhdGlvbiB0cmFuc2FjdGlvbiIpKSk7CiAKLQkvKiBBZGQg dGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAqLwot CXN1YnhhY3RfaW5mb19hZGQoeGlkKTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNh c2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKwkJCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7 CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJlYW1f d3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRo ZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAqLworCQkJc3VieGFjdF9pbmZvX2FkZChj dXJyZW50X3hpZCk7CiAKLQlyZXR1cm4gdHJ1ZTsKKwkJCS8qIFdyaXRlIHRoZSBjaGFuZ2UgdG8g dGhlIGN1cnJlbnQgZmlsZSAqLworCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOwor CQkJcmV0dXJuIHRydWU7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoK KwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywg cy0+bGVuLCBzLT5kYXRhKTsKKwkJCW5jaGFuZ2VzICs9IDE7CisKKwkJCS8qCisJCQkgKiBYWFgg VGhlIHB1Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRh dGUKKwkJCSAqIG1lc3NhZ2VzIGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFs c28gdXBkYXRlIHRoZQorCQkJICogcmVsYXRpb24vdHlwZSBpbiBsZWFkZXIgYXBwbHkgd29ya2Vy LiBTZWUgZnVuY3Rpb24KKwkJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCQkgKi8KKwkJ CXJldHVybiAoYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiAmJgorCQkJCQlhY3Rp b24gIT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQ TFk6CisJCQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpZiBuZWVkZWQuICov CisJCQlwYXJhbGxlbF9hcHBseV9zdGFydF9zdWJ0cmFucyhjdXJyZW50X3hpZCwgc3RyZWFtX3hp ZCk7CisJCQlyZXR1cm4gZmFsc2U7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJ CQlyZXR1cm4gZmFsc2U7CQkvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8KKwl9CiB9CiAK IC8qCkBAIC05MjMsOCArMTA1NiwxMSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbChM b2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJICogQmVnaW5UcmFuc2Fj dGlvbkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBiYWxhbmNlIHRoZSBFbmRUcmFuc2FjdGlvbkJsb2Nr CiAJICogY2FsbGVkIHdpdGhpbiB0aGUgUHJlcGFyZVRyYW5zYWN0aW9uQmxvY2sgYmVsb3cuCiAJ ICovCi0JQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7IC8qIENvbXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJaWYgKCFJ c1RyYW5zYWN0aW9uQmxvY2soKSkKKwl7CisJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcgQmVn aW4gY29tbWFuZC4gKi8KKwl9CiAKIAkvKgogCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2Ug Y2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgpAQCAtOTkzLDYgKzEx MjksMTIgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFu ZGxlIGEgQ09NTUlUIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJFRCB0cmFuc2FjdGlv bi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhlIHRy YW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIElu IHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUKKyAqIHRv IGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVuc3Vy ZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5l ZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8KKyAqIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb24gY2Fu IGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kgaXNzdWVzLgogICovCiBz dGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCkBA IC0xMDM2LDYgKzExNzgsMTIgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJ bmZvIHMpCiAKIC8qCiAgKiBIYW5kbGUgYSBST0xMQkFDSyBQUkVQQVJFRCBvZiBhIHByZXZpb3Vz bHkgUFJFUEFSRUQgVFJBTlNBQ1RJT04uCisgKgorICogTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQg dG8gd2FpdCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgaW4gYQorICogcGFy YWxsZWwgYXBwbHkgd29ya2VyLiBJbiB0aGF0IGNhc2UsIHdlIGhhdmUgYWxyZWFkeSB3YWl0ZWQg Zm9yIHRoZSBwcmVwYXJlCisgKiB0byBmaW5pc2ggaW4gYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVw YXJlKCkgd2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZQorICogb3BlcmF0aW9ucyBpbiB0aGF0IHRy YW5zYWN0aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmliZXIsIHNvIG5vCisgKiBjb25j dXJyZW50IHRyYW5zYWN0aW9uIGNhbiBjYXVzZSBkZWFkbG9jayBvciB0cmFuc2FjdGlvbiBkZXBl bmRlbmN5IGlzc3Vlcy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9yb2xsYmFja19w cmVwYXJlZChTdHJpbmdJbmZvIHMpCkBAIC0xMDg5LDE1ICsxMjM3LDEzIEBAIGFwcGx5X2hhbmRs ZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAKIC8qCiAgKiBIYW5kbGUgU1RSRUFN IFBSRVBBUkUuCi0gKgotICogTG9naWMgaXMgaW4gdHdvIHBhcnRzOgotICogMS4gUmVwbGF5IGFs bCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zCi0gKiAyLiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBw cmVwYXJlZAogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0 cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhIHByZXBhcmVfZGF0YTsK KwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBs eV9hY3Rpb247CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJS T1IsCkBAIC0xMTEzLDI0ICsxMjU5LDgyIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShT dHJpbmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVwYXJlKHMsICZwcmVwYXJl X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJlcGFyZV9kYXRhLnhpZCwg cHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgcHJl cGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJlX2RhdGEueGlkKTsKKwlh cHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHByZXBhcmVfZGF0YS54 aWQsICZ3aW5mbyk7CiAKLQkvKiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMuICov Ci0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEu cHJlcGFyZV9sc24pOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19M RUFERVJfU0VSSUFMSVpFOgogCi0JLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQu ICovCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisJCQkv KgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28g cmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBw bHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFy ZV9sc24pOwogCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkvKiBNYXJrIHRoZSB0 cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVy bmFsKCZwcmVwYXJlX2RhdGEpOwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFy ZV9kYXRhLmVuZF9sc24pOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVu ZF9sc24pOwogCi0JaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQlpbl9yZW1vdGVf dHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlh bGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJc3RyZWFtX2NsZWFudXBfZmls ZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJCQlicmVh azsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdp bmZvKTsKKworCQkJLyoKKwkJCSAqIFRoZSBvcmlnaW4gY2FuIGJlIGFjdGl2ZSBvbmx5IGluIG9u ZSBwcm9jZXNzLiBTZWUKKwkJCSAqIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0LgorCQkJICov CisJCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisKKwkJCS8qIFNlbmQgU1RS RUFNIFBSRVBBUkUgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQkJ cGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkv KgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyLCB3YWl0IGZvcgorCQkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vz c2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJl cyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgor CQkJICovCisJCQlwYXJhbGxlbF9hcHBseV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisJ CQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKCk7CisJCQlwYXJhbGxlbF9hcHBseV9m cmVlX3dvcmtlcih3aW5mbywgcHJlcGFyZV9kYXRhLnhpZCk7CisKKwkJCWluX3JlbW90ZV90cmFu c2FjdGlvbiA9IGZhbHNlOwogCi0JLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQg Y2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCQkJc3RvcmVfZmx1c2hf cG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFO U19QQVJBTExFTF9BUFBMWToKKwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsK KworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9o YW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKworCQkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisKKwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQoKTsK KworCQkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJCXN1YnhhY3RsaXN0ID0gTklMOworCisJ CQlwYXJhbGxlbF9hcHBseV9zZXRfaW5feGFjdChNeVBhcmFsbGVsU2hhcmVkLCBmYWxzZSk7CisK KwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmlu aXNoIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2Up OworCQkJYnJlYWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAogCS8qIFBy b2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwu ICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CkBAIC0x MTY5LDI2ICsxMzczLDI0IEBAIGFwcGx5X2hhbmRsZV9vcmlnaW4oU3RyaW5nSW5mbyBzKQogCiAv KgogICogSGFuZGxlIFNUUkVBTSBTVEFSVCBtZXNzYWdlLgorICoKKyAqIFhYWCBXZSBjYW4gYXZv aWQgc2VuZGluZyBwYWlycyBvZiB0aGUgU1RBUlQvU1RPUCBtZXNzYWdlcyB0byB0aGUgcGFyYWxs ZWwKKyAqIHdvcmtlciBiZWNhdXNlIHVubGlrZSBhcHBseSB3b3JrZXIgaXQgd2lsbCBwcm9jZXNz IG9ubHkgb25lIHRyYW5zYWN0aW9uIGF0IGEKKyAqIHRpbWUuIEhvd2V2ZXIsIGl0IGlzIG5vdCBj bGVhciB3aGV0aGVyIHRoYXQgaXMgd29ydGggdGhlIGVmZm9ydCBiZWNhdXNlIGl0CisgKiBpcyBz ZW50IGFmdGVyIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gY2hhbmdlcy4KICAqLwogc3RhdGlj IHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogewogCWJvb2wJ CWZpcnN0X3NlZ21lbnQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5z QXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9u KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFU SU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJkdXBsaWNhdGUgU1RSRUFNIFNUQVJUIG1lc3Nh Z2UiKSkpOwogCi0JLyoKLQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBzdGFydCwg dGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlIGNvbW1pdHRlZAotCSAqIG9uIHRoZSBzdHJlYW0gc3Rv cCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQKLQkgKiB3 aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUgbWVzc2FnZXMuIFdlIG5l ZWQgdGhlCi0JICogdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZmaWxlLCB1c2VkIGZv ciBzZXJpYWxpemluZyB0aGUKLQkgKiBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFjdCBpbmZvLgot CSAqLwotCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKLQogCS8qIG5vdGlmeSBoYW5kbGUgbWV0 aG9kcyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVtb3RlIHRyYW5zYWN0aW9uICovCiAJaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb24gPSB0cnVlOwogCkBAIC0xMjAzLDM1ICsxNDA1LDgwIEBAIGFwcGx5X2hh bmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0 X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCiAJLyoKLQkgKiBJbml0aWFs aXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3 aWxsIGJlCi0JICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNv IGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAotCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9u IHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55Ci0JICogdHJhbnNhY3Rp b24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rp b25zLgotCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQgb2Yg dGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0 IHdpbGwgZXZlciBiZSB1c2VkLgorCSAqIEZvciB0aGUgZmlyc3Qgc3RyZWFtIHN0YXJ0LCBjaGVj ayBpZiB0aGVyZSBpcyBhbnkgZnJlZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB3ZSBjYW4g dXNlIHRvIHByb2Nlc3MgdGhpcyB0cmFuc2FjdGlvbiwgb3RoZXJ3aXNlIHRyeSB0byBzdGFydCBh CisJICogbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KIAkgKi8KLQlpZiAoTXlMb2dpY2FsUmVw V29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCWlmIChmaXJzdF9zZWdtZW50KQorCQlw YXJhbGxlbF9hcHBseV9zdGFydF93b3JrZXIoc3RyZWFtX3hpZCk7CisKKwlhcHBseV9hY3Rpb24g PSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CisKKwlz d2l0Y2ggKGFwcGx5X2FjdGlvbikKIAl7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQljYXNl IFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKEFwcGx5Q29udGV4dCk7CisJCQkvKgorCQkJICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBz dHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZQorCQkJICogY29tbWl0dGVkIG9u IHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluCisJCQkg KiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRo ZQorCQkJICogbWVzc2FnZXMuIFdlIG5lZWQgdGhlIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0 aGUgYnVmZmlsZSwKKwkJCSAqIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0 YSBhbmQgc3VieGFjdCBpbmZvLgorCQkJICovCisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7 CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2Yo RmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxl c2V0KTsKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNl dCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcworCQkJICogd2lsbCBiZSB1c2VkIGZvciB0aGUgZW50 aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0CisJCQkgKiBpbiBhIHBlcm1h bmVudCBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdAorCQkJICogc3Ry ZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0 aGlzCisJCQkgKiBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gTm93LCB3ZSBjb3Vs ZCBjcmVhdGUgYQorCQkJICogZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3 ZWxsIGJ1dCB0aGVuIHdlIHdvbid0IGJlCisJCQkgKiBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJl IHVzZWQuCisJCQkgKi8KKwkJCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0 ID09IE5VTEwpCisJCQl7CisJCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAKLQkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN0eCk7Ci0JfQorCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhBcHBseUNvbnRleHQpOwogCi0JLyogb3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0 cmFuc2FjdGlvbiAqLwotCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5z dHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJCUZpbGVTZXRJbml0 KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCi0JLyogaWYgdGhpcyBpcyBu b3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFjdCBmaWxlICovCi0JaWYg KCFmaXJzdF9zZWdtZW50KQotCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsK KwkJCX0KIAotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CisJ CQkvKiBPcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJc3Ry ZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJz dF9zZWdtZW50KTsKIAotCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQkvKiBJZiB0aGlzIGlz IG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCisJ CQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVw V29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisKKwkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7 CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJ QXNzZXJ0KHdpbmZvKTsKKworCQkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZvLCBzLT5s ZW4sIHMtPmRhdGEpOworCisJCQluY2hhbmdlcyA9IDA7CisKKwkJCS8qIENhY2hlIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlzdHJlYW1fYXBw bHlfd29ya2VyID0gd2luZm87CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQ UExZOgorCQkJLyogTm8gc3BlY2lhbCBoYW5kbGluZyBpcyByZXF1aXJlZCBpbiBwYXJhbGxlbCBh cHBseSB3b3JrZXIuICovCisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNl KTsKKwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklO RywgTlVMTCk7CiB9CiAKIC8qCkBAIC0xMjQwLDU4ICsxNDg3LDc3IEBAIGFwcGx5X2hhbmRsZV9z dHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJl YW1fc3RvcChTdHJpbmdJbmZvIHMpCiB7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv OworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCiAJaWYgKCFpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RP Q09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2Fn ZSB3aXRob3V0IFNUUkVBTSBTVEFSVCIpKSk7CiAKLQkvKgotCSAqIENsb3NlIHRoZSBmaWxlIHdp dGggc2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uIGFib3V0Ci0J ICogc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KLQkgKi8KLQlzdWJ4YWN0 X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0Jc3Ry ZWFtX2Nsb3NlX2ZpbGUoKTsKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlf YWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAKLQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQg dHJhbnNhY3Rpb24gc3RhdGUgKi8KLQlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCXN3 aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgog Ci0JLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCi0JQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJCQkvKgorCQkJICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxp emVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUKKwkJCSAqIGluZm9ybWF0aW9uIGFib3V0IHN1Ynhh Y3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisJCQkgKi8KKwkJCXN1YnhhY3RfaW5m b193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJCXN0cmVh bV9jbG9zZV9maWxlKCk7CiAKLQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkJ LyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCisJCQlBc3NlcnQo SXNUcmFuc2FjdGlvblN0YXRlKCkpOworCisJCQkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJh bnNhY3Rpb24gKi8KKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogUmVzZXQg cGVyLXN0cmVhbSBjb250ZXh0ICovCi0JTWVtb3J5Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1p bmdDb250ZXh0KTsKKwkJCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLworCQkJTWVtb3J5 Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKKworCQkJcGdzdGF0X3JlcG9y dF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNf TEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlwYXJhbGxl bF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCWVsb2coREVC VUcxLCAiYXBwbGllZCAldSBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsiLCBuY2hhbmdl cyk7CisKKwkJCXN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOworCisJCQlwZ3N0YXRfcmVwb3J0 X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19Q QVJBTExFTF9BUFBMWToKKwkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRUlOVFJB TlNBQ1RJT04sIE5VTEwpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxz ZSk7CisJCQlicmVhazsKKwl9CisKKwlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwog Ci0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KIAogLyoKLSAqIEhhbmRsZSBTVFJFQU0gYWJvcnQg bWVzc2FnZS4KKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2Fj dGlvbiB3YXMgc3BpbGxlZCB0byBkaXNrLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxl X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCitzZXJpYWxpemVfc3RyZWFtX2Fib3J0KFRyYW5z YWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKIHsKLQlUcmFuc2FjdGlvbklkIHhp ZDsKLQlUcmFuc2FjdGlvbklkIHN1YnhpZDsKLQotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlv bikKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xB VElPTiksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91 dCBTVFJFQU0gU1RPUCIpKSk7Ci0KLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4 aWQsICZzdWJ4aWQpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBp dCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRlbGV0ZSB0 aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhpZCA9PSBzdWJ4aWQp Ci0JewotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52YWxpZFhMb2dSZWNQ dHIpOwogCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4 aWQpOwotCX0KIAllbHNlCiAJewogCQkvKgpAQCAtMTMxNSw4ICsxNTgxLDYgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAJ CWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 KHN1YnhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0xOwogCQliZWdpbl9y ZXBsaWNhdGlvbl9zdGVwKCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHhpZCk7CkBAIC0xMzQxLDcgKzE2MDUsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFt X2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZvKCk7CiAJCQllbmRf cmVwbGljYXRpb25fc3RlcCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0JCQly ZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsKIAkJfQogCkBAIC0x MzY0LDYgKzE2MjcsOTYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMp CiAJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCX0KK30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZS4KKyAqLworc3Rh dGljIHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQoreworCVRy YW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCUxvZ2ljYWxSZXBTdHJl YW1BYm9ydERhdGEgYWJvcnRfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87 CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwlpZiAoaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NP TF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdl IHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJLyogV2UgcmVjZWl2ZSBhYm9ydCBpbmZvcm1h dGlvbiBvbmx5IHdoZW4gd2UgY2FuIGFwcGx5IGluIHBhcmFsbGVsLiAqLworCWxvZ2ljYWxyZXBf cmVhZF9zdHJlYW1fYWJvcnQocywgJmFib3J0X2RhdGEsCisJCQkJCQkJCSBNeUxvZ2ljYWxSZXBX b3JrZXItPnBhcmFsbGVsX2FwcGx5KTsKKworCXhpZCA9IGFib3J0X2RhdGEueGlkOworCXN1Ynhp ZCA9IGFib3J0X2RhdGEuc3VieGlkOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChz dWJ4aWQsIGFib3J0X2RhdGEuYWJvcnRfbHNuKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFu c2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rp b24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisKKwkJCS8qCisJCQkgKiBX ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMg YmVlbgorCQkJICogc2VyaWFsaXplZCB0byBmaWxlLgorCQkJICovCisJCQlzZXJpYWxpemVfc3Ry ZWFtX2Fib3J0KHhpZCwgc3VieGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVS X1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlpZiAoc3VieGlkID09 IHhpZCkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFRoZSBvcmlnaW4gY2FuIGJlIGFjdGl2ZSBvbmx5 IGluIG9uZSBwcm9jZXNzLiBTZWUKKwkJCQkgKiBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdC4K KwkJCQkgKi8KKwkJCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisJCQl9CisK KwkJCS8qIFNlbmQgU1RSRUFNIEFCT1JUIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4gKi8KKwkJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5k YXRhKTsKKworCQkJLyoKKwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4g VGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3aGljaCBh dm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJCSAq IGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJcGFyYWxsZWxfYXBwbHlfd2FpdF9mb3JfeGFjdF9maW5p c2god2luZm8pOworCisJCQlpZiAoc3VieGlkID09IHhpZCkKKwkJCXsKKwkJCQlwYXJhbGxlbF9h cHBseV9yZXBsb3JpZ2luX3NldHVwKCk7CisJCQkJcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIo d2luZm8sIHhpZCk7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBTZXQgaW5f cGFyYWxsZWxfYXBwbHlfeGFjdCB0byB0cnVlIGFnYWluIGFzIHdlIG9ubHkgYWJvcnRlZAorCQkJ CSAqIHRoZSBzdWJ0cmFuc2FjdGlvbiBhbmQgdGhlIHRvcCB0cmFuc2FjdGlvbiBpcyBzdGlsbCBp bgorCQkJCSAqIHByb2dyZXNzLgorCQkJCSAqLworCQkJCXBhcmFsbGVsX2FwcGx5X3NldF9pbl94 YWN0KHdpbmZvLT5zaGFyZWQsIHRydWUpOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFO U19QQVJBTExFTF9BUFBMWToKKwkJCXBhcmFsbGVsX2FwcGx5X3N0cmVhbV9hYm9ydCgmYWJvcnRf ZGF0YSk7CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNh Y3Rpb24gZmluaXNoIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3Nl cnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9p bmZvKCk7CiB9CkBAIC0xNDk1LDYgKzE4NDgsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1p dChTdHJpbmdJbmZvIHMpCiB7CiAJVHJhbnNhY3Rpb25JZCB4aWQ7CiAJTG9naWNhbFJlcENvbW1p dERhdGEgY29tbWl0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRy YW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTUwNCwxNCArMTg1OSw3OSBAQCBhcHBseV9oYW5k bGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0 cmVhbV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94 YWN0KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2Vp dmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCWFwcGx5X2Fj dGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOworCisJc3dp dGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisK KwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxl LCBzbyByZXBsYXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJ CQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CiAK LQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJ CQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKLQlhcHBseV9o YW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisJCQkvKiBVbmxpbmsgdGhlIGZp bGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJl YW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJYnJl YWs7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBz dWJ4YWN0IGluZm8gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCB4aWQpOworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJ QXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFdlIG5lZWQgdG8gcmVzZXQgdGhlIHJlcGxp Y2F0aW9uIG9yaWdpbiBiZWZvcmUgc2VuZGluZyB0aGUKKwkJCSAqIGNvbW1pdCBtZXNzYWdlIGFu ZCBzZXQgaXQgdXAgYWdhaW4gYWZ0ZXIgY29uZmlybWluZyB0aGF0CisJCQkgKiBwYXJhbGxlbCB3 b3JrZXIgaGFzIHByb2Nlc3NlZCB0aGUgbWVzc2FnZS4gVGhpcyBpcyByZXF1aXJlZAorCQkJICog YmVjYXVzZSBvcmlnaW4gY2FuIGJlIGFjdGl2ZSBvbmx5IGluIG9uZSBwcm9jZXNzIGF0LWEtdGlt ZS4KKwkJCSAqLworCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCgpOworCisJCQkv KiBTZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LiAqLworCQkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEp OworCisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyLCB3YWl0IGZvcgorCQkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlz IGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lk cyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVh ZGxvY2tzLgorCQkJICovCisJCQlwYXJhbGxlbF9hcHBseV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3 aW5mbyk7CisJCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKCk7CisKKwkJCXBnc3Rh dF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0 YS5lbmRfbHNuKTsKKwkJCXN0b3Bfc2tpcHBpbmdfY2hhbmdlcygpOworCisJCQlwYXJhbGxlbF9h cHBseV9mcmVlX3dvcmtlcih3aW5mbywgeGlkKTsKKworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2Fj dGlvbiBpcyBlaXRoZXIgbm9uLWVtcHR5IG9yIHNraXBwZWQsIHNvIHdlIGNsZWFyIHRoZQorCQkJ ICogc3Vic2tpcGxzbi4KKwkJCSAqLworCQkJY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKGNv bW1pdF9kYXRhLmNvbW1pdF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExF TF9BUFBMWToKKwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsKKworCQkJYXBw bHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQlwYXJhbGxlbF9h cHBseV9yZXBsb3JpZ2luX3Jlc2V0KCk7CisKKwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJ CQlzdWJ4YWN0bGlzdCA9IE5JTDsKKworCQkJcGFyYWxsZWxfYXBwbHlfc2V0X2luX3hhY3QoTXlQ YXJhbGxlbFNoYXJlZCwgZmFsc2UpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nl c3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlk ZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KIAogCS8qIFByb2Nlc3Mg YW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJ cHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNuKTsKQEAgLTE1NTUsNiAr MTk3NSwxMyBAQCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXRE YXRhICpjb21taXRfZGF0YSkKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAg PSBjb21taXRfZGF0YS0+Y29tbWl0dGltZTsKIAogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKKworCQlpZiAoSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9u QmxvY2soZmFsc2UpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKwogCQlw Z3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCiAJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1p dF9kYXRhLT5lbmRfbHNuKTsKQEAgLTI0OTIsNyArMjkxOSw3IEBAIGFwcGx5X2hhbmRsZV90cnVu Y2F0ZShTdHJpbmdJbmZvIHMpCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBt ZXNzYWdlIGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRj aChTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNn Ynl0ZShzKTsKQEAgLTI2NjEsNiArMzA4OCwxMCBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9n UmVjUHRyIHJlbW90ZV9sc24pCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKiBT a2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBs eV93b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVu dCBjb250ZXh0ICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKQEAg LTI3MjUsNiArMzE1Niw3IEBAIExvZ2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3Jl Y2VpdmVkKQogCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CiAJ ZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCWVycm9yX2NvbnRl eHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisJYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IGVy cm9yX2NvbnRleHRfc3RhY2s7CiAKIAkvKiBUaGlzIG91dGVyIGxvb3AgaXRlcmF0ZXMgb25jZSBw ZXIgd2FpdC4gKi8KIAlmb3IgKDs7KQpAQCAtMjkzOSw2ICszMzcxLDcgQEAgTG9naWNhbFJlcEFw cGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQpCiAKIAkvKiBQb3AgdGhlIGVycm9yIGNv bnRleHQgc3RhY2sgKi8KIAllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlv dXM7CisJYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAK IAkvKiBBbGwgZG9uZSAqLwogCXdhbHJjdl9lbmRzdHJlYW1pbmcoTG9nUmVwV29ya2VyV2FsUmN2 Q29ubiwgJnRsaSk7CkBAIC0zMDM5LDcgKzM0NzIsNyBAQCBzZW5kX2ZlZWRiYWNrKFhMb2dSZWNQ dHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpCiAvKgogICogUmVyZWFk IHN1YnNjcmlwdGlvbiBpbmZvIGlmIG5lZWRlZC4gTW9zdCBjaGFuZ2VzIHdpbGwgYmUgZXhpdC4K ICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkK IHsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKQEAgLTM1OTQsMzcgKzQwMjcsMTYgQEAgc3RhcnRf YXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRwb3MpCiAJUEdfRU5EX1RSWSgpOwogfQogCi0v KiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLworLyoKKyAq IENvbW1vbiBpbml0aWFsaXphdGlvbiBmb3IgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIEluaXRpYWxpemUgdGhlIGRhdGFiYXNlIGNvbm5lY3Rp b24sIGluLW1lbW9yeSBzdWJzY3JpcHRpb24gYW5kIG5lY2Vzc2FyeQorICogY29uZmlnIG9wdGlv bnMuCisgKi8KIHZvaWQKLUFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK0luaXRpYWxp emVBcHBseVdvcmtlcih2b2lkKQogewotCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQz MihtYWluX2FyZyk7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7Ci0JY2hhcgkJb3JpZ2lubmFtZVtO QU1FREFUQUxFTl07Ci0JWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1Jl Y1B0cjsKLQljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKLQlXYWxSY3ZTdHJlYW1PcHRpb25z IG9wdGlvbnM7Ci0JaW50CQkJc2VydmVyX3ZlcnNpb247Ci0KLQkvKiBBdHRhY2ggdG8gc2xvdCAq LwotCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7Ci0KLQkvKiBTZXR1cCBz aWduYWwgaGFuZGxpbmcgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25m aWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7Ci0JQmFja2dyb3VuZFdvcmtlclVu YmxvY2tTaWduYWxzKCk7Ci0KLQkvKgotCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBS ZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0Ci0JICogaWYgd2UgZGlk LCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCi0JICov Ci0KLQkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCi0JTXlMb2dpY2Fs UmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2 X3RpbWUgPQotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGlt ZXN0YW1wKCk7Ci0KLQkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KLQls b2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAKIAkvKiBSdW4gYXMgcmVwbGlj YSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJvbGUuICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzZXNzaW9u X3JlcGxpY2F0aW9uX3JvbGUiLCAicmVwbGljYSIsCkBAIC0zNjg0LDEyICs0MDk2LDUwIEBAIEFw cGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVycm1z ZygibG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2VyIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiLCB0YWJsZSBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAogCQkJCQkJTXlT dWJzY3JpcHRpb24tPm5hbWUsIGdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlk KSkpKTsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJZXJlcG9ydChM T0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAorCQkJCQkJTXlTdWJzY3Jp cHRpb24tPm5hbWUpKSk7CiAJZWxzZQogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBoYXMg c3RhcnRlZCIsCiAJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOworfQorCisvKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtl ciBlbnRyeSBwb2ludCAqLwordm9pZAorQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQor eworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJ b3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisJWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJ bnZhbGlkWExvZ1JlY1B0cjsKKwljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKKwlXYWxSY3ZT dHJlYW1PcHRpb25zIG9wdGlvbnM7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisKKwkvKiBBdHRh Y2ggdG8gc2xvdCAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisK KwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhh bmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dy b3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIFdlIGRvbid0IGN1cnJlbnRs eSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0CisJ ICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVy IGhlcmUuCisJICovCisKKwkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVlICov CisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtl ci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBH ZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5j dGlvbnMgKi8KKwlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CisKKwlJbml0 aWFsaXplQXBwbHlXb3JrZXIoKTsKIAogCS8qIENvbm5lY3QgdG8gdGhlIG9yaWdpbiBhbmQgc3Rh cnQgdGhlIHJlcGxpY2F0aW9uLiAqLwogCWVsb2coREVCVUcxLCAiY29ubmVjdGluZyB0byBwdWJs aXNoZXIgdXNpbmcgY29ubmVjdGlvbiBzdHJpbmcgXCIlc1wiIiwKQEAgLTM3NzcsMTMgKzQyMjcs MzYgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJc2VydmVyX3ZlcnNpb24g PSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CiAJb3B0aW9u cy5wcm90by5sb2dpY2FsLnByb3RvX3ZlcnNpb24gPQorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAw MDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CiAJCXNl cnZlcl92ZXJzaW9uID49IDE1MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lP Tl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NU UkVBTV9WRVJTSU9OX05VTSA6CiAJCUxPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU07CiAKIAlv cHRpb25zLnByb3RvLmxvZ2ljYWwucHVibGljYXRpb25fbmFtZXMgPSBNeVN1YnNjcmlwdGlvbi0+ cHVibGljYXRpb25zOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5iaW5hcnkgPSBNeVN1YnNjcmlw dGlvbi0+YmluYXJ5OwotCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgPSBNeVN1YnNj cmlwdGlvbi0+c3RyZWFtOworCisJLyoKKwkgKiBBc3NpZ24gdGhlIGFwcHJvcHJpYXRlIHN0cmVh bWluZyBmbGFnIGFjY29yZGluZyB0byB0aGUgJ3N0cmVhbWluZycgbW9kZQorCSAqIGFuZCB0aGUg cHVibGlzaGVyJ3MgYWJpbGl0eSB0byBzdXBwb3J0IHRoYXQgbW9kZS4KKwkgKi8KKwlpZiAoc2Vy dmVyX3ZlcnNpb24gPj0gMTYwMDAwICYmCisJCU15U3Vic2NyaXB0aW9uLT5zdHJlYW0gPT0gU1VC U1RSRUFNX1BBUkFMTEVMKQorCXsKKwkJb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19z dHIgPSBwc3RyZHVwKCJwYXJhbGxlbCIpOworCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVs X2FwcGx5ID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAoc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwICYm CisJCQkgTXlTdWJzY3JpcHRpb24tPnN0cmVhbSAhPSBTVUJTVFJFQU1fT0ZGKQorCXsKKwkJb3B0 aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSBwc3RyZHVwKCJvbiIpOworCQlNeUxv Z2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJ CW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gTlVMTDsKKwkJTXlMb2dpY2Fs UmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOworCX0KKwogCW9wdGlvbnMucHJvdG8u bG9naWNhbC50d29waGFzZSA9IGZhbHNlOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5vcmlnaW4g PSBwc3RyZHVwKE15U3Vic2NyaXB0aW9uLT5vcmlnaW4pOwogCkBAIC0zODgxLDYgKzQzNTQsMTUg QEAgSXNMb2dpY2FsV29ya2VyKHZvaWQpCiB9CiAKIC8qCisgKiBJcyBjdXJyZW50IHByb2Nlc3Mg YSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcj8KKyAqLworYm9vbAor SXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKQoreworCXJldHVybiBhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKTsKK30KKworLyoKICAqIFN0YXJ0IHNraXBwaW5nIGNoYW5nZXMgb2Yg dGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hlcyB0aGUKICAqIExTTiBzcGVj aWZpZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KICAqLwpAQCAtMzk0Miw3ICs0NDI0LDcg QEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIAlY TG9nUmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lwbHNuOwogCWJvb2wJCXN0 YXJ0ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNr aXBsc24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkgfHwg YW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFuc2Fj dGlvblN0YXRlKCkpCkBAIC00MDE0LDcgKzQ0OTYsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tp cF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBn aXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwot c3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlB cHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7 CkBAIC00MDQyLDIzICs0NTI0LDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykK IAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJy YXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8 IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9u IG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9u IHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0 ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBf bWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJ CQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ ZmluaXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0 YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNc IiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wi IGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5v cmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1h bmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJh cmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJl bC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAotCQkJCSAgIGVycmFyZy0+cmVtb3Rl X3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJewor CQlpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJ c0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5n IHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdl IHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGlu IHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkg ICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJ CQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmln aW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJn ZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8l WCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9t ZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1v dGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwK KwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhl cnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2lu ZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2Fn ZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBj b2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2lu X25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQp LAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5y ZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIl c1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVz XCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFy Zy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmct PmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJ CQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAg ZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+Zmlu aXNoX2xzbikpOworCQl9CisJfQogfQogCiAvKiBTZXQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24g b2YgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAgLTQwNzgsMyArNDU4NCwzNiBAQCByZXNldF9h cHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcu cmVtb3RlX2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxp ZFRyYW5zYWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIFJldHVybiB0 aGUgYWN0aW9uIHRvIHRha2UgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gKndpbmZvIGlzIGFz c2lnbmVkIHRvCisgKiB0aGUgZGVzdGluYXRpb24gcGFyYWxsZWwgd29ya2VyIGluZm8gKGlmIHRo ZSBhY3Rpb24gaXMKKyAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKSwgb3RoZXJ3aXNl ICp3aW5mbyBpcyBhc3NpZ25lZCBOVUxMLgorICovCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbgor Z2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKip3aW5mbykKK3sKKwkqd2luZm8gPSBOVUxMOworCisJaWYgKGFtX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJcmV0dXJuIFRSQU5TX1BBUkFMTEVMX0FQUExZ OworCX0KKwllbHNlIGlmIChpbl9yZW1vdGVfdHJhbnNhY3Rpb24pCisJeworCQlyZXR1cm4gVFJB TlNfTEVBREVSX0FQUExZOworCX0KKworCS8qCisJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3Np bmcgdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyIGFu ZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KKwkgKi8KKwllbHNlIGlm ICgoKndpbmZvID0gcGFyYWxsZWxfYXBwbHlfZmluZF93b3JrZXIoeGlkKSkpCisJeworCQlyZXR1 cm4gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw7CisJfQorCWVsc2UKKwl7CisJCXJldHVy biBUUkFOU19MRUFERVJfU0VSSUFMSVpFOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IDJlY2FhNWIuLmMzYWNjZjIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtMzY5LDcgKzM2OSw3IEBA IHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0 YSkKIAkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsK IAkJCXN0cmVhbWluZ19naXZlbiA9IHRydWU7CiAKLQkJCWRhdGEtPnN0cmVhbWluZyA9IGRlZkdl dEJvb2xlYW4oZGVmZWwpOworCQkJZGF0YS0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9k ZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3Bo YXNlIikgPT0gMCkKIAkJewpAQCAtNDYxLDEzICs0NjEsMjAgQEAgcGdvdXRwdXRfc3RhcnR1cChM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAkJ ICogd2Ugb25seSBhbGxvdyBpdCB3aXRoIHN1ZmZpY2llbnQgdmVyc2lvbiBvZiB0aGUgcHJvdG9j b2wsIGFuZCB3aGVuCiAJCSAqIHRoZSBvdXRwdXQgcGx1Z2luIHN1cHBvcnRzIGl0LgogCQkgKi8K LQkJaWYgKCFkYXRhLT5zdHJlYW1pbmcpCisJCWlmIChkYXRhLT5zdHJlYW1pbmcgPT0gU1VCU1RS RUFNX09GRikKIAkJCWN0eC0+c3RyZWFtaW5nID0gZmFsc2U7Ci0JCWVsc2UgaWYgKGRhdGEtPnBy b3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkKKwkJ ZWxzZSBpZiAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNUUkVBTV9PTiAmJgorCQkJCSBkYXRhLT5w cm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0pCiAJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKIAkJCQkJIGVycm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQgZG9lcyBu b3Qgc3VwcG9ydCBzdHJlYW1pbmcsIG5lZWQgJWQgb3IgaGlnaGVyIiwKIAkJCQkJCQlkYXRhLT5w cm90b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkpKTsK KwkJZWxzZSBpZiAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNUUkVBTV9QQVJBTExFTCAmJgorCQkJ CSBkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxM RUxfVkVSU0lPTl9OVU0pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkJIGVycm1zZygicmVxdWVzdGVkIHByb3Rv X3ZlcnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBwYXJhbGxlbCBzdHJlYW1pbmcsIG5lZWQgJWQg b3IgaGlnaGVyIiwKKwkJCQkJCQlkYXRhLT5wcm90b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BS T1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSkpKTsKIAkJZWxzZSBpZiAoIWN0eC0+c3Ry ZWFtaW5nKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X1BBUkFNRVRFUl9WQUxVRSksCkBAIC01MTMsNyArNTIwLDcgQEAgcGdvdXRwdXRfc3RhcnR1cChM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwKIAkJ ICogRGlzYWJsZSB0aGUgc3RyZWFtaW5nIGFuZCBwcmVwYXJlZCB0cmFuc2FjdGlvbnMgZHVyaW5n IHRoZSBzbG90CiAJCSAqIGluaXRpYWxpemF0aW9uIG1vZGUuCiAJCSAqLwotCQljdHgtPnN0cmVh bWluZyA9IGZhbHNlOworCQljdHgtPnN0cmVhbWluZyA9IFNVQlNUUkVBTV9PRkY7CiAJCWN0eC0+ dHdvcGhhc2UgPSBmYWxzZTsKIAl9CiB9CkBAIC0xODM5LDYgKzE4NDYsOCBAQCBwZ291dHB1dF9z dHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBY TG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdP dXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJp dmF0ZTsKKwlib29sCQl3cml0ZV9hYm9ydF9pbmZvID0gKGRhdGEtPnN0cmVhbWluZyA9PSBTVUJT VFJFQU1fUEFSQUxMRUwpOwogCiAJLyoKIAkgKiBUaGUgYWJvcnQgc2hvdWxkIGhhcHBlbiBvdXRz aWRlIHN0cmVhbWluZyBibG9jaywgZXZlbiBmb3Igc3RyZWFtZWQKQEAgLTE4NTIsNyArMTg2MSw5 IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAq Y3R4LAogCUFzc2VydChyYnR4bl9pc19zdHJlYW1lZCh0b3B0eG4pKTsKIAogCU91dHB1dFBsdWdp blByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0 KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQpOworCWxvZ2ljYWxyZXBfd3JpdGVfc3Ry ZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQsIGFib3J0X2xzbiwKKwkJ CQkJCQkJICB0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lLCB3cml0ZV9hYm9ydF9pbmZvKTsKKwog CU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hl KHRvcHR4bi0+eGlkLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5k ZXggNzc2NzY1Ny4uN2MwMDlkNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv cHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpA QCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAi bWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9p cGMuaCIKQEAgLTY1Nyw2ICs2NTgsOSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdO QUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhU KSkKIAkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJv Y1NpZ25hbChQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UpKQorCQlIYW5kbGVQYXJhbGxl bEFwcGx5TWVzc2FnZUludGVycnVwdCgpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lH X1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVw dChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKTsKIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmlu ZGV4IDI3ZGVlMjkuLjg0YjUwOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdy ZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzNzksNiArMzM3OSw5 IEBAIFByb2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRp bmcpCiAJCVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAoUGFyYWxs ZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsK IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZl bnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCA5MmYy NGE2Li5kY2ZmNTk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBA IC0yMzAsNiArMjMwLDkgQEAgcGdzdGF0X2dldF93YWl0X2FjdGl2aXR5KFdhaXRFdmVudEFjdGl2 aXR5IHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU46CiAJCQlldmVu dF9uYW1lID0gIkxvZ2ljYWxMYXVuY2hlck1haW4iOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9F VkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU46CisJCQlldmVudF9uYW1lID0gIkxvZ2lj YWxQYXJhbGxlbEFwcGx5TWFpbiI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX1JFQ09W RVJZX1dBTF9TVFJFQU06CiAJCQlldmVudF9uYW1lID0gIlJlY292ZXJ5V2FsU3RyZWFtIjsKIAkJ CWJyZWFrOwpAQCAtMzg4LDYgKzM5MSw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50 SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJ CWV2ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNh c2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRToKKwkJCWV2 ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBwbHlTdGF0ZUNoYW5nZSI7CisJCQlicmVhazsK IAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZlbnRfbmFtZSA9ICJM b2dpY2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j CmluZGV4IDA1YWIwODcuLmYzZGU0ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j CkBAIC0yOTY0LDYgKzI5NjQsMTggQEAgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJ bnRbXSA9CiAJfSwKIAogCXsKKwkJeyJtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uIiwKKwkJCVBHQ19TSUdIVVAsCisJCQlSRVBMSUNBVElPTl9TVUJTQ1JJQkVSUywK KwkJCWdldHRleHRfbm9vcCgiTWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2Vy cyBwZXIgc3Vic2NyaXB0aW9uLiIpLAorCQkJTlVMTCwKKwkJfSwKKwkJJm1heF9wYXJhbGxlbF9h cHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24sCisJCTIsIDAsIE1BWF9CQUNLRU5EUywKKwkJ TlVMTCwgTlVMTCwgTlVMTAorCX0sCisKKwl7CiAJCXsibG9nX3JvdGF0aW9uX2FnZSIsIFBHQ19T SUdIVVAsIExPR0dJTkdfV0hFUkUsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGFtb3VudCBv ZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGZvcmNpbmcgIgogCQkJCQkJICJsb2cgZmlsZSByb3RhdGlv bi4iKSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25m LnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpp bmRleCA4NjhkMjFjLi40ZDAxY2E5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0 Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0zNjAsNiArMzYwLDcgQEAKICNtYXhfbG9naWNhbF9yZXBs aWNhdGlvbl93b3JrZXJzID0gNAkjIHRha2VuIGZyb20gbWF4X3dvcmtlcl9wcm9jZXNzZXMKIAkJ CQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy cworI21heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFr ZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCiAKIAogIy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYmQ5YjA2Ni4uMDFiMmI2MCAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CkBAIC00NDgxLDcgKzQ0ODEsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJ aWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIiBzLnN1YnN0cmVhbSxcbiIpOwogCWVsc2UKLQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICIgZmFsc2UgQVMgc3Vic3RyZWFtLFxuIik7CisJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LCAiICdmJyBBUyBzdWJzdHJlYW0sXG4iKTsKIAogCWlmIChmb3V0LT5yZW1vdGVW ZXJzaW9uID49IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCkBAIC00NjE4 LDggKzQ2MTgsMTAgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJz Y3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWlmIChzdHJjbXAoc3ViaW5mby0+c3ViYmluYXJ5LCAi dCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBiaW5hcnkgPSB0cnVl Iik7CiAKLQlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgImYiKSAhPSAwKQorCWlmIChz dHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBvbiIpOworCWVsc2UgaWYgKHN0cmNtcChzdWJpbmZv LT5zdWJzdHJlYW0sICJwIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIs IHN0cmVhbWluZyA9IHBhcmFsbGVsIik7CiAKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnR3b3Bo YXNlc3RhdGUsIHR3b19waGFzZV9kaXNhYmxlZCkgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICIsIHR3b19waGFzZSA9IG9uIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uaAppbmRleCA3Yjk4NzE0Li4wMTZhZmJjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgKQEAgLTgwLDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEw MCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAli b29sCQlzdWJiaW5hcnk7CQkvKiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgdGhlCiAJ CQkJCQkJCSAqIHB1Ymxpc2hlciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5ICovCiAKLQlib29sCQlz dWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJ CXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuIFNlZQorCQkJ CQkJCQkgKiBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAogCWNoYXIJCXN1YnR3b3BoYXNl c3RhdGU7CS8qIFN0cmVhbSB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAKQEAgLTEyNCw3ICsx MjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQllbmFibGVkOwkJLyog SW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZCAqLwogCWJvb2wJCWJpbmFy eTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyBkYXRhIGluCiAJCQkJ CQkJCSAqIGJpbmFyeSBmb3JtYXQgKi8KLQlib29sCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFt aW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdHJlYW07CQkJLyogQWxs b3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIFNV QlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFsbG93 IHN0cmVhbWluZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJZGlzYWJsZW9uZXJy OwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICog YXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAtMTM3LDYgKzEzOSwy MSBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAkJCQkJCQkJICogc3BlY2lmaWVkIG9y aWdpbiAqLwogfSBTdWJzY3JpcHRpb247CiAKKy8qIERpc2FsbG93IHN0cmVhbWluZyBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnMuICovCisjZGVmaW5lIFNVQlNUUkVBTV9PRkYgJ2YnCisKKy8qCisg KiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVuIHRvIGEgdGVt cG9yYXJ5IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1fT04gJ3QnCisK Ky8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGlt bWVkaWF0ZWx5IHZpYSBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKi8KKyNkZWZpbmUg U1VCU1RSRUFNX1BBUkFMTEVMICdwJworCiBleHRlcm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3Jp cHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNj cmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0 aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0u aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDU2ZDJiYjYuLmY2YmE1ZmYg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC0xNTQsNiArMTU0LDcgQEAgZXh0ZXJuIExpc3QgKmRl ZkdldFF1YWxpZmllZE5hbWUoRGVmRWxlbSAqZGVmKTsKIGV4dGVybiBUeXBlTmFtZSAqZGVmR2V0 VHlwZU5hbWUoRGVmRWxlbSAqZGVmKTsKIGV4dGVybiBpbnQJZGVmR2V0VHlwZUxlbmd0aChEZWZF bGVtICpkZWYpOwogZXh0ZXJuIExpc3QgKmRlZkdldFN0cmluZ0xpc3QoRGVmRWxlbSAqZGVmKTsK K2V4dGVybiBjaGFyIGRlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKTsKIGV4dGVybiB2 b2lkIGVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKERlZkVsZW0gKmRlZmVsLCBQYXJzZVN0YXRlICpw c3RhdGUpIHBnX2F0dHJpYnV0ZV9ub3JldHVybigpOwogCiAjZW5kaWYJCQkJCQkJLyogREVGUkVN X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hl ci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKaW5kZXggZjFl MjgyMS4uZDUxM2VmNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bGxhdW5jaGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVy LmgKQEAgLTE0LDYgKzE0LDcgQEAKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfc3luY193 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CitleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9wYXJh bGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CiAKIGV4dGVybiB2b2lkIEFwcGx5 TGF1bmNoZXJSZWdpc3Rlcih2b2lkKTsKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERh dHVtIG1haW5fYXJnKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXgg N2VhYTRjOS4uMWRhN2IwMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgK QEAgLTMyLDEyICszMiwxNyBAQAogICoKICAqIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVS U0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbiB3aXRoCiAgKiBzdXBwb3J0 IGZvciB0d28tcGhhc2UgY29tbWl0IGRlY29kaW5nIChhdCBwcmVwYXJlIHRpbWUpLiBJbnRyb2R1 Y2VkIGluIFBHMTUuCisgKgorICogTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVS U0lPTl9OVU0gaXMgdGhlIG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbgorICogd2hlcmUgd2Ugc3Vw cG9ydCBhcHBseWluZyBsYXJnZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGluIHBhcmFsbGVsLgor ICogSW50cm9kdWNlZCBpbiBQRzE2LgogICovCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUlO X1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTSAxCiAj ZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNIDIKICNkZWZpbmUgTE9H SUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSAzCi0jZGVmaW5lIExPR0lDQUxSRVBf UFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9O VU0KKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0g NAorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BS T1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTQogCiAvKgogICogTG9naWNhbCBtZXNzYWdl IHR5cGVzCkBAIC0xNzUsNiArMTgwLDE3IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSb2xs YmFja1ByZXBhcmVkVHhuRGF0YQogCWNoYXIJCWdpZFtHSURTSVpFXTsKIH0gTG9naWNhbFJlcFJv bGxiYWNrUHJlcGFyZWRUeG5EYXRhOwogCisvKgorICogVHJhbnNhY3Rpb24gcHJvdG9jb2wgaW5m b3JtYXRpb24gZm9yIHN0cmVhbSBhYm9ydC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJl cFN0cmVhbUFib3J0RGF0YQoreworCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQg c3VieGlkOworCVhMb2dSZWNQdHIJYWJvcnRfbHNuOworCVRpbWVzdGFtcFR6IGFib3J0X3RpbWU7 Cit9IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGE7CisKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBf d3JpdGVfYmVnaW4oU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bik7CiBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfYmVnaW4oU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJICBM b2dpY2FsUmVwQmVnaW5EYXRhICpiZWdpbl9kYXRhKTsKQEAgLTI0Niw5ICsyNjIsMTMgQEAgZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gb3V0LCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4KIGV4dGVybiBUcmFuc2FjdGlvbklkIGxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCQkJCQkgICBMb2dpY2FsUmVw Q29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9z dHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCQkJ CSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0 cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJCQkJ IFRyYW5zYWN0aW9uSWQgKnN1YnhpZCk7CisJCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1Ynhp ZCwKKwkJCQkJCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCQkJCSAgVGltZXN0 YW1wVHogYWJvcnRfdGltZSwKKwkJCQkJCQkJCQkgIGJvb2wgd3JpdGVfYWJvcnRfaW5mbyk7Citl eHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJ CQkJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJ CQkJIGJvb2wgcmVhZF9hYm9ydF9pbmZvKTsKIGV4dGVybiBjaGFyICpsb2dpY2FscmVwX21lc3Nh Z2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24pOwogCiAjZW5kaWYJCQkJCQkJLyogTE9H SUNBTF9QUk9UT19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5k ZXggY2QxYjZlOC4uZGM2OGNkOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3Jr ZXIuaApAQCAtMTIsOCArMTIsMTYgQEAKICNpZm5kZWYgTE9HSUNBTFdPUktFUl9ICiAjZGVmaW5l IExPR0lDQUxXT1JLRVJfSAogCisjaW5jbHVkZSA8c2lnbmFsLmg+CisKK2V4dGVybiBQR0RMTElN UE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nOwor CiBleHRlcm4gdm9pZCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOworZXh0ZXJuIHZv aWQgUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOwogCiBleHRlcm4gYm9v bCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CitleHRlcm4gYm9vbCBJc0xvZ2ljYWxQYXJhbGxlbEFw cGx5V29ya2VyKHZvaWQpOworZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJ bnRlcnJ1cHQodm9pZCk7CitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMo dm9pZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMV09SS0VSX0ggKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9wZ291dHB1dC5oCmluZGV4IDAyMDI3NTUuLjNjMzBkYTggMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vcGdvdXRwdXQuaApAQCAtMjYsNyArMjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBQR091dHB1dERh dGEKIAlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsKIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7 CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJ Ym9vbAkJbWVzc2FnZXM7CiAJYm9vbAkJdHdvX3BoYXNlOwogCWNoYXIJICAgKm9yaWdpbjsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCAwMmI1OWExLi4xNTQ5MTE2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0zMDEsNiArMzAx LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclRYTgogCXsKIAkJVGltZXN0YW1wVHog Y29tbWl0X3RpbWU7CiAJCVRpbWVzdGFtcFR6IHByZXBhcmVfdGltZTsKKwkJVGltZXN0YW1wVHog YWJvcnRfdGltZTsKIAl9CQkJeGFjdF90aW1lOwogCiAJLyoKQEAgLTY2NCw5ICs2NjUsMTEgQEAg ZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBU cmFuc2FjdGlvbklkIHhpZCwKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJDb21taXRDaGlsZChS ZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkgVHJhbnNhY3Rp b25JZCBzdWJ4aWQsIFhMb2dSZWNQdHIgY29tbWl0X2xzbiwKIAkJCQkJCQkJCSBYTG9nUmVjUHRy IGVuZF9sc24pOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIg KnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJuIHZvaWQgUmVv cmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExv Z1JlY1B0ciBsc24sCisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBleHRlcm4g dm9pZCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgb2xkZXN0UnVubmluZ1hpZCk7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJl b3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOworZXh0 ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rp b25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1l KTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJJbnZhbGlkYXRlKFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwogCiBleHRlcm4gdm9pZCBSZW9y ZGVyQnVmZmVyU2V0QmFzZVNuYXBzaG90KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IHhpZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCmluZGV4IDkzMzlmMjkuLjBj OGJiZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaApAQCAtMTgyLDcgKzE4 Miw3IEBAIHR5cGVkZWYgc3RydWN0CiAJCQl1aW50MzIJCXByb3RvX3ZlcnNpb247CS8qIExvZ2lj YWwgcHJvdG9jb2wgdmVyc2lvbiAqLwogCQkJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7CS8q IFN0cmluZyBsaXN0IG9mIHB1YmxpY2F0aW9ucyAqLwogCQkJYm9vbAkJYmluYXJ5OyAvKiBBc2sg cHVibGlzaGVyIHRvIHVzZSBiaW5hcnkgKi8KLQkJCWJvb2wJCXN0cmVhbWluZzsJLyogU3RyZWFt aW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLworCQkJY2hhcgkgICAqc3RyZWFtaW5nX3N0cjsJ LyogU3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLwogCQkJYm9vbAkJdHdvcGhhc2U7 CS8qIFN0cmVhbWluZyBvZiB0d28tcGhhc2UgdHJhbnNhY3Rpb25zIGF0CiAJCQkJCQkJCQkgKiBw cmVwYXJlIHRpbWUgKi8KIAkJCWNoYXIJICAgKm9yaWdpbjsgLyogT25seSBwdWJsaXNoIGRhdGEg b3JpZ2luYXRpbmcgZnJvbSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgKaW5kZXggMmI3MTE0Zi4uZmZjYjM1NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKQEAgLTE3LDggKzE3LDEyIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hs b2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRl ICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZpbGVz ZXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV9t cS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX3RvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bp bi5oIgogCiAKQEAgLTYwLDYgKzY0LDE1IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3Jr ZXIKIAkgKi8KIAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qCisJICogUElEIG9m IGxlYWRlciBhcHBseSB3b3JrZXIgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwg YXBwbHkKKwkgKiB3b3JrZXIsIEludmFsaWRQaWQgb3RoZXJ3aXNlLgorCSAqLworCXBpZF90CQlh cHBseV9sZWFkZXJfcGlkOworCisJLyogSW5kaWNhdGVzIHdoZXRoZXIgYXBwbHkgY2FuIGJlIHBl cmZvcm1lZCBpbiBwYXJhbGxlbC4gKi8KKwlib29sCQlwYXJhbGxlbF9hcHBseTsKKwogCS8qIFN0 YXRzLiAqLwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3Rp bWU7CkBAIC02OCw5ICs4MSw4MiBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJ VGltZXN0YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsKIAorLyogU3RydWN0 IGZvciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0aW9uICov Cit0eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKK3sKKwlMb2dpY2FsUmVwTXNn VHlwZSBjb21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkg KnJlbDsKKworCS8qIFJlbW90ZSBub2RlIGluZm9ybWF0aW9uICovCisJaW50CQkJcmVtb3RlX2F0 dG51bTsJLyogLTEgaWYgaW52YWxpZCAqLworCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKKwlY TG9nUmVjUHRyCWZpbmlzaF9sc247CisJY2hhcgkgICAqb3JpZ2luX25hbWU7Cit9IEFwcGx5RXJy b3JDYWxsYmFja0FyZzsKKworLyoKKyAqIFN0cnVjdCBmb3Igc2hhcmluZyBpbmZvcm1hdGlvbiBi ZXR3ZWVuIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJz LgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCit7CisJc2xv Y2tfdAkJbXV0ZXg7CisKKwkvKgorCSAqIEZsYWcgdXNlZCB0byBlbnN1cmUgY29tbWl0IG9yZGVy aW5nLgorCSAqCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHNldCBpdCB0byBm YWxzZSBhZnRlciBoYW5kbGluZyB0aGUKKwkgKiB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZHMg d2hpbGUgdGhlIGFwcGx5IGxlYWRlciB3aWxsIHdhaXQgZm9yIGl0IHRvCisJICogYmVjb21lIGZh bHNlIGJlZm9yZSBwcm9jZWVkaW5nIGluIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyAoZS5n LgorCSAqIFNUUkVBTV9DT01NSVQvU1RSRUFNX0FCT1JUL1NUUkVBTV9QUkVQQVJFKS4KKwkgKi8K Kwlib29sCQlpbl9wYXJhbGxlbF9hcHBseV94YWN0OworCisJLyogSW5mb3JtYXRpb24gZnJvbSB0 aGUgY29ycmVzcG9uZGluZyBMb2dpY2FsUmVwV29ya2VyIHNsb3QuICovCisJdWludDE2CQlsb2dp Y2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOworCisJaW50CQkJbG9naWNhbHJlcF93b3JrZXJfc2xv dF9ubzsKK30gUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZDsKKworLyoKKyAqIEluZm9ybWF0aW9u IHdoaWNoIGlzIHVzZWQgdG8gbWFuYWdlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8K K3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCit7CisJc2htX21xX2hhbmRs ZSAqbXFfaGFuZGxlOworCisJLyoKKwkgKiBUaGUgcXVldWUgdXNlZCB0byB0cmFuc2ZlciBtZXNz YWdlcyBmcm9tIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKwkgKiB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlci4gTlVMTCBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXRlZAorCSAq IGNsZWFubHkuCisJICovCisJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFfaGFuZGxlOworCisJZHNt X3NlZ21lbnQgKmRzbV9zZWc7CisKKwkvKgorCSAqIFRydWUgaWYgdGhlIHdvcmtlciBpcyBiZWlu ZyB1c2VkIHRvIHByb2Nlc3MgYSBwYXJhbGxlbCBhcHBseQorCSAqIHRyYW5zYWN0aW9uLiBGYWxz ZSBpbmRpY2F0ZXMgdGhpcyB3b3JrZXIgaXMgYXZhaWxhYmxlIGZvciByZS11c2UuCisJICovCisJ Ym9vbAkJaW5fdXNlOworCisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOworfSBQ YXJhbGxlbEFwcGx5V29ya2VySW5mbzsKKwogLyogTWFpbiBtZW1vcnkgY29udGV4dCBmb3IgYXBw bHkgd29ya2VyLiBQZXJtYW5lbnQgZHVyaW5nIHdvcmtlciBsaWZldGltZS4gKi8KIGV4dGVybiBQ R0RMTElNUE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dDsKIAorZXh0ZXJuIFBHRExMSU1Q T1JUIE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dDsKKworZXh0ZXJuIFBHRExMSU1Q T1JUIEVycm9yQ29udGV4dENhbGxiYWNrICphcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrOworZXh0 ZXJuIFBHRExMSU1QT1JUIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFj a19hcmc7CisKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQ7CisK K2V4dGVybiBQR0RMTElNUE9SVCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpNeVBhcmFsbGVs U2hhcmVkOworCitleHRlcm4gUEdETExJTVBPUlQgTGlzdCAqc3VieGFjdGxpc3Q7CisKIC8qIGxp YnBxcmVjZWl2ZXIgY29ubmVjdGlvbiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBXYWxS ZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm47CiAKQEAgLTc5LDE4ICsxNjUsMjMg QEAgZXh0ZXJuIFBHRExMSU1QT1JUIFN1YnNjcmlwdGlvbiAqTXlTdWJzY3JpcHRpb247CiBleHRl cm4gUEdETExJTVBPUlQgTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyOwogCiBl eHRlcm4gUEdETExJTVBPUlQgYm9vbCBpbl9yZW1vdGVfdHJhbnNhY3Rpb247CitleHRlcm4gUEdE TExJTVBPUlQgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbjsKK2V4dGVybiBQR0RMTElNUE9S VCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqc3RyZWFtX2FwcGx5X3dvcmtlcjsKIAogZXh0ZXJu IHZvaWQgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2Fs UmVwV29ya2VyICpsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAog CQkJCQkJCQkJCQkJYm9vbCBvbmx5X3J1bm5pbmcpOwogZXh0ZXJuIExpc3QgKmxvZ2ljYWxyZXBf d29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpOwotZXh0ZXJuIHZvaWQg bG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIg KnN1Ym5hbWUsCi0JCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkKTsKK2V4dGVybiBib29s IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFy ICpzdWJuYW1lLAorCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCSBk c21faGFuZGxlIHN1Yndvcmtlcl9kc20pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJf c3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtl cl9zdG9wX2J5X3Nsb3QoaW50IHNsb3Rfbm8sIHVpbnQxNiBnZW5lcmF0aW9uKTsKIGV4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CiBleHRl cm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXBfcHRyKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlcik7CiAKIGV4dGVybiBpbnQJbG9naWNhbHJlcF9zeW5jX3dvcmtlcl9jb3VudChPaWQgc3Vi aWQpOworZXh0ZXJuIGludAlsb2dpY2FscmVwX3BhcmFsbGVsX2FwcGx5X3dvcmtlcl9jb3VudChP aWQgc3ViaWQpOwogCiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2Fs UmVwKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJICAgY2hhciAqb3JpZ2lubmFt ZSwgU2l6ZSBzem9yaWdpbm5hbWUpOwpAQCAtMTAzLDEwICsxOTQsNTAgQEAgZXh0ZXJuIHZvaWQg cHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2 b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVp ZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIGFwcGx5X2Rp c3BhdGNoKFN0cmluZ0luZm8gcyk7CisKK2V4dGVybiB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3Jp cHRpb24odm9pZCk7CisKK2V4dGVybiB2b2lkIEluaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKTsK KworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCitleHRlcm4gdm9pZCBh cHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworCisvKiBQYXJhbGxlbCBhcHBseSB3b3Jr ZXIgc2V0dXAgYW5kIGludGVyYWN0aW9ucyAqLworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlf c3RhcnRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqcGFyYWxsZWxfYXBwbHlfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOwor ZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfc2V0X2luX3hhY3QoUGFyYWxsZWxBcHBseVdvcmtl clNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJCQkJCSAgIGJvb2wgaW5feGFjdCk7CitleHRlcm4gdm9p ZCBwYXJhbGxlbF9hcHBseV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm8sCisJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gdm9pZCBwYXJhbGxl bF9hcHBseV93YWl0X2Zvcl94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm8pOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCisJCQkJCQkJCQkgY29uc3Qgdm9pZCAqZGF0 YSk7CisKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0 aW9uSWQgY3VycmVudF94aWQsIFRyYW5zYWN0aW9uSWQgdG9wX3hpZCk7CitleHRlcm4gdm9pZCBw YXJhbGxlbF9hcHBseV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJv cnRfZGF0YSk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKHZv aWQpOworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2b2lkKTsK KworI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFwcGx5 X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90YWJs ZXN5bmNfd29ya2VyKHZvaWQpCiB7CiAJcmV0dXJuIE9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29y a2VyLT5yZWxpZCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fbGVhZGVyX2FwcGx5X3dv cmtlcih2b2lkKQoreworCXJldHVybiAoIU9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5y ZWxpZCkgJiYKKwkJCSFpc1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKSk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKHZvaWQp Cit7CisJcmV0dXJuIGlzUGFyYWxsZWxBcHBseVdvcmtlcihNeUxvZ2ljYWxSZXBXb3JrZXIpOwor fQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j c2lnbmFsLmgKaW5kZXggZWU2MzY5MC4uOTNhNTFmNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFs LmgKQEAgLTM1LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9T VE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCiAJ UFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQUk9D U0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkg Y29udGV4dHMgKi8KKwlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3NhZ2Ug ZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCiAKIAkvKiBSZWNvdmVyeSBjb25mbGljdCBy ZWFzb25zICovCiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSwKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dh aXRfZXZlbnQuaAppbmRleCA2ZjJkNTYxLi5jNjUxYWQyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5o CkBAIC00Miw2ICs0Miw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVS X01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJ Q0FMX0xBVU5DSEVSX01BSU4sCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01B SU4sCiAJV0FJVF9FVkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFNLAogCVdBSVRfRVZFTlRfU1lTTE9H R0VSX01BSU4sCiAJV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfTUFJTiwKQEAgLTEwNSw2ICsxMDYs NyBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0FMTE9DQVRF LAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfRUxFQ1QsCiAJV0FJVF9FVkVOVF9IQVNI X0dST1dfQlVDS0VUU19SRUlOU0VSVCwKKwlXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQ TFlfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9F VkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFfSU5URVJOQUws CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggYzEzZDIx OC4uMGY2NWNjNyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3Jp cHRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91 dApAQCAtMjU1LDkgKzI1NSw5IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzbG90X25hbWUgPSBOT05FKTsKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViOwotLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KKy0tIGZh aWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuIG9yICdwYXJhbGxlbCcKIENSRUFURSBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVh bWluZyA9IGZvbyk7Ci1FUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUK K0VSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciAicGFyYWxsZWwi CiAtLSBub3cgaXQgd29ya3MKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENP Tk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1 YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IHRydWUpOwogV0FSTklORzogIHN1 YnNjcmlwdGlvbiB3YXMgY3JlYXRlZCwgYnV0IGlzIG5vdCBjb25uZWN0ZWQKQEAgLTI2OSw2ICsy NjksMTQgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxs eSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg dCAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVh bWluZyA9IHBhcmFsbGVsKTsKK1xkUnMrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcg fCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9u b3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwICAgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorKDEgcm93 KQorCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0g ZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFt ZSA9IE5PTkUpOwogXGRScysKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNj cmlwdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCmluZGV4 IGVhZWFkZTguLjc5OTFhYmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNj cmlwdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbApA QCAtMTY3LDcgKzE2Nyw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzbG90X25hbWUgPSBOT05FKTsKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi OwogCi0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0cmVh bWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQ VUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gZm9v KTsKIAogLS0gbm93IGl0IHdvcmtzCkBAIC0xNzUsNiArMTc1LDEwIEBAIENSRUFURSBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCcgUFVCCiAKIFxkUnMrCiAKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CisKK1xkUnMrCisKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAKZGlmZiAtLWdp dCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKaW5kZXggZDliODM5Yy4uMjZjZThiZSAxMDA2NDQKLS0tIGEvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKQEAgLTE0NzIsNiArMTQ3Miw3IEBAIExvZ2ljYWxSZXBSZWxJZAogTG9naWNhbFJl cFJlbE1hcEVudHJ5CiBMb2dpY2FsUmVwUmVsYXRpb24KIExvZ2ljYWxSZXBSb2xsYmFja1ByZXBh cmVkVHhuRGF0YQorTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQogTG9naWNhbFJlcFR1cGxlRGF0 YQogTG9naWNhbFJlcFR5cAogTG9naWNhbFJlcFdvcmtlcgpAQCAtMTY2Myw2ICsxNjY0LDkgQEAg T3ZlcnJpZGVTdGFja0VudHJ5CiBPdmVycmlkaW5nS2luZAogUEFDRV9IRUFERVIKIFBBQ0wKK1Bh cmFsbGVsQXBwbHlXb3JrZXJFbnRyeQorUGFyYWxsZWxBcHBseVdvcmtlckluZm8KK1BhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQKIFBBVEgKIFBCT09MCiBQQ3R4dEhhbmRsZQpAQCAtMjc4NCw2ICsy Nzg4LDcgQEAgVHJhbnNhY3Rpb25TdG10S2luZAogVHJhbnNmb3JtSW5mbwogVHJhbnNmb3JtSnNv blN0cmluZ1ZhbHVlc1N0YXRlCiBUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlCitUcmFuc0FwcGx5QWN0 aW9uCiBUcmdtQXJjCiBUcmdtQXJjSW5mbwogVHJnbUJvdW5kCi0tIAoyLjcuMi53aW5kb3dzLjEK Cg== --_007_OS0PR01MB57160760B34E1655718F4D1994249OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v38-0004-Retrict-parallel-for-partitioned-table.patch" Content-Description: v38-0004-Retrict-parallel-for-partitioned-table.patch Content-Disposition: attachment; filename="v38-0004-Retrict-parallel-for-partitioned-table.patch"; size=18914; creation-date="Fri, 14 Oct 2022 09:04:00 GMT"; modification-date="Fri, 14 Oct 2022 09:08:09 GMT" Content-Transfer-Encoding: base64 RnJvbSBlM2M3YTUwZGQ3NDRjYWE5YjI5ZjY4ODJkNzdjYzNiYTQzOTU1Y2Q0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IE1vbiwgMTAgT2N0IDIwMjIgMTE6NTU6NTggKzA4MDAKU3ViamVjdDogW1BBVENI IHYzOCA0LzZdIFJldHJpY3QgcGFyYWxsZWwgZm9yIHBhcnRpdGlvbmVkIHRhYmxlCgpEaXNhbGxv dyByZXBsaWNhdGluZyBmcm9tIG9yIHRvIGEgcGFydGl0aW9uZWQgdGFibGUgaW4gcGFyYWxsZWwg c3RyZWFtaW5nCm1vZGUuIFRoaXMgaXMgdG8gYXZvaWQgdGhlIGRlYWRsb2NrIGNhc2VzIHdoZW4g dGhlIHBhcnRpdGlvbmVkIHRhYmxlJ3MKc3RydWN0dXJlIGlzIGRpZmZlcmVudCBiZXR3ZWVuIHB1 Ymxpc2hlciBhbmQgc3Vic2NyaWJlci4KCi0tLQogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwg ICAgICAgICAgICAgICAgICAgIHwgIDExICsrCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJz Y3JpcHRpb24uc2dtbCAgICAgfCAgIDggKy0KIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYyB8ICAgNyAtLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9wcm90by5jICAgICAgIHwgIDEyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3JlbGF0aW9uLmMgICAgfCAgMjQgKystLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYyAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxw cm90by5oICAgICAgICB8ICAgNiArLQogLi4uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZl dHkucGwgICAgICAgIHwgMTEzICsrKysrKysrKysrKysrKystLQogOSBmaWxlcyBjaGFuZ2VkLCAx NTggaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCBjNmEw ZTgwYjNmLi4wNTY2MTUzZTYyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtNjM1Miw2ICs2MzUyLDE3IEBA IHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZ X1NZU1RFTTsiCiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisg ICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDg8L3Rlcm0+CisgICAgICAgPGxp c3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSByZWxhdGlvbiBraW5kIChzYW1l IGFzCisgICAgICAgICA8c3RydWN0ZmllbGQ+cmVsa2luZDwvc3RydWN0ZmllbGQ+IGluIDxzdHJ1 Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3RuYW1lPikuCisgICAgICAgICBUaGlzIGZpZWxkIGlzIGF2 YWlsYWJsZSBzaW5jZSBwcm90b2NvbCB2ZXJzaW9uIDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAg ICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgIDx2YXJsaXN0ZW50 cnk+CiAgICAgICAgPHRlcm0+SW50MTY8L3Rlcm0+CiAgICAgICAgPGxpc3RpdGVtPgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCA3OTI1MGFjYWY1Li42YThj ODM5ZGNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24u c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAt MjQ1LDExICsyNDUsMTUgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgICB0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIGluIGEK ICAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBy ZW1vdGUgdHJhbnNhY3Rpb24KICAgICAgICAgICBtaWdodCBub3QgYmUgcmVwb3J0ZWQgaW4gdGhl IHNlcnZlciBsb2cuCi0gICAgICAgICAgVGhlcmUgYXJlIHR3byBwcmVyZXF1aXNpdGVzIGZvciB1 c2luZyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4KKyAgICAgICAgICBUaGVyZSBhcmUgc29t ZSBwcmVyZXF1aXNpdGVzIGZvciB1c2luZyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4KICAg ICAgICAgICBtb2RlOiAxKSB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgdGFibGUgb24gdGhlIHN1 YnNjcmliZXItc2lkZSBtdXN0CiAgICAgICAgICAgYWxzbyBiZSB0aGUgdW5pcXVlIGNvbHVtbiBv biB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZQogICAgICAgICAgIGFueSBu b24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVyLXNpZGUgcmVwbGlj YXRlZAotICAgICAgICAgIHRhYmxlLgorICAgICAgICAgIHRhYmxlOyAzKSBDaGFuZ2VzIG9uIGEg cGFydGl0aW9uZWQgdGFibGUgKG9yIG9uIGl0cyBwYXJ0aXRpb25zKQorICAgICAgICAgIGNvbnRh aW5lZCBpbiB0aGUgcHVibGljYXRpb24gY2Fubm90IGJlIHB1Ymxpc2hlZCB1c2luZyB0aGUgaWRl bnRpdHkKKyAgICAgICAgICBhbmQgc2NoZW1hIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZS4gQW5k IHRoZSBub24tcGFydGl0aW9uZWQgdGFibGUgb24KKyAgICAgICAgICB0aGUgcHVibGlzaGVyLXNp ZGUgY2Fubm90IGJlIGEgcGFydGl0aW9uZWQgdGFibGUgb24gdGhlCisgICAgICAgICAgc3Vic2Ny aWJlci1zaWRlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAg IDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA4ODQ3M2FhNjY0Li45MjFiNmM1MmFiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxs ZWx3b3JrZXIuYwpAQCAtMTEwNSwxMyArMTEwNSw2IEBAIHBhcmFsbGVsX2FwcGx5X3JlbGF0aW9u X2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogCWlmICghTXlMb2dpY2FsUmVwV29y a2VyLT5wYXJhbGxlbF9hcHBseSkKIAkJcmV0dXJuOwogCi0JLyoKLQkgKiBQYXJ0aXRpb24gdGFi bGUgY2hlY2tzIGFyZSBkb25lIGxhdGVyIGluIGZ1bmN0aW9uCi0JICogYXBwbHlfaGFuZGxlX3R1 cGxlX3JvdXRpbmcuCi0JICovCi0JaWYgKHJlbC0+bG9jYWxyZWwtPnJkX3JlbC0+cmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQotCQlyZXR1cm47Ci0KIAlpZiAoIXJlbC0+cGFy YWxsZWxfYXBwbHlfdmFsaWQpCiAJCWxvZ2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxfYXBwbHko cmVsKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90 by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCmluZGV4IGJkNDA2 YTA3NWYuLmNkZGE1OTA2ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3Rv LmMKQEAgLTcyOCw3ICs3MjgsNyBAQCBsb2dpY2FscmVwX3dyaXRlX21lc3NhZ2UoU3RyaW5nSW5m byBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKICAqLwogdm9pZAogbG9n aWNhbHJlcF93cml0ZV9yZWwoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBSZWxh dGlvbiByZWwsCi0JCQkJCSBCaXRtYXBzZXQgKmNvbHVtbnMpCisJCQkJCSBCaXRtYXBzZXQgKmNv bHVtbnMsIGJvb2wgd3JpdGVfcmVsa2luZCkKIHsKIAljaGFyCSAgICpyZWxuYW1lOwogCkBAIC03 NDksNiArNzQ5LDEwIEBAIGxvZ2ljYWxyZXBfd3JpdGVfcmVsKFN0cmluZ0luZm8gb3V0LCBUcmFu c2FjdGlvbklkIHhpZCwgUmVsYXRpb24gcmVsLAogCS8qIHNlbmQgcmVwbGljYSBpZGVudGl0eSAq LwogCXBxX3NlbmRieXRlKG91dCwgcmVsLT5yZF9yZWwtPnJlbHJlcGxpZGVudCk7CiAKKwkvKiBT ZW5kIHJlbGF0aW9uIGtpbmQgaWYgbmVlZGVkLiAqLworCWlmICh3cml0ZV9yZWxraW5kKQorCQlw cV9zZW5kYnl0ZShvdXQsIHJlbC0+cmRfcmVsLT5yZWxraW5kKTsKKwogCS8qIHNlbmQgdGhlIGF0 dHJpYnV0ZSBpbmZvICovCiAJbG9naWNhbHJlcF93cml0ZV9hdHRycyhvdXQsIHJlbCwgY29sdW1u cyk7CiB9CkBAIC03NTcsNyArNzYxLDcgQEAgbG9naWNhbHJlcF93cml0ZV9yZWwoU3RyaW5nSW5m byBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBSZWxhdGlvbiByZWwsCiAgKiBSZWFkIHRoZSByZWxh dGlvbiBpbmZvIGZyb20gc3RyZWFtIGFuZCByZXR1cm4gYXMgTG9naWNhbFJlcFJlbGF0aW9uLgog ICovCiBMb2dpY2FsUmVwUmVsYXRpb24gKgotbG9naWNhbHJlcF9yZWFkX3JlbChTdHJpbmdJbmZv IGluKQorbG9naWNhbHJlcF9yZWFkX3JlbChTdHJpbmdJbmZvIGluLCBib29sIHJlYWRfcmVsa2lu ZCkKIHsKIAlMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCA9IHBhbGxvYyhzaXplb2YoTG9naWNhbFJl cFJlbGF0aW9uKSk7CiAKQEAgLTc3MCw2ICs3NzQsMTAgQEAgbG9naWNhbHJlcF9yZWFkX3JlbChT dHJpbmdJbmZvIGluKQogCS8qIFJlYWQgdGhlIHJlcGxpY2EgaWRlbnRpdHkuICovCiAJcmVsLT5y ZXBsaWRlbnQgPSBwcV9nZXRtc2dieXRlKGluKTsKIAorCS8qIFJlYWQgdGhlIHJlbGF0aW9uIGtp bmQgaWYgbmVlZGVkLiAqLworCWlmIChyZWFkX3JlbGtpbmQpCisJCXJlbC0+cmVsa2luZCA9IHBx X2dldG1zZ2J5dGUoaW4pOworCiAJLyogR2V0IGF0dHJpYnV0ZSBkZXNjcmlwdGlvbiAqLwogCWxv Z2ljYWxyZXBfcmVhZF9hdHRycyhpbiwgcmVsKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IDY5NTI0NDExMGIuLmU1ZWZkYjNiZDQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTIyNCw2ICsyMjQsNyBA QCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwp CiAJCWVudHJ5LT5yZW1vdGVyZWwuYXR0dHlwc1tpXSA9IHJlbW90ZXJlbC0+YXR0dHlwc1tpXTsK IAl9CiAJZW50cnktPnJlbW90ZXJlbC5yZXBsaWRlbnQgPSByZW1vdGVyZWwtPnJlcGxpZGVudDsK KwllbnRyeS0+cmVtb3RlcmVsLnJlbGtpbmQgPSByZW1vdGVyZWwtPnJlbGtpbmQ7CiAJZW50cnkt PnJlbW90ZXJlbC5hdHRrZXlzID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHRrZXlzKTsKIAllbnRy eS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsK IAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKQEAgLTM1MSwxMCArMzUyLDExIEBAIGxv Z2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkp CiAgKiB3b3JrZXIgYW5kIGFzc2lnbiB0aGUgJ3BhcmFsbGVsX2FwcGx5X3ZhbGlkJyBmbGFnIGFu ZAogICogJ3BhcmFsbGVsX2FwcGx5X2RldGFpbHMnIGZpZWxkLgogICoKLSAqIFRoZXJlIGFyZSB0 d28gcmVxdWlyZW1lbnRzIGZvciBhcHBseWluZyBjaGFuZ2VzIHVzaW5nIGEgcGFyYWxsZWwgYXBw bHkKLSAqIHdvcmtlcjogMSkgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHRhYmxlIG9uIHRoZSBz dWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28KLSAqIGJlIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRo ZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlIGFueQotICogbm9uLWltbXV0YWJs ZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQgdGFibGUu CisgKiBUaGVyZSBhcmUgc29tZSByZXF1aXJlbWVudHMgZm9yIGFwcGx5aW5nIGNoYW5nZXMgdXNp bmcgYSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyOiAxKSByZXBsaWNhdGUgZnJvbSBvciBpbnRv IGEgcGFydGl0aW9uZWQgdGFibGUgaXMgbm90IGFsbG93ZWQ7IDIpIHRoZQorICogdW5pcXVlIGNv bHVtbiBpbiB0aGUgdGFibGUgb24gdGhlIHN1YnNjcmliZXItc2lkZSBzaG91bGQgYWxzbyBiZSB0 aGUgdW5pcXVlCisgKiBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlOyAzKSB0aGVyZSBjYW5u b3QgYmUgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zCisgKiB1c2VkIGJ5IHRoZSBzdWJzY3Jp YmVyLXNpZGUgcmVwbGljYXRlZCB0YWJsZS4KICAqCiAgKiBXaXRob3V0IHRoZXNlIHNhZmV0eSBj aGVja3MsIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW8gbWF5IG9jY3VyOiBUaGUgcGFyYWxsZWwKICAq IGFwcGx5IHdvcmtlciBsb2NrcyBhIHJvdyB3aGVuIHByb2Nlc3NpbmcgYSBzdHJlYW1pbmcgdHJh bnNhY3Rpb24sIGFmdGVyCkBAIC0zODUsOSArMzg3LDE3IEBAIGxvZ2ljYWxyZXBfcmVsX21hcmtf cGFyYWxsZWxfYXBwbHkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAogCWVudHJ5LT5w YXJhbGxlbF9hcHBseV92YWxpZCA9IHRydWU7CiAKKwkvKiAxKSBDaGVjayBpZiByZXBsaWNhdGUg ZnJvbSBvciBpbnRvIGEgcGFydGl0aW9uZWQgdGFibGUuICovCisJaWYgKGVudHJ5LT5yZW1vdGVy ZWwucmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFIHx8CisJCWVudHJ5LT5sb2Nh bHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJewor CQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfZGV0YWlscyA9IF8oIlJlcGxpY2F0ZSBmcm9tIG9yIGlu dG8gYSBwYXJ0aXRpb25lZCB0YWJsZSBpcyBub3QgYWxsb3dlZC4iKTsKKwkJcmV0dXJuOworCX0K KwogCS8qCi0JICogRmlyc3QsIGNoZWNrIGlmIHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSByZWxh dGlvbiBvbiB0aGUKLQkgKiBzdWJzY3JpYmVyLXNpZGUgaXMgYWxzbyB0aGUgdW5pcXVlIGNvbHVt biBvbiB0aGUgcHVibGlzaGVyLXNpZGUuCisJICogMikgQ2hlY2sgaWYgdGhlIHVuaXF1ZSBjb2x1 bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUKKwkgKiBpcyBhbHNvIHRo ZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZS4KIAkgKi8KIAl1a2V5ID0gUmVs YXRpb25HZXRJbmRleEF0dHJCaXRtYXAoZW50cnktPmxvY2FscmVsLAogCQkJCQkJCQkJICBJTkRF WF9BVFRSX0JJVE1BUF9LRVkpOwpAQCAtNDEyLDcgKzQyMiw3IEBAIGxvZ2ljYWxyZXBfcmVsX21h cmtfcGFyYWxsZWxfYXBwbHkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAl9CiAKIAkv KgotCSAqIFRoZW4sIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9u IHVzZWQgYnkgdGhlCisJICogMykgQ2hlY2sgaWYgdGhlcmUgaXMgYW55IG5vbi1pbW11dGFibGUg ZnVuY3Rpb24gdXNlZCBieSB0aGUKIAkgKiBzdWJzY3JpYmVyLXNpZGUgcmVsYXRpb24uIExvb2sg Zm9yIGZ1bmN0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHBsYWNlczoKIAkgKiBhLiB0cmlnZ2VyIGZ1 bmN0aW9uczsgYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMgYW5kIGRvbWFpbgog CSAqIGNvbnN0cmFpbnRzOyBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMWU4MTYzZjI2Yy4uMmM0YzQxYWE5NyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yMDIxLDcgKzIw MjEsNyBAQCBhcHBseV9oYW5kbGVfcmVsYXRpb24oU3RyaW5nSW5mbyBzKQogCWlmIChoYW5kbGVf c3RyZWFtZWRfdHJhbnNhY3Rpb24oTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OLCBzKSkKIAkJcmV0 dXJuOwogCi0JcmVsID0gbG9naWNhbHJlcF9yZWFkX3JlbChzKTsKKwlyZWwgPSBsb2dpY2FscmVw X3JlYWRfcmVsKHMsIE15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkpOwogCWxvZ2lj YWxyZXBfcmVsbWFwX3VwZGF0ZShyZWwpOwogCiAJLyogQWxzbyByZXNldCBhbGwgZW50cmllcyBp biB0aGUgcGFydGl0aW9uIG1hcCB0aGF0IHJlZmVyIHRvIHJlbW90ZXJlbC4gKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IGMzYWNjZjI4ZTQuLjBk N2FiYmViMWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YwpAQCAtNzQxLDYgKzc0MSw4IEBAIHNlbmRfcmVsYXRpb25fYW5kX2F0dHJzKFJlbGF0aW9uIHJl bGF0aW9uLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCUxvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwKIAkJCQkJCUJpdG1hcHNldCAqY29sdW1ucykKIHsKKwlQR091dHB1dERhdGEgKmRhdGEg PSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCWJvb2wJCXdy aXRlX3JlbGtpbmQgPSAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNUUkVBTV9QQVJBTExFTCk7CiAJ VHVwbGVEZXNjCWRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsKIAlpbnQJCQlpOwog CkBAIC03NzIsNyArNzc0LDcgQEAgc2VuZF9yZWxhdGlvbl9hbmRfYXR0cnMoUmVsYXRpb24gcmVs YXRpb24sIFRyYW5zYWN0aW9uSWQgeGlkLAogCX0KIAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0 ZShjdHgsIGZhbHNlKTsKLQlsb2dpY2FscmVwX3dyaXRlX3JlbChjdHgtPm91dCwgeGlkLCByZWxh dGlvbiwgY29sdW1ucyk7CisJbG9naWNhbHJlcF93cml0ZV9yZWwoY3R4LT5vdXQsIHhpZCwgcmVs YXRpb24sIGNvbHVtbnMsIHdyaXRlX3JlbGtpbmQpOwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwg ZmFsc2UpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IGQ0 YmM5MmM1ZTIuLmViMTI2MTQzMzUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90 by5oCkBAIC0yNDgsOCArMjQ4LDEwIEBAIGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3JlYWRfdHJ1 bmNhdGUoU3RyaW5nSW5mbyBpbiwKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2Fn ZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAogCQkJ CQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LCBj b25zdCBjaGFyICptZXNzYWdlKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfcmVsKFN0 cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkJIFJlbGF0aW9uIHJlbCwg Qml0bWFwc2V0ICpjb2x1bW5zKTsKLWV4dGVybiBMb2dpY2FsUmVwUmVsYXRpb24gKmxvZ2ljYWxy ZXBfcmVhZF9yZWwoU3RyaW5nSW5mbyBpbik7CisJCQkJCQkJCSBSZWxhdGlvbiByZWwsIEJpdG1h cHNldCAqY29sdW1ucywKKwkJCQkJCQkJIGJvb2wgd3JpdGVfcmVsa2luZCk7CitleHRlcm4gTG9n aWNhbFJlcFJlbGF0aW9uICpsb2dpY2FscmVwX3JlYWRfcmVsKFN0cmluZ0luZm8gaW4sCisJCQkJ CQkJCQkJCSAgIGJvb2wgcmVhZF9yZWxraW5kKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3Jp dGVfdHlwKFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJIE9pZCB0 eXBvaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3R5cChTdHJpbmdJbmZvIGluLCBM b2dpY2FsUmVwVHlwICpsdHlwKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwKaW5kZXggM2FhYTY5OWMwNy4uMjE5 NTA3MDQzNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWlu Z19wYXJhbGxlbF9zYWZldHkucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0 cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwKQEAgLTM0LDcgKzM0LDIwIEBAICRub2RlX3N1YnNj cmliZXItPnN0YXJ0OwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNS RUFURSBUQUJMRSB0ZXN0X3RhYjEgKGEgaW50KSIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYjIgKGEgaW50KSIpOwogJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFi X3BhcnRpdGlvbmVkIChhIGludCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSIpOworCSJDUkVBVEUg VEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNoYXIp IFBBUlRJVElPTiBCWSBSQU5HRShhKSIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIChMSUtFIHRlc3Rf dGFiX3BhcnRpdGlvbmVkKSIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQgQVRUQUNIIFBBUlRJVElPTiB0 ZXN0X3RhYl9wYXJ0aXRpb24gREVGQVVMVCIKKyk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWJfc2NoZW1hX3BhcmVudCAoYSBp bnQpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRB QkxFIHRlc3RfdGFiX3NjaGVtYV9jaGlsZDEgKGEgaW50KSIpOworCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3ZpYXJvb3RfcGFy ZW50IChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChhKSIpOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl92aWFyb290X2NoaWxk MSBQQVJUSVRJT04gT0YgdGVzdF90YWJfdmlhcm9vdF9wYXJlbnQgREVGQVVMVCIpOworJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl92 aWFyb290X2NoaWxkMiAoYSBpbnQpIik7CiAKICMgU2V0dXAgc3RydWN0dXJlIG9uIHN1YnNjcmli ZXIKICMgV2UgbmVlZCB0byB0ZXN0IG5vcm1hbCB0YWJsZSBhbmQgcGFydGl0aW9uIHRhYmxlLgpA QCAtNDksMTkgKzYyLDMzIEBAICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRl c3RfdGFiX3BhcnRpdGlvbiBERUZBVUxUIgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWJfc2NoZW1hX3BhcmVudCAoYSBp bnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYSkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3NjaGVtYV9jaGlsZDEgUEFSVElU SU9OIE9GIHRlc3RfdGFiX3NjaGVtYV9wYXJlbnQgREVGQVVMVCIpOworCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl92aWFyb290 X3BhcmVudCAoYSBpbnQpIFBBUlRJVElPTiBCWSBSQU5HRSAoYSkiKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3ZpYXJvb3Rf Y2hpbGQxIFBBUlRJVElPTiBPRiB0ZXN0X3RhYl92aWFyb290X3BhcmVudCBGT1IgVkFMVUVTIEZS T00gKE1JTlZBTFVFKSBUTyAoMik7Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl92aWFyb290X2NoaWxkMiBQQVJUSVRJT04g T0YgdGVzdF90YWJfdmlhcm9vdF9wYXJlbnQgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoTUFYVkFM VUUpIik7CisKICMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgogbXkgJHB1Ymxpc2hlcl9jb25u c3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOwogJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWJfbm9ybWFsIEZPUiBUQUJMRSB0ZXN0X3RhYjEsIHRlc3RfdGFiMiIpOwogJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRh cF9wdWJfcGFydGl0aW9uZWQgRk9SIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ciskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04g dGVzdF9wdWJfcGFydGl0aW9uZWRfc2NoZW1hIEZPUiBUQUJMRSB0ZXN0X3RhYl9zY2hlbWFfcGFy ZW50LCB0ZXN0X3RhYl9zY2hlbWFfY2hpbGQxOyIKKyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGVzdF9wdWJfcGFydGl0aW9u ZWRfdmlhcm9vdCBGT1IgVEFCTEUgdGVzdF90YWJfdmlhcm9vdF9wYXJlbnQsIHRlc3RfdGFiX3Zp YXJvb3RfY2hpbGQxLCB0ZXN0X3RhYl92aWFyb290X2NoaWxkMiBXSVRIIChQVUJMSVNIX1ZJQV9Q QVJUSVRJT05fUk9PVCk7IgorKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YgogCUNPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9u YW1lPSRhcHBuYW1lJwotCVBVQkxJQ0FUSU9OIHRhcF9wdWJfbm9ybWFsLCB0YXBfcHViX3BhcnRp dGlvbmVkCisJUFVCTElDQVRJT04gdGFwX3B1Yl9ub3JtYWwsIHRhcF9wdWJfcGFydGl0aW9uZWQs CisJdGVzdF9wdWJfcGFydGl0aW9uZWRfc2NoZW1hLCB0ZXN0X3B1Yl9wYXJ0aXRpb25lZF92aWFy b290CiAJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNlKSIpOwog CiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwpAQCAtMTI5LDcg KzE1Niw3IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiApOwogCiAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCi0JcXIvRVJST1I6ICggW0EtWjAtOV0rOik/ IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0 aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwv LAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxh dGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbiIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFt ZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKICMgRHJvcCB0aGUgdW5p cXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCkBAIC0yNTMsNyArMjgw LDcgQEAgJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CiAkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWJfcGFydGl0 aW9uZWQiKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAotCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWlu ZyA9IHBhcmFsbGVsLywKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0 ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb24iIHVzaW5nIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCiAj IERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KQEAgLTM0 Myw3ICszNzAsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogKTsK IAogJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAotCXFyL0VSUk9SOiAoIFtBLVowLTld KzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3Bh cnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFs bGVsLywKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQg cmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb24iIHVzaW5nIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCiAjIERyb3AgZGVm YXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgpAQCAtNDk4LDcgKzUy NSw3IEBAICRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwogJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiX3BhcnRp dGlvbmVkIik7CiAKICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKLQlxci9FUlJPUjog KCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50 ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1p bmcgPSBwYXJhbGxlbC8sCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNh dGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAog IyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KQEAgLTU5 NCw3ICs2MjEsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogKTsK IAogJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAotCXFyL0VSUk9SOiAoIFtBLVowLTld KzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3Bh cnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFs bGVsLywKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQg cmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb24iIHVzaW5nIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCiAjIERyb3AgdGhl IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4K QEAgLTYxMCw2ICs2MzcsNzggQEAgJHJlc3VsdCA9CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKIAkn ZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24g a2V5Jyk7CiAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0 IHRoZSBub24tcGFydGl0aW9uZWQgdGFibGUgb24gdGhlIHB1Ymxpc2hlci1zaWRlIGlzIGEKKyMg cGFydGl0aW9uZWQgdGFibGUgb24gdGhlIHN1YnNjcmliZXItc2lkZS4gQ2hlY2sgdGhlIGVycm9y IHJlcG9ydGVkIGJ5CisjIHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJ TjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiX3NjaGVtYV9wYXJlbnQgU0VMRUNUIGkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIHRlc3RfdGFiX3NjaGVtYV9j aGlsZDEiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8g Y2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9zY2hlbWFf cGFyZW50IiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVs LywKKwkkb2Zmc2V0KTsKKworIyBDaGFuZ2UgdGhlIHN0cmVhbWluZyBvcHRpb24gZnJvbSAicGFy YWxsZWwiIHRvICJvbiIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKHN0cmVhbWlu ZyA9IHRydWUpIgorKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0 byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9zY2hl bWFfcGFyZW50Iik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRv IHN1YnNjcmliZXIgYWZ0ZXIgdW5pZnlpbmcgdGhlIHRhYmxlIHNjaGVtYScpOworCisjIFJlc2V0 IHRoZSBzdHJlYW1pbmcgb3B0aW9uLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoc3RyZWFtaW5nID0gcGFy YWxsZWwpIgorKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2Vk IHRoYXQgdGhlIHBhcnRpdGlvbmVkIHRhYmxlIG9uIHRoZSBwdWJsaXNoZXItc2lkZSBpcworIyBw dWJsaXNoZWQgd2l0aCBzcGVjaWZ5aW5nIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290LiBDaGVj ayB0aGUgZXJyb3IKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4K KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4g Lj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWJfdmlhcm9vdF9wYXJlbnQgU0VMRUNU IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsK KworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIHRlc3Rf dGFiX3ZpYXJvb3RfY2hpbGQyIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICgg W0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVz dF90YWJfdmlhcm9vdF9wYXJlbnQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFt aW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwog JG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_007_OS0PR01MB57160760B34E1655718F4D1994249OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v38-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v38-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v38-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=76275; creation-date="Fri, 14 Oct 2022 09:04:00 GMT"; modification-date="Fri, 14 Oct 2022 09:08:10 GMT" Content-Transfer-Encoding: base64 RnJvbSBjYmM0OTIzM2NiYWQ4MTY2ZmQwZGY5YjgzYjkzMTI4ZDVlNjcxZWZlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2Mzgg Mi82XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMjMyICsrKysr LS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgfCAxNDMg KysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsICAgICB8IDIy MSArKysrLS0tCiAuLi4vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAgICAgICAgICAg fCAyMzMgKysrKystLS0KIC4uLi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgICAg ICAgICB8IDEzNCArKysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRl LnBsICAgIHwgMzk0ICsrKysrKysrLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhh c2Vfc3RyZWFtLnBsICAgICB8IDU0MCArKysrKysrKysrKy0tLS0tLS0KIDcgZmlsZXMgY2hhbmdl ZCwgMTI1MiBpbnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNV9zdHJlYW0ucGwKaW5kZXggY2JhYTMyN2U0NC4uNjVmNDNmMDg4MSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTQ5IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9 CisJICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQn OworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1 bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJl YW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3Ig dGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRl c3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2Yg dHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0g Jyc7CisJbXkgJG91dCA9ICcnOworCisJbXkgJG9mZnNldCA9IDA7CisKKwlteSAkdGltZXIgPSBJ UEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVs dCk7CisKKwlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCisJCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKwkjIElm ICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVl ZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2lu ZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERF QlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJi b3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwor CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7 CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJ TjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxx CisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwg c28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8 MzMzNCksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsK KworCSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBT RVQgKGJpbmFyeSA9IG9uKSIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJF R0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJz Y3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2 NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVt bnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhh dCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8g ZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJs eSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRp bWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCisJIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxf bG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2 NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEn KTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNl dCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30KKwog IyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQo YWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTgwLDEwIEBAICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0 YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1p bmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFw X3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBw bmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAt NDksODIgKzE5NiwyNSBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIp LCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIElu dGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0Ig bGltaXQuCi1teSAkaW4gID0gJyc7Ci1teSAkb3V0ID0gJyc7Ci0KLW15ICR0aW1lciA9IElQQzo6 UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsK LQotbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBc JGluLCBcJG91dCwgJHRpbWVyLAotCW9uX2Vycm9yX3N0b3AgPT4gMCk7Ci0KLSRpbiAuPSBxewot QkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotfTsKLSRoLT5wdW1wX25iOwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1E RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAwMDsKLUNPTU1JVDsKLX0pOwotCi0kaW4g Lj0gcXsKLUNPTU1JVDsKLVxxCi19OwotJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUg bmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVtIGhlcmUKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8 MzMzNCksICdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKK3Rl c3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs IDApOwogCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQotJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi IFNFVCAoYmluYXJ5ID0gb24pIik7Ci0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91 Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkp OwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2Nh bCBkZWZhdWx0cycpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKKyk7CiAKLSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMg b24gdGhlIHN1YnNjcmliZXIsCi0jIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1 YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKLSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3Vy ZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQotIyBwcm9wZXJseSBhZnRl ciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0 eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCi0pOwotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQp Iik7CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxl bCwgYmluYXJ5ID0gb2ZmKSIpOwogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igor ICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiCi0pOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLAotCSdjaGVjayBl eHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAk bm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCmluZGV4IGJjMGE5Y2QwNTMu LjAyMGFkOTZkMWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJl YW1fc3VieGFjdC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1 YnhhY3QucGwKQEAgLTgsNiArOCw5NCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNr IHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNj ZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNr X3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFy YWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVkIHByb2Nl c3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkaXNfcGFyYWxs ZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21l c3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24g dGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIg c28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5k CisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxs ZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1l dGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0 IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkg d29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBh Ym91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3Bh cmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3Jp YmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLCA1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAxMDAwKSBzKGkpOworCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDEsIDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ U0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgMjAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAy NTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1J VDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3Bh cmFsbGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAorCQkn Y2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5k IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVw IHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9z aXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNo ZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjUsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxF IHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElP TiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSw0MSArMTQxLDI2IEBA IG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoICAgIDMsICA1 MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5U IHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg1MDEsICAxMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7Ci1V UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMzOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLCAgMjAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3 fDE2NjcpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1p bmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7 CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBU SU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNo ZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJT Q1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1 Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3 X3N0cmVhbV9kZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5w bAppbmRleCA4NjZmMTUxMmU0Li5kMmNjNDZkMTgyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTdfc3RyZWFtX2RkbC5wbApAQCAtOCw2ICs4LDEzOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNv bXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2Vy Lgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2Zp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv JHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxs IHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgor IyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJl YW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVh bWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgYSBzbWFsbCAo bm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFi IEFERCBDT0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJIyBJZiAi c3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQg dG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJV RzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9z aXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7 CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3Jp YmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1M CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNSwgMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQg Q09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIw MDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRy YW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDIwMDEsIG1kNSgyMDAxOjp0ZXh0KSwgLTIwMDEsIDIqMjAwMSk7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgyMDAyLCBtZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIw MDIpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDJ8 MTk5OXwxMDAyfDEpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4g c3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycK KwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEEgbGFyZ2UgKHN0cmVhbWVk KSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3Jt ZWQKKwkjIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEg c2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFzIHRv IHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAw MCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNPTU1J VDsKKwl9KTsKKworCSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1l ZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEgYWdh aW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRlc3Qu CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwg LTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01NSVQ7 CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJh bGxlbCk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNv dW50KGYpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAw NXwzMDA0fDUpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgZm9yIGJv dGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucycKKwkpOworCisJIyBD bGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bv c3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVS IFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGMsIERST1AgQ09MVU1OIGQsIERST1AgQ09MVU1O IGUsIERST1AgQ09MVU1OIGY7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19w YXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNj cmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9k ZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicp OwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsK QEAgLTM3LDYgKzE2OSwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAog bXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25u c3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAo c3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxODUsMjYgQEAgbXkgJHJlc3VsdCA9CiAJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKIGlzKCRyZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXInKTsKIAotIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9u IHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRl eHQpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQg czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOwot Q09NTUlUOwotfSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBh bmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVH SU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAw MCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNh Y3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBt ZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKLUNPTU1J VDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwot Ci0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3Rf dGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3 YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBBIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVy Zm9ybWVkCi0jIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hl bWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMg dG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDAp IHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOwotQ09NTUlUOwot fSk7Ci0KLSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhp cyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byBy ZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4KLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0g ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCi0JJ2NoZWNrIGRhdGEg d2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVh bWluZyB0cmFuc2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsK KworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVD VCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9y IGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0 ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXIt PnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAppbmRleCA1NTFmMTZkZjZkLi43 NTJlNzlhMDI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFt X3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVh bV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTQ1IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29t cGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAnZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYg KCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8k cGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFt aW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hl Y2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xM QkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUw MSwxMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsK KwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJUk9MTEJBQ0sgVE8g czI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyNTAxLDMwMDApIHMoaSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBz KGkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKKwlDT01NSVQ7 CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJh bGxlbCk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 CisJaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2lu dCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxh cmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQg b2Ygb3JkZXIKKwkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0NTAw KSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKKwlTQVZF UE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoNzAwMSw3NTAwKSBzKGkpOworCVJFTEVBU0UgczI7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDAp IHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJJHJlc3VsdCA9CisJ ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCks CisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3Jp YmVyJyk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVk KSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIHJvbGxiYWNrCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4NTAxLDkwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTAwMSw5NTAwKSBz KGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7CisJUk9MTEJB Q0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0ZWQg b24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJ CSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1 Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNiw2ICsx NzUsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1l ID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNV QlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNh dGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9 IG9uKSIKICk7CkBAIC00OCw4MSArMTkxLDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdj aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2Ug KHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo Myw1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotU0FW RVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczM7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDE1MDEsMjAwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMyOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDAp IHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwzMDAwKSBzKGkpOwotU0FWRVBP SU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczU7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDM1MDEsNDAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0 ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjAwMHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8g c2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKLSMgc3VidHJhbnNhY3Rp b24gUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAwMSw1NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKLVJFTEVBU0UgczI7 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMxOwotQ09NTUlUOwotfSk7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1 bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyNTAw fDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJz Y3JpYmVyJyk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmli ZXIgcmVjZWl2aW5nIHJvbGxiYWNrCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoOTAwMSw5NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5NTAx LDEwMDAwKSBzKGkpOwotUk9MTEJBQ0s7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVm bGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFy YWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJF IGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIK KyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byBy ZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9z dWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5k ZXggNGQ3ZGE4MmI3YS4uOWQ2NzhiMzk5OCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC05LDYgKzksOTEg QEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVh bWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5 IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAo JG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15ICRwYXJh bGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBm aW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQor fQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJl bGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJl IHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwg Y2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNl dCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBh cmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3 YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8g bG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0 aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1 YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVz c2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9u IHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7CisJQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBkIElOVDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMo aSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZFUE9JTlQg czM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIq aSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJQUxURVIgVEFC TEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUwMSwxMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxMDAwfDUwMCksCisJ CSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVy IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2xl YW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBU QUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9k ZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdw dWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICds b2dpY2FsJyk7CkBAIC0zNyw2ICsxMjIsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3Rf dGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJs aXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBf cHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSwzNSArMTM4LDI2IEBAIG15ICRy ZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlz KCRyZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJz Y3JpYmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1M IGFuZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBB REQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMo aSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMy OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3Rh YiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLDIwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwot Uk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1 bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxMDAw fDUwMCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1 YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDAp OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQ VElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VC U0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9w dWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy Ml90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3Bo YXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdmMzdiYS4uNDI2NWQzYjNmNSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKQEAgLTExLDYgKzEx LDIzOSBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUg c3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0 ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworewor CW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkc3RyZWFtaW5nX21vZGUpID0gQF87CisJ bXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5z YWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFs bGVsJykKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxf bWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1v biB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFtZXRlcgor IyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBh bmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJ bXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRz dHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2Zmc2V0X0IgPSAwOworCW15ICRvZmZz ZXRfQyA9IDA7CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi KTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIK KwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKworCSMg U2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVfQi0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IK KwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0MtPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJ CVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZvciBzdWJz Y3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxfcXVlcnlf dW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVf QicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRp bCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBB TkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0 aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRh IGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQg cHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2Ny aWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxs ZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBw cmVwYXJlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9v ayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUK KwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQor CXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21l c3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9DLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KwkJJG5vZGVfQy0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7CisJJG9mZnNldF9D ID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBl bm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyBUaGVuIDJQQyBQUkVQQVJF CisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRu b2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9CLCAkb2Zm c2V0X0IsICRzdHJlYW1pbmdfbW9kZSk7CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0MsICRv ZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0 YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwlteSAkcmVzdWx0ID0KKwkgICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9B LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5z ZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNv bHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMs IGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgY2hlY2sg dGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQ T0lOVC4KKwkjIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJv d3MuCisJIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgorCSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5U LgorCSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyA0LiBEbyByb2xsYmFjayB0 byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCisJIyA1LiBUaGVuIENP TU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlz IGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAg MSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQor CSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9CLT5sb2dmaWxlOworCSRvZmZzZXRfQyA9IC1zICRub2Rl X0MtPmxvZ2ZpbGU7CisKKwkjIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8g U0FWRVBPSU5UCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUJFR0lO OworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKKwkJU0FW RVBPSU5UIHNwX2lubmVyOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lu bmVyOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7CisJCSIpOworCisJJG5vZGVfQS0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwg JHN0cmVhbWluZ19tb2RlKTsKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfQywgJG9mZnNldF9D LCAkc3RyZWFtaW5nX21vZGUpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJl cGFyZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwor CisJIyAyUEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQg UFJFUEFSRUQgJ291dGVyJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hl Y2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBv biBzdWJzY3JpYmVyIEMnKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJz Y3JpYmVyKHMpLgorCSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBP SU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCisJIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBi ZSBjb21taXR0ZWQuCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOwor CWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2Ny aWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAn Um93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9 ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g dGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93 cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisJJHJlc3VsdCA9CisJ ICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNl bnQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2Rl X0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+ IDI7Iik7CisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9C LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9C LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0Mt PnJlbG9hZDsKKwl9Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0 dXAgYSBjYXNjYWRlIG9mIHB1Yi9zdWIgbm9kZXMuCiAjIG5vZGVfQSAtPiBub2RlX0IgLT4gbm9k ZV9DCkBAIC0yNjAsMTYwICs0OTMsMTUgQEAgaXMoJHJlc3VsdCwgcXEoMjEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CiAjIDJQQyArIFNUUkVBTUlORyBU RVNUUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotbXkgJG9sZHBpZF9CID0gJG5vZGVfQS0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7Iik7Ci1teSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiKTsKLQotIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIChzdHJlYW1pbmcgPSBvbikKLQot JG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1Yl9CCi0JU0VUIChzdHJlYW1pbmcgPSBvbik7Iik7Ci0kbm9kZV9DLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKLQlTRVQgKHN0 cmVhbWluZyA9IG9uKSIpOwotCi0jIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0 aWFsaXphdGlvbgotCi0kbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIK LQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFy dCI7Ci0kbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1Qg cGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkgb3Ig ZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1J VCBQUkVQQVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4K LSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyBy ZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3Vn aCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgVGhlbiAyUEMgUFJFUEFSRQotJG5v ZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1 MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBB UkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfQS0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0 cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0 X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFt ZV9DLCAnb24nKTsKIAotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwot JHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5z YWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRu b2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0k bm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0gJG5vZGVf Qi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwz MzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJl ciBCLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwotKTsKLSRyZXN1bHQg PSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMz NHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0pOwot Ci0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMp Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRu b2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotIyBUZXN0IDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5U LgotIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgot IyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgotIyAyLiBSZWNvcmQgYSBTQVZFUE9JTlQuCi0jIDMu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyA0LiBEbyByb2xsYmFjayB0byBTQVZFUE9J TlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCi0jIDUuIFRoZW4gQ09NTUlUIFBSRVBB UkVELgotIwotIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlzIGFib3J0ZWQgbGVh dmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAgMSkuCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNl cHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX0EtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0K LSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQKLSRub2Rl X0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7Ci0JU0FWRVBPSU5UIHNwX2lubmVyOwotCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLQlST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JUFJFUEFSRSBUUkFOU0FDVElP TiAnb3V0ZXInOwotCSIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUg dHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0g ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdf cHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHBy ZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi Q09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0j IGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCi0kcmVz dWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2Ny aWJlciBDJyk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVyKHMp LgotIyBBbGwgdGhlIHN0cmVhbWVkIGRhdGEgKHByaW9yIHRvIHRoZSBTQVZFUE9JTlQpIHNob3Vs ZCBiZSByb2xsZWQgYmFjay4KLSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVk LgotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBx cSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJl c3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBw cmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zv b2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50 IG9uIHN1YnNjcmliZXIgQycpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgz KSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcg bW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFw cG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIz X3R3b3BoYXNlX3N0cmVhbS5wbAppbmRleCA5YjQ1NDEwNmJkLi44MmI1ZTZjMTJlIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKQEAgLTgsNiAr OCwzMDggQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhl IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9y dGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sK KwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15 ICRwYXJhbGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2Fj dGlvbiBmaW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7 CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2gg YXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUg Y2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFy YWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkg JG9mZnNldCA9IDA7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0 IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBh cyBhIDJQQyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgorCSMK KwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRl ciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgSWYg InN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVk IHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1c2lu ZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERF QlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJi b3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEi KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl cgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVw YXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKKwlteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94 YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAn dGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQg b24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dz IGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4g VGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBz dWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBEbyBy b2xsYmFjayBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcg b25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBi ZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1 YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwor CQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlv biBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFi b3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJB Q0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24g aXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKKwkJJ1Jv d3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmln aW5hbCAyIHJvd3MnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBDaGVjayB0 aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0 YXJ0LgorCSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCisJIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUg MlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJl c3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIworCSMgRXhw ZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBj b21taXQuCisJIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9y ZXN0YXJ0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9w cmVwYXJlZF90YWInO30pOworCisJJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRpYXRlJyk7 CisJJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKworCSRub2RlX3B1Ymxpc2hl ci0+c3RhcnQ7CisJJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKwljaGVja19wYXJhbGxlbF9s b2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY29tbWl0 IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBh cmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBS T0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mg d2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFt ZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlz IGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgor CSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dz IG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KKwkj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRh dGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQs IHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4K Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47 CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7 CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hl Y2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7 CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwor CisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhl IDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9s ZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBw cmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIsCisJIyBidXQgdGhl IGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0ZWQKKwkk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoM3wzfDMpLAorCQknY2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0IHdhcyBj b3BpZWQgdG8gc3Vic2NyaWJlcicpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9u IHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERv IElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1JVCBQUkVQQVJFRC4KKwkj IDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQg b24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4g QSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgor CSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgMlBDIGRhdGEg KyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgorCSMgKHRoZSAzMzM0ICsgaW5z ZXJ0ZWQgMSA9IDMzMzUpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMg Rmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNh dGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxl OworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhj ZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3 ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0 cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0 IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdm b29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKKwkJJ1Jvd3MgaW5z ZXJ0ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwor CSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVz dWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisK KwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUg bG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9 IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwpAQCAtNDgsNiArMzUwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0 X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAog CSdwb3N0Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKQEAgLTY0LDIzNiAr MzcwLDMwIEBAIG15ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMg Y29waWVkIHRvIHN1YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15 ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwog aXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlcicpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3Qg MlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMg YSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBF eHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhl IGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIGNo ZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2VydCwgdXBk YXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rp b24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRz IGNvbW1pdHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09N TUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks Ci0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJh bGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBk ZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIu Ci0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVw YXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdp bmFsIDIgcm93cy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwg ZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0J REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHBy ZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJl IHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVj b2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQg ZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBz ZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0j IDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNj cmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQg c3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJF R0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7 Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVy LT5zdG9wKCdpbW1lZGlhdGUnKTsKLQotJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1 YnNjcmliZXItPnN0YXJ0OwotCi0jIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJl cGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQotJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMz MzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNj cmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJF UEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVk IGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlz IGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFD SyBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcg b25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0 ZWQgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0 ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2gg cm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9O ICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJl ZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRz aWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24g c3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBz ZXBhcmF0ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0K LSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsi KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRo ZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVk IHRvIHN1YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3Jp YmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFm dGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBp cyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmli ZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cg SU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8g YSBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cg YXJlIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4K LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBk YXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+ IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRv IGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3Rf cHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRl IG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1p cygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIn KTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2Yg dGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBo b2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJl IHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMg dHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi IFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1 KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5 IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAotLSAKMi4yMy4wLndp bmRvd3MuMQoK --_007_OS0PR01MB57160760B34E1655718F4D1994249OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v38-0003-Add-some-checks-before-using-parallel-apply-work.patch" Content-Description: v38-0003-Add-some-checks-before-using-parallel-apply-work.patch Content-Disposition: attachment; filename="v38-0003-Add-some-checks-before-using-parallel-apply-work.patch"; size=50932; creation-date="Fri, 14 Oct 2022 09:04:00 GMT"; modification-date="Fri, 14 Oct 2022 09:08:11 GMT" Content-Transfer-Encoding: base64 RnJvbSAyMDU5YTU3ZDBmNjg4OWZhOTU1NzYyMjAwNjY3MjgwOTdiMjk0YmQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHYzOCAzLzZdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgcGFyYWxsZWwgYXBwbHkgd29y a2VyIHRvCiBhcHBseSBjaGFuZ2VzCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdHdvIHJl cXVpcmVtZW50czoKMSkgVGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZSBz dWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhlCnVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1 Ymxpc2hlci1zaWRlOwoyKSBUaGVyZSBjYW5ub3QgYmUgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rp b25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZQpyZXBsaWNhdGVkIHRhYmxlLiBMb29rIGZv ciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CiogYS4gVHJpZ2dlciBmdW5jdGlv bnMKKiBiLiBDb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNvbnN0 cmFpbnRzCiogYy4gQ29uc3RyYWludCBleHByZXNzaW9ucwpJdCBpcyBiZXR0ZXIgdG8gb25seSBj aGVjayB0aGUgZm9yZWlnbiBrZXkgd2hlbiBpdCBpcyBkZXRlY3RlZCB0aGF0IHRoZQpwdWJsaXNo ZXIgZG9lcyBub3QgaGF2ZSB0aGUgZm9yZWlnbiBrZXkgYW5kIHRoZSBzdWJzY3JpYmVyIGRvZXMu IEJ1dCB0aGlzCnJlcXVpcmVzIHRoZSBwdWJsaXNoZXIgdG8gc2VuZCBtb3JlIGluZm9ybWF0aW9u LiBJbiBhZGRpdGlvbiwgc2luY2UgZm9yZWlnbiBrZXkKZG9lcyBub3QgdGFrZSBlZmZlY3QgaW4g dGhlIHN1YnNjcmliZXIncyBhcHBseSB3b3JrZXIgYnkgZGVmYXVsdCwgaXQgc2VlbXMgdGhhdApm b3JlaWduIGtleSBkb2VzIG5vdCBoaXQgdGhpcyBFUlJPUiBmcmVxdWVudGx5LiBTbywgb25seSBw ZXJmb3JtIGEgc2ltcGxlIGNoZWNrCmJhc2VkIG9uIHRoZSBzdWJzY3JpYmVyIHNjaGVtYSB3aGVu IGNoZWNraW5nIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gdWVzZCBieQp0cmlnZ2VyLgoKV2l0aG91 dCB0aGVzZSBzYWZldHkgY2hlY2tzLCB0aGUgZm9sbG93aW5nIHNjZW5hcmlvIG1heSBvY2N1cjoK VGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBsb2NrcyBhIHJvdyB3aGVuIHByb2Nlc3NpbmcgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sCmFmdGVyIHRoYXQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg dHJpZXMgdG8gbG9jayB0aGUgc2FtZSByb3cgd2hlbiBwcm9jZXNzaW5nCmFub3RoZXIgbm9uLXN0 cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0aGlzIHRpbWUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IHdhaXRzCmZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGFuZCB0aGUg bG9jayB0byBiZSByZWxlYXNlZCwgaXQgd29uJ3QKc2VuZCBzdWJzZXF1ZW50IGRhdGEgb2YgdGhl IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyOwp0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIHdhaXRzIHRvIHJlY2VpdmUgdGhlIHJlc3Qgb2Ygc3RyZWFt aW5nIHRyYW5zYWN0aW9uCmFuZCBjYW4ndCBmaW5pc2ggdGhpcyB0cmFuc2FjdGlvbi4gTm93IGEg ZGVhZGxvY2sgaGFzIG9jY3VycmVkLCBzbyBib3RoIHdvcmtlcnMKd2lsbCB3YWl0IGluZGVmaW5p dGVseS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAg fCAgIDUgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwg IDQwICsrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAg ODYgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgICAgfCAx OTkgKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAg fCAgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg IDI0ICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jICAgICAgICAgICAgfCAg MTcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICAgICB8ICAgNyAr CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDIgKwog c3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaCAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCAgICAgICAgICAgICB8ICAgMSArCiBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsICAgICAgICAgfCAgIDkgKy0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8ICAgOSArLQogLi4uL3N1 YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsICAgIHwgICA4ICsKIC4uLi9zdWJz Y3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAgICB8ICAgOSArLQogLi4uL3QvMDMy X3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwgICAgICAgIHwgNjE2ICsrKysrKysrKysrKysr KysrKwogMTcgZmlsZXMgY2hhbmdlZCwgMTAyMSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFt aW5nX3BhcmFsbGVsX3NhZmV0eS5wbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwKaW5kZXggMDNmYzA0N2FmNC4uNzkyNTBhY2FmNSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTI0NSw2ICsyNDUsMTEgQEAgQ1JFQVRFIFNV QlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25h bWU8L3JlcGxhY2VhYmwKICAgICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUg dGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIGluIGEKICAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3 b3JrZXIsIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24KICAgICAgICAg ICBtaWdodCBub3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgVGhl cmUgYXJlIHR3byBwcmVyZXF1aXNpdGVzIGZvciB1c2luZyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0 ZXJhbD4KKyAgICAgICAgICBtb2RlOiAxKSB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgdGFibGUg b24gdGhlIHN1YnNjcmliZXItc2lkZSBtdXN0CisgICAgICAgICAgYWxzbyBiZSB0aGUgdW5pcXVl IGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZQorICAgICAg ICAgIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVyLXNp ZGUgcmVwbGljYXRlZAorICAgICAgICAgIHRhYmxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAg ICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCBmM2Q4 YzVlYzViLi44ODQ3M2FhNjY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMTA4NiwzICsxMDg2LDQzIEBAIHBh cmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQodm9pZCkKIAlyZXBsb3JpZ2luX3Nlc3Npb25f b3JpZ2luX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW5fdGltZXN0YW1wID0gMDsKIH0KKworLyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gdGhpcyBy ZWxhdGlvbiBjYW4gYmUgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIu CisgKgorICogQWx0aG91Z2ggdGhlIGNvbW1pdCBvcmRlciBpcyBtYWludGFpbmVkIGJ5IG9ubHkg YWxsb3dpbmcgb25lIHByb2Nlc3MgdG8KKyAqIGNvbW1pdCBhdCBhIHRpbWUsIHRoZSBhY2Nlc3Mg b3JkZXIgdG8gdGhlIHJlbGF0aW9uIGhhcyBjaGFuZ2VkLiBUaGlzIGNvdWxkCisgKiBjYXVzZSB1 bmV4cGVjdGVkIHByb2JsZW1zIHdoZW4gYXBwbHlpbmcgdHJhbnNhY3Rpb25zIHVzaW5nIGEgcGFy YWxsZWwKKyAqIGFwcGx5IHdvcmtlciBpZiB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcmVwbGlj YXRlZCB0YWJsZSBpcworICogaW5jb25zaXN0ZW50IHdpdGggdGhlIHB1Ymxpc2hlci1zaWRlLCBv ciBpZiB0aGUgcmVsYXRpb24gY29udGFpbnMKKyAqIG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLgor ICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFw RW50cnkgKnJlbCkKK3sKKwkvKiBTa2lwIGlmIG5vdCBpbiBwYXJhbGxlbCBtb2RlICovCisJaWYg KCFNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5KQorCQlyZXR1cm47CisKKwkvKgor CSAqIFBhcnRpdGlvbiB0YWJsZSBjaGVja3MgYXJlIGRvbmUgbGF0ZXIgaW4gZnVuY3Rpb24KKwkg KiBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZy4KKwkgKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+ cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVybjsK KworCWlmICghcmVsLT5wYXJhbGxlbF9hcHBseV92YWxpZCkKKwkJbG9naWNhbHJlcF9yZWxfbWFy a19wYXJhbGxlbF9hcHBseShyZWwpOworCisJaWYgKHJlbC0+cGFyYWxsZWxfYXBwbHlfZGV0YWls cyAhPSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNU X05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImNhbm5vdCByZXBsaWNh dGUgdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiB1c2luZyAiCisJCQkJCQkic3Vic2NyaXB0aW9u IHBhcmFtZXRlciAlcyIsCisJCQkJCQlyZWwtPnJlbW90ZXJlbC5uc3BuYW1lLCByZWwtPnJlbW90 ZXJlbC5yZWxuYW1lLAorCQkJCQkJInN0cmVhbWluZyA9IHBhcmFsbGVsIiksCisJCQkJIGVycmRl dGFpbF9pbnRlcm5hbCgiJXMiLCByZWwtPnBhcmFsbGVsX2FwcGx5X2RldGFpbHMpLAorCQkJCSBl cnJoaW50KCJQbGVhc2UgY2hhbmdlIHRvIHVzZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyICVzLiIs CisJCQkJCQkgInN0cmVhbWluZyA9IG9uIikpKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcHJvdG8uYwppbmRleCBkNjE2MGU2NWJjLi5iZDQwNmEwNzVmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC0yMyw3ICsyMyw4IEBACiAvKgogICogUHJv dG9jb2wgbWVzc2FnZSBmbGFncy4KICAqLwotI2RlZmluZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0Ff SURFTlRJVFkgMQorI2RlZmluZSBBVFRSX0lTX1JFUExJQ0FfSURFTlRJVFkJKDEgPDwgMCkKKyNk ZWZpbmUgQVRUUl9JU19VTklRVUUJCQkJKDEgPDwgMSkKIAogI2RlZmluZSBNRVNTQUdFX1RSQU5T QUNUSU9OQUwgKDE8PDApCiAjZGVmaW5lIFRSVU5DQVRFX0NBU0NBREUJCSgxPDwwKQpAQCAtNDAs NiArNDEsNjYgQEAgc3RhdGljIHZvaWQgbG9naWNhbHJlcF9yZWFkX3R1cGxlKFN0cmluZ0luZm8g aW4sIExvZ2ljYWxSZXBUdXBsZURhdGEgKnR1cGxlKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBf d3JpdGVfbmFtZXNwYWNlKFN0cmluZ0luZm8gb3V0LCBPaWQgbnNwaWQpOwogc3RhdGljIGNvbnN0 IGNoYXIgKmxvZ2ljYWxyZXBfcmVhZF9uYW1lc3BhY2UoU3RyaW5nSW5mbyBpbik7CiAKKy8qCisg KiBSZWxhdGlvbkdldFVuaXF1ZUtleUJpdG1hcCAtLSBnZXQgYSBiaXRtYXAgb2YgdW5pcXVlIGF0 dHJpYnV0ZSBudW1iZXJzCisgKgorICogVGhpcyBpcyBzaW1pbGFyIHRvIFJlbGF0aW9uR2V0SWRl bnRpdHlLZXlCaXRtYXAoKSwgYnV0IHJldHVybnMgYSBiaXRtYXAgb2YKKyAqIGluZGV4IGF0dHJp YnV0ZSBudW1iZXJzIGZvciBhbGwgdW5pcXVlIGluZGV4ZXMuCisgKi8KK3N0YXRpYyBCaXRtYXBz ZXQgKgorUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAoUmVsYXRpb24gcmVsKQoreworCUxpc3QJ ICAgKmluZGV4b2lkbGlzdCA9IE5JTDsKKwlMaXN0Q2VsbCAgICppbmRleG9pZHNjYW47CisJQml0 bWFwc2V0ICAqYXR0dW5pcXVlID0gTlVMTDsKKworCWlmICghcmVsLT5yZF9yZWwtPnJlbGhhc2lu ZGV4KQorCQlyZXR1cm4gTlVMTDsKKworCWluZGV4b2lkbGlzdCA9IFJlbGF0aW9uR2V0SW5kZXhM aXN0KHJlbCk7CisKKwlmb3JlYWNoKGluZGV4b2lkc2NhbiwgaW5kZXhvaWRsaXN0KQorCXsKKwkJ T2lkCQkJaW5kZXhvaWQgPSBsZmlyc3Rfb2lkKGluZGV4b2lkc2Nhbik7CisJCVJlbGF0aW9uCWlu ZGV4UmVsOworCQlpbnQJCQlpOworCisJCS8qIExvb2sgdXAgdGhlIGRlc2NyaXB0aW9uIGZvciBp bmRleCAqLworCQlpbmRleFJlbCA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihpbmRleG9pZCk7CisK KwkJaWYgKCFSZWxhdGlvbklzVmFsaWQoaW5kZXhSZWwpKQorCQkJZWxvZyhFUlJPUiwgImNvdWxk IG5vdCBvcGVuIHJlbGF0aW9uIHdpdGggT0lEICV1IiwgaW5kZXhvaWQpOworCisJCWlmICghaW5k ZXhSZWwtPnJkX2luZGV4LT5pbmRpc3VuaXF1ZSkKKwkJeworCQkJUmVsYXRpb25DbG9zZShpbmRl eFJlbCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCS8qIEFkZCByZWZlcmVuY2VkIGF0dHJpYnV0 ZXMgdG8gYXR0dW5pcXVlICovCisJCWZvciAoaSA9IDA7IGkgPCBpbmRleFJlbC0+cmRfaW5kZXgt PmluZG5hdHRzOyBpKyspCisJCXsKKwkJCWludAkJCWF0dHJudW0gPSBpbmRleFJlbC0+cmRfaW5k ZXgtPmluZGtleS52YWx1ZXNbaV07CisKKwkJCS8qCisJCQkgKiBXZSBkb24ndCBpbmNsdWRlIG5v bi1rZXkgY29sdW1ucyBpbnRvIGF0dHVuaXF1ZSBiaXRtYXBzLiBTZWUKKwkJCSAqIFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwLgorCQkJICovCisJCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJewor CQkJCWlmIChpIDwgaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRua2V5YXR0cyAmJgorCQkJCQkhYm1z X2lzX21lbWJlcihhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwg YXR0dW5pcXVlKSkKKwkJCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0dW5pcXVlLAor CQkJCQkJCQkJCQkgICBhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJl cik7CisJCQl9CisJCX0KKwkJUmVsYXRpb25DbG9zZShpbmRleFJlbCk7CisJfQorCWxpc3RfZnJl ZShpbmRleG9pZGxpc3QpOworCisJcmV0dXJuIGF0dHVuaXF1ZTsKK30KKwogLyoKICAqIENoZWNr IGlmIGEgY29sdW1uIGlzIGNvdmVyZWQgYnkgYSBjb2x1bW4gbGlzdC4KICAqCkBAIC05MzMsNyAr OTk0LDggQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24g cmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1 aW50MTYJCW5saXZlYXR0cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0 bWFwc2V0ICAqaWRhdHRycyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29s CQlyZXBsaWRlbnRmdWxsOwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTk1 OCw2ICsxMDIwLDkgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVs YXRpb24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJaWYgKCFyZXBsaWRlbnRmdWxsKQogCQlp ZGF0dHJzID0gUmVsYXRpb25HZXRJZGVudGl0eUtleUJpdG1hcChyZWwpOwogCisJLyogZmV0Y2gg Yml0bWFwIG9mIFVOSVFVRSBhdHRyaWJ1dGVzICovCisJYXR0dW5pcXVlID0gUmVsYXRpb25HZXRV bmlxdWVLZXlCaXRtYXAocmVsKTsKKwogCS8qIHNlbmQgdGhlIGF0dHJpYnV0ZXMgKi8KIAlmb3Ig KGkgPSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzQsNyArMTAzOSwxMSBAQCBs b2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1h cHNldCAqY29sdW1ucykKIAkJaWYgKHJlcGxpZGVudGZ1bGwgfHwKIAkJCWJtc19pc19tZW1iZXIo YXR0LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAogCQkJCQkJ ICBpZGF0dHJzKSkKLQkJCWZsYWdzIHw9IExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWTsK KwkJCWZsYWdzIHw9IEFUVFJfSVNfUkVQTElDQV9JREVOVElUWTsKKworCQlpZiAoYm1zX2lzX21l bWJlcihhdHQtPmF0dG51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJ CQkJCQkgIGF0dHVuaXF1ZSkpCisJCQlmbGFncyB8PSBBVFRSX0lTX1VOSVFVRTsKIAogCQlwcV9z ZW5kYnl0ZShvdXQsIGZsYWdzKTsKIApAQCAtOTg5LDYgKzEwNTgsNyBAQCBsb2dpY2FscmVwX3dy aXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1u cykKIAl9CiAKIAlibXNfZnJlZShpZGF0dHJzKTsKKwlibXNfZnJlZShhdHR1bmlxdWUpOwogfQog CiAvKgpAQCAtMTAwMSw3ICsxMDcxLDggQEAgbG9naWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0lu Zm8gaW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsKQogCWludAkJCW5hdHRzOwogCWNoYXIJICAq KmF0dG5hbWVzOwogCU9pZAkJICAgKmF0dHR5cHM7Ci0JQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5V TEw7CisJQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVM TDsKIAogCW5hdHRzID0gcHFfZ2V0bXNnaW50KGluLCAyKTsKIAlhdHRuYW1lcyA9IHBhbGxvYyhu YXR0cyAqIHNpemVvZihjaGFyICopKTsKQEAgLTEwMTQsOSArMTA4NSwxMyBAQCBsb2dpY2FscmVw X3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAKIAkJ LyogQ2hlY2sgZm9yIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1uICovCiAJCWZsYWdzID0gcHFfZ2V0 bXNnYnl0ZShpbik7Ci0JCWlmIChmbGFncyAmIExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElU WSkKKwkJaWYgKGZsYWdzICYgQVRUUl9JU19SRVBMSUNBX0lERU5USVRZKQogCQkJYXR0a2V5cyA9 IGJtc19hZGRfbWVtYmVyKGF0dGtleXMsIGkpOwogCisJCS8qIENoZWNrIGZvciB1bmlxdWUgY29s dW1uICovCisJCWlmIChmbGFncyAmIEFUVFJfSVNfVU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1z X2FkZF9tZW1iZXIoYXR0dW5pcXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlh dHRuYW1lc1tpXSA9IHBzdHJkdXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiAr MTEwNSw3IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVw UmVsYXRpb24gKnJlbCkKIAlyZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBz ID0gYXR0dHlwczsKIAlyZWwtPmF0dGtleXMgPSBhdHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0g YXR0dW5pcXVlOwogCXJlbC0+bmF0dHMgPSBuYXR0czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4IGU5ODkwNDc2ODEuLjY5NTI0NDExMGIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsx OSwxOSBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9u YW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVu Y3MuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgiCisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUg InV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAi dXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRp YyBNZW1vcnlDb250ZXh0IExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsKQEAgLTkxLDYg Kzk4LDIzIEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQg cmVsb2lkKQogCX0KIH0KIAorLyoKKyAqIFN5c2NhY2hlIGludmFsaWRhdGlvbiBjYWxsYmFjayB0 byByZXNldCBwYXJhbGxlbF9hcHBseV92YWxpZCBmbGFnLgorICovCitzdGF0aWMgdm9pZAorbG9n aWNhbHJlcF9yZWxtYXBfcmVzZXRfcGFyYWxsZWxfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwg dWludDMyIGhhc2h2YWx1ZSkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7CisJTG9naWNh bFJlcFJlbE1hcEVudHJ5ICplbnRyeTsKKworCWlmIChMb2dpY2FsUmVwUmVsTWFwID09IE5VTEwp CisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBMb2dpY2FsUmVwUmVsTWFw KTsKKwl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwp CisJCWVudHJ5LT5wYXJhbGxlbF9hcHBseV92YWxpZCA9IGZhbHNlOworfQorCiAvKgogICogSW5p dGlhbGl6ZSB0aGUgcmVsYXRpb24gbWFwIGNhY2hlLgogICovCkBAIC0xMTYsNiArMTQwLDE2IEBA IGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkKIAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0aW9u IGV2ZW50cy4gKi8KIAlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVDYWxsYmFjayhsb2dpY2FscmVwX3Jl bG1hcF9pbnZhbGlkYXRlX2NiLAogCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwlpZiAoTXlMb2dp Y2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSkKKwl7CisJCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKFBST0NPSUQsCisJCQkJCQkJCQkgIGxvZ2ljYWxyZXBfcmVsbWFwX3Jlc2V0X3Bh cmFsbGVsX2NiLAorCQkJCQkJCQkJICAoRGF0dW0pIDApOworCQlDYWNoZVJlZ2lzdGVyU3lzY2Fj aGVDYWxsYmFjayhUWVBFT0lELAorCQkJCQkJCQkJICBsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9w YXJhbGxlbF9jYiwKKwkJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwl9CiB9CiAKIC8qCkBAIC0xNDIs NiArMTc2LDcgQEAgbG9naWNhbHJlcF9yZWxtYXBfZnJlZV9lbnRyeShMb2dpY2FsUmVwUmVsTWFw RW50cnkgKmVudHJ5KQogCQlwZnJlZShyZW1vdGVyZWwtPmF0dHR5cHMpOwogCX0KIAlibXNfZnJl ZShyZW1vdGVyZWwtPmF0dGtleXMpOworCWJtc19mcmVlKHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsK IAogCWlmIChlbnRyeS0+YXR0cm1hcCkKIAkJZnJlZV9hdHRybWFwKGVudHJ5LT5hdHRybWFwKTsK QEAgLTE5MCw2ICsyMjUsNyBAQCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJl bGF0aW9uICpyZW1vdGVyZWwpCiAJfQogCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0gcmVt b3RlcmVsLT5yZXBsaWRlbnQ7CiAJZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1zX2NvcHko cmVtb3RlcmVsLT5hdHRrZXlzKTsKKwllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19j b3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4 KTsKIH0KIApAQCAtMzEwLDYgKzM0NiwxNjIgQEAgbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFi bGUoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAl9CiB9CiAKKy8qCisgKiBDaGVjayBp ZiBjaGFuZ2VzIG9uIG9uZSByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVs IGFwcGx5CisgKiB3b3JrZXIgYW5kIGFzc2lnbiB0aGUgJ3BhcmFsbGVsX2FwcGx5X3ZhbGlkJyBm bGFnIGFuZAorICogJ3BhcmFsbGVsX2FwcGx5X2RldGFpbHMnIGZpZWxkLgorICoKKyAqIFRoZXJl IGFyZSB0d28gcmVxdWlyZW1lbnRzIGZvciBhcHBseWluZyBjaGFuZ2VzIHVzaW5nIGEgcGFyYWxs ZWwgYXBwbHkKKyAqIHdvcmtlcjogMSkgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHRhYmxlIG9u IHRoZSBzdWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28KKyAqIGJlIHRoZSB1bmlxdWUgY29sdW1u IG9uIHRoZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlIGFueQorICogbm9uLWlt bXV0YWJsZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQg dGFibGUuCisgKgorICogV2l0aG91dCB0aGVzZSBzYWZldHkgY2hlY2tzLCB0aGUgZm9sbG93aW5n IHNjZW5hcmlvIG1heSBvY2N1cjogVGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIgbG9ja3Mg YSByb3cgd2hlbiBwcm9jZXNzaW5nIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBhZnRlcgorICog dGhhdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0cmllcyB0byBsb2NrIHRoZSBzYW1lIHJvdyB3 aGVuIHByb2Nlc3NpbmcKKyAqIGFub3RoZXIgbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0 aGlzIHRpbWUsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgKiB3YWl0cyBmb3IgdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSBhbmQgdGhlIGxvY2sgdG8gYmUgcmVsZWFzZWQs CisgKiBpdCB3b24ndCBzZW5kIHN1YnNlcXVlbnQgZGF0YSBvZiB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIHRvIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyOyB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIHdhaXRzIHRvIHJlY2VpdmUgdGhlIHJlc3Qgb2YKKyAqIHN0cmVhbWluZyB0cmFu c2FjdGlvbiBhbmQgY2FuJ3QgZmluaXNoIHRoaXMgdHJhbnNhY3Rpb24uIE5vdyBhIGRlYWRsb2Nr IGhhcworICogb2NjdXJyZWQsIHNvIGJvdGggd29ya2VycyB3aWxsIHdhaXQgaW5kZWZpbml0ZWx5 LgorICoKKyAqIFdlIGp1c3QgbWFyayB0aGUgcmVsYXRpb24gZW50cnkgYXMgdmFsaWQgaGVyZS4g SWYgY2hhbmdlcyBvbiBvbmUgcmVsYXRpb24KKyAqIGNhbiBub3QgYmUgYXBwbGllZCB1c2luZyBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgc2F2ZSB0aGUgcmVsYXRlZCBkZXRhaWxzCisgKiBpbiAn cGFyYWxsZWxfYXBwbHlfZGV0YWlscycgYW5kIGxlYXZlIGl0IHRvIHBhcmFsbGVsX2FwcGx5X3Jl bGF0aW9uX2NoZWNrKCkKKyAqIHRvIHRocm93IHRoZSBhY3R1YWwgZXJyb3IgaWYgbmVlZGVkLgor ICovCit2b2lkCitsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsX2FwcGx5KExvZ2ljYWxSZXBS ZWxNYXBFbnRyeSAqZW50cnkpCit7CisJQml0bWFwc2V0ICAqdWtleTsKKwlpbnQJCQlpOworCVR1 cGxlRGVzYwl0dXBkZXNjOworCWludAkJCWF0dG51bTsKKworCS8qIFNraXAgaWYgbm90IGluIHBh cmFsbGVsIG1vZGUgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkp CisJCXJldHVybjsKKworCWVudHJ5LT5wYXJhbGxlbF9hcHBseV92YWxpZCA9IHRydWU7CisKKwkv KgorCSAqIEZpcnN0LCBjaGVjayBpZiB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24g b24gdGhlCisJICogc3Vic2NyaWJlci1zaWRlIGlzIGFsc28gdGhlIHVuaXF1ZSBjb2x1bW4gb24g dGhlIHB1Ymxpc2hlci1zaWRlLgorCSAqLworCXVrZXkgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJp dG1hcChlbnRyeS0+bG9jYWxyZWwsCisJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX0tFWSk7 CisKKwlpZiAodWtleSkKKwl7CisJCWkgPSAtMTsKKwkJd2hpbGUgKChpID0gYm1zX25leHRfbWVt YmVyKHVrZXksIGkpKSA+PSAwKQorCQl7CisJCQlhdHRudW0gPSBBdHRyTnVtYmVyR2V0QXR0ck9m ZnNldChpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisKKwkJCWlmIChl bnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCB8fAorCQkJCSFibXNfaXNfbWVtYmVy KGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0sIGVudHJ5LT5yZW1vdGVyZWwuYXR0dW5p cXVlKSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfZGV0YWlscyA9IF8oIlVuaXF1 ZSBjb2x1bW4gb24gdGhlIHN1YnNjcmliZXItc2lkZSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHVu aXF1ZSBjb2x1bW5zIG9uIHRoZSBwdWJsaXNoZXItc2lkZS4iKTsKKwkJCQlibXNfZnJlZSh1a2V5 KTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKworCQlibXNfZnJlZSh1a2V5KTsKKwl9CisKKwkv KgorCSAqIFRoZW4sIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBub24taW1tdXRhYmxlIGZ1bmN0aW9u IHVzZWQgYnkgdGhlCisJICogc3Vic2NyaWJlci1zaWRlIHJlbGF0aW9uLiBMb29rIGZvciBmdW5j dGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisJICogYS4gdHJpZ2dlciBmdW5jdGlvbnM7 IGIuIENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4KKwkgKiBjb25z dHJhaW50czsgYy4gQ29uc3RyYWludCBleHByZXNzaW9uczsKKwkgKi8KKwkvKiBDaGVjayB0aGUg dHJpZ2dlciBmdW5jdGlvbnMuICovCisJaWYgKGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MgIT0g TlVMTCkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCBlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjLT5u dW10cmlnZ2VyczsgaSsrKQorCQl7CisJCQlUcmlnZ2VyICAgICp0cmlnID0gZW50cnktPmxvY2Fs cmVsLT50cmlnZGVzYy0+dHJpZ2dlcnMgKyBpOworCisJCQlpZiAodHJpZy0+dGdlbmFibGVkICE9 IFRSSUdHRVJfRklSRVNfQUxXQVlTICYmCisJCQkJdHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJf RklSRVNfT05fUkVQTElDQSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGZ1bmNfdm9sYXRpbGUo dHJpZy0+dGdmb2lkKSAhPSBQUk9WT0xBVElMRV9JTU1VVEFCTEUpCisJCQl7CisJCQkJZW50cnkt PnBhcmFsbGVsX2FwcGx5X2RldGFpbHMgPSBfKCJUcmlnZ2VyIHVzZXMgbm9uLWltbXV0YWJsZSBm dW5jdGlvbi4iKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUg Y29sdW1ucy4gKi8KKwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihlbnRyeS0+bG9jYWxyZWwp OworCWZvciAoYXR0bnVtID0gMDsgYXR0bnVtIDwgdHVwZGVzYy0+bmF0dHM7IGF0dG51bSsrKQor CXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRu dW0pOworCQlOb2RlCSAgICpkZWZhdWx0ZXhwciA9IE5VTEw7CisKKwkJLyogV2UgZG9uJ3QgY2hl Y2sgZHJvcHBlZCBvciBnZW5lcmF0ZWQgYXR0cmlidXRlcyAqLworCQlpZiAoYXR0LT5hdHRpc2Ry b3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQpCisJCQljb250aW51ZTsKKworCQlkZWZhdWx0ZXhw ciA9IGJ1aWxkX2NvbHVtbl9kZWZhdWx0KGVudHJ5LT5sb2NhbHJlbCwgYXR0bnVtICsgMSk7CisJ CWlmIChkZWZhdWx0ZXhwciAmJiBjb250YWluX211dGFibGVfZnVuY3Rpb25zKGRlZmF1bHRleHBy KSkKKwkJeworCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5X2RldGFpbHMgPSBfKCJUaGUgZGVmYXVs dCBleHByZXNzaW9uIG9mIGNvbHVtbiB1c2VzIG5vbi1pbW11dGFibGUgZnVuY3Rpb24uIik7CisJ CQlyZXR1cm47CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgY29sdW1uIGlzIG9mIGEgRE9NQUlO IHR5cGUsIGRldGVybWluZSB3aGV0aGVyIHRoYXQgZG9tYWluCisJCSAqIGhhcyBhbnkgQ0hFQ0sg ZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90IGltbXV0YWJsZS4KKwkJICovCisJCWlmIChnZXRfdHlw dHlwZShhdHQtPmF0dHR5cGlkKSA9PSBUWVBUWVBFX0RPTUFJTikKKwkJeworCQkJTGlzdAkgICAq ZG9tYWluX2NvbnN0cmFpbnRzOworCQkJTGlzdENlbGwgICAqbGM7CisKKwkJCWRvbWFpbl9jb25z dHJhaW50cyA9IEdldERvbWFpbkNvbnN0cmFpbnRzKGF0dC0+YXR0dHlwaWQpOworCisJCQlmb3Jl YWNoKGxjLCBkb21haW5fY29uc3RyYWludHMpCisJCQl7CisJCQkJRG9tYWluQ29uc3RyYWludFN0 YXRlICpjb24gPSAoRG9tYWluQ29uc3RyYWludFN0YXRlICopIGxmaXJzdChsYyk7CisKKwkJCQlp ZiAoY29uLT5jaGVja19leHByICYmIGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoKE5vZGUgKikg Y29uLT5jaGVja19leHByKSkKKwkJCQl7CisJCQkJCWVudHJ5LT5wYXJhbGxlbF9hcHBseV9kZXRh aWxzID0gXygiVGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gdXNlcyBub24taW1tdXRh YmxlIGZ1bmN0aW9uLiIpOworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJ LyogQ2hlY2sgdGhlIGNvbnN0cmFpbnRzLiAqLworCWlmICh0dXBkZXNjLT5jb25zdHIpCisJewor CQlDb25zdHJDaGVjayAqY2hlY2sgPSB0dXBkZXNjLT5jb25zdHItPmNoZWNrOworCisJCS8qCisJ CSAqIERldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IENIRUNLIGNvbnN0cmFpbnRzIHdoaWNoIGNv bnRhaW5zCisJCSAqIG5vbi1pbW11dGFibGUgZnVuY3Rpb24uCisJCSAqLworCQlmb3IgKGkgPSAw OyBpIDwgdHVwZGVzYy0+Y29uc3RyLT5udW1fY2hlY2s7IGkrKykKKwkJeworCQkJRXhwcgkgICAq Y2hlY2tfZXhwciA9IHN0cmluZ1RvTm9kZShjaGVja1tpXS5jY2Jpbik7CisKKwkJCWlmIChjb250 YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGNoZWNrX2V4cHIpKQorCQkJeworCQkJCWVu dHJ5LT5wYXJhbGxlbF9hcHBseV9kZXRhaWxzID0gXygiQ29uc3RyYWludHMgdXNlIG5vbi1pbW11 dGFibGUgZnVuY3Rpb24uIik7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisJfQorCisJZW50cnkt PnBhcmFsbGVsX2FwcGx5X2RldGFpbHMgPSBOVUxMOworfQorCiAvKgogICogT3BlbiB0aGUgbG9j YWwgcmVsYXRpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSByZW1vdGUgb25lLgogICoKQEAgLTQzOCw2 ICs2MzAsOSBAQCBsb2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCwg TE9DS01PREUgbG9ja21vZGUpCiAJCSAqLwogCQlsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJs ZShlbnRyeSk7CiAKKwkJLyogU2V0IGlmIGNoYW5nZXMgY291bGQgYmUgYXBwbGllZCB1c2luZyBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworCQlsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVs X2FwcGx5KGVudHJ5KTsKKwogCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IHRydWU7CiAJfQogCkBA IC02NTMsNiArODQ4LDcgQEAgbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVs TWFwRW50cnkgKnJvb3QsCiAJCX0KIAkJZW50cnktPnJlbW90ZXJlbC5yZXBsaWRlbnQgPSByZW1v dGVyZWwtPnJlcGxpZGVudDsKIAkJZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1zX2NvcHko cmVtb3RlcmVsLT5hdHRrZXlzKTsKKwkJZW50cnktPnJlbW90ZXJlbC5hdHR1bmlxdWUgPSBibXNf Y29weShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAJfQogCiAJZW50cnktPmxvY2FscmVsID0gcGFy dHJlbDsKQEAgLTY5Niw2ICs4OTIsOSBAQCBsb2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkvKiBTZXQgaWYgdGhlIHRhYmxlJ3MgcmVwbGljYSBp ZGVudGl0eSBpcyBlbm91Z2ggdG8gYXBwbHkgdXBkYXRlL2RlbGV0ZS4gKi8KIAlsb2dpY2FscmVw X3JlbF9tYXJrX3VwZGF0YWJsZShlbnRyeSk7CiAKKwkvKiBTZXQgaWYgY2hhbmdlcyBjb3VsZCBi ZSBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCisJbG9naWNhbHJlcF9y ZWxfbWFya19wYXJhbGxlbF9hcHBseShlbnRyeSk7CisKIAllbnRyeS0+bG9jYWxyZWx2YWxpZCA9 IHRydWU7CiAKIAkvKiBzdGF0ZSBhbmQgc3RhdGVsc24gYXJlIGxlZnQgc2V0IHRvIDAuICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA4YmQ0OTk4 MWYyLi42NDU0NTYwNDllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFi bGVzeW5jLmMKQEAgLTkyNSw2ICs5MjUsNyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFy ICpuc3BuYW1lLCBjaGFyICpyZWxuYW1lLAogCWxyZWwtPmF0dG5hbWVzID0gcGFsbG9jMChNYXhU dXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihjaGFyICopKTsKIAlscmVsLT5hdHR0eXBzID0g cGFsbG9jMChNYXhUdXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihPaWQpKTsKIAlscmVsLT5h dHRrZXlzID0gTlVMTDsKKwlscmVsLT5hdHR1bmlxdWUgPSBOVUxMOwogCiAJLyoKIAkgKiBTdG9y ZSB0aGUgY29sdW1ucyBhcyBhIGxpc3Qgb2YgbmFtZXMuICBJZ25vcmUgdGhvc2UgdGhhdCBhcmUg bm90CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA4ZmU2ODM3 OGUyLi4xZTgxNjNmMjZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMKQEAgLTE1MjMsNiArMTUyMywxNSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5n SW5mbyBzKQogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgogCQkJQXNzZXJ0 KHdpbmZvKTsKIAorCQkJLyoKKwkJCSAqIFVubGlrZSBzdHJlYW1fY29tbWl0LCB3ZSBkb24ndCBu ZWVkIHRvIHdhaXQgaGVyZSBmb3IKKwkJCSAqIHN0cmVhbV9zdG9wIHRvIGZpbmlzaC4gQWxsb3dp bmcgdGhlIG90aGVyIHRyYW5zYWN0aW9uIHRvIGJlCisJCQkgKiBhcHBsaWVkIGJlZm9yZSBzdHJl YW1fc3RvcCBpcyBmaW5pc2hlZCBjYW4gbGVhZCB0byBmYWlsdXJlcyBpZgorCQkJICogdGhlIHVu aXF1ZSBpbmRleC9jb25zdHJhaW50IGlzIGRpZmZlcmVudCBiZXR3ZWVuIHB1Ymxpc2hlciBhbmQK KwkJCSAqIHN1YnNjcmliZXIuIEJ1dCBmb3Igc3VjaCBjYXNlcywgd2UgZG9uJ3QgYWxsb3cgc3Ry ZWFtZWQKKwkJCSAqIHRyYW5zYWN0aW9ucyB0byBiZSBhcHBsaWVkIGluIHBhcmFsbGVsLiBTZWUK KwkJCSAqIHBhcmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrLgorCQkJICovCiAJCQlwYXJhbGxl bF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CiAKIAkJCWVsb2coREVC VUcxLCAiYXBwbGllZCAldSBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsiLCBuY2hhbmdl cyk7CkBAIC0yMTI5LDYgKzIxMzgsOCBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8g cykKIAkvKiBTZXQgcmVsYXRpb24gZm9yIGVycm9yIGNhbGxiYWNrICovCiAJYXBwbHlfZXJyb3Jf Y2FsbGJhY2tfYXJnLnJlbCA9IHJlbDsKIAorCXBhcmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNr KHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9 IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRl OwpAQCAtMjI3Miw2ICsyMjgzLDggQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZShTdHJpbmdJbmZvIHMp CiAJLyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSB1cGRhdGUuICovCiAJY2hlY2tfcmVsYXRpb25f dXBkYXRhYmxlKHJlbCk7CiAKKwlwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjayhyZWwpOwor CiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVf ZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTI0 NDAsNiArMjQ1Myw4IEBAIGFwcGx5X2hhbmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQogCS8qIENo ZWNrIGlmIHdlIGNhbiBkbyB0aGUgZGVsZXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJs ZShyZWwpOwogCisJcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIElu aXRpYWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zv cl9yZWxhdGlvbihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yNjI1LDEzICsy NjQwLDE0IEBAIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAq ZWRhdGEsCiAJfQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJcGFydF9lbnRy eSA9IGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4ocmVsbWFwZW50cnksIHBhcnRyZWwsCisJCQkJ CQkJCQkJICAgYXR0cm1hcCk7CisKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIHVwZGF0ZSBv ciBkZWxldGUgb24gdGhlIGxlYWYgcGFydGl0aW9uLiAqLwogCWlmIChvcGVyYXRpb24gPT0gQ01E X1VQREFURSB8fCBvcGVyYXRpb24gPT0gQ01EX0RFTEVURSkKLQl7Ci0JCXBhcnRfZW50cnkgPSBs b2dpY2FscmVwX3BhcnRpdGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAotCQkJCQkJCQkJ CQkgICBhdHRybWFwKTsKIAkJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHBhcnRfZW50cnkpOwot CX0KKworCXBhcmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKHBhcnRfZW50cnkpOwogCiAJc3dp dGNoIChvcGVyYXRpb24pCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv dHlwY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggODA4 ZjllYmQwZC4uNTExYjIzZDI2MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv dHlwY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0y NTQwLDYgKzI1NDAsMjMgQEAgY29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAq dGNhY2hlLCBPaWQgYXJnMSwgT2lkIGFyZzIpCiAJCXJldHVybiAwOwogfQogCisvKgorICogR2V0 RG9tYWluQ29uc3RyYWludHMgLS0tIGdldCBEb21haW5Db25zdHJhaW50U3RhdGUgbGlzdCBvZiBz cGVjaWZpZWQgZG9tYWluIHR5cGUKKyAqLworTGlzdCAqCitHZXREb21haW5Db25zdHJhaW50cyhP aWQgdHlwZV9pZCkKK3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CisJTGlzdAkgICAqY29u c3RyYWludHMgPSBOSUw7CisKKwl0eXBlbnRyeSA9IGxvb2t1cF90eXBlX2NhY2hlKHR5cGVfaWQs IFRZUEVDQUNIRV9ET01BSU5fQ09OU1RSX0lORk8pOworCisJaWYgKHR5cGVudHJ5LT5kb21haW5E YXRhICE9IE5VTEwpCisJCWNvbnN0cmFpbnRzID0gdHlwZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0 cmFpbnRzOworCisJcmV0dXJuIGNvbnN0cmFpbnRzOworfQorCiAvKgogICogTG9hZCAob3IgcmUt bG9hZCkgdGhlIGVudW1EYXRhIG1lbWJlciBvZiB0aGUgdHlwY2FjaGUgZW50cnkuCiAgKi8KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggMWRhN2IwMWNhNi4uZDRiYzky YzVlMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTExMyw2ICsx MTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsYXRpb24KIAljaGFyCQlyZXBsaWRl bnQ7CQkvKiByZXBsaWNhIGlkZW50aXR5ICovCiAJY2hhcgkJcmVsa2luZDsJCS8qIHJlbW90ZSBy ZWxhdGlvbiBraW5kICovCiAJQml0bWFwc2V0ICAqYXR0a2V5czsJCS8qIEJpdG1hcCBvZiBrZXkg Y29sdW1ucyAqLworCUJpdG1hcHNldCAgKmF0dHVuaXF1ZTsJCS8qIEJpdG1hcCBvZiB1bmlxdWUg Y29sdW1ucyAqLwogfSBMb2dpY2FsUmVwUmVsYXRpb247CiAKIC8qIFR5cGUgbWFwcGluZyBpbmZv ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24u aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IDc4Y2Q3 ZTc3ZjUuLjQwMDM4N2I3OTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxh dGlvbi5oCkBAIC0zMSw2ICszMSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsTWFw RW50cnkKIAlSZWxhdGlvbglsb2NhbHJlbDsJCS8qIHJlbGNhY2hlIGVudHJ5IChOVUxMIHdoZW4g Y2xvc2VkKSAqLwogCUF0dHJNYXAgICAgKmF0dHJtYXA7CQkvKiBtYXAgb2YgbG9jYWwgYXR0cmli dXRlcyB0byByZW1vdGUgb25lcyAqLwogCWJvb2wJCXVwZGF0YWJsZTsJCS8qIENhbiBhcHBseSB1 cGRhdGVzL2RlbGV0ZXM/ICovCisJYm9vbAkJcGFyYWxsZWxfYXBwbHlfdmFsaWQ7CS8qIENhbiBh cHBseSBjaGFuZ2VzIGluIGEKKwkJCQkJCQkJCQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXI/ICov CisJY29uc3QgY2hhciAqcGFyYWxsZWxfYXBwbHlfZGV0YWlsczsJLyogRGV0YWlscyBhYm91dCBu b3QgYmVpbmcgYWJsZSB0bworCQkJCQkJCQkJCSAqIGFwcGx5IGNoYW5nZXMgaW4gYSBwYXJhbGxl bCBhcHBseQorCQkJCQkJCQkJCSAqIHdvcmtlci4gKi8KIAogCS8qIFN5bmMgc3RhdGUuICovCiAJ Y2hhcgkJc3RhdGU7CkBAIC00Nyw0ICs1Miw2IEBAIGV4dGVybiBMb2dpY2FsUmVwUmVsTWFwRW50 cnkgKmxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyCiBl eHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJl bCwKIAkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIHZvaWQgbG9naWNhbHJl cF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KTsK KwogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxSRUxBVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDMwODk1NzFjYTAuLmViNmZkZDlhY2EgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yMjUsNiArMjI1 LDggQEAgZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBT dHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlf cmVwbG9yaWdpbl9zZXR1cCh2b2lkKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3JlcGxv cmlnaW5fcmVzZXQodm9pZCk7CiAKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3JlbGF0aW9u X2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKTsKKwogI2RlZmluZSBpc1BhcmFsbGVs QXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFwcGx5X2xlYWRlcl9waWQgIT0gSW52YWxp ZFBpZCkKIAogc3RhdGljIGlubGluZSBib29sCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy90eXBjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaAppbmRleCA0MzFhZDdm MWIzLi5lZDdjMmU3ZjQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKQEAgLTE5OSw2ICsxOTksOCBAQCBl eHRlcm4gdWludDY0IGFzc2lnbl9yZWNvcmRfdHlwZV9pZGVudGlmaWVyKE9pZCB0eXBlX2lkLCBp bnQzMiB0eXBtb2QpOwogCiBleHRlcm4gaW50CWNvbXBhcmVfdmFsdWVzX29mX2VudW0oVHlwZUNh Y2hlRW50cnkgKnRjYWNoZSwgT2lkIGFyZzEsIE9pZCBhcmcyKTsKIAorZXh0ZXJuIExpc3QgKkdl dERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkKTsKKwogZXh0ZXJuIHNpemVfdCBTaGFyZWRS ZWNvcmRUeXBtb2RSZWdpc3RyeUVzdGltYXRlKHZvaWQpOwogCiBleHRlcm4gdm9pZCBTaGFyZWRS ZWNvcmRUeXBtb2RSZWdpc3RyeUluaXQoU2hhcmVkUmVjb3JkVHlwbW9kUmVnaXN0cnkgKiwKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCA4NWQxZGQ5Mjk1Li5iYWFiZmI0YTZhIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC0zNiw2ICszNiw3IEBAIHRlc3RzICs9IHsKICAg ICAgICd0LzAyOV9vbl9lcnJvci5wbCcsCiAgICAgICAndC8wMzBfb3JpZ2luLnBsJywKICAgICAg ICd0LzAzMV9jb2x1bW5fbGlzdC5wbCcsCisgICAgICAndC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVs X3NhZmV0eS5wbCcsCiAgICAgICAndC8xMDBfYnVncy5wbCcsCiAgICAgXSwKICAgfSwKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDY1ZjQzZjA4ODEuLjZkMWZmOGQ1ZTkg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtMjA1LDggKzIwNSwxMyBA QCBteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAki U0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIpOworIyAic3RyZWFt aW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMs IHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBj b2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx eworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGlt ZXN0YW1wKDApOworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBh cmFsbGVsLCBiaW5hcnkgPSBvZmYpOworfSk7CiAKICRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVy eV91bnRpbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0 X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0 ZSA9ICdzdHJlYW1pbmcnOyIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx Nl9zdHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1f c3VieGFjdC5wbAppbmRleCAwMjBhZDk2ZDFmLi4wZWZhNDFkOTMwIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBAIC0xNTAsOCArMTUwLDEzIEBA IG15ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJT RUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1l ID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0kbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9z dWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworIyAic3RyZWFtaW5nID0gcGFyYWxsZWwi IGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQorIyB0 aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUg dGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0YW1wKDApOworQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK30pOwog CiAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNU IHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlv bl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDQyNjVkM2Iz ZjUuLjg5M2ZhYWEwZjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90 d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29w aGFzZV9jYXNjYWRlLnBsCkBAIC01MDEsNiArNTAxLDE0IEBAIHRlc3Rfc3RyZWFtaW5nKCRub2Rl X0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1c2luZyBzdHJlYW1p bmcgbW9kZSAncGFyYWxsZWwnCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9lcyBub3Qgc3VwcG9ydCBub24taW1tdXRh YmxlIGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBmdW5jdGlvbiBpbiB0aGUgZGVmYXVsdCBl eHByZXNzaW9uIG9mIGNvbHVtbiAiYyIuCiskbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGlt ZXN0YW1wKDApOyIpOworJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRB QkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsi KTsKKwogdGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVf QiwgJGFwcG5hbWVfQywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9z dHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs CmluZGV4IDgyYjVlNmMxMmUuLjJjZDQ1M2MwM2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtMzg0LDggKzM4NCwxMyBAQCBteSAkb2xk cGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChz dHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKyMgInN0cmVhbWluZyA9IHBhcmFsbGVsIiBkb2VzIG5v dCBzdXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFuZ2UKKyMgdGhlIGZ1bmN0 aW9uIGluIHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJjIi4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFi IEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsKK0FMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7Cit9KTsKIAogJG5vZGVf cHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgIT0g JG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYWFhNjk5YzA3Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9z YWZldHkucGwKQEAgLTAsMCArMSw2MTYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgdGhlIHNhZmV0eSBjaGVja3Mg b2Ygc3RyZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uLgorIyBX aXRob3V0IHRoZXNlIHNhZmV0eSBjaGVja3MsIHRoZSBzdWJzY3JpYmVyJ3MgYXBwbHkgd29ya2Vy IG1heSBmYWxsIGludG8gYW4KKyMgaW5maW5pdGUgd2FpdCB3aXRob3V0IHRoZSB1c2VyIGtub3dp bmcuCisjCisjIEZvciBub3JtYWwgdGFibGVzLCB3ZSB1c2UgZGVhZGxvY2stcHJvZHVjaW5nIHRl c3QgY2FzZXMgdG8gZW5zdXJlIHRoYXQgZnV0dXJlCisjIG1vZGlmaWNhdGlvbnMgZG8gbm90IGlu dmFsaWRhdGUgY29uc3RyYWludCBjaGVja3MuCisjCisjIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMs IHdlIGp1c3QgdXNlIHRlc3QgY2FzZXMgdG8gY29uZmlybSB0aGF0IHRoZSBjb25zdHJhaW50Cisj IGNoZWNrcyBhcmUgYXMgZXhwZWN0ZWQuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1 c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGls czsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkb2Zmc2V0ID0gMDsKKworIyBDcmVhdGUgcHVibGlz aGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWlu ZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwknbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0InKTsKKyRub2RlX3B1 Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vi c2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwor JG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIFNl dHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIxIChhIGludCkiKTsKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIyIChhIGlu dCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBU QUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdmFyY2hhciki KTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgorIyBXZSBuZWVkIHRvIHRlc3Qg bm9ybWFsIHRhYmxlIGFuZCBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYjEgKGEgaW50KSIpOworJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90 YWIyIChhIGludCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQgKGEgaW50IHByaW1hcnkga2V5LCBi IHZhcmNoYXIpIFBBUlRJVElPTiBCWSBSQU5HRShhKSIKKyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiAo TElLRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBBVFRBQ0gg UEFSVElUSU9OIHRlc3RfdGFiX3BhcnRpdGlvbiBERUZBVUxUIgorKTsKKworIyBTZXR1cCBsb2dp Y2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXIt PmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9ub3JtYWwgRk9SIFRB QkxFIHRlc3RfdGFiMSwgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0aXRpb25lZCBGT1Ig VEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKKworbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7 Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgIgorCUNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YgorCUNPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBs aWNhdGlvbl9uYW1lPSRhcHBuYW1lJworCVBVQkxJQ0FUSU9OIHRhcF9wdWJfbm9ybWFsLCB0YXBf cHViX3BhcnRpdGlvbmVkCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9 IGZhbHNlKSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcg dGhlIDY0a0IgbGltaXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1l ciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9k ZWZhdWx0KTsKKworbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IHRoZSB1bmlxdWUg Y29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUKKyMgc3Vic2NyaWJlci1zaWRlIGlzIG5vdCB0 aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIENoZWNrIHRoZQorIyBlcnJv ciByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisKKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBub3JtYWwg dGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFVOSVFVRSBJTkRFWCBpZHhfdGFiMSBvbiB0ZXN0X3RhYjEoYSkiKTsKKworJGluIC49IHF7CitC RUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIxIHZhbHVlcygxKSIpOwor CiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVw bGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0 aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJv cCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjEi KTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCitteSAkcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1 bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBp bmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUg dGVzdF90YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRpb24gdGFibGUu Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFV RSBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHggT04gdGVzdF90YWJfcGFydGl0aW9uIChi KSIpOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCisp OworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAt OV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJf cGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFy YWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vi c2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkRST1AgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25faWR4Iik7CisKKyMgV2Fp dCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBw bHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3Vs dCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGlu ZyBpbmRleCcpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVHJpZ2dlcnMgd2hpY2ggZXhl Y3V0ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZCBvbiB0aGUKKyMgc3Vi c2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgd29ya2Vy IGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIEZpcnN0IHdlIGNoZWNr IHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYjIgb24g dGVzdF90YWIyKGEpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiMiBvbiB0ZXN0X3RhYjIoYSkiKTsKKworJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIEZVTkNU SU9OIHRyaWdnZXJfZnVuY190YWIxX3Vuc2FmZSgpIFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCisg IEJFR0lOCisgICAgSU5TRVJUIElOVE8gcHVibGljLnRlc3RfdGFiMiBWQUxVRVMgKE5FVy4qKTsK KyAgICBSRVRVUk4gTkVXOworICBFTkQKK1wkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK0NSRUFURSBU UklHR0VSIHRyaV90YWIxX3Vuc2FmZQorQkVGT1JFIElOU0VSVCBPTiBwdWJsaWMudGVzdF90YWIx CitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jX3RhYjFfdW5zYWZl KCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiB0cmlfdGFi MV91bnNhZmU7CisKK0NSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmNfdGFiMV9zYWZlKCkgUkVU VVJOUyBUUklHR0VSIEFTIFwkXCQKKyAgQkVHSU4KKyAgICBSQUlTRSBOT1RJQ0UgJ3Rlc3QgZm9y IHNhZmUgdHJpZ2dlciBmdW5jdGlvbic7CisJUkVUVVJOIE5FVzsKKyAgRU5ECitcJFwkIGxhbmd1 YWdlIHBscGdzcWw7CitBTFRFUiBGVU5DVElPTiB0cmlnZ2VyX2Z1bmNfdGFiMV9zYWZlIElNTVVU QUJMRTsKK0NSRUFURSBUUklHR0VSIHRyaV90YWIxX3NhZmUKK0JFRk9SRSBJTlNFUlQgT04gcHVi bGljLnRlc3RfdGFiMQorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVu Y190YWIxX3NhZmUoKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5v dyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0g cXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIxIFZBTFVFUyg1MDAxKTsKK0lOU0VSVCBJ TlRPIHRlc3RfdGFiMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkp OworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIxIFZBTFVFUyg1MDAxKSIpOworCiskaW4gLj0gcXsK K0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdl dCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRl ciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgVXNpbmcgdHJpZ2dlciB3 aXRoIGltbXV0YWJsZSBmdW5jdGlvbiwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIxIEVOQUJM RSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfc2FmZTsKK0RST1AgVFJJR0dFUiB0cmlfdGFiMV91 bnNhZmUgT04gcHVibGljLnRlc3RfdGFiMTsKK30pOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFt aW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMiksCisJJ2RhdGEgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisKKyMgQ2xl YW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworRFJPUCBJTkRFWCBpZHhfdGFiMjsKK0RST1Ag VFJJR0dFUiB0cmlfdGFiMV9zYWZlIE9OIHB1YmxpYy50ZXN0X3RhYjE7CitEUk9QIGZ1bmN0aW9u IHRyaWdnZXJfZnVuY190YWIxX3Vuc2FmZTsKK0RST1AgZnVuY3Rpb24gdHJpZ2dlcl9mdW5jX3Rh YjFfc2FmZTsKK30pOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXF7CitEUk9QIElOREVYIGlkeF90YWIyOworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJV TkNBVEUgVEFCTEUgdGVzdF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rpb24g b24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxeworQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuYygpIFJFVFVSTlMgVFJJR0dF UiBBUyBcJFwkCisgIEJFR0lOCisgICAgUkVUVVJOIE5VTEw7CisgIEVORAorXCRcJCBsYW5ndWFn ZSBwbHBnc3FsOworQ1JFQVRFIFRSSUdHRVIgaW5zZXJ0X3RyaWcKK0JFRk9SRSBJTlNFUlQgT04g dGVzdF90YWJfcGFydGl0aW9uCitGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dl cl9mdW5jKCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRU5BQkxFIFJFUExJQ0Eg VFJJR0dFUiBpbnNlcnRfdHJpZzsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90 YWJfcGFydGl0aW9uZWQiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVy IHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB0cmlnZ2Vy IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFi X3BhcnRpdGlvbiIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRv IGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFy dGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9u IGNvbnRhaW5zIGEKKyMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBz aWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkKKyMgcGFyYWxsZWwgd29ya2VyIGluIHRo aXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIEZpcnN0IHdlIGNoZWNrIHRoZSBj b2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFM VUVTKDEpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cXsKK0NSRUFURSBGVU5DVElPTiBmdW5jX2NvdW50X3RhYjIoKSBSRVRVUk5TIElOVCBBUyBcJFwk CisgIEJFR0lOCisgICAgUkVUVVJOIChTRUxFQ1QgY291bnQoKikgRlJPTSBwdWJsaWMudGVzdF90 YWIyKTsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitBTFRFUiBUQUJMRSB0ZXN0X3Rh YjEgQUREIENPTFVNTiBiIGludCBERUZBVUxUIGZ1bmNfY291bnRfdGFiMigpOworfSk7CisKKyMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVHSU47CitUUlVOQ0FURSB0ZXN0 X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSki KTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90 IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisj IEFsdGVyIGRlZmF1bHQgdmFsdWVzIHRvIGltbXV0YWJsZSBleHByZXNzaW9uLCBub3cgaXQgd29y a3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFC TEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBiIFNFVCBERUZBVUxUIDEiKTsKKworIyBXYWl0IGZv ciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3 b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVz c2lvbicpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0 X3RhYjEgRFJPUCBDT0xVTU4gYiIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXF7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitUUlVOQ0FURSBUQUJMRSB0 ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lv biBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIFNF VCBERUZBVUxUIHJhbmRvbSgpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFi X3BhcnRpdGlvbmVkIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlx ci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24g InB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRl ciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBkZWZhdWx0IHZh bHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFM VEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5n IHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4 cHJlc3Npb24nKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2Vk IHRoYXQgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFi bGUKKyMgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJl cG9ydGVkIGJ5IHBhcmFsbGVsCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworIyBCZWNhdXNlIHRoZSBjb2x1bW4gdHlwZSBvZiB0aGUgcGFydGl0aW9uIHRh YmxlIG11c3QgYmUgdGhlIHNhbWUgYXMgaXRzIHBhcmVudAorIyB0YWJsZSwgb25seSB0ZXN0IG5v cm1hbCB0YWJsZSBoZXJlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IklOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRE9NQUlOIHRtcF9kb21haW4gQVMg aW50IENIRUNLIChWQUxVRSA+IC0xKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xV TU4gYSBUWVBFIHRtcF9kb21haW47Cit9KTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIERPTUFJTiB0bXBfZG9tYWluIEFTIElOVCBDT05T VFJBSU5UIGRvbWFpbl9jaGVjayBDSEVDSyAoVkFMVUUgPj0gZnVuY19jb3VudF90YWIyKCkpOwor QUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUgdG1wX2RvbWFpbjsKK30p OworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAt cyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworVFJVTkNB VEUgdGVzdF90YWIyOworSU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFM VUVTKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCisk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/ IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2lu ZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0 KTsKKworIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24sIG5vdyBpdCB3b3Jrcy4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBET01BSU4g dG1wX2RvbWFpbiBEUk9QIENPTlNUUkFJTlQgZG9tYWluX2NoZWNrIik7CisKKyMgV2FpdCBmb3Ig dGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29y a2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJl c3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwKKwknZGF0 YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxlIGV4cHJlc3Np b24nKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90 YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUgaW50Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCBxcXsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRF IFRBQkxFIHRlc3RfdGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2Vk IHRoYXQgY29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZSBmdW5j dGlvbgorIyBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQg YnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMKKyMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCisjIEZpcnN0IHdlIGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gb24gbm9ybWFs IHRhYmxlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJ TlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT05TVFJBSU5U IGNvbnN0X3RhYjFfdW5zYWZlIENIRUNLKGEgPj0gZnVuY19jb3VudF90YWIyKCkpOworfSk7CisK KyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVHSU47CitUUlVOQ0FURSB0 ZXN0X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMo MSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fu bm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOwor CisjIEFsdGVyIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwg bm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Vu c2FmZTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Nh ZmUgQ0hFQ0soYSA+PSAwKTsKK30pOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiMSIpOworaXMoJHJlc3VsdCwgcXEoNTAwMSksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisKKyMgQ2xlYW4gdXAg dGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQg Y29uc3RfdGFiMV9zYWZlIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcXsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3Rf dGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworIyBUaGVuIHdlIGNoZWNrIHRoZSBjb25zdHJhaW50IGV4cHJlc3Npb24gb24gcGFydGl0aW9u IHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxewor QUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFERCBDT05TVFJBSU5UIHRlc3RfdGFiX2Nv biBjaGVjayAoYSA+IHJhbmRvbSgpKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVz dF90YWJfcGFydGl0aW9uZWQiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAor CXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlv biAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1l dGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGNvbnN0cmFp bnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJP UCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5n IHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Np b24nKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQg Zm9yZWlnbiBrZXkgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yCisjIHJl cG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gbm9ybWFsIHRhYmxl LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUg VEFCTEUgdGFiX25vcHVibGljKGEgaW50KTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMiBBREQgUFJJ TUFSWSBLRVkgKGEpOworQUxURVIgVEFCTEUgdGVzdF90YWIyIFJFUExJQ0EgSURFTlRJVFkgRlVM TDsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSk7Cit9KTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjIgQUREIFBS SU1BUlkgS0VZIChhKTsiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT05TVFJBSU5UIHRlc3RfdGFi MWZrIEZPUkVJR04gS0VZKGEpIFJFRkVSRU5DRVMgdGVzdF90YWIyKGEpOworU0VMRUNUICdBTFRF UiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiAiJyB8fCB0Z25hbWUgfHwg JyInIEZST00gcGdfdHJpZ2dlciBXSEVSRSB0Z3JlbGlkID0gJ3Rlc3RfdGFiMSc6OnJlZ2NsYXNz OjpvaWQgXFxnZXhlYworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93 IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBx eworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpOworSU5TRVJUIElO VE8gdGFiX25vcHVibGljIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMo aSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYjIiKTsKKworJGluIC49IHF7CitDT01NSVQ7Citc cQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlx ci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24g InB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5n ID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05T VFJBSU5UIHRlc3RfdGFiMWZrIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWIxIik7CitpcygkcmVzdWx0LCBxcSgxKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBk YXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXF7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitUUlVOQ0FURSBUQUJM RSB0ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gcGFydGl0aW9uIHRh YmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JF QVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbl9mIChhIGludCBwcmltYXJ5IGtleSk7CitBTFRF UiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRp b25fZmsgRk9SRUlHTiBLRVkoYSkgUkVGRVJFTkNFUyB0ZXN0X3RhYl9wYXJ0aXRpb25fZihhKTsK K1NFTEVDVCAnQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEVOQUJMRSBSRVBMSUNBIFRS SUdHRVIgIicgfHwgdGduYW1lIHx8ICciJyBGUk9NIHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZCA9 ICd0ZXN0X3RhYl9wYXJ0aXRpb24nOjpyZWdjbGFzczo6b2lkIFxcZ2V4ZWMKK30pOworCisjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQi IHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRv ZmZzZXQpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNj cmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRl c3RfdGFiX3BhdGl0aW9uX2ZrIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScpOworCisk bm9kZV9zdWJzY3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rl c3RpbmcoKTsKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_007_OS0PR01MB57160760B34E1655718F4D1994249OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v38-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v38-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v38-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=63349; creation-date="Fri, 14 Oct 2022 09:04:00 GMT"; modification-date="Fri, 14 Oct 2022 09:08:12 GMT" Content-Transfer-Encoding: base64 RnJvbSA5ZDliMDFiOTA4YjExN2U2ZDI5OGM5ZjUxOGZiMGNiN2NkMDFiOWYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjQgQXVnIDIwMjIgMjE6MDc6NDQgKzA4MDAKU3ViamVjdDogW1BBVENI IHYzOCA1LzZdIFJldHJ5IHRvIGFwcGx5IHN0cmVhbWluZyB4YWN0IG9ubHkgaW4gYXBwbHkgd29y a2VyCgpXaGVuIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGlzIHNldCBzdHJlYW1pbmc9cGFy YWxsZWwsIHRoZSBsb2dpYyB0cmllcyB0bwphcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBJZiB0aGlzCmZhaWxzIHRoZSBwYXJhbGxl bCB3b3JrZXIgZXhpdHMgd2l0aCBhbiBlcnJvci4KCkluIHRoaXMgY2FzZSwgcmV0cnkgYXBwbHlp bmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgbm9ybWFsCnN0cmVhbWluZz1v biBtb2RlLiBUaGlzIGlzIGRvbmUgdG8gYXZvaWQgZ2V0dGluZyBjYXVnaHQgaW4gYSBsb29wIG9m IHRoZSBzYW1lCnJldHJ5IGVycm9ycy4KCkEgbmV3IGZsYWcgZmllbGQgInN1YnJldHJ5IiBoYXMg YmVlbiBpbnRyb2R1Y2VkIHRvIGNhdGFsb2cgInBnX3N1YnNjcmlwdGlvbiIuCklmIHRoZSBzdWJz Y3JpYmVyIGV4aXRzIHdpdGggYW4gZXJyb3IsIHRoaXMgZmxhZyB3aWxsIGJlIHNldCB0cnVlLCBh bmQKd2hlbmV2ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LCB0aGlz IGZsYWcgaXMgcmVzZXQgZmFsc2UuCk5vdywgd2hlbiBkZWNpZGluZyBob3cgdG8gYXBwbHkgYSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sIHRoZSBsb2dpYyBjYW4ga25vdyBpZgp0aGlzIHRyYW5zYWN0 aW9uIGhhcyBwcmV2aW91c2x5IGZhaWxlZCBvciBub3QgKGJ5IGNoZWNraW5nIHRoZSAic3VicmV0 cnkiCmZpZWxkKS4KCkluIGFkZGl0aW9uLCB3aGVuIGludHJvZHVjZWQgcGFyYWxsZWwgYXBwbHkg d29ya2VyLCB3ZSBhZGRlZCBzb21lIGxvZyBjaGVja3MgdG8KZW5zdXJlIHRoYXQgc3RyZWFtZWQg dHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KQnV0IHNp bmNlIHdlIGludHJvZHVjZWQgInJldHJ5IiBub3csIHdlIHdpbGwgbm90IGJlIGFibGUgdG8gY29u ZmlybSB3aGV0aGVyCnN0cmVhbWVkIHRyYW5zYWN0aW9ucyB3aWxsIGJlIGFwcGxpZWQgaW4gcGFy YWxsZWwgYXBwbHkgd29ya2VyLiBTbyByZW1vdmVkCnRoZXNlIGxvZyBjaGVja3MuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICA5ICsKIGRvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAxMSArLQogZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICA1ICsKIHNyYy9iYWNr ZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMSArCiAuLi4vcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMTggKy0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDE4NyArKysrKysrKysrKysrLS0tLS0K IHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgIHwgICA1ICsKIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICB8ICA1NiArLS0tLS0K IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8ICA0NSArLS0t LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwgIDUxICst LS0tCiAuLi4vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAgICAgICAgICAgfCAgNTYg Ky0tLS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAgICAgfCAg NDYgKy0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAgICB8 ICA1NCAtLS0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgICAg IHwgIDY2ICstLS0tLS0KIC4uLi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsICAg ICAgICB8IDE1MCArKysrKysrLS0tLS0tLQogMTggZmlsZXMgY2hhbmdlZCwgMjc1IGluc2VydGlv bnMoKyksIDQ5MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGM1NzY5ZGEyNmIuLjc5 Mjc0OWM1NjAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03OTI3LDYgKzc5MjcsMTUgQEAgU0NSQU0tU0hB LTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8 cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3VicmV0cnk8L3N0 cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVHJ1ZSBpZiB0aGUgcHJldmlvdXMgYXBwbHkgY2hhbmdlIGZhaWxlZCwgbmVjZXNz aXRhdGluZyBhIHJldHJ5CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAg ICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnN1YmNvbm5pbmZv PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNh dGlvbi5zZ21sCmluZGV4IDllNzUzZmU2ODIuLjYyMjljZWJkNzUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTM0MywxMiArMTM0MywxMSBAQCBDT05URVhUOiAgcHJv Y2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVy aW5nICJJTlNFUgogCiAgIDxwYXJhPgogICAgV2hlbiB0aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxp dGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgZmluaXNoIExTTiBvZgotICAgZmFpbGVkIHRy YW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVj ZXNzYXJ5IHRvCi0gICBjaGFuZ2UgdGhlIHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9s aXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IGFuZAotICAgY2F1c2UgdGhlIHNhbWUg Y29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rp b24gd2lsbAotICAgYmUgd3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBv ZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsKLSAgIGxpbmtlbmQ9InNxbC1hbHRl cnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgotICAgU0tJUDwv Y29tbWFuZD48L2xpbms+LgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dl ZC4gSW4gdGhhdCBjYXNlLCB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uCisgICB3aWxsIGJlIHJldHJp ZWQgaW4gPGxpdGVyYWw+c3RyZWFtaW5nID0gb248L2xpdGVyYWw+IG1vZGUuIElmIGl0IGZhaWxz CisgICBhZ2FpbiwgdGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxs IGJlIHdyaXR0ZW4gdG8gdGhlCisgICBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlz aCBMU04sIHBsZWFzZSByZWZlciB0bworICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2Ny aXB0aW9uIj48Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFNLSVA8L2NvbW1hbmQ+PC9s aW5rPi4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwKaW5kZXggNmE4YzgzOWRjYS4uNzA2ZGQ2NGNkOSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTI1NCw2ICsyNTQsMTEgQEAgQ1JF QVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0 aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgICBhbmQgc2NoZW1hIG9mIHRoZSBwYXJ0aXRp b25lZCB0YWJsZS4gQW5kIHRoZSBub24tcGFydGl0aW9uZWQgdGFibGUgb24KICAgICAgICAgICB0 aGUgcHVibGlzaGVyLXNpZGUgY2Fubm90IGJlIGEgcGFydGl0aW9uZWQgdGFibGUgb24gdGhlCiAg ICAgICAgICAgc3Vic2NyaWJlci1zaWRlLgorICAgICAgICAgIFdoZW4gYXBwbHlpbmcgYSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24sIGlmIGVpdGhlciByZXF1aXJlbWVudCBpcyBub3QKKyAgICAgICAg ICBtZXQsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBleGl0IHdpdGggYW4gZXJyb3Iu CisgICAgICAgICAgVGhlIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiBtb2RlIGlzIGRpc3Jl Z2FyZGVkIHdoZW4gcmV0cnlpbmc7CisgICAgICAgICAgaW5zdGVhZCB0aGUgdHJhbnNhY3Rpb24g d2lsbCBiZSBhcHBsaWVkIHVzaW5nIDxsaXRlcmFsPm9uPC9saXRlcmFsPgorICAgICAgICAgIG1v ZGUuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJs aXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlv bi5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCBhNTA2ZmMz ZWM4Li43MjNiMTQxYzc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNj cmlwdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAg LTcxLDYgKzcxLDcgQEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29r KQogCXN1Yi0+c3RyZWFtID0gc3ViZm9ybS0+c3Vic3RyZWFtOwogCXN1Yi0+dHdvcGhhc2VzdGF0 ZSA9IHN1YmZvcm0tPnN1YnR3b3BoYXNlc3RhdGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJm b3JtLT5zdWJkaXNhYmxlb25lcnI7CisJc3ViLT5yZXRyeSA9IHN1YmZvcm0tPnN1YnJldHJ5Owog CiAJLyogR2V0IGNvbm5pbmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBU SU9OT0lELApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDU1ZjdlYzc5ZTAu LmY0YTAwNDk2ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEyOTgs NyArMTI5OCw3IEBAIFJFVk9LRSBBTEwgT04gcGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1cyBG Uk9NIHB1YmxpYzsKIFJFVk9LRSBBTEwgT04gcGdfc3Vic2NyaXB0aW9uIEZST00gcHVibGljOwog R1JBTlQgU0VMRUNUIChvaWQsIHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVy LCBzdWJlbmFibGVkLAogICAgICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdv cGhhc2VzdGF0ZSwgc3ViZGlzYWJsZW9uZXJyLAotICAgICAgICAgICAgICBzdWJzbG90bmFtZSwg c3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zLCBzdWJvcmlnaW4pCisgICAgICAgICAgICAg IHN1YnJldHJ5LCBzdWJzbG90bmFtZSwgc3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zLCBz dWJvcmlnaW4pCiAgICAgT04gcGdfc3Vic2NyaXB0aW9uIFRPIHB1YmxpYzsKIAogQ1JFQVRFIFZJ RVcgcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYwppbmRleCA5NTg2OWEyYWI2Li41Nzk4ZWNhOWZiIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBAIC02MzUsNiArNjM1LDcgQEAgQ3JlYXRlU3Vi c2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3Rt dCwKIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfUEVORElORyA6CiAJCQkJCSBMT0dJ Q0FMUkVQX1RXT1BIQVNFX1NUQVRFX0RJU0FCTEVEKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3Jp cHRpb25fc3ViZGlzYWJsZW9uZXJyIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5kaXNhYmxlb25l cnIpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdl dERhdHVtKGZhbHNlKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8g LSAxXSA9CiAJCUNTdHJpbmdHZXRUZXh0RGF0dW0oY29ubmluZm8pOwogCWlmIChvcHRzLnNsb3Rf bmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMKaW5kZXggOTIxYjZjNTJhYi4uZDA1NmZjY2VhMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMK QEAgLTE0Niw2ICsxNDYsMTggQEAgcGFyYWxsZWxfYXBwbHlfY2FuX3N0YXJ0KFRyYW5zYWN0aW9u SWQgeGlkKQogCWlmICghWExvZ1JlY1B0cklzSW52YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tpcGxz bikpCiAJCXJldHVybiBmYWxzZTsKIAorCS8qCisJICogRG9uJ3QgdXNlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMgZm9yIHJldHJpZXMsIGJlY2F1c2UgaXQgaXMgcG9zc2libGUKKwkgKiB0aGF0IHRo ZSBsYXN0IHRpbWUgd2UgdHJpZWQgdG8gYXBwbHkgYSB0cmFuc2FjdGlvbiB1c2luZyBhIHBhcmFs bGVsCisJICogYXBwbHkgd29ya2VyIHRoZSBjaGVja3MgZmFpbGVkIChzZWUgZnVuY3Rpb24KKwkg KiBwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjaykuCisJICovCisJaWYgKE15U3Vic2NyaXB0 aW9uLT5yZXRyeSkKKwl7CisJCWVsb2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2VycyBh cmUgbm90IHVzZWQgZm9yIHJldHJpZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCS8qCiAJ ICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCB1c2lu ZyBhIHBhcmFsbGVsCiAJICogYXBwbHkgd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIg dG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYQpAQCAtMTEwMiw3ICsxMTE0LDcgQEAgdm9pZAogcGFy YWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiB7 CiAJLyogU2tpcCBpZiBub3QgaW4gcGFyYWxsZWwgbW9kZSAqLwotCWlmICghTXlMb2dpY2FsUmVw V29ya2VyLT5wYXJhbGxlbF9hcHBseSkKKwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxs ZWxfYXBwbHkgfHwgTXlTdWJzY3JpcHRpb24tPnJldHJ5KQogCQlyZXR1cm47CiAKIAlpZiAoIXJl bC0+cGFyYWxsZWxfYXBwbHlfdmFsaWQpCkBAIC0xMTE1LDcgKzExMjcsNSBAQCBwYXJhbGxlbF9h cHBseV9yZWxhdGlvbl9jaGVjayhMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKIAkJCQkJCSJz dWJzY3JpcHRpb24gcGFyYW1ldGVyICVzIiwKIAkJCQkJCXJlbC0+cmVtb3RlcmVsLm5zcG5hbWUs IHJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCiAJCQkJCQkic3RyZWFtaW5nID0gcGFyYWxsZWwiKSwK LQkJCQkgZXJyZGV0YWlsX2ludGVybmFsKCIlcyIsIHJlbC0+cGFyYWxsZWxfYXBwbHlfZGV0YWls cyksCi0JCQkJIGVycmhpbnQoIlBsZWFzZSBjaGFuZ2UgdG8gdXNlIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgJXMuIiwKLQkJCQkJCSAic3RyZWFtaW5nID0gb24iKSkpOworCQkJCSBlcnJkZXRhaWxf aW50ZXJuYWwoIiVzIiwgcmVsLT5wYXJhbGxlbF9hcHBseV9kZXRhaWxzKSkpOwogfQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggMmM0YzQxYWE5Ny4uMjUxNDE0 NWM3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zOTMs NyArMzkzLDcgQEAgc3RhdGljIHZvaWQgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3Ms IGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5KTsKIAogc3RhdGljIHZvaWQgc3RvcmVfZmx1 c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKIAotc3RhdGljIHZvaWQgRGlzYWJs ZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CitzdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0 aW9uT25FcnJvcih2b2lkKTsKIAogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRl cm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3RhdGljIHZvaWQgYXBw bHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLApAQCAt NDMzLDYgKzQzMyw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8odm9pZCk7CiBzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25f YXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqKndpbmZvKTsKIAorc3RhdGljIHZvaWQgc2V0X3N1YnNjcmlwdGlvbl9y ZXRyeShib29sIHJldHJ5KTsKKwogLyoKICAqIEZvcm0gdGhlIG9yaWdpbiBuYW1lIGZvciB0aGUg c3Vic2NyaXB0aW9uLgogICoKQEAgLTEwMDIsNiArMTAwNCw5IEBAIGFwcGx5X2hhbmRsZV9jb21t aXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0 X2RhdGEpOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlv bl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcg c3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29t bWl0X2RhdGEuZW5kX2xzbik7CiAKQEAgLTExMTEsNiArMTExNiw5IEBAIGFwcGx5X2hhbmRsZV9w cmVwYXJlKFN0cmluZ0luZm8gcykKIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwog CisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShm YWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25p emVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRh LmVuZF9sc24pOwogCkBAIC0xMTY3LDYgKzExNzUsOSBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3By ZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEu ZW5kX2xzbik7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0 aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8q IFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxs ZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAK QEAgLTEyMjgsNiArMTIzOSw5IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJp bmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19l bmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRo ZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyog UHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxl bC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5k X2xzbik7CiAKQEAgLTEyODIsNiArMTI5Niw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFy ZShTdHJpbmdJbmZvIHMpCiAKIAkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVk IGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCisJCQkvKiBSZXNl dCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwog CQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKQEAgLTEz MDksNiArMTMyNiw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMp CiAJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAogCQkJc3RvcmVfZmx1c2hfcG9z aXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCisJCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxh Zy4gKi8KKwkJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCQkJYnJlYWs7CiAKIAkJ Y2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKQEAgLTE2NzUsNiArMTY5NSwxMCBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCSAqIHNlcmlhbGl6ZWQgdG8gZmls ZS4KIAkJCSAqLwogCQkJc2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CisKKwkJ CS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCQkJ c2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5T X0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgpAQCAtMTcwNCw2ICsxNzI4LDkgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQl7CiAJCQkJcGFyYWxsZWxfYXBwbHlf cmVwbG9yaWdpbl9zZXR1cCgpOwogCQkJCXBhcmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyKHdpbmZv LCB4aWQpOworCisJCQkJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCQkJc2V0X3N1YnNj cmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJCQl9CiAJCQllbHNlCiAJCQl7CkBAIC0xODg0LDYgKzE5 MTEsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAKIAkJCS8q IFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5m by4gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHhpZCk7CisKKwkJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQkJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeShmYWxzZSk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMOgpAQCAtMTkyMCw2ICsxOTUwLDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9j b21taXQoU3RyaW5nSW5mbyBzKQogCQkJICogc3Vic2tpcGxzbi4KIAkJCSAqLwogCQkJY2xlYXJf c3Vic2NyaXB0aW9uX3NraXBfbHNuKGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQkvKiBS ZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2Up OwogCQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKQEAgLTM5ODcsMjAg KzQwMjAsMjggQEAgc3RhcnRfdGFibGVfc3luYyhYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3Ms IGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1p dCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8g YW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1p dEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVy cm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUg d29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uICovCisJCXBnc3RhdF9y ZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwog CQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRp b25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2Vy IGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uLiBBYm9ydAotCQkJICogdGhlIGN1 cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFu Ci0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24o KTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5v aWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JF X1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2Ny aXB0aW9uX3JldHJ5KHRydWUpOworCisJCXByb2NfZXhpdCgwKTsKIAl9CiAJUEdfRU5EX1RSWSgp OwogCkBAIC00MDI1LDIwICs0MDY2LDI3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2lu X3N0YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJy b3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQor CQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVw b3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUo KTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZh aWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0 aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJICFhbV90YWJsZXN5bmNf d29ya2VyKCkpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlz YWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVw b3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMuIEFib3J0IHRoZQot CQkJICogY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNl bnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFu c2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3Jp cHRpb24tPm9pZCwgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0 aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKIAl9CiAJUEdfRU5E X1RSWSgpOwogfQpAQCAtNDMyNSwzOSArNDM3MywyMCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpCiB9CiAKIC8qCi0gKiBBZnRlciBlcnJvciByZWNvdmVyeSwgZGlzYWJsZSB0aGUg c3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBhbmQgZXhpdCBjbGVhbmx5Lgor ICogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCiBz dGF0aWMgdm9pZAotRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKK0Rpc2FibGVTdWJz Y3JpcHRpb25PbkVycm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdl LCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCi0JICogc3RhdGUK LQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJlcG9ydCgpOwotCUFib3J0 T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgpOwotCi0JUkVTVU1FX0lO VEVSUlVQVFMoKTsKLQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgZWl0aGVy IHRhYmxlIHN5bmNocm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBnc3RhdF9yZXBvcnRfc3Vic2Ny aXB0aW9uX2Vycm9yKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0JCQkJCQkJCQkgIWFtX3Rh Ymxlc3luY193b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gKi8KIAlT dGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJzY3JpcHRpb24oTXlTdWJzY3Jp cHRpb24tPm9pZCk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBOb3RpZnkg dGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgZXhpdCAqLworCS8qIE5vdGlm eSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkICovCiAJZXJlcG9ydChMT0csCiAJ CQllcnJtc2coInN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgYmVjYXVzZSBv ZiBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCXByb2NfZXhp dCgwKTsKIH0KIAogLyoKQEAgLTQ2MzMsMyArNDY2Miw2NyBAQCBnZXRfdHJhbnNhY3Rpb25fYXBw bHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndp bmZvKQogCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRTsKIAl9CiB9CisKKy8qCisgKiBT ZXQgc3VicmV0cnkgb2YgcGdfc3Vic2NyaXB0aW9uIGNhdGFsb2cuCisgKgorICogSWYgcmV0cnkg aXMgdHJ1ZSwgc3Vic2NyaWJlciBpcyBhYm91dCB0byBleGl0IHdpdGggYW4gZXJyb3IuIE90aGVy d2lzZSwgaXQKKyAqIG1lYW5zIHRoYXQgdGhlIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHN1Y2Nl c3NmdWxseS4KKyAqLworc3RhdGljIHZvaWQKK3NldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCBy ZXRyeSkKK3sKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1cDsKKwlib29sCQlzdGFydGVk X3R4ID0gZmFsc2U7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlib29s CQlyZXBsYWNlc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNf cGdfc3Vic2NyaXB0aW9uXTsKKworCS8qIEZhc3QgcGF0aCAtIGlmIG5vIHN0YXRlIGNoYW5nZSB0 aGVuIG5vdGhpbmcgdG8gZG8gKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09IHJldHJ5 KQorCQlyZXR1cm47CisKKwkvKiBGYXN0IHBhdGggLSBza2lwIGZvciBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisK KwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJLyogTG9vayB1cCB0aGUgc3Vic2Ny aXB0aW9uIGluIHRoZSBjYXRhbG9nICovCisJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25S ZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkx KFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oTXlTdWJzY3JpcHRp b24tPm9pZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1Is ICJzdWJzY3JpcHRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgTXlTdWJzY3JpcHRpb24tPm5h bWUpOworCisJTG9ja1NoYXJlZE9iamVjdChTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBNeVN1YnNj cmlwdGlvbi0+b2lkLCAwLAorCQkJCQkgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIEZvcm0gYSBu ZXcgdHVwbGUuICovCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNl dChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywgZmFsc2Us IHNpemVvZihyZXBsYWNlcykpOworCisJLyogU2V0IHN1YnJldHJ5ICovCisJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ocmV0cnkpOworCXJl cGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSB0cnVlOworCisJdHVw ID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywg bnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRlIHRoZSBjYXRhbG9nLiAqLwor CUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKKworCS8qIENsZWFu dXAuICovCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7 CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwppbmRleCAwMWIyYjYwMGViLi4xYTRiNGE3OTZjIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1 MDgsOCArNDUwOCw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAludHVwcyA9 IFBRbnR1cGxlcyhyZXMpOwogCiAJLyoKLQkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2Ug ZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGluIHRoZSBkdW1wIGFzCi0JICogYWZ0ZXIgcmVzdG9y aW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBiZSByZWxldmFudC4KKwkgKiBH ZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGFuZCBz dWJyZXRyeSBpbgorCSAqIHRoZSBkdW1wIGFzIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlz IHZhbHVlIG1heSBubyBsb25nZXIgYmUKKwkgKiByZWxldmFudC4KIAkgKi8KIAlpX3RhYmxlb2lk ID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CiAJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAi b2lkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCAwMTZhZmJjMjA0 Li4zNmMxODAxMTUxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTg4 LDYgKzg4LDkgQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxh dGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJkaXNhYmxlb25l cnI7CS8qIFRydWUgaWYgYSB3b3JrZXIgZXJyb3Igc2hvdWxkIGNhdXNlIHRoZQogCQkJCQkJCQkJ ICogc3Vic2NyaXB0aW9uIHRvIGJlIGRpc2FibGVkICovCiAKKwlib29sCQlzdWJyZXRyeSBCS0lf REVGQVVMVChmKTsJLyogVHJ1ZSBpZiB0aGUgcHJldmlvdXMgYXBwbHkKKwkJCQkJCQkJCQkJICog Y2hhbmdlIGZhaWxlZC4gKi8KKwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUt bGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhl IHB1Ymxpc2hlciAqLwogCXRleHQJCXN1YmNvbm5pbmZvIEJLSV9GT1JDRV9OT1RfTlVMTDsKQEAg LTEzMSw2ICsxMzQsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQlkaXNh Ymxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJ CQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCiAJCQkJCQkJ CSAqIG9jY3VycyAqLworCWJvb2wJCXJldHJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUgcHJldmlv dXMgYXBwbHkgY2hhbmdlCisJCQkJCQkJCSAqIGZhaWxlZC4gKi8KIAljaGFyCSAgICpjb25uaW5m bzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpz bG90bmFtZTsJCS8qIE5hbWUgb2YgdGhlIHJlcGxpY2F0aW9uIHNsb3QgKi8KIAljaGFyCSAgICpz eW5jY29tbWl0OwkJLyogU3luY2hyb25vdXMgY29tbWl0IHNldHRpbmcgZm9yIHdvcmtlciAqLwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggNmQxZmY4ZDVlOS4uNzQyYmNl MDkxZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDUyICs4LDIy IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBi eSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkg KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKLQlteSAkcGFy YWxsZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24g ZmluaXNoIGNvbW1hbmQnOwotCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0K LX0KLQogIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSBy ZWxhdGVkIHRvICJzdHJlYW1pbmciCiAjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBi ZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVs IGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKwlteSAoJG5vZGVf cHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgSW50ZXJs ZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1p dC4KIAlteSAkaW4gID0gJyc7CiAJbXkgJG91dCA9ICcnOwogCi0JbXkgJG9mZnNldCA9IDA7Ci0K IAlteSAkdGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6 OnRpbWVvdXRfZGVmYXVsdCk7CiAKIAlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3Vu ZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCiAJCW9uX2Vycm9yX3N0b3Ag PT4gMCk7CiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBh cmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3 YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdlIGhhdmUgdG8g bG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0 aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1 YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVz c2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQotCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJJGluIC49IHF7CiAJQkVHSU47CiAJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOwpAQCAtNzgsOCArNDgsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCW15 ICRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi Iik7CkBAIC05MCw5ICs1OCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIg U0VUIChiaW5hcnkgPSBvbikiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBJ bnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBs aW1pdC4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXsKQEAg LTEwNSw4ICs3MCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJJHJlc3VsdCA9CiAJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKQEAgLTEyMSwxNiArODQs MTEgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBv Y2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCiAJKTsKIAotCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOwogCiAJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJ JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIgogCSk7CkBAIC0xNDEsMTQgKzk5LDYgQEAgc3Vi IHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJv c2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmci KTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlz aGVyIG5vZGUKQEAgLTE5Niw3ICsxNDYsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3Vs dCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTIxOSw3ICsx NjksNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAg b3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCmluZGV4IDBlZmE0MWQ5MzAuLjJiZWI2ODA2 NjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFj dC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwK QEAgLTgsNDIgKzgsMTIgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAotIyBDaGVjayB0aGUgbG9n IHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5 Ci0jIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLXN1YiBjaGVja19wYXJhbGxl bF9sb2cKLXsKLQlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9 IEBfOwotCW15ICRwYXJhbGxlbF9tZXNzYWdlID0KLQkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRo ZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZCc7Ci0KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsK LQkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywg JG9mZnNldCk7Ci0JfQotfQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3Rl cHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKICMgcGFyYW1ldGVyIHNvIHRoZSBz YW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAogIyBzdHJl YW1pbmc9cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlteSAoJG5vZGVf cHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBf OwotCi0JbXkgJG9mZnNldCA9IDA7Ci0KLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBz cGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4K LQkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhh dCwgc28gYnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkK LQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAot CQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOwotCX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyBJbnNlcnQsIHVwZGF0 ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgogCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKApAQCAtNzMsOCArNDMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcK IAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVj a19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsK LQogCW15ICRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7CkBAIC04NywxMyArNTUsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlp ZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5v ZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUK QEAgLTE0MSw3ICsxMDIsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwy fDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10 ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTE2NCw3ICsxMjUsNyBAQCAk bm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAg ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFu Z2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5z dG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdf c3RyZWFtX2RkbC5wbAppbmRleCBkMmNjNDZkMTgyLi40M2Y5Y2EzM2IzIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbApAQCAtOCwyOCArOCwxMiBAQCB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVz ZSBUZXN0OjpNb3JlOwogCi0jIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNh Y3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwg YXBwbHkgd29ya2VyLgotc3ViIGNoZWNrX3BhcmFsbGVsX2xvZwotewotCW15ICgkbm9kZV9zdWJz Y3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpID0gQF87Ci0JbXkgJHBhcmFsbGVsX21lc3Nh Z2UgPQotCSAgJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21t YW5kJzsKLQotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKLQl9Ci19Ci0KICMgRW5j YXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAi c3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGgg Zm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1 YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87Ci0KLQlteSAkb2Zmc2V0ID0gMDsKKwlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAog CSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCiAJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCkBAIC00MiwyMCArMjYsNiBAQCBzdWIgdGVzdF9z dHJlYW1pbmcKIAlDT01NSVQ7CiAJfSk7CiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBp cyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KLQkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQg dGhhdCwgc28gYnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxl bCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+ cmVsb2FkOwotCX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgot CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKIAkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKIAkJJ3Bvc3RncmVzJywgcXsKQEAgLTgwLDggKzUwLDYgQEAgc3ViIHRlc3Rfc3Ry ZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwog Ci0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJh bGxlbCk7Ci0KIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50 KGUpIEZST00gdGVzdF90YWIiKTsKQEAgLTg5LDkgKzU3LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5n CiAJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9k ZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwogCSk7CiAKLQkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKLQogCSMgQSBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9u IHdpdGggRERMIGFuZCBETUwuIE9uZSBvZiB0aGUgRERMIGlzIHBlcmZvcm1lZAogCSMgYWZ0ZXIg RE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0 X3RhYiBzbyB0aGF0CiAJIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2No ZW1hIGFnYWluLgpAQCAtMTE0LDggKzc5LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVz dF90YWIiCiAJKTsKQEAgLTEzMCwxNCArOTMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlBTFRF UiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjLCBEUk9QIENPTFVNTiBkLCBEUk9QIENPTFVN TiBlLCBEUk9QIENPTFVNTiBmOwogCX0pOwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNf cGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9zdWJz Y3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQpAQCAtMTg1 LDcgKzE0MCw3IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDB8MCksICdj aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNp bmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMjAzLDcgKzE1OCw3IEBAICRub2RlX3B1 Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVk IG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNV QlNDUklQVElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAk bm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKaW5kZXggNzUyZTc5YTAyOS4uNjdjNzc4ZGNmYSAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fi b3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9h Ym9ydC5wbApAQCAtOCw0MiArOCwxMiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCi0jIENoZWNr IHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNj ZXNzZnVsbHkKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotc3ViIGNoZWNr X3BhcmFsbGVsX2xvZwotewotCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFy YWxsZWwpID0gQF87Ci0JbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQotCSAgJ2ZpbmlzaGVkIHByb2Nl c3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKLQotCWlmICgkaXNfcGFyYWxs ZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21l c3NhZ2UvLCAkb2Zmc2V0KTsKLQl9Ci19Ci0KICMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24g dGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIg c28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5k CiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxs ZWwpID0gQF87Ci0KLQlteSAkb2Zmc2V0ID0gMDsKLQotCSMgSWYgInN0cmVhbWluZyIgcGFyYW1l dGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCi0JIyB0aGF0 IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkg d29ya2VyLgotCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBh Ym91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3Bh cmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3Jp YmVyLT5yZWxvYWQ7Ci0JfQotCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisJbXkgKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87CiAKIAkjIGxhcmdl IChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCiAJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCkBAIC02OSw4ICszOSw2IEBAIHN1YiB0ZXN0X3N0cmVh bWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAot CWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxs ZWwpOwotCiAJbXkgJHJlc3VsdCA9CiAJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwpA QCAtNzgsOSArNDYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKIAkpOwogCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBs b2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7 Ci0KIAkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2Vp dmluZyBvdXQgb2Ygb3JkZXIKIAkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwogCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKApAQCAtMTAxLDE3ICs2NiwxMiBAQCBzdWIgdGVzdF9zdHJlYW1p bmcKIAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs KTsKLQogCSRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIAlpcygk cmVzdWx0LCBxcSgyNTAwfDApLAogCQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyBy ZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwogCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0K IAkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2Vpdmlu ZyByb2xsYmFjawogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBx ewpAQCAtMTI2LDggKzg2LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkkcmVzdWx0ID0KIAkg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CkBAIC0xMzcsMTQgKzk1LDYgQEAgc3ViIHRl c3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJ IkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKIAkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0 eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsK LQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0KIAogIyBDcmVhdGUgcHVibGlzaGVy IG5vZGUKQEAgLTE5MSw3ICsxNDEsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sg aW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWlu Zygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwog CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0 cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTIwOSw3ICsxNTksNyBAQCAkbm9kZV9wdWJsaXNo ZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJ UFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVf cHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5 X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAx OV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5kZXggOWQ2NzhiMzk5OC4uNDFlYzFlODkx NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0 X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1 YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC05LDQyICs5LDEyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29t cGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu Ci1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRpc19wYXJhbGxlbCkgPSBAXzsKLQlteSAkcGFyYWxsZWxfbWVzc2FnZSA9Ci0JICAnZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOwotCi0JaWYg KCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8k cGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0KLX0KLQogIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCiAj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFt aW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKLQotCW15ICRvZmZzZXQgPSAwOwotCi0JIyBJZiAic3RyZWFt aW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hl Y2sKLQkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCi0JIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCi0JIyBsb2cgdmVyYm9zaXR5Lgot CWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKLQl9Ci0KLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsK IAogCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xM QkFDS3MKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKQEAgLTY4LDggKzM4LDYgQEAgc3Vi IHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQs ICRpc19wYXJhbGxlbCk7Ci0KIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRl c3RfdGFiIik7CkBAIC04NCwxNCArNTIsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlBTFRFUiBU QUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwogCX0pOwogCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5Lgot CWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9k ZQpAQCAtMTM4LDcgKzk4LDcgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRp YWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotdGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7Cit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1c2luZyBzdHJlYW1p bmcgbW9kZSAncGFyYWxsZWwnCkBAIC0xNTYsNyArMTE2LDcgQEAgJG5vZGVfcHVibGlzaGVyLT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAgIG9yIGRpZQogICAiVGltZWQgb3V0IHdoaWxl IHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9O IjsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSwgMSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxp c2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29w aGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nh c2NhZGUucGwKaW5kZXggODkzZmFhYTBmNS4uNmVhN2ZjMTRjNSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKQEAgLTExLDIwICsxMSw2IEBA IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRzdHJlYW1pbmdfbW9kZSkgPSBAXzsKLQlteSAkcGFy YWxsZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24g ZmluaXNoIGNvbW1hbmQnOwotCi0JaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQot CXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdl LywgJG9mZnNldCk7Ci0JfQotfQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qg c3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgcGFyYW1ldGVyCiAjIHNvIHRo ZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJl YW1pbmc9cGFyYWxsZWwKICMgY2FzZXMuCkBAIC0zMyw5ICsxOSw2IEBAIHN1YiB0ZXN0X3N0cmVh bWluZwogCW15ICgkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFt ZV9DLCAkc3RyZWFtaW5nX21vZGUpID0KIAkgIEBfOwogCi0JbXkgJG9mZnNldF9CID0gMDsKLQlt eSAkb2Zmc2V0X0MgPSAwOwotCiAJbXkgJG9sZHBpZF9CID0gJG5vZGVfQS0+c2FmZV9wc3FsKAog CQkncG9zdGdyZXMnLCAiCiAJCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCkBA IC03NywyMyArNjAsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkjIEV4cGVjdCBhbGwgZGF0YSBp cyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNvbW1pdC4KIAkjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBp cyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCi0JIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0 IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCi0JIyBsb2cgdmVyYm9zaXR5LgotCWlmICgkc3RyZWFtaW5n X21vZGUgZXEgJ3BhcmFsbGVsJykKLQl7Ci0JCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9CLT5yZWxv YWQ7Ci0KLQkJJG5vZGVfQy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWlu X21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRub2RlX0MtPnJlbG9hZDsKLQl9Ci0KLQkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9C LT5sb2dmaWxlOwotCSRvZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2ZpbGU7Ci0KIAkjIEluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgogCSMgVGhlbiAyUEMgUFJFUEFSRQogCSRub2RlX0EtPnNhZmVfcHNxbCgKQEAgLTEwNyw5ICs3 Myw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWVfQik7CiAJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKIAotCWNo ZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9CLCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSk7Ci0J Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0MsICRvZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlKTsK LQogCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIocykKIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLApA QCAtMTYzLDEwICsxMjYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkjIEZpcnN0LCBkZWxldGUg dGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCiAJ JG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgot CSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7Ci0JJG9mZnNldF9DID0gLXMgJG5vZGVf Qy0+bG9nZmlsZTsKLQogCSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBT QVZFUE9JTlQKIAkkbm9kZV9BLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsICIKQEAgLTE4Myw5 ICsxNDIsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0IpOwogCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CiAK LQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5nX21vZGUp OwotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0MsICRzdHJlYW1pbmdfbW9k ZSk7Ci0KIAkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3Jp YmVyKHMpCiAJJHJlc3VsdCA9CiAJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAg LTIzMiwxNiArMTg4LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfQS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKIAkkbm9k ZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwogCSRub2RlX0ItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWVfQyk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgk c3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKLQl7Ci0JCSRub2RlX0ItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5v ZGVfQi0+cmVsb2FkOwotCi0JCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfQy0+cmVsb2FkOwotCX0K IH0KIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggMmNkNDUzYzAzZi4uYzQ5Y2Ix MDYxMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0 cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFt LnBsCkBAIC04LDI4ICs4LDEyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhl IGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3Nm dWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFy YWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCkgPSBAXzsKLQlteSAkcGFyYWxsZWxfbWVzc2FnZSA9Ci0JICAnZmluaXNoZWQgcHJvY2Vzc2lu ZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOwotCi0JaWYgKCRpc19wYXJhbGxlbCkK LQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2Fn ZS8sICRvZmZzZXQpOwotCX0KLX0KLQogIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0 IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCiAjIHBhcmFtZXRlciBzbyB0 aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKICMg c3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkg PSBAXzsKLQotCW15ICRvZmZzZXQgPSAwOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1 YnNjcmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KQEAgLTM5LDIwICsy Myw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCiAJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogCi0JIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lm aWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKLQkjIHRoYXQgc3RyZWFtZWQgdHJh bnNhY3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotCSMg V2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBz byBidW1wIHVwIHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsK LQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQki bG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7 Ci0JfQotCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIGNoZWNrIHRoYXQgMlBDIGdl dHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCiAJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KIAkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKQEAgLTY1LDggKzM1LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7Ci0KIAkjIGNo ZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgog CW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwpAQCAtMTAxLDkgKzY5 LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwogCi0JIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBAIC0xMTUsOCArODAsNiBAQCBzdWIgdGVz dF9zdHJlYW1pbmcKIAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlz X3BhcmFsbGVsKTsKLQogCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBz dGF0ZSBvbiBzdWJzY3JpYmVyCiAJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CkBAIC0xNDksOSArMTEyLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJIyBOb3RlOiBib3Ro IHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgogCSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CiAJCUJFR0lOOwpAQCAt MTY2LDggKzEyNiw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxpc2hlci0+c3Rh cnQ7CiAJJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKLQogCSMgY29tbWl0IHBvc3Qg dGhlIHJlc3RhcnQKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQki Q09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CkBAIC0xOTUsOSArMTUzLDYg QEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwogCi0JIyBDaGVj ayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1 YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBl bm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsIHF7CkBAIC0yMDksOCArMTY0LDYgQEAgc3ViIHRlc3Rf c3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCk7Ci0KIAkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3Rh dGUgb24gc3Vic2NyaWJlcgogCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OwpAQCAtMjUzLDkgKzIwNiw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBh ID4gMjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBUaGVuIGluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0Lgog CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewpAQCAtMjY3LDgg KzIxNyw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOwotCiAJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9u IGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKIAkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKQEAgLTMwMCwxNCArMjQ4LDYgQEAgc3ViIHRlc3Rfc3RyZWFt aW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkRFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgk aXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9z dWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCkBAIC0zNzUsNyArMzE1LDcgQEAgbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBp bml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMzk4LDcgKzMzOCw3IEBAICRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQ VElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9z dWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCmluZGV4IDIxOTUwNzA0MzQu LmQ2MTlhNjdmMDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJl YW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz Ml9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCkBAIC0xMDUsNyArMTA1LDggQEAgbXkgJGgg PSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91 dCwgJHRpbWVyLAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRo YXQgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZQogIyBzdWJzY3JpYmVy LXNpZGUgaXMgbm90IHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZS4gQ2hl Y2sgdGhlCi0jIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2Uu CisjIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBh ZnRlciByZXRyeWluZyBpbgorIyBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlz IHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKICMgRmly c3Qgd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRleCBvbiBub3JtYWwgdGFibGUuCkBAIC0xMzAsNiAr MTMxLDEwIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBb QS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0 X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwv LAogCSRvZmZzZXQpOwogCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJS T1I6ICggW0EtWjAtOV0rOik/IGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVlIGNv bnN0cmFpbnQgImlkeF90YWIxIi8sCisJJG9mZnNldCk7CisKICMgRHJvcCB0aGUgdW5pcXVlIGlu ZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjEiKTsKIApAQCAtMTM4LDcg KzE0Myw5IEBAICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAK IG15ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwotaXMoJHJlc3VsdCwgcXEoNTAwMSks ICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOwor aXMoJHJlc3VsdCwgcXEoNTAwMSksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIGRyb3BwaW5nIHVuaXF1ZSBpbmRleCB0byByZXRyeSBhcHBseScKKyk7CiAKICMgQ2xlYW4g dXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIpOwpAQCAtMTU5LDIx ICsxNjYsMjQgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiX3BhcnRpdGlvbiIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcg PSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRo ZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHgiKTsKLQog IyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRo ZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1pcygk cmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRy b3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB1bmlxdWUgaW5kZXgnKTsK KworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3Bh cnRpdGlvbl9pZHgiKTsKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFRyaWdnZXJzIHdoaWNo IGV4ZWN1dGUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBhcmUgbm90IGFsbG93ZWQgb24gdGhlCiAj IHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdv cmtlciBpbiB0aGlzIGNhc2UuCisjIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIs IHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQKKyMgc3VjY2Vzc2Z1bGx5LgogIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rp b24gb24gbm9ybWFsIHRhYmxlLgpAQCAtMTk0LDE3ICsyMDQsNiBAQCBDUkVBVEUgVFJJR0dFUiB0 cmlfdGFiMV91bnNhZmUKIEJFRk9SRSBJTlNFUlQgT04gcHVibGljLnRlc3RfdGFiMQogRk9SIEVB Q0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY190YWIxX3Vuc2FmZSgpOwogQUxU RVIgVEFCTEUgdGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZl OwotCi1DUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSgpIFJFVFVSTlMgVFJJ R0dFUiBBUyBcJFwkCi0gIEJFR0lOCi0gICAgUkFJU0UgTk9USUNFICd0ZXN0IGZvciBzYWZlIHRy aWdnZXIgZnVuY3Rpb24nOwotCVJFVFVSTiBORVc7Ci0gIEVORAotXCRcJCBsYW5ndWFnZSBwbHBn c3FsOwotQUxURVIgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSBJTU1VVEFCTEU7Ci1D UkVBVEUgVFJJR0dFUiB0cmlfdGFiMV9zYWZlCi1CRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50ZXN0 X3RhYjEKLUZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFiMV9z YWZlKCk7CiB9KTsKIAogIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCkBA IC0yMjksMTIgKzIyOCwxMiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJw dWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9 IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBVc2luZyB0cmlnZ2VyIHdpdGggaW1tdXRhYmxl IGZ1bmN0aW9uLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXF7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJ R0dFUiB0cmlfdGFiMV9zYWZlOwotRFJPUCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBwdWJs aWMudGVzdF90YWIxOwotfSk7Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0ZXMgdW5pcXVl IGNvbnN0cmFpbnQgImlkeF90YWIyIi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVl IGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjIiKTsKIAogIyBXYWl0 IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBs eSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwpA QCAtMjQyLDE1ICsyNDEsMTMgQEAgJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEo MiksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJs ZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJl dHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9t IHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdy ZXMnLCBxcXsKLURST1AgSU5ERVggaWR4X3RhYjI7Ci1EUk9QIFRSSUdHRVIgdHJpX3RhYjFfc2Fm ZSBPTiBwdWJsaWMudGVzdF90YWIxOworRFJPUCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBw dWJsaWMudGVzdF90YWIxOwogRFJPUCBmdW5jdGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmU7 Ci1EUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIxX3NhZmU7CiB9KTsKICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewpAQCAtMjgzLDIyICsyODAsMjQgQEAg JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzop PyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRp dGlvbiIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8s CiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlciwgbm93 IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkRS T1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0aXRpb24iKTsKLQogIyBXYWl0 IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBs eSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwog CiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0 LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRy aWdnZXInKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIHRyaWdnZXInKTsKKworIyBEcm9wIHRoZSB0 cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0aXRp b24iKTsKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQg Y29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBjb250YWlucyBhCiAjIG5vbi1pbW11dGFi bGUgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9y dGVkIGJ5Ci0jIHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIHBhcmFsbGVsIHdvcmtl ciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNo ZWNrCisjIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQgc3VjY2Vzc2Z1bGx5LgogIyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVl IGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgpAQCAtMzM2LDE3ICszMzUsMTQgQEAgJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5u b3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vi c2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAK LSMgQWx0ZXIgZGVmYXVsdCB2YWx1ZXMgdG8gaW1tdXRhYmxlIGV4cHJlc3Npb24sIG5vdyBpdCB3 b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBU QUJMRSB0ZXN0X3RhYjEgQUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQgMSIpOwotCiAjIFdhaXQg Zm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5 IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAK ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0J J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHBy ZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5n IGJlY2F1c2Ugb2YgY29sdW1uIGRlZmF1bHQgdmFsdWUnCispOwogCiAjIENsZWFuIHVwIHRlc3Qg ZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLApAQCAtMzczLDEwICszNjksNiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0 IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uIiB1c2luZyBzdWJzY3JpcHRpb24g cGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGRl ZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0 aXRpb24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7Ci0KICMgV2FpdCBmb3IgdGhpcyBz dHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgog JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIApAQCAtMzg0LDEy ICszNzYsMTggQEAgJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwog aXMoJHJlc3VsdCwgcXEoNTAwMCksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIGRyb3BwaW5nIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbHVtbiBkZWZhdWx0 IHZhbHVlJworKTsKKworIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIuCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVz dF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwogCiAjID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWlu dCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQogIyBmdW5jdGlvbiBvbiB0aGUg c3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxsZWwKLSMg d29ya2VyIGluIHRoaXMgY2FzZS4KKyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJl dHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlCisjIGRhdGEgaXMgcmVwbGlj YXRlZCBzdWNjZXNzZnVsbHkuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBCZWNhdXNlIHRo ZSBjb2x1bW4gdHlwZSBvZiB0aGUgcGFydGl0aW9uIHRhYmxlIG11c3QgYmUgdGhlIHNhbWUgYXMg aXRzIHBhcmVudApAQCAtNDMwLDE3ICs0MjgsMTMgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdl dCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRl ciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkb21haW4gY29u c3RyYWludCBleHByZXNzaW9uLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgRE9NQUlOIHRtcF9kb21haW4gRFJPUCBDT05TVFJB SU5UIGRvbWFpbl9jaGVjayIpOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi MSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZG9tYWluJyk7CiAKICMg Q2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC00NTMsOSArNDQ3LDEwIEBAIFRSVU5DQVRFIFRB QkxFIHRlc3RfdGFiMjsKICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNv bnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KLSMg b24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFs bGVsIHdvcmtlciBpbiB0aGlzCi0jIGNhc2UuCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29u c3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQorIyBmdW5jdGlvbiBv biB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFyYWxs ZWwKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdv cmtlciwgd2UgY2hlY2sgaWYgdGhlCisjIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHku CiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3RyYWlu dCBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTQ4OCwyNCArNDgzLDE3IEBAICRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fu bm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwog Ci0jIEFsdGVyIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwg bm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHFxewotQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Vu c2FmZTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Nh ZmUgQ0hFQ0soYSA+PSAwKTsKLX0pOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiMSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWludCcp OwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEg RFJPUCBDT05TVFJBSU5UIGNvbnN0X3RhYjFfc2FmZSIpOworCSJBTFRFUiBUQUJMRSB0ZXN0X3Rh YjEgRFJPUCBDT05TVFJBSU5UIGNvbnN0X3RhYjFfdW5zYWZlIik7CiAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKIFRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsK QEAgLTUyOCwxMCArNTE2LDYgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbiIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBz dHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBjb25zdHJhaW50IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09O U1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFu c2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCkBAIC01MzksMTEgKzUyMywxNiBAQCAk cmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0LCBx cSgwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgY29u c3RyYWludCBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWludCcpOworCisjIERyb3AgY29uc3RyYWlu dCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRl c3RfdGFiX2NvbiIpOwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93 ZWQgdGhhdCBmb3JlaWduIGtleSBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJy b3IKLSMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgcmVwb3J0 ZWQgYnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGlu IGFwcGx5CisjIHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNj ZXNzZnVsbHkuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUg Zm9yZWlnbiBrZXkgb24gbm9ybWFsIHRhYmxlLgpAQCAtNTg1LDkgKzU3NCwxMyBAQCAkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAot IyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxU RVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYjFmayIpOworIyBXYWl0 IGZvciBlcnJvciBsb2cgdG8gbWFrZSBzdXJlIHRoZSBkZXBlbmRlbnQgZGF0YSBoYXMgYmVlbiBk ZWxldGVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtB LVowLTldKzopPyBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZXN0X3RhYjEiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlc3RfdGFiMWZrIi8sCisJJG9mZnNldCk7CisKKyMg SW5zZXJ0IGRlcGVuZGVudCBkYXRhIG9uIHRoZSBwdWJsaXNoZXIsIG5vdyBpdCB3b3Jrcy4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90 YWIyIFZBTFVFUygxKSIpOwogCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CkBAIC01OTUsOSArNTg4LDExIEBAICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKwknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBmb3JlaWduIGtleScpOwog CiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJP UCBDT05TVFJBSU5UIHRlc3RfdGFiMWZrIik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK IAkncG9zdGdyZXMnLCBxcXsKIFRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKQEAgLTYwOSw2ICs2 MDQsNyBAQCAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewogQ1JFQVRFIFRBQkxF IHRlc3RfdGFiX3BhcnRpdGlvbl9mIChhIGludCBwcmltYXJ5IGtleSk7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYl9wYXJ0aXRpb25fZiBTRUxFQ1QgaSAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAw MCkgcyhpKTsKIEFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBREQgQ09OU1RSQUlOVCB0 ZXN0X3RhYl9wYXRpdGlvbl9mayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiX3Bh cnRpdGlvbl9mKGEpOwogU0VMRUNUICdBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRU5B QkxFIFJFUExJQ0EgVFJJR0dFUiAiJyB8fCB0Z25hbWUgfHwgJyInIEZST00gcGdfdHJpZ2dlciBX SEVSRSB0Z3JlbGlkID0gJ3Rlc3RfdGFiX3BhcnRpdGlvbic6OnJlZ2NsYXNzOjpvaWQgXFxnZXhl YwogfSk7CkBAIC02MjQsMTAgKzYyMCw2IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVs YXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb24iIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0 X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7Ci0K ICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0 aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKIApAQCAtNjM1LDcgKzYyNywxMSBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi X3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2RhdGEg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGZvcmVp Z24ga2V5Jyk7CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vi c2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0 aW9uX2ZrIik7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0 aGF0IHRoZSBub24tcGFydGl0aW9uZWQgdGFibGUgb24gdGhlIHB1Ymxpc2hlci1zaWRlIGlzIGEK LS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_007_OS0PR01MB57160760B34E1655718F4D1994249OS0PR01MB5716jpnp_--