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 1p7ril-0001nS-Tx for pgsql-hackers@arkaria.postgresql.org; Wed, 21 Dec 2022 05:32:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p7rik-0003OS-Nn for pgsql-hackers@arkaria.postgresql.org; Wed, 21 Dec 2022 05:32:50 +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 1p7rij-0003Kh-VU for pgsql-hackers@lists.postgresql.org; Wed, 21 Dec 2022 05:32:50 +0000 Received: from esa4.fujitsucc.c3s2.iphmx.com ([68.232.151.214]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p7rig-00046Z-Eh for pgsql-hackers@lists.postgresql.org; Wed, 21 Dec 2022 05:32:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1671600766; x=1703136766; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=O++wBHTvppn0rJib58dAoPBGQLKjz0wX82pXcrwtgSg=; b=Tluq0Nz2ivHnKab4Mwx6i2xVGp4KsDaJ/WSA4CNSB4pDe1QlRY7M1p7D gkJXjk34DfWkO2/hQ2mcpyn8RuxFPTsRANF+knMtbAd88ul1QykMptywc lJn0hNDC6Clj5nLESMla3P/gVvNtf55TxUHR4AiCW5hwNB5SmFD2k75cx 8wuMkUb8MovB+7606sEBHl+X4UWhBo2nMJ7WGiTYnP2sDbFT3pM48G+EB mP9bbYdDQ5XNFt4qph9X1qqQOivdXoJ4f5ZXwh8eoZ49kNS9kTsDmeLzq BN+ka8VPnNux2pYL78VSoZ5B/v5TOnQkcOsB+MdkG77jJ2I6O02BYWflQ Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10567"; a="80775909" X-IronPort-AV: E=Sophos;i="5.96,261,1665414000"; d="scan'208,223";a="80775909" Received: from mail-tycjpn01lp2171.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.171]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Dec 2022 14:32:42 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eDMZtf5l4OZaGjcu/2sC3yx87kUAYgbrruOFCr6SqVgTRjSP5iaEdPxsyCB89gsQha8BA9YuhMNXJ9ehNMEL+JvIYBqdXjOz81D9qyPJXX0ozjRk79tIqoFq8mhd9Jvg0IM1KGj92v6983qLxkl4ut9xMg0BH/fZfK8ojU3DxoI20n9e+7nmuhvb7MmZuPxkj4pCqOYcoYdIgMawREKT239tGMq6zL8aEOzv0cLaurZcx7Z16ivUTcEGR1uCOJkLsnAGOGUMY9kfTz5+p8TqFbGE5kQEoP0zljjkGUfA2M5yCrHZApWK5WOSeiNSt7UTzfnmEJNpejiJpBWU5eLYqQ== 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=e6UsPBLNlQHKtB1KvFvgkx87opjsLTrDtbab1lEBhiQ=; b=fjpcgpvaHeSt+1woZEwWZhVXjftdILr3oD3amtTynbBtZdBCMbQn5Uvr/6iUwEoC0HzjEMQrMqh/ML2zsRtta8VdxUq28ATcsZ2Ml7mnhevFhEkKE4GACpp/Wc2tRVrCrIS9HlF+/7LW5LT7vgh38aXouIaRfgLHFnU6GCnO0eMnF2Wm/CspfDyHLTzLmdkgEby4VkEsvrgjSliCFCUYXzozFbX+Lmeud/9nEqJuWVX5I3Z+6B+na8sAOFK0fDgYbo6haYjfTAQSpoPspw6JyB7hrAoAalsHUKtMKlQ5qkrK5i8z37akEOs4tZK16Igg6EpbpAXhfxoAT7MoyoIrTA== 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 OSYPR01MB5463.jpnprd01.prod.outlook.com (2603:1096:604:86::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5924.16; Wed, 21 Dec 2022 05:32:38 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::db62:a054:b1fa:4cb3]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::db62:a054:b1fa:4cb3%9]) with mapi id 15.20.5924.016; Wed, 21 Dec 2022 05:32:38 +0000 From: "houzj.fnst@fujitsu.com" To: Peter Smith CC: Amit Kapila , Masahiko Sawada , "wangw.fnst@fujitsu.com" , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHZD4gmc8Gf0xrGM0OFaEbpojAcOq5uQq1wgAHYoYCAAB++4IAAIlOAgAGmKgCAABa30IADFsaAgAFWGwCAABBJYIAA+pYAgABJqTA= Date: Wed, 21 Dec 2022 05:32:38 +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?NTBfQWN0aW9uSWQ9ZmI1MjVhOWItM2MzYi00Mjg0LWIxOTItNzAwZDdlOTU3?= =?utf-8?B?OGQ2O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0xMi0yMVQwNTozMDo0MFo7TVNJUF9MYWJl?= =?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_|OSYPR01MB5463:EE_ x-ms-office365-filtering-correlation-id: 36a54c54-cd98-41ab-d9d4-08dae314c5ed x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: cICWnQHuhnGQat5xUwiylq6Dnu9QXOxotoKbkbglXGH/34jWl/MivUK2YKEVCH+wgakJLYhtUr92igb4RrC+MXvxsbDXPi9nLOHeh91msmow7M3KOwxuY4745EU248XJu3J1p6b2LSE5GRZq61MFQVRKZKR6wpdwkH75WBBnC0H6Umv6fzCqZ871lKk1mpxZbFFOwGyljw14QV0CSMdCu8kOZicWxVdZ9q1qpZE7MTOcfAmdWHGAq+3PuszH+GWlFLHS+lr2RVJLjfihDQdjGC7afytmPH1zPyUXYom+fSkAbBfYggeDEO7jSVZyb+ZCGzx4nNpPAbX2gY1psAUfnh8oaiHXPJ0jdDFsS2vSNvZcynDVl5WIP/my5fllFgGbiRmsJwJTTxwylyOte6PYsOMPKElPdkeuA+tHjvevXKnBKR6Ri/gmANCyZQO17p+ZXB5BM4jAx1jaeaViKY0YsGCd9LMDcush/Nil/hnp6wDNEiUk0nC3ElkkUK1BBwPtA2olmL0bqWCUFwXKYXCiGrP32zpLcaE4KE0yvpVWWHl6MgK7VGHMKbj6RmpMdJAzhbA5gY3/K78WzcrIaYjcYlqUAHw1is4PzCscCku5MJpoly6yqsatMmLec6ViKNpsscYIOTXhwNtjmVGegG40AMz3rM8HlsYtWJWjHIbpz4+pKOACt0/jg56D66UtbVqHm2pUlOMHB3DcrNqhnGV3fXw5vO2zUm3At5pH1HoXZjA= 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)(346002)(136003)(396003)(366004)(376002)(39860400002)(1590799012)(451199015)(86362001)(55016003)(85182001)(26005)(33656002)(478600001)(186003)(71200400001)(9686003)(7696005)(6506007)(76116006)(66476007)(66446008)(64756008)(66556008)(4326008)(5660300002)(316002)(54906003)(41300700001)(4744005)(2906002)(66946007)(6916009)(8936002)(52536014)(53546011)(38100700002)(122000001)(82960400001)(99936003)(38070700005)(8676002)(83380400001)(1580799009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VzJHY2pYejVMM29aUzVCckVsWGEyTkJOMDgxQ05rdnlPbVB1d0QxY05aVFEw?= =?utf-8?B?dWcrUG9wZEVPNlFXYlZGVDhlWE55S0Z0K1RJbmhMaldCZjEyN2pUVWo5RlV1?= =?utf-8?B?cnlPblBCMkJWZVIrcFkzRU5NSS9HSFkrdzE0dzR5bWtqMklnSVNoM2RMc21Z?= =?utf-8?B?VWwxeE0vSnlMR0JMR2xYU2h4c1NoM25ITml6TE1EQ1FGN1Y0VW1pemp4Q24v?= =?utf-8?B?Y3BXRnJnakp0aUVYZWtXR2kyZnFTYklnb1FCc2ZtWmNwWGVsYmlaUlU2alhy?= =?utf-8?B?R0gyazZkTHlJUktyeW0wdFdJOVc0Tnd6aGNjZ1NPalRlckJZWnl3OHpqWStm?= =?utf-8?B?NnpIdjVEaUNDY1FjSmVSbG9ZWkRGdUE2VWJxNG9Lc0tSY1JPdHQwc21aL0xo?= =?utf-8?B?WHV5LzF3VHAxeHBxbjlKMy9ZaEtnSmY1anNSR3EzVm5XRTBJYlByMFBOVTZj?= =?utf-8?B?WWV4ME9ERVoxdnFickdEQ1BjOWQ1elhuQWxPZWpBUmN2MGo2SnFBN3JWZFMx?= =?utf-8?B?ZVJnNWw1ZlRaajJtMVIwa0toa2ZvcmxENjhNa2llZFQ5VFVLdHhkL2NYamhG?= =?utf-8?B?ODRPcWwyS0FiWVdnbTA1NlllaGlqVFYvM1hiL2lUa2lieUxxTFltQk1venVS?= =?utf-8?B?NUcwSHBYL25ER2hYZFB5U0JpMTdjSUd6dDNLOWFvTjl6enIvWkVlSEIrUG96?= =?utf-8?B?YzJqOC9mRWZ5b1U3U1hQYytSTXZjWGgvbG1mZCs0TDFOTnpoZ29kcXNJQ1pk?= =?utf-8?B?cVM2MTh3amdEdzNjYWJtQS94ZlpteVdnMjJSc0NnTVd5Z2RtOXNhUFV6cVA4?= =?utf-8?B?SFloU1hYeHMydHNuZmpudUNZU1hjSzFTTVkwTFBod2J0elU5K1BTSE5na0ov?= =?utf-8?B?M2RQNG4wSEh1ajZiVklRZjBjbDNJYWQxeW1JMUdHeTJUMkZyMXRISGlVUXRr?= =?utf-8?B?KzhzMG5QSW9ZamxxQU1HbWhLVURjdW8yd2QwS29RekIxTS90cUU3cjFiMUo2?= =?utf-8?B?QzllTHRpTTlUUGNzTUU3eWUzbFBJV0JJakZBaldmQThhR29VcFhJODlyM2xD?= =?utf-8?B?Zmd5UHlxSFpIeEN0OGpJUzU0RjBoNlc2YUh5UWowRnhxdXh1UTQzN3NINjB0?= =?utf-8?B?MjB4aU9HSG9YNGYvWUZ6eWFNM1pLOEIvRjhjUGJNclZmRzBUNGJtZVZZOWt4?= =?utf-8?B?TVFXUE9HNnNERkVCa2RFZjRFa3BDWkh1Zll3bUVuS1AvN0dQdmtpQXpuMGRO?= =?utf-8?B?NGUwU0lVZ1FCaGk4SDBvVk8zVlVFUGFIMkR3VWcyS0Q4M0VOc0t1V01nS291?= =?utf-8?B?YjJOMVp1TW9JSER1RXVjU25IV2VLU3FDUExNRExRNGtWT09KUDdTc1grY3l5?= =?utf-8?B?Nmx4ejFyTmlua3NScXJ4Zjh4RzJtaktKTlZ5cEVma3htVU4zWWpDUG1pTCsy?= =?utf-8?B?RDd3Z2F5UkxKUzBhcmtEbDRzNEs5djlMUXVJQTdscHpGNXQ5aFNNSU1IcEZB?= =?utf-8?B?aTJtR0F3ZmdvWTNQU2VkZS9UNU5jWFhvQTVUWHU5RkpzTGx5NDFqeGs0cmNi?= =?utf-8?B?SGJ4UThCSmlHcjJKblplK2JrZXdaVlhxeXNmY3MvUkRXemU0OHFjNnU3NmRB?= =?utf-8?B?U05SZDhMbXR0d1FCM3l6d28zWXJzQ001dFVYeG1hMWFCQ2w0a1ZtSkkvNWlv?= =?utf-8?B?MGFKM21zbnBoVXRvbi81eUNPYmdkZ1dLT3l0UFhqYXR2ZHZpY2NCZ3FrSXl2?= =?utf-8?B?WjVMUXhNNTM4d09TdmFlLy9jMHpTbGFONXViQk93cVMxc2dGVjlsRHNyd0hz?= =?utf-8?B?bTJXZmtHUHFsTkNiTmxmOTdxc0JDUnkxTHhyV05MNUlvdEFOV0I1QVZQeStm?= =?utf-8?B?SVB0V3p5Y2s5OUFVZmllWjEwZjArRS8rVzlMdXVHNlJycVZYaVF1Q3lEL2VZ?= =?utf-8?B?dmtvZk0wMk5pKzNLWW16TVpwZFFabmNIQVRsbnMwVnJQTHJYMHFrbWJpWWNy?= =?utf-8?B?eFFRbUJBWnoyVXMycW5OdmIvVUtDUzdkNndaV3BXY0lIRVh6VXR1YjJsNU43?= =?utf-8?B?OWF3UjZaaGk2NFh1SDFpK3FkeENobGZjYjlhb2w5d0FDQ24rSVQ5OW1JUG9r?= =?utf-8?Q?A8F5X/y3W01q0pyY7jv8bewQM?= Content-Type: multipart/mixed; boundary="_008_OS0PR01MB5716C1C1D8244BA86311193894EB9OS0PR01MB5716jpnp_" 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: 36a54c54-cd98-41ab-d9d4-08dae314c5ed X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Dec 2022 05:32:38.5584 (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: CTBNwZKayHyGiST2Gyq6wGXGJRfyuVph0AcK2buBEbyqPRgJC2Kjc2wuYQxMjtjnPTx1Fe8IzGxlsqew1wO2Iw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSYPR01MB5463 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_008_OS0PR01MB5716C1C1D8244BA86311193894EB9OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gV2VkLCBEZWMgMjEsIDIwMjIgOTowNyBBTSBQZXRlciBTbWl0aCA8c21pdGhwYjIyNTBAZ21h aWwuY29tPiB3cm90ZToNCj4gRllJIC0gYXBwbHlpbmcgdjYzLTAwMDEgdXNpbmcgdGhlIGxhdGVz dCBtYXN0ZXIgZG9lcyBub3Qgd29yay4NCj4gDQo+IGdpdCBhcHBseSAuLi9wYXRjaGVzX21pc2Mv djYzLTAwMDEtUGVyZm9ybS1zdHJlYW1pbmctbG9naWNhbC10cmFuc2FjdGlvbnMtYnktDQo+IHBh cmFsbC5wYXRjaA0KPiBlcnJvcjogcGF0Y2ggZmFpbGVkOiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL21lc29uLmJ1aWxkOjENCj4gZXJyb3I6IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbWVzb24uYnVpbGQ6IHBhdGNoIGRvZXMgbm90IGFwcGx5DQo+IA0KPiBMb29rcyBs aWtlIGEgcmVjZW50IGNvbW1pdCBbMV0gdG8gYWRkIGNvcHlyaWdodHMgYnJva2UgdGhlIHBhdGNo DQoNClRoYW5rcyBmb3IgeW91ciByZW1pbmRlci4NClJlYmFzZWQgdGhlIHBhdGNoIHNldC4NCg0K QXR0YWNoIHRoZSBuZXcgcGF0Y2ggc2V0IHdoaWNoIGFsc28gaW5jbHVkZXMgc29tZQ0KY29zbWV0 aWMgY29tbWVudCBjaGFuZ2VzLg0KDQpCZXN0IHJlZ2FyZHMsDQpIb3UgemoNCg== --_008_OS0PR01MB5716C1C1D8244BA86311193894EB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v64-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v64-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v64-0007-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8952; creation-date="Wed, 21 Dec 2022 05:32:16 GMT"; modification-date="Wed, 21 Dec 2022 05:32:33 GMT" Content-Transfer-Encoding: base64 RnJvbSA2YmI3NGIyYmVkNTUxMDMzZGZiZWIwMGNkZjE0NzU2NWI4YzQ3MDI1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djY0IDcvN10gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgfCAyNiArKysr KysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAg ICB8ICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyB8IDMy ICsrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg ICAgICAgICAgICB8ICA2ICsrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 ICAgICAgICB8ICAzICstCiA1IGZpbGVzIGNoYW5nZWQsIDQzIGluc2VydGlvbnMoKyksIDI1IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IGVhZmVlYWRmNDcuLjJhNTE4MWY0OGEg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzE4OSwxMyArMzE4OSwyNCBAQCBTRUxFQ1QgcGlkLCB3 YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdh aXRfZXZlbnQgaQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlk PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAg IDxwYXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAgICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNo cm9uaXphdGlvbiB3b3JrZXIuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK ICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+ CiAgICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25p emluZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFpbiBhcHBseSB3b3JrZXIKKyAgICAgICBtYWlu IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJh PjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0zMjA1LDcgKzMyMTYsNyBAQCBTRUxFQ1QgcGlk LCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJF IHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3 cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0g ICAgICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAgICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxs IGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTMyMTQsNyArMzIyNSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBp CiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBv cmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2 ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwg YXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMy MjMsNyArMzIzNSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBG Uk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZp ZWxkPmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3 aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAg IFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNl bmRlcgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBv cmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMzIsNyArMzI0 NSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0 YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVz dF9lbmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJh PgogICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVw b3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBs b2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKQEAgLTMyNDIsNyArMzI1Niw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwg d2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAg ICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQg bG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdpbiBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAg ICBzZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCmluZGV4IGMyYzdkOGE4YjcuLmYyODI1NzA1ZjEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRh bG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0OSw2ICs5NDksNyBAQCBDUkVBVEUgVklFVyBwZ19z dGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAgICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAg ICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAgIHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFw cGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBzdC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJl Y2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCBlMDc1YzI4MDgwLi5iYjZk YWY3NTMwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5j aGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBA IC0xMDc4LDcgKzEwNzgsNyBAQCBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0 YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19TVEFU X0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElP Tl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FSR0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQ R19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJl dHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwpAQCAtMTEwNCwxMCArMTEwNCw2IEBA IHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNW YWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJ LyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCi0JCWlmIChpc1Bh cmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCi0JCQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlk ID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdv cmtlci5zdWJpZCk7CkBAIC0xMTE2LDI2ICsxMTEyLDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlw 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 YXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDk4ZDkwZDkzMzguLjcx ZGI4NmNlZTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysr IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTQyNiw5ICs1NDI2LDkgQEAK ICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAn LCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9h cmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0 LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAg cHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAn e3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxh c3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAg cHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFt cHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3RhbXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAn e2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxy ZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1l LGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywK ICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAy NicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJyZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFt ZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggZmI5ZjkzNmQ0My4uN2U2 ZWE2MGY5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwOTQsNiArMjA5 NCw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5waWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwg U0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAg ICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xz biwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUsCkBAIC0yMTAxLDcgKzIxMDIsNyBAQCBwZ19z dGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3Rf ZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3RpbWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlv biBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkg c3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBs YXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9O ICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJz Y3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3Bp ZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGlt ZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9p ZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAg cy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9yX2NvdW50LAotLSAKMi4yMy4wLndpbmRvd3Mu MQoK --_008_OS0PR01MB5716C1C1D8244BA86311193894EB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v64-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v64-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v64-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=219448; creation-date="Wed, 21 Dec 2022 05:32:16 GMT"; modification-date="Wed, 21 Dec 2022 05:32:34 GMT" Content-Transfer-Encoding: base64 RnJvbSAwZWY5MmM5Njc4MzNkMDE0NTU4YjdkZGZjMDBmNGU5OWNlMDdjYTRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY2NCAxLzddIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzIHNvb24KYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VuZApjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gSG93ZXZlciwgaWYKdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgdGltZXMgb3V0IHdoaWxlIGF0dGVtcHRpbmcgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhl CnBhcmFsbGVsIGFwcGx5IHdvcmtlciwgaXQgd2lsbCBzd2l0Y2ggdG8gInBhcnRpYWwgc2VyaWFs aXplIiBtb2RlIC0gIGluIHRoaXMKbW9kZSB0aGUgbGVhZGVyIHNlcmlhbGl6ZXMgYWxsIHJlbWFp bmluZyBjaGFuZ2VzIHRvIGEgZmlsZSBhbmQgbm90aWZpZXMgdGhlCnBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgdG8gcmVhZCBhbmQgYXBwbHkgdGhlbSBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlv bi4gV2UKa2VlcCB0aGlzIHBhcmFsbGVsIGFwcGx5IGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0 aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQKYWxzbyB3YWl0IGZvciB0aGUgd29ya2VyIHRvIGZp bmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZwphbmQgYXZvaWRz IHdyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbSBmaWxlcyBpbiBtb3N0IGNhc2VzLiBXZSBzdGls bCBuZWVkIHRvCnNwaWxsIGlmIHRoZXJlIGlzIG5vIHdvcmtlciBhdmFpbGFibGUuCgpUaGlzIHBh dGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcnIHBhcmFtZXRlciBz byB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiBpbiBhIHBhcmFsbGVsIGFwcGx5CndvcmtlciBvciBzcGlsbCB0aGUgY2hh bmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBwYXJhbWV0ZXIgdG8K J29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIgdmFsdWUgJ3BhcmFsbGVsJyBtZWFu cyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2YWx1ZQonb24nIG1lYW5zIHRoZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVkIHRvIGRpc2suIFRoZSBkZWZhdWx0IHZh bHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVoYXZpb3VyKS4KCkluIGFkZGl0aW9uLCB0 aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBTVFJFQU1fQUJPUlQgbWVz c2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0X2xzbiBjYW4gYWxzbyBiZSBzZW50IHdo aWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVwbGljYXRpb24gb3JpZ2luIGluIHBhcmFs bGVsIGFwcGx5IHdvcmtlciB3aGVuIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaXMKYWJvcnRl ZC4gQmVjYXVzZSB0aGlzIG1lc3NhZ2UgZXh0ZW5zaW9uIGlzIG5lZWRlZCB0byBzdXBwb3J0IHBh cmFsbGVsCnN0cmVhbWluZywgcGFyYWxsZWwgc3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9y IHB1YmxpY2F0aW9ucyBvbiBzZXJ2ZXJzIDwKUEcxNi4KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgIDExICstCiBkb2Mvc3JjL3NnbWwvY29uZmln LnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICstCiBkb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAgfCAgIDI1ICstCiBkb2Mvc3JjL3NnbWwvbW9uaXRv cmluZy5zZ21sICAgICAgICAgICAgICAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9wcm90b2Nv bC5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICAgMjQgKy0KIGRvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbCAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3hhY3QuYyAgICAgICAgICAgICB8ICAgMjQgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRz L3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgNjcgKy0KIHNyYy9iYWNrZW5kL2xpYnBxL3Bx bXEuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9pbnRlcnJ1cHQuYyAgICAgICAgICAgIHwgICAgNSArLQogLi4uL2xpYnBxd2FscmVjZWl2ZXIv bGlicHF3YWxyZWNlaXZlci5jICAgICAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9NYWtlZmlsZSAgICAgIHwgICAgMSArCiAuLi4vcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAxNjIxICsrKysrKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAgfCAgICA1ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgICAgfCAgMjI2ICsrLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCAgIHwgICAgMSArCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jICAgICAgfCAgIDI2ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgfCAgIDM3ICstCiAuLi4vcmVw bGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAgfCAgICA1ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgfCAgIDI1ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxMzM5ICsrKysrKysrKysr LS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jICAgfCAgIDIy ICstCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgICAgICAgICAgfCAgICA0 ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgICAgICAgICAgICAgICB8ICAgNDYg Kwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgICAgMyAr CiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMgICAgICAgfCAgICA2ICsK IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYyAgICAgICAgICAgICB8ICAgIDUgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAgMTIgKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAgMSArCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBz cmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIxICstCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAgICAgICAgfCAgIDIxICstCiBz cmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmggICAgICAgfCAgICAyICsKIHNy Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oICAgICB8ICAgIDEgKwogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICAgICAgIHwgICAyOCArLQogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgIHwgICAgOCArCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCAgICAgICAgICAgICAgfCAgICAyICstCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oICAgICAgICAgICAgfCAgICAyICstCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAgICA0ICstCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgfCAgICAyICstCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgMjIzICsrLQogc3Jj L2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAgICAgICAgIHwgICAgNSArCiBzcmMv aW5jbHVkZS9zdG9yYWdlL2xvY2suaCAgICAgICAgICAgICAgICAgICAgfCAgIDE3ICstCiBzcmMv aW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9p bmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAgICAgICB8ICAgIDIgKwogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0ICAgIHwgICA0NiArLQogc3JjL3Rl c3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCAgICAgICAgIHwgICAgNiArLQogc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgICAgIHwgICAgNyArCiA1MCBmaWxl cyBjaGFuZ2VkLCAzNjU3IGluc2VydGlvbnMoKyksIDM4MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggOTMxNmI4MTFhYy4uNDRjZGExNTM4MyAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFs b2dzLnNnbWwKQEAgLTc5MTMsMTEgKzc5MTMsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFi bGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwK IAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3Ry ZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+ c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4K ICAgICAgIDxwYXJhPgotICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxv dyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBD b250cm9scyBob3cgdG8gaGFuZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNh Y3Rpb25zOgorICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5n IG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFs PiA9IHNwaWxsIHRoZSBjaGFuZ2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAg ICAgIGRpc2sgYW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiB0aGUKKyAgICAgICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJh bD4gPSBhcHBseSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKyAgICAg ICB3b3JrZXIgaWYgYXZhaWxhYmxlIChzYW1lIGFzICd0JyBpZiBubyB3b3JrZXIgaXMgYXZhaWxh YmxlKQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXgg OWVlZGFiNjUyZC4uMTA0Y2NlNzFmMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDk2OCw3ICs0OTY4LDggQEAg QU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4K ICAgICAgICAgU3BlY2lmaWVzIG1heGltdW0gbnVtYmVyIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24g d29ya2Vycy4gVGhpcyBpbmNsdWRlcwotICAgICAgICBib3RoIGFwcGx5IHdvcmtlcnMgYW5kIHRh YmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJzLgorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2Vy cywgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbgorICAg ICAgICB3b3JrZXJzLgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgTG9n aWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQg YnkKQEAgLTUwMDgsNiArNTAwOSwzMSBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAg PC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBp ZD0iZ3VjLW1heC1wYXJhbGxlbC1hcHBseS13b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZs YWJlbD0ibWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAg ICA8dGVybT48dmFybmFtZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgor ICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9z dWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5Pgor ICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgPHBhcmE+CisgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcworICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhl IGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dy ZXNzIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxp dGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIHRha2Vu IGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQorICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9y ZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1lPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBh cmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBv bmx5IGJlIHNldCBpbiB0aGUKKyAgICAgICAgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmls ZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZlciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAg ICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAg ICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxp Y2F0aW9uLnNnbWwKaW5kZXggN2ZkZjA4YjU5ZC4uYTdiZDliZTk1NCAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xNDk3LDYgKzE0OTcsMTYgQEAgQ09OVEVYVDogIHBy b2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1 cmluZyAiSU5TRVIKICAgIG1pZ2h0IG5vdCB2aW9sYXRlIGFueSBjb25zdHJhaW50LiAgVGhpcyBj YW4gZWFzaWx5IG1ha2UgdGhlIHN1YnNjcmliZXIKICAgIGluY29uc2lzdGVudC4KICAgPC9wYXJh PgorCisgIDxwYXJhPgorICAgV2hlbiB0aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFy YWxsZWw8L2xpdGVyYWw+LCB0aGUgZmluaXNoIExTTiBvZgorICAgZmFpbGVkIHRyYW5zYWN0aW9u cyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRv CisgICBjaGFuZ2UgdGhlIHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBv ciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IGFuZAorICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3Rz IGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAor ICAgYmUgd3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2gg TFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsKKyAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlw dGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgorICAgU0tJUDwvY29tbWFuZD48 L2xpbms+LgorICA8L3BhcmE+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBs aWNhdGlvbi1yZXN0cmljdGlvbnMiPgpAQCAtMTY3OCw3ICsxNjg4LDggQEAgQ09OVEVYVDogIHBy b2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1 cmluZyAiSU5TRVIKICAgIHN1YnNjcmlwdGlvbi4gIEEgZGlzYWJsZWQgc3Vic2NyaXB0aW9uIG9y IGEgY3Jhc2hlZCBzdWJzY3JpcHRpb24gd2lsbCBoYXZlCiAgICB6ZXJvIHJvd3MgaW4gdGhpcyB2 aWV3LiAgSWYgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24gb2YgYW55CiAgICB0YWJs ZSBpcyBpbiBwcm9ncmVzcywgdGhlcmUgd2lsbCBiZSBhZGRpdGlvbmFsIHdvcmtlcnMgZm9yIHRo ZSB0YWJsZXMKLSAgIGJlaW5nIHN5bmNocm9uaXplZC4KKyAgIGJlaW5nIHN5bmNocm9uaXplZC4g TW9yZW92ZXIsIGlmIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaXMgYXBwbGllZCBpbgorICAg cGFyYWxsZWwsIHRoZXJlIHdpbGwgYmUgYWRkaXRpb25hbCB3b3JrZXJzLgogICA8L3BhcmE+CiAg PC9zZWN0MT4KIApAQCAtMTgwNSw4ICsxODE2LDkgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVt b3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIK IAogICAgPHBhcmE+CiAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLW1heC1sb2dpY2FsLXJlcGxpY2F0 aW9uLXdvcmtlcnMiPjx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zh cm5hbWU+PC9saW5rPgotICAgIG11c3QgYmUgc2V0IHRvIGF0IGxlYXN0IHRoZSBudW1iZXIgb2Yg c3Vic2NyaXB0aW9ucyAoZm9yIGFwcGx5IHdvcmtlcnMpLCBwbHVzCi0gICAgc29tZSByZXNlcnZl IGZvciB0aGUgdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlcnMuCisgICAgbXVzdCBiZSBzZXQg dG8gYXQgbGVhc3QgdGhlIG51bWJlciBvZiBzdWJzY3JpcHRpb25zIChmb3IgbGVhZGVyIGFwcGx5 CisgICAgd29ya2VycyksIHBsdXMgc29tZSByZXNlcnZlIGZvciB0aGUgdGFibGUgc3luY2hyb25p emF0aW9uIHdvcmtlcnMgYW5kCisgICAgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KICAgIDwvcGFy YT4KIAogICAgPHBhcmE+CkBAIC0xODIzLDYgKzE4MzUsMTMgQEAgQ09OVEVYVDogIHByb2Nlc3Np bmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAi SU5TRVIKICAgICAgc3Vic2NyaXB0aW9uIGluaXRpYWxpemF0aW9uIG9yIHdoZW4gbmV3IHRhYmxl cyBhcmUgYWRkZWQuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIDxsaW5rIGxpbmtlbmQ9 Imd1Yy1tYXgtcGFyYWxsZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIj48dmFybmFt ZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPjwv bGluaz4KKyAgICAgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFt aW5nIG9mIGluLXByb2dyZXNzCisgICAgIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIKKyAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+Lgor ICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAgICBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMg YXJlIGFsc28gYWZmZWN0ZWQgYnkKICAgICA8bGluayBsaW5rZW5kPSJndWMtd2FsLXJlY2VpdmVy LXRpbWVvdXQiPjx2YXJuYW1lPndhbF9yZWNlaXZlcl90aW1lb3V0PC92YXJuYW1lPjwvbGluaz4s CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21s L21vbml0b3Jpbmcuc2dtbAppbmRleCAzNjNiMTgzZTVmLi5lYWZlZWFkZjQ3IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwKQEAgLTE4NTEsNiArMTg1MSwxMSBAQCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAu MCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgog ICAgICAgPGVudHJ5PjxsaXRlcmFsPmFkdmlzb3J5PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8 ZW50cnk+V2FpdGluZyB0byBhY3F1aXJlIGFuIGFkdmlzb3J5IHVzZXIgbG9jay48L2VudHJ5Pgog ICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5hcHBseXRyYW5z YWN0aW9uPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+V2FpdGluZyB0byBhY3F1aXJl IGEgbG9jayBvbiBhIHJlbW90ZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkCisgICAgICBieSBh IGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaWJlci48L2VudHJ5PgorICAgICA8L3Jvdz4KICAg ICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5leHRlbmQ8L2xpdGVyYWw+PC9lbnRyeT4K ICAgICAgIDxlbnRyeT5XYWl0aW5nIHRvIGV4dGVuZCBhIHJlbGF0aW9uLjwvZW50cnk+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2Nv bC5zZ21sCmluZGV4IDAzMzEyZTA3ZTIuLjQzOWVmNjc1ZjMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC0z MTAzLDcgKzMxMDMsNyBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJh c2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4K ICAgICAgICBQcm90b2NvbCB2ZXJzaW9uLiBDdXJyZW50bHkgdmVyc2lvbnMgPGxpdGVyYWw+MTwv bGl0ZXJhbD4sIDxsaXRlcmFsPjI8L2xpdGVyYWw+LAotICAgICAgIGFuZCA8bGl0ZXJhbD4zPC9s aXRlcmFsPiBhcmUgc3VwcG9ydGVkLgorICAgICAgIDxsaXRlcmFsPjM8L2xpdGVyYWw+LCBhbmQg PGxpdGVyYWw+NDwvbGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4KICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgogICAgICAgIFZlcnNpb24gPGxpdGVyYWw+MjwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVk IG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE0CkBAIC0zMTEzLDYgKzMxMTMsMTEgQEAgcHNxbCAi ZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVN OyIKICAgICAgICBWZXJzaW9uIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5 IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNQogICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBz dHJlYW1pbmcgb2YgdHdvLXBoYXNlIGNvbW1pdHMuCiAgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICBWZXJzaW9uIDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5 IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNgorICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBz dHJlYW1zIG9mIGxhcmdlIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGJlIGFw cGxpZWQgaW4gcGFyYWxsZWwuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAg PC92YXJsaXN0ZW50cnk+CiAKQEAgLTY4ODMsNiArNjg4OCwyOCBAQCBwc3FsICJkYm5hbWU9cG9z dGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAg ICA8L3BhcmE+CiAgICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisg ICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVy bT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBv ZiB0aGUgYWJvcnQuIFRoaXMgZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNp b24KKyAgICAgICAgIDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAg ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+ SW50NjQgKFRpbWVzdGFtcFR6KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxw YXJhPgorICAgICAgICAgQWJvcnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZh bHVlIGlzIGluIG51bWJlcgorICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVT UUwgZXBvY2ggKDIwMDAtMDEtMDEpLiBUaGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFibGUg c2luY2UgcHJvdG9jb2wgdmVyc2lvbiA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAg IDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggZjlhMTc3NjM4MC4uZjE3M2EwOTAzNyAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIyOCwxMyArMjI4LDI5IEBA IENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNj cmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAg ICA8dmFybGlzdGVudHJ5PgotICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVy YWw+ICg8dHlwZT5ib29sZWFuPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFs PnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAg PGxpc3RpdGVtPgogICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIg dG8gZW5hYmxlIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAg ICBmb3IgdGhpcyBzdWJzY3JpcHRpb24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0g ICAgICAgICAgYXJlIGZ1bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVu IHNlbnQgdG8gdGhlCi0gICAgICAgICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAg IGZvciB0aGlzIHN1YnNjcmlwdGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9m ZjwvbGl0ZXJhbD4sCisgICAgICAgICAgbWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxs eSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQg dG8gdGhlIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAg ICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhl IGluY29taW5nIGNoYW5nZXMgYXJlIHdyaXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmls ZXMgYW5kIHRoZW4gYXBwbGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAg ICAgIGNvbW1pdHRlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2Ny aWJlci4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYg c2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUg ZGlyZWN0bHkKKyAgICAgICAgICBhcHBsaWVkIHZpYSBvbmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMsIGlmIGF2YWlsYWJsZS4gSWYgbm8KKyAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaXMgZnJlZSB0byBoYW5kbGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGVuCisgICAg ICAgICAgdGhlIGNoYW5nZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBs aWVkIGFmdGVyIHRoZQorICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0 aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgaW4gYQorICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdv cmtlciwgdGhlIGZpbmlzaCBMU04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbgorICAgICAgICAg IG1pZ2h0IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KICAgICAgICAgIDwvcGFy YT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0t dmlld3Muc2dtbAppbmRleCAxNDNhZTViN2JiLi44NDI4ZWU3ODY3IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3 cy5zZ21sCkBAIC0xMzc5LDggKzEzNzksOSBAQAogICAgICAgIDxsaXRlcmFsPnZpcnR1YWx4aWQ8 L2xpdGVyYWw+LAogICAgICAgIDxsaXRlcmFsPnNwZWN0b2tlbjwvbGl0ZXJhbD4sCiAgICAgICAg PGxpdGVyYWw+b2JqZWN0PC9saXRlcmFsPiwKLSAgICAgICA8bGl0ZXJhbD51c2VybG9jazwvbGl0 ZXJhbD4sIG9yCi0gICAgICAgPGxpdGVyYWw+YWR2aXNvcnk8L2xpdGVyYWw+LgorICAgICAgIDxs aXRlcmFsPnVzZXJsb2NrPC9saXRlcmFsPiwKKyAgICAgICA8bGl0ZXJhbD5hZHZpc29yeTwvbGl0 ZXJhbD4sIG9yCisgICAgICAgPGxpdGVyYWw+YXBwbHl0cmFuc2FjdGlvbjwvbGl0ZXJhbD4uCiAg ICAgICAgKFNlZSBhbHNvIDx4cmVmIGxpbmtlbmQ9IndhaXQtZXZlbnQtbG9jay10YWJsZSIvPi4p CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMKaW5kZXggYjdjN2ZkOWYwMC4uZDBkOWM4NjQ0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYwpAQCAtMTcxMiw2ICsxNzEyLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29s IGlzU3ViWGFjdCkKIAlpbnQJCQluY2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW47 CiAJVGltZXN0YW1wVHogeGFjdF90aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAKIAkvKgogCSAq IElmIHdlIGhhdmVuJ3QgYmVlbiBhc3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxsIGNhcmUgd2hl dGhlciB3ZSBhYm9ydGVkCkBAIC0xNzQyLDYgKzE3NDMsMTMgQEAgUmVjb3JkVHJhbnNhY3Rpb25B Ym9ydChib29sIGlzU3ViWGFjdCkKIAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9ydCB0cmFuc2Fj dGlvbiAldSwgaXQgd2FzIGFscmVhZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwogCisJLyoKKwkg KiBBcmUgd2UgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8gIE9yLCBpbiBv dGhlciB3b3JkcywgYXJlCisJICogd2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPworCSAqLwor CXJlcGxvcmlnaW4gPSAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3Jp Z2luSWQgJiYKKwkJCQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9Ob3RSZXBsaWNh dGVJZCk7CisKIAkvKiBGZXRjaCB0aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVjb3Jk ICovCiAJbnJlbHMgPSBzbWdyR2V0UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKIAluY2hp bGRyZW4gPSB4YWN0R2V0Q29tbWl0dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAgLTE3NjUsNiAr MTc3MywxMSBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQkJCQkg ICBNeVhhY3RGbGFncywgSW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5VTEwpOwogCisJ aWYgKHJlcGxvcmlnaW4pCisJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0 aW9uIG9yaWdpbiAqLworCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nl c3Npb25fb3JpZ2luX2xzbiwKKwkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOworCiAJLyoKIAkg KiBSZXBvcnQgdGhlIGxhdGVzdCBhc3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhlIFdBTCB3cml0 ZXIga25vd3MgdG8KIAkgKiBmbHVzaCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhpbmcgdG8gYmUg Z2FpbmVkIGJ5IGRlbGF5aW5nIHRoaXMsIHNpbmNlCkBAIC01ODY3LDExICs1ODgwLDEwIEBAIFhh Y3RMb2dBYm9ydFJlY29yZChUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAogCX0KIAogCS8qCi0JICog RHVtcCB0cmFuc2FjdGlvbiBvcmlnaW4gaW5mb3JtYXRpb24gb25seSBmb3IgYWJvcnQgcHJlcGFy ZWQuIFdlIG5lZWQKLQkgKiB0aGlzIGR1cmluZyByZWNvdmVyeSB0byB1cGRhdGUgdGhlIHJlcGxp Y2F0aW9uIG9yaWdpbiBwcm9ncmVzcy4KKwkgKiBEdW1wIHRyYW5zYWN0aW9uIG9yaWdpbiBpbmZv cm1hdGlvbi4gV2UgbmVlZCB0aGlzIGR1cmluZyByZWNvdmVyeSB0bworCSAqIHVwZGF0ZSB0aGUg cmVwbGljYXRpb24gb3JpZ2luIHByb2dyZXNzLgogCSAqLwotCWlmICgocmVwbG9yaWdpbl9zZXNz aW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQpICYmCi0JCVRyYW5zYWN0aW9uSWRJc1Zh bGlkKHR3b3BoYXNlX3hpZCkpCisJaWYgKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52 YWxpZFJlcE9yaWdpbklkKQogCXsKIAkJeGxfeGluZm8ueGluZm8gfD0gWEFDVF9YSU5GT19IQVNf T1JJR0lOOwogCkBAIC01OTI4LDggKzU5NDAsOCBAQCBYYWN0TG9nQWJvcnRSZWNvcmQoVGltZXN0 YW1wVHogYWJvcnRfdGltZSwKIAlpZiAoeGxfeGluZm8ueGluZm8gJiBYQUNUX1hJTkZPX0hBU19P UklHSU4pCiAJCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgKCZ4bF9vcmlnaW4pLCBzaXplb2Yo eGxfeGFjdF9vcmlnaW4pKTsKIAotCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh0d29waGFzZV94 aWQpKQotCQlYTG9nU2V0UmVjb3JkRmxhZ3MoWExPR19JTkNMVURFX09SSUdJTik7CisJLyogSW5j bHVkZSB0aGUgcmVwbGljYXRpb24gb3JpZ2luICovCisJWExvZ1NldFJlY29yZEZsYWdzKFhMT0df SU5DTFVERV9PUklHSU4pOwogCiAJcmV0dXJuIFhMb2dJbnNlcnQoUk1fWEFDVF9JRCwgaW5mbyk7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggZDY3MzU1N2Vh NC4uZDBlMGQyMGE4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpA QCAtODQsNyArODQsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29weV9kYXRh OwogCWJvb2wJCXJlZnJlc2g7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwlj aGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJyOwog CWNoYXIJICAgKm9yaWdpbjsKQEAgLTEzOCw3ICsxMzgsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25f b3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNT ZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxz ZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRz LT5zdHJlYW1pbmcgPSBmYWxzZTsKKwkJb3B0cy0+c3RyZWFtaW5nID0gTE9HSUNBTFJFUF9TVFJF QU1fT0ZGOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1RXT1BIQVNFX0NPTU1J VCkpCiAJCW9wdHMtPnR3b3BoYXNlID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRz LCBTVUJPUFRfRElTQUJMRV9PTl9FUlIpKQpAQCAtMjQxLDcgKzI0MSw3IEBAIHBhcnNlX3N1YnNj cmlwdGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAog CQkJCWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOwogCiAJCQlvcHRzLT5z cGVjaWZpZWRfb3B0cyB8PSBTVUJPUFRfU1RSRUFNSU5HOwotCQkJb3B0cy0+c3RyZWFtaW5nID0g ZGVmR2V0Qm9vbGVhbihkZWZlbCk7CisJCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1p bmdNb2RlKGRlZmVsKTsKIAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0 d29fcGhhc2UiKSA9PSAwKQogCQl7CkBAIC02MjksNyArNjI5LDcgQEAgQ3JlYXRlU3Vic2NyaXB0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2 YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0 dW0ob3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJlbmFibGVkIC0gMV0g PSBCb29sR2V0RGF0dW0ob3B0cy5lbmFibGVkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRp b25fc3ViYmluYXJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5iaW5hcnkpOwotCXZhbHVlc1tB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLnN0 cmVhbWluZyk7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0g Q2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRp b25fc3VidHdvcGhhc2VzdGF0ZSAtIDFdID0KIAkJQ2hhckdldERhdHVtKG9wdHMudHdvcGhhc2Ug PwogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKQEAgLTEwOTgsNyAr MTA5OCw3IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJz Y3JpcHRpb25TdG10ICpzdG10LAogCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmllZF9vcHRzLCBT VUJPUFRfU1RSRUFNSU5HKSkKIAkJCQl7CiAJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJzdHJlYW0gLSAxXSA9Ci0JCQkJCQlCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwor CQkJCQkJQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAkJCQkJcmVwbGFjZXNbQW51bV9w Z19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSB0cnVlOwogCQkJCX0KIApAQCAtMjEyMiwz ICsyMTIyLDYwIEBAIG1lcmdlX3B1YmxpY2F0aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpu ZXdwdWJsaXN0LCBib29sIGFkZHB1YiwgY29uc3QgY2hhciAqCiAKIAlyZXR1cm4gb2xkcHVibGlz dDsKIH0KKworLyoKKyAqIEV4dHJhY3QgdGhlIHN0cmVhbWluZyBtb2RlIHZhbHVlIGZyb20gYSBE ZWZFbGVtLiAgVGhpcyBpcyBsaWtlCisgKiBkZWZHZXRCb29sZWFuKCkgYnV0IGFsc28gYWNjZXB0 cyB0aGUgc3BlY2lhbCB2YWx1ZSBvZiAicGFyYWxsZWwiLgorICovCitjaGFyCitkZWZHZXRTdHJl YW1pbmdNb2RlKERlZkVsZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciB2YWx1 ZSBnaXZlbiwgYXNzdW1lICJ0cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoIWRlZi0+YXJnKQor CQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT047CisKKwkvKgorCSAqIEFsbG93IDAsIDEsICJm YWxzZSIsICJ0cnVlIiwgIm9mZiIsICJvbiIgb3IgInBhcmFsbGVsIi4KKwkgKi8KKwlzd2l0Y2gg KG5vZGVUYWcoZGVmLT5hcmcpKQorCXsKKwkJY2FzZSBUX0ludGVnZXI6CisJCQlzd2l0Y2ggKGlu dFZhbChkZWYtPmFyZykpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlyZXR1cm4gTE9HSUNBTFJF UF9TVFJFQU1fT0ZGOworCQkJCWNhc2UgMToKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFN X09OOworCQkJCWRlZmF1bHQ6CisJCQkJCS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0IGJlbG93ICov CisJCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJY2hh cgkgICAqc3ZhbCA9IGRlZkdldFN0cmluZyhkZWYpOworCisJCQkJLyoKKwkJCQkgKiBUaGUgc2V0 IG9mIHN0cmluZ3MgYWNjZXB0ZWQgaGVyZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0aGUKKwkJCQkg KiBncmFtbWFyJ3Mgb3B0X2Jvb2xlYW5fb3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJCQkJICovCisJ CQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImZhbHNlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJj YXNlY21wKHN2YWwsICJvZmYiKSA9PSAwKQorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1f T0ZGOworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJ0cnVlIikgPT0gMCB8fAorCQkJCQlw Z19zdHJjYXNlY21wKHN2YWwsICJvbiIpID09IDApCisJCQkJCXJldHVybiBMT0dJQ0FMUkVQX1NU UkVBTV9PTjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxsZWwiKSA9PSAwKQor CQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUw7CisJCQl9CisJCQlicmVhazsK Kwl9CisKKwllcmVwb3J0KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJIGVycm1zZygiJXMgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yIFwicGFyYWxsZWxc IiIsCisJCQkJCWRlZi0+ZGVmbmFtZSkpKTsKKwlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT0ZG OwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv bGlicHEvcHFtcS5jIGIvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCmluZGV4IDRkMDQxNWUzNzku LjYzOTg0NWZkODAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYworKysgYi9z cmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAgLTEzLDExICsxMywxMyBAQAogCiAjaW5jbHVkZSAi cG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5oIgogI2luY2x1ZGUgImxp YnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJw cS9wcW1xLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisj aW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInRjb3AvdGNv cHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogCkBAIC0xNjIsOSArMTY0LDE5 IEBAIG1xX3B1dG1lc3NhZ2UoY2hhciBtc2d0eXBlLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVu KQogCQlyZXN1bHQgPSBzaG1fbXFfc2VuZHYocHFfbXFfaGFuZGxlLCBpb3YsIDIsIHRydWUsIHRy dWUpOwogCiAJCWlmIChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkICE9IDApCi0JCQlTZW5kUHJv Y1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAotCQkJCQkJICAgUFJPQ1NJR19QQVJB TExFTF9NRVNTQUdFLAotCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQp OworCQl7CisJCQlpZiAoSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcigpKQorCQkJCVNlbmRQ cm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19Q QVJBTExFTF9BUFBMWV9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9i YWNrZW5kX2lkKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlBc3NlcnQoSXNQYXJhbGxlbFdvcmtlcigp KTsKKwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAorCQkJCQkJ CSAgIFBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwKKwkJCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9s ZWFkZXJfYmFja2VuZF9pZCk7CisJCQl9CisJCX0KIAogCQlpZiAocmVzdWx0ICE9IFNITV9NUV9X T1VMRF9CTE9DSykKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCmluZGV4IDBk NzJkZTI0YjAuLjJkZmE5YWI1MjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv Ymd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTEy OCw2ICsxMjgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiAJfSwKIAl7CiAJCSJBcHBseVdvcmtl ck1haW4iLCBBcHBseVdvcmtlck1haW4KKwl9LAorCXsKKwkJIlBhcmFsbGVsQXBwbHlXb3JrZXJN YWluIiwgUGFyYWxsZWxBcHBseVdvcmtlck1haW4KIAl9CiB9OwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9p bnRlcnJ1cHQuYwppbmRleCAxYWVkMmUyZTk5Li5lNjQwMjlmYWM0IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvaW50ZXJydXB0LmMKQEAgLTk4LDggKzk4LDkgQEAgU2lnbmFsSGFuZGxlckZvckNyYXNoRXhp dChTSUdOQUxfQVJHUykKICAqIHNodXQgZG93biBhbmQgZXhpdC4KICAqCiAgKiBUeXBpY2FsbHks IHRoaXMgaGFuZGxlciB3b3VsZCBiZSB1c2VkIGZvciBTSUdURVJNLCBidXQgc29tZSBwcm9jZXNz ZXMgdXNlCi0gKiBvdGhlciBzaWduYWxzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgY2hlY2twb2ludGVy IGV4aXRzIG9uIFNJR1VTUjIsIGFuZCB0aGUKLSAqIFdBTCB3cml0ZXIgZXhpdHMgb24gZWl0aGVy IFNJR0lOVCBvciBTSUdURVJNLgorICogb3RoZXIgc2lnbmFscy4gSW4gcGFydGljdWxhciwgdGhl IGNoZWNrcG9pbnRlciBleGl0cyBvbiBTSUdVU1IyLCBhbmQgdGhlIFdBTAorICogd3JpdGVyIGFu ZCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdHMgb24g ZWl0aGVyCisgKiBTSUdJTlQgb3IgU0lHVEVSTS4KICAqCiAgKiBTaHV0ZG93blJlcXVlc3RQZW5k aW5nIHNob3VsZCBiZSBjaGVja2VkIGF0IGEgY29udmVuaWVudCBwbGFjZSB3aXRoaW4gdGhlCiAg KiBtYWluIGxvb3AsIG9yIGVsc2UgdGhlIG1haW4gbG9vcCBzaG91bGQgY2FsbCBIYW5kbGVNYWlu TG9vcEludGVycnVwdHMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJw cXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCmluZGV4IDdmNjk3YjBmMjkuLjIy NWRhODFmMmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVj ZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xp YnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCkBAIC00NDMsOSArNDQzLDkgQEAgbGli cHFyY3Zfc3RhcnRzdHJlYW1pbmcoV2FsUmVjZWl2ZXJDb25uICpjb25uLAogCQlhcHBlbmRTdHJp bmdJbmZvKCZjbWQsICJwcm90b192ZXJzaW9uICcldSciLAogCQkJCQkJIG9wdGlvbnMtPnByb3Rv LmxvZ2ljYWwucHJvdG9fdmVyc2lvbik7CiAKLQkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwu c3RyZWFtaW5nICYmCi0JCQlQUXNlcnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTQw MDAwKQotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmY21kLCAiLCBzdHJlYW1pbmcgJ29uJyIp OworCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyKQorCQkJYXBwZW5k U3RyaW5nSW5mbygmY21kLCAiLCBzdHJlYW1pbmcgJyVzJyIsCisJCQkJCQkJIG9wdGlvbnMtPnBy b3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0cik7CiAKIAkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2lj YWwudHdvcGhhc2UgJiYKIAkJCVBRc2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAx NTAwMDApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2Vm aWxlIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQppbmRleCBjNGUy ZmRlYjcxLi4yZGMyNWUzN2JiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFr ZWZpbGUKQEAgLTE1LDYgKzE1LDcgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2Vm aWxlLmdsb2JhbAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLUkkKHNyY2RpcikgJChDUFBGTEFHUykK IAogT0JKUyA9IFwKKwlhcHBseXBhcmFsbGVsd29ya2VyLm8gXAogCWRlY29kZS5vIFwKIAlsYXVu Y2hlci5vIFwKIAlsb2dpY2FsLm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwLi45N2Y0YTMwMzdjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTAsMCArMSwxNjIx IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYworICoJICAg U3VwcG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFjdCBieSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKyAqCisgKiBUaGlzIGZpbGUgY29u dGFpbnMgdGhlIGNvZGUgdG8gbGF1bmNoLCBzZXQgdXAsIGFuZCB0ZWFyZG93biBhIHBhcmFsbGVs IGFwcGx5CisgKiB3b3JrZXIgd2hpY2ggcmVjZWl2ZXMgdGhlIGNoYW5nZXMgZnJvbSB0aGUgbGVh ZGVyIHdvcmtlciBhbmQgaW52b2tlcyByb3V0aW5lcworICogdG8gYXBwbHkgdGhvc2Ugb24gdGhl IHN1YnNjcmliZXIgZGF0YWJhc2UuCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5zIHJvdXRpbmVz IHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcKKyAqIGFuZCB0 ZWFyaW5nIGRvd24gYSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyB3aGljaCBpcyByZXF1aXJlZCBz byB0aGUgbGVhZGVyCisgKiB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgY2FuIGNv bW11bmljYXRlIHdpdGggZWFjaCBvdGhlci4KKyAqCisgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29y a2VycyBhcmUgYXNzaWduZWQgKGlmIGF2YWlsYWJsZSkgYXMgc29vbiBhcyB4YWN0J3MKKyAqIGZp cnN0IHN0cmVhbSBpcyByZWNlaXZlZCBmb3Igc3Vic2NyaXB0aW9ucyB0aGF0IGhhdmUgc2V0IHRo ZWlyICdzdHJlYW1pbmcnCisgKiBvcHRpb24gYXMgcGFyYWxsZWwuIFRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIHdpbGwgc2VuZCBjaGFuZ2VzIHRvIHRoaXMgbmV3CisgKiB3b3JrZXIgdmlhIHNoYXJl ZCBtZW1vcnkuIFdlIGtlZXAgdGhpcyB3b3JrZXIgYXNzaWduZWQgdGlsbCB0aGUgdHJhbnNhY3Rp b24KKyAqIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0IGZvciB0aGUgd29ya2VyIHRv IGZpbmlzaCBhdCBjb21taXQuIFRoaXMKKyAqIHByZXNlcnZlcyBjb21taXQgb3JkZXJpbmcgYW5k IGF2b2lkIGZpbGUgSS9PIGluIG1vc3QgY2FzZXMsIGFsdGhvdWdoIHdlCisgKiBzdGlsbCBuZWVk IHRvIHNwaWxsIHRvIGEgZmlsZSBpZiB0aGVyZSBpcyBubyB3b3JrZXIgYXZhaWxhYmxlLiBTZWUg Y29tbWVudHMKKyAqIGF0b3AgbG9naWNhbC93b3JrZXIgdG8ga25vdyBtb3JlIGFib3V0IHN0cmVh bWVkIHhhY3RzIHdob3NlIGNoYW5nZXMgYXJlCisgKiBzcGlsbGVkIHRvIGRpc2suIEl0IGlzIGlt cG9ydGFudCB0byBtYWludGFpbiBjb21taXQgb3JkZXIgdG8gYXZvaWQgZmFpbHVyZXMKKyAqIGR1 ZSB0bzogKGEpIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyAtIHNheSBpZiB3ZSBpbnNlcnQgYSBy b3cgaW4gdGhlIGZpcnN0CisgKiB0cmFuc2FjdGlvbiBhbmQgdXBkYXRlIGl0IGluIHRoZSBzZWNv bmQgdHJhbnNhY3Rpb24gb24gcHVibGlzaGVyIHRoZW4KKyAqIGFsbG93aW5nIHRoZSBzdWJzY3Jp YmVyIHRvIGFwcGx5IGJvdGggaW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZmFpbHVyZSBpbiB0aGUK KyAqIHVwZGF0ZTsgKGIpIGRlYWRsb2NrcyAtIGFsbG93aW5nIHRyYW5zYWN0aW9ucyB0aGF0IHVw ZGF0ZSB0aGUgc2FtZSBzZXQgb2YKKyAqIHJvd3MvdGFibGVzIGluIHRoZSBvcHBvc2l0ZSBvcmRl ciB0byBiZSBhcHBsaWVkIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvCisgKiBkZWFkbG9ja3MuCisg KgorICogQSB3b3JrZXIgcG9vbCBpcyB1c2VkIHRvIGF2b2lkIHJlc3RhcnRpbmcgd29ya2VycyBm b3IgZWFjaCBzdHJlYW1pbmcKKyAqIHRyYW5zYWN0aW9uLiBXZSBtYWludGFpbiBlYWNoIHdvcmtl cidzIGluZm9ybWF0aW9uIChQYXJhbGxlbEFwcGx5V29ya2VySW5mbykKKyAqIGluIHRoZSBQYXJh bGxlbEFwcGx5V29ya2VyUG9vbC4gQWZ0ZXIgc3VjY2Vzc2Z1bGx5IGxhdW5jaGluZyBhIG5ldyB3 b3JrZXIsCisgKiBpdHMgaW5mb3JtYXRpb24gaXMgYWRkZWQgdG8gdGhlIFBhcmFsbGVsQXBwbHlX b3JrZXJQb29sLiBPbmNlIHRoZSB3b3JrZXIKKyAqIGZpbmlzaGVzIGFwcGx5aW5nIHRoZSB0cmFu c2FjdGlvbiwgaXQgaXMgbWFya2VkIGFzIGF2YWlsYWJsZSBmb3IgcmUtdXNlLgorICogTm93LCBi ZWZvcmUgc3RhcnRpbmcgYSBuZXcgd29ya2VyIHRvIGFwcGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24sIHdlCisgKiBjaGVjayB0aGUgbGlzdCBmb3IgYW55IGF2YWlsYWJsZSB3b3JrZXIuIE5v dGUgdGhhdCB3ZSByZXRhaW4gYSBtYXhpbXVtIG9mCisgKiBoYWxmIHRoZSBtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIHdvcmtlcnMgaW4gdGhlIHBvb2wgYW5kCisg KiBhZnRlciB0aGF0LCB3ZSBzaW1wbHkgZXhpdCB0aGUgd29ya2VyIGFmdGVyIGFwcGx5aW5nIHRo ZSB0cmFuc2FjdGlvbi4KKyAqCisgKiBYWFggVGhpcyB3b3JrZXIgcG9vbCB0aHJlc2hvbGQgaXMg YXJiaXRyYXJ5IGFuZCB3ZSBjYW4gcHJvdmlkZSBhIEdVQworICogdmFyaWFibGUgZm9yIHRoaXMg aW4gdGhlIGZ1dHVyZSBpZiByZXF1aXJlZC4KKyAqCisgKiBUaGUgbGVhZGVyIGFwcGx5IHdvcmtl ciB3aWxsIGNyZWF0ZSBhIHNlcGFyYXRlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50Cisg KiB3aGVuIGVhY2ggcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXJ0cy4gVGhlIHJlYXNvbiBmb3Ig dGhpcyBkZXNpZ24gaXMgdGhhdAorICogd2UgY2Fubm90IHByZWRpY3QgaG93IG1hbnkgd29ya2Vy cyB3aWxsIGJlIG5lZWRlZC4gSXQgbWF5IGJlIHBvc3NpYmxlIHRvCisgKiBhbGxvY2F0ZSBlbm91 Z2ggc2hhcmVkIG1lbW9yeSBpbiBvbmUgc2VnbWVudCBiYXNlZCBvbiB0aGUgbWF4aW11bSBudW1i ZXIgb2YKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKG1heF9wYXJhbGxlbF9hcHBseV93b3Jr ZXJzX3Blcl9zdWJzY3JpcHRpb24pLCBidXQKKyAqIHRoaXMgd291bGQgd2FzdGUgbWVtb3J5IGlm IG5vIHByb2Nlc3MgaXMgYWN0dWFsbHkgc3RhcnRlZC4KKyAqCisgKiBUaGUgZHluYW1pYyBzaGFy ZWQgbWVtb3J5IHNlZ21lbnQgY29udGFpbnM6IChhKSBhIHNobV9tcSB0aGF0IGlzIHVzZWQgdG8K KyAqIHNlbmQgY2hhbmdlcyBpbiB0aGUgdHJhbnNhY3Rpb24gZnJvbSBsZWFkZXIgYXBwbHkgd29y a2VyIHRvIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXI7IChiKSBhbm90aGVyIHNobV9tcSB0aGF0 IGlzIHVzZWQgdG8gc2VuZCBlcnJvcnMgKGFuZCBvdGhlciBtZXNzYWdlcworICogcmVwb3J0ZWQg dmlhIGVsb2cvZXJlcG9ydCkgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvIGxlYWRl ciBhcHBseQorICogd29ya2VyOyAoYykgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGJlIHNoYXJl ZCBhbW9uZyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKiBhbmQgdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgKGkuZS4gbWVtYmVycyBvZiBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKS4KKyAqCisg KiBMb2NraW5nIENvbnNpZGVyYXRpb25zCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBT aW5jZSB0aGUgZGF0YWJhc2Ugc3RydWN0dXJlIChzY2hlbWEgb2Ygc3Vic2NyaXB0aW9uIHRhYmxl cywgY29uc3RyYWludHMsCisgKiBldGMuKSBvZiB0aGUgcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVy IGNvdWxkIGJlIGRpZmZlcmVudCwgYXBwbHlpbmcKKyAqIHRyYW5zYWN0aW9ucyBpbiBwYXJhbGxl bCBtb2RlIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUgY2FuIGNhdXNlIHNvbWUKKyAqIGRlYWRsb2Nr cyB0aGF0IGRvIG5vdCBvY2N1ciBvbiB0aGUgcHVibGlzaGVyIHNpZGUuIFRoaXMgY2FuIGhhcHBl biBldmVuCisgKiB3aXRob3V0IHBhcmFsbGVsIG1vZGUgd2hlbiB0aGVyZSBhcmUgY29uY3VycmVu dCBvcGVyYXRpb25zIG9uIHRoZQorICogc3Vic2NyaWJlci4gSW4gb3JkZXIgdG8gZGV0ZWN0IHRo ZSBkZWFkbG9ja3MgYW1vbmcgbGVhZGVyIGFuZCBwYXJhbGxlbCBhcHBseQorICogd29ya2Vycywg d2UgbmVlZCB0byBlbnN1cmUgdGhhdCB3ZSB3YWl0IHVzaW5nIGxtZ3IgbG9ja3MuIEFuIGFsdGVy bmF0aXZlCisgKiBhcHByb2FjaCBjb3VsZCBiZSB0byBub3QgYWxsb3cgcGFyYWxsZWxpc20gd2hl biB0aGUgc2NoZW1hIG9mIHRhYmxlcyBpcworICogZGlmZmVyZW50IGJldHdlZW4gdGhlIHB1Ymxp c2hlciBhbmQgc3Vic2NyaWJlciBidXQgdGhhdCB3b3VsZCBiZSB0b28KKyAqIHJlc3RyaWN0aXZl IGFuZCB3b3VsZCByZXF1aXJlIHRoZSBwdWJsaXNoZXIgdG8gc2VuZCBtdWNoIG1vcmUgaW5mb3Jt YXRpb24KKyAqIHRoYW4gaXQgaXMgY3VycmVudGx5IHNlbmRpbmcuCisgKgorICogQ29uc2lkZXIg YSBjYXNlIHdoZXJlIHRoZSBzdWJzY3JpYmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgYSB1bmlxdWUg a2V5IG9uIHRoZQorICogcHVibGlzaGVyIGFuZCBoYXMgYSB1bmlxdWUga2V5IG9uIHRoZSBzdWJz Y3JpYmVyLgorICoKKyAqIDEpIERlYWRsb2NrIGJldHdlZW4gdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIgYW5kIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisgKgorICogVGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciAoUEEpIGlzIGV4ZWN1dGluZyBUWC0xIGFuZCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl cgorICogKExBKSBpcyBleGVjdXRpbmcgVFgtMiBjb25jdXJyZW50bHkgb24gdGhlIHN1YnNjcmli ZXIuIE5vdywgTEEgaXMgd2FpdGluZworICogZm9yIFBBIGJlY2F1c2Ugb2YgdGhlIHVuaXF1ZSBr ZXkgb2YgdGhlIHN1YnNjcmliZWQgdGFibGUgd2hpbGUgUEEgaXMgd2FpdGluZworICogZm9yIExB IHRvIHNlbmQgdGhlIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMgb3IgdHJhbnNhY3Rpb24gZmluaXNo IGNvbW1hbmQKKyAqIG1lc3NhZ2UuCisgKgorICogSW4gb3JkZXIgZm9yIGxtZ3IgdG8gZGV0ZWN0 IHRoaXMsIHdlIGhhdmUgTEEgYWNxdWlyZSBhIHNlc3Npb24gbG9jayBvbiB0aGUKKyAqIHJlbW90 ZSB0cmFuc2FjdGlvbiAoYnkgcGFfbG9ja19zdHJlYW0oKSkgYW5kIGhhdmUgUEEgd2FpdCBvbiB0 aGUgbG9jayBiZWZvcmUKKyAqIHRyeWluZyB0byByZWNlaXZlIHRoZSBuZXh0IHN0cmVhbSBvZiBj aGFuZ2VzLiBTcGVjaWZpY2FsbHksIExBIHdpbGwgYWNxdWlyZQorICogdGhlIGxvY2sgYmVmb3Jl IHNlbmRpbmcgdGhlIFNUUkVBTV9TVE9QIGFuZCB3aWxsIHJlbGVhc2UgaXQgaWYgYWxyZWFkeQor ICogYWNxdWlyZWQgYmVmb3JlIHNlbmRpbmcgdGhlIFNUUkVBTV9TVEFSVCwgU1RSRUFNX0FCT1JU IChmb3IgdG9wbGV2ZWwKKyAqIHRyYW5zYWN0aW9uKSwgU1RSRUFNX1BSRVBBUkUsIGFuZCBTVFJF QU1fQ09NTUlULiBUaGUgUEEgd2lsbCBhY3F1aXJlIHRoZQorICogbG9jayBhZnRlciBwcm9jZXNz aW5nIFNUUkVBTV9TVE9QIGFuZCBTVFJFQU1fQUJPUlQgKGZvciBzdWJ0cmFuc2FjdGlvbikgYW5k CisgKiB0aGVuIHJlbGVhc2UgdGhlIGxvY2sgaW1tZWRpYXRlbHkgYWZ0ZXIgYWNxdWlyaW5nIGl0 LgorICoKKyAqIFRoZSBsb2NrIGdyYXBoIGZvciB0aGUgYWJvdmUgZXhhbXBsZSB3aWxsIGxvb2sg YXMgZm9sbG93czoKKyAqIExBICh3YWl0aW5nIHRvIGFjcXVpcmUgdGhlIGxvY2sgb24gdGhlIHVu aXF1ZSBpbmRleCkgLT4gUEEgKHdhaXRpbmcgdG8KKyAqIGFjcXVpcmUgdGhlIHN0cmVhbSBsb2Nr KSAtPiBMQQorICoKKyAqIFRoaXMgd2F5LCB3aGVuIFBBIGlzIHdhaXRpbmcgZm9yIExBIGZvciB0 aGUgbmV4dCBzdHJlYW0gb2YgY2hhbmdlcywgd2UgY2FuCisgKiBoYXZlIGEgd2FpdC1lZGdlIGZy b20gUEEgdG8gTEEgaW4gbG1nciwgd2hpY2ggd2lsbCBtYWtlIHVzIGRldGVjdCB0aGUKKyAqIGRl YWRsb2NrIGJldHdlZW4gTEEgYW5kIFBBLgorICoKKyAqIDIpIERlYWRsb2NrIGJldHdlZW4gdGhl IGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMKKyAqCisgKiBU aGlzIHNjZW5hcmlvIGlzIHNpbWlsYXIgdG8gdGhlIGZpcnN0IGNhc2UgYnV0IFRYLTEgYW5kIFRY LTIgYXJlIGV4ZWN1dGVkIGJ5CisgKiB0d28gcGFyYWxsZWwgYXBwbHkgd29ya2VycyAoUEEtMSBh bmQgUEEtMiByZXNwZWN0aXZlbHkpLiBJbiB0aGlzIHNjZW5hcmlvLAorICogUEEtMiBpcyB3YWl0 aW5nIGZvciBQQS0xIHRvIGNvbXBsZXRlIGl0cyB0cmFuc2FjdGlvbiB3aGlsZSBQQS0xIGlzIHdh aXRpbmcKKyAqIGZvciBzdWJzZXF1ZW50IGlucHV0IGZyb20gTEEuIEFsc28sIExBIGlzIHdhaXRp bmcgZm9yIFBBLTIgdG8gY29tcGxldGUgaXRzCisgKiB0cmFuc2FjdGlvbiBpbiBvcmRlciB0byBw cmVzZXJ2ZSB0aGUgY29tbWl0IG9yZGVyLiBUaGVyZSBpcyBhIGRlYWRsb2NrIGFtb25nCisgKiB0 aGUgdGhyZWUgcHJvY2Vzc2VzLgorICoKKyAqIEluIG9yZGVyIGZvciBsbWdyIHRvIGRldGVjdCB0 aGlzLCB3ZSBoYXZlIFBBIGFjcXVpcmUgYSBzZXNzaW9uIGxvY2sgKHRoaXMgaXMKKyAqIGEgZGlm ZmVyZW50IGxvY2sgdGhhbiByZWZlcnJlZCBpbiBwcmV2aW91cyBjYXNlLCBzZWUKKyAqIHBhX2xv Y2tfdHJhbnNhY3Rpb24oKSkgb24gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQgYW5kIGhh dmUgTEEgd2FpdCBvbgorICogdGhlIGxvY2sgYmVmb3JlIHByb2NlZWRpbmcgaW4gdGhlIHRyYW5z YWN0aW9uIGZpbmlzaCBjb21tYW5kcy4gU3BlY2lmaWNhbGx5LAorICogUEEgd2lsbCBhY3F1aXJl IHRoaXMgbG9jayBpbiBTaGFyZSBtb2RlIGJlZm9yZSBleGVjdXRpbmcgdGhlIGZpcnN0IG1lc3Nh Z2UKKyAqIG9mIHRoZSB0cmFuc2FjdGlvbiBhbmQgcmVsZWFzZSBpdCBhdCB0aGUgeGFjdCBlbmQu IExBIHdpbGwgYWNxdWlyZSB0aGlzIGxvY2sKKyAqIGluIEFjY2Vzc0V4Y2x1c2l2ZSBtb2RlIGF0 IHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyAoU1RSRUFNX0NPTU1JVCBhbmQKKyAqIFNUUkVB TV9QUkVQQVJFKSBhbmQgcmVsZWFzZSBpdCBpbW1lZGlhdGVseS4KKyAqCisgKiBUaGUgbG9jayBn cmFwaCBmb3IgdGhlIGFib3ZlIGV4YW1wbGUgd2lsbCBsb29rIGFzIGZvbGxvd3M6CisgKiBMQSAo d2FpdGluZyB0byBhY3F1aXJlIHRoZSB0cmFuc2FjdGlvbiBsb2NrKSAtPiBQQS0yICh3YWl0aW5n IHRvIGFjcXVpcmUgdGhlCisgKiBsb2NrIGR1ZSB0byB1bmlxdWUgaW5kZXggY29uc3RyYWludCkg LT4gUEEtMSAod2FpdGluZyB0byBhY3F1aXJlIHRoZSBzdHJlYW0KKyAqIGxvY2spIC0+IExBCisg KgorICogVGhpcyB3YXkgd2hlbiBMQSBpcyB3YWl0aW5nIHRvIGZpbmlzaCB0aGUgdHJhbnNhY3Rp b24gZW5kIGNvbW1hbmQgdG8gcHJlc2VydmUKKyAqIHRoZSBjb21taXQgb3JkZXIsIHdlIHdpbGwg YmUgYWJsZSB0byBkZXRlY3QgZGVhZGxvY2ssIGlmIGFueS4KKyAqCisgKiBPbmUgbWlnaHQgdGhp bmsgd2UgY2FuIHVzZSBYYWN0TG9ja1RhYmxlV2FpdCgpLCBidXQgWGFjdExvY2tUYWJsZVdhaXQo KQorICogY29uc2lkZXJzIFBSRVBBUkVEIFRSQU5TQUNUSU9OIGFzIHN0aWxsIGluIHByb2dyZXNz IHdoaWNoIG1lYW5zIHRoZSBsb2NrCisgKiB3b24ndCBiZSByZWxlYXNlZCBldmVuIGFmdGVyIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzIHByZXBhcmVkIHRoZQorICogdHJhbnNhY3Rpb24u CisgKgorICogMykgRGVhZGxvY2sgd2hlbiB0aGUgc2htX21xIGJ1ZmZlciBpcyBmdWxsCisgKgor ICogSW4gdGhlIHByZXZpb3VzIHNjZW5hcmlvIChpZS4gUEEtMSBhbmQgUEEtMiBhcmUgZXhlY3V0 aW5nIHRyYW5zYWN0aW9ucworICogY29uY3VycmVudGx5KSwgaWYgdGhlIHNobV9tcSBidWZmZXIg YmV0d2VlbiBMQSBhbmQgUEEtMiBpcyBmdWxsLCBMQSBoYXMgdG8KKyAqIHdhaXQgdG8gc2VuZCBt ZXNzYWdlcywgYW5kIHRoaXMgd2FpdCBkb2Vzbid0IGFwcGVhciBpbiBsbWdyLgorICoKKyAqIFRv IGF2b2lkIHRoaXMgd2FpdCwgd2UgdXNlIGEgbm9uLWJsb2NraW5nIHdyaXRlIGFuZCB3YWl0IHdp dGggYSB0aW1lb3V0LiBJZgorICogdGhlIHRpbWVvdXQgaXMgZXhjZWVkZWQsIHRoZSBMQSB3aWxs IHNlcmlhbGl6ZSBhbGwgdGhlIHBlbmRpbmcgbWVzc2FnZXMgdG8KKyAqIGEgZmlsZSBhbmQgaW5k aWNhdGUgUEEtMiB0aGF0IGl0IG5lZWRzIHRvIHJlYWQgdGhhdCBmaWxlIGZvciB0aGUgcmVtYWlu aW5nCisgKiBtZXNzYWdlcy4gVGhlbiBMQSB3aWxsIHN0YXJ0IHdhaXRpbmcgZm9yIGNvbW1pdCBh cyBpbiB0aGUgcHJldmlvdXMgY2FzZQorICogd2hpY2ggd2lsbCBkZXRlY3QgZGVhZGxvY2sgaWYg YW55LiBTZWUgcGFfc2VuZF9kYXRhKCkgYW5kCisgKiBlbnVtIFRyYW5zQXBwbHlBY3Rpb24uCisg KgorICogNCkgTG9jayB0eXBlcworICoKKyAqIEJvdGggdGhlIHN0cmVhbSBsb2NrIGFuZCB0aGUg dHJhbnNhY3Rpb24gbG9jayBtZW50aW9uZWQgYWJvdmUgYXJlCisgKiBzZXNzaW9uLWxldmVsIGxv Y2tzIGJlY2F1c2UgYm90aCBsb2NrcyBjb3VsZCBiZSBhY3F1aXJlZCBvdXRzaWRlIHRoZQorICog dHJhbnNhY3Rpb24sIGFuZCB0aGUgc3RyZWFtIGxvY2sgaW4gdGhlIGxlYWRlciBuZWVkcyB0byBw ZXJzaXN0IGFjcm9zcworICogdHJhbnNhY3Rpb24gYm91bmRhcmllcyBpLmUuIHVudGlsIHRoZSBl bmQgb2YgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIK KyNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1 bmNoZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVk ZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2xt Z3IuaCIKKyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwu aCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hl LmgiCisKKyNkZWZpbmUgUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMgMHg3ODdjYTA2NworCisv KgorICogRFNNIGtleXMgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gIFVubGlrZSBvdGhlciBw YXJhbGxlbCBleGVjdXRpb24gY29kZSwKKyAqIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gd29ycnkg YWJvdXQgRFNNIGtleXMgY29uZmxpY3Rpbmcgd2l0aCBwbGFuX25vZGVfaWQgd2UKKyAqIGNhbiB1 c2Ugc21hbGwgaW50ZWdlcnMuCisgKi8KKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJF RAkJMQorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfTVEJCQkyCisjZGVmaW5lIFBBUkFMTEVM X0FQUExZX0tFWV9FUlJPUl9RVUVVRQkzCisKKy8qIFF1ZXVlIHNpemUgb2YgRFNNLCAxNiBNQiBm b3Igbm93LiAqLworI2RlZmluZSBEU01fUVVFVUVfU0laRQkoMTYgKiAxMDI0ICogMTAyNCkKKwor LyoKKyAqIEVycm9yIHF1ZXVlIHNpemUgb2YgRFNNLiBJdCBpcyBkZXNpcmFibGUgdG8gbWFrZSBp dCBsYXJnZSBlbm91Z2ggdGhhdCBhCisgKiB0eXBpY2FsIEVycm9yUmVzcG9uc2UgY2FuIGJlIHNl bnQgd2l0aG91dCBibG9ja2luZy4gIFRoYXQgd2F5LCBhIHdvcmtlciB0aGF0CisgKiBlcnJvcnMg b3V0IGNhbiB3cml0ZSB0aGUgd2hvbGUgbWVzc2FnZSBpbnRvIHRoZSBxdWV1ZSBhbmQgdGVybWlu YXRlIHdpdGhvdXQKKyAqIHdhaXRpbmcgZm9yIHRoZSB1c2VyIGJhY2tlbmQuCisgKi8KKyNkZWZp bmUgRFNNX0VSUk9SX1FVRVVFX1NJWkUJCQkoMTYgKiAxMDI0KQorCisvKgorICogVGhlcmUgYXJl IHRocmVlIGZpZWxkcyBpbiBlYWNoIG1lc3NhZ2UgcmVjZWl2ZWQgYnkgdGhlIHBhcmFsbGVsIGFw cGx5CisgKiB3b3JrZXI6IHN0YXJ0X2xzbiwgZW5kX2xzbiBhbmQgc2VuZF90aW1lLiBCZWNhdXNl IHdlIGhhdmUgdXBkYXRlZCB0aGVzZQorICogc3RhdGlzdGljcyBpbiB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlciwgd2UgY2FuIGlnbm9yZSB0aGVzZSBmaWVsZHMgaW4gdGhlCisgKiBwYXJhbGxlbCBh cHBseSB3b3JrZXIgKHNlZSBmdW5jdGlvbiBMb2dpY2FsUmVwQXBwbHlMb29wKS4KKyAqLworI2Rl ZmluZSBTSVpFX1NUQVRTX01FU1NBR0UgKDIgKiBzaXplb2YoWExvZ1JlY1B0cikgKyBzaXplb2Yo VGltZXN0YW1wVHopKQorCisvKgorICogVGhlIHR5cGUgb2Ygc2Vzc2lvbi1sZXZlbCBsb2NrIG9u IGEgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9u IHN1YnNjcmliZXIuCisgKi8KKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0JMAor I2RlZmluZSBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QJMQorCisvKgorICogSGFzaCB0YWJsZSBl bnRyeSB0byBtYXAgeGlkIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhdGUuCisgKi8K K3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQoreworCVRyYW5zYWN0aW9u SWQgeGlkOwkJCS8qIEhhc2gga2V5IC0tIG11c3QgYmUgZmlyc3QgKi8KKwlQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm87Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeTsKKworLyoKKyAq IEEgaGFzaCB0YWJsZSB1c2VkIHRvIGNhY2hlIHRoZSBzdGF0ZSBvZiBzdHJlYW1pbmcgdHJhbnNh Y3Rpb25zIGJlaW5nIGFwcGxpZWQKKyAqIGJ5IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgor ICovCitzdGF0aWMgSFRBQiAqUGFyYWxsZWxBcHBseVR4bkhhc2ggPSBOVUxMOworCisvKgorKiBB IGxpc3QgKHBvb2wpIG9mIGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBUaGUgaW5mb3Jt YXRpb24gZm9yCisqIHRoZSBuZXcgd29ya2VyIGlzIGFkZGVkIHRvIHRoZSBsaXN0IGFmdGVyIHN1 Y2Nlc3NmdWxseSBsYXVuY2hpbmcgaXQuIFRoZQorKiBsaXN0IGVudHJ5IGlzIHJlbW92ZWQgaWYg dGhlcmUgYXJlIGFscmVhZHkgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHdvcmtlcgorKiBwb29sIGVp dGhlciBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbiBvciB3aGlsZSB0cnlpbmcgdG8gZmlu ZCBhIGZyZWUKKyogd29ya2VyIGZvciBhcHBseWluZyB0aGUgdHJhbnNhY3Rpb24uIEZvciBtb3Jl IGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIKKyogcG9vbCwgc2VlIGNvbW1lbnRzIGF0b3Ag dGhpcyBmaWxlLgorICovCitzdGF0aWMgTGlzdCAqUGFyYWxsZWxBcHBseVdvcmtlclBvb2wgPSBO SUw7CisKKy8qCisgKiBJbmZvcm1hdGlvbiBzaGFyZWQgYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29y a2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJT aGFyZWQgKk15UGFyYWxsZWxTaGFyZWQgPSBOVUxMOworCisvKgorICogSXMgdGhlcmUgYSBtZXNz YWdlIHNlbnQgYnkgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdGhhdCB0aGUgbGVhZGVyIGFwcGx5 CisgKiB3b3JrZXIgbmVlZHMgdG8gcmVjZWl2ZT8KKyAqLwordm9sYXRpbGUgc2lnX2F0b21pY190 IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCisvKgorICogQ2FjaGUgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgYXBwbHlpbmcg dGhlCisgKiBjdXJyZW50IHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gSXQgaXMgdXNlZCB0byBzYXZl IHRoZSBjb3N0IG9mIHNlYXJjaGluZyB0aGUKKyAqIGhhc2ggdGFibGUgd2hlbiBhcHBseWluZyB0 aGUgY2hhbmdlcyBiZXR3ZWVuIFNUUkVBTV9TVEFSVCBhbmQgU1RSRUFNX1NUT1AuCisgKi8KK3N0 YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7 CisKKy8qIEEgbGlzdCB0byBtYWludGFpbiBzdWJ0cmFuc2FjdGlvbnMsIGlmIGFueS4gKi8KK3N0 YXRpYyBMaXN0CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKKworc3RhdGljIHZvaWQgcGFfZnJlZV93 b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOworc3RhdGljIFBhcmFs bGVsVHJhbnNTdGF0ZSBwYV9nZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVk ICp3c2hhcmVkKTsKK3N0YXRpYyBQYXJ0aWFsRmlsZVNldFN0YXRlIHBhX2dldF9maWxlc2V0X3N0 YXRlKHZvaWQpOworCisvKgorICogUmV0dXJucyB0cnVlIGlmIGl0IGlzIE9LIHRvIHN0YXJ0IGEg cGFyYWxsZWwgYXBwbHkgd29ya2VyLCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29s CitwYV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJQXNzZXJ0KFRyYW5zYWN0aW9u SWRJc1ZhbGlkKHhpZCkpOworCisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJhbGxlbCBh cHBseSB3b3JrZXIgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBub3QKKwkgKiB1c2luZyBwYXJhbGxl bCBzdHJlYW1pbmcgbW9kZSwgb3IgaWYgdGhlIHB1Ymxpc2hlciBkb2VzIG5vdCBzdXBwb3J0CisJ ICogcGFyYWxsZWwgYXBwbHkuCisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFs bGVsX2FwcGx5KQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBPbmx5IGxlYWRlciBhcHBseSB3b3Jr ZXJzIGNhbiBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworCWlmICghYW1fbGVhZGVy X2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0 IGEgbmV3IHBhcmFsbGVsIHdvcmtlciBpZiB1c2VyIGhhcyBzZXQgc2tpcGxzbiBhcyBpdCdzCisJ ICogcG9zc2libGUgdGhhdCB0aGV5IHdhbnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uLiBGb3Igc3RyZWFtaW5nCisJICogdHJhbnNhY3Rpb25zLCB3ZSBuZWVkIHRvIHNlcmlhbGl6 ZSB0aGUgdHJhbnNhY3Rpb24gdG8gYSBmaWxlIHNvIHRoYXQgd2UKKwkgKiBjYW4gZ2V0IHRoZSBs YXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ugd2hldGhlciB0byBza2lwIGJlZm9y ZQorCSAqIHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFuZ2UuCisJICovCisJaWYgKCFYTG9nUmVj UHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKKwkJcmV0dXJuIGZhbHNlOwor CisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBs aWVkIHVzaW5nIGEgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUg d2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhCisJICogcmVsYXRpb24gdGhhdCBpcyBu b3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3Jf cmVsKSBhcyB3ZSB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdAorCSAqIHRpbWUu IFNvLCB3ZSBkb24ndCBzdGFydCB0aGUgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbiB0aGlz IGNhc2UuCisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIGZhbHNl OworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTZXQgdXAgYSBkeW5hbWljIHNoYXJlZCBt ZW1vcnkgc2VnbWVudC4KKyAqCisgKiBXZSBzZXQgdXAgYSBjb250cm9sIHJlZ2lvbiB0aGF0IGNv bnRhaW5zIGEgZml4ZWQtc2l6ZSB3b3JrZXIgaW5mbworICogKFBhcmFsbGVsQXBwbHlXb3JrZXJT aGFyZWQpLCBhIG1lc3NhZ2UgcXVldWUsIGFuZCBhbiBlcnJvciBxdWV1ZS4KKyAqCisgKiBSZXR1 cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGJvb2wK K3BhX3NldHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJc2htX3Rv Y19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2ht X3RvYyAgICAqdG9jOworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlzaG1f bXEJICAgKm1xOworCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsKKwlTaXplCQll cnJvcl9xdWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7CisKKwkvKgorCSAqIEVzdGlt YXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2UgdGhl IFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1zaXpl ZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVseS4K KwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgdGhl IGhlYWRlciwgYW5kIHR3byBvdGhlcgorCSAqIGtleXMgdG8gdHJhY2sgdGhlIGxvY2F0aW9ucyBv ZiB0aGUgbWVzc2FnZSBxdWV1ZSBhbmQgdGhlIGVycm9yIG1lc3NhZ2UKKwkgKiBxdWV1ZS4KKwkg Ki8KKwlzaG1fdG9jX2luaXRpYWxpemVfZXN0aW1hdG9yKCZlKTsKKwlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZlLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCXNobV90b2Nf ZXN0aW1hdGVfY2h1bmsoJmUsIHF1ZXVlX3NpemUpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmso JmUsIGVycm9yX3F1ZXVlX3NpemUpOworCisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZlLCAzKTsK KwlzZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhlIHNoYXJl ZCBtZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMuICovCisJ c2VnID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJaWYgKCFzZWcpCisJ CXJldHVybiBmYWxzZTsKKworCXRvYyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxfQVBQTFlf U0hNX01BR0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6ZSk7CisK KwkvKiBTZXQgdXAgdGhlIGhlYWRlciByZWdpb24uICovCisJc2hhcmVkID0gc2htX3RvY19hbGxv Y2F0ZSh0b2MsIHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSk7CisJU3BpbkxvY2tJ bml0KCZzaGFyZWQtPm11dGV4KTsKKworCXNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RS QU5TX1VOS05PV047CisJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5kaW5nX3N0cmVh bV9jb3VudCksIDApOworCXNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxpZFhMb2dSZWNQ dHI7CisJc2hhcmVkLT5maWxlc2V0X3N0YXRlID0gRlNfRU1QVFk7CisKKwlzaG1fdG9jX2luc2Vy dCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIHNoYXJlZCk7CisKKwkvKiBTZXQgdXAg bWVzc2FnZSBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2ht X3RvY19hbGxvY2F0ZSh0b2MsIHF1ZXVlX3NpemUpLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2lu c2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9NUSwgbXEpOworCXNobV9tcV9zZXRfc2VuZGVy KG1xLCBNeVByb2MpOworCisJLyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+bXFfaGFu ZGxlID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFNldCB1cCBlcnJvciBx dWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19hbGxv Y2F0ZSh0b2MsIGVycm9yX3F1ZXVlX3NpemUpLAorCQkJCQkgICBlcnJvcl9xdWV1ZV9zaXplKTsK KwlzaG1fdG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRSwgbXEp OworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1 ZXVlLiAqLworCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcs IE5VTEwpOworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdpbmZvLT5kc21f c2VnID0gc2VnOworCXdpbmZvLT5zaGFyZWQgPSBzaGFyZWQ7CisKKwlyZXR1cm4gdHJ1ZTsKK30K KworLyoKKyAqIFRyeSB0byBnZXQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0aGUgcG9v bC4gSWYgbm9uZSBpcyBhdmFpbGFibGUgdGhlbgorICogc3RhcnQgYSBuZXcgb25lLgorICovCitz dGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtl cih2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hlZDsK KwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJTGlzdAkgICAqYWN0aXZlX3dvcmtl cnMgPSBsaXN0X2NvcHkoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpOworCUxpc3RDZWxsICAgKmxj OworCisJLyogVHJ5IHRvIGdldCBhbiBhdmFpbGFibGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZy b20gdGhlIHdvcmtlciBwb29sLiAqLworCWZvcmVhY2gobGMsIGFjdGl2ZV93b3JrZXJzKQorCXsK KwkJd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQkv KgorCQkgKiBXZSBmaXJzdCB0cnkgdG8gZnJlZSB0aGUgd29ya2VyIHRvIGltcHJvdmUgb3VyIGNo YW5jZXMgb2YgZmluZGluZworCQkgKiBvbmUgdGhhdCBpcyBub3QgaW4gdXNlLiBOb3JtYWxseSwg d2UgZnJlZSB0aGUgd29ya2VyIGFmdGVyIGVuc3VyaW5nCisJCSAqIHRoYXQgdGhlIHRyYW5zYWN0 aW9uIGlzIGNvbW1pdHRlZCBieSB0aGUgcGFyYWxsZWwgd29ya2VyIGJ1dCBmb3IKKwkJICogcm9s bGJhY2tzLCB3ZSBkb24ndCB3YWl0IGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gZmluaXNoIHNvIGNh bid0CisJCSAqIGZyZWUgdGhlIHdvcmtlciBpbmZvcm1hdGlvbiBpbW1lZGlhdGVseS4KKwkJICov CisJCWlmIChwYV9mcmVlX3dvcmtlcih3aW5mbykpCisJCQljb250aW51ZTsKKworCQlpZiAoIXdp bmZvLT5pbl91c2UpCisJCQlyZXR1cm4gd2luZm87CisJfQorCisJLyoKKwkgKiBTdGFydCBhIG5l dyBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICoKKwkgKiBUaGUgd29ya2VyIGluZm8gY2FuIGJl IHVzZWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgd29ya2VyIHByb2Nlc3MsIHNvCisJICogY3Jl YXRlIGl0IGluIGEgcGVybWFuZW50IGNvbnRleHQuCisJICovCisJb2xkY29udGV4dCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJd2luZm8gPSAoUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKikgcGFsbG9jMChzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pKTsK KworCS8qIFNldHVwIHNoYXJlZCBtZW1vcnkuICovCisJaWYgKCFwYV9zZXR1cF9kc20od2luZm8p KQorCXsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlwZnJlZSh3aW5m byk7CisJCXJldHVybiBOVUxMOworCX0KKworCWxhdW5jaGVkID0gbG9naWNhbHJlcF93b3JrZXJf bGF1bmNoKE15TG9naWNhbFJlcFdvcmtlci0+ZGJpZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlv bi0+b2lkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJCQkJCU15TG9n aWNhbFJlcFdvcmtlci0+dXNlcmlkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJ ZHNtX3NlZ21lbnRfaGFuZGxlKHdpbmZvLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJ eworCQlQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCA9IGxhcHBlbmQoUGFyYWxsZWxBcHBseVdvcmtl clBvb2wsIHdpbmZvKTsKKwl9CisJZWxzZQorCXsKKwkJcGFfZnJlZV93b3JrZXJfaW5mbyh3aW5m byk7CisJCXdpbmZvID0gTlVMTDsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CisKKwlyZXR1cm4gd2luZm87Cit9CisKKy8qCisgKiBBbGxvY2F0ZSBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlciB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCB4aWQuCisg KgorICogV2UgZmlyc3QgdHJ5IHRvIGdldCBhbiBhdmFpbGFibGUgd29ya2VyIGZyb20gdGhlIHBv b2wsIGlmIGFueSBhbmQgdGhlbiB0cnkKKyAqIHRvIGxhdW5jaCBhIG5ldyB3b3JrZXIuIE9uIHN1 Y2Nlc3NmdWwgYWxsb2NhdGlvbiwgcmVtZW1iZXIgdGhlIHdvcmtlcgorICogaW5mb3JtYXRpb24g aW4gdGhlIGhhc2ggdGFibGUgc28gdGhhdCB3ZSBjYW4gZ2V0IGl0IGxhdGVyIGZvciBwcm9jZXNz aW5nIHRoZQorICogc3RyZWFtaW5nIGNoYW5nZXMuCisgKi8KK3ZvaWQKK3BhX2FsbG9jYXRlX3dv cmtlcihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8gPSBOVUxMOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50 cnk7CisKKwlpZiAoIXBhX2Nhbl9zdGFydCh4aWQpKQorCQlyZXR1cm47CisKKwkvKiBGaXJzdCB0 aW1lIHRocm91Z2gsIGluaXRpYWxpemUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlIGhhc2h0 YWJsZS4gKi8KKwlpZiAoIVBhcmFsbGVsQXBwbHlUeG5IYXNoKQorCXsKKwkJSEFTSENUTAkJY3Rs OworCisJCU1lbVNldCgmY3RsLCAwLCBzaXplb2YoY3RsKSk7CisJCWN0bC5rZXlzaXplID0gc2l6 ZW9mKFRyYW5zYWN0aW9uSWQpOworCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFBhcmFsbGVsQXBw bHlXb3JrZXJFbnRyeSk7CisJCWN0bC5oY3h0ID0gQXBwbHlDb250ZXh0OworCisJCVBhcmFsbGVs QXBwbHlUeG5IYXNoID0gaGFzaF9jcmVhdGUoImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VycyBoYXNoIiwKKwkJCQkJCQkJCQkJICAgMTYsICZjdGwsCisJCQkJCQkJCQkJ CSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0KKworCXdpbmZv ID0gcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtlcigpOworCWlmICghd2luZm8pCisJCXJldHVybjsK KworCS8qIENyZWF0ZSBhbiBlbnRyeSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8K KwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX0VO VEVSLCAmZm91bmQpOworCWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29y cnVwdGVkIik7CisKKwkvKiBVcGRhdGUgdGhlIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIGluIHNo YXJlZCBtZW1vcnkuICovCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7 CisJd2luZm8tPnNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047CisJ d2luZm8tPnNoYXJlZC0+eGlkID0geGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJl ZC0+bXV0ZXgpOworCisJd2luZm8tPmluX3VzZSA9IHRydWU7CisJd2luZm8tPnNlcmlhbGl6ZV9j aGFuZ2VzID0gZmFsc2U7CisJZW50cnktPndpbmZvID0gd2luZm87CisJZW50cnktPnhpZCA9IHhp ZDsKK30KKworLyoKKyAqIEZpbmQgdGhlIGFzc2lnbmVkIHdvcmtlciBmb3IgdGhlIGdpdmVuIHRy YW5zYWN0aW9uLCBpZiBhbnkuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoKK3BhX2Zp bmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOworCVBhcmFsbGVs QXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhp ZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFzaCkKKwkJcmV0 dXJuIE5VTEw7CisKKwkvKiBSZXR1cm4gdGhlIGNhY2hlZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIg aWYgdmFsaWQuICovCisJaWYgKHN0cmVhbV9hcHBseV93b3JrZXIpCisJCXJldHVybiBzdHJlYW1f YXBwbHlfd29ya2VyOworCisJLyogRmluZCBhbiBlbnRyeSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFu c2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAm eGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJLyogVGhlIHdvcmtl ciBtdXN0IG5vdCBoYXZlIGV4aXRlZC4gICovCisJCUFzc2VydChlbnRyeS0+d2luZm8tPmluX3Vz ZSk7CisJCXJldHVybiBlbnRyeS0+d2luZm87CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8q CisgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBmb3IgcmV1c2UuCisgKgorICogVGhpcyBy ZW1vdmVzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJs ZSBzbyB0aGF0IGl0CisgKiBjYW4ndCBiZSB1c2VkLiBJZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtl cnMgaW4gdGhlIHBvb2wsIGl0IHN0b3BzIHRoZSB3b3JrZXIKKyAqIGFuZCBmcmVlcyB0aGUgY29y cmVzcG9uZGluZyBpbmZvLiBPdGhlcndpc2UgaXQganVzdCBtYXJrcyB0aGUgd29ya2VyIGFzCisg KiBhdmFpbGFibGUgZm9yIHJldXNlLgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0 IHRoZSB3b3JrZXIgcG9vbCwgc2VlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlLgorICoKKyAqIFJl dHVybnMgdHJ1ZSBpZiB0aGUgd29ya2VyIGlzIHN0b3BwZWQsIGZhbHNlIG90aGVyd2lzZS4KKyAq LworYm9vbAorcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQor eworCUFzc2VydCghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpOworCisJLyogV29ya2VyIGlz IGFscmVhZHkgYXZhaWxhYmxlIGZvciByZXVzZS4gKi8KKwlpZiAoIXdpbmZvLT5pbl91c2UpCisJ CXJldHVybiBmYWxzZTsKKworCS8qCisJICogRG9uJ3QgZnJlZSB0aGUgd29ya2VyIGlmIHRoZSB0 cmFuc2FjdGlvbiBpbiB0aGUgd29ya2VyIGlzIHN0aWxsIGluCisJICogcHJvZ3Jlc3MuIFRoaXMg Y291bGQgaGFwcGVuIGFzIHdlIGRvbid0IHdhaXQgZm9yIHRoZSBhcHBseSBvZiByb2xsYmFjawor CSAqIHRvIGZpbmlzaC4KKwkgKi8KKwlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJl ZCkgIT0gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpCisJCXJldHVybiBmYWxzZTsKKworCWlmICgh aGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVR4bkhhc2gsICZ3aW5mby0+c2hhcmVkLT54aWQsIEhB U0hfUkVNT1ZFLCBOVUxMKSkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7 CisKKwkvKgorCSAqIFN0b3AgdGhlIHdvcmtlciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMg aW4gdGhlIHBvb2wuCisJICoKKwkgKiBYWFggQWRkaXRpb25hbGx5LCB3ZSBhbHNvIHN0b3AgdGhl IHdvcmtlciBpZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgorCSAqIHNlcmlhbGl6ZSBwYXJ0IG9m IHRoZSB0cmFuc2FjdGlvbiBkYXRhIGR1ZSB0byBhIHNlbmQgdGltZW91dC4gVGhpcyBpcworCSAq IGJlY2F1c2UgdGhlIG1lc3NhZ2UgY291bGQgYmUgcGFydGlhbGx5IHdyaXR0ZW4gdG8gdGhlIHF1 ZXVlIGFuZCB0aGVyZSBpcworCSAqIG5vIHdheSB0byBjbGVhbiB0aGUgcXVldWUgb3RoZXIgdGhh biByZXNlbmRpbmcgdGhlIG1lc3NhZ2UgdW50aWwgaXQKKwkgKiBzdWNjZWVkcy4gSW5zdGVhZCBv ZiB0cnlpbmcgdG8gc2VuZCB0aGUgZGF0YSB3aGljaCBhbnl3YXkgd291bGQgaGF2ZQorCSAqIGJl ZW4gc2VyaWFsaXplZCBhbmQgdGhlbiBsZXR0aW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg ZGVhbCB3aXRoIHRoZQorCSAqIHNwdXJpb3VzIG1lc3NhZ2UsIHdlIHN0b3AgdGhlIHdvcmtlci4K KwkgKi8KKwlpZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzIHx8CisJCWxpc3RfbGVuZ3RoKFBh cmFsbGVsQXBwbHlXb3JrZXJQb29sKSA+CisJCShtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uIC8gMikpCisJeworCQlpbnQJCQlzbG90X25vOworCQl1aW50MTYJCWdl bmVyYXRpb247CisKKwkJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJ CWdlbmVyYXRpb24gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9u OworCQlzbG90X25vID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsK KwkJU3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwkJbG9naWNhbHJl cF9wYV93b3JrZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCQlwYV9mcmVlX3dvcmtl cl9pbmZvKHdpbmZvKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwl3aW5mby0+aW5fdXNlID0g ZmFsc2U7CisJd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzID0gZmFsc2U7CisKKwlyZXR1cm4gZmFs c2U7Cit9CisKKy8qCisgKiBGcmVlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRp b24gYW5kIHVubGluayB0aGUgZmlsZXMgd2l0aAorICogc2VyaWFsaXplZCBjaGFuZ2VzIGlmIGFu eS4KKyAqLworc3RhdGljIHZvaWQKK3BhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvKQoreworCUFzc2VydCh3aW5mbyk7CisKKwlpZiAod2luZm8tPm1xX2hh bmRsZSkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+bXFfaGFuZGxlKTsKKworCWlmICh3aW5mby0+ ZXJyb3JfbXFfaGFuZGxlKQorCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUp OworCisJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcy4gKi8KKwlp ZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB3aW5mby0+c2hhcmVkLT54aWQpOworCisJaWYgKHdpbmZv LT5kc21fc2VnKQorCQlkc21fZGV0YWNoKHdpbmZvLT5kc21fc2VnKTsKKworCS8qIFJlbW92ZSBm cm9tIHRoZSB3b3JrZXIgcG9vbC4gKi8KKwlQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCA9IGxpc3Rf ZGVsZXRlX3B0cihQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCwgd2luZm8pOworCisJcGZyZWUod2lu Zm8pOworfQorCisvKgorICogRGV0YWNoIGZyb20gdGhlIGVycm9yX21xX2hhbmRsZSBmb3IgZWFj aCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX2RldGFjaF9hbGxfZXJyb3Jf bXEodm9pZCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBw bHlXb3JrZXJQb29sKQorCXsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gKFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJc2htX21xX2RldGFjaCh3 aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKwkJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9IE5VTEw7 CisJfQorfQorCisvKgorICogQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBwZW5kaW5nIHNwb29sZWQg bWVzc2FnZXMuCisgKi8KK3N0YXRpYyBib29sCitwYV9oYXNfc3Bvb2xlZF9tZXNzYWdlX3BlbmRp bmcoKQoreworCVBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKworCWZpbGVzZXRf c3RhdGUgPSBwYV9nZXRfZmlsZXNldF9zdGF0ZSgpOworCisJcmV0dXJuIChmaWxlc2V0X3N0YXRl ICE9IEZTX0VNUFRZKTsKK30KKworLyoKKyAqIFJlcGxheSB0aGUgc3Bvb2xlZCBtZXNzYWdlcyBv bmNlIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZAorICogc2VyaWFsaXppbmcg Y2hhbmdlcyB0byB0aGUgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3Nwb29sZWRfbWVzc2Fn ZXModm9pZCkKK3sKKwlQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisKKwlmaWxl c2V0X3N0YXRlID0gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKTsKKworCS8qCisJICogSWYgdGhlIGxl YWRlciBhcHBseSB3b3JrZXIgaXMgYnVzeSBzZXJpYWxpemluZyB0aGUgcGFydGlhbCBjaGFuZ2Vz IHRoZW4KKwkgKiBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jayBub3cgYW5kIHdhaXQgZm9yIHRoZSBs ZWFkZXIgd29ya2VyIHRvIGZpbmlzaAorCSAqIHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLiBPdGhl cndpc2UsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd29uJ3QgZ2V0CisJICogYSBjaGFuY2Ug dG8gcmVjZWl2ZSBhIFNUUkVBTV9TVE9QIChhbmQgYWNxdWlyZSB0aGUgc3RyZWFtIGxvY2spIHVu dGlsCisJICogdGhlIGxlYWRlciBoYWQgc2VyaWFsaXplZCBhbGwgY2hhbmdlcyB3aGljaCBjYW4g bGVhZCB0byB1bmRldGVjdGVkCisJICogZGVhZGxvY2suCisJICoKKwkgKiBUaGUgZmlsZXNldCBz dGF0ZSBtdXN0IGJlIEZTX1NFUklBTElaRV9ET05FIG9uY2UgdGhlIGxlYWRlciB3b3JrZXIgaGFz CisJICogZmluaXNoZWQgc2VyaWFsaXppbmcgdGhlIGNoYW5nZXMuCisJICovCisJaWYgKGZpbGVz ZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTKQorCXsKKwkJcGFfbG9ja19zdHJl YW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCQlwYV91bmxvY2tf c3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCQlmaWxl c2V0X3N0YXRlID0gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKTsKKwkJQXNzZXJ0KGZpbGVzZXRfc3Rh dGUgPT0gRlNfU0VSSUFMSVpFX0RPTkUpOworCX0KKworCS8qCisJICogV2UgY2Fubm90IHJlYWQg dGhlIGZpbGUgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxlYWRlciBoYXMgc2VyaWFsaXplZCBhbGwK KwkgKiBjaGFuZ2VzIHRvIHRoZSBmaWxlIGJlY2F1c2UgdGhlcmUgbWF5IHN0aWxsIGJlIG1lc3Nh Z2VzIGluIHRoZSBtZW1vcnkKKwkgKiBxdWV1ZS4gV2Ugd2lsbCBhcHBseSBhbGwgc3Bvb2xlZCBt ZXNzYWdlcyB0aGUgbmV4dCB0aW1lIHdlIGNhbGwgdGhpcworCSAqIGZ1bmN0aW9uIGFuZCB0aGF0 IHdpbGwgZW5zdXJlIHRoZXJlIGFyZSBubyBtZXNzYWdlcyBsZWZ0IGluIHRoZSBtZW1vcnkKKwkg KiBxdWV1ZS4KKwkgKi8KKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19TRVJJQUxJWkVfRE9ORSkK Kwl7CisJCXBhX3NldF9maWxlc2V0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIEZTX1JFQURZKTsK Kwl9CisJZWxzZSBpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19SRUFEWSkKKwl7CisJCWFwcGx5X3Nw b29sZWRfbWVzc2FnZXMoJk15UGFyYWxsZWxTaGFyZWQtPmZpbGVzZXQsCisJCQkJCQkJICAgTXlQ YXJhbGxlbFNoYXJlZC0+eGlkLAorCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyKTsKKwkJcGFf c2V0X2ZpbGVzZXRfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgRlNfRU1QVFkpOworCX0KK30KKwor LyoKKyAqIEludGVycnVwdCBoYW5kbGVyIGZvciBtYWluIGxvb3Agb2YgcGFyYWxsZWwgYXBwbHkg d29ya2VyLgorICovCitzdGF0aWMgdm9pZAorUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRz KHZvaWQpCit7CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCWlmIChTaHV0ZG93blJlcXVl c3RQZW5kaW5nKQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBs aWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFz IGZpbmlzaGVkIiwKKwkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCisJCXByb2NfZXhp dCgwKTsKKwl9CisKKwlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwl7CisJCUNvbmZpZ1JlbG9h ZFBlbmRpbmcgPSBmYWxzZTsKKwkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJfQor fQorCisvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWFpbiBsb29wLiAqLworc3RhdGljIHZvaWQK K0xvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICptcWgpCit7CisJc2htX21x X3Jlc3VsdCBzaG1xX3JlczsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKwlN ZW1vcnlDb250ZXh0IG9sZGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCisJLyoKKwkgKiBJ bml0IHRoZSBBcHBseU1lc3NhZ2VDb250ZXh0IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2gg cmVwbGljYXRpb24KKwkgKiBwcm90b2NvbCBtZXNzYWdlLgorCSAqLworCUFwcGx5TWVzc2FnZUNv bnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJ IkFwcGx5TWVzc2FnZUNvbnRleHQiLAorCQkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpF Uyk7CisKKwkvKgorCSAqIFB1c2ggYXBwbHkgZXJyb3IgY29udGV4dCBjYWxsYmFjay4gRmllbGRz IHdpbGwgYmUgZmlsbGVkIHdoaWxlIGFwcGx5aW5nCisJICogYSBjaGFuZ2UuCisJICovCisJZXJy Y2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKKwllcnJjYWxsYmFjay5w cmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZl cnJjYWxsYmFjazsKKworCWZvciAoOzspCisJeworCQl2b2lkCSAgICpkYXRhOworCQlTaXplCQls ZW47CisKKwkJUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKCk7CisKKwkJLyogRW5zdXJl IHdlIGFyZSByZWFkaW5nIHRoZSBkYXRhIGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlN ZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMg PSBzaG1fbXFfcmVjZWl2ZShtcWgsICZsZW4sICZkYXRhLCB0cnVlKTsKKworCQlpZiAoc2htcV9y ZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIHM7CisJCQlpbnQJ CQljOworCisJCQlpZiAobGVuID09IDApCisJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgbWVzc2Fn ZSBsZW5ndGgiKTsKKworCQkJcy5jdXJzb3IgPSAwOworCQkJcy5tYXhsZW4gPSAtMTsKKwkJCXMu ZGF0YSA9IChjaGFyICopIGRhdGE7CisJCQlzLmxlbiA9IGxlbjsKKworCQkJLyoKKwkJCSAqIFRo ZSBmaXJzdCBieXRlIG9mIG1lc3NhZ2VzIHNlbnQgZnJvbSBsZWFkZXIgYXBwbHkgd29ya2VyIHRv CisJCQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGNhbiBvbmx5IGJlICd3Jy4KKwkJCSAqLwor CQkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOworCQkJaWYgKGMgIT0gJ3cnKQorCQkJCWVsb2coRVJS T1IsICJ1bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wiIiwgYyk7CisKKwkJCS8qCisJCQkgKiBJZ25v cmUgc3RhdGlzdGljcyBmaWVsZHMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0aGUgbGVhZGVy CisJCQkgKiBhcHBseSB3b3JrZXIuCisJCQkgKgorCQkJICogWFhYIFdlIGNhbiBhdm9pZCBzZW5k aW5nIHRoZSBzdGF0aXN0aWNzIGZpZWxkcyBmcm9tIHRoZSBsZWFkZXIKKwkJCSAqIGFwcGx5IHdv cmtlciBidXQgZm9yIHRoYXQsIGl0IG5lZWRzIHRvIHJlYnVpbGQgdGhlIGVudGlyZQorCQkJICog bWVzc2FnZSBieSByZW1vdmluZyB0aGVzZSBmaWVsZHMgd2hpY2ggY291bGQgYmUgbW9yZSB3b3Jr IHRoYW4KKwkJCSAqIHNpbXBseSBpZ25vcmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KKwkJCSAqLworCQkJcy5jdXJzb3IgKz0gU0laRV9TVEFUU19NRVNTQUdF OworCisJCQlhcHBseV9kaXNwYXRjaCgmcyk7CisJCX0KKwkJZWxzZSBpZiAoc2htcV9yZXMgPT0g U0hNX01RX1dPVUxEX0JMT0NLKQorCQl7CisJCQkvKiBSZXBsYXkgdGhlIGNoYW5nZXMgZnJvbSB0 aGUgZmlsZSwgaWYgYW55LiAqLworCQkJaWYgKHBhX2hhc19zcG9vbGVkX21lc3NhZ2VfcGVuZGlu ZygpKQorCQkJeworCQkJCXBhX3Nwb29sZWRfbWVzc2FnZXMoKTsKKwkJCX0KKwkJCWVsc2UKKwkJ CXsKKwkJCQlpbnQJcmM7CisKKwkJCQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCisJCQkJcmMg PSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgICAxMDAwTCwKKwkJCQkJCQkgICBXQUlU X0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTik7CisKKwkJCQlpZiAocmMgJiBXTF9M QVRDSF9TRVQpCisJCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQl9CisJCX0KKwkJZWxzZQor CQl7CisJCQlBc3NlcnQoc2htcV9yZXMgPT0gU0hNX01RX0RFVEFDSEVEKTsKKworCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCBy ZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKSkpOworCQl9CisKKwkJTWVtb3J5Q29udGV4dFJlc2V0 KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsK Kwl9CisKKwkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2suICovCisJZXJyb3JfY29udGV4 dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN4dCk7Cit9CisKKy8qCisgKiBNYWtlIHN1cmUgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg dHJpZXMgdG8gcmVhZCBmcm9tIG91ciBlcnJvciBxdWV1ZSBvbmUgbW9yZQorICogdGltZS4gVGhp cyBndWFyZHMgYWdhaW5zdCB0aGUgY2FzZSB3aGVyZSB3ZSBleGl0IHVuY2xlYW5seSB3aXRob3V0 IHNlbmRpbmcKKyAqIGFuIEVycm9yUmVzcG9uc2UsIGZvciBleGFtcGxlIGJlY2F1c2Ugc29tZSBj b2RlIGNhbGxzIHByb2NfZXhpdCBkaXJlY3RseS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3NodXRk b3duKGludCBjb2RlLCBEYXR1bSBhcmcpCit7CisJU2VuZFByb2NTaWduYWwoTXlMb2dpY2FsUmVw V29ya2VyLT5hcHBseV9sZWFkZXJfcGlkLAorCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlf TUVTU0FHRSwKKwkJCQkgICBJbnZhbGlkQmFja2VuZElkKTsKKworCWRzbV9kZXRhY2goKGRzbV9z ZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKK30KKworLyoKKyAqIFBhcmFsbGVsIGFw cGx5IHdvcmtlciBlbnRyeSBwb2ludC4KKyAqLwordm9pZAorUGFyYWxsZWxBcHBseVdvcmtlck1h aW4oRGF0dW0gbWFpbl9hcmcpCit7CisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVk OworCWRzbV9oYW5kbGUJaGFuZGxlOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAq dG9jOworCXNobV9tcQkgICAqbXE7CisJc2htX21xX2hhbmRsZSAqbXFoOworCXNobV9tcV9oYW5k bGUgKmVycm9yX21xaDsKKwlSZXBPcmlnaW5JZCBvcmlnaW5pZDsKKwlpbnQJCQl3b3JrZXJfc2xv dCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFM RU5dOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nLiAqLworCXBxc2lnbmFsKFNJR0hVUCwg U2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJcHFzaWduYWwoU0lHSU5ULCBTaWduYWxI YW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJh Y2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhl IGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGZvciB0aGUgcGFyYWxsZWwgYXBwbHksIGFu ZAorCSAqIGZpbmQgaXRzIHRhYmxlIG9mIGNvbnRlbnRzLgorCSAqCisJICogTGlrZSBwYXJhbGxl bCBxdWVyeSwgd2UgZG9uJ3QgbmVlZCByZXNvdXJjZSBvd25lciBieSB0aGlzIHRpbWUuIFNlZQor CSAqIFBhcmFsbGVsV29ya2VyTWFpbi4KKwkgKi8KKwltZW1jcHkoJmhhbmRsZSwgTXlCZ3dvcmtl ckVudHJ5LT5iZ3dfZXh0cmEsIHNpemVvZihkc21faGFuZGxlKSk7CisJc2VnID0gZHNtX2F0dGFj aChoYW5kbGUpOworCWlmICghc2VnKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coInVu YWJsZSB0byBtYXAgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJdG9jID0g c2htX3RvY19hdHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2Fk ZHJlc3Moc2VnKSk7CisJaWYgKCF0b2MpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygi YmFkIG1hZ2ljIG51bWJlciBpbiBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisK KwliZWZvcmVfc2htZW1fZXhpdChwYV9zaHV0ZG93biwgUG9pbnRlckdldERhdHVtKHNlZykpOwor CisJLyogTG9vayB1cCB0aGUgc2hhcmVkIGluZm9ybWF0aW9uLiAqLworCXNoYXJlZCA9IHNobV90 b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgZmFsc2UpOworCU15UGFy YWxsZWxTaGFyZWQgPSBzaGFyZWQ7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgbWVzc2FnZSBx dWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZ X01RLCBmYWxzZSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKwltcWggPSBz aG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyoKKwkgKiBQcmltYXJ5IGluaXRpYWxp emF0aW9uIGlzIGNvbXBsZXRlLiBOb3csIHdlIGNhbiBhdHRhY2ggdG8gb3VyIHNsb3QuCisJICog VGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBkb2VzIG5vdCB3 cml0ZSBkYXRhIHRvCisJICogdGhlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHF1ZXVlLgorCSAqLwor CWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwlTcGluTG9ja0FjcXVp cmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2Fs cmVwX3dvcmtlcl9nZW5lcmF0aW9uID0gTXlMb2dpY2FsUmVwV29ya2VyLT5nZW5lcmF0aW9uOwor CU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm8gPSB3b3JrZXJfc2xv dDsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKworCS8qCisJ ICogQXR0YWNoIHRvIHRoZSBlcnJvciBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3Vw KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBmYWxzZSk7CisJc2htX21xX3Nl dF9zZW5kZXIobXEsIE15UHJvYyk7CisJZXJyb3JfbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2Vn LCBOVUxMKTsKKworCXBxX3JlZGlyZWN0X3RvX3NobV9tcShzZWcsIGVycm9yX21xaCk7CisJcHFf c2V0X3BhcmFsbGVsX2xlYWRlcihNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQs CisJCQkJCQkgICBJbnZhbGlkQmFja2VuZElkKTsKKworCU15TG9naWNhbFJlcFdvcmtlci0+bGFz dF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlM b2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gMDsKKworCUluaXRpYWxpemVBcHBseVdvcmtl cigpOworCisJLyogU2V0dXAgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5nLiAqLworCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJl cChNeVN1YnNjcmlwdGlvbi0+b2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJICAgb3JpZ2lubmFt ZSwgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKKwlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShv cmlnaW5uYW1lLCBmYWxzZSk7CisKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg ZG9lc24ndCBuZWVkIHRvIG1vbm9wb2xpemUgdGhpcyByZXBsaWNhdGlvbgorCSAqIG9yaWdpbiB3 aGljaCB3YXMgYWxyZWFkeSBhY3F1aXJlZCBieSBpdHMgbGVhZGVyIHByb2Nlc3MuCisJICovCisJ cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCBNeUxvZ2ljYWxSZXBXb3JrZXItPmFw cGx5X2xlYWRlcl9waWQpOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsK KwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8qCisJICogU2V0dXAgY2FsbGJhY2sg Zm9yIHN5c2NhY2hlIHNvIHRoYXQgd2Uga25vdyB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzIGluCisJ ICogdGhlIHN1YnNjcmlwdGlvbiByZWxhdGlvbiBzdGF0ZS4KKwkgKi8KKwlDYWNoZVJlZ2lzdGVy U3lzY2FjaGVDYWxsYmFjayhTVUJTQ1JJUFRJT05SRUxNQVAsCisJCQkJCQkJCSAgaW52YWxpZGF0 ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcywKKwkJCQkJCQkJICAoRGF0dW0pIDApOworCisJc2V0X2Fw cGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5hbWUpOworCisJTG9naWNhbFBhcmFsbGVs QXBwbHlMb29wKG1xaCk7CisKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbXVz dCBub3QgZ2V0IGhlcmUgYmVjYXVzZSB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgd2ls bCBvbmx5IHN0b3Agd2hlbiBpdCByZWNlaXZlcyBhIFNJR1RFUk0gb3IgU0lHSU5UIGZyb20gdGhl CisJICogbGVhZGVyLCBkZXRlY3RzIGEgY2hhbmdlIGluIHN1YnNjcmlwdGlvbiBpbmZvcm1hdGlv biwgb3Igd2hlbiB0aGVyZQorCSAqIHRoZXJlIGlzIGFuIGVycm9yLiBOb25lIG9mIHRoZXNlIGNh c2VzIHdpbGwgYWxsb3cgdGhlIGNvZGUgdG8gcmVhY2gKKwkgKiBoZXJlLgorCSAqLworCUFzc2Vy dChmYWxzZSk7Cit9CisKKy8qCisgKiBIYW5kbGUgcmVjZWlwdCBvZiBhbiBpbnRlcnJ1cHQgaW5k aWNhdGluZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtZXNzYWdlLgorICoKKyAqIE5vdGU6IHRo aXMgaXMgY2FsbGVkIHdpdGhpbiBhIHNpZ25hbCBoYW5kbGVyISBBbGwgd2UgY2FuIGRvIGlzIHNl dCBhIGZsYWcKKyAqIHRoYXQgd2lsbCBjYXVzZSB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJSVVBU UygpIHRvIGludm9rZQorICogSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCkuCisgKi8KK3Zv aWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpCit7CisJSW50ZXJy dXB0UGVuZGluZyA9IHRydWU7CisJUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1ZTsK KwlTZXRMYXRjaChNeUxhdGNoKTsKK30KKworLyoKKyAqIEhhbmRsZSBhIHNpbmdsZSBwcm90b2Nv bCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gYSBzaW5nbGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtl ci4KKyAqLworc3RhdGljIHZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU3RyaW5nSW5mbyBtc2cpCit7CisJY2hhcgkJbXNndHlw ZTsKKworCW1zZ3R5cGUgPSBwcV9nZXRtc2dieXRlKG1zZyk7CisKKwlzd2l0Y2ggKG1zZ3R5cGUp CisJeworCQljYXNlICdFJzoJCQkJLyogRXJyb3JSZXNwb25zZSAqLworCQkJeworCQkJCUVycm9y RGF0YQllZGF0YTsKKworCQkJCS8qIFBhcnNlIEVycm9yUmVzcG9uc2UuICovCisJCQkJcHFfcGFy c2VfZXJyb3Jub3RpY2UobXNnLCAmZWRhdGEpOworCisJCQkJLyoKKwkJCQkgKiBJZiBkZXNpcmVk LCBhZGQgYSBjb250ZXh0IGxpbmUgdG8gc2hvdyB0aGF0IHRoaXMgaXMgYQorCQkJCSAqIG1lc3Nh Z2UgcHJvcGFnYXRlZCBmcm9tIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBPdGhlcndpc2UsCisJ CQkJICogaXQgY2FuIHNvbWV0aW1lcyBiZSBjb25mdXNpbmcgdG8gdW5kZXJzdGFuZCB3aGF0IGFj dHVhbGx5CisJCQkJICogaGFwcGVuZWQuCisJCQkJICovCisJCQkJaWYgKGVkYXRhLmNvbnRleHQp CisJCQkJCWVkYXRhLmNvbnRleHQgPSBwc3ByaW50ZigiJXNcbiVzIiwgZWRhdGEuY29udGV4dCwK KwkJCQkJCQkJCQkJIF8oImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2Vy IikpOworCQkJCWVsc2UKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzdHJkdXAoXygibG9naWNhbCBy ZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSk7CisKKwkJCQkvKgorCQkJCSAqIENv bnRleHQgYmV5b25kIHRoYXQgc2hvdWxkIHVzZSB0aGUgZXJyb3IgY29udGV4dCBjYWxsYmFja3MK KwkJCQkgKiB0aGF0IHdlcmUgaW4gZWZmZWN0IGluIExvZ2ljYWxSZXBBcHBseUxvb3AoKS4KKwkJ CQkgKi8KKwkJCQllcnJvcl9jb250ZXh0X3N0YWNrID0gYXBwbHlfZXJyb3JfY29udGV4dF9zdGFj azsKKworCQkJCS8qCisJCQkJICogVGhlIGFjdHVhbCBlcnJvciBtdXN0IGhhdmUgYmVlbiByZXBv cnRlZCBieSB0aGUgcGFyYWxsZWwKKwkJCQkgKiBhcHBseSB3b3JrZXIuCisJCQkJICovCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVS RVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJIGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJh bGxlbCBhcHBseSB3b3JrZXIgZXhpdGVkIGR1ZSB0byBlcnJvciIpLAorCQkJCQkJIGVycmNvbnRl eHQoIiVzIiwgZWRhdGEuY29udGV4dCkpKTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIERvbid0IG5l ZWQgdG8gZG8gYW55dGhpbmcgYWJvdXQgTm90aWNlUmVzcG9uc2UgYW5kCisJCQkgKiBOb3RpZnlS ZXNwb25zZSBhcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZG9lc24ndCBuZWVkCisJ CQkgKiB0byBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCisJCQkgKi8KKwkJY2FzZSAnTic6 CisJCWNhc2UgJ0EnOgorCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgbWVzc2FnZSB0eXBlIHJlY2VpdmVkIGZyb20gbG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXI6ICVjIChtZXNzYWdlIGxlbmd0aCAlZCBieXRlcykiLAor CQkJCSBtc2d0eXBlLCBtc2ctPmxlbik7CisJfQorfQorCisvKgorICogSGFuZGxlIGFueSBxdWV1 ZWQgcHJvdG9jb2wgbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJz LgorICovCit2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXModm9pZCkKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwlzdGF0aWMgTWVtb3J5 Q29udGV4dCBocGFtX2NvbnRleHQgPSBOVUxMOworCisJLyoKKwkgKiBUaGlzIGlzIGludm9rZWQg ZnJvbSBQcm9jZXNzSW50ZXJydXB0cygpLCBhbmQgc2luY2Ugc29tZSBvZiB0aGUKKwkgKiBmdW5j dGlvbnMgaXQgY2FsbHMgY29udGFpbiBDSEVDS19GT1JfSU5URVJSVVBUUygpLCB0aGVyZSBpcyBh IHBvdGVudGlhbAorCSAqIGZvciByZWN1cnNpdmUgY2FsbHMgaWYgbW9yZSBzaWduYWxzIGFyZSBy ZWNlaXZlZCB3aGlsZSB0aGlzIHJ1bnMuIEl0J3MKKwkgKiB1bmNsZWFyIHRoYXQgcmVjdXJzaXZl IGVudHJ5IHdvdWxkIGJlIHNhZmUsIGFuZCBpdCBkb2Vzbid0IHNlZW0gdXNlZnVsCisJICogZXZl biBpZiBpdCBpcyBzYWZlLCBzbyBsZXQncyBibG9jayBpbnRlcnJ1cHRzIHVudGlsIGRvbmUuCisJ ICovCisJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkvKgorCSAqIE1vcmVvdmVyLCBDdXJyZW50TWVt b3J5Q29udGV4dCBtaWdodCBiZSBwb2ludGluZyBhbG1vc3QgYW55d2hlcmUuIFdlCisJICogZG9u J3Qgd2FudCB0byByaXNrIGxlYWtpbmcgZGF0YSBpbnRvIGxvbmctbGl2ZWQgY29udGV4dHMsIHNv IGxldCdzIGRvCisJICogb3VyIHdvcmsgaGVyZSBpbiBhIHByaXZhdGUgY29udGV4dCB0aGF0IHdl IGNhbiByZXNldCBvbiBlYWNoIHVzZS4KKwkgKi8KKwlpZiAoIWhwYW1fY29udGV4dCkJCQkvKiBm aXJzdCB0aW1lIHRocm91Z2g/ICovCisJCWhwYW1fY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENy ZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkgIkhhbmRsZVBhcmFsbGVsQXBwbHlN ZXNzYWdlcyIsCisJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKwllbHNlCisJ CU1lbW9yeUNvbnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJb2xkY29udGV4dCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhocGFtX2NvbnRleHQpOworCisJUGFyYWxsZWxBcHBseU1lc3NhZ2VQ ZW5kaW5nID0gZmFsc2U7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkK Kwl7CisJCXNobV9tcV9yZXN1bHQgcmVzOworCQlTaXplCQluYnl0ZXM7CisJCXZvaWQJICAgKmRh dGE7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFRoZSBsZWFkZXIgd2lsbCBkZXRh Y2ggZnJvbSB0aGUgZXJyb3IgcXVldWUgYW5kIHNldCBpdCB0byBOVUxMCisJCSAqIGJlZm9yZSBw cmVwYXJpbmcgdG8gc3RvcCBhbGwgcGFyYWxsZWwgYXBwbHkgd29ya2Vycywgc28gd2UgZG9uJ3QK KwkJICogbmVlZCB0byBoYW5kbGUgZXJyb3IgbWVzc2FnZXMgYW55bW9yZS4gU2VlCisJCSAqIGxv Z2ljYWxyZXBfd29ya2VyX2RldGFjaC4KKwkJICovCisJCWlmICghd2luZm8tPmVycm9yX21xX2hh bmRsZSkKKwkJCWNvbnRpbnVlOworCisJCXJlcyA9IHNobV9tcV9yZWNlaXZlKHdpbmZvLT5lcnJv cl9tcV9oYW5kbGUsICZuYnl0ZXMsICZkYXRhLCB0cnVlKTsKKworCQlpZiAocmVzID09IFNITV9N UV9XT1VMRF9CTE9DSykKKwkJCWNvbnRpbnVlOworCQllbHNlIGlmIChyZXMgPT0gU0hNX01RX1NV Q0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIG1zZzsKKworCQkJaW5pdFN0cmluZ0luZm8o Jm1zZyk7CisJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZtc2csIGRhdGEsIG5ieXRlcyk7CisJ CQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZSh3aW5mbywgJm1zZyk7CisJCQlwZnJlZShtc2cu ZGF0YSk7CisJCX0KKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxv c3QgY29ubmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIiKSkpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwor CS8qIE1pZ2h0IGFzIHdlbGwgY2xlYXIgdGhlIGNvbnRleHQgb24gb3VyIHdheSBvdXQgKi8KKwlN ZW1vcnlDb250ZXh0UmVzZXQoaHBhbV9jb250ZXh0KTsKKworCVJFU1VNRV9JTlRFUlJVUFRTKCk7 Cit9CisKKy8qCisgKiBTZW5kIHRoZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgcGFyYWxsZWwgYXBw bHkgd29ya2VyIHZpYSBzaGFyZWQtbWVtb3J5CisgKiBxdWV1ZS4KKyAqCisgKiBSZXR1cm4gZmFs c2UgaWYgdGhlIGF0dGVtcHQgdG8gc2VuZCBkYXRhIHZpYSBzaGFyZWQgbWVtb3J5IHRpbWVzIG91 dCwgdHJ1ZQorICogb3RoZXJ3aXNlLgorICovCitib29sCitwYV9zZW5kX2RhdGEoUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKK3sK KwlpbnQJCQlyYzsKKwlzaG1fbXFfcmVzdWx0IHJlc3VsdDsKKwlUaW1lc3RhbXBUeiBzdGFydFRp bWUgPSAwOworCisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CisJQXNzZXJ0KCF3aW5m by0+c2VyaWFsaXplX2NoYW5nZXMpOworCisjZGVmaW5lIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFM X01TIDEwMDAKKyNkZWZpbmUgU0hNX1NFTkRfVElNRU9VVF9NUwkJKDEwMDAwIC0gU0hNX1NFTkRf UkVUUllfSU5URVJWQUxfTVMpCisKKwlmb3IgKDs7KQorCXsKKwkJcmVzdWx0ID0gc2htX21xX3Nl bmQod2luZm8tPm1xX2hhbmRsZSwgbmJ5dGVzLCBkYXRhLCB0cnVlLCB0cnVlKTsKKworCQlpZiAo cmVzdWx0ID09IFNITV9NUV9TVUNDRVNTKQorCQkJcmV0dXJuIHRydWU7CisJCWVsc2UgaWYgKHJl c3VsdCA9PSBTSE1fTVFfREVUQUNIRUQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1z ZygiY291bGQgbm90IHNlbmQgZGF0YSB0byBzaGFyZWQtbWVtb3J5IHF1ZXVlIikpKTsKKworCQlB c3NlcnQocmVzdWx0ID09IFNITV9NUV9XT1VMRF9CTE9DSyk7CisKKwkJLyogV2FpdCBiZWZvcmUg cmV0cnlpbmcuICovCisJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCSAgIFdMX0xBVENI X1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkgICBTSE1fU0VO RF9SRVRSWV9JTlRFUlZBTF9NUywKKwkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVM X0FQUExZX1NUQVRFX0NIQU5HRSk7CisKKwkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQl7CisJ CQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwkJfQor CisJCWlmIChzdGFydFRpbWUgPT0gMCkKKwkJCXN0YXJ0VGltZSA9IEdldEN1cnJlbnRUaW1lc3Rh bXAoKTsKKwkJZWxzZSBpZiAoVGltZXN0YW1wRGlmZmVyZW5jZUV4Y2VlZHMoc3RhcnRUaW1lLCBH ZXRDdXJyZW50VGltZXN0YW1wKCksCisJCQkJCQkJCQkJCVNITV9TRU5EX1RJTUVPVVRfTVMpKQor CQkJcmV0dXJuIGZhbHNlOworCX0KK30KKworLyoKKyAqIFN3aXRjaCB0byBQQVJUSUFMX1NFUklB TElaRSBtb2RlIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiAtLSB0aGlzIG1lYW5zCisgKiB0 aGF0IHRoZSBjdXJyZW50IGRhdGEgYW5kIGFueSBzdWJzZXF1ZW50IGRhdGEgZm9yIHRoaXMgdHJh bnNhY3Rpb24gd2lsbCBiZQorICogc2VyaWFsaXplZCB0byBhIGZpbGUuIFRoaXMgaXMgZG9uZSB0 byBwcmV2ZW50IHBvc3NpYmxlIGRlYWRsb2NrcyB3aXRoCisgKiBhbm90aGVyIHBhcmFsbGVsIGFw cGx5IHdvcmtlciAocmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlKS4KKyAqLwor dm9pZAorcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbywKKwkJCQkJCQkgICBib29sIHN0cmVhbV9sb2NrZWQpCit7CisJLyoKKwkgKiBU aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNvdWxkIGJlIHN0dWNrIGZvciBzb21lIHJlYXNvbiAo c2F5IHdhaXRpbmcgb24KKwkgKiBzb21lIGxvY2sgYnkgb3RoZXIgYmFja2VuZCksIHNvIHN0b3Ag dHJ5aW5nIHRvIHNlbmQgZGF0YSBkaXJlY3RseSB0byBpdAorCSAqIGFuZCBzdGFydCBzZXJpYWxp emluZyBkYXRhIHRvIHRoZSBmaWxlIGluc3RlYWQuCisJICovCisJd2luZm8tPnNlcmlhbGl6ZV9j aGFuZ2VzID0gdHJ1ZTsKKworCS8qIEluaXRpYWxpemUgdGhlIHN0cmVhbSBmaWxlc2V0LiAqLwor CXN0cmVhbV9zdGFydF9pbnRlcm5hbCh3aW5mby0+c2hhcmVkLT54aWQsIHRydWUpOworCisJLyoK KwkgKiBBY3F1aXJlcyB0aGUgc3RyZWFtIGxvY2sgaWYgbm90IGFscmVhZHkgdG8gbWFrZSBzdXJl IHRoYXQgdGhlIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyIHdpbGwgd2FpdCBmb3IgdGhlIGxl YWRlciB0byByZWxlYXNlIHRoZSBzdHJlYW0gbG9jayB1bnRpbAorCSAqIHRoZSBlbmQgb2YgdGhl IHRyYW5zYWN0aW9uLgorCSAqLworCWlmICghc3RyZWFtX2xvY2tlZCkKKwkJcGFfbG9ja19zdHJl YW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCXBhX3NldF9m aWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9JTl9QUk9HUkVTUyk7Cit9 CisKKy8qCisgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIncyB0cmFuc2Fj dGlvbiBzdGF0ZSBoYXMgcmVhY2hlZCBvcgorICogZXhjZWVkZWQgdGhlIGdpdmVuIHhhY3Rfc3Rh dGUuCisgKi8KK3N0YXRpYyB2b2lkCitwYV93YWl0X2Zvcl94YWN0X3N0YXRlKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbywKKwkJCQkJICAgUGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3Rh dGUpCit7CisJZm9yICg7OykKKwl7CisJCS8qCisJCSAqIFN0b3AgaWYgdGhlIHRyYW5zYWN0aW9u IHN0YXRlIGhhcyByZWFjaGVkIG9yIGV4Y2VlZGVkIHRoZSBnaXZlbgorCQkgKiB4YWN0X3N0YXRl LgorCQkgKi8KKwkJaWYgKHBhX2dldF94YWN0X3N0YXRlKHdpbmZvLT5zaGFyZWQpID49IHhhY3Rf c3RhdGUpCisJCQlicmVhazsKKworCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8KKwkJKHZv aWQpIFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQg fCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJIDEwTCwKKwkJCQkJCSBXQUlUX0VWRU5UX0xP R0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKworCQkvKiBSZXNldCB0aGUgbGF0 Y2ggc28gd2UgZG9uJ3Qgc3Bpbi4gKi8KKwkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKworCQkvKiBB biBpbnRlcnJ1cHQgbWF5IGhhdmUgb2NjdXJyZWQgd2hpbGUgd2Ugd2VyZSB3YWl0aW5nLiAqLwor CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCX0KK30KKworLyoKKyAqIFdhaXQgdW50aWwgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlcidzIHRyYW5zYWN0aW9uIGZpbmlzaGVzLgorICovCitzdGF0 aWMgdm9pZAorcGFfd2FpdF9mb3JfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvKQoreworCS8qCisJICogV2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IHNldCB0aGUgc3RhdGUgdG8KKwkgKiBQQVJBTExFTF9UUkFOU19TVEFSVEVEIHdoaWNoIG1lYW5z IGl0IGhhcyBhY3F1aXJlZCB0aGUgdHJhbnNhY3Rpb24KKwkgKiBsb2NrLiBUaGlzIGlzIHRvIHBy ZXZlbnQgbGVhZGVyIGFwcGx5IHdvcmtlciBmcm9tIGFjcXVpcmluZyB0aGUKKwkgKiB0cmFuc2Fj dGlvbiBsb2NrIGVhcmxpZXIgdGhhbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSAqLwor CXBhX3dhaXRfZm9yX3hhY3Rfc3RhdGUod2luZm8sIFBBUkFMTEVMX1RSQU5TX1NUQVJURUQpOwor CisJLyoKKwkgKiBXYWl0IGZvciB0aGUgdHJhbnNhY3Rpb24gbG9jayB0byBiZSByZWxlYXNlZC4g VGhpcyBpcyByZXF1aXJlZCB0byBkZXRlY3QKKwkgKiBkZWFkbG9jayBhbW9uZyBsZWFkZXIgYW5k IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuIFJlZmVyIHRvIHRoZSBjb21tZW50cworCSAqIGF0b3Ag dGhpcyBmaWxlLgorCSAqLworCXBhX2xvY2tfdHJhbnNhY3Rpb24od2luZm8tPnNoYXJlZC0+eGlk LCBBY2Nlc3NTaGFyZUxvY2spOworCXBhX3VubG9ja190cmFuc2FjdGlvbih3aW5mby0+c2hhcmVk LT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKgorCSAqIENoZWNrIGlmIHRoZSBzdGF0ZSBi ZWNvbWVzIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEIGluIGNhc2UgdGhlIHBhcmFsbGVsCisJICog YXBwbHkgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzIGNhdXNpbmcgdGhlIGxv Y2sgdG8gYmUKKwkgKiByZWxlYXNlZC4KKwkgKi8KKwlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2lu Zm8tPnNoYXJlZCkgIT0gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSks CisJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9u IHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKSk7Cit9CisKKy8qCisgKiBTZXQgdGhlIHRyYW5zYWN0 aW9uIHN0YXRlIGZvciBhIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwordm9pZAor cGFfc2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJ CQkgIFBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlKQoreworCVNwaW5Mb2NrQWNxdWlyZSgm d3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPnhhY3Rfc3RhdGUgPSB4YWN0X3N0YXRlOworCVNw aW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworfQorCisvKgorICogR2V0IHRoZSB0cmFu c2FjdGlvbiBzdGF0ZSBmb3IgYSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3N0 YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUKK3BhX2dldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlX b3JrZXJTaGFyZWQgKndzaGFyZWQpCit7CisJUGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3RhdGU7 CisKKwlTcGluTG9ja0FjcXVpcmUoJndzaGFyZWQtPm11dGV4KTsKKwl4YWN0X3N0YXRlID0gd3No YXJlZC0+eGFjdF9zdGF0ZTsKKwlTcGluTG9ja1JlbGVhc2UoJndzaGFyZWQtPm11dGV4KTsKKwor CXJldHVybiB4YWN0X3N0YXRlOworfQorCisvKgorICogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBpbmZvcm1hdGlvbi4KKyAqLwordm9pZAorcGFfc2V0X3N0cmVhbV9hcHBseV93b3Jr ZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCXN0cmVhbV9hcHBseV93b3Jr ZXIgPSB3aW5mbzsKK30KKworLyoKKyAqIEZvcm0gYSB1bmlxdWUgc2F2ZXBvaW50IG5hbWUgZm9y IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0aGF0IGRpZmZlcmVudCBz dWJzY3JpcHRpb25zIGZvciBwdWJsaWNhdGlvbnMgb24gZGlmZmVyZW50IG5vZGVzIGNhbgorICog cmVjZWl2ZSBzYW1lIHJlbW90ZSB4aWQsIHNvIHdlIG5lZWQgdG8gdXNlIHN1YnNjcmlwdGlvbiBp ZCBhbG9uZyB3aXRoIGl0LgorICoKKyAqIFJldHVybiB0aGUgbmFtZSBpbiB0aGUgc3VwcGxpZWQg YnVmZmVyLgorICovCitzdGF0aWMgdm9pZAorcGFfc2F2ZXBvaW50X25hbWUoT2lkIHN1Ym9pZCwg VHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKnNwbmFtZSwgU2l6ZSBzenNwKQoreworCXNucHJpbnRm KHNwbmFtZSwgc3pzcCwgInBnX3NwXyV1XyV1Iiwgc3Vib2lkLCB4aWQpOworfQorCisvKgorICog RGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3QgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGlmIG5lZWRlZC4KKyAqCisgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbiBmaWd1cmUg b3V0IGlmIGEgbmV3IHN1YnRyYW5zYWN0aW9uIHdhcworICogc3RhcnRlZCBieSBjaGVja2luZyBp ZiB0aGUgbmV3IGNoYW5nZSBhcnJpdmVkIHdpdGggYSBkaWZmZXJlbnQgeGlkLiBJbiB0aGF0Cisg KiBjYXNlIGRlZmluZSBhIG5hbWVkIHNhdmVwb2ludCwgc28gdGhhdCB3ZSBhcmUgYWJsZSB0byBy b2xsYmFjayB0byBpdAorICogaWYgcmVxdWlyZWQuCisgKi8KK3ZvaWQKK3BhX3N0YXJ0X3N1YnRy YW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsIFRyYW5zYWN0aW9uSWQgdG9wX3hpZCkKK3sK KwlpZiAoY3VycmVudF94aWQgIT0gdG9wX3hpZCAmJgorCQkhbGlzdF9tZW1iZXJfeGlkKHN1Ynhh Y3RsaXN0LCBjdXJyZW50X3hpZCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hh cgkJc3BuYW1lW05BTUVEQVRBTEVOXTsKKworCQlwYV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlw dGlvbi0+b2lkLCBjdXJyZW50X3hpZCwKKwkJCQkJCSAgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7 CisKKwkJZWxvZyhERUJVRzEsICJkZWZpbmluZyBzYXZlcG9pbnQgJXMgaW4gbG9naWNhbCByZXBs aWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLCBzcG5hbWUpOworCisJCS8qIFdlIG11c3Qg YmUgaW4gdHJhbnNhY3Rpb24gYmxvY2sgdG8gZGVmaW5lIHRoZSBTQVZFUE9JTlQuICovCisJCWlm ICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCWlmICghSXNUcmFuc2FjdGlvblN0YXRl KCkpCisJCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJQmVnaW5UcmFuc2FjdGlv bkJsb2NrKCk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCisJCURlZmlu ZVNhdmVwb2ludChzcG5hbWUpOworCisJCS8qCisJCSAqIENvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCBpcyBuZWVkZWQgdG8gc3RhcnQgYSBzdWJ0cmFuc2FjdGlvbiBhZnRlcgorCQkgKiBpc3N1aW5n IGEgU0FWRVBPSU5UIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrIChzZWUKKwkJICogU3RhcnRT dWJUcmFuc2FjdGlvbigpKS4KKwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQp OworCQlzdWJ4YWN0bGlzdCA9IGxhcHBlbmRfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCk7 CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30KKworLyogUmVzZXQgdGhl IGxpc3QgdGhhdCBtYWludGFpbnMgc3VidHJhbnNhY3Rpb25zLiAqLwordm9pZAorcGFfcmVzZXRf c3VidHJhbnModm9pZCkKK3sKKwkvKgorCSAqIFdlIGRvbid0IG5lZWQgdG8gZnJlZSB0aGlzIGV4 cGxpY2l0bHkgYXMgdGhlIGFsbG9jYXRlZCBtZW1vcnkgd2lsbCBiZQorCSAqIGZyZWVkIGF0IHRo ZSB0cmFuc2FjdGlvbiBlbmQuCisJICovCisJc3VieGFjdGxpc3QgPSBOSUw7Cit9CisKKy8qCisg KiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIGFw cGxpZWQgaW4gYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9zdHJl YW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSkKK3sKKwlUcmFu c2FjdGlvbklkIHhpZCA9IGFib3J0X2RhdGEtPnhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZCA9 IGFib3J0X2RhdGEtPnN1YnhpZDsKKworCS8qCisJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3 ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCisJICogaW4gY2Fz ZSBvZiBjcmFzaC4KKwkgKi8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IGFib3J0 X2RhdGEtPmFib3J0X2xzbjsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9 IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7CisKKwkvKgorCSAqIElmIHRoZSB0d28gWElEcyBhcmUg dGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbworCSAqIGp1 c3QgZnJlZSB0aGUgc3VieGFjdGxpc3QuCisJICovCisJaWYgKHN1YnhpZCA9PSB4aWQpCisJewor CQkvKgorCQkgKiBSZWxlYXNlIHRoZSBsb2NrIGFzIHdlIG1pZ2h0IGJlIHByb2Nlc3NpbmcgYW4g ZW1wdHkgc3RyZWFtaW5nCisJCSAqIHRyYW5zYWN0aW9uIGluIHdoaWNoIGNhc2UgdGhlIGxvY2sg d29uJ3QgYmUgcmVsZWFzZWQgZHVyaW5nCisJCSAqIHRyYW5zYWN0aW9uIHJvbGxiYWNrLgorCQkg Ki8KKwkJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisK KwkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24oKTsKKworCQlpZiAoSXNUcmFuc2FjdGlvbkJsb2Nr KCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFsc2UpOworCQkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJCX0KKworCQlwYV9yZXNldF9zdWJ0cmFucygpOworCisJCXBnc3Rh dF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisKKwkJcGFfc2V0X3hhY3Rfc3Rh dGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCX0KKwllbHNl CisJeworCQkvKiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJvbGxiYWNrIHRvIHRoZSBzYXZlcG9p bnQuICovCisJCWludAkJCWk7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFUQUxFTl07CisKKwkJcGFf c2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgc3VieGlkLCBzcG5hbWUsIHNpemVv ZihzcG5hbWUpKTsKKworCQllbG9nKERFQlVHMSwgInJvbGxpbmcgYmFjayB0byBzYXZlcG9pbnQg JXMgaW4gbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLCBzcG5hbWUp OworCisJCS8qCisJCSAqIFNlYXJjaCB0aGUgc3VieGFjdGxpc3QsIGRldGVybWluZSB0aGUgb2Zm c2V0IHRyYWNrZWQgZm9yIHRoZQorCQkgKiBzdWJ4YWN0LCBhbmQgdHJ1bmNhdGUgdGhlIGxpc3Qu CisJCSAqCisJCSAqIE5vdGUgdGhhdCBmb3IgYW4gZW1wdHkgc3ViLXRyYW5zYWN0aW9uIHdlIHdv bid0IGZpbmQgdGhlIHN1YnhpZAorCQkgKiBoZXJlLgorCQkgKi8KKwkJZm9yIChpID0gbGlzdF9s ZW5ndGgoc3VieGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0pCisJCXsKKwkJCVRyYW5zYWN0aW9u SWQgeGlkX3RtcCA9IGxmaXJzdF94aWQobGlzdF9udGhfY2VsbChzdWJ4YWN0bGlzdCwgaSkpOwor CisJCQlpZiAoeGlkX3RtcCA9PSBzdWJ4aWQpCisJCQl7CisJCQkJUm9sbGJhY2tUb1NhdmVwb2lu dChzcG5hbWUpOworCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCXN1YnhhY3Rs aXN0ID0gbGlzdF90cnVuY2F0ZShzdWJ4YWN0bGlzdCwgaSk7CisJCQkJYnJlYWs7CisJCQl9CisJ CX0KKwl9Cit9CisKKy8qCisgKiBTZXQgdGhlIGZpbGVzZXQgc3RhdGUgZm9yIGEgcGFydGljdWxh ciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFRoZSBmaWxlc2V0CisgKiB3aWxsIGJlIHNldCBvbmNl IHRoZSBsZWFkZXIgd29ya2VyIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8gdGhlIGZpbGUKKyAq IHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2 b2lkCitwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hh cmVkLAorCQkJCQkgUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlKQoreworCVNwaW5M b2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPmZpbGVzZXRfc3RhdGUgPSBm aWxlc2V0X3N0YXRlOworCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpFX0RPTkUp CisJeworCQlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKKwkJQXNzZXJ0KE15TG9n aWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQl3c2hhcmVkLT5maWxlc2V0ID0gKk15 TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQ7CisJfQorCisJU3BpbkxvY2tSZWxlYXNl KCZ3c2hhcmVkLT5tdXRleCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIGZpbGVzZXQgc3RhdGUgZm9y IHRoZSBjdXJyZW50IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworc3RhdGljIFBhcnRpYWxG aWxlU2V0U3RhdGUKK3BhX2dldF9maWxlc2V0X3N0YXRlKHZvaWQpCit7CisJUGFydGlhbEZpbGVT ZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOworCisJQXNzZXJ0KGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtl cigpKTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCWZp bGVzZXRfc3RhdGUgPSBNeVBhcmFsbGVsU2hhcmVkLT5maWxlc2V0X3N0YXRlOworCVNwaW5Mb2Nr UmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJuIGZpbGVzZXRfc3Rh dGU7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUgYW5kIHJlbGVhc2Ug YSBsb2NrIGZvciBlYWNoIHN0cmVhbSBibG9jay4KKyAqCisgKiBTZXQgbG9ja3RhZ19maWVsZDQg dG8gUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0gdG8gaW5kaWNhdGUgdGhhdCBpdCdzIGEKKyAq IHN0cmVhbSBsb2NrLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmls ZSB0byBzZWUgaG93IHRoZSBzdHJlYW0gbG9jayBpcyB1c2VkLgorICovCit2b2lkCitwYV9sb2Nr X3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJTG9ja0Fw cGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwK KwkJCQkJCQkJICAgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0sIGxvY2ttb2RlKTsKK30KKwor dm9pZAorcGFfdW5sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21v ZGUpCit7CisJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkJIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNLCBs b2NrbW9kZSk7Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUgYW5kIHJl bGVhc2UgYSBsb2NrIGZvciBlYWNoIGxvY2FsIHRyYW5zYWN0aW9uCisgKiBhcHBseS4KKyAqCisg KiBTZXQgbG9ja3RhZ19maWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNUIHRvIGluZGlj YXRlIHRoYXQgaXQncyBhCisgKiB0cmFuc2FjdGlvbiBsb2NrLgorICoKKyAqIE5vdGUgdGhhdCBh bGwgdGhlIGNhbGxlcnMgbXVzdCBwYXNzIGEgcmVtb3RlIHRyYW5zYWN0aW9uIElEIGluc3RlYWQg b2YgYQorICogbG9jYWwgdHJhbnNhY3Rpb24gSUQgYXMgeGlkLiBUaGlzIGlzIGJlY2F1c2UgdGhl IGxvY2FsIHRyYW5zYWN0aW9uIElEIHdpbGwKKyAqIG9ubHkgYmUgYXNzaWduZWQgd2hpbGUgYXBw bHlpbmcgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgYnV0CisgKiBpdCdz IHBvc3NpYmxlIHRoYXQgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyIGlzIGJsb2NrZWQKKyAqIGJ5IGEgY29uY3VycmVudGx5IGV4ZWN1dGluZyB0cmFuc2FjdGlv biBpbiBhbm90aGVyIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKKyAqIGNhbiBvbmx5IGNvbW11 bmljYXRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiBpZCB0byB0aGUgbGVhZGVyIGFmdGVyIGFwcGx5 aW5nCisgKiB0aGUgZmlyc3QgY2hhbmdlIHNvIGl0IHdvbid0IGJlIGFibGUgdG8gd2FpdCBhZnRl ciBzZW5kaW5nIHRoZSB4YWN0IGZpbmlzaAorICogY29tbWFuZCB1c2luZyB0aGlzIGxvY2suCisg KgorICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlIHRvIHNlZSBob3cgdGhl IHRyYW5zYWN0aW9uIGxvY2sgaXMKKyAqIHVzZWQuCisgKi8KK3ZvaWQKK3BhX2xvY2tfdHJhbnNh Y3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxvY2tBcHBs eVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJ CQkJCQkJCSAgIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVCwgbG9ja21vZGUpOworfQorCit2b2lk CitwYV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2tt b2RlKQoreworCVVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJCSBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QsIGxv Y2ttb2RlKTsKK30KKworLyoKKyAqIERlY3JlbWVudCB0aGUgbnVtYmVyIG9mIHBlbmRpbmcgc3Ry ZWFtaW5nIGJsb2NrcyBhbmQgd2FpdCBvbiB0aGUgc3RyZWFtIGxvY2sKKyAqIGlmIHRoZXJlIGlz IG5vIHBlbmRpbmcgYmxvY2sgYXZhaWxhYmxlLgorICovCit2b2lkCitwYV9kZWNyX2FuZF93YWl0 X3N0cmVhbV9ibG9jayh2b2lkKQoreworCUFzc2VydChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIo KSk7CisKKwkvKgorCSAqIEl0IGlzIG9ubHkgcG9zc2libGUgdG8gbm90IGhhdmUgYW55IHBlbmRp bmcgc3RyZWFtIGNodW5rcyB3aGVuIHdlIGFyZQorCSAqIGFwcGx5aW5nIHNwb29sZWQgbWVzc2Fn ZXMuCisJICovCisJaWYgKHBnX2F0b21pY19yZWFkX3UzMigmTXlQYXJhbGxlbFNoYXJlZC0+cGVu ZGluZ19zdHJlYW1fY291bnQpID09IDApCisJeworCQlpZiAocGFfaGFzX3Nwb29sZWRfbWVzc2Fn ZV9wZW5kaW5nKCkpCisJCQlyZXR1cm47CisKKwkJZWxvZyhFUlJPUiwgImludmFsaWQgcGVuZGlu ZyBzdHJlYW1pbmcgYmxvY2sgbnVtYmVyIik7CisJfQorCisJaWYgKHBnX2F0b21pY19zdWJfZmV0 Y2hfdTMyKCZNeVBhcmFsbGVsU2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCwgMSkgPT0gMCkK Kwl7CisJCXBhX2xvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVM b2NrKTsKKwkJcGFfdW5sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1No YXJlTG9jayk7CisJfQorfQorCisvKgorICogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KKyAqLwordm9pZAorcGFf eGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBYTG9nUmVjUHRyIHJl bW90ZV9sc24pCit7CisJQXNzZXJ0KGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSk7CisKKwkvKgor CSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGNhbgorCSAqIGNvbnRpbnVlIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCisJ ICovCisJcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2spOworCisJLyoKKwkgKiBXYWl0IGZvciB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMg aXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBm YWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCSAqIGRlYWRsb2Nr cy4KKwkgKi8KKwlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisKKwlzdG9yZV9mbHVz aF9wb3NpdGlvbihyZW1vdGVfbHNuLCB3aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQpOwor CSh2b2lkKSBwYV9mcmVlX3dvcmtlcih3aW5mbyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9kZWNvZGUuYwppbmRleCAyY2MwYWM5ZWIwLi4zM2ZkYmRjNjczIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTgyMiwxMCArODIyLDExIEBAIERl Y29kZUFib3J0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAq YnVmLAogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJ UmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJ CQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+ RW5kUmVjUHRyLCBhYm9ydF90aW1lKTsKIAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgt PnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJB Ym9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAg IGFib3J0X3RpbWUpOwogCX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCA3MzU5NGM2OThh Li5lMDc1YzI4MDgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jCkBAIC01NSw2ICs1NSw3IEBACiAvKiBHVUMgdmFyaWFibGVzICovCiBpbnQJCQltYXhfbG9n aWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNDsKIGludAkJCW1heF9zeW5jX3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbiA9IDI7CitpbnQJCQltYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uID0gMjsKIAogTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2Vy ID0gTlVMTDsKIApAQCAtNzQsNiArNzUsNyBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX2xhdW5j aGVyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBf d29ya2VyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxy ZXBfd29ya2VyX2RldGFjaCh2b2lkKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2Ns ZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKK3N0YXRpYyBpbnQgbG9naWNhbHJlcF9w YV93b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKIAogc3RhdGljIGJvb2wgb25fY29tbWl0X2xhdW5j aGVyX3dha2V1cCA9IGZhbHNlOwogCkBAIC0xNTIsOCArMTU0LDEwIEBAIGdldF9zdWJzY3JpcHRp b25fbGlzdCh2b2lkKQogICoKICAqIFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIGNsZWFuaW5nIHVw IHRoZSBzaGFyZWQgbWVtb3J5IGluIGNhc2UgdGhlIHdvcmtlcgogICogZmFpbHMgdG8gYXR0YWNo LgorICoKKyAqIFJldHVybiB3aGV0aGVyIHRoZSBhdHRhY2ggd2FzIHN1Y2Nlc3NmdWwuCiAgKi8K LXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNo KExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCQkJCQkgICB1aW50MTYgZ2VuZXJhdGlvbiwK IAkJCQkJCQkgICBCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCkBAIC0xNjksMTEgKzE3 MywxMSBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAq d29ya2VyLAogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJF RCk7CiAKLQkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkOyBubyBuZWVkIHRv IGRvIGFueXRoaW5nLiAqLworCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQu IFJldHVybiBmYWxzZSBpZiBkaWVkLiAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtl ci0+cHJvYykKIAkJewogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0J CQlyZXR1cm47CisJCQlyZXR1cm4gd29ya2VyLT5pbl91c2U7CiAJCX0KIAogCQlMV0xvY2tSZWxl YXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKQEAgLTE4OCw3ICsxOTIsNyBAQCBXYWl0Rm9yUmVw bGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJaWYgKGdl bmVyYXRpb24gPT0gd29ya2VyLT5nZW5lcmF0aW9uKQogCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2Ns ZWFudXAod29ya2VyKTsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwot CQkJcmV0dXJuOworCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKIAkJLyoKQEAgLTIxMCw2ICsyMTQs OCBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29y a2VyLAogLyoKICAqIFdhbGtzIHRoZSB3b3JrZXJzIGFycmF5IGFuZCBzZWFyY2hlcyBmb3Igb25l IHRoYXQgbWF0Y2hlcyBnaXZlbgogICogc3Vic2NyaXB0aW9uIGlkIGFuZCByZWxpZC4KKyAqCisg KiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIHRh YmxlIHN5bmMgd29ya2VyLgogICovCiBMb2dpY2FsUmVwV29ya2VyICoKIGxvZ2ljYWxyZXBfd29y a2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQpAQCAtMjI0 LDYgKzIzMCwxMCBAQCBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlk LCBib29sIG9ubHlfcnVubmluZykKIAl7CiAJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNh bFJlcEN0eC0+d29ya2Vyc1tpXTsKIAorCQkvKiBTa2lwIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMu ICovCisJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQljb250aW51ZTsKKwogCQlp ZiAody0+aW5fdXNlICYmIHctPnN1YmlkID09IHN1YmlkICYmIHctPnJlbGlkID09IHJlbGlkICYm CiAJCQkoIW9ubHlfcnVubmluZyB8fCB3LT5wcm9jKSkKIAkJewpAQCAtMjYwLDExICsyNzAsMTMg QEAgbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZykK IH0KIAogLyoKLSAqIFN0YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2li bGUuCisgKiBTdGFydCBuZXcgbG9naWNhbCByZXBsaWNhdGlvbiBiYWNrZ3JvdW5kIHdvcmtlciwg aWYgcG9zc2libGUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZh aWx1cmUuCiAgKi8KLXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJp ZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJCQkJIE9p ZCByZWxpZCkKKwkJCQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSkKIHsK IAlCYWNrZ3JvdW5kV29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3dfaGFu ZGxlOwpAQCAtMjczLDcgKzI4NSwxMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRi aWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlpbnQJCQlz bG90ID0gMDsKIAlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWludAkJCW5zeW5j d29ya2VyczsKKwlpbnQJCQlucGFyYWxsZWxhcHBseXdvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93 OworCWJvb2wJCWlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciA9IChzdWJ3b3JrZXJfZHNtICE9IERT TV9IQU5ETEVfSU5WQUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2sgLSB0YWJsZXN5bmMgd29ya2Vy IGNhbm5vdCBiZSBhIHN1YndvcmtlciAqLworCUFzc2VydCghKGlzX3BhcmFsbGVsX2FwcGx5X3dv cmtlciAmJiBPaWRJc1ZhbGlkKHJlbGlkKSkpOwogCiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJy bXNnX2ludGVybmFsKCJzdGFydGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vi c2NyaXB0aW9uIFwiJXNcIiIsCkBAIC0zNTEsNyArMzY4LDI2IEBAIHJldHJ5OgogCWlmIChPaWRJ c1ZhbGlkKHJlbGlkKSAmJiBuc3luY3dvcmtlcnMgPj0gbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uKQogCXsKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0J CXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCW5wYXJhbGxlbGFwcGx5d29ya2VycyA9 IGxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KHN1YmlkKTsKKworCS8qCisJICogUmV0dXJuIGZh bHNlIGlmIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyByZWFjaGVkIHRoZSBs aW1pdAorCSAqIHBlciBzdWJzY3JpcHRpb24uCisJICovCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5 X3dvcmtlciAmJgorCQlucGFyYWxsZWxhcHBseXdvcmtlcnMgPj0gbWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKKwl7CisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJl cFdvcmtlckxvY2spOworCisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09O RklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCisJCQkJIGVycm1zZygib3V0IG9mIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMiKSwKKwkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVh c2UgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbi4iKSkpOworCisJ CXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY1LDcgKzQwMSw3IEBAIHJldHJ5OgogCQkJ CShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVy cm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiksCiAJCQkJIGVy cmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogUHJl cGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zODAsNiArNDE2LDggQEAgcmV0cnk6CiAJd29y a2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+cmVsc3RhdGVf bHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7 CisJd29ya2VyLT5hcHBseV9sZWFkZXJfcGlkID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID8g TXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gaXNfcGFy YWxsZWxfYXBwbHlfd29ya2VyOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RB TVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NywxOSArNDM1LDM0IEBA IHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJn d19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRm KGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50 ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsK KworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVu Y3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIik7CisJZWxz ZQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdv cmtlck1haW4iKTsKKwogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKIAkJc25wcmludGYoYmd3LmJn d19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwgc3ViaWQsIHJlbGlkKTsKKwllbHNlIGlmIChpc19w YXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExF TiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBz dWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJZWxzZQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUs IEJHV19NQVhMRU4sCi0JCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2Ny aXB0aW9uICV1Iiwgc3ViaWQpOwotCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwg ImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9u IGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOworCisJaWYgKGlzX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVO LCAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3b3JrZXIiKTsKKwllbHNlCisJCXNucHJp bnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vy Iik7CiAKIAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJUOwogCWJndy5i Z3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAliZ3cuYmd3X21haW5fYXJnID0gSW50MzJHZXRE YXR1bShzbG90KTsKIAorCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCW1lbWNweShi Z3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlm ICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJ ewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2VyLCBzbyBjbGVhbiB1cCB0aGUgd29ya2VyIHNs b3QuICovCkBAIC00MjIsMzMgKzQ3NSwyMyBAQCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RF X0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBiYWNr Z3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBp bmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBm YWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBpdCBhdHRhY2hlcy4gKi8KLQlXYWl0Rm9y UmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsK KwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlv biwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCi0gKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9u IHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFueSwgYW5kIHdhaXQgdW50aWwKLSAqIGl0IGRl dGFjaGVzIGZyb20gdGhlIHNsb3QuCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBzdG9wIHRoZSB3 b3JrZXIgYW5kIHdhaXQgdW50aWwgaXQgZGV0YWNoZXMgZnJvbSB0aGUKKyAqIHNsb3QuCiAgKi8K LXZvaWQKLWxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCitzdGF0 aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2Vy ICp3b3JrZXIsIGludCBzaWdubykKIHsKLQlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CiAJdWlu dDE2CQlnZW5lcmF0aW9uOwogCi0JTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywg TFdfU0hBUkVEKTsKLQotCXdvcmtlciA9IGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJl bGlkLCBmYWxzZSk7Ci0KLQkvKiBObyB3b3JrZXIsIG5vdGhpbmcgdG8gZG8uICovCi0JaWYgKCF3 b3JrZXIpCi0JewotCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0 dXJuOwotCX0KKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJbk1vZGUoTG9naWNhbFJlcFdvcmtlckxv Y2ssIExXX1NIQVJFRCkpOwogCiAJLyoKIAkgKiBSZW1lbWJlciB3aGljaCBnZW5lcmF0aW9uIHdh cyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVjayBpZiB3aGF0IHdlIHNlZQpAQCAtNDg2LDEwICs1 MjksNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkg KiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZlcmVudCB3b3JrZXIgaGFzIHRha2VuIHRo ZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPmdlbmVyYXRp b24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBXb3JrZXIgaGFzIGFzc2lnbmVkIHByb2Ms IHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29ya2VyLT5wcm9jKQpAQCAtNDk3LDcgKzUz Nyw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJfQog CiAJLyogTm93IHRlcm1pbmF0ZSB0aGUgd29ya2VyIC4uLiAqLwotCWtpbGwod29ya2VyLT5wcm9j LT5waWQsIFNJR1RFUk0pOworCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIHNpZ25vKTsKIAogCS8q IC4uLiBhbmQgd2FpdCBmb3IgaXQgdG8gZGllLiAqLwogCWZvciAoOzspCkBAIC01MjMsNiArNTYz LDUzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAKIAkJ TFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAl9Cit9CisK Ky8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVs aWQsIGlmIGFueS4KKyAqLwordm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQs IE9pZCByZWxpZCkKK3sKKwlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CisKKwlMV0xvY2tBY3F1 aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0gbG9naWNh bHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKKworCWlmICh3b3JrZXIpCisJ eworCQlBc3NlcnQoIWlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKwkJbG9naWNhbHJl cF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIsIFNJR1RFUk0pOworCX0KKworCUxXTG9ja1Jl bGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworfQorCisvKgorICogU3RvcCB0aGUgbG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY29ycmVzcG9uZGluZyB0byB0aGUK KyAqIGlucHV0IHNsb3QgbnVtYmVyLgorICoKKyAqIE5vZGUgdGhhdCB0aGUgZnVuY3Rpb24gc2Vu ZHMgU0lHSU5UIGluc3RlYWQgb2YgU0lHVEVSTSB0byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdv cmtlciBzbyB0aGF0IHRoZSB3b3JrZXIgZXhpdHMgY2xlYW5seS4KKyAqLwordm9pZAorbG9naWNh bHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24pCit7CisJ TG9naWNhbFJlcFdvcmtlciAqd29ya2VyOworCisJQXNzZXJ0KHNsb3Rfbm8gPj0gMCAmJiBzbG90 X25vIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycyk7CisKKwlMV0xvY2tBY3F1aXJl KExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0gJkxvZ2ljYWxS ZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisJQXNzZXJ0KGlzUGFyYWxsZWxBcHBseVdvcmtlcih3 b3JrZXIpKTsKKworCS8qCisJICogT25seSBzdG9wIHRoZSB3b3JrZXIgaWYgdGhlIGdlbmVyYXRp b24gbWF0Y2hlcyBhbmQgdGhlIHdvcmtlciBpcyBhbGl2ZS4KKwkgKi8KKwlpZiAod29ya2VyLT5n ZW5lcmF0aW9uID09IGdlbmVyYXRpb24gJiYgd29ya2VyLT5wcm9jKQorCQlsb2dpY2FscmVwX3dv cmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgU0lHSU5UKTsKIAogCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOwogfQpAQCAtNTk1LDExICs2ODIsNDAgQEAgbG9naWNhbHJlcF93 b3JrZXJfYXR0YWNoKGludCBzbG90KQogfQogCiAvKgotICogRGV0YWNoIHRoZSB3b3JrZXIgKGNs ZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgorICogU3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VycyBpZiBhbnksIGFuZCBkZXRhY2ggdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKyAqIChjbGVh bnMgdXAgdGhlIHdvcmtlciBpbmZvKS4KICAqLwogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29y a2VyX2RldGFjaCh2b2lkKQogeworCS8qIFN0b3AgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMu ICovCisJaWYgKGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwl7CisJCUxpc3QJICAgKndvcmtl cnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIERldGFjaCBmcm9tIHRoZSBlcnJv cl9tcV9oYW5kbGUgZm9yIGFsbCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisJCSAqIGJlZm9yZSB0 ZXJtaW5hdGluZyB0aGVtLiBUaGlzIHByZXZlbnRzIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGZy b20KKwkJICogcmVjZWl2aW5nIHRoZSB3b3JrZXIgdGVybWluYXRpb24gbWVzc2FnZSBhbmQgc2Vu ZGluZyBpdCB0byBsb2dzIHdoZW4KKwkJICogdGhlIHNhbWUgaXMgYWxyZWFkeSBkb25lIGJ5IHRo ZSBwYXJhbGxlbCB3b3JrZXIuCisJCSAqLworCQlwYV9kZXRhY2hfYWxsX2Vycm9yX21xKCk7CisK KwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3 b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3Jr ZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAoaXNQYXJh bGxlbEFwcGx5V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwo dywgU0lHVEVSTSk7CisJCX0KKworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2Nr KTsKKwl9CisKIAkvKiBCbG9jayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJl KExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjIsNiArNzM4LDgg QEAgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJ d29ya2VyLT51c2VyaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lk OwogCXdvcmtlci0+cmVsaWQgPSBJbnZhbGlkT2lkOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3Bp ZCA9IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwogfQogCiAv KgpAQCAtNjUzLDYgKzc3MSwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUs IERhdHVtIGFyZykKIAlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCAhPSBO VUxMKQogCQlGaWxlU2V0RGVsZXRlQWxsKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQpOwogCisJLyoKKwkgKiBTZXNzaW9uIGxldmVsIGxvY2tzIG1heSBiZSBhY3F1aXJlZCBvdXRz aWRlIG9mIGEgdHJhbnNhY3Rpb24gaW4gcGFyYWxsZWwKKwkgKiBhcHBseSBtb2RlIGFuZCB3aWxs IG5vdCBiZSByZWxlYXNlZCB3aGVuIHRoZSB3b3JrZXIgdGVybWluYXRlcywgc28KKwkgKiBtYW51 YWxseSByZWxlYXNlIGFsbCBsb2NrcyBiZWZvcmUgdGhlIHdvcmtlciBleGl0cy4KKwkgKi8KKwlM b2NrUmVsZWFzZUFsbChERUZBVUxUX0xPQ0tNRVRIT0QsIHRydWUpOworCiAJQXBwbHlMYXVuY2hl cldha2V1cCgpOwogfQogCkBAIC02ODAsNiArODA1LDMzIEBAIGxvZ2ljYWxyZXBfc3luY193b3Jr ZXJfY291bnQoT2lkIHN1YmlkKQogCXJldHVybiByZXM7CiB9CiAKKy8qCisgKiBDb3VudCB0aGUg bnVtYmVyIG9mIHJlZ2lzdGVyZWQgKGJ1dCBub3QgbmVjZXNzYXJpbHkgcnVubmluZykgcGFyYWxs ZWwgYXBwbHkKKyAqIHdvcmtlcnMgZm9yIGEgc3Vic2NyaXB0aW9uLgorICovCitzdGF0aWMgaW50 Citsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlp bnQJCQlyZXMgPSAwOworCisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJM b2NrKSk7CisKKwkvKgorCSAqIFNjYW4gYWxsIGF0dGFjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtl cnMsIG9ubHkgY291bnRpbmcgdGhvc2Ugd2hpY2gKKwkgKiBoYXZlIHRoZSBnaXZlbiBzdWJzY3Jp cHRpb24gaWQuCisJICovCisJZm9yIChpID0gMDsgaSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnM7IGkrKykKKwl7CisJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0 eC0+d29ya2Vyc1tpXTsKKworCQlpZiAody0+c3ViaWQgPT0gc3ViaWQgJiYgaXNQYXJhbGxlbEFw cGx5V29ya2VyKHcpKQorCQkJcmVzKys7CisJfQorCisJcmV0dXJuIHJlczsKK30KKwogLyoKICAq IEFwcGx5TGF1bmNoZXJTaG1lbVNpemUKICAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVw bGljYXRpb24gbGF1bmNoZXIgc2hhcmVkIG1lbW9yeQpAQCAtODY5LDcgKzEwMjEsNyBAQCBBcHBs eUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJp ZXZlX3JldHJ5X2ludGVydmFsOwogCiAJCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWIt PmRiaWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUsCi0JCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZh bGlkT2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVf SU5WQUxJRCk7CiAJCQkJfQogCQkJfQogCkBAIC05NTIsNiArMTEwNCwxMCBAQCBwZ19zdGF0X2dl dF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJT05fQVJHUykKIAkJaWYgKE9pZElzVmFsaWQoc3ViaWQp ICYmIHdvcmtlci5zdWJpZCAhPSBzdWJpZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qIFNraXAgaWYg dGhpcyBpcyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworCQlpZiAoaXNQYXJhbGxlbEFwcGx5 V29ya2VyKCZ3b3JrZXIpKQorCQkJY29udGludWU7CisKIAkJd29ya2VyX3BpZCA9IHdvcmtlci5w cm9jLT5waWQ7CiAKIAkJdmFsdWVzWzBdID0gT2JqZWN0SWRHZXREYXR1bSh3b3JrZXIuc3ViaWQp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWls ZCBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5kZXggMWI5 ZjA3MmVkYy4uYjc4YmZiYTEwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L21lc29uLmJ1aWxkCkBAIC0xLDYgKzEsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjIsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKIGJhY2tlbmRfc291cmNlcyArPSBmaWxl cygKKyAgJ2FwcGx5cGFyYWxsZWx3b3JrZXIuYycsCiAgICdkZWNvZGUuYycsCiAgICdsYXVuY2hl ci5jJywKICAgJ2xvZ2ljYWwuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL29yaWdpbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmln aW4uYwppbmRleCBmMTM0ZTQ0ODc4Li44YjA4Mzc4NjY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAgLTEwNzUsMTIgKzEwNzUsMjAgQEAgUmVwbGljYXRpb25P cmlnaW5FeGl0Q2xlYW51cChpbnQgY29kZSwgRGF0dW0gYXJnKQogICogYXJyYXkgZG9lc24ndCBo YXZlIHRvIGJlIHNlYXJjaGVkIHdoZW4gY2FsbGluZwogICogcmVwbG9yaWdpbl9zZXNzaW9uX2Fk dmFuY2UoKS4KICAqCi0gKiBPYnZpb3VzbHkgb25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNh biBleGlzdCBwZXIgcHJvY2VzcyBhbmQgdGhlIGN1cnJlbnQKLSAqIGNhY2hlZCB2YWx1ZSBjYW4g b25seSBiZSBzZXQgYWdhaW4gYWZ0ZXIgdGhlIHByZXZpb3VzIHZhbHVlIGlzIHRvcm4gZG93bgot ICogd2l0aCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKS4KKyAqIE5vcm1hbGx5IG9ubHkgb25l IHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3Mgc28gdGhlIGNhY2hlZAor ICogdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWluIGFmdGVyIHRoZSBwcmV2aW91cyB2YWx1ZSBp cyB0b3JuIGRvd24gd2l0aAorICogcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCkuIEZvciB0aGlz IG5vcm1hbCBjYXNlIHBhc3MgYWNxdWlyZWRfYnkgPSAwCisgKiAobWVhbmluZyB0aGUgc2xvdCBp cyBub3QgYWxsb3dlZCB0byBiZSBhbHJlYWR5IGFjcXVpcmVkIGJ5IGFub3RoZXIgcHJvY2Vzcyku CisgKgorICogSG93ZXZlciwgc29tZXRpbWVzIG11bHRpcGxlIHByb2Nlc3NlcyBjYW4gc2FmZWx5 IHJlLXVzZSB0aGUgc2FtZSBvcmlnaW4gc2xvdAorICogKGZvciBleGFtcGxlLCBtdWx0aXBsZSBw YXJhbGxlbCBhcHBseSBwcm9jZXNzZXMgY2FuIHNhZmVseSB1c2UgdGhlIHNhbWUKKyAqIG9yaWdp biwgcHJvdmlkZWQgdGhleSBtYWludGFpbiBjb21taXQgb3JkZXIgYnkgYWxsb3dpbmcgb25seSBv bmUgcHJvY2VzcyB0bworICogY29tbWl0IGF0IGEgdGltZSkuIEZvciB0aGlzIGNhc2UgdGhlIGZp cnN0IHByb2Nlc3MgbXVzdCBwYXNzIGFjcXVpcmVkX2J5ID0KKyAqIDAsIGFuZCB0aGVuIHRoZSBv dGhlciBwcm9jZXNzZXMgc2hhcmluZyB0aGF0IHNhbWUgb3JpZ2luIGNhbiBwYXNzCisgKiBhY3F1 aXJlZF9ieSA9IFBJRCBvZiB0aGUgZmlyc3QgcHJvY2Vzcy4KICAqLwogdm9pZAotcmVwbG9yaWdp bl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCityZXBsb3JpZ2luX3Nlc3Npb25fc2V0 dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KQogewogCXN0YXRpYyBib29sIHJl Z2lzdGVyZWRfY2xlYW51cDsKIAlpbnQJCQlpOwpAQCAtMTEyMiw3ICsxMTMwLDcgQEAgcmVwbG9y aWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAJCWlmIChjdXJzdGF0ZS0+cm9p ZGVudCAhPSBub2RlKQogCQkJY29udGludWU7CiAKLQkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVp cmVkX2J5ICE9IDApCisJCWVsc2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAhPSAwICYmIGFj cXVpcmVkX2J5ID09IDApCiAJCXsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX0lOX1VTRSksCkBAIC0xMTUzLDcgKzExNjEsMTEgQEAgcmVwbG9yaWdpbl9z ZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAKIAlBc3NlcnQoc2Vzc2lvbl9yZXBsaWNh dGlvbl9zdGF0ZS0+cm9pZGVudCAhPSBJbnZhbGlkUmVwT3JpZ2luSWQpOwogCi0Jc2Vzc2lvbl9y ZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJaWYgKGFjcXVpcmVk X2J5ID09IDApCisJCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQ cm9jUGlkOworCWVsc2UgaWYgKHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5 ICE9IGFjcXVpcmVkX2J5KQorCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgcmVwbGljYXRp b24gc3RhdGUgc2xvdCBmb3IgcmVwbGljYXRpb24gb3JpZ2luIHdpdGggT0lEICV1IHdoaWNoIHdh cyBhY3F1aXJlZCBieSAlZCIsCisJCQkgbm9kZSwgYWNxdWlyZWRfYnkpOwogCiAJTFdMb2NrUmVs ZWFzZShSZXBsaWNhdGlvbk9yaWdpbkxvY2spOwogCkBAIC0xMzM3LDcgKzEzNDksNyBAQCBwZ19y ZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cChQR19GVU5DVElPTl9BUkdTKQogCiAJbmFt ZSA9IHRleHRfdG9fY3N0cmluZygodGV4dCAqKSBEYXR1bUdldFBvaW50ZXIoUEdfR0VUQVJHX0RB VFVNKDApKSk7CiAJb3JpZ2luID0gcmVwbG9yaWdpbl9ieV9uYW1lKG5hbWUsIGZhbHNlKTsKLQly ZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luKTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0 dXAob3JpZ2luLCAwKTsKIAogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW47CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBmNWYyYmMyNGQ4Li43 MjNiYTQ2NjliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3By b3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC0x MTY0LDEwICsxMTY0LDE0IEBAIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0lu Zm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIC8qCiAgKiBXcml0ZSBT VFJFQU0gQUJPUlQgdG8gdGhlIG91dHB1dCBzdHJlYW0uIE5vdGUgdGhhdCB4aWQgYW5kIHN1Ynhp ZCB3aWxsIGJlCiAgKiBzYW1lIGZvciB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGFib3J0Lgor ICoKKyAqIElmIHdyaXRlX2Fib3J0X2luZm8gaXMgdHJ1ZSwgc2VuZCB0aGUgYWJvcnRfbHNuIGFu ZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVyd2lzZSBkb24ndC4KICAqLwogdm9pZAogbG9n aWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQg eGlkLAotCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCisJCQkJCQkJICBUcmFuc2FjdGlv bklkIHN1YnhpZCwgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJICBUaW1lc3RhbXBUeiBh Ym9ydF90aW1lLCBib29sIHdyaXRlX2Fib3J0X2luZm8pCiB7CiAJcHFfc2VuZGJ5dGUob3V0LCBM T0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JUKTsKIApAQCAtMTE3NiwxOSArMTE4MCw0MCBAQCBs b2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25J ZCB4aWQsCiAJLyogdHJhbnNhY3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIob3V0LCB4aWQpOwog CXBxX3NlbmRpbnQzMihvdXQsIHN1YnhpZCk7CisKKwlpZiAod3JpdGVfYWJvcnRfaW5mbykKKwl7 CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFib3J0X2xzbik7CisJCXBxX3NlbmRpbnQ2NChvdXQsIGFi b3J0X3RpbWUpOworCX0KIH0KIAogLyoKICAqIFJlYWQgU1RSRUFNIEFCT1JUIGZyb20gdGhlIG91 dHB1dCBzdHJlYW0uCisgKgorICogSWYgcmVhZF9hYm9ydF9pbmZvIGlzIHRydWUsIHJlYWQgdGhl IGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAg Ki8KIHZvaWQKLWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJh bnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpCitsb2dpY2Fs cmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJIExvZ2ljYWxSZXBT dHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9pbmZv KQogewotCUFzc2VydCh4aWQgJiYgc3VieGlkKTsKKwlBc3NlcnQoYWJvcnRfZGF0YSk7CisKKwlh Ym9ydF9kYXRhLT54aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2RhdGEtPnN1Ynhp ZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CiAKLQkqeGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsK LQkqc3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlpZiAocmVhZF9hYm9ydF9pbmZvKQor CXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCQlhYm9y dF9kYXRhLT5hYm9ydF90aW1lID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCX0KKwllbHNlCisJewor CQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJYWJvcnRfZGF0 YS0+YWJvcnRfdGltZSA9IDA7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCBiNTY3YjhiNTllLi44ZDViYmFhZGIx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZm ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIu YwpAQCAtMjg3MCw3ICsyODcwLDggQEAgUmVvcmRlckJ1ZmZlckZpbmlzaFByZXBhcmVkKFJlb3Jk ZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKICAqIGRpc2suCiAgKi8KIHZvaWQKLVJl b3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFu c2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJICAgVGltZXN0YW1wVHogYWJvcnRf dGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47CiAKQEAgLTI4ODEsNiArMjg4Miw4IEBA IFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQs IFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJdHhuLT54 YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CisKIAkvKiBGb3Igc3RyZWFtZWQgdHJh bnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0LiAqLwogCWlm IChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDk0ZTgxM2FjNTMuLmRhZWVhNmNjMTQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMTQsNyArMTQsNyBA QAogICoJICBUaGUgaW5pdGlhbCBkYXRhIHN5bmNocm9uaXphdGlvbiBpcyBkb25lIHNlcGFyYXRl bHkgZm9yIGVhY2ggdGFibGUsCiAgKgkgIGluIGEgc2VwYXJhdGUgYXBwbHkgd29ya2VyIHRoYXQg b25seSBmZXRjaGVzIHRoZSBpbml0aWFsIHNuYXBzaG90IGRhdGEKICAqCSAgZnJvbSB0aGUgcHVi bGlzaGVyIGFuZCB0aGVuIHN5bmNocm9uaXplcyB0aGUgcG9zaXRpb24gaW4gdGhlIHN0cmVhbSB3 aXRoCi0gKgkgIHRoZSBtYWluIGFwcGx5IHdvcmtlci4KKyAqCSAgdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIuCiAgKgogICoJICBUaGVyZSBhcmUgc2V2ZXJhbCByZWFzb25zIGZvciBkb2luZyB0aGUg c3luY2hyb25pemF0aW9uIHRoaXMgd2F5OgogICoJICAgLSBJdCBhbGxvd3MgdXMgdG8gcGFyYWxs ZWxpemUgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24KQEAgLTE1Myw3ICsxNTMsNyBA QCBmaW5pc2hfc3luY193b3JrZXIodm9pZCkKIAkJCQkJZ2V0X3JlbF9uYW1lKE15TG9naWNhbFJl cFdvcmtlci0+cmVsaWQpKSkpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyog RmluZCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgYW5kIHNpZ25hbCBpdC4gKi8KKwkvKiBGaW5kIHRo ZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBzaWduYWwgaXQuICovCiAJbG9naWNhbHJlcF93b3Jr ZXJfd2FrZXVwKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIEludmFsaWRPaWQpOwogCiAJLyog U3RvcCBncmFjZWZ1bGx5ICovCkBAIC02MDksNyArNjA5LDggQEAgcHJvY2Vzc19zeW5jaW5nX3Rh Ymxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIAkJCQkJCQkJCQkJCSBNeVN1 YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5uYW1lLAogCQkJ CQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAotCQkJCQkJCQkJCQkJIHJzdGF0 ZS0+cmVsaWQpOworCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkgRFNN X0hBTkRMRV9JTlZBTElEKTsKIAkJCQkJCWhlbnRyeS0+bGFzdF9zdGFydF90aW1lID0gbm93Owog CQkJCQl9CiAJCQkJfQpAQCAtNjMwLDYgKzYzMSwxNCBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVz X2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogdm9pZAogcHJvY2Vzc19zeW5jaW5n X3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogeworCS8qCisJICogU2tpcCBmb3IgcGFy YWxsZWwgYXBwbHkgd29ya2VycyBiZWNhdXNlIHRoZXkgb25seSBvcGVyYXRlIG9uIHRhYmxlcyB0 aGF0CisJICogYXJlIGluIGEgUkVBRFkgc3RhdGUuIFNlZSBwYV9jYW5fc3RhcnQoKSBhbmQKKwkg KiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKCkuCisJICovCisJaWYgKGFtX3BhcmFsbGVs X2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigp KQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9zeW5jKGN1cnJlbnRfbHNuKTsKIAllbHNl CkBAIC0xMjQ3LDcgKzEyNTYsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0 ciAqb3JpZ2luX3N0YXJ0cG9zKQogCiAJLyoKIAkgKiBIZXJlIHdlIHVzZSB0aGUgc2xvdCBuYW1l IGluc3RlYWQgb2YgdGhlIHN1YnNjcmlwdGlvbiBuYW1lIGFzIHRoZQotCSAqIGFwcGxpY2F0aW9u X25hbWUsIHNvIHRoYXQgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG1haW4gYXBwbHkgd29ya2Vy LAorCSAqIGFwcGxpY2F0aW9uX25hbWUsIHNvIHRoYXQgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhl IGxlYWRlciBhcHBseSB3b3JrZXIsCiAJICogc28gdGhhdCBzeW5jaHJvbm91cyByZXBsaWNhdGlv biBjYW4gZGlzdGluZ3Vpc2ggdGhlbS4KIAkgKi8KIAlMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID0K QEAgLTEyOTUsNyArMTMwNCw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRy ICpvcmlnaW5fc3RhcnRwb3MpCiAJCSAqIHRpbWUgdGhpcyB0YWJsZXN5bmMgd2FzIGxhdW5jaGVk LgogCQkgKi8KIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwgZmFs c2UpOwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQlyZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu ID0gb3JpZ2luaWQ7CiAJCSpvcmlnaW5fc3RhcnRwb3MgPSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0 X3Byb2dyZXNzKGZhbHNlKTsKIApAQCAtMTQwNiw3ICsxNDE1LDcgQEAgTG9naWNhbFJlcFN5bmNU YWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJCQkJCSAgIHRydWUgLyog Z28gYmFja3dhcmQgKi8gLCB0cnVlIC8qIFdBTCBsb2cgKi8gKTsKIAkJVW5sb2NrUmVsYXRpb25P aWQoUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAotCQly ZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQlyZXBsb3JpZ2luX3Nlc3Npb25f c2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2lu aWQ7CiAJfQogCWVsc2UKQEAgLTE0NjEsOCArMTQ3MCw4IEBAIGNvcHlfdGFibGVfZG9uZToKIAlT cGluTG9ja1JlbGVhc2UoJk15TG9naWNhbFJlcFdvcmtlci0+cmVsbXV0ZXgpOwogCiAJLyoKLQkg KiBGaW5hbGx5LCB3YWl0IHVudGlsIHRoZSBtYWluIGFwcGx5IHdvcmtlciB0ZWxscyB1cyB0byBj YXRjaCB1cCBhbmQgdGhlbgotCSAqIHJldHVybiB0byBsZXQgTG9naWNhbFJlcEFwcGx5TG9vcCBk byBpdC4KKwkgKiBGaW5hbGx5LCB3YWl0IHVudGlsIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRl bGxzIHVzIHRvIGNhdGNoIHVwIGFuZAorCSAqIHRoZW4gcmV0dXJuIHRvIGxldCBMb2dpY2FsUmVw QXBwbHlMb29wIGRvIGl0LgogCSAqLwogCXdhaXRfZm9yX3dvcmtlcl9zdGF0ZV9jaGFuZ2UoU1VC UkVMX1NUQVRFX0NBVENIVVApOwogCXJldHVybiBzbG90bmFtZTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDk2NzcyZTRkNzMuLmE5ZjViNjY5MzQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjIsOCArMjIsMTIgQEAK ICAqIFNUUkVBTUVEIFRSQU5TQUNUSU9OUwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBT dHJlYW1lZCB0cmFuc2FjdGlvbnMgKGxhcmdlIHRyYW5zYWN0aW9ucyBleGNlZWRpbmcgYSBtZW1v cnkgbGltaXQgb24gdGhlCi0gKiB1cHN0cmVhbSkgYXJlIG5vdCBhcHBsaWVkIGltbWVkaWF0ZWx5 LCBidXQgaW5zdGVhZCwgdGhlIGRhdGEgaXMgd3JpdHRlbgotICogdG8gdGVtcG9yYXJ5IGZpbGVz IGFuZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcy4K KyAqIHVwc3RyZWFtKSBhcmUgYXBwbGllZCB1c2luZyBvbmUgb2YgdHdvIGFwcHJvYWNoZXM6Cisg KgorICogMSkgV3JpdGUgdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBseSB3aGVuIHRoZSBmaW5h bCBjb21taXQgYXJyaXZlcworICoKKyAqIFRoaXMgYXBwcm9hY2ggaXMgdXNlZCB3aGVuIHRoZSB1 c2VyIGhhcyBzZXQgdGhlIHN1YnNjcmlwdGlvbidzIHN0cmVhbWluZworICogb3B0aW9uIGFzIG9u LgogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAobm9uLXN0cmVhbWVkKSBjYXNlLCBoYW5kbGlu ZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAgKiB0byBoYW5kbGUgYWJvcnRzIG9mIGJvdGgg dGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTUw LDYgKzU0LDEyIEBACiAgKiB0aGUgZmlsZSB3ZSBkZXNpcmVkIGFjcm9zcyBtdWx0aXBsZSBzdHJl YW0tb3BlbiBjYWxscyBmb3IgdGhlIHNhbWUKICAqIHRyYW5zYWN0aW9uLgogICoKKyAqIDIpIFBh cmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgorICogVGhpcyBhcHByb2FjaCBpcyB1c2VkIHdoZW4g dGhlIHVzZXIgaGFzIHNldCB0aGUgc3Vic2NyaXB0aW9uJ3Mgc3RyZWFtaW5nCisgKiBvcHRpb24g YXMgcGFyYWxsZWwuIFNlZSBsb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBmb3IgaW5mb3Jt YXRpb24gYWJvdXQKKyAqIHRoaXMgYXBwcm9hY2guCisgKgogICogVFdPX1BIQVNFIFRSQU5TQUNU SU9OUwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVHdvIHBoYXNlIHRyYW5zYWN0aW9u cyBhcmUgcmVwbGF5ZWQgYXQgcHJlcGFyZSBhbmQgdGhlbiBjb21taXR0ZWQgb3IKQEAgLTE1MCw2 ICsxNjAsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRl ICJleGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5j bHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1 ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTIzMyw3 ICsyNDQsNTIgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJnCiAJY2hhcgkg ICAqb3JpZ2luX25hbWU7CiB9IEFwcGx5RXJyb3JDYWxsYmFja0FyZzsKIAotc3RhdGljIEFwcGx5 RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQorLyoKKyAqIFdoYXQg YWN0aW9uIHRvIHRha2UgZm9yIHRoZSB0cmFuc2FjdGlvbi4KKyAqCisgKiBUUkFOU19MRUFERVJf QVBQTFk6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciBhbmQgY2hhbmdlcyBvZiB0aGUKKyAqIHRyYW5zYWN0aW9uIGFyZSBhcHBsaWVk IGRpcmVjdGx5IGJ5IHRoZSB3b3JrZXIuCisgKgorICogVFJBTlNfTEVBREVSX1NFUklBTElaRToK KyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIG9yIHRhYmxlIHN5bmMKKyAqIHdvcmtlci4gQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1w b3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCB3aGVuIHRoZQorICogZmluYWwgY29tbWl0IGFy cml2ZXMuCisgKgorICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisgKiBUaGlzIGFj dGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgbmVl ZCB0byBzZW5kCisgKiB0aGUgY2hhbmdlcyB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor ICoKKyAqIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKyAqIFRoaXMgYWN0aW9uIG1l YW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBoYXZlIHNlbnQg c29tZQorICogY2hhbmdlcyBkaXJlY3RseSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFu ZCB0aGUgcmVtYWluaW5nIGNoYW5nZXMgYXJlCisgKiBzZXJpYWxpemVkIHRvIGEgZmlsZSwgZHVl IHRvIHRpbWVvdXQgd2hpbGUgc2VuZGluZyBkYXRhLiBUaGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdv cmtlciB3aWxsIGFwcGx5IHRoZXNlIHNlcmlhbGl6ZWQgY2hhbmdlcyB3aGVuIHRoZSBmaW5hbCBj b21taXQgYXJyaXZlcy4KKyAqCisgKiBXZSBjYW4ndCB1c2UgVFJBTlNfTEVBREVSX1NFUklBTEla RSBmb3IgdGhpcyBjYXNlIGJlY2F1c2UsIGluIGFkZGl0aW9uIHRvCisgKiBzZXJpYWxpemluZyBj aGFuZ2VzLCB0aGUgbGVhZGVyIHdvcmtlciBhbHNvIG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKyAq IFNUUkVBTV9YWFggbWVzc2FnZSB0byBhIGZpbGUsIGFuZCB3YWl0IGZvciB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIHRvCisgKiBmaW5pc2ggdGhlIHRyYW5zYWN0aW9uIHdoZW4gcHJvY2Vzc2lu ZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQuIFNvCisgKiB0aGlzIG5ldyBhY3Rpb24g d2FzIGludHJvZHVjZWQgdG8ga2VlcCB0aGUgY29kZSBhbmQgbG9naWMgY2xlYXIuCisgKgorICog VFJBTlNfUEFSQUxMRUxfQVBQTFk6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBp biB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZCBjaGFuZ2VzIG9mCisgKiB0aGUgdHJhbnNh Y3Rpb24gYXJlIGFwcGxpZWQgZGlyZWN0bHkgYnkgdGhlIHdvcmtlci4KKyAqLwordHlwZWRlZiBl bnVtCit7CisJLyogVGhlIGFjdGlvbiBmb3Igbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMuICov CisJVFJBTlNfTEVBREVSX0FQUExZLAorCisJLyogQWN0aW9ucyBmb3Igc3RyZWFtaW5nIHRyYW5z YWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfU0VSSUFMSVpFLAorCVRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMLAorCVRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRSwKKwlUUkFOU19Q QVJBTExFTF9BUFBMWQorfSBUcmFuc0FwcGx5QWN0aW9uOworCisvKiBlcnJjb250ZXh0IHRyYWNr ZXIgKi8KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQog ewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Myw3ICsyOTksOSBAQCBzdGF0 aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9y aWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2Fn ZUNvbnRleHQgPSBOVUxMOworRXJyb3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2NvbnRl eHRfc3RhY2sgPSBOVUxMOworCitNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBO VUxMOwogTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQgPSBOVUxMOwogCiAvKiBwZXIgc3RyZWFt IGNvbnRleHQgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgKi8KQEAgLTI2MiwxNyArMzIwLDI2 IEBAIHN0YXRpYyBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKIHN0YXRp YyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAorLyoK KyAqIFRoZSBudW1iZXIgb2YgY2hhbmdlcyBhcHBsaWVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBkdXJpbmcgb25lIHN0cmVhbWluZworICogYmxvY2suCisgKi8KK3N0YXRpYyB1aW50MzIgcGFy YWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKKwogLyoKICAqIFdlIGVuYWJsZSBza2lwcGluZyBh bGwgZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZvcgog ICogdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNoIExT TiBtYXRjaGVzIHRoZSBzdWJza2lwbHNuLgogICogT25jZSB3ZSBzdGFydCBza2lwcGluZyBjaGFu Z2VzLCB3ZSBkb24ndCBzdG9wIGl0IHVudGlsIHdlIHNraXAgYWxsIGNoYW5nZXMgb2YKICAqIHRo ZSB0cmFuc2FjdGlvbiBldmVuIGlmIHBnX3N1YnNjcmlwdGlvbiBpcyB1cGRhdGVkIGFuZCBNeVN1 YnNjcmlwdGlvbi0+c2tpcGxzbgotICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0 LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMsIHdlCi0gKiBkb24ndCBza2lw IHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRo ZXIgb3Igbm90CisgKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGlu IHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcyAoc3RyZWFtaW5nID0gb24pLAorICogd2UgZG9u J3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lk ZSB3aGV0aGVyIG9yIG5vdAogICogdG8gc2tpcCBhcHBseWluZyB0aGUgY2hhbmdlcyB3aGVuIHN0 YXJ0aW5nIHRvIGFwcGx5IGNoYW5nZXMuIFRoZSBzdWJza2lwbHNuIGlzCiAgKiBjbGVhcmVkIGFm dGVyIHN1Y2Nlc3NmdWxseSBza2lwcGluZyB0aGUgdHJhbnNhY3Rpb24gb3IgYXBwbHlpbmcgbm9u LWVtcHR5CiAgKiB0cmFuc2FjdGlvbi4gVGhlIGxhdHRlciBwcmV2ZW50cyB0aGUgbWlzdGFrZW5s eSBzcGVjaWZpZWQgc3Vic2tpcGxzbiBmcm9tCi0gKiBiZWluZyBsZWZ0LgorICogYmVpbmcgbGVm dC4gTm90ZSB0aGF0IHdlIGNhbm5vdCBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHdo ZW4gdXNpbmcKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0 IHRoZSBmaW5pc2ggTFNOIGJlZm9yZSBhcHBseWluZworICogdGhlIGNoYW5nZXMuIFNvLCB3ZSBk b24ndCBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hlbiBmaW5pc2ggTFNOIGlzIHNldAor ICogYnkgdGhlIHVzZXIuCiAgKi8KIHN0YXRpYyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hf bHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAo dW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAg LTMxMiwyMyArMzc5LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhbnVwX3N1YnhhY3RfaW5m byh2b2lkKTsKIC8qCiAgKiBTZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIGNoYW5nZXMgZm9yIGEg dG9wbGV2ZWwgdHJhbnNhY3Rpb24uCiAgKi8KLXN0YXRpYyB2b2lkIHN0cmVhbV9jbGVhbnVwX2Zp bGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogc3RhdGljIHZvaWQgc3RyZWFtX29w ZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCSBib29sIGZpcnN0 X3NlZ21lbnQpOwogc3RhdGljIHZvaWQgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwg U3RyaW5nSW5mbyBzKTsKK3N0YXRpYyB2b2lkIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2Uo VHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpOwogc3RhdGljIHZv aWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2so WExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSk7CiAKLXN0 YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7Ci0K LXN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7Ci0KIHN0YXRpYyB2 b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOwogCi0vKiBwcm90b3R5cGUgbmVl ZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwotc3RhdGljIHZvaWQgYXBwbHlfZGlzcGF0 Y2goU3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRl cm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3RhdGljIHZvaWQgYXBw bHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJ CQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLApAQCAtMzUyLDE5ICs0MTIsMzIgQEAgc3Rh dGljIHZvaWQgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICpl ZGF0YSwKIC8qIENvbXB1dGUgR0lEIGZvciB0d29fcGhhc2UgdHJhbnNhY3Rpb25zICovCiBzdGF0 aWMgdm9pZCBUd29QaGFzZVRyYW5zYWN0aW9uR2lkKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4 aWQsIGNoYXIgKmdpZCwgaW50IHN6Z2lkKTsKIAotLyogQ29tbW9uIHN0cmVhbWluZyBmdW5jdGlv biB0byBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVzc2FnZXMgKi8KLXN0YXRpYyB2b2lkIGFwcGx5 X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKLQog LyogRnVuY3Rpb25zIGZvciBza2lwcGluZyBjaGFuZ2VzICovCiBzdGF0aWMgdm9pZCBtYXliZV9z dGFydF9za2lwcGluZ19jaGFuZ2VzKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiBzdGF0aWMgdm9p ZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CiBzdGF0aWMgdm9pZCBjbGVhcl9zdWJzY3Jp cHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKTsKIAogLyogRnVuY3Rpb25zIGZv ciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3RhdGljIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJh Y2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiBzdGF0aWMgaW5saW5l IHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogCitzdGF0aWMgVHJh bnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQg eGlkLAorCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKTsKKwor LyoKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIu CisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2dldF93b3JrZXJfbmFtZSh2b2lkKQoreworCWlm IChhbV90YWJsZXN5bmNfd29ya2VyKCkpCisJCXJldHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0aW9u IHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIiKTsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9h cHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIF8oImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VyIik7CisJZWxzZQorCQlyZXR1cm4gXygibG9naWNhbCByZXBsaWNhdGlvbiBh cHBseSB3b3JrZXIiKTsKK30KKwogLyoKICAqIEZvcm0gdGhlIG9yaWdpbiBuYW1lIGZvciB0aGUg c3Vic2NyaXB0aW9uLgogICoKQEAgLTM5NCwxOSArNDY3LDQzIEBAIFJlcGxpY2F0aW9uT3JpZ2lu TmFtZUZvckxvZ2ljYWxSZXAoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogICoKICAqIFRoaXMgaXMg bWFpbmx5IG5lZWRlZCBmb3IgaW5pdGlhbCByZWxhdGlvbiBkYXRhIHN5bmMgYXMgdGhhdCBydW5z IGluCiAgKiBzZXBhcmF0ZSB3b3JrZXIgcHJvY2VzcyBydW5uaW5nIGluIHBhcmFsbGVsIGFuZCB3 ZSBuZWVkIHNvbWUgd2F5IHRvIHNraXAKLSAqIGNoYW5nZXMgY29taW5nIHRvIHRoZSBtYWluIGFw cGx5IHdvcmtlciBkdXJpbmcgdGhlIHN5bmMgb2YgYSB0YWJsZS4KKyAqIGNoYW5nZXMgY29taW5n IHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1cmluZyB0aGUgc3luYyBvZiBhIHRhYmxlLgog ICoKICAqIE5vdGUgd2UgbmVlZCB0byBkbyBzbWFsbGVyIG9yIGVxdWFscyBjb21wYXJpc29uIGZv ciBTWU5DRE9ORSBzdGF0ZSBiZWNhdXNlCiAgKiBpdCBtaWdodCBob2xkIHBvc2l0aW9uIG9mIGVu ZCBvZiBpbml0aWFsIHNsb3QgY29uc2lzdGVudCBwb2ludCBXQUwKICAqIHJlY29yZCArIDEgKGll IHN0YXJ0IG9mIG5leHQgcmVjb3JkKSBhbmQgbmV4dCByZWNvcmQgY2FuIGJlIENPTU1JVCBvZgog ICogdHJhbnNhY3Rpb24gd2UgYXJlIG5vdyBwcm9jZXNzaW5nICh3aGljaCBpcyB3aGF0IHdlIHNl dCByZW1vdGVfZmluYWxfbHNuCiAgKiB0byBpbiBhcHBseV9oYW5kbGVfYmVnaW4pLgorICoKKyAq IE5vdGUgdGhhdCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBs aWVkIGluIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLCB3ZSBkaXNhbGxvdyBhcHBseWlu ZyBjaGFuZ2VzIGlmIHRoZSB0YXJnZXQgdGFibGUgaW4gdGhlCisgKiBzdWJzY3JpcHRpb24gaXMg bm90IGluIHRoZSBSRUFEWSBzdGF0ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIg dG8KKyAqIGFwcGx5IHRoZSBjaGFuZ2UgYXMgd2Ugd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNu IGJ5IHRoYXQgdGltZS4KKyAqCisgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyBpbiBwYV9jYW5f c3RhcnQoKSBiZWZvcmUgYXNzaWduaW5nIHRoZQorICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRv IHRoZSBwYXJhbGxlbCB3b3JrZXIsIGJ1dCBpdCBhbHNvIG5lZWRzIHRvIGJlCisgKiBjaGVja2Vk IGhlcmUgYmVjYXVzZSBpZiB0aGUgdXNlciBleGVjdXRlcyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4u IFJFRlJFU0gKKyAqIFBVQkxJQ0FUSU9OIGluIHBhcmFsbGVsLCB0aGUgbmV3IHRhYmxlIGNhbiBi ZSBhZGRlZCB0byBwZ19zdWJzY3JpcHRpb25fcmVsCisgKiB3aGlsZSBhcHBseWluZyB0aGlzIHRy YW5zYWN0aW9uLgogICovCiBzdGF0aWMgYm9vbAogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3Jl bChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKIHsKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtl cigpKQogCQlyZXR1cm4gTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCA9PSByZWwtPmxvY2FscmVs b2lkOworCWVsc2UgaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJLyogV2Ug ZG9uJ3Qgc3luY2hyb25pemUgcmVsJ3MgdGhhdCBhcmUgaW4gdW5rbm93biBzdGF0ZS4gKi8KKwkJ aWYgKHJlbC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRFX1JFQURZICYmCisJCQlyZWwtPnN0YXRlICE9 IFNVQlJFTF9TVEFURV9VTktOT1dOKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2co ImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRp b24gXCIlc1wiIHdpbGwgc3RvcCIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJ CQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0 aW9ucyB1c2luZyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHVudGlsIGFsbCB0YWJsZXMgaGF2ZSBi ZWVuIHN5bmNocm9uaXplZC4iKSkpOworCisJCXJldHVybiByZWwtPnN0YXRlID09IFNVQlJFTF9T VEFURV9SRUFEWTsKKwl9CiAJZWxzZQogCQlyZXR1cm4gKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NU QVRFX1JFQURZIHx8CiAJCQkJKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1NZTkNET05FICYm CkBAIC00NTIsNDMgKzU0OSwxMTAgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAodm9pZCkKIH0KIAog LyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5kbGUgc3RyZWFtZWQg dHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUKKyAq IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgorICogSW4gdGhlIHN0cmVhbWluZyBjYXNlIChy ZWNlaXZpbmcgYSBibG9jayBvZiB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24pLCBmb3IKKyAqIHNl cmlhbGl6ZSBtb2RlLCBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVy IHRvcGxldmVsCisgKiB0cmFuc2FjdGlvbiwgYW5kIGZvciBwYXJhbGxlbCBtb2RlLCB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQgdGhlCisgKiBjaGFuZ2VzIHRvIHBhcmFsbGVsIGFw cGx5IHdvcmtlcnMgYW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBkZWZpbmUKKyAq IHNhdmVwb2ludHMgaWYgbmVlZGVkLiAoTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lD QUxfUkVQX01TR19UWVBFCisgKiBtZXNzYWdlcyB3aWxsIGJlIGFwcGxpZWQgYnkgYm90aCBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseQorICogd29ya2VycykuCiAgKgotICog SWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5z YWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9w ZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRy YW5zYWN0aW9ucyAod2hlbiB0aGUgY2hhbmdlIGlzIGVpdGhlciBzZXJpYWxpemVkCisgKiB0byBm aWxlIG9yIHNlbnQgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2VyKSwgZmFsc2Ugb3RoZXJ3aXNlIChy ZWd1bGFyIG1vZGUgb3IKKyAqIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIpLgogICoKLSAqIFJldHVybnMgdHJ1ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25z LCBmYWxzZSBvdGhlcndpc2UgKHJlZ3VsYXIgbW9kZSkuCisgKiBFeGNlcHRpb246IElmIHRoZSBt ZXNzYWdlIGJlaW5nIHByb2Nlc3NlZCBpcyBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04KKyAqIG9y IExPR0lDQUxfUkVQX01TR19UWVBFLCByZXR1cm4gZmFsc2UgZXZlbiBpZiB0aGUgbWVzc2FnZSBu ZWVkcyB0byBiZSBzZW50CisgKiB0byBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwogc3Rh dGljIGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBh Y3Rpb24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlv bklkIGN1cnJlbnRfeGlkOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFu c0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2c7 CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94 aWQsICZ3aW5mbyk7CiAKIAkvKiBub3QgaW4gc3RyZWFtaW5nIG1vZGUgKi8KLQlpZiAoIWluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChhcHBseV9hY3Rpb24gPT0gVFJBTlNfTEVBREVSX0FQ UExZKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCUFz c2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAKKwkvKgorCSAqIFRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgbmVlZHMgdGhlIHhpZCBpbiB0aGlzIG1lc3NhZ2UgdG8gZGVj aWRlCisJICogd2hldGhlciB0byBkZWZpbmUgYSBzYXZlcG9pbnQsIHNvIHNhdmUgdGhlIG9yaWdp bmFsIG1lc3NhZ2UgdGhhdCBoYXMgbm90CisJICogbW92ZWQgdGhlIGN1cnNvciBhZnRlciB0aGUg eGlkLiBXZSB3aWxsIHNlcmlhbGl6ZSB0aGlzIG1lc3NhZ2UgdG8gYSBmaWxlCisJICogaW4gUEFS VElBTF9TRVJJQUxJWkUgbW9kZS4KKwkgKi8KKwlvcmlnaW5hbF9tc2cgPSAqczsKKwogCS8qCiAJ ICogV2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJz dCBwYXJ0IG9mIHRoZQogCSAqIG1lc3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICovCi0JeGlkID0g cHFfZ2V0bXNnaW50KHMsIDQpOworCWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwog Ci0JaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCWlmICghVHJhbnNhY3Rpb25JZElz VmFsaWQoY3VycmVudF94aWQpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNP REVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJpbnZhbGlkIHRy YW5zYWN0aW9uIElEIGluIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIikpKTsKIAot CS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVy ZSkuICovCi0Jc3VieGFjdF9pbmZvX2FkZCh4aWQpOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQor CXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHN0cmVhbV9mZCk7 CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJlYW1f d3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRo ZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAqLworCQkJc3VieGFjdF9pbmZvX2FkZChj dXJyZW50X3hpZCk7CisKKwkJCS8qIFdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmls ZSAqLworCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQkJcmV0dXJuIHRydWU7 CiAKLQlyZXR1cm4gdHJ1ZTsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoK KwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBYWFggVGhlIHB1Ymxpc2hlciBzaWRl IGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKKwkJCSAqIG1lc3NhZ2Vz IGFmdGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBkYXRlIHRoZQorCQkJ ICogcmVsYXRpb24vdHlwZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLiBTZWUgZnVuY3Rpb24KKwkJ CSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCQkgKi8KKwkJCWlmIChwYV9zZW5kX2RhdGEo d2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQkJcmV0dXJuIChhY3Rpb24gIT0gTE9HSUNBTF9S RVBfTVNHX1JFTEFUSU9OICYmCisJCQkJCQlhY3Rpb24gIT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUp OworCisJCQkvKgorCQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGlsZSBzZW5kaW5nIHRoaXMg Y2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2UgbmVlZCB0byBzd2l0Y2gg dG8gc2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3Nlcmlh bGl6ZSh3aW5mbywgZmFsc2UpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFO U19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlv biwgJm9yaWdpbmFsX21zZyk7CisKKwkJCS8qIFNhbWUgcmVhc29uIGFzIFRSQU5TX0xFQURFUl9T RU5EX1RPX1BBUkFMTEVMIGNhc2UuICovCisJCQlyZXR1cm4gKGFjdGlvbiAhPSBMT0dJQ0FMX1JF UF9NU0dfUkVMQVRJT04gJiYKKwkJCQkJYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19UWVBFKTsK KworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFu Z2VzICs9IDE7CisKKwkJCS8qIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGlmIG5l ZWRlZC4gKi8KKwkJCXBhX3N0YXJ0X3N1YnRyYW5zKGN1cnJlbnRfeGlkLCBzdHJlYW1feGlkKTsK KwkJCXJldHVybiBmYWxzZTsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCXJl dHVybiBmYWxzZTsJCS8qIHNpbGVuY2UgY29tcGlsZXIgd2FybmluZyAqLworCX0KIH0KIAogLyoK QEAgLTkyNiw4ICsxMDkwLDExIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKExvZ2lj YWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkgKiBCZWdpblRyYW5zYWN0aW9u QmxvY2sgaXMgbmVjZXNzYXJ5IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKIAkg KiBjYWxsZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBiZWxvdy4KIAkgKi8K LQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsg LyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KKwlpZiAoIUlzVHJh bnNhY3Rpb25CbG9jaygpKQorCXsKKwkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBj b21tYW5kLiAqLworCX0KIAogCS8qCiAJICogVXBkYXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4g cmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0IHBvc2l0aW9uCkBAIC05NzQsNyArMTE0MSw3 IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hf cG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHBy ZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAKIAlpbl9yZW1vdGVfdHJh bnNhY3Rpb24gPSBmYWxzZTsKIApAQCAtOTk2LDYgKzExNjMsMTIgQEAgYXBwbHlfaGFuZGxlX3By ZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEgQ09NTUlUIFBSRVBBUkVEIG9m IGEgcHJldmlvdXNseSBQUkVQQVJFRCB0cmFuc2FjdGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgd2Ug ZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBp biBhCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJl YWR5IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUKKyAqIHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVf c3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVuc3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25z IGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28g bm8KKyAqIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb24gY2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5z YWN0aW9uIGRlcGVuZGVuY3kgaXNzdWVzLgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxl X2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCkBAIC0xMDI1LDcgKzExOTgsNyBAQCBhcHBs eV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hf cG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHBy ZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3RyYW5z YWN0aW9uID0gZmFsc2U7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcg c3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwpAQCAtMTAzOSw2ICsxMjEyLDEyIEBAIGFwcGx5 X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIGEg Uk9MTEJBQ0sgUFJFUEFSRUQgb2YgYSBwcmV2aW91c2x5IFBSRVBBUkVEIFRSQU5TQUNUSU9OLgor ICoKKyAqIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQgaGVyZSBpZiB0aGUgdHJhbnNh Y3Rpb24gd2FzIHByZXBhcmVkIGluIGEKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSW4gdGhh dCBjYXNlLCB3ZSBoYXZlIGFscmVhZHkgd2FpdGVkIGZvciB0aGUgcHJlcGFyZQorICogdG8gZmlu aXNoIGluIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZSgpIHdoaWNoIHdpbGwgZW5zdXJlIGFs bCB0aGUKKyAqIG9wZXJhdGlvbnMgaW4gdGhhdCB0cmFuc2FjdGlvbiBoYXZlIGhhcHBlbmVkIGlu IHRoZSBzdWJzY3JpYmVyLCBzbyBubworICogY29uY3VycmVudCB0cmFuc2FjdGlvbiBjYW4gY2F1 c2UgZGVhZGxvY2sgb3IgdHJhbnNhY3Rpb24gZGVwZW5kZW5jeSBpc3N1ZXMuCiAgKi8KIHN0YXRp YyB2b2lkCiBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAt MTA4MCw3ICsxMjU5LDcgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0lu Zm8gcykKIAogCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQlzdG9yZV9mbHVzaF9wb3Np dGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24pOworCXN0b3JlX2ZsdXNoX3Bvc2l0 aW9uKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwog CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVz IHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTEwOTIsMTUg KzEyNzEsMTYgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykK IAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJFUEFSRS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28g cGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1h cmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkCiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9o YW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJl ZFR4bkRhdGEgcHJlcGFyZV9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsK KwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2Ug YmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9 ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApA QCAtMTExNiwyNCArMTI5Niw5NiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5n SW5mbyBzKQogCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJlcGFyZV9kYXRh KTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHByZXBhcmVfZGF0YS54aWQsIHByZXBh cmVfZGF0YS5wcmVwYXJlX2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUg Zm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7CisJYXBwbHlf YWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihwcmVwYXJlX2RhdGEueGlkLCAm d2luZm8pOwogCi0JLyogUmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zLiAqLwotCWFw cGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBh cmVfbHNuKTsKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVS X1NFUklBTElaRToKIAotCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwot CWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCQkJLyoKKwkJ CSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxh eSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nw b29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwKKwkJCQkJ CQkJICAgcHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMg cHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9k YXRhKTsKIAotCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKIAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNu KTsKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFz dENvbW1pdEVuZCk7CiAKLQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJCWluX3Jl bW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGgg c2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51 cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJ CWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3Nl cnQod2luZm8pOwogCi0JLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdl cyBhbmQgc3VieGFjdCBpbmZvLiAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCQkJaWYgKHBhX3NlbmRfZGF0YSh3 aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJCQkvKiBGaW5pc2ggcHJvY2Vzc2luZyB0 aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAqLworCQkJCXBhX3hhY3RfZmluaXNoKHdpbmZvLCBw cmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJ dCBpcyBwb3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRpbmcgdGhpcyBjaGFuZ2UgdG8gcGFyYWxsZWwg YXBwbHkKKwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRvIHN3aXRjaCB0byBzZXJpYWxpemUgbW9kZS4K KwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsK KworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VS SUFMSVpFOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2No YW5nZShwcmVwYXJlX2RhdGEueGlkLAorCQkJCQkJCQkJCSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFN X1BSRVBBUkUsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlwYV9zZXRfZmlsZXNl dF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisKKwkJCS8qIEZpbmlz aCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQlwYV94YWN0X2Zp bmlzaCh3aW5mbywgcHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBU UkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaXMgYXBwbHlpbmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9zZSB0 aGUgZmlsZSBiZWZvcmUgcHJlcGFyaW5nLgorCQkJICovCisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJ CXN0cmVhbV9jbG9zZV9maWxlKCk7CisKKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwor CQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5k bGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKworCQkJZW5kX3JlcGxpY2F0aW9u X3N0ZXAoKTsKKworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCU15UGFyYWxs ZWxTaGFyZWQtPmxhc3RfY29tbWl0X2VuZCA9IFhhY3RMYXN0Q29tbWl0RW5kOworCisJCQlwYV9z ZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7 CisJCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKTsKKworCQkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQkJZWxvZyhERUJV RzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gUFJFUEFSRSBjb21tYW5kIik7CisJ CQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0K KworCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMg dGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3lu Y2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE3MCw2ICsxNDIyLDQ3IEBA IGFwcGx5X2hhbmRsZV9vcmlnaW4oU3RyaW5nSW5mbyBzKQogCQkJCSBlcnJtc2dfaW50ZXJuYWwo Ik9SSUdJTiBtZXNzYWdlIHNlbnQgb3V0IG9mIG9yZGVyIikpKTsKIH0KIAorLyoKKyAqIEluaXRp YWxpemUgZmlsZXNldCAoaWYgbm90IGFscmVhZHkgZG9uZSkuCisgKgorICogQ3JlYXRlIGEgbmV3 IGZpbGUgd2hlbiBmaXJzdF9zZWdtZW50IGlzIHRydWUsIG90aGVyd2lzZSBvcGVuIHRoZSBleGlz dGluZworICogZmlsZS4KKyAqLwordm9pZAorc3RyZWFtX3N0YXJ0X2ludGVybmFsKFRyYW5zYWN0 aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCit7CisJYmVnaW5fcmVwbGljYXRpb25fc3Rl cCgpOworCisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBp ZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsIGJlCisJICogdXNlZCBmb3IgdGhlIGVudGlyZSBk dXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAorCSAqIGNv bnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdl IGZyb20gYW55CisJICogdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBv dGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLgorCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEg ZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAorCSAqIHRoZW4g d2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCSAqLworCWlmICgh TXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkKKwl7CisJCU1lbW9yeUNvbnRleHQg b2xkY3R4OworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQp OworCisJCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9m KEZpbGVTZXQpKTsKKwkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldCk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCisJLyogT3Bl biB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwlzdHJlYW1fb3Blbl9m aWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkv KiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0 IGZpbGUuICovCisJaWYgKCFmaXJzdF9zZWdtZW50KQorCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsK K30KKwogLyoKICAqIEhhbmRsZSBTVFJFQU0gU1RBUlQgbWVzc2FnZS4KICAqLwpAQCAtMTE3Nywy MSArMTQ3MCwxNyBAQCBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJp bmdJbmZvIHMpCiB7CiAJYm9vbAkJZmlyc3Rfc2VnbWVudDsKKwlQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkvKiBTYXZl IHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBv cmlnaW5hbF9tc2cgPSAqczsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJ CQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdlIikpKTsK IAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJh bnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNz IGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0Ci0JICogd2lsbCBiZSBj b21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZQot CSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFs aXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KLQkgKi8KLQli ZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0KIAkvKiBub3RpZnkgaGFuZGxlIG1ldGhvZHMgd2Un cmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2FjdGlvbiAqLwogCWluX3N0cmVhbWVkX3RyYW5z YWN0aW9uID0gdHJ1ZTsKIApAQCAtMTIwNSw5NiArMTQ5NCwyMzcgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAotCS8qCi0JICogSW5pdGlhbGl6ZSB0 aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbCBi ZQotCSAqIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVh dGUgaXQgaW4gYSBwZXJtYW5lbnQKLQkgKiBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUg dmVyeSBmaXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBmcm9tIGFueQotCSAqIHRyYW5zYWN0aW9uIGFu ZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4K LQkgKiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3 b3JrZXIgYXMgd2VsbCBidXQKLQkgKiB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3aWxs IGV2ZXIgYmUgdXNlZC4KLQkgKi8KLQlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldCA9PSBOVUxMKQorCS8qIFRyeSB0byBhbGxvY2F0ZSBhIHdvcmtlciBmb3IgdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbi4gKi8KKwlpZiAoZmlyc3Rfc2VnbWVudCkKKwkJcGFfYWxsb2NhdGVf d29ya2VyKHN0cmVhbV94aWQpOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2Fw cGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rpb24p CiAJewotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFM SVpFOgogCi0JCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwor CQkJLyoKKwkJCSAqIEZ1bmN0aW9uIHN0cmVhbV9zdGFydF9pbnRlcm5hbCBzdGFydHMgYSB0cmFu c2FjdGlvbi4gVGhpcworCQkJICogdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQgb24gdGhl IHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhCisJCQkgKiB0YWJsZXN5bmMgd29ya2VyIGluIHdo aWNoIGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIKKwkJCSAqIHByb2Nlc3NpbmcgYWxs IHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGlzIHRyYW5zYWN0aW9uIGZvcgorCQkJICogaGFuZGxp bmcgdGhlIEJ1ZkZpbGUsIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YQor CQkJICogYW5kIHN1YnhhY3QgaW5mby4KKwkJCSAqLworCQkJc3RyZWFtX3N0YXJ0X2ludGVybmFs KHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQkJYnJlYWs7CiAKLQkJTXlMb2dpY2FsUmVw V29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQlGaWxl U2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJY2FzZSBUUkFO U19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CiAKLQkJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7Ci0JfQorCQkJLyoKKwkJCSAqIE9uY2Ugd2Ugc3RhcnQg c2VyaWFsaXppbmcgdGhlIGNoYW5nZXMsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKKwkJCSAq IHdpbGwgd2FpdCBmb3IgdGhlIGxlYWRlciB0byByZWxlYXNlIHRoZSBzdHJlYW0gbG9jayB1bnRp bCB0aGUKKwkJCSAqIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uIFNvLCB3ZSBkb24ndCBuZWVkIHRv IHJlbGVhc2UgdGhlIGxvY2sgb3IKKwkJCSAqIGluY3JlbWVudCB0aGUgc3RyZWFtIGNvdW50IGlu IHRoYXQgY2FzZS4KKwkJCSAqLworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBz LT5kYXRhKSkKKwkJCXsKKwkJCQkvKgorCQkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBs b2NrIHNvIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5CisJCQkJICogd29ya2VyIGNhbiBjb250aW51 ZSB0byByZWNlaXZlIGNoYW5nZXMuCisJCQkJICovCisJCQkJaWYgKCFmaXJzdF9zZWdtZW50KQor CQkJCQlwYV91bmxvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZl TG9jayk7CiAKLQkvKiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICov Ci0Jc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlk LCBmaXJzdF9zZWdtZW50KTsKKwkJCQkvKgorCQkJCSAqIEluY3JlbWVudCB0aGUgbnVtYmVyIG9m IHN0cmVhbWluZyBibG9ja3Mgd2FpdGluZyB0byBiZQorCQkJCSAqIHByb2Nlc3NlZCBieSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisJCQkJICovCisJCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91MzIo JndpbmZvLT5zaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2NvdW50LCAxKTsKIAotCS8qIGlmIHRoaXMg aXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZSAqLwot CWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV9zZXRfc3RyZWFtX2FwcGx5 X3dvcmtlcih3aW5mbyk7CisJCQkJYnJlYWs7CisJCQl9CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRo YXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICogd29y a2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlwYV9z d2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2luZm8sICFmaXJzdF9zZWdtZW50KTsKIAotCWVu ZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFO U19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgor CQkJICogT3BlbiB0aGUgc3Bvb2wgZmlsZSB1bmxlc3MgaXQgd2FzIGFscmVhZHkgb3BlbmVkIHdo ZW4gc3dpdGNoaW5nCisJCQkgKiB0byBzZXJpYWxpemUgbW9kZS4gVGhlIHRyYW5zYWN0aW9uIHN0 YXJ0ZWQgaW4KKwkJCSAqIHN0cmVhbV9zdGFydF9pbnRlcm5hbCB3aWxsIGJlIGNvbW1pdHRlZCBv biB0aGUgc3RyZWFtIHN0b3AuCisJCQkgKi8KKwkJCWlmIChhcHBseV9hY3Rpb24gIT0gVFJBTlNf TEVBREVSX1NFTkRfVE9fUEFSQUxMRUwpCisJCQkJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHN0cmVh bV94aWQsIGZpcnN0X3NlZ21lbnQpOworCisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKExPR0lDQUxf UkVQX01TR19TVFJFQU1fU1RBUlQsICZvcmlnaW5hbF9tc2cpOworCisJCQkvKiBDYWNoZSB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfc2V0 X3N0cmVhbV9hcHBseV93b3JrZXIod2luZm8pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19Q QVJBTExFTF9BUFBMWToKKwkJCWlmIChmaXJzdF9zZWdtZW50KQorCQkJeworCQkJCS8qIEhvbGQg dGhlIGxvY2sgdW50aWwgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uICovCisJCQkJcGFfbG9j a190cmFuc2FjdGlvbihNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sp OworCQkJCXBhX3NldF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5T X1NUQVJURUQpOworCQkJfQorCisJCQlwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgPSAwOworCQkJ YnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CisK KwlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOwogfQogCiAvKgot ICogSGFuZGxlIFNUUkVBTSBTVE9QIG1lc3NhZ2UuCisgKiBVcGRhdGUgdGhlIGluZm9ybWF0aW9u IGFib3V0IHN1YnhhY3RzIGFuZCBjbG9zZSB0aGUgZmlsZS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9u IHNob3VsZCBiZSBjYWxsZWQgd2hlbiB0aGUgc3RyZWFtX3N0YXJ0X2ludGVybmFsIGZ1bmN0aW9u IGhhcworICogYmVlbiBjYWxsZWQuCiAgKi8KLXN0YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVfc3Ry ZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQordm9pZAorc3RyZWFtX3N0b3BfaW50ZXJuYWwoVHJhbnNh Y3Rpb25JZCB4aWQpCiB7Ci0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKLQkJZXJlcG9y dChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJ IGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVEFS VCIpKSk7Ci0KIAkvKgotCSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2VyaWFsaXplZCBjaGFuZ2Vz LCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uIGFib3V0Ci0JICogc3VieGFjdHMgZm9yIHRoZSB0 b3BsZXZlbCB0cmFuc2FjdGlvbi4KKwkgKiBTZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQgc3Vi eGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiwgdGhlbgorCSAqIGNsb3NlIHRoZSBz dHJlYW0gbWVzc2FnZXMgc3Bvb2wgZmlsZS4KIAkgKi8KLQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJc3VieGFjdF9pbmZvX3dyaXRl KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CiAJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsK IAotCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwogCUFzc2Vy dChJc1RyYW5zYWN0aW9uU3RhdGUoKSk7CiAKIAkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJh bnNhY3Rpb24gKi8KIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCWluX3N0cmVhbWVk X3RyYW5zYWN0aW9uID0gZmFsc2U7Ci0KIAkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8K IAlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOwotCi0JcGdzdGF0 X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKLQlyZXNldF9hcHBseV9lcnJvcl9j b250ZXh0X2luZm8oKTsKIH0KIAogLyoKLSAqIEhhbmRsZSBTVFJFQU0gYWJvcnQgbWVzc2FnZS4K KyAqIEhhbmRsZSBTVFJFQU0gU1RPUCBtZXNzYWdlLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlf aGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCithcHBseV9oYW5kbGVfc3RyZWFtX3N0 b3AoU3RyaW5nSW5mbyBzKQogewotCVRyYW5zYWN0aW9uSWQgeGlkOwotCVRyYW5zYWN0aW9uSWQg c3VieGlkOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0 aW9uIGFwcGx5X2FjdGlvbjsKIAotCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAo IWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2Rl KEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJF QU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKwkJCQkgZXJybXNnX2lu dGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikpKTsKKwor CWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwg JndpbmZvKTsKKworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFE RVJfU0VSSUFMSVpFOgorCQkJc3RyZWFtX3N0b3BfaW50ZXJuYWwoc3RyZWFtX3hpZCk7CisJCQli cmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0 KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIExvY2sgYmVmb3JlIHNlbmRpbmcgdGhlIFNUUkVBTV9T VE9QIG1lc3NhZ2Ugc28gdGhhdCB0aGUgbGVhZGVyCisJCQkgKiBjYW4gaG9sZCB0aGUgbG9jayBm aXJzdCBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQKKwkJCSAqIGZvciBs ZWFkZXIgdG8gcmVsZWFzZSB0aGUgbG9jay4gU2VlIExvY2tpbmcgQ29uc2lkZXJhdGlvbnMgYXRv cAorCQkJICogYXBwbHlwYXJhbGxlbHdvcmtlci5jLgorCQkJICovCisJCQlwYV9sb2NrX3N0cmVh bSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQlpZiAocGFf c2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCXBhX3NldF9zdHJl YW1fYXBwbHlfd29ya2VyKE5VTEwpOworCQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICog SXQgaXMgcG9zc2libGUgdGhhdCB3aGlsZSBzZW5kaW5nIHRoaXMgY2hhbmdlIHRvIHBhcmFsbGVs IGFwcGx5CisJCQkgKiB3b3JrZXIgd2UgbmVlZCB0byBzd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUu CisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgdHJ1ZSk7 CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NF UklBTElaRToKKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9T VE9QLCBzKTsKKwkJCXN0cmVhbV9zdG9wX2ludGVybmFsKHN0cmVhbV94aWQpOworCQkJcGFfc2V0 X3N0cmVhbV9hcHBseV93b3JrZXIoTlVMTCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BB UkFMTEVMX0FQUExZOgorCQkJZWxvZyhERUJVRzEsICJhcHBsaWVkICV1IGNoYW5nZXMgaW4gdGhl IHN0cmVhbWluZyBjaHVuayIsCisJCQkJIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyk7CisKKwkJ CS8qCisJCQkgKiBCeSB0aGUgdGltZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgcHJvY2Vzc2lu ZyB0aGUgY2hhbmdlcyBpbgorCQkJICogdGhlIGN1cnJlbnQgc3RyZWFtaW5nIGJsb2NrLCB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlciBtYXkgaGF2ZQorCQkJICogc2VudCBtdWx0aXBsZSBzdHJlYW1p bmcgYmxvY2tzLiBUaGlzIGNhbiBsZWFkIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIg c3RhcnQgd2FpdGluZyBldmVuIHdoZW4gdGhlcmUgYXJlIG1vcmUgY2h1bmsgb2Ygc3RyZWFtcwor CQkJICogaW4gdGhlIHF1ZXVlLiBTbywgdHJ5IHRvIGxvY2sgb25seSBpZiB0aGVyZSBpcyBubyBt ZXNzYWdlIGxlZnQKKwkJCSAqIGluIHRoZSBxdWV1ZS4gU2VlIExvY2tpbmcgQ29uc2lkZXJhdGlv bnMgYXRvcAorCQkJICogYXBwbHlwYXJhbGxlbHdvcmtlci5jLgorCQkJICoKKwkJCSAqIE5vdGUg dGhhdCBoZXJlIHdlIGhhdmUgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB3ZSBjYW4gc3RhcnQKKwkJ CSAqIHdhaXRpbmcgZXZlbiB3aGVuIHRoZXJlIGFyZSBwZW5kaW5nIHN0cmVhbWluZyBjaHVua3Mu IFRoaXMgY2FuCisJCQkgKiBoYXBwZW4gaWYgdGhlIGxlYWRlciBzZW5kcyBhbm90aGVyIHN0cmVh bWluZyBibG9jayBhbmQgYWNxdWlyZXMKKwkJCSAqIHRoZSBzdHJlYW0gbG9jayBhZ2FpbiBhZnRl ciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNoZWNrcworCQkJICogdGhhdCB0aGVyZSBpcyBu byBwZW5kaW5nIHN0cmVhbWluZyBibG9jayBhbmQgYmVmb3JlIGl0IGFjdHVhbGx5CisJCQkgKiBz dGFydHMgd2FpdGluZyBvbiBhIGxvY2suIFdlIGNhbiBoYW5kbGUgdGhpcyBjYXNlIGJ5IG5vdAor CQkJICogYWxsb3dpbmcgdGhlIGxlYWRlciB0byBpbmNyZW1lbnQgdGhlIHN0cmVhbSBibG9jayBj b3VudCBkdXJpbmcKKwkJCSAqIHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhY3F1aXJl cyB0aGUgbG9jayBidXQgaXQgaXMgbm90CisJCQkgKiBjbGVhciB3aGV0aGVyIHRoYXQgaXMgd29y dGggdGhlIGNvbXBsZXhpdHkuCisJCQkgKgorCQkJICogTm93LCBpZiB0aGlzIG1pc3NlZCBjaHVu ayBjb250YWlucyByb2xsYmFjayB0byBzYXZlcG9pbnQsIHRoZW4KKwkJCSAqIHRoZXJlIGlzIGEg cmlzayBvZiBkZWFkbG9jayB3aGljaCBwcm9iYWJseSBzaG91bGRuJ3QgaGFwcGVuCisJCQkgKiBh ZnRlciByZXN0YXJ0LgorCQkJICovCisJCQlwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jaygp OworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsK Kwl9CiAKLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4aWQsICZzdWJ4aWQpOwor CWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKgorCSAqIFRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgY291bGQgYmUgaW4gYSB0cmFuc2FjdGlvbiBpbiB3aGljaCBjYXNlIHdl CisJICogbmVlZCB0byByZXBvcnQgdGhlIHN0YXRlIGFzIFNUQVRFX0lETEVJTlRSQU5TQUNUSU9O LgorCSAqLworCWlmIChJc1RyYW5zYWN0aW9uT3JUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXBnc3Rh dF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCWVsc2UK KwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKworCXJlc2V0X2Fw cGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOworfQorCisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9S VCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0aW9uIHdhcyBzZXJpYWxpemVkIHRvIGZpbGUuCisg Ki8KK3N0YXRpYyB2b2lkCitzdHJlYW1fYWJvcnRfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQs IFRyYW5zYWN0aW9uSWQgc3VieGlkKQorewogCS8qCiAJICogSWYgdGhlIHR3byBYSURzIGFyZSB0 aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCiAJICoganVz dCBkZWxldGUgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBpbmZvLgogCSAqLwogCWlmICh4aWQg PT0gc3VieGlkKQotCXsKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdCh4aWQsIEludmFs aWRYTG9nUmVjUHRyKTsKIAkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgeGlkKTsKLQl9CiAJZWxzZQogCXsKIAkJLyoKQEAgLTEzMTgsOCArMTc0OCw2IEBA IGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQlib29sCQlmb3VuZCA9 IGZhbHNlOwogCQljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAKLQkJc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfeGFjdChzdWJ4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKLQogCQlzdWJpZHggPSAtMTsK IAkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwogCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwpAQCAtMTM0NCw3ICsxNzcyLDYgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQljbGVhbnVwX3N1YnhhY3RfaW5mbygp OwogCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOwotCQkJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiAJCQlyZXR1cm47CiAJ CX0KIApAQCAtMTM1OCwzMyArMTc4NSwyMTEgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChT dHJpbmdJbmZvIHMpCiAJCQkJCQkJICAgc3VieGFjdF9kYXRhLnN1YnhhY3RzW3N1YmlkeF0ub2Zm c2V0KTsKIAkJQnVmRmlsZUNsb3NlKGZkKTsKIAotCQkvKiBkaXNjYXJkIHRoZSBzdWJ4YWN0cyBh ZGRlZCBsYXRlciAqLwotCQlzdWJ4YWN0X2RhdGEubnN1YnhhY3RzID0gc3ViaWR4OworCQkvKiBk aXNjYXJkIHRoZSBzdWJ4YWN0cyBhZGRlZCBsYXRlciAqLworCQlzdWJ4YWN0X2RhdGEubnN1Ynhh Y3RzID0gc3ViaWR4OworCisJCS8qIHdyaXRlIHRoZSB1cGRhdGVkIHN1YnhhY3QgbGlzdCAqLwor CQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKKwor CQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK Kwl9Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0YXRp YyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3sKKwlUcmFu c2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2FsUmVwU3RyZWFt QWJvcnREYXRhIGFib3J0X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwor CVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBi ZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0g KnM7CisJYm9vbAkJdG9wbGV2ZWxfeGFjdDsKKworCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlv bikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xB VElPTiksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91 dCBTVFJFQU0gU1RPUCIpKSk7CisKKwkvKiBXZSByZWNlaXZlIGFib3J0IGluZm9ybWF0aW9uIG9u bHkgd2hlbiB3ZSBjYW4gYXBwbHkgaW4gcGFyYWxsZWwuICovCisJbG9naWNhbHJlcF9yZWFkX3N0 cmVhbV9hYm9ydChzLCAmYWJvcnRfZGF0YSwKKwkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+ cGFyYWxsZWxfYXBwbHkpOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7CisJc3VieGlkID0gYWJv cnRfZGF0YS5zdWJ4aWQ7CisJdG9wbGV2ZWxfeGFjdCA9ICh4aWQgPT0gc3VieGlkKTsKKworCXNl dF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlkLCBhYm9ydF9kYXRhLmFib3J0X2xzbik7 CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHhpZCwgJndp bmZvKTsKKworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJf U0VSSUFMSVpFOgorCisJCQkvKgorCQkJICogV2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4KKwkJCSAqIHNlcmlhbGl6ZWQgdG8gZmls ZS4KKwkJCSAqLworCQkJc3RyZWFtX2Fib3J0X2ludGVybmFsKHhpZCwgc3VieGlkKTsKKwkJCWJy ZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQo d2luZm8pOworCisJCQkvKgorCQkJICogRm9yIHRoZSBjYXNlIG9mIGFib3J0aW5nIHRoZSBzdWJ0 cmFuc2FjdGlvbiwgd2UgaW5jcmVtZW50IHRoZQorCQkJICogbnVtYmVyIG9mIHN0cmVhbWluZyBi bG9ja3MgYW5kIHRha2UgdGhlIGxvY2sgYWdhaW4gYmVmb3JlCisJCQkgKiBzZW5kaW5nIHRoZSBT VFJFQU1fQUJPUlQgdG8gZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3Jr ZXIgd2lsbCB3YWl0IG9uIHRoZSBsb2NrIGZvciB0aGUgbmV4dCBzZXQgb2YgY2hhbmdlcyBhZnRl cgorCQkJICogcHJvY2Vzc2luZyB0aGUgU1RSRUFNX0FCT1JUIG1lc3NhZ2UgaWYgaXQgaXMgbm90 IGFscmVhZHkgd2FpdGluZworCQkJICogZm9yIFNUUkVBTV9TVE9QIG1lc3NhZ2UuCisJCQkgKgor CQkJICogSXQgaXMgaW1wb3J0YW50IHRvIHBlcmZvcm0gdGhpcyBsb2NraW5nIGJlZm9yZSBzZW5k aW5nIHRoZQorCQkJICogU1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28gdGhhdCB0aGUgbGVhZGVyIGNh biBob2xkIHRoZSBsb2NrIGZpcnN0CisJCQkgKiBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8KKwkJCSAqIHJlbGVhc2UgdGhlIGxvY2suIFRo aXMgaXMgdGhlIHNhbWUgYXMgd2hhdCB3ZSBkbyBpbgorCQkJICogYXBwbHlfaGFuZGxlX3N0cmVh bV9zdG9wLiBTZWUgTG9ja2luZyBDb25zaWRlcmF0aW9ucyBhdG9wCisJCQkgKiBhcHBseXBhcmFs bGVsd29ya2VyLmMuCisJCQkgKi8KKwkJCWlmICghdG9wbGV2ZWxfeGFjdCkKKwkJCXsKKwkJCQlw YV91bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQkJcGdfYXRvbWlj X2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2NvdW50LCAxKTsK KwkJCQlwYV9sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJfQorCisJ CQkvKgorCQkJICogVW5saWtlIFNUUkVBTV9DT01NSVQgYW5kIFNUUkVBTV9QUkVQQVJFLCB3ZSBk b24ndCB3YWl0IGZvciB0aGUKKwkJCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBmaW5pc2gg YXMgdGhhdCBpcyBub3QgcmVxdWlyZWQgdG8KKwkJCSAqIG1haW50YWluIHRoZSBjb21taXQgb3Jk ZXIgYW5kIHdvbid0IGhhdmUgdGhlIHJpc2sgb2YgZmFpbHVyZXMKKwkJCSAqIGR1ZSB0byB0cmFu c2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kIGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJaWYgKHBhX3Nl bmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJCQlpZiAodG9wbGV2ZWxf eGFjdCkKKwkJCQl7CisJCQkJCXBhX3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVM b2NrKTsKKwkJCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvKTsKKwkJCQl9CisJCQkJYnJl YWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRp bmcgdGhpcyBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRv IHN3aXRjaCB0byBzZXJpYWxpemUgbW9kZS4KKwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRp YWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNh c2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHdpbmZvKTsKKwor CQkJLyoKKwkJCSAqIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBtaWdodCBoYXZlIGFwcGxpZWQgc29t ZSBjaGFuZ2VzLCBzbyB3cml0ZQorCQkJICogdGhlIFNUUkVBTV9BQk9SVCBtZXNzYWdlIHNvIHRo YXQgaXQgY2FuIHJvbGxiYWNrIHRoZQorCQkJICogc3VidHJhbnNhY3Rpb24gaWYgbmVlZGVkLgor CQkJICovCisJCQlzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKHhpZCwgTE9HSUNBTF9SRVBf TVNHX1NUUkVBTV9BQk9SVCwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCWlmICh0 b3BsZXZlbF94YWN0KQorCQkJeworCQkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFy ZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKwkJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNz RXhjbHVzaXZlTG9jayk7CisJCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvKTsKKwkJCX0K KwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisKKwkJCS8qCisJCQkg KiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5nIHNwb29sZWQgbWVzc2Fn ZXMgdGhlbgorCQkJICogY2xvc2UgdGhlIGZpbGUgYmVmb3JlIGFib3J0aW5nLgorCQkJICovCisJ CQlpZiAodG9wbGV2ZWxfeGFjdCAmJiBzdHJlYW1fZmQpCisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUo KTsKKworCQkJcGFfc3RyZWFtX2Fib3J0KCZhYm9ydF9kYXRhKTsKKworCQkJLyoKKwkJCSAqIFdl IG5lZWQgdG8gd2FpdCBhZnRlciBwcm9jZXNzaW5nIHJvbGxiYWNrIHRvIHNhdmVwb2ludCBmb3Ig dGhlCisJCQkgKiBuZXh0IHNldCBvZiBjaGFuZ2VzLgorCQkJICoKKwkJCSAqIFdlIGhhdmUgYSBy YWNlIGNvbmRpdGlvbiBoZXJlIGR1ZSB0byB3aGljaCB3ZSBjYW4gc3RhcnQgd2FpdGluZworCQkJ ICogaGVyZSB3aGVuIHRoZXJlIGFyZSBtb3JlIGNodW5rIG9mIHN0cmVhbXMgaW4gdGhlIHF1ZXVl LiBTZWUKKwkJCSAqIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcC4KKwkJCSAqLworCQkJaWYgKCF0 b3BsZXZlbF94YWN0KQorCQkJCXBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKCk7CiAKLQkJ Lyogd3JpdGUgdGhlIHVwZGF0ZWQgc3VieGFjdCBsaXN0ICovCi0JCXN1YnhhY3RfaW5mb193cml0 ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJZWxvZyhERUJVRzEsICJmaW5p c2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gQUJPUlQgY29tbWFuZCIpOworCQkJYnJlYWs7CiAK LQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKLQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CiAJfQogCiAJcmVzZXRf YXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CiAKIC8qCi0gKiBDb21tb24gc3Bvb2xmaWxl IHByb2Nlc3NpbmcuCisgKiBFbnN1cmUgdGhhdCB0aGUgcGFzc2VkIGxvY2F0aW9uIGlzIGZpbGVz ZXQncyBlbmQuCiAgKi8KIHN0YXRpYyB2b2lkCi1hcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5z YWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK2Vuc3VyZV9sYXN0X21lc3NhZ2UoRmlsZVNl dCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgZmlsZW5vLAorCQkJCQlv ZmZfdCBvZmZzZXQpCit7CisJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOworCUJ1ZkZpbGUJICAgKmZk OworCWludAkJCWxhc3RfZmlsZW5vOworCW9mZl90CQlsYXN0X29mZnNldDsKKworCUFzc2VydCgh SXNUcmFuc2FjdGlvblN0YXRlKCkpOworCisJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJ Y2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwor CisJZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoc3RyZWFtX2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZ LCBmYWxzZSk7CisKKwlCdWZGaWxlU2VlayhmZCwgMCwgMCwgU0VFS19FTkQpOworCUJ1ZkZpbGVU ZWxsKGZkLCAmbGFzdF9maWxlbm8sICZsYXN0X29mZnNldCk7CisKKwlCdWZGaWxlQ2xvc2UoZmQp OworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCWlmIChsYXN0X2ZpbGVubyAhPSBmaWxl bm8gfHwgbGFzdF9vZmZzZXQgIT0gb2Zmc2V0KQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBt ZXNzYWdlIGxlZnQgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdlcyBmaWxlIFwiJXNc IiIsCisJCQkgcGF0aCk7Cit9CisKKy8qCisgKiBDb21tb24gc3Bvb2xmaWxlIHByb2Nlc3Npbmcu CisgKi8KK3ZvaWQKK2FwcGx5X3Nwb29sZWRfbWVzc2FnZXMoRmlsZVNldCAqc3RyZWFtX2ZpbGVz ZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkgICBYTG9nUmVjUHRyIGxzbikKIHsKIAlTdHJp bmdJbmZvRGF0YSBzMjsKIAlpbnQJCQluY2hhbmdlczsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07 CiAJY2hhcgkgICAqYnVmZmVyID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKLQlCdWZG aWxlICAgICpmZDsKKwlSZXNvdXJjZU93bmVyIG9sZG93bmVyOworCWludAkJCWZpbGVubzsKKwlv ZmZfdAkJb2Zmc2V0OwogCi0JbWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhsc24pOworCWlm ICghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCW1heWJlX3N0YXJ0X3NraXBwaW5nX2No YW5nZXMobHNuKTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIG9wZW4gdHJhbnNhY3Rpb24g Ki8KIAliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CkBAIC0xNDAwLDggKzIwMDUsMTYgQEAgYXBw bHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJ Y2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwog CWVsb2coREVCVUcxLCAicmVwbGF5aW5nIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsIHBhdGgp OwogCi0JZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1f ZmlsZXNldCwgcGF0aCwgT19SRE9OTFksCi0JCQkJCQkJZmFsc2UpOworCS8qCisJICogTWFrZSBz dXJlIHRoZSBmaWxlIGlzIG93bmVkIGJ5IHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiBzbyB0aGF0 IHRoZSBmaWxlCisJICogd2lsbCBub3QgYmUgYWNjaWRlbnRhbGx5IGNsb3NlZCB3aGVuIGFib3J0 aW5nIGEgc3VidHJhbnNhY3Rpb24uCisJICovCisJb2xkb3duZXIgPSBDdXJyZW50UmVzb3VyY2VP d25lcjsKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IFRvcFRyYW5zYWN0aW9uUmVzb3VyY2VPd25l cjsKKworCXN0cmVhbV9mZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChzdHJlYW1fZmlsZXNldCwgcGF0 aCwgT19SRE9OTFksIGZhbHNlKTsKKworCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gb2xkb3duZXI7 CiAKIAlidWZmZXIgPSBwYWxsb2MoQkxDS1NaKTsKIAlpbml0U3RyaW5nSW5mbygmczIpOwpAQCAt MTQzMiw3ICsyMDQ1LDcgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhp ZCwgWExvZ1JlY1B0ciBsc24pCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyogcmVh ZCBsZW5ndGggb2YgdGhlIG9uLWRpc2sgcmVjb3JkICovCi0JCW5ieXRlcyA9IEJ1ZkZpbGVSZWFk KGZkLCAmbGVuLCBzaXplb2YobGVuKSk7CisJCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkKHN0cmVhbV9m ZCwgJmxlbiwgc2l6ZW9mKGxlbikpOwogCiAJCS8qIGhhdmUgd2UgcmVhY2hlZCBlbmQgb2YgdGhl IGZpbGU/ICovCiAJCWlmIChuYnl0ZXMgPT0gMCkKQEAgLTE0NTMsMTIgKzIwNjYsMTQgQEAgYXBw bHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJ CWJ1ZmZlciA9IHJlcGFsbG9jKGJ1ZmZlciwgbGVuKTsKIAogCQkvKiBhbmQgZmluYWxseSByZWFk IHRoZSBkYXRhIGludG8gdGhlIGJ1ZmZlciAqLwotCQlpZiAoQnVmRmlsZVJlYWQoZmQsIGJ1ZmZl ciwgbGVuKSAhPSBsZW4pCisJCWlmIChCdWZGaWxlUmVhZChzdHJlYW1fZmQsIGJ1ZmZlciwgbGVu KSAhPSBsZW4pCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nl c3MoKSwKIAkJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgZnJvbSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24ncyBjaGFuZ2VzIGZpbGUgXCIlc1wiOiAlbSIsCiAJCQkJCQkJcGF0aCkpKTsKIAorCQlC dWZGaWxlVGVsbChzdHJlYW1fZmQsICZmaWxlbm8sICZvZmZzZXQpOworCiAJCS8qIGNvcHkgdGhl IGJ1ZmZlciB0byB0aGUgc3RyaW5naW5mbyBhbmQgY2FsbCBhcHBseV9kaXNwYXRjaCAqLwogCQly ZXNldFN0cmluZ0luZm8oJnMyKTsKIAkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmczIsIGJ1ZmZl ciwgbGVuKTsKQEAgLTE0NzQsMTUgKzIwODksMjQgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhU cmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAKIAkJbmNoYW5nZXMrKzsKIAorCQkv KgorCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGUgZmlsZSBoYXMgYmVlbiBjbG9zZWQgYmVjYXVzZSB3 ZSBoYXZlIHByb2Nlc3NlZAorCQkgKiB0aGUgdHJhbnNhY3Rpb24gZW5kIG1lc3NhZ2UgbGlrZSBz dHJlYW1fY29tbWl0IGluIHdoaWNoIGNhc2UgdGhhdAorCQkgKiBtdXN0IGJlIHRoZSBsYXN0IG1l c3NhZ2UuCisJCSAqLworCQlpZiAoIXN0cmVhbV9mZCkKKwkJeworCQkJZW5zdXJlX2xhc3RfbWVz c2FnZShzdHJlYW1fZmlsZXNldCwgeGlkLCBmaWxlbm8sIG9mZnNldCk7CisJCQlicmVhazsKKwkJ fQorCiAJCWlmIChuY2hhbmdlcyAlIDEwMDAgPT0gMCkKIAkJCWVsb2coREVCVUcxLCAicmVwbGF5 ZWQgJWQgY2hhbmdlcyBmcm9tIGZpbGUgXCIlc1wiIiwKIAkJCQkgbmNoYW5nZXMsIHBhdGgpOwog CX0KIAotCUJ1ZkZpbGVDbG9zZShmZCk7Ci0KLQlwZnJlZShidWZmZXIpOwotCXBmcmVlKHMyLmRh dGEpOworCWlmIChzdHJlYW1fZmQpCisJCXN0cmVhbV9jbG9zZV9maWxlKCk7CiAKIAllbG9nKERF QlVHMSwgInJlcGxheWVkICVkIChhbGwpIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsCiAJCSBu Y2hhbmdlcywgcGF0aCk7CkBAIC0xNDk4LDYgKzIxMjIsMTEgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9jb21taXQoU3RyaW5nSW5mbyBzKQogewogCVRyYW5zYWN0aW9uSWQgeGlkOwogCUxvZ2ljYWxS ZXBDb21taXREYXRhIGNvbW1pdF9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5m bzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3Nh Z2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21z ZyA9ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9S LApAQCAtMTUwNywxNCArMjEzNiw3OSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJp bmdJbmZvIHMpCiAJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQocywgJmNvbW1p dF9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29tbWl0X2RhdGEu Y29tbWl0X2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFt ZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlv bl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOwogCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4 aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsK KwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9p bnRlcm5hbCgmY29tbWl0X2RhdGEpOworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMg YmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVk IG9wZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwgeGlkLAorCQkJCQkJCQkgICBjb21taXRfZGF0YS5j b21taXRfbHNuKTsKKworCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2Rh dGEpOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFu ZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBX b3JrZXItPnN1YmlkLCB4aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCWlmIChwYV9zZW5kX2RhdGEo d2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJLyogRmluaXNoIHByb2Nlc3Npbmcg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywg Y29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBJ dCBpcyBwb3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRpbmcgdGhpcyBjaGFuZ2UgdG8gcGFyYWxsZWwg YXBwbHkKKwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRvIHN3aXRjaCB0byBzZXJpYWxpemUgbW9kZS4K KwkJCSAqLworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsK KworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VS SUFMSVpFOgorCQkJQXNzZXJ0KHdpbmZvKTsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBz ZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLwotCXN0cmVhbV9jbGVhbnVwX2Zp bGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCQlzdHJlYW1fb3Blbl9hbmRf d3JpdGVfY2hhbmdlKHhpZCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9DT01NSVQsCisJCQkJCQkJ CQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hh cmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisKKwkJCS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgY29tbWl0 X2RhdGEuZW5kX2xzbik7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZ OgorCisJCQkvKgorCQkJICogSWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWlu ZyBzcG9vbGVkIG1lc3NhZ2VzIHRoZW4KKwkJCSAqIGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBjb21t aXR0aW5nLgorCQkJICovCisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9maWxl KCk7CisKKwkJCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9kYXRhKTsKKwor CQkJTXlQYXJhbGxlbFNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7 CisKKwkJCXBhX3NldF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5T X0ZJTklTSEVEKTsKKwkJCXBhX3VubG9ja190cmFuc2FjdGlvbih4aWQsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2spOworCisJCQlwYV9yZXNldF9zdWJ0cmFucygpOworCisJCQllbG9nKERFQlVHMSwgImZp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSBDT01NSVQgY29tbWFuZCIpOworCQkJYnJlYWs7 CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CiAKIAkvKiBQ cm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVs LiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CkBAIC0x NTU4LDkgKzIyNTIsMTYgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVw Q29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGlt ZXN0YW1wID0gY29tbWl0X2RhdGEtPmNvbW1pdHRpbWU7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlFbmRUcmFu c2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9 CisKIAkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAotCQlzdG9yZV9mbHVzaF9wb3NpdGlv bihjb21taXRfZGF0YS0+ZW5kX2xzbik7CisJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9k YXRhLT5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJfQogCWVsc2UKIAl7CkBAIC0yNTEx LDcgKzMyMTIsNyBAQCBhcHBseV9oYW5kbGVfdHJ1bmNhdGUoU3RyaW5nSW5mbyBzKQogLyoKICAq IExvZ2ljYWwgcmVwbGljYXRpb24gcHJvdG9jb2wgbWVzc2FnZSBkaXNwYXRjaGVyLgogICovCi1z dGF0aWMgdm9pZAordm9pZAogYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogewogCUxvZ2lj YWxSZXBNc2dUeXBlIGFjdGlvbiA9IHBxX2dldG1zZ2J5dGUocyk7CkBAIC0yNjc1LDE3ICszMzc2 LDI0IEBAIGdldF9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyICp3cml0ZSwgWExvZ1JlY1B0ciAq Zmx1c2gsCiAvKgogICogU3RvcmUgY3VycmVudCByZW1vdGUvbG9jYWwgbHNuIHBhaXIgaW4gdGhl IHRyYWNraW5nIGxpc3QuCiAgKi8KLXN0YXRpYyB2b2lkCi1zdG9yZV9mbHVzaF9wb3NpdGlvbihY TG9nUmVjUHRyIHJlbW90ZV9sc24pCit2b2lkCitzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVj UHRyIHJlbW90ZV9sc24sIFhMb2dSZWNQdHIgbG9jYWxfbHNuKQogewogCUZsdXNoUG9zaXRpb24g KmZsdXNocG9zOwogCisJLyoKKwkgKiBTa2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBi ZWNhdXNlIHRoZSBsc25fbWFwcGluZyBpcyBtYWludGFpbmVkCisJICogYnkgdGhlIGxlYWRlciBh cHBseSB3b3JrZXIuCisJICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQly ZXR1cm47CisKIAkvKiBOZWVkIHRvIGRvIHRoaXMgaW4gcGVybWFuZW50IGNvbnRleHQgKi8KIAlN ZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKIAogCS8qIFRyYWNrIGNvbW1pdCBs c24gICovCiAJZmx1c2hwb3MgPSAoRmx1c2hQb3NpdGlvbiAqKSBwYWxsb2Moc2l6ZW9mKEZsdXNo UG9zaXRpb24pKTsKLQlmbHVzaHBvcy0+bG9jYWxfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisJ Zmx1c2hwb3MtPmxvY2FsX2VuZCA9IGxvY2FsX2xzbjsKIAlmbHVzaHBvcy0+cmVtb3RlX2VuZCA9 IHJlbW90ZV9sc247CiAKIAlkbGlzdF9wdXNoX3RhaWwoJmxzbl9tYXBwaW5nLCAmZmx1c2hwb3Mt Pm5vZGUpOwpAQCAtMjc0NCw2ICszNDUyLDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVj UHRyIGxhc3RfcmVjZWl2ZWQpCiAJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9j YWxsYmFjazsKIAllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJ ZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKwlhcHBseV9lcnJvcl9jb250ZXh0 X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIFRoaXMgb3V0ZXIgbG9vcCBpdGVy YXRlcyBvbmNlIHBlciB3YWl0LiAqLwogCWZvciAoOzspCkBAIC0yOTU4LDYgKzM2NjcsNyBAQCBM b2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAogCS8qIFBvcCB0 aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxs YmFjay5wcmV2aW91czsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4 dF9zdGFjazsKIAogCS8qIEFsbCBkb25lICovCiAJd2FscmN2X2VuZHN0cmVhbWluZyhMb2dSZXBX b3JrZXJXYWxSY3ZDb25uLCAmdGxpKTsKQEAgLTMwNTYsOSArMzc2NiwzMSBAQCBzZW5kX2ZlZWRi YWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpCiB9 CiAKIC8qCi0gKiBSZXJlYWQgc3Vic2NyaXB0aW9uIGluZm8gaWYgbmVlZGVkLiBNb3N0IGNoYW5n ZXMgd2lsbCBiZSBleGl0LgorICogRXhpdCByb3V0aW5lIGZvciBhcHBseSB3b3JrZXJzIGR1ZSB0 byBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGNoYW5nZXMuCiAgKi8KIHN0YXRpYyB2b2lkCithcHBs eV93b3JrZXJfZXhpdCh2b2lkKQoreworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkK Kwl7CisJCS8qCisJCSAqIERvbid0IHN0b3AgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhcyB0 aGUgbGVhZGVyIHdpbGwgZGV0ZWN0IHRoZQorCQkgKiBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGNo YW5nZSBhbmQgcmVzdGFydCBsb2dpY2FsIHJlcGxpY2F0aW9uIGxhdGVyCisJCSAqIGFueXdheS4g VGhpcyBhbHNvIHByZXZlbnRzIHRoZSBsZWFkZXIgZnJvbSByZXBvcnRpbmcgZXJyb3JzIHdoZW4K KwkJICogdHJ5aW5nIHRvIGNvbW11bmljYXRlIHdpdGggYSBzdG9wcGVkIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciwgd2hpY2gKKwkJICogd291bGQgYWNjaWRlbnRhbGx5IGRpc2FibGUgc3Vic2NyaXB0 aW9ucyBpZiBkaXNhYmxlX29uX2Vycm9yIHdhcworCQkgKiBzZXQuCisJCSAqLworCQlyZXR1cm47 CisJfQorCisJcHJvY19leGl0KDApOworfQorCisvKgorICogUmVyZWFkIHN1YnNjcmlwdGlvbiBp bmZvIGlmIG5lZWRlZC4gTW9zdCBjaGFuZ2VzIHdpbGwgYmUgZXhpdC4KKyAqLwordm9pZAogbWF5 YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogewogCU1lbW9yeUNvbnRleHQgb2xkY3R4OwpA QCAtMzA4OCw5ICszODIwLDkgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCWlm ICghbmV3c3ViKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBs aWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCAiCi0JCQkJ CQkic3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQiLAotCQkJCQkJTXlT dWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBu YW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9y IHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3 YXMgcmVtb3ZlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5h bWUpKSk7CiAKIAkJcHJvY19leGl0KDApOwogCX0KQEAgLTMwOTksMTEgKzM4MzEsMTEgQEAgbWF5 YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCWlmICghbmV3c3ViLT5lbmFibGVkKQogCXsK IAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3 b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCAiCi0JCQkJCQkic3RvcCBiZWNhdXNl IHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5u YW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2Fs IHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24g XCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIiwK KwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAotCQlw cm9jX2V4aXQoMCk7CisJCWFwcGx5X3dvcmtlcl9leGl0KCk7CiAJfQogCiAJLyogIXNsb3RuYW1l IHNob3VsZCBuZXZlciBoYXBwZW4gd2hlbiBlbmFibGVkIGlzIHRydWUuICovCkBAIC0zMTE0LDcg KzM4NDYsMTAgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCiAJLyoKIAkgKiBF eGl0IGlmIGFueSBwYXJhbWV0ZXIgdGhhdCBhZmZlY3RzIHRoZSByZW1vdGUgY29ubmVjdGlvbiB3 YXMgY2hhbmdlZC4KLQkgKiBUaGUgbGF1bmNoZXIgd2lsbCBzdGFydCBhIG5ldyB3b3JrZXIuCisJ ICogVGhlIGxhdW5jaGVyIHdpbGwgc3RhcnQgYSBuZXcgd29ya2VyIGJ1dCBub3RlIHRoYXQgdGhl IHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyIHdvbid0IHJlc3RhcnQgaWYgdGhlIHN0cmVhbWlu ZyBvcHRpb24ncyB2YWx1ZSBpcyBjaGFuZ2VkIGZyb20KKwkgKiAncGFyYWxsZWwnIHRvIGFueSBv dGhlciB2YWx1ZSBvciB0aGUgc2VydmVyIGRlY2lkZXMgbm90IHRvIHN0cmVhbSB0aGUKKwkgKiBp bi1wcm9ncmVzcyB0cmFuc2FjdGlvbi4KIAkgKi8KIAlpZiAoc3RyY21wKG5ld3N1Yi0+Y29ubmlu Zm8sIE15U3Vic2NyaXB0aW9uLT5jb25uaW5mbykgIT0gMCB8fAogCQlzdHJjbXAobmV3c3ViLT5u YW1lLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkgIT0gMCB8fApAQCAtMzEyNSwxMSArMzg2MCwxNyBA QCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJCW5ld3N1Yi0+b3duZXIgIT0gTXlT dWJzY3JpcHRpb24tPm93bmVyIHx8CiAJCSFlcXVhbChuZXdzdWItPnB1YmxpY2F0aW9ucywgTXlT dWJzY3JpcHRpb24tPnB1YmxpY2F0aW9ucykpCiAJewotCQllcmVwb3J0KExPRywKLQkJCQkoZXJy bXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiB3aWxsIHJlc3RhcnQgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAotCQkJCQkJ TXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIo KSkKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVj YXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1l KSkpOworCQllbHNlCisJCQllcmVwb3J0KExPRywKKwkJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVz IGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJCShlcnJt c2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIG9mIGEg cGFyYW1ldGVyIGNoYW5nZSIsCisJCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0 aW9uLT5uYW1lKSkpOwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2V4aXQoKTsK IAl9CiAKIAkvKiBDaGVjayBmb3Igb3RoZXIgY2hhbmdlcyB0aGF0IHNob3VsZCBuZXZlciBoYXBw ZW4gdG9vLiAqLwpAQCAtMzM4MSw3ICs0MTIyLDcgQEAgY2hhbmdlc19maWxlbmFtZShjaGFyICpw YXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogICogdG9wbGV2ZWwgdHJhbnNhY3Rp b24uIEVhY2ggc3Vic2NyaXB0aW9uIGhhcyBhIHNlcGFyYXRlIHNldCBvZiBmaWxlcwogICogZm9y IGFueSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHN0cmVh bV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpCiB7CiAJY2hhcgkJ cGF0aFtNQVhQR1BBVEhdOwpAQCAtMzQwNCw5ICs0MTQ1LDYgQEAgc3RyZWFtX2NsZWFudXBfZmls ZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKICAqIGJ5IHN0cmVhbV94aWQgKGdsb2Jh bCB2YXJpYWJsZSkuIElmIGl0J3MgdGhlIGZpcnN0IGNodW5rIG9mIHN0cmVhbWVkCiAgKiBjaGFu Z2VzIGZvciB0aGlzIHRyYW5zYWN0aW9uLCBjcmVhdGUgdGhlIGJ1ZmZpbGUsIG90aGVyd2lzZSBv cGVuIHRoZQogICogcHJldmlvdXNseSBjcmVhdGVkIGZpbGUuCi0gKgotICogVGhpcyBjYW4gb25s eSBiZSBjYWxsZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBhICJzdHJlYW1pbmciIGJsb2NrLCBpLmUu Ci0gKiBiZXR3ZWVuIHN0cmVhbV9zdGFydC9zdHJlYW1fc3RvcCBtZXNzYWdlcyBmcm9tIHRoZSB1 cHN0cmVhbS4KICAqLwogc3RhdGljIHZvaWQKIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBU cmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQpAQCAtMzQxNCw3ICs0MTUyLDYg QEAgc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZp cnN0X3NlZ21lbnQpCiAJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogCU1lbW9yeUNvbnRleHQgb2xk Y3h0OwogCi0JQXNzZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKIAlBc3NlcnQoT2lkSXNW YWxpZChzdWJpZCkpOwogCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKTsKIAlBc3Nl cnQoc3RyZWFtX2ZkID09IE5VTEwpOwpAQCAtMzQ1MywxNSArNDE5MCwxMCBAQCBzdHJlYW1fb3Bl bl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkK IC8qCiAgKiBzdHJlYW1fY2xvc2VfZmlsZQogICoJICBDbG9zZSB0aGUgY3VycmVudGx5IG9wZW4g ZmlsZSB3aXRoIHN0cmVhbWVkIGNoYW5nZXMuCi0gKgotICogVGhpcyBjYW4gb25seSBiZSBjYWxs ZWQgYXQgdGhlIGVuZCBvZiBhIHN0cmVhbWluZyBibG9jaywgaS5lLiBhdCBzdHJlYW1fc3RvcAot ICogbWVzc2FnZSBmcm9tIHRoZSB1cHN0cmVhbS4KICAqLwogc3RhdGljIHZvaWQKIHN0cmVhbV9j bG9zZV9maWxlKHZvaWQpCiB7Ci0JQXNzZXJ0KGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKLQlB c3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCUFzc2VydChzdHJlYW1f ZmQgIT0gTlVMTCk7CiAKIAlCdWZGaWxlQ2xvc2Uoc3RyZWFtX2ZkKTsKQEAgLTM0ODMsOCArNDIx NSw2IEBAIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsK IAlpbnQJCQlsZW47CiAKLQlBc3NlcnQoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOwotCUFzc2Vy dChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAh PSBOVUxMKTsKIAogCS8qIHRvdGFsIG9uLWRpc2sgc2l6ZSwgaW5jbHVkaW5nIHRoZSBhY3Rpb24g dHlwZSBjaGFyYWN0ZXIgKi8KQEAgLTM1MDIsNiArNDIzMiwyNiBAQCBzdHJlYW1fd3JpdGVfY2hh bmdlKGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiAJQnVmRmlsZVdyaXRlKHN0cmVhbV9mZCwg JnMtPmRhdGFbcy0+Y3Vyc29yXSwgbGVuKTsKIH0KIAorLyoKKyAqIHN0cmVhbV9vcGVuX2FuZF93 cml0ZV9jaGFuZ2UKKyAqCSAgU2VyaWFsaXplIGEgbWVzc2FnZSB0byBhIGZpbGUgZm9yIHRoZSBn aXZlbiB0cmFuc2FjdGlvbi4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gc3Ry ZWFtX3dyaXRlX2NoYW5nZSBleGNlcHQgdGhhdCBpdCB3aWxsIG9wZW4gdGhlCisgKiB0YXJnZXQg ZmlsZSBpZiBub3QgYWxyZWFkeSBiZWZvcmUgd3JpdGluZyB0aGUgbWVzc2FnZSBhbmQgY2xvc2Ug dGhlIGZpbGUgYXQKKyAqIHRoZSBlbmQuCisgKi8KK3N0YXRpYyB2b2lkCitzdHJlYW1fb3Blbl9h bmRfd3JpdGVfY2hhbmdlKFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyIGFjdGlvbiwgU3RyaW5nSW5m byBzKQoreworCUFzc2VydCghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOworCisJaWYgKCFzdHJl YW1fZmQpCisJCXN0cmVhbV9zdGFydF9pbnRlcm5hbCh4aWQsIGZhbHNlKTsKKworCXN0cmVhbV93 cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwlzdHJlYW1fc3RvcF9pbnRlcm5hbCh4aWQpOworfQor CiAvKgogICogQ2xlYW51cCB0aGUgbWVtb3J5IGZvciBzdWJ4YWN0cyBhbmQgcmVzZXQgdGhlIHJl bGF0ZWQgdmFyaWFibGVzLgogICovCkBAIC0zNjEzLDM3ICs0MzYzLDE2IEBAIHN0YXJ0X2FwcGx5 KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCVBHX0VORF9UUlkoKTsKIH0KIAotLyogTG9n aWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KKy8qCisgKiBDb21t b24gaW5pdGlhbGl6YXRpb24gZm9yIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKyAqCisgKiBJbml0aWFsaXplIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uLCBp bi1tZW1vcnkgc3Vic2NyaXB0aW9uIGFuZCBuZWNlc3NhcnkKKyAqIGNvbmZpZyBvcHRpb25zLgor ICovCiB2b2lkCi1BcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCitJbml0aWFsaXplQXBw bHlXb3JrZXIodm9pZCkKIHsKLQlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFp bl9hcmcpOwogCU1lbW9yeUNvbnRleHQgb2xkY3R4OwotCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURB VEFMRU5dOwotCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7 Ci0JY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7Ci0JV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRp b25zOwotCWludAkJCXNlcnZlcl92ZXJzaW9uOwotCi0JLyogQXR0YWNoIHRvIHNsb3QgKi8KLQls b2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOwotCi0JLyogU2V0dXAgc2lnbmFs IGhhbmRsaW5nICovCi0JcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVs b2FkKTsKLQlwcXNpZ25hbChTSUdURVJNLCBkaWUpOwotCUJhY2tncm91bmRXb3JrZXJVbmJsb2Nr U2lnbmFscygpOwotCi0JLyoKLQkgKiBXZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3Vy Y2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAotCSAqIGlmIHdlIGRpZCwgd2Ug Y291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25lciBoZXJlLgotCSAqLwotCi0J LyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAqLwotCU15TG9naWNhbFJlcFdv cmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1l ID0KLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFt cCgpOwotCi0JLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCi0JbG9hZF9m aWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOwogCiAJLyogUnVuIGFzIHJlcGxpY2Egc2Vz c2lvbiByZXBsaWNhdGlvbiByb2xlLiAqLwogCVNldENvbmZpZ09wdGlvbigic2Vzc2lvbl9yZXBs aWNhdGlvbl9yb2xlIiwgInJlcGxpY2EiLApAQCAtMzY3MSw5ICs0NDAwLDEwIEBAIEFwcGx5V29y a2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlpZiAoIU15U3Vic2NyaXB0aW9uKQogCXsKIAkJZXJl cG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIg Zm9yIHN1YnNjcmlwdGlvbiAldSB3aWxsIG5vdCAiCi0JCQkJCQkic3RhcnQgYmVjYXVzZSB0aGUg c3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIGR1cmluZyBzdGFydHVwIiwKLQkJCQkJCU15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQpKSk7CisJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9m IGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNj cmlwdGlvbiAldSB3aWxsIG5vdCBzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJl bW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQpKSk7CisKIAkJcHJvY19leGl0KDApOwogCX0KIApAQCAtMzY4Mywx MSArNDQxMywxMSBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJaWYgKCFNeVN1 YnNjcmlwdGlvbi0+ZW5hYmxlZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxv Z2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdp bGwgbm90ICIKLQkJCQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2Fi bGVkIGR1cmluZyBzdGFydHVwIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkv KiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9u IHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwg bm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQgZHVyaW5nIHN0 YXJ0dXAiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkp OwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2V4aXQoKTsKIAl9CiAKIAkvKiBT ZXR1cCBzeW5jaHJvbm91cyBjb21taXQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyJ3Mgd2lzaGVzICov CkBAIC0zNzAyLDEzICs0NDMyLDQ5IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNn KCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIgZm9yIHN1 YnNjcmlwdGlvbiBcIiVzXCIsIHRhYmxlIFwiJXNcIiBoYXMgc3RhcnRlZCIsCi0JCQkJCQlNeVN1 YnNjcmlwdGlvbi0+bmFtZSwgZ2V0X3JlbF9uYW1lKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQp KSkpOworCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJCQlnZXRfcmVsX25hbWUoTXlM b2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CiAJZWxzZQogCQllcmVwb3J0KExPRywKLQkJCQko ZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u IFwiJXNcIiBoYXMgc3RhcnRlZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJ LyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlv biB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiBoYXMg c3RhcnRlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUp KSk7CiAKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KKworLyogTG9naWNhbCBSZXBs aWNhdGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KK3ZvaWQKK0FwcGx5V29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKK3sKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIo bWFpbl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCVhMb2dSZWNQdHIJ b3JpZ2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7CisJY2hhcgkgICAqbXlzbG90bmFt ZSA9IE5VTEw7CisJV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25zOworCWludAkJCXNlcnZlcl92 ZXJzaW9uOworCisJLyogQXR0YWNoIHRvIHNsb3QgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRh Y2god29ya2VyX3Nsb3QpOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCisJcHFzaWdu YWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdU RVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJLyoKKwkg KiBXZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2Vp dmVyIHByb2Nlc3MsIGJ1dAorCSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQ cm9jZXNzUmVzb3VyY2VPd25lciBoZXJlLgorCSAqLworCisJLyogSW5pdGlhbGlzZSBzdGF0cyB0 byBhIHNhbmlzaCB2YWx1ZSAqLworCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUg PSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29y a2VyLT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyogTG9hZCB0aGUg bGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCisJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVy IiwgZmFsc2UpOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CiAKIAkvKiBDb25uZWN0IHRv IHRoZSBvcmlnaW4gYW5kIHN0YXJ0IHRoZSByZXBsaWNhdGlvbi4gKi8KIAllbG9nKERFQlVHMSwg ImNvbm5lY3RpbmcgdG8gcHVibGlzaGVyIHVzaW5nIGNvbm5lY3Rpb24gc3RyaW5nIFwiJXNcIiIs CkBAIC0zNzE4LDIwICs0NDg0LDE1IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IAl7CiAJCXN0YXJ0X3RhYmxlX3N5bmMoJm9yaWdpbl9zdGFydHBvcywgJm15c2xvdG5hbWUpOwog Ci0JCS8qCi0JCSAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRl eHQgZm9yIGVycm9yIGNvbnRleHQKLQkJICogbWVzc2FnZS4KLQkJICovCiAJCVJlcGxpY2F0aW9u T3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoTXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkg ICBNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkLAogCQkJCQkJCQkJCSAgIG9yaWdpbm5hbWUsCiAJ CQkJCQkJCQkJICAgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKLQkJYXBwbHlfZXJyb3JfY2FsbGJhY2tf YXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCi0JCQkJ CQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisJCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X29y aWdpbihvcmlnaW5uYW1lKTsKIAl9CiAJZWxzZQogCXsKLQkJLyogVGhpcyBpcyBtYWluIGFwcGx5 IHdvcmtlciAqLworCQkvKiBUaGlzIGlzIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyICovCiAJCVJl cE9yaWdpbklkIG9yaWdpbmlkOwogCQlUaW1lTGluZUlECXN0YXJ0cG9pbnRUTEk7CiAJCWNoYXIJ ICAgKmVycjsKQEAgLTM3NTUsNyArNDUxNiw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZykKIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwgdHJ1ZSk7 CiAJCWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkpCiAJCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5f Y3JlYXRlKG9yaWdpbm5hbWUpOwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQp OworCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2lu X3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJCW9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmln aW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKQEAgLTM3NzMsMTIgKzQ1MzQsNyBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9h cmcpCiAJCSAqLwogCQkodm9pZCkgd2FscmN2X2lkZW50aWZ5X3N5c3RlbShMb2dSZXBXb3JrZXJX YWxSY3ZDb25uLCAmc3RhcnRwb2ludFRMSSk7CiAKLQkJLyoKLQkJICogQWxsb2NhdGUgdGhlIG9y aWdpbiBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dAotCQkgKiBt ZXNzYWdlLgotCQkgKi8KLQkJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0g TWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCi0JCQkJCQkJCQkJCQkJCQkJICAgb3Jp Z2lubmFtZSk7CisJCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihvcmlnaW5uYW1lKTsK IAl9CiAKIAkvKgpAQCAtMzc5NiwxMyArNDU1MiwzNiBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpCiAKIAlzZXJ2ZXJfdmVyc2lvbiA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dS ZXBXb3JrZXJXYWxSY3ZDb25uKTsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lv biA9CisJCXNlcnZlcl92ZXJzaW9uID49IDE2MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTUwMDAwID8gTE9H SUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSA6CiAJCXNlcnZlcl92ZXJzaW9uID49 IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNIDoKIAkJTE9HSUNB TFJFUF9QUk9UT19WRVJTSU9OX05VTTsKIAogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wdWJsaWNh dGlvbl9uYW1lcyA9IE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlvbnM7CiAJb3B0aW9ucy5wcm90 by5sb2dpY2FsLmJpbmFyeSA9IE15U3Vic2NyaXB0aW9uLT5iaW5hcnk7Ci0Jb3B0aW9ucy5wcm90 by5sb2dpY2FsLnN0cmVhbWluZyA9IE15U3Vic2NyaXB0aW9uLT5zdHJlYW07CisKKwkvKgorCSAq IEFzc2lnbiB0aGUgYXBwcm9wcmlhdGUgb3B0aW9uIHZhbHVlIGZvciBzdHJlYW1pbmcgb3B0aW9u IGFjY29yZGluZyB0bworCSAqIHRoZSAnc3RyZWFtaW5nJyBtb2RlIGFuZCB0aGUgcHVibGlzaGVy J3MgYWJpbGl0eSB0byBzdXBwb3J0IHRoYXQgbW9kZS4KKwkgKi8KKwlpZiAoc2VydmVyX3ZlcnNp b24gPj0gMTYwMDAwICYmCisJCU15U3Vic2NyaXB0aW9uLT5zdHJlYW0gPT0gTE9HSUNBTFJFUF9T VFJFQU1fUEFSQUxMRUwpCisJeworCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0 ciA9ICJwYXJhbGxlbCI7CisJCU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSB0 cnVlOworCX0KKwllbHNlIGlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgJiYKKwkJCSBNeVN1 YnNjcmlwdGlvbi0+c3RyZWFtICE9IExPR0lDQUxSRVBfU1RSRUFNX09GRikKKwl7CisJCW9wdGlv bnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gIm9uIjsKKwkJTXlMb2dpY2FsUmVwV29y a2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOworCX0KKwllbHNlCisJeworCQlvcHRpb25zLnBy b3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0ciA9IE5VTEw7CisJCU15TG9naWNhbFJlcFdvcmtlci0+ cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsKKwl9CisKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwudHdv cGhhc2UgPSBmYWxzZTsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwub3JpZ2luID0gcHN0cmR1cChN eVN1YnNjcmlwdGlvbi0+b3JpZ2luKTsKIApAQCAtMzg5OSw2ICs0Njc4LDE1IEBAIElzTG9naWNh bFdvcmtlcih2b2lkKQogCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXIgIT0gTlVMTDsKIH0KIAor LyoKKyAqIElzIGN1cnJlbnQgcHJvY2VzcyBhIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VyPworICovCitib29sCitJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKHZv aWQpCit7CisJcmV0dXJuIElzTG9naWNhbFdvcmtlcigpICYmIGFtX3BhcmFsbGVsX2FwcGx5X3dv cmtlcigpOworfQorCiAvKgogICogU3RhcnQgc2tpcHBpbmcgY2hhbmdlcyBvZiB0aGUgdHJhbnNh Y3Rpb24gaWYgdGhlIGdpdmVuIExTTiBtYXRjaGVzIHRoZQogICogTFNOIHNwZWNpZmllZCBieSBz dWJzY3JpcHRpb24ncyBza2lwbHNuLgpAQCAtMzk2MSw3ICs0NzQ5LDcgQEAgY2xlYXJfc3Vic2Ny aXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIAlYTG9nUmVjUHRyCW15c2tp cGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lwbHNuOwogCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxz ZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBsc24pKSkKKwlpZiAo bGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkgfHwgYW1fcGFyYWxsZWxfYXBw bHlfd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBA IC00MDMzLDcgKzQ4MjEsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0 ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4 dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3Zv aWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJh Y2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7CkBAIC00MDYxLDIzICs0 ODQ5LDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIAkJCQkJICAgZXJyYXJn LT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNu KSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCi0JCWVycmNvbnRl eHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIg ZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlv biBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkg ICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVy cmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAot CQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJl bW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwog CWVsc2UKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRp b24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRp b24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9u ICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJ CQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVy cmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3Rl cmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJh cmctPnJlbW90ZV9hdHRudW1dLAotCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBM U05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJeworCQlpZiAoZXJyYXJnLT5y ZW1vdGVfYXR0bnVtIDwgMCkKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoZXJyYXJn LT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZv ciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZv ciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1 IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21l c3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAor CQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJw cm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmlu ZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIl cy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJCQkgICBl cnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJy YXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwK KwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFy Zy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9s c24pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKGVycmFy Zy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBm b3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBm b3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGlu IHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkg ICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tl cnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJ CWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNh dGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNh dGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rp b24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUs CisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJ CQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5h dHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVf eGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9 CisJfQogfQogCiAvKiBTZXQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gb2YgYXBwbHkgZXJyb3Ig Y2FsbGJhY2sgKi8KQEAgLTQwOTcsMyArNDkwOSw1MiBAQCByZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVtb3RlX2F0dG51bSA9 IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxpZFRyYW5zYWN0aW9uSWQs IEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFt ZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQgbWVzc2FnZS4KKyAqLwor dm9pZAorc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9yaWdpbm5hbWUpCit7 CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0 cmR1cChBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKK30KKwor LyoKKyAqIFJldHVybiB0aGUgYWN0aW9uIHRvIGJlIHRha2VuIGZvciB0aGUgZ2l2ZW4gdHJhbnNh Y3Rpb24uICp3aW5mbyBpcworICogYXNzaWduZWQgdG8gdGhlIGRlc3RpbmF0aW9uIHBhcmFsbGVs IHdvcmtlciBpbmZvIHdoZW4gdGhlIGdpdmVuCisgKiB0cmFuc2FjdGlvbiBpcyBiZWluZyBwcm9j ZXNzZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3N0YXRpYyBUcmFuc0Fw cGx5QWN0aW9uCitnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlk LCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKQoreworCSp3aW5mbyA9IE5VTEw7CisK KwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJeworCQlyZXR1cm4gVFJBTlNfUEFS QUxMRUxfQVBQTFk7CisJfQorCWVsc2UgaWYgKGluX3JlbW90ZV90cmFuc2FjdGlvbikKKwl7CisJ CXJldHVybiBUUkFOU19MRUFERVJfQVBQTFk7CisJfQorCisJLyoKKwkgKiBDaGVjayBpZiB3ZSBh cmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKwkg KiB3b3JrZXIuCisJICovCisJKndpbmZvID0gcGFfZmluZF93b3JrZXIoeGlkKTsKKworCWlmICgh KndpbmZvKQorCXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU7CisJfQorCWVsc2Ug aWYgKCgqd2luZm8pLT5zZXJpYWxpemVfY2hhbmdlcykKKwl7CisJCXJldHVybiBUUkFOU19MRUFE RVJfUEFSVElBTF9TRVJJQUxJWkU7CisJfQorCWVsc2UKKwl7CisJCXJldHVybiBUUkFOU19MRUFE RVJfU0VORF9UT19QQVJBTExFTDsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdv dXRwdXQvcGdvdXRwdXQuYwppbmRleCBjYTQ2ZmJhM2FmLi40MGM0NGJiN2U5IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4LDYgKzE4LDcgQEAK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCisjaW5j bHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4 ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5o IgpAQCAtMjkwLDcgKzI5MSw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlv bnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAlib29sCQlvcmlnaW5fb3B0aW9uX2dpdmVuID0gZmFs c2U7CiAKIAlkYXRhLT5iaW5hcnkgPSBmYWxzZTsKLQlkYXRhLT5zdHJlYW1pbmcgPSBmYWxzZTsK KwlkYXRhLT5zdHJlYW1pbmcgPSBMT0dJQ0FMUkVQX1NUUkVBTV9PRkY7CiAJZGF0YS0+bWVzc2Fn ZXMgPSBmYWxzZTsKIAlkYXRhLT50d29fcGhhc2UgPSBmYWxzZTsKIApAQCAtMzY5LDcgKzM3MCw3 IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0RGF0YSAq ZGF0YSkKIAkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikp KTsKIAkJCXN0cmVhbWluZ19naXZlbiA9IHRydWU7CiAKLQkJCWRhdGEtPnN0cmVhbWluZyA9IGRl ZkdldEJvb2xlYW4oZGVmZWwpOworCQkJZGF0YS0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5n TW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdv X3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNDYxLDEzICs0NjIsMjAgQEAgcGdvdXRwdXRfc3RhcnR1 cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMgKm9wdCwK IAkJICogd2Ugb25seSBhbGxvdyBpdCB3aXRoIHN1ZmZpY2llbnQgdmVyc2lvbiBvZiB0aGUgcHJv dG9jb2wsIGFuZCB3aGVuCiAJCSAqIHRoZSBvdXRwdXQgcGx1Z2luIHN1cHBvcnRzIGl0LgogCQkg Ki8KLQkJaWYgKCFkYXRhLT5zdHJlYW1pbmcpCisJCWlmIChkYXRhLT5zdHJlYW1pbmcgPT0gTE9H SUNBTFJFUF9TVFJFQU1fT0ZGKQogCQkJY3R4LT5zdHJlYW1pbmcgPSBmYWxzZTsKLQkJZWxzZSBp ZiAoZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJ T05fTlVNKQorCQllbHNlIGlmIChkYXRhLT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJFUF9TVFJFQU1f T04gJiYKKwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RS RUFNX1ZFUlNJT05fTlVNKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCSBlcnJtc2coInJlcXVlc3RlZCBwcm90 b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nLCBuZWVkICVkIG9yIGhpZ2hl ciIsCiAJCQkJCQkJZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiwgTE9HSUNBTFJFUF9QUk9UT19TVFJF QU1fVkVSU0lPTl9OVU0pKSk7CisJCWVsc2UgaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FM UkVQX1NUUkVBTV9QQVJBTExFTCAmJgorCQkJCSBkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9H SUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pCisJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJ CQkJIGVycm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBw YXJhbGxlbCBzdHJlYW1pbmcsIG5lZWQgJWQgb3IgaGlnaGVyIiwKKwkJCQkJCQlkYXRhLT5wcm90 b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05V TSkpKTsKIAkJZWxzZSBpZiAoIWN0eC0+c3RyZWFtaW5nKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC0xODQxLDYg KzE4NDksOCBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0Nv bnRleHQgKmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlSZW9yZGVyQnVm ZmVyVFhOICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBj dHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29sCQl3cml0ZV9hYm9ydF9pbmZvID0gKGRh dGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCk7CiAKIAkvKgogCSAq IFRoZSBhYm9ydCBzaG91bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFtaW5nIGJsb2NrLCBldmVuIGZv ciBzdHJlYW1lZApAQCAtMTg1NCw3ICsxODY0LDkgQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0 cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJQXNzZXJ0KHJidHhuX2lzX3N0cmVh bWVkKHRvcHR4bikpOwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7Ci0J bG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4t PnhpZCk7CisJbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+ eGlkLCB0eG4tPnhpZCwgYWJvcnRfbHNuLAorCQkJCQkJCQkgIHR4bi0+eGFjdF90aW1lLmFib3J0 X3RpbWUsIHdyaXRlX2Fib3J0X2luZm8pOworCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVl KTsKIAogCWNsZWFudXBfcmVsX3N5bmNfY2FjaGUodG9wdHhuLT54aWQsIGZhbHNlKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCA3NzY3NjU3ZjI3Li43YzAwOWQ1MjVhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j bHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRp b25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpAQCAtNjU3LDYgKzY1OCw5 IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1By b2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlIYW5kbGVMb2dNZW1vcnlD b250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUEFSQUxM RUxfQVBQTFlfTUVTU0FHRSkpCisJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0 KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFU QUJBU0UpKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfREFUQUJBU0UpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRleCAxMDQzMDY4YmFj Li4yZjE3MWY1NTI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTExMTcsNiArMTExNyw0 NSBAQCBVbmxvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQs IHVpbnQxNiBvYmpzdWJpZCwKIAlMb2NrUmVsZWFzZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7CiB9 CiAKKy8qCisgKgkJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uCisgKgorICogT2J0YWlu IGEgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIGEgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBh IGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuIFNlZSBMb2NrUmVsYXRpb25JZEZv clNlc3Npb24gZm9yIG5vdGVzIGFib3V0CisgKiBzZXNzaW9uLWxldmVsIGxvY2tzLgorICovCit2 b2lkCitMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rp b25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSkKK3sK KwlMT0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTih0YWcsCisJ CQkJCQkJCSAgTXlEYXRhYmFzZUlkLAorCQkJCQkJCQkgIHN1Ym9pZCwKKwkJCQkJCQkJICB4aWQs CisJCQkJCQkJCSAgb2JqaWQpOworCisJKHZvaWQpIExvY2tBY3F1aXJlKCZ0YWcsIGxvY2ttb2Rl LCB0cnVlLCBmYWxzZSk7Cit9CisKKy8qCisgKgkJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNl c3Npb24KKyAqLwordm9pZAorVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1 Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJIExPQ0tNT0RF IGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9MT0NLVEFHX0FQUExZX1RSQU5T QUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFiYXNlSWQsCisJCQkJCQkJCSAgc3Vib2lkLAor CQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmppZCk7CisKKwlMb2NrUmVsZWFzZSgmdGFnLCBs b2NrbW9kZSwgdHJ1ZSk7Cit9CiAKIC8qCiAgKiBBcHBlbmQgYSBkZXNjcmlwdGlvbiBvZiBhIGxv Y2thYmxlIG9iamVjdCB0byBidWYuCkBAIC0xMjAyLDYgKzEyNDEsMTMgQEAgRGVzY3JpYmVMb2Nr VGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcpCiAJCQkJCQkJIHRhZy0+bG9j a3RhZ19maWVsZDMsCiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDQpOwogCQkJYnJlYWs7CisJ CWNhc2UgTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTjoKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVm LAorCQkJCQkJCSBfKCJyZW1vdGUgdHJhbnNhY3Rpb24gJXUgb2Ygc3Vic2NyaXB0aW9uICV1IG9m IGRhdGFiYXNlICV1IiksCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDMsCisJCQkJCQkJIHRh Zy0+bG9ja3RhZ19maWVsZDIsCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDEpOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKIAkJCQkJCQkgXygidW5y ZWNvZ25pemVkIGxvY2t0YWcgdHlwZSAlZCIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDAxZDI2NGI1 YWIuLmQ1Mjk1YzQ1ZmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwor KysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzOTEsNiArMzM5MSw5IEBAIFBy b2Nlc3NJbnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJ CVByb2Nlc3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAoUGFyYWxsZWxBcHBs eU1lc3NhZ2VQZW5kaW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCBiMmFiZDc1ZGRi Li4xZmFiNDVlNzQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBA IC0yMzAsNiArMjMwLDkgQEAgcGdzdGF0X2dldF93YWl0X2FjdGl2aXR5KFdhaXRFdmVudEFjdGl2 aXR5IHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU46CiAJCQlldmVu dF9uYW1lID0gIkxvZ2ljYWxMYXVuY2hlck1haW4iOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9F VkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU46CisJCQlldmVudF9uYW1lID0gIkxvZ2lj YWxQYXJhbGxlbEFwcGx5TWFpbiI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX1JFQ09W RVJZX1dBTF9TVFJFQU06CiAJCQlldmVudF9uYW1lID0gIlJlY292ZXJ5V2FsU3RyZWFtIjsKIAkJ CWJyZWFrOwpAQCAtMzg4LDYgKzM5MSw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50 SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJ CWV2ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNh c2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRToKKwkJCWV2 ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBwbHlTdGF0ZUNoYW5nZSI7CisJCQlicmVhazsK IAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZlbnRfbmFtZSA9ICJM b2dpY2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9hZHQvbG9ja2Z1bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKaW5k ZXggZjliMzI0ZWZlYy4uM2JmMDQ4MzFmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L2xvY2tmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwpA QCAtMzcsMTAgKzM3LDExIEBAIGNvbnN0IGNoYXIgKmNvbnN0IExvY2tUYWdUeXBlTmFtZXNbXSA9 IHsKIAkic3BlY3Rva2VuIiwKIAkib2JqZWN0IiwKIAkidXNlcmxvY2siLAotCSJhZHZpc29yeSIK KwkiYWR2aXNvcnkiLAorCSJhcHBseXRyYW5zYWN0aW9uIgogfTsKIAotU3RhdGljQXNzZXJ0RGVj bChsZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RBR19BRFZJU09SWSArIDEpLAor U3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RBR19M QVNUX1RZUEUgKyAxKSwKIAkJCQkgImFycmF5IGxlbmd0aCBtaXNtYXRjaCIpOwogCiAvKiBUaGlz IG11c3QgbWF0Y2ggZW51bSBQcmVkaWNhdGVMb2NrVGFyZ2V0VHlwZSAocHJlZGljYXRlX2ludGVy bmFscy5oKSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA0MzZhZmUxZDIx Li5iYzU2YzMyMzczIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMjk5Niw2 ICsyOTk2LDE4IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlO VUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uIiwKKwkJCVBHQ19TSUdIVVAsCisJCQlSRVBMSUNBVElPTl9TVUJT Q1JJQkVSUywKKwkJCWdldHRleHRfbm9vcCgiTWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXBw bHkgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiIpLAorCQkJTlVMTCwKKwkJfSwKKwkJJm1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24sCisJCTIsIDAsIE1BWF9QQVJB TExFTF9XT1JLRVJfTElNSVQsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7Imxv Z19yb3RhdGlvbl9hZ2UiLCBQR0NfU0lHSFVQLCBMT0dHSU5HX1dIRVJFLAogCQkJZ2V0dGV4dF9u b29wKCJTZXRzIHRoZSBhbW91bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaW5nICIKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBi L3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCA1YWZk ZWIwNGRlLi5jMmFkYTkyMDU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlCkBAIC0zNTksNiArMzU5LDcgQEAKICNtYXhfbG9naWNhbF9yZXBsaWNh dGlvbl93b3JrZXJzID0gNAkjIHRha2VuIGZyb20gbWF4X3dvcmtlcl9wcm9jZXNzZXMKIAkJCQkJ IyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2Ny aXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycwor I21heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4g ZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCiAKIAogIy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4v cGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNDRkOTU3YzAzOC4uZjQ1NGIzMWM1OCAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCkBAIC00NTMzLDcgKzQ1MzMsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQp CiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZl clN0cihxdWVyeSwgIiBzLnN1YnN0cmVhbSxcbiIpOwogCWVsc2UKLQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIgZmFsc2UgQVMgc3Vic3RyZWFtLFxuIik7CisJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiICdmJyBBUyBzdWJzdHJlYW0sXG4iKTsKIAogCWlmIChmb3V0LT5yZW1v dGVWZXJzaW9uID49IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCkBAIC00 NjcwLDggKzQ2NzAsMTAgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBT dWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQogCWlmIChzdHJjbXAoc3ViaW5mby0+c3ViYmluYXJ5 LCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBiaW5hcnkgPSB0 cnVlIik7CiAKLQlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgImYiKSAhPSAwKQorCWlm IChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBvbiIpOworCWVsc2UgaWYgKHN0cmNtcChzdWJp bmZvLT5zdWJzdHJlYW0sICJwIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks ICIsIHN0cmVhbWluZyA9IHBhcmFsbGVsIik7CiAKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnR3 b3BoYXNlc3RhdGUsIHR3b19waGFzZV9kaXNhYmxlZCkgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIsIHR3b19waGFzZSA9IG9uIik7CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IGRmMTY2MzY1ZTgu LjI2NWIyOGQ5MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3Ny Yy9iaW4vcHNxbC9kZXNjcmliZS5jCkBAIC02NTAyLDExICs2NTAyLDI0IEBAIGRlc2NyaWJlU3Vi c2NyaXB0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UpCiAJewogCQkvKiBC aW5hcnkgbW9kZSBhbmQgc3RyZWFtaW5nIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB2MTQgYW5kIGhp Z2hlciAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNDAwMDApCisJCXsKIAkJCWFwcGVuZFBR RXhwQnVmZmVyKCZidWYsCi0JCQkJCQkJICAiLCBzdWJiaW5hcnkgQVMgXCIlc1wiXG4iCi0JCQkJ CQkJICAiLCBzdWJzdHJlYW0gQVMgXCIlc1wiXG4iLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJC aW5hcnkiKSwKLQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikpOworCQkJCQkJCSAg Iiwgc3ViYmluYXJ5IEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkgIGdldHRleHRfbm9vcCgiQmluYXJ5 IikpOworCisJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCisJCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCAoQ0FTRSBzdWJzdHJlYW1cbiIKKwkJCQkJCQkJICAi ICAgIFdIRU4gJ2YnIFRIRU4gJ29mZidcbiIKKwkJCQkJCQkJICAiICAgIFdIRU4gJ3QnIFRIRU4g J29uJ1xuIgorCQkJCQkJCQkgICIgICAgV0hFTiAncCcgVEhFTiAncGFyYWxsZWwnXG4iCisJCQkJ CQkJCSAgIiAgIEVORCkgQVMgXCIlc1wiXG4iLAorCQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3Ry ZWFtaW5nIikpOworCQkJZWxzZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJ CSAgIiwgc3Vic3RyZWFtIEFTIFwiJXNcIlxuIiwKKwkJCQkJCQkJICBnZXR0ZXh0X25vb3AoIlN0 cmVhbWluZyIpKTsKKwkJfQogCiAJCS8qIFR3b19waGFzZSBhbmQgZGlzYWJsZV9vbl9lcnJvciBh cmUgb25seSBzdXBwb3J0ZWQgaW4gdjE1IGFuZCBoaWdoZXIgKi8KIAkJaWYgKHBzZXQuc3ZlcnNp b24gPj0gMTUwMDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3Jp cHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggN2I5 ODcxNGYzMC4uNWI5ZTVhMzk5YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o CkBAIC04MCw3ICs4MCw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0 aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViYmlu YXJ5OwkJLyogVHJ1ZSBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIHRoZQogCQkJCQkJCQkgKiBw dWJsaXNoZXIgdG8gc2VuZCBkYXRhIGluIGJpbmFyeSAqLwogCi0JYm9vbAkJc3Vic3RyZWFtOwkJ LyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdWJzdHJlYW07 CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiBTZWUKKwkJCQkJCQkJICogU1VC U1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAKIAljaGFyCQlzdWJ0d29waGFzZXN0YXRlOwkvKiBT dHJlYW0gdHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCkBAIC0xMjQsNyArMTI1LDggQEAgdHlw ZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZW5hYmxlZDsJCS8qIEluZGljYXRlcyBp ZiB0aGUgc3Vic2NyaXB0aW9uIGlzIGVuYWJsZWQgKi8KIAlib29sCQliaW5hcnk7CQkJLyogSW5k aWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgZGF0YSBpbgogCQkJCQkJCQkgKiBiaW5h cnkgZm9ybWF0ICovCi0JYm9vbAkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnMuICovCisJY2hhcgkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWlu ZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCisJCQkJCQkJCSAqIFNlZSBTVUJTVFJFQU1feHh4 IGNvbnN0YW50cy4gKi8KIAljaGFyCQl0d29waGFzZXN0YXRlOwkvKiBBbGxvdyBzdHJlYW1pbmcg dHdvLXBoYXNlIHRyYW5zYWN0aW9ucyAqLwogCWJvb2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNh dGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2Fs bHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKQEAgLTEzNyw2ICsxMzksMjEgQEAgdHlwZWRl ZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJCSAqIHNwZWNpZmllZCBvcmlnaW4gKi8KIH0g U3Vic2NyaXB0aW9uOwogCisvKiBEaXNhbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNh Y3Rpb25zLiAqLworI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9PRkYgJ2YnCisKKy8qCisgKiBT dHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVuIHRvIGEgdGVtcG9y YXJ5IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9PTiAn dCcKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxp ZWQgaW1tZWRpYXRlbHkgdmlhIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqLworI2Rl ZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCAncCcKKwogZXh0ZXJuIFN1YnNjcmlwdGlv biAqR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiB2 b2lkIEZyZWVTdWJzY3JpcHRpb24oU3Vic2NyaXB0aW9uICpzdWIpOwogZXh0ZXJuIHZvaWQgRGlz YWJsZVN1YnNjcmlwdGlvbihPaWQgc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5oCmluZGV4IDJjYmU3ZDdiNjUuLjc3OTQ3NGY1NjUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKQEAgLTI2LDQgKzI2LDYgQEAgZXh0ZXJuIHZvaWQgRHJv cFN1YnNjcmlwdGlvbihEcm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVs KTsKIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyU3Vic2NyaXB0aW9uT3duZXIoY29uc3QgY2hh ciAqbmFtZSwgT2lkIG5ld093bmVySWQpOwogZXh0ZXJuIHZvaWQgQWx0ZXJTdWJzY3JpcHRpb25P d25lcl9vaWQoT2lkIHN1YmlkLCBPaWQgbmV3T3duZXJJZCk7CiAKK2V4dGVybiBjaGFyIGRlZkdl dFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKTsKKwogI2VuZGlmCQkJCQkJCS8qIFNVQlNDUklQ VElPTkNNRFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bGxhdW5jaGVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaApp bmRleCBmMWUyODIxZTI1Li5kNTEzZWY1MzNhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FsbGF1bmNoZXIuaApAQCAtMTQsNiArMTQsNyBAQAogCiBleHRlcm4gUEdETExJTVBPUlQg aW50IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7CiBleHRlcm4gUEdETExJTVBPUlQg aW50IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKK2V4dGVybiBQR0RMTElNUE9S VCBpbnQgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKIAogZXh0 ZXJuIHZvaWQgQXBwbHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlM YXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaAppbmRleCAxZWI3ZGRhNTI5Li40ZmEyYmQzN2RlIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMzIsMTIgKzMyLDE3IEBACiAgKgogICogTE9HSUNBTFJF UF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJz aW9uIHdpdGgKICAqIHN1cHBvcnQgZm9yIHR3by1waGFzZSBjb21taXQgZGVjb2RpbmcgKGF0IHBy ZXBhcmUgdGltZSkuIEludHJvZHVjZWQgaW4gUEcxNS4KKyAqCisgKiBMT0dJQ0FMUkVQX1BST1RP X1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJz aW9uCisgKiB3aGVyZSB3ZSBzdXBwb3J0IGFwcGx5aW5nIGxhcmdlIHN0cmVhbWluZyB0cmFuc2Fj dGlvbnMgaW4gcGFyYWxsZWwuCisgKiBJbnRyb2R1Y2VkIGluIFBHMTYuCiAgKi8KICNkZWZpbmUg TE9HSUNBTFJFUF9QUk9UT19NSU5fVkVSU0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BS T1RPX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lP Tl9OVU0gMgogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDMK LSNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9U T19UV09QSEFTRV9WRVJTSU9OX05VTQorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9Q QVJBTExFTF9WRVJTSU9OX05VTSA0CisjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJ T05fTlVNIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNCiAKIC8q CiAgKiBMb2dpY2FsIG1lc3NhZ2UgdHlwZXMKQEAgLTE3NSw2ICsxODAsMTcgQEAgdHlwZWRlZiBz dHJ1Y3QgTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCiAJY2hhcgkJZ2lkW0dJRFNJ WkVdOwogfSBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGE7CiAKKy8qCisgKiBUcmFu c2FjdGlvbiBwcm90b2NvbCBpbmZvcm1hdGlvbiBmb3Igc3RyZWFtIGFib3J0LgorICovCit0eXBl ZGVmIHN0cnVjdCBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCit7CisJVHJhbnNhY3Rpb25JZCB4 aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJWExvZ1JlY1B0cglhYm9ydF9sc247CisJVGlt ZXN0YW1wVHogYWJvcnRfdGltZTsKK30gTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YTsKKwogZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9iZWdpbihTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1 ZmZlclRYTiAqdHhuKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9iZWdpbihTdHJpbmdJ bmZvIGluLAogCQkJCQkJCQkgIExvZ2ljYWxSZXBCZWdpbkRhdGEgKmJlZ2luX2RhdGEpOwpAQCAt MjQ2LDkgKzI2MiwxMyBAQCBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9jb21t aXQoU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bgogZXh0ZXJuIFRyYW5zYWN0 aW9uSWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwKIAkJCQkJ CQkJCQkJCSAgIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBleHRlcm4gdm9p ZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rp b25JZCB4aWQsCi0JCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCk7Ci1leHRlcm4gdm9p ZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9u SWQgKnhpZCwKLQkJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKTsKKwkJCQkJCQkJCQkg IFRyYW5zYWN0aW9uSWQgc3VieGlkLAorCQkJCQkJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24s CisJCQkJCQkJCQkJICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAorCQkJCQkJCQkJCSAgYm9vbCB3 cml0ZV9hYm9ydF9pbmZvKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJv cnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJCQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAq YWJvcnRfZGF0YSwKKwkJCQkJCQkJCQkgYm9vbCByZWFkX2Fib3J0X2luZm8pOwogZXh0ZXJuIGNo YXIgKmxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbik7CiAK ICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMX1BST1RPX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaAppbmRleCBjZDFiNmU4YWZjLi5kYzY4Y2Q4OWM4IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBAIC0xMiw4ICsxMiwxNiBAQAogI2lmbmRl ZiBMT0dJQ0FMV09SS0VSX0gKICNkZWZpbmUgTE9HSUNBTFdPUktFUl9ICiAKKyNpbmNsdWRlIDxz aWduYWwuaD4KKworZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJh bGxlbEFwcGx5TWVzc2FnZVBlbmRpbmc7CisKIGV4dGVybiB2b2lkIEFwcGx5V29ya2VyTWFpbihE YXR1bSBtYWluX2FyZyk7CitleHRlcm4gdm9pZCBQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZyk7CiAKIGV4dGVybiBib29sIElzTG9naWNhbFdvcmtlcih2b2lkKTsKK2V4dGVy biBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIodm9pZCk7CitleHRlcm4gdm9pZCBI YW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIEhh bmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lD QUxXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2lu LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAppbmRleCAyYTUwZDEwYjUyLi5j N2IxYWRmZmY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaAor KysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaApAQCAtNTMsNyArNTMsNyBAQCBl eHRlcm4gWExvZ1JlY1B0ciByZXBsb3JpZ2luX2dldF9wcm9ncmVzcyhSZXBPcmlnaW5JZCBub2Rl LCBib29sIGZsdXNoKTsKIAogZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2Uo WExvZ1JlY1B0ciByZW1vdGVfY29tbWl0LAogCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBsb2NhbF9j b21taXQpOwotZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklk IG5vZGUpOworZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklk IG5vZGUsIGludCBhY3F1aXJlZF9ieSk7CiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25f cmVzZXQodm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0ciByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3By b2dyZXNzKGJvb2wgZmx1c2gpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9wZ291dHB1dC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaAppbmRleCAw MjAyNzU1MGUyLi4zYzMwZGE4MjA1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9wZ291dHB1dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKQEAg LTI2LDcgKzI2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRwdXREYXRhCiAJTGlzdAkgICAqcHVi bGljYXRpb25fbmFtZXM7CiAJTGlzdAkgICAqcHVibGljYXRpb25zOwogCWJvb2wJCWJpbmFyeTsK LQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFtaW5nOwogCWJvb2wJCW1lc3NhZ2VzOwog CWJvb2wJCXR3b19waGFzZTsKIAljaGFyCSAgICpvcmlnaW47CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggYzcwMGI1NWIxYy4uZjBlYjZjNGY3NCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtMzA4LDYgKzMwOCw3IEBAIHR5cGVk ZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAl7CiAJCVRpbWVzdGFtcFR6IGNvbW1pdF90aW1l OwogCQlUaW1lc3RhbXBUeiBwcmVwYXJlX3RpbWU7CisJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWU7 CiAJfQkJCXhhY3RfdGltZTsKIAogCS8qCkBAIC02NzAsNyArNjcxLDggQEAgZXh0ZXJuIHZvaWQg UmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IHhpZCwKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJDb21taXRDaGlsZChSZW9yZGVyQnVmZmVy ICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBzdWJ4aWQs IFhMb2dSZWNQdHIgY29tbWl0X2xzbiwKIAkJCQkJCQkJCSBYTG9nUmVjUHRyIGVuZF9sc24pOwot ZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2Fj dGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFi b3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24s CisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBleHRlcm4gdm9pZCBSZW9yZGVy QnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgb2xkZXN0UnVu bmluZ1hpZCk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIg KnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwogZXh0ZXJuIHZvaWQgUmVv cmRlckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LCBYTG9nUmVjUHRyIGxzbik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 YWxyZWNlaXZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAppbmRl eCA5MzM5ZjI5MzAzLi4wYzhiYmRkYWJlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2Vp dmVyLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB0eXBlZGVmIHN0cnVjdAogCQkJdWludDMyCQlwcm90 b192ZXJzaW9uOwkvKiBMb2dpY2FsIHByb3RvY29sIHZlcnNpb24gKi8KIAkJCUxpc3QJICAgKnB1 YmxpY2F0aW9uX25hbWVzOwkvKiBTdHJpbmcgbGlzdCBvZiBwdWJsaWNhdGlvbnMgKi8KIAkJCWJv b2wJCWJpbmFyeTsgLyogQXNrIHB1Ymxpc2hlciB0byB1c2UgYmluYXJ5ICovCi0JCQlib29sCQlz dHJlYW1pbmc7CS8qIFN0cmVhbWluZyBvZiBsYXJnZSB0cmFuc2FjdGlvbnMgKi8KKwkJCWNoYXIJ ICAgKnN0cmVhbWluZ19zdHI7CS8qIFN0cmVhbWluZyBvZiBsYXJnZSB0cmFuc2FjdGlvbnMgKi8K IAkJCWJvb2wJCXR3b3BoYXNlOwkvKiBTdHJlYW1pbmcgb2YgdHdvLXBoYXNlIHRyYW5zYWN0aW9u cyBhdAogCQkJCQkJCQkJICogcHJlcGFyZSB0aW1lICovCiAJCQljaGFyCSAgICpvcmlnaW47IC8q IE9ubHkgcHVibGlzaCBkYXRhIG9yaWdpbmF0aW5nIGZyb20gdGhlCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDJiNzExNGZmNmQuLjBiYTIwYTFlYTcgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xNyw4ICsxNywx MyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCisjaW5jbHVk ZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgi CisjaW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9maWxlc2V0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEu aCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4u aCIKIAogCkBAIC01MywxMyArNTgsMjQgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtl cgogCiAJLyoKIAkgKiBVc2VkIHRvIGNyZWF0ZSB0aGUgY2hhbmdlcyBhbmQgc3VieGFjdCBmaWxl cyBmb3IgdGhlIHN0cmVhbWluZwotCSAqIHRyYW5zYWN0aW9ucy4gIFVwb24gdGhlIGFycml2YWwg b2YgdGhlIGZpcnN0IHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgdGhlCi0JICogZmlsZXNldCB3aWxs IGJlIGluaXRpYWxpemVkLCBhbmQgaXQgd2lsbCBiZSBkZWxldGVkIHdoZW4gdGhlIHdvcmtlcgot CSAqIGV4aXRzLiAgVW5kZXIgdGhpcywgc2VwYXJhdGUgYnVmZmlsZXMgd291bGQgYmUgY3JlYXRl ZCBmb3IgZWFjaAotCSAqIHRyYW5zYWN0aW9uIHdoaWNoIHdpbGwgYmUgZGVsZXRlZCBhZnRlciB0 aGUgdHJhbnNhY3Rpb24gaXMgZmluaXNoZWQuCisJICogdHJhbnNhY3Rpb25zLiAgVXBvbiB0aGUg YXJyaXZhbCBvZiB0aGUgZmlyc3Qgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIG9yCisJICogd2hlbiB0 aGUgZmlyc3QtdGltZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRpbWVzIG91dCB3aGlsZSBzZW5kaW5n IGNoYW5nZXMKKwkgKiB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB0aGUgZmlsZXNldCB3 aWxsIGJlIGluaXRpYWxpemVkLCBhbmQgaXQKKwkgKiB3aWxsIGJlIGRlbGV0ZWQgd2hlbiB0aGUg d29ya2VyIGV4aXRzLiAgVW5kZXIgdGhpcywgc2VwYXJhdGUgYnVmZmlsZXMKKwkgKiB3b3VsZCBi ZSBjcmVhdGVkIGZvciBlYWNoIHRyYW5zYWN0aW9uIHdoaWNoIHdpbGwgYmUgZGVsZXRlZCBhZnRl ciB0aGUKKwkgKiB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZC4KIAkgKi8KIAlGaWxlU2V0ICAgICpz dHJlYW1fZmlsZXNldDsKIAorCS8qCisJICogUElEIG9mIGxlYWRlciBhcHBseSB3b3JrZXIgaWYg dGhpcyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIsIEludmFs aWRQaWQgb3RoZXJ3aXNlLgorCSAqLworCXBpZF90CQlhcHBseV9sZWFkZXJfcGlkOworCisJLyog SW5kaWNhdGVzIHdoZXRoZXIgYXBwbHkgY2FuIGJlIHBlcmZvcm1lZCBpbiBwYXJhbGxlbC4gKi8K Kwlib29sCQlwYXJhbGxlbF9hcHBseTsKKwogCS8qIFN0YXRzLiAqLwogCVhMb2dSZWNQdHIJbGFz dF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3RpbWU7CkBAIC02OCw5ICs4NCwxMzMgQEAg dHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCVRpbWVzdGFtcFR6IHJlcGx5X3RpbWU7 CiB9IExvZ2ljYWxSZXBXb3JrZXI7CiAKKy8qCisgKiBTdGF0ZSBvZiB0aGUgdHJhbnNhY3Rpb24g aW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRoZSBlbnVtIHZhbHVlcyBtdXN0IGhh dmUgdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHRyYW5zYWN0aW9uIHN0YXRlCisgKiB0cmFuc2l0aW9u cy4KKyAqLwordHlwZWRlZiBlbnVtIFBhcmFsbGVsVHJhbnNTdGF0ZQoreworCVBBUkFMTEVMX1RS QU5TX1VOS05PV04sCisJUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCwKKwlQQVJBTExFTF9UUkFOU19G SU5JU0hFRAorfSBQYXJhbGxlbFRyYW5zU3RhdGU7CisKKy8qCisgKiBTdGF0ZSBvZiBmaWxlc2V0 IHVzZWQgdG8gY29tbXVuaWNhdGUgY2hhbmdlcyBmcm9tIGxlYWRlciB0byBwYXJhbGxlbAorICog YXBwbHkgd29ya2VyLgorICoKKyAqIEZTX0VNUFRZIGluZGljYXRlcyBhbiBpbml0aWFsIHN0YXRl IHdoZXJlIHRoZSBsZWFkZXIgZG9lc24ndCBuZWVkIHRvIHVzZQorICogdGhlIGZpbGUgdG8gY29t bXVuaWNhdGUgd2l0aCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIEZTX1NFUklB TElaRV9JTl9QUk9HUkVTUyBpbmRpY2F0ZXMgdGhhdCB0aGUgbGVhZGVyIGlzIHNlcmlhbGl6aW5n IGNoYW5nZXMKKyAqIHRvIHRoZSBmaWxlLgorICoKKyAqIEZTX1NFUklBTElaRV9ET05FIGluZGlj YXRlcyB0aGF0IHRoZSBsZWFkZXIgaGFzIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8KKyAqIHRo ZSBmaWxlLgorICoKKyAqIEZTX1JFQURZIGluZGljYXRlcyB0aGF0IGl0IGlzIG5vdyBvayBmb3Ig YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKyAqIHJlYWQgdGhlIGZpbGUuCisgKi8KK3R5cGVk ZWYgZW51bSBQYXJ0aWFsRmlsZVNldFN0YXRlCit7CisJRlNfRU1QVFksCisJRlNfU0VSSUFMSVpF X0lOX1BST0dSRVNTLAorCUZTX1NFUklBTElaRV9ET05FLAorCUZTX1JFQURZCit9IFBhcnRpYWxG aWxlU2V0U3RhdGU7CisKKy8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0 d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbAorICogYXBwbHkgd29ya2Vycy4K KyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZAoreworCXNsb2Nr X3QJCW11dGV4OworCisJVHJhbnNhY3Rpb25JZCB4aWQ7CisKKwkvKgorCSAqIFN0YXRlIHVzZWQg dG8gZW5zdXJlIGNvbW1pdCBvcmRlcmluZy4KKwkgKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgd2lsbCBzZXQgaXQgdG8gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQgYWZ0ZXIKKwkgKiBo YW5kbGluZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIHdoaWxlIHRoZSBhcHBseSBs ZWFkZXIgd2lsbAorCSAqIHdhaXQgZm9yIGl0IHRvIGJlY29tZSBQQVJBTExFTF9UUkFOU19GSU5J U0hFRCBiZWZvcmUgcHJvY2VlZGluZyBpbgorCSAqIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5k cyAoZS5nLiBTVFJFQU1fQ09NTUlUL1NUUkVBTV9QUkVQQVJFKS4KKwkgKi8KKwlQYXJhbGxlbFRy YW5zU3RhdGUgeGFjdF9zdGF0ZTsKKworCS8qIEluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlc3Bv bmRpbmcgTG9naWNhbFJlcFdvcmtlciBzbG90LiAqLworCXVpbnQxNgkJbG9naWNhbHJlcF93b3Jr ZXJfZ2VuZXJhdGlvbjsKKwlpbnQJCQlsb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworCisJLyoK KwkgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGVyZSBhcmUgcGVuZGluZyBzdHJlYW1pbmcgYmxvY2tz IGluIHRoZSBxdWV1ZS4gVGhlCisJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgY2hlY2sg aXQgYmVmb3JlIHN0YXJ0aW5nIHRvIHdhaXQuCisJICovCisJcGdfYXRvbWljX3VpbnQzMglwZW5k aW5nX3N0cmVhbV9jb3VudDsKKworCS8qCisJICogWGFjdExhc3RDb21taXRFbmQgZnJvbSB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyLiBUaGlzIGlzIHJlcXVpcmVkIGJ5CisJICogdGhlIGxlYWRl ciB3b3JrZXIgc28gaXQgY2FuIHVwZGF0ZSB0aGUgbHNuX21hcHBpbmdzLgorCSAqLworCVhMb2dS ZWNQdHIJbGFzdF9jb21taXRfZW5kOworCisJLyoKKwkgKiBBZnRlciBlbnRlcmluZyBQQVJUSUFM X1NFUklBTElaRSBtb2RlLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsCisJICogc2VyaWFs aXplIGNoYW5nZXMgdG8gdGhlIGZpbGUsIGFuZCBzaGFyZSB0aGUgZmlsZXNldCB3aXRoIHRoZSBw YXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciB3aGVuIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9u IGZpbmlzaCBjb21tYW5kLiBUaGVuIHRoZQorCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxs IGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdlcy4KKwkgKgorCSAqIEZpbGVTZXQgaXMgdXNl ZCBoZXJlIGluc3RlYWQgb2YgU2hhcmVkRmlsZVNldCBiZWNhdXNlIHdlIG5lZWQgaXQgdG8KKwkg KiBzdXJ2aXZlIGFmdGVyIHJlbGVhc2luZyB0aGUgc2hhcmVkIG1lbW9yeSBzbyB0aGF0IHRoZSBs ZWFkZXIgYXBwbHkKKwkgKiB3b3JrZXIgY2FuIHJlLXVzZSB0aGUgc2FtZSBmaWxlc2V0IGZvciB0 aGUgbmV4dCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJICovCisJUGFydGlhbEZpbGVTZXRTdGF0 ZSBmaWxlc2V0X3N0YXRlOworCUZpbGVTZXQJCWZpbGVzZXQ7Cit9IFBhcmFsbGVsQXBwbHlXb3Jr ZXJTaGFyZWQ7CisKKy8qCisgKiBJbmZvcm1hdGlvbiB3aGljaCBpcyB1c2VkIHRvIG1hbmFnZSB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFw cGx5V29ya2VySW5mbworeworCXNobV9tcV9oYW5kbGUgKm1xX2hhbmRsZTsKKworCS8qCisJICog VGhlIHF1ZXVlIHVzZWQgdG8gdHJhbnNmZXIgZXJyb3IgbWVzc2FnZXMgZnJvbSB0aGUgcGFyYWxs ZWwgYXBwbHkKKwkgKiB3b3JrZXIgdG8gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCisJICovCisJ c2htX21xX2hhbmRsZSAqZXJyb3JfbXFfaGFuZGxlOworCisJZHNtX3NlZ21lbnQgKmRzbV9zZWc7 CisKKwkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG5l ZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKwkgKiByZW1haW5pbmcgY2hhbmdlcyB0byBhIGZpbGUgZHVl IHRvIHRpbWVvdXQgd2hlbiBhdHRlbXB0aW5nIHRvIHNlbmQgZGF0YQorCSAqIHRvIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuCisJICovCisJYm9vbAkJc2VyaWFs aXplX2NoYW5nZXM7CisKKwkvKgorCSAqIFRydWUgaWYgdGhlIHdvcmtlciBpcyBiZWluZyB1c2Vk IHRvIHByb2Nlc3MgYSBwYXJhbGxlbCBhcHBseQorCSAqIHRyYW5zYWN0aW9uLiBGYWxzZSBpbmRp Y2F0ZXMgdGhpcyB3b3JrZXIgaXMgYXZhaWxhYmxlIGZvciByZS11c2UuCisJICovCisJYm9vbAkJ aW5fdXNlOworCisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOworfSBQYXJhbGxl bEFwcGx5V29ya2VySW5mbzsKKwogLyogTWFpbiBtZW1vcnkgY29udGV4dCBmb3IgYXBwbHkgd29y a2VyLiBQZXJtYW5lbnQgZHVyaW5nIHdvcmtlciBsaWZldGltZS4gKi8KIGV4dGVybiBQR0RMTElN UE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dDsKIAorZXh0ZXJuIFBHRExMSU1QT1JUIE1l bW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIEVy cm9yQ29udGV4dENhbGxiYWNrICphcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrOworCitleHRlcm4g UEdETExJTVBPUlQgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZDsK KwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9uICovCiBleHRlcm4gUEdETExJTVBPUlQgc3Ry dWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubjsKIApAQCAtODQsOSAr MjI0LDExIEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7 CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3Vi aWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKIGV4dGVybiBM aXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5n KTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1 YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxp ZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBz dWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVs aWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIHZvaWQg bG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24p OwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9pZCBzdWJpZCwgT2lkIHJl bGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cF9wdHIoTG9naWNhbFJl cFdvcmtlciAqd29ya2VyKTsKIApAQCAtMTAzLDEwICsyNDUsNzkgQEAgZXh0ZXJuIHZvaWQgcHJv Y2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lk IGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwK IAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIHN0cmVhbV9zdGFy dF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KTsKK2V4dGVy biB2b2lkIHN0cmVhbV9zdG9wX2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkKTsKKworLyogQ29t bW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVzc2FnZXMg Ki8KK2V4dGVybiB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoRmlsZVNldCAqc3RyZWFtX2Zp bGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkgICBYTG9nUmVjUHRyIGxzbik7CisK K2V4dGVybiB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7CisKK2V4dGVybiB2b2lk IG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7CisKK2V4dGVybiB2b2lkIHN0cmVhbV9j bGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOworCitleHRlcm4gdm9p ZCBJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCk7CisKK2V4dGVybiB2b2lkIHN0b3JlX2ZsdXNo X3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgWExvZ1JlY1B0ciBsb2NhbF9sc24pOwor CisvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KK2V4dGVybiB2b2lkIGFw cGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CitleHRlcm4gdm9pZCBzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9vcmlnaW4oY2hhciAqb3JpZ2lubmFtZSk7CisKKy8qIFBhcmFsbGVsIGFwcGx5 IHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICovCitleHRlcm4gdm9pZCBwYV9hbGxvY2F0 ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICpwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gYm9vbCBwYV9m cmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOworZXh0ZXJuIHZvaWQg cGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKKworZXh0ZXJuIGJvb2wgcGFfc2VuZF9kYXRh KFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCisJCQkJCQkgY29u c3Qgdm9pZCAqZGF0YSk7CitleHRlcm4gdm9pZCBwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxp emUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAorCQkJCQkJCQkJCSAgIGJvb2wgc3Ry ZWFtX2xvY2tlZCk7CisKK2V4dGVybiB2b2lkIHBhX3NldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBw bHlXb3JrZXJTaGFyZWQgKndzaGFyZWQsCisJCQkJCQkJICBQYXJhbGxlbFRyYW5zU3RhdGUgaW5f eGFjdCk7CitleHRlcm4gdm9pZCBwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8pOworCitleHRlcm4gdm9pZCBwYV9zdGFydF9zdWJ0cmFucyhU cmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkLAorCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCB0b3BfeGlk KTsKK2V4dGVybiB2b2lkIHBhX3Jlc2V0X3N1YnRyYW5zKHZvaWQpOworZXh0ZXJuIHZvaWQgcGFf c3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEpOworZXh0 ZXJuIHZvaWQgcGFfc2V0X2ZpbGVzZXRfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAq d3NoYXJlZCwKKwkJCQkJCQkJIFBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZSk7CisK K2V4dGVybiB2b2lkIHBhX2xvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBs b2NrbW9kZSk7CitleHRlcm4gdm9pZCBwYV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlk LCBMT0NLTU9ERSBsb2NrbW9kZSk7CisKK2V4dGVybiB2b2lkIHBhX2xvY2tfdHJhbnNhY3Rpb24o VHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIHBhX3Vu bG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpOwor CitleHRlcm4gdm9pZCBwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKTsKKworZXh0 ZXJuIHZvaWQgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAor CQkJCQkJICAgWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKKworI2RlZmluZSBpc1BhcmFsbGVsQXBw bHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFwcGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBp ZCkKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQpCiB7CiAJ cmV0dXJuIE9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCk7CiB9CiAKK3N0YXRp YyBpbmxpbmUgYm9vbAorYW1fbGVhZGVyX2FwcGx5X3dvcmtlcih2b2lkKQoreworCXJldHVybiAo IU9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkgJiYKKwkJCSFpc1BhcmFsbGVs QXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v bAorYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKHZvaWQpCit7CisJcmV0dXJuIGlzUGFyYWxsZWxB cHBseVdvcmtlcihNeUxvZ2ljYWxSZXBXb3JrZXIpOworfQorCiAjZW5kaWYJCQkJCQkJLyogV09S S0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKaW5kZXggYmUxZDJjOTlhOS4uNWEzYmQwM2Jh NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKKysrIGIvc3JjL2luY2x1 ZGUvc3RvcmFnZS9sbWdyLmgKQEAgLTEwNyw2ICsxMDcsMTEgQEAgZXh0ZXJuIHZvaWQgTG9ja1No YXJlZE9iamVjdEZvclNlc3Npb24oT2lkIGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1 YmlkLAogZXh0ZXJuIHZvaWQgVW5sb2NrU2hhcmVkT2JqZWN0Rm9yU2Vzc2lvbihPaWQgY2xhc3Np ZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jqc3ViaWQsCiAJCQkJCQkJCQkJIExPQ0tNT0RFIGxvY2tt b2RlKTsKIAorZXh0ZXJuIHZvaWQgTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBz dWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQsCisJCQkJCQkJCQkJICAgTE9D S01PREUgbG9ja21vZGUpOworZXh0ZXJuIHZvaWQgVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNl c3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJ CQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKKwogLyogRGVzY3JpYmUgYSBsb2NrdGFnIGZvciBl cnJvciBtZXNzYWdlcyAqLwogZXh0ZXJuIHZvaWQgRGVzY3JpYmVMb2NrVGFnKFN0cmluZ0luZm8g YnVmLCBjb25zdCBMT0NLVEFHICp0YWcpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL2xvY2suaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCmluZGV4IGU0ZTE0OTViMjQu Ljc3NjYxMjNhN2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCisrKyBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCkBAIC0xNDksMTAgKzE0OSwxMiBAQCB0eXBlZGVm IGVudW0gTG9ja1RhZ1R5cGUKIAlMT0NLVEFHX1NQRUNVTEFUSVZFX1RPS0VOLAkvKiBzcGVjdWxh dGl2ZSBpbnNlcnRpb24gWGlkIGFuZCB0b2tlbiAqLwogCUxPQ0tUQUdfT0JKRUNULAkJCQkvKiBu b24tcmVsYXRpb24gZGF0YWJhc2Ugb2JqZWN0ICovCiAJTE9DS1RBR19VU0VSTE9DSywJCQkvKiBy ZXNlcnZlZCBmb3Igb2xkIGNvbnRyaWIvdXNlcmxvY2sgY29kZSAqLwotCUxPQ0tUQUdfQURWSVNP UlkJCQkvKiBhZHZpc29yeSB1c2VyIGxvY2tzICovCisJTE9DS1RBR19BRFZJU09SWSwJCQkvKiBh ZHZpc29yeSB1c2VyIGxvY2tzICovCisJTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTgkvKiB0cmFu c2FjdGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9naWNhbAorCQkJCQkJCQkgKiByZXBsaWNhdGlv biBzdWJzY3JpYmVyICovCiB9IExvY2tUYWdUeXBlOwogCi0jZGVmaW5lIExPQ0tUQUdfTEFTVF9U WVBFCUxPQ0tUQUdfQURWSVNPUlkKKyNkZWZpbmUgTE9DS1RBR19MQVNUX1RZUEUJTE9DS1RBR19B UFBMWV9UUkFOU0FDVElPTgogCiBleHRlcm4gUEdETExJTVBPUlQgY29uc3QgY2hhciAqY29uc3Qg TG9ja1RhZ1R5cGVOYW1lc1tdOwogCkBAIC0yNzgsNiArMjgwLDE3IEBAIHR5cGVkZWYgc3RydWN0 IExPQ0tUQUcKIAkgKGxvY2t0YWcpLmxvY2t0YWdfdHlwZSA9IExPQ0tUQUdfQURWSVNPUlksIFwK IAkgKGxvY2t0YWcpLmxvY2t0YWdfbG9ja21ldGhvZGlkID0gVVNFUl9MT0NLTUVUSE9EKQogCisv KgorICogSUQgaW5mbyBmb3IgYSByZW1vdGUgdHJhbnNhY3Rpb24gb24gYSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHN1YnNjcmliZXIgaXM6IERCCisgKiBPSUQgKyBTVUJTQ1JJUFRJT04gT0lEICsgVFJB TlNBQ1RJT04gSUQgKyBPQkpJRAorICovCisjZGVmaW5lIFNFVF9MT0NLVEFHX0FQUExZX1RSQU5T QUNUSU9OKGxvY2t0YWcsZGJvaWQsc3Vib2lkLHhpZCxvYmppZCkgXAorCSgobG9ja3RhZykubG9j a3RhZ19maWVsZDEgPSAoZGJvaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMiA9IChz dWJvaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMyA9ICh4aWQpLCBcCisJIChsb2Nr dGFnKS5sb2NrdGFnX2ZpZWxkNCA9IChvYmppZCksIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfdHlw ZSA9IExPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04sIFwKKwkgKGxvY2t0YWcpLmxvY2t0YWdfbG9j a21ldGhvZGlkID0gREVGQVVMVF9MT0NLTUVUSE9EKQogCiAvKgogICogUGVyLWxvY2tlZC1vYmpl Y3QgbG9jayBpbmZvcm1hdGlvbjoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJv Y3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKaW5kZXggZWU2MzY5 MDBmMy4uOTNhNTFmNDI1NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2ln bmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1 LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNr IHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVS LAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllf Q09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQ Uk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3NhZ2UgZnJvbSBwYXJhbGxlbCBh cHBseSB3b3JrZXJzICovCiAKIAkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICovCiAJUFJP Q1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRl eCAwYjIxMDBiZTRhLi43NjNmYmVhZGZiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93 YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC00Miw2 ICs0Miw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4sCiAJ V0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5D SEVSX01BSU4sCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4sCiAJV0FJ VF9FVkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFNLAogCVdBSVRfRVZFTlRfU1lTTE9HR0VSX01BSU4s CiAJV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfTUFJTiwKQEAgLTEwNSw2ICsxMDYsNyBAQCB0eXBl ZGVmIGVudW0KIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0FMTE9DQVRFLAogCVdBSVRf RVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfRUxFQ1QsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVD S0VUU19SRUlOU0VSVCwKKwlXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVf Q0hBTkdFLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJ Q0FMX1NZTkNfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggYzEzZDIxOGRjZi4uMWVk NmY0YzM5YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRp b24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApA QCAtMTE3LDcgKzExNyw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11 c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgIE5hbWUgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwg QmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3Ig fCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAg ICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190 ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IG5vbmUgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgU0VUIChvcmlnaW4gPSBhbnkpOwpAQCAtMTI1 LDcgKzEyNSw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3Jp Z2luID0gYW55KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCiAgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25f dXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3Vi NCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIzOwpA QCAtMTM4LDcgKzEzOCw3IEBAIEVSUk9SOiAgaW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50 YXg6IG1pc3NpbmcgIj0iIGFmdGVyICJmb29iYXIiIGluIGNvbm5lY3RpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAg ICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCBQVUJMSUNBVElPTiB0ZXN0cHViMiwgdGVzdHB1 YjMgV0lUSCAocmVmcmVzaCA9IGZhbHNlKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzEyMzQ1Jyk7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQ dWJsaWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzEyMzQ1CisgcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQogKDEgcm93KQogCiAtLSBvayAtIHdpdGgg bHNuID0gTk9ORQpAQCAtMTcwLDcgKzE3MCw3IEBAIEVSUk9SOiAgaW52YWxpZCBXQUwgbG9jYXRp b24gKExTTik6IDAvMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAt LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9 IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QyIHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAK IEJFR0lOOwpAQCAtMjA1LDcgKzIwNSw3IEBAIEhJTlQ6ICBBdmFpbGFibGUgdmFsdWVzOiBsb2Nh bCwgcmVtb3RlX3dyaXRlLCByZW1vdGVfYXBwbHksIG9uLCBvZmYuCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgICBOYW1l ICAgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJs aWNhdGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgbG9j YWwgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorIHJl Z3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKICgxIHJvdykKIAogLS0gcmVuYW1lIGJh Y2sgdG8ga2VlcCB0aGUgcmVzdCBzaW1wbGUKQEAgLTI0Miw3ICsyNDIsNyBAQCBISU5UOiAgVG8g aW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGlj YXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgZiAgICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAg ICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KGJpbmFyeSA9IGZhbHNlKTsKQEAgLTI1MSwxMyArMjUxLDEzIEBAIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29s ZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZh bHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29s ZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3Ig InBhcmFsbGVsIgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FU SU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdB Uk5JTkc6ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCkBA IC0yNjYsNyArMjY2LDE1IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11 c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAg ICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBC aW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8 IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAg ICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCB0ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorKDEgcm93KQorCitBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworXGRS cysKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CkBAIC0yNzUsNyArMjgz LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9 IE5PTkUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIGFscmVhZHkgZXhpc3RzCkBAIC0yOTMs NyArMzAxLDcgQEAgRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1YjEiIGlzIGFscmVhZHkgaW4g c3Vic2NyaXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgICAgIFB1YmxpY2F0aW9u ICAgICAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IGYg ICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisg cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWls IC0gcHVibGljYXRpb24gdXNlZCBtb3JlIHRoZW4gb25jZQpAQCAtMzExLDcgKzMxOSw3IEBAIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHVi MSwgdGVzdHB1YjIgV0lUSCAocmVmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBU d28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3Vz IGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWI7CkBAIC0zNTAsNyArMzU4LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5 b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1l ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlv biB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVy cm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAg ICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25f dXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFp bCAtIGFsdGVyIG9mIHR3b19waGFzZSBvcHRpb24gbm90IHN1cHBvcnRlZC4KQEAgLTM2Miw3ICsz NzAsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5n ID0gdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xv dF9uYW1lID0gTk9ORSk7CkBAIC0zNzUsNyArMzgzLDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJl cGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3Qs IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IHAgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAg ICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUg PSBOT05FKTsKQEAgLTM5MSw3ICszOTksNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRp b24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAg IE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1Ymxp Y2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAog QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3Ig PSB0cnVlKTsKQEAgLTM5OSw3ICs0MDcsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190 ZXN0c3ViIFNFVCAoZGlzYWJsZV9vbl9lcnJvciA9IHRydWUpOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBT a2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAg ICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBh bnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3N1YnNjcmlwdGlvbi5zcWwKaW5kZXggZWFlYWRlOGNjZS4uNzk5MWFiZmU4ZiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCkBAIC0xNjcsNyArMTY3LDcgQEAgQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCiBE Uk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CiAKLS0tIGZhaWwgLSBzdHJlYW1pbmcg bXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAn cGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9O ICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAo Y29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28pOwogCiAtLSBub3cgaXQgd29ya3MKQEAg LTE3NSw2ICsxNzUsMTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09O TkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIAogXGRScysKIAorQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVs KTsKKworXGRScysKKwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0 cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzbG90X25hbWUgPSBOT05FKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2MGM3 MWQwNWZlLi5hYjNmMWIyMDgyIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTQ3Miw2 ICsxNDcyLDcgQEAgTG9naWNhbFJlcFJlbElkCiBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIExvZ2lj YWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCitMb2dpY2Fs UmVwU3RyZWFtQWJvcnREYXRhCiBMb2dpY2FsUmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBM b2dpY2FsUmVwV29ya2VyCkBAIC0xODc1LDYgKzE4NzYsOSBAQCBQYWdlWExvZ1JlY1B0cgogUGFn ZXRhYmxlRW50cnkKIFBhaXJzCiBQYXJhbGxlbEFwcGVuZFN0YXRlCitQYXJhbGxlbEFwcGx5V29y a2VyRW50cnkKK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCitQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkCiBQYXJhbGxlbEJpdG1hcEhlYXBTdGF0ZQogUGFyYWxsZWxCbG9ja1RhYmxlU2NhbkRlc2MK IFBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3JrZXIKQEAgLTE4OTQsNiArMTg5OCw3IEBAIFBhcmFs bGVsU2xvdFJlc3VsdEhhbmRsZXIKIFBhcmFsbGVsU3RhdGUKIFBhcmFsbGVsVGFibGVTY2FuRGVz YwogUGFyYWxsZWxUYWJsZVNjYW5EZXNjRGF0YQorUGFyYWxsZWxUcmFuc1N0YXRlCiBQYXJhbGxl bFZhY3V1bVN0YXRlCiBQYXJhbGxlbFdvcmtlckNvbnRleHQKIFBhcmFsbGVsV29ya2VySW5mbwpA QCAtMTkyMyw2ICsxOTI4LDcgQEAgUGFyc2VyU3RhdGUKIFBhcnRDbGF1c2VJbmZvCiBQYXJ0Q2xh dXNlTWF0Y2hTdGF0dXMKIFBhcnRDbGF1c2VUYXJnZXQKK1BhcnRpYWxGaWxlU2V0U3RhdGUKIFBh cnRpdGlvbkJvdW5kSW5mbwogUGFydGl0aW9uQm91bmRJbmZvRGF0YQogUGFydGl0aW9uQm91bmRT cGVjCkBAIC0yNzczLDYgKzI3NzksNyBAQCBUb2NFbnRyeQogVG9rZW5BdXhEYXRhCiBUb2tlbml6 ZWRBdXRoTGluZQogVHJhY2tJdGVtCitUcmFuc0FwcGx5QWN0aW9uCiBUcmFuc0ludmFsaWRhdGlv bkluZm8KIFRyYW5zU3RhdGUKIFRyYW5zYWN0aW9uSWQKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_008_OS0PR01MB5716C1C1D8244BA86311193894EB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v64-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v64-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v64-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=81988; creation-date="Wed, 21 Dec 2022 05:32:16 GMT"; modification-date="Wed, 21 Dec 2022 05:32:34 GMT" Content-Transfer-Encoding: base64 RnJvbSA0ZDVkOTIxZTdhZDMwZGFiYWE4OGZmY2IzMDQyNTViZDU5YjBjYWJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NjQg Mi83XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgIHwgICAxICsKIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICB8IDIzMiArKysrKy0t LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIHwgMTQzICsr Ky0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCAgICAgfCAyMjEg KysrKy0tLQogLi4uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsICAgICAgICAgICAgIHwg MjMzICsrKysrLS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAg ICAgfCAxMzQgKysrKy0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5w bCAgICB8IDM5MyArKysrKysrKy0tLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNl X3N0cmVhbS5wbCAgICAgfCA1NDAgKysrKysrKysrKystLS0tLS0tCiAuLi4vdC8wMzJfc3RyZWFt X3BhcmFsbGVsX2NvbmZsaWN0LnBsICAgICAgICAgfCAxNTIgKysrKysKIDkgZmlsZXMgY2hhbmdl ZCwgMTQwNCBpbnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5w bAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAppbmRleCBjMjgxMjFmMjZlLi5mMzEwNDM4Yzgy IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vbWVzb24uYnVpbGQKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCkBAIC0zOCw2ICszOCw3IEBAIHRlc3RzICs9 IHsKICAgICAgICd0LzAyOV9vbl9lcnJvci5wbCcsCiAgICAgICAndC8wMzBfb3JpZ2luLnBsJywK ICAgICAgICd0LzAzMV9jb2x1bW5fbGlzdC5wbCcsCisgICAgICAndC8wMzJfc3RyZWFtX3BhcmFs bGVsX2NvbmZsaWN0LnBsJywKICAgICAgICd0LzEwMF9idWdzLnBsJywKICAgICBdLAogICB9LApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggY2JhYTMyN2U0NC4uMzg5NDFm ZmMwMSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAor KysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTQ5 IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBi eSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkg KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisK KwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9n KAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNU UkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0 ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1p bmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhl IHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rf c3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJh bnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0gJyc7 CisJbXkgJG91dCA9ICcnOworCisJbXkgJG9mZnNldCA9IDA7CisKKwlteSAkdGltZXIgPSBJUEM6 OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7 CisKKwlteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IFwkaW4sIFwkb3V0LCAkdGltZXIsCisJCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKwkjIElmICJz dHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0 byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBh IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVH MSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3Np dHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJJGluIC49IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxxCisJ fTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28g aWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0 LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMz NHwzMzM0fDMzMzQpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJyk7CisKKwkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor CisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUg NjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwkkcmVz dWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwor CWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworCisJIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBv ZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKKwkjIHVwZGF0ZSBwdWJsaXNo ZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKKwkjIHZh bHVlcy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBi ZWhhdmUKKwkjIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNF VCBjID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgor CSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4 dCkiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFs bGVsLCAnQ09NTUlUJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJv bSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsKKwlp cygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRh CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRu b2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVy Jyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcp OwpAQCAtMzcsNiArMTgwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwog CiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRI IChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksODIgKzE5NiwyNSBAQCBteSAkcmVzdWx0ID0K IAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9u cywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCi1teSAkaW4gID0gJyc7Ci1teSAkb3V0 ID0gJyc7Ci0KLW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKLQotbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAotCW9uX2Vycm9y X3N0b3AgPT4gMCk7Ci0KLSRpbiAuPSBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7 Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotfTsKLSRoLT5wdW1wX25iOwot Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4g NTAwMDsKLUNPTU1JVDsKLX0pOwotCi0kaW4gLj0gcXsKLUNPTU1JVDsKLVxxCi19OwotJGgtPmZp bmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVt IGhlcmUKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot JHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7 Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksICdjaGVjayBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIFRlc3QgdGhlIHN0cmVhbWluZyBp biBiaW5hcnkgbW9kZQotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7Ci0KLSMgSW5z ZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGlt aXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwgJ2NoZWNr IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFy YWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBp ZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyk7CiAKLSMgQ2hhbmdlIHRoZSBsb2NhbCB2 YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCi0jIHVwZGF0ZSBw dWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQK LSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rp b25zIGJlaGF2ZQotIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIg U0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyci Ci0pOwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIpOwogCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfcHVibGlzaGVyLT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdo aWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBU SU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1 NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCi0pOwotaXMoJHJlc3VsdCwgcXEo NjY2N3w2NjY3fDY2NjcpLAotCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBj aGFuZ2VkIGRhdGEnKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVf cHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2 X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9z dWJ4YWN0LnBsCmluZGV4IGJjMGE5Y2QwNTMuLjM2YTE4MDMwMmIgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKQEAgLTgsNiArOCw5NCBAQCB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK IHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJh bnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRp c19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFy L0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5 cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRo ZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBw YXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1p bmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWlu ZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAk aXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWlu ZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNr CisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBt ZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK KwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0Ig bGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAxMDAwKSBzKGkpOwor CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMjsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEwMDEsIDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgMjAwMCkgcyhpKTsKKwlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyMDAxLCAyNTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNl dCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDE2 Njd8MTY2N3wxNjY3KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGlu IHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMn CisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMiki KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBS ZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30K KwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmlu aXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTI1LDEwIEBAICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElP TiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3Vi JzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04g dGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0k YXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpA QCAtNDksNDEgKzE0MSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwy fDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0j IEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGlt aXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhpKTsKLVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNB VkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAyNTAwKSBz KGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0 ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDE2Njd8MTY2N3wxNjY3KSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2Nh bCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCki KTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisg IG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQg YWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmli ZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE3X3N0cmVhbV9kZGwucGwKaW5kZXggODY2ZjE1MTJlNC4uNWU3MTY4MjhjZSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAgLTgsNiArOCwxMzggQEAg dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVk IHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ CQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFN ICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFs bCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIK KyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3Ry ZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJl YW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIGEgc21hbGwg KG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3Rh YiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOworCUNPTU1JVDsKKwl9KTsKKworCSMgSWYg InN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVk IHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5n IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVC VUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxv Z2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERN TAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lO OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAy MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOworCUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoy MDAyKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRv ZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3Vs dCwgcXEoMjAwMnwxOTk5fDEwMDJ8MSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJworCSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBv bi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgQSBsYXJn ZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwuIE9uZSBvZiB0aGUgRERM IGlzIHBlcmZvcm1lZAorCSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUg dGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0CisJIyB0aGUgbmV4dCB0cmFuc2Fj dGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgorCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMjAwMyw1MDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJ TlQ7CisJQ09NTUlUOworCX0pOworCisJIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3Qg Z2V0IHN0cmVhbWVkLiBUaGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKKwkjIHNlbmQgdGhl IHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJl dmlvdXMgdGVzdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSwgMippLCAtMyppLCA0KmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1MDA1KSBzKGkp OworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNl dCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVz dWx0LCBxcSg1MDA1fDUwMDJ8NDAwNXwzMDA0fDUpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5z YWN0aW9ucycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGMsIERST1Ag Q09MVU1OIGQsIERST1AgQ09MVU1OIGUsIERST1AgQ09MVU1OIGY7CisJfSk7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1 Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE2OSwxMCBAQCAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1Ig VEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29u JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJ Q0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxODUs MjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGlu aXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBhIHNtYWxsIChub24t c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xV TU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQs IG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwotfSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwg KG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioy MDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQp LCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAw MnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5n IG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAw KTsKIAotIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4g T25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCi0jIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3 ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUg bmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVy YXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGYgSU5UOwotQ09NTUlUOwotfSk7Ci0KLSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdv bid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQg dGhlIHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUg cHJldmlvdXMgdGVzdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCks IC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7 Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNv dW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMw MDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0 cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJh bGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJl YW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGls KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7 CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9y dC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5w bAppbmRleCA1NTFmMTZkZjZkLi5iNDA0ZmVkNGI5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTQ1IEBA IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAor CQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVB TSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBh bGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmci CisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0 cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3Ry ZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5h bWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3Ry ZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8g Y2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEg bG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5 LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVy IGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmls ZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBS T0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsK KwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJUk9MTEJBQ0sg VE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAw KSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCisJCSdjaGVjayByb2xsYmFj ayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciBy ZWNlaXZpbmcgb3V0IG9mIG9yZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDQwMDEsNDUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDAp IHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOworCVNBVkVQ T0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKKwlSRUxFQVNFIHMyOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoODAwMSw4NTAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09N TUlUJyk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3 YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxl OworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNl aXZpbmcgcm9sbGJhY2sKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVz JywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg5MDAxLDk1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUw MSwxMDAwMCkgcyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQUJPUlQnKTsKKworCSRyZXN1bHQgPQor CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDAp LCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENs ZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1 Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2LDYgKzE3NSwxMCBAQCAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1Ig VEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29u JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJ Q0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ4LDgxICsxOTEs MjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdp dGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEs MTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBzKGkpOwotUk9M TEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMxOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygyNTAxLDMwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMwMDEsMzUw MCkgcyhpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOwotQ09NTUlU OwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBx cSgyMDAwfDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBv biBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0 ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFw cGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7 CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2 aW5nIG91dCBvZiBvcmRlcgotIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0 NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMoaSk7Ci1TQVZF UE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDYwMDEsNjUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNzAwMSw3NTAwKSBzKGkpOwotUkVMRUFTRSBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4NTAwKSBzKGkp OwotUk9MTEJBQ0sgVE8gczE7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7Ci1ST0xMQkFDSzsK LX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0k cmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEo MjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQ VElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VC U0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9w dWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlf c3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5 X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAppbmRleCA0ZDdkYTgyYjdhLi5jMDVkODgyMDUy IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3Rf ZGRsX2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3Vi eGFjdF9kZGxfYWJvcnQucGwKQEAgLTksNiArOSw5MSBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwog CisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBs ZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor c3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0 LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJ CSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkk b2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVw cyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNh bWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVh bWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87 CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNw ZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVk IHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor CSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0 LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUw MCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQ T0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEwMDEsMTUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5U OworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhp KTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCVJPTExCQUNLIFRPIHMx OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVs X2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsK KworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygk cmVzdWx0LCBxcSgxMDAwfDUwMCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2Fz IHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwg ZGVmYXVsdHMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCX0p OworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJl c2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21l c3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQor CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjIsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBA IC00OSwzNSArMTM4LDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7 Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5UIHMxOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGQgSU5UOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMo aSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMz OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwg LTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0 ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwx MDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7Ci1pcygkcmVzdWx0LCBxcSgxMDAwfDUwMCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVw b2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJh bGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igor ICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1 YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdmMzdiYS4u NDkwMjI2M2Q2NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3Bo YXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNl X2Nhc2NhZGUucGwKQEAgLTExLDYgKzExLDIzOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisj IENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRl ZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3Vi IGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk c3RyZWFtaW5nX21vZGUsICR0eXBlKSA9IEBfOworCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAn cGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIv REVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlw ZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhl IGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFt ZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWlu Zz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5n Cit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1l X0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2Zmc2V0X0IgPSAwOworCW15 ICRvZmZzZXRfQyA9IDA7CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJ CSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJ V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsK KworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVf Qi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0Mt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZv ciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxf cXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0Ig RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFw cG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVy eV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAx LiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBj b21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAi cGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9u IHdhcyBwcmVwYXJlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUg dG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1 cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxs ZWwnKQorCXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9D LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfQy0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7CisJJG9m ZnNldF9DID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyBUaGVuIDJQQyBQ UkVQQVJFCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsK KwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsK KworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9C LCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSwgJ1BSRVBBUkUnKTsKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfQywgJG9mZnNldF9DLCAkc3RyZWFtaW5nX21vZGUsICdQUkVQQVJFJyk7CisK KwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy KHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJl c3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQK Kwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9w cmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9C KTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQg PSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgz MzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJ KTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMo JHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2 ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2Fs IGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwor CWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKwor CSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0 aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJl dmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJv dy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KKwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJl YW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0 IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3Mg KD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAo ZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUg c3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldF9CID0gLXMgJG5vZGVfQi0+bG9n ZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9kZV9DLT5sb2dmaWxlOworCisJIyAyUEMgUFJFUEFS RSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn b3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7 CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9CLCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSwgJ1BSRVBBUkUnKTsK KworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmliZXIo cykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRu b2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7 CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBz dGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vi c2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7CisK KwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KKwkjIEFsbCB0 aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxl ZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgorCSRyZXN1 bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwg J1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQg PQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBw cmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAn Zm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVz ZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVz dWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycp OworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX0EtPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9DKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1p bmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9CLT5y ZWxvYWQ7CisKKwkJJG5vZGVfQy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2df bWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorfQorCiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVwIGEgY2FzY2FkZSBvZiBwdWIv c3ViIG5vZGVzLgogIyBub2RlX0EgLT4gbm9kZV9CIC0+IG5vZGVfQwpAQCAtMjYwLDE2MCArNDky LDE1IEBAIGlzKCRyZXN1bHQsIHFxKDIxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9u IHN1YnNjcmliZXIgQycpOwogIyAyUEMgKyBTVFJFQU1JTkcgVEVTVFMKICMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAKLW15ICRvbGRwaWRfQiA9ICRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwot bXkgJG9sZHBpZF9DID0gJG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxF Q1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Iik7Ci0KLSMgU2V0dXAgbG9n aWNhbCByZXBsaWNhdGlvbiAoc3RyZWFtaW5nID0gb24pCi0KLSRub2RlX0ItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgotCVNFVCAoc3Ry ZWFtaW5nID0gb24pOyIpOwotJG5vZGVfQy0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlB TFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCi0JU0VUIChzdHJlYW1pbmcgPSBvbikiKTsKLQot IyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KLQotJG5vZGVf QS0+cG9sbF9xdWVyeV91bnRpbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xk cGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOwotJG5vZGVfQi0+cG9sbF9x dWVyeV91bnRpbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0MgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxl IHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERh dGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0 IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3Jp YmVyKHMpIGFmdGVyIHRoZSBjb21taXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCi0jIFRoZW4gMlBDIFBSRVBBUkUKLSRub2RlX0EtPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwg JG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJ29uJyk7CiAKLSMgY2hl Y2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKLSRy ZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9D LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBv biBzdWJzY3JpYmVyIEMnKTsKLQotIyAyUEMgQ09NTUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9k ZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0 ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVt bnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKLSk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93 cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0 cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwotKTsKLQotIyBjaGVjayB0aGUgdHJhbnNh Y3Rpb24gc3RhdGUgaXMgZW5kZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMo JHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBD Jyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFS RSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVC4KLSMgMC4gQ2xlYW51cCBmcm9t IHByZXZpb3VzIHRlc3QgbGVhdmluZyBvbmx5IDIgcm93cy4KLSMgMS4gSW5zZXJ0IG9uZSBtb3Jl IHJvdy4KLSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5ULgotIyAzLiBEYXRhIGlzIHN0cmVhbWVkIHVz aW5nIDJQQy4KLSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJl YW1lZCBpbnNlcnRzLgotIyA1LiBUaGVuIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IGRh dGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0g MiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0 ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIDJQQyBQUkVQQVJFIHdpdGgg YSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgIgotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OSwg J2Zvb2JhcicpOwotCVNBVkVQT0lOVCBzcF9pbm5lcjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7 Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUk9MTEJBQ0sgVE8gU0FW RVBPSU5UIHNwX2lubmVyOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ291dGVyJzsKLQkiKTsKLQot JG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHBy ZXBhcmVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy IEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSks ICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyAyUEMgQ09N TUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnb3V0 ZXInOyIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVf Qi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rp b24gc3RhdGUgaXMgZW5kZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNj cmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBx cSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIGNoZWNr IGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KLSMgQWxsIHRoZSBzdHJlYW1l ZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCi0j ICg5OTk5LCAnZm9vYmFyJykgc2hvdWxkIGJlIGNvbW1pdHRlZC4KLSRyZXN1bHQgPSAkbm9kZV9C LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIg d2hlcmUgYiA9ICdmb29iYXInOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRl ZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOwotaXMo JHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVy IEInKTsKLSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOwotaXMoJHJlc3Vs dCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsK LSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiOyIpOwotaXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBh cmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdwYXJhbGxlbCcp OwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xl YW51cApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0 cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwK aW5kZXggOWI0NTQxMDZiZC4uYzk2NmFjOTRkYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC04LDYgKzgsMzA4IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFs bGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6 ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21t YW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1v biB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRl ciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBh bmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJ bXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJh bGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEu IERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNv bW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBz dWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMg InBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgcHJlcGFyZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZl IHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAg dXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9k ZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWlu X21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK KwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMg JG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdo IHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwor CQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwlteSAk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgx KSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRy YW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0 LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJworCSk7CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMo JHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicp OworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFS RSAvIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIg cm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBz dHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KKwkjCisJIyBF eHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgor CSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUg ZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBUaGVuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs LCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1 YnNjcmliZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1 YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAorCQknUm93cyBpbnNlcnRlZCBieSAy UEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycKKwkp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIENoZWNrIHRoYXQgMlBDIENPTU1JVCBQ UkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCisJIyAxLiBpbnNl cnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1p dC4KKwkjIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkLgorCSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5k aW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIE5vdGU6 IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47 CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7 CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNo ZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9k ZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNvbW1pdCBwb3N0 IHRoZSByZXN0YXJ0CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZp c2libGUKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3Rf dGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRl ZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJB Q0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNo IGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVz aW5nIDJQQy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRl ciB0aGUgUFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjCisJ IyBFeHBlY3QgdGhlIDJQQyBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0 aGUgc3Vic2NyaWJlcgorCSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQ QVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUg b24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwor CWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJl cicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUg b2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3Rp bGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBh cmF0ZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKwor CSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWIn OyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor CSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIsCisJIyBi dXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0 ZWQKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi Iik7CisJaXMoJHJlc3VsdCwgcXEoM3wzfDMpLAorCQknY2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0 IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9y dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1JVCBQUkVQQVJF RC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxp Y2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgor CSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQ QVJFLgorCSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgMlBD IGRhdGEgKyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgorCSMgKHRoZSAzMzM0 ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSBy ZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3Mg dG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJ T04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJl ciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5z YWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEgZGlmZmVy ZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCisJ IyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtl IHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNv bW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01N SVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNXwzMzM1fDMz MzUpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQp IGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4g bG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9u IHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJewor CQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJs b2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7 CisJfQorfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVwCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszNTAsMTAgQEAgJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBt b2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFw X3N1YgpAQCAtNjQsMjM2ICszNzAsMzAgQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5ID0KICRub2RlX3N1 YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3BoYXNlX3F1ZXJ5KQog ICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIGVuYWJs ZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ2hlY2sg aW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBG Uk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRh dGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gRGF0 YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBjb21taXQg cHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmli ZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSwgMCk7CiAKLSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3Rh Yic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3Jp YmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQg b24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlv bl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQu Ci0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMu IERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xscyBiYWNrIGxlYXZp bmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwg YmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBk YXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwogCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rp b24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRz IGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlJPTExC QUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBp cyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9 IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAotCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwg MiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOwot Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRoYXQgMlBDIENPTU1J VCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCi0jIDEuIGlu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5k aW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIE5vdGU6IGJv dGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3Rf cHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRpYXRlJyk7 Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9kZV9wdWJsaXNoZXIt PnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29tbWl0IHBvc3QgdGhlIHJl c3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQ UkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBj b21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5T RVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQuCi0jIDEu IFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMuIEEgc2lu Z2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KLSMgNC4g VGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhlIDJQQyBkYXRhIHJv bGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJlcgotIyAodGhlIG9y aWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJl cGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBS RVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0 aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlz IHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3Jk IChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhl IDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMg aW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5 LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwg d2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91dHNpZGUg aW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBh Ym9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJFUEFS RUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxp Y2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0j IDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFS RS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQQyBkYXRh ICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0ICsgaW5z ZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZp cnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRl ZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxl dGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDAp IHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBU UkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3 ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3RlOiB0aGUgMlBDIHRy YW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQg aXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29i YXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOwogCi0jIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoMzMzNXwzMzM1fDMzMzUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBv dXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxf cXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04i OwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7 CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVh bnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFs bGVsX2NvbmZsaWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJh bGxlbF9jb25mbGljdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4x MGVmZDJkMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbApAQCAtMCwwICsxLDE1MiBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVz dCBmb3IgZGVhZGxvY2sgaW4gc3RyZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBsb2dpY2FsIHJl cGxpY2F0aW9uLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6 TW9yZTsKKworbXkgJG9mZnNldCA9IDA7CisKKyMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCitteSAk bm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hl cicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwn KTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJJ2xv Z2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0 OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmli ZXItPmluaXQ7CisKKyMgQ2hlY2sgaWYgYW55IHN0cmVhbWluZyBjaHVua3MgYXJlIGFwcGxpZWQg dXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKKyMgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cKKyMg dmVyYm9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisKKyRub2RlX3N1YnNjcmliZXItPnN0 YXJ0OworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50KSIpOwor CisjIFNldHVwIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQpIik7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRF WCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlv bgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBk Ym5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisKK215 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsICIKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwlDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwlQVUJMSUNBVElP TiB0YXBfcHViCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNl KSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisj IEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0 a0IgbGltaXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1lciA9IElQ Qzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0 KTsKKworbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn LCBcJGluLCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5CisjIHdvcmtlciBjYW4gYmUgZGV0 ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMo aSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQgYmVmb3JlIHRoZQorIyBsZWFkZXIg d29ya2VyLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtB LVowLTldKzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsv LAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi SU5TRVJUIElOVE8gdGVzdF90YWIgdmFsdWVzKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOwor XHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVkLywKKwkkb2Zmc2V0KTsK KworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jr cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBp ZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lz KCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUg VEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0d28gcGFyYWxsZWwgYXBw bHkgd29ya2VycyBjYW4gYmUgZGV0ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9Owor JGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIGZpcnN0IHBhcmFsbGVsIGFwcGx5IHdv cmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQKKyMgYmVmb3JlIHRoZSBzZWNvbmQgb25l LgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsvLAorCSRv ZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhp KSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkZWFk bG9jayBkZXRlY3RlZC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisjIFdhaXQgZm9yIHRoaXMg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4K KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCiskbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsK LS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_008_OS0PR01MB5716C1C1D8244BA86311193894EB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v64-0003-Allow-streaming-every-change-without-waiting-til.patch" Content-Description: v64-0003-Allow-streaming-every-change-without-waiting-til.patch Content-Disposition: attachment; filename="v64-0003-Allow-streaming-every-change-without-waiting-til.patch"; size=9640; creation-date="Wed, 21 Dec 2022 05:32:16 GMT"; modification-date="Wed, 21 Dec 2022 05:32:35 GMT" Content-Transfer-Encoding: base64 RnJvbSBhN2IyNzJjMDU3ZmFkNjhkYzFkZjA1NGRjOThhOGE0ZjNiZmQ3YmRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGkgWXUgPHNoaXkuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog TW9uLCAyNCBPY3QgMjAyMiAxNTo1MjoxNCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjY0IDMvN10g QWxsb3cgc3RyZWFtaW5nIGV2ZXJ5IGNoYW5nZSB3aXRob3V0IHdhaXRpbmcgdGlsbAogbG9naWNh bF9kZWNvZGluZ193b3JrX21lbS4KCkFkZCBhIG5ldyBHVUMgZm9yY2Vfc3RyZWFtX21vZGUsIHdo ZW4gaXQgaXMgc2V0IG9uLCBzZW5kIHRoZSBjaGFuZ2UgdG8Kb3V0cHV0IHBsdWdpbiBpbW1lZGlh dGVseSBpbiBzdHJlYW1pbmcgbW9kZS4gT3RoZXJ3aXNlLCBzZW5kIHVudGlsCmxvZ2ljYWxfZGVj b2Rpbmdfd29ya19tZW0gaXMgZXhjZWVkZWQuCi0tLQogY29udHJpYi90ZXN0X2RlY29kaW5nL2V4 cGVjdGVkL3N0cmVhbS5vdXQgICAgIHwgMTMgKysrCiBjb250cmliL3Rlc3RfZGVjb2Rpbmcvc3Fs L3N0cmVhbS5zcWwgICAgICAgICAgfCAgOCArKwogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAg ICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVv cmRlcmJ1ZmZlci5jICAgICAgIHwgODIgKysrKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgMTAgKysrCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgfCAgMSArCiA2IGZpbGVzIGNoYW5nZWQs IDEwMCBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmli L3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc3RyZWFtLm91dCBiL2NvbnRyaWIvdGVzdF9kZWNvZGlu Zy9leHBlY3RlZC9zdHJlYW0ub3V0CmluZGV4IDBmMjFkY2I4ZTAuLmIwYmI0NjdiMmIgMTAwNjQ0 Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zdHJlYW0ub3V0CisrKyBiL2Nv bnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zdHJlYW0ub3V0CkBAIC0xMDYsNiArMTA2LDE5 IEBAIFNFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFuZ2VzKCdyZWdyZXNz aW9uX3Nsb3QnLCBOVUxMLE5VTEwsICdpbmNsCiAgY29tbWl0dGluZyBzdHJlYW1lZCB0cmFuc2Fj dGlvbgogKDE3IHJvd3MpCiAKKy0tIHN0cmVhbWluZyB0ZXN0IHdpdGggZm9yY2Vfc3RyZWFtX21v ZGUKK1NFVCBmb3JjZV9zdHJlYW1fbW9kZT1vbjsKK1RSVU5DQVRFIHRhYmxlIHN0cmVhbV90ZXN0 OworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2NoYW5nZXMoJ3JlZ3Jlc3Np b25fc2xvdCcsIE5VTEwsTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3NraXAtZW1wdHkteGFj dHMnLCAnMScsICdzdHJlYW0tY2hhbmdlcycsICcxJyk7CisgICAgICAgICAgICAgICAgICAgZGF0 YSAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIG9wZW5pbmcgYSBzdHJlYW1lZCBibG9jayBmb3IgdHJhbnNhY3Rpb24KKyBzdHJl YW1pbmcgdHJ1bmNhdGUgZm9yIHRyYW5zYWN0aW9uCisgY2xvc2luZyBhIHN0cmVhbWVkIGJsb2Nr IGZvciB0cmFuc2FjdGlvbgorIGNvbW1pdHRpbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb24KKyg0IHJv d3MpCisKK1JFU0VUIGZvcmNlX3N0cmVhbV9tb2RlOwogRFJPUCBUQUJMRSBzdHJlYW1fdGVzdDsK IFNFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOwogIHBn X2Ryb3BfcmVwbGljYXRpb25fc2xvdCAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGlu Zy9zcWwvc3RyZWFtLnNxbCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvc3RyZWFtLnNxbApp bmRleCA0ZmVlYzYyOTcyLi5hNWE2M2U3MWZhIDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVj b2Rpbmcvc3FsL3N0cmVhbS5zcWwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3NxbC9zdHJl YW0uc3FsCkBAIC00NCw1ICs0NCwxMyBAQCB0b2FzdGVkLTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIz NDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMgogCiBTRUxF Q1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVzc2lvbl9zbG90 JywgTlVMTCxOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcx JywgJ3N0cmVhbS1jaGFuZ2VzJywgJzEnKTsKIAorLS0gc3RyZWFtaW5nIHRlc3Qgd2l0aCBmb3Jj ZV9zdHJlYW1fbW9kZQorU0VUIGZvcmNlX3N0cmVhbV9tb2RlPW9uOworCitUUlVOQ0FURSB0YWJs ZSBzdHJlYW1fdGVzdDsKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9jaGFu Z2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLE5VTEwsICdpbmNsdWRlLXhpZHMnLCAnMCcsICdz a2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnc3RyZWFtLWNoYW5nZXMnLCAnMScpOworCitSRVNFVCBm b3JjZV9zdHJlYW1fbW9kZTsKKwogRFJPUCBUQUJMRSBzdHJlYW1fdGVzdDsKIFNFTEVDVCBwZ19k cm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOwpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDEw NGNjZTcxZjAuLjk0NmVmYzUxNWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTExNjIzLDYgKzExNjIzLDIyIEBA IExPRzogIENsZWFuVXBMb2NrOiBkZWxldGluZzogbG9jaygweGI3YWNkODQ0KSBpZCgyNDY4OCwy NDY5NiwwLDAsMCwxKQogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWZvcmNlLXN0cmVhbS1tb2RlIiB4cmVmbGFiZWw9 ImZvcmNlX3N0cmVhbV9tb2RlIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmZvcmNlX3N0cmVhbV9t b2RlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgor ICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmZvcmNlX3N0cmVhbV9tb2RlPC92YXJuYW1lPiBjb25m aWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAg PC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTcGVjaWZp ZXMgd2hldGhlciB0byBmb3JjZSBzZW5kaW5nIHRoZSBjaGFuZ2VzIHRvIG91dHB1dCBwbHVnaW4K KyAgICAgICAgaW1tZWRpYXRlbHkgaW4gc3RyZWFtaW5nIG1vZGUuIElmIHNldCB0byA8bGl0ZXJh bD5vZmY8L2xpdGVyYWw+ICh0aGUKKyAgICAgICAgZGVmYXVsdCksIHNlbmQgdW50aWwgPHZhcm5h bWU+bG9naWNhbF9kZWNvZGluZ193b3JrX21lbTwvdmFybmFtZT4gaXMKKyAgICAgICAgZXhjZWVk ZWQuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50 cnk+CisKICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9zZWN0MT4KICAgPHNlY3QxIGlkPSJydW50 aW1lLWNvbmZpZy1zaG9ydCI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cmVvcmRlcmJ1ZmZlci5jCmluZGV4IDhkNWJiYWFkYjEuLjZmMzMwMTg5ODMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yMDksNiAr MjA5LDEyIEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlCiBpbnQJCQls b2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtOwogc3RhdGljIGNvbnN0IFNpemUgbWF4X2NoYW5nZXNf aW5fbWVtb3J5ID0gNDA5NjsgLyogWFhYIGZvciByZXN0b3JlIG9ubHkgKi8KIAorLyoKKyAqIFdo ZXRoZXIgdG8gc2VuZCB0aGUgY2hhbmdlIHRvIG91dHB1dCBwbHVnaW4gaW1tZWRpYXRlbHkgaW4g c3RyZWFtaW5nIG1vZGUuCisgKiBXaGVuIGl0IGlzIG9mZiwgd2FpdCB1bnRpbCBsb2dpY2FsX2Rl Y29kaW5nX3dvcmtfbWVtIGlzIGV4Y2VlZGVkLgorICovCitib29sCQlmb3JjZV9zdHJlYW1fbW9k ZTsKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBwcmlt YXJ5IHJlb3JkZXJidWZmZXIgc3VwcG9ydCByb3V0aW5lcwogICogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNTQzLDcgKzM1NDksOSBAQCBSZW9yZGVyQnVmZmVy TGFyZ2VzdFN0cmVhbWFibGVUb3BUWE4oUmVvcmRlckJ1ZmZlciAqcmIpCiAvKgogICogQ2hlY2sg d2hldGhlciB0aGUgbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSBsaW1pdCB3YXMgcmVhY2hlZCwg YW5kIGlmIHllcwogICogcGljayB0aGUgbGFyZ2VzdCAoc3ViKXRyYW5zYWN0aW9uIGF0LWEtdGlt ZSB0byBldmljdCBhbmQgc3BpbGwgaXRzIGNoYW5nZXMgdG8KLSAqIGRpc2sgdW50aWwgd2UgcmVh Y2ggdW5kZXIgdGhlIG1lbW9yeSBsaW1pdC4KKyAqIGRpc2sgb3Igc2VuZCB0byBvdXRwdXQgcGx1 Z2luIHVudGlsIHdlIHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkgbGltaXQuCisgKgorICogSWYgZm9y Y2Vfc3RyZWFtX21vZGUgaXMgZW5hYmxlZCwgc2VuZCBhbGwgc3RyZWFtYWJsZSBjaGFuZ2VzLgog ICoKICAqIFhYWCBBdCB0aGlzIHBvaW50IHdlIHNlbGVjdCB0aGUgdHJhbnNhY3Rpb25zIHVudGls IHdlIHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkKICAqIGxpbWl0LCBidXQgd2UgbWlnaHQgYWxzbyBh ZGFwdCBhIG1vcmUgZWxhYm9yYXRlIGV2aWN0aW9uIHN0cmF0ZWd5IC0gZm9yIGV4YW1wbGUKQEAg LTM1NTUsNTAgKzM1NjMsNjQgQEAgUmVvcmRlckJ1ZmZlckNoZWNrTWVtb3J5TGltaXQoUmVvcmRl ckJ1ZmZlciAqcmIpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCi0JLyogYmFpbCBvdXQg aWYgd2UgaGF2ZW4ndCBleGNlZWRlZCB0aGUgbWVtb3J5IGxpbWl0ICovCi0JaWYgKHJiLT5zaXpl IDwgbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSAqIDEwMjRMKQotCQlyZXR1cm47Ci0KIAkvKgot CSAqIExvb3AgdW50aWwgd2UgcmVhY2ggdW5kZXIgdGhlIG1lbW9yeSBsaW1pdC4gIE9uZSBtaWdo dCB0aGluayB0aGF0IGp1c3QKLQkgKiBieSBldmljdGluZyB0aGUgbGFyZ2VzdCAoc3ViKXRyYW5z YWN0aW9uIHdlIHdpbGwgY29tZSB1bmRlciB0aGUgbWVtb3J5Ci0JICogbGltaXQgYmFzZWQgb24g YXNzdW1wdGlvbiB0aGF0IHRoZSBzZWxlY3RlZCB0cmFuc2FjdGlvbiBpcyBhdCBsZWFzdCBhcwot CSAqIGxhcmdlIGFzIHRoZSBtb3N0IHJlY2VudCBjaGFuZ2UgKHdoaWNoIGNhdXNlZCB1cyB0byBn byBvdmVyIHRoZSBtZW1vcnkKLQkgKiBsaW1pdCkuIEhvd2V2ZXIsIHRoYXQgaXMgbm90IHRydWUg YmVjYXVzZSBhIHVzZXIgY2FuIHJlZHVjZSB0aGUKLQkgKiBsb2dpY2FsX2RlY29kaW5nX3dvcmtf bWVtIHRvIGEgc21hbGxlciB2YWx1ZSBiZWZvcmUgdGhlIG1vc3QgcmVjZW50Ci0JICogY2hhbmdl LgorCSAqIElmIHBvc3NpYmxlLCBldmljdCBzdHJlYW1hYmxlIHRyYW5zYWN0aW9ucyBmcm9tIG1l bW9yeSBieSBzdHJlYW1pbmcuCiAJICovCi0Jd2hpbGUgKHJiLT5zaXplID49IGxvZ2ljYWxfZGVj b2Rpbmdfd29ya19tZW0gKiAxMDI0TCkKKwlpZiAoUmVvcmRlckJ1ZmZlckNhblN0YXJ0U3RyZWFt aW5nKHJiKSkKIAl7CiAJCS8qCi0JCSAqIFBpY2sgdGhlIGxhcmdlc3QgdHJhbnNhY3Rpb24gKG9y IHN1YnRyYW5zYWN0aW9uKSBhbmQgZXZpY3QgaXQgZnJvbQotCQkgKiBtZW1vcnkgYnkgc3RyZWFt aW5nLCBpZiBwb3NzaWJsZS4gIE90aGVyd2lzZSwgc3BpbGwgdG8gZGlzay4KKwkJICogSWYgZm9y Y2Vfc3RyZWFtX21vZGUgaXMgb2ZmLCBsb29wIHVudGlsIHdlIHJlYWNoIHVuZGVyIHRoZSBtZW1v cnkKKwkJICogbGltaXQuIE90aGVyd2lzZSBsb29wIHVudGlsIHRoZXJlJ3Mgbm8gc3RyZWFtYWJs ZSB0b3AgdHJhbnNhY3Rpb24uCisJCSAqIE9uZSBtaWdodCB0aGluayB0aGF0IGp1c3QgYnkgZXZp Y3RpbmcgdGhlIGxhcmdlc3QgdHJhbnNhY3Rpb24gd2UKKwkJICogd2lsbCBjb21lIHVuZGVyIHRo ZSBtZW1vcnkgbGltaXQgYmFzZWQgb24gYXNzdW1wdGlvbiB0aGF0IHRoZQorCQkgKiBzZWxlY3Rl ZCB0cmFuc2FjdGlvbiBpcyBhdCBsZWFzdCBhcyBsYXJnZSBhcyB0aGUgbW9zdCByZWNlbnQgY2hh bmdlCisJCSAqICh3aGljaCBjYXVzZWQgdXMgdG8gZ28gb3ZlciB0aGUgbWVtb3J5IGxpbWl0KS4g SG93ZXZlciwgdGhhdCBpcyBub3QKKwkJICogdHJ1ZSBiZWNhdXNlIGEgdXNlciBjYW4gcmVkdWNl IHRoZSBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtIHRvIGEKKwkJICogc21hbGxlciB2YWx1ZSBv ciBlbmFibGUgZm9yY2Vfc3RyZWFtX21vZGUgYmVmb3JlIHRoZSBtb3N0IHJlY2VudAorCQkgKiBj aGFuZ2UuCiAJCSAqLwotCQlpZiAoUmVvcmRlckJ1ZmZlckNhblN0YXJ0U3RyZWFtaW5nKHJiKSAm JgotCQkJKHR4biA9IFJlb3JkZXJCdWZmZXJMYXJnZXN0U3RyZWFtYWJsZVRvcFRYTihyYikpICE9 IE5VTEwpCisJCXdoaWxlIChyYi0+c2l6ZSA+PSBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtICog MTAyNEwgfHwKKwkJCSAgIChmb3JjZV9zdHJlYW1fbW9kZSAmJiByYi0+c2l6ZSA+IDApKQogCQl7 Ci0JCQkvKiB3ZSBrbm93IHRoZXJlIGhhcyB0byBiZSBvbmUsIGJlY2F1c2UgdGhlIHNpemUgaXMg bm90IHplcm8gKi8KKwkJCXR4biA9IFJlb3JkZXJCdWZmZXJMYXJnZXN0U3RyZWFtYWJsZVRvcFRY TihyYik7CisJCQlpZiAodHhuID09IE5VTEwpCisJCQkJYnJlYWs7CisKIAkJCUFzc2VydCh0eG4g JiYgIXR4bi0+dG9wdHhuKTsKIAkJCUFzc2VydCh0eG4tPnRvdGFsX3NpemUgPiAwKTsKIAkJCUFz c2VydChyYi0+c2l6ZSA+PSB0eG4tPnRvdGFsX3NpemUpOwogCiAJCQlSZW9yZGVyQnVmZmVyU3Ry ZWFtVFhOKHJiLCB0eG4pOwotCQl9Ci0JCWVsc2UKLQkJeworCiAJCQkvKgotCQkJICogUGljayB0 aGUgbGFyZ2VzdCB0cmFuc2FjdGlvbiAob3Igc3VidHJhbnNhY3Rpb24pIGFuZCBldmljdCBpdAot CQkJICogZnJvbSBtZW1vcnkgYnkgc2VyaWFsaXppbmcgaXQgdG8gZGlzay4KKwkJCSAqIEFmdGVy IGV2aWN0aW9uLCB0aGUgdHJhbnNhY3Rpb24gc2hvdWxkIGhhdmUgbm8gZW50cmllcyBpbiBtZW1v cnksCisJCQkgKiBhbmQgc2hvdWxkIHVzZSAwIGJ5dGVzIGZvciBjaGFuZ2VzLgogCQkJICovCi0J CQl0eG4gPSBSZW9yZGVyQnVmZmVyTGFyZ2VzdFRYTihyYik7CisJCQlBc3NlcnQodHhuLT5zaXpl ID09IDApOworCQkJQXNzZXJ0KHR4bi0+bmVudHJpZXNfbWVtID09IDApOworCQl9CisJfQorCisJ LyoKKwkgKiBFdmljdCB0cmFuc2FjdGlvbnMgZnJvbSBtZW1vcnkgYnkgc2VyaWFsaXppbmcgdG8g ZGlzay4gTG9vcCB1bnRpbCB3ZQorCSAqIHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkgbGltaXQuIE9u ZSBtaWdodCB0aGluayB0aGF0IGp1c3QgYnkgZXZpY3RpbmcgdGhlCisJICogbGFyZ2VzdCAoc3Vi KXRyYW5zYWN0aW9uIHdlIHdpbGwgY29tZSB1bmRlciB0aGUgbWVtb3J5IGxpbWl0LCBidXQgdGhp cyBpcworCSAqIG5vdCBzdWZmaWNpZW50LiBTZWUgY29tbWVudHMgYWJvdmUuCisJICovCisJd2hp bGUgKHJiLT5zaXplID49IGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gKiAxMDI0TCkKKwl7CisJ CS8qCisJCSAqIFBpY2sgdGhlIGxhcmdlc3QgdHJhbnNhY3Rpb24gKG9yIHN1YnRyYW5zYWN0aW9u KSBhbmQgZXZpY3QgaXQKKwkJICogZnJvbSBtZW1vcnkgYnkgc2VyaWFsaXppbmcgaXQgdG8gZGlz ay4KKwkJICovCisJCXR4biA9IFJlb3JkZXJCdWZmZXJMYXJnZXN0VFhOKHJiKTsKIAotCQkJLyog d2Uga25vdyB0aGVyZSBoYXMgdG8gYmUgb25lLCBiZWNhdXNlIHRoZSBzaXplIGlzIG5vdCB6ZXJv ICovCi0JCQlBc3NlcnQodHhuKTsKLQkJCUFzc2VydCh0eG4tPnNpemUgPiAwKTsKLQkJCUFzc2Vy dChyYi0+c2l6ZSA+PSB0eG4tPnNpemUpOworCQkvKiB3ZSBrbm93IHRoZXJlIGhhcyB0byBiZSBv bmUsIGJlY2F1c2UgdGhlIHNpemUgaXMgbm90IHplcm8gKi8KKwkJQXNzZXJ0KHR4bik7CisJCUFz c2VydCh0eG4tPnNpemUgPiAwKTsKKwkJQXNzZXJ0KHJiLT5zaXplID49IHR4bi0+c2l6ZSk7CiAK LQkJCVJlb3JkZXJCdWZmZXJTZXJpYWxpemVUWE4ocmIsIHR4bik7Ci0JCX0KKwkJUmVvcmRlckJ1 ZmZlclNlcmlhbGl6ZVRYTihyYiwgdHhuKTsKIAogCQkvKgogCQkgKiBBZnRlciBldmljdGlvbiwg dGhlIHRyYW5zYWN0aW9uIHNob3VsZCBoYXZlIG5vIGVudHJpZXMgaW4gbWVtb3J5LApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCBiYzU2YzMyMzczLi43NzUxOWE1NmZlIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMTI2Miw2ICsxMjYyLDE2IEBAIHN0cnVj dCBjb25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCWZhbHNlLAogCQlOVUxMLCBO VUxMLCBOVUxMCiAJfSwKKwl7CisJCXsiZm9yY2Vfc3RyZWFtX21vZGUiLCBQR0NfVVNFUlNFVCwg REVWRUxPUEVSX09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkZvcmNlIHNlbmRpbmcgdGhlIGNo YW5nZXMgdG8gb3V0cHV0IHBsdWdpbiBpbW1lZGlhdGVseSBpZiBzdHJlYW1pbmcgaXMgc3VwcG9y dGVkLCB3aXRob3V0IHdhaXRpbmcgdGlsbCBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtLiIpLAor CQkJTlVMTCwKKwkJCUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZmb3JjZV9zdHJlYW1fbW9k ZSwKKwkJZmFsc2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCiAJewogCQl7ImxvZ19kdXJh dGlvbiIsIFBHQ19TVVNFVCwgTE9HR0lOR19XSEFULApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVv cmRlcmJ1ZmZlci5oCmluZGV4IGYwZWI2YzRmNzQuLmYyNGM4ODZlMWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJ1 dGlscy90aW1lc3RhbXAuaCIKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBsb2dpY2FsX2RlY29k aW5nX3dvcmtfbWVtOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZm9yY2Vfc3RyZWFtX21vZGU7 CiAKIC8qIGFuIGluZGl2aWR1YWwgdHVwbGUsIHN0b3JlZCBpbiBvbmUgY2h1bmsgb2YgbWVtb3J5 ICovCiB0eXBlZGVmIHN0cnVjdCBSZW9yZGVyQnVmZmVyVHVwbGVCdWYKLS0gCjIuMjMuMC53aW5k b3dzLjEKCg== --_008_OS0PR01MB5716C1C1D8244BA86311193894EB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v64-0004-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v64-0004-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v64-0004-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=12751; creation-date="Wed, 21 Dec 2022 05:32:16 GMT"; modification-date="Wed, 21 Dec 2022 05:32:35 GMT" Content-Transfer-Encoding: base64 RnJvbSA0MTlmZGNlMGI1OGU5Nzg2MThhMmMyZTllNzM2Mjg2ZTYzZjE4ZThhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBXZWQsIDE0IERlYyAyMDIyIDIwOjM4OjUwICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjQgNC83XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJp YWxpemluZyBtZXNzYWdlcyB0byBkaXNrCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAg ICAgICAgICAgICAgICAgICAgICB8ICAzMiArKysrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMTIgKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgICAgICAgICAgIHwgIDE0ICsrCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCAgICAgfCAgIDQgKwogLi4uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25m bGljdC5wbCAgICAgICAgIHwgMTQxICsrKysrKysrKysrKysrKysrLQogNiBmaWxlcyBjaGFuZ2Vk LCAyMDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggOTQ2ZWZj NTE1ZC4uYzA4YTc2ODQzMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTE2MzksNiArMTE2MzksMzggQEAgTE9H OiAgQ2xlYW5VcExvY2s6IGRlbGV0aW5nOiBsb2NrKDB4YjdhY2Q4NDQpIGlkKDI0Njg4LDI0Njk2 LDAsMCwwLDEpCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtc3RyZWFtLXNlcmlhbGl6ZS10aHJlc2hvbGQiIHhyZWZs YWJlbD0ic3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ c3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBl PikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+c3RyZWFtX3Nl cmlhbGl6ZV90aHJlc2hvbGQ8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmlt YXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIEZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0 byBzZXJpYWxpemUgbWVzc2FnZXMgdG8gZmlsZXMgYWZ0ZXIKKyAgICAgICAgc2VuZGluZyBzcGVj aWZpZWQgYW1vdW50IG9mIHN0cmVhbWluZyBjaHVua3MgdG8gdGhlIHBhcmFsbGVsIGFwcGx5Cisg ICAgICAgIHdvcmtlci4gU2V0dGluZyB0aGlzIHRvIHplcm8gc2VyaWFsaXplIGFsbCBtZXNzYWdl cy4gQSB2YWx1ZSBvZgorICAgICAgICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4gKHRoZSBkZWZhdWx0 KSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFRoaXMgaXMKKyAgICAgICAgaW50ZW5kZWQgdG8gdGVz dCBzZXJpYWxpemF0aW9uIHRvIGZpbGVzIHdpdGgKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5n ID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgor ICAgICAgICBXaGVuIGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaXB0aW9uIDxsaXRlcmFsPnN0 cmVhbWluZzwvbGl0ZXJhbD4KKyAgICAgICAgcGFyYW1ldGVyIGlzIHNldCB0byA8bGl0ZXJhbD5w YXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgICAgICAgIHNlbmRz IG1lc3NhZ2VzIHRvIHBhcmFsbGVsIHdvcmtlcnMgd2l0aCBhIHRpbWVvdXQuIEJ5IGRlZmF1bHQs IHRoZQorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VyaWFsaXplIHRoZSByZW1h aW5pbmcgbWVzc2FnZXMgdG8gZmlsZXMgaWYKKyAgICAgICAgdGhlIHRpbWVvdXQgaXMgZXhjZWVk ZWQuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBhbnkgdmFsdWUgb3RoZXIgdGhhbgorICAgICAg ICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4sIHNlcmlhbGl6ZSB0byBmaWxlcyBldmVuIHdpdGhvdXQg dGltZW91dC4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBw YXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZSA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25m PC9maWxlbmFtZT4KKyAgICAgICAgZmlsZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQgbGluZS4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgIDwvdmFyaWFibGVsaXN0PgogICA8L3NlY3QxPgogICA8c2VjdDEgaWQ9InJ1bnRpbWUt Y29uZmlnLXNob3J0Ij4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggOTdmNGEzMDM3Yy4uNDVmYWE3NDU5NiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMKQEAgLTI1Myw2ICsyNTMsOSBAQCBzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogLyogQSBsaXN0IHRvIG1haW50YWluIHN1 YnRyYW5zYWN0aW9ucywgaWYgYW55LiAqLwogc3RhdGljIExpc3QJICAgKnN1YnhhY3RsaXN0ID0g TklMOwogCisvKiBHVUMgdmFyaWFibGUgKi8KK2ludAkJc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hv bGQgPSAtMTsKKwogc3RhdGljIHZvaWQgcGFfZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8pOwogc3RhdGljIFBhcmFsbGVsVHJhbnNTdGF0ZSBwYV9nZXRfeGFj dF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkKTsKIHN0YXRpYyBQYXJ0 aWFsRmlsZVNldFN0YXRlIHBhX2dldF9maWxlc2V0X3N0YXRlKHZvaWQpOwpAQCAtMTE1OCw2ICsx MTYxLDE1IEBAIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNp emUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQogCUFzc2VydCghSXNUcmFuc2FjdGlvblN0YXRl KCkpOwogCUFzc2VydCghd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKTsKIAorCS8qIEZvcmNlIHRv IHNlcmlhbGl6ZSBtZXNzYWdlcyBpZiBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCBpcyByZWFj aGVkLiAqLworCWlmIChzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCAhPSAtMSAmJgorCQkoc3Ry ZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPT0gMCB8fAorCQkgc3RyZWFtX3NlcmlhbGl6ZV90aHJl c2hvbGQgPCBwYXJhbGxlbF9zdHJlYW1fbmNodW5rcykpCisJeworCQlwYXJhbGxlbF9zdHJlYW1f bmNodW5rcyA9IDA7CisJCXJldHVybiBmYWxzZTsKKwl9CisKICNkZWZpbmUgU0hNX1NFTkRfUkVU UllfSU5URVJWQUxfTVMgMTAwMAogI2RlZmluZSBTSE1fU0VORF9USU1FT1VUX01TCQkoMTAwMDAg LSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUykKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKaW5kZXggYTlmNWI2NjkzNC4uMDZiYWU4NWViYSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zMjYsNiArMzI2LDEyIEBAIHN0YXRp YyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKICAqLwog c3RhdGljIHVpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMgPSAwOwogCisvKgorICogVGhl IG51bWJlciBvZiBzdHJlYW1pbmcgY2h1bmtzIHNlbnQgYnkgbGVhZGVyIGFwcGx5IHdvcmtlciBk dXJpbmcgb25lCisgKiBzdHJlYW1lZCB0cmFuc2FjdGlvbi4gVGhpcyBpcyBvbmx5IHVzZWQgd2hl biBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCA+IDAuCisgKi8KK3VpbnQzMiBwYXJhbGxlbF9z dHJlYW1fbmNodW5rcyA9IDA7CisKIC8qCiAgKiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEg bW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBz dWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hl cyB0aGUgc3Vic2tpcGxzbi4KQEAgLTE1MTgsNiArMTUyNCw5IEBAIGFwcGx5X2hhbmRsZV9zdHJl YW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFM TEVMOgogCQkJQXNzZXJ0KHdpbmZvKTsKIAorCQkJaWYgKHN0cmVhbV9zZXJpYWxpemVfdGhyZXNo b2xkID4gMCkKKwkJCQlwYXJhbGxlbF9zdHJlYW1fbmNodW5rcysrOworCiAJCQkvKgogCQkJICog T25jZSB3ZSBzdGFydCBzZXJpYWxpemluZyB0aGUgY2hhbmdlcywgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcgogCQkJICogd2lsbCB3YWl0IGZvciB0aGUgbGVhZGVyIHRvIHJlbGVhc2UgdGhlIHN0 cmVhbSBsb2NrIHVudGlsIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA3 NzUxOWE1NmZlLi5hYzg4NWYxM2E2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpA QCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5o IgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9z eW5jcmVwLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhcmdlX29iamVjdC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKQEAgLTMwMTgsNiArMzAxOSwxOSBAQCBz dHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAkJTlVMTCwgTlVMTCwgTlVM TAogCX0sCiAKKwl7CisJCXsic3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQiLCBQR0NfU0lHSFVQ LCBERVZFTE9QRVJfT1BUSU9OUywKKwkJCWdldHRleHRfbm9vcCgiRm9yY2VzIHRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyAiCisJCQkJCQkgInRvIGZpbGVzIGFm dGVyIHNlbmRpbmcgc3BlY2lmaWVkIGFtb3VudCBvZiBzdHJlYW1pbmcgIgorCQkJCQkJICJjaHVu a3MgaW4gc3RyZWFtaW5nIHBhcmFsbGVsIG1vZGUuIiksCisJCQlnZXR0ZXh0X25vb3AoIkEgdmFs dWUgb2YgLTEgZGlzYWJsZXMgdGhpcyBmZWF0dXJlLiIpLAorCQkJR1VDX05PVF9JTl9TQU1QTEUK KwkJfSwKKwkJJnN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkLAorCQktMSwgLTEsIElOVF9NQVgs CisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImxvZ19yb3RhdGlvbl9hZ2UiLCBQ R0NfU0lHSFVQLCBMT0dHSU5HX1dIRVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91 bnQgb2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaW5nICIKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggMGJhMjBhMWVhNy4uOTAxNDE1MmU2YyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTIyMCw2ICsyMjAsMTAg QEAgZXh0ZXJuIFBHRExMSU1QT1JUIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtl cjsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fcmVtb3RlX3RyYW5zYWN0aW9uOwogCitl eHRlcm4gUEdETExJTVBPUlQgaW50IHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkOworCitleHRl cm4gUEdETExJTVBPUlQgdWludDMyIHBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzOworCiBleHRlcm4g dm9pZCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxS ZXBXb3JrZXIgKmxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJ CQkJCQkJCQkJCQlib29sIG9ubHlfcnVubmluZyk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbAppbmRleCAxMGVmZDJk Mzc2Li41OWU3ZTc1MzRmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJf c3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwKQEAgLTEzLDggKzEzLDExIEBAIG15ICRv ZmZzZXQgPSAwOwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9 IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJs aXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwotJG5vZGVfcHVibGlz aGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKLQknbG9naWNhbF9kZWNvZGluZ193 b3JrX21lbSA9IDY0a0InKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoCisJJ3Bvc3Rn cmVzcWwuY29uZicsIHFxKAorCWxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCCisJbWF4 X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEwCispKTsKICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7 CiAKICMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQpAQCAtMjQsNyArMjcsMTEgQEAgJG5vZGVfc3Vi c2NyaWJlci0+aW5pdDsKICMgQ2hlY2sgaWYgYW55IHN0cmVhbWluZyBjaHVua3MgYXJlIGFwcGxp ZWQgdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKICMgaGF2ZSB0byBsb29rIGZv ciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cK ICMgdmVyYm9zaXR5LgotJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwu Y29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5h cHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCisJbG9nX21pbl9tZXNzYWdlcyA9 IGRlYnVnMQorCW1heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAxMAorKSk7CiAKICRub2RlX3N1 YnNjcmliZXItPnN0YXJ0OwogCkBAIC00Nyw3ICs1NCw3IEBAICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKIAlDT05ORUNUSU9OICckcHVi bGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKIAlQVUJMSUNBVElPTiB0 YXBfcHViCi0JV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNlKSIp OworCVdJVEggKHN0cmVhbWluZyA9IHBhcmFsbGVsLCB0d29fcGhhc2UgPSBvbiwgY29weV9kYXRh ID0gZmFsc2UpIik7CiAKICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CiAKQEAgLTE0Niw2ICsxNTMsMTMyIEBAICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7 CiBpcygkcmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyBpbmRleCcpOwogCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBl bnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVO Q0FURSBUQUJMRSB0ZXN0X3RhYiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRlc3Qgc2VyaWFsaXppbmcg bWVzc2FnZXMgdG8gZGlzaworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgU2V0IHN0cmVhbV9z ZXJpYWxpemVfdGhyZXNob2xkIHRvIHplcm8sIHNvIHRoZSBtZXNzYWdlcyB3aWxsIGJlIHNlcmlh bGl6ZWQgdG8gZGlzay4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSdBTFRFUiBTWVNURU0gU0VUIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID0gMDsnKTsKKyRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKworIyBTZXJpYWxpemUgdGhlIENPTU1JVCB0cmFuc2Fj dGlvbi4KKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIik7CisKKyMgRW5zdXJlIHRoYXQgdGhlIG1lc3NhZ2Vz IGFyZSBzZXJpYWxpemVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RF QlVHOiAoIFtBLVowLTldKzopPyBvcGVuaW5nIGZpbGUgIi4qXC5jaGFuZ2VzIiBmb3Igc3RyZWFt ZWQgY2hhbmdlcy8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQg b24gc3Vic2NyaWJlcgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQs IHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYnkgc2VyaWFsaXppbmcg bWVzc2FnZXMgdG8gZGlzaycpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZp cm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FU RSBUQUJMRSB0ZXN0X3RhYiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworIyBTZXJpYWxpemUgdGhlIFBSRVBBUkUgdHJhbnNhY3Rpb24uCisjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CisJUFJFUEFSRSBUUkFOU0FDVElPTiAneGFjdCc7 CisJfSk7CisKKyMgRW5zdXJlIHRoYXQgdGhlIG1lc3NhZ2VzIGFyZSBzZXJpYWxpemVkLgorJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBv cGVuaW5nIGZpbGUgIi4qXC5jaGFuZ2VzIiBmb3Igc3RyZWFtZWQgY2hhbmdlcy8sCisJJG9mZnNl dCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMg Q2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVy CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworaXMoJHJlc3VsdCwgcXEo MSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKyMgQ2hlY2sg dGhhdCAyUEMgZ2V0cyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ09NTUlUIFBSRVBBUkVEICd4YWN0JzsiKTsKKworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0 IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0KKyAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CisKKyMgQ2xlYW4g dXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiIik7Ciskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFNlcmlhbGl6ZSB0aGUgQUJP UlQgdG9wLXRyYW5zYWN0aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOwor CVJPTExCQUNLOworCX0pOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFs aXplZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1a MC05XSs6KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMv LAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVy CiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoMCksICdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNr Jyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFi Iik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFNl cmlhbGl6ZSB0aGUgQUJPUlQgc3ViLXRyYW5zYWN0aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJl ciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmls ZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKKwlCRUdJ TjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MDAwKSBzKGkpOworCVNBVkVQT0lOVCBzcDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKKwlST0xMQkFDSyBU TyBzcDsKKwlDT01NSVQ7CisJfSk7CisKKyMgRW5zdXJlIHRoYXQgdGhlIG1lc3NhZ2VzIGFyZSBz ZXJpYWxpemVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAo IFtBLVowLTldKzopPyBvcGVuaW5nIGZpbGUgIi4qXC5jaGFuZ2VzIiBmb3Igc3RyZWFtZWQgY2hh bmdlcy8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCBvbmx5IHN1Yi10cmFuc2FjdGlvbiBpcyBhYm9ydGVk IG9uIHN1YnNjcmliZXIuCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3Vs dCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemlu ZyBtZXNzYWdlcyB0byBkaXNrJyk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9w dWJsaXNoZXItPnN0b3A7CiAKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_008_OS0PR01MB5716C1C1D8244BA86311193894EB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v64-0005-Stop-extra-worker-if-GUC-was-changed.patch" Content-Description: v64-0005-Stop-extra-worker-if-GUC-was-changed.patch Content-Disposition: attachment; filename="v64-0005-Stop-extra-worker-if-GUC-was-changed.patch"; size=4715; creation-date="Wed, 21 Dec 2022 05:32:16 GMT"; modification-date="Wed, 21 Dec 2022 05:32:36 GMT" Content-Transfer-Encoding: base64 RnJvbSAwOTdkMzBjYzg5MmFhODEyNjYzMjk5YzI1ZGU0Y2RmOGZjYjcxMDllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGVybG9ja2NwcCA8c2hlcmxvY2tjcHBAZm94bWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgRGVjIDIwMjIgMjA6NDM6MjEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY2 NCA1LzddIFN0b3AgZXh0cmEgd29ya2VyIGlmIEdVQyB3YXMgY2hhbmdlZAoKSWYgdGhlIG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gaXMgY2hhbmdlZCB0byBhCmxv d2VyIHZhbHVlLCB0cnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgdG8ga2VlcCB0 aGUgbnVtYmVyIG9mCndvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uCi0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgNzMgKysrKysrKysrKysrKysrKy0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDcgKysKIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAxICsKIDMgZmlsZXMgY2hh bmdlZCwgNjkgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA0 NWZhYTc0NTk2Li5lMTQ3NTUyZDkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtNTQxLDYgKzU0MSwyNSBAQCBw YV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoK KyAqIFN0b3AgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhbmQgZnJlZSB0aGUgY29y cmVzcG9uZGluZyBpbmZvLgorICovCitzdGF0aWMgdm9pZAorcGFfc3RvcF93b3JrZXIoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCWludAkJCXNsb3Rfbm87CisJdWludDE2CQln ZW5lcmF0aW9uOworCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJ Z2VuZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247 CisJc2xvdF9ubyA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87CisJ U3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwlsb2dpY2FscmVwX3Bh X3dvcmtlcl9zdG9wKHNsb3Rfbm8sIGdlbmVyYXRpb24pOworCisJcGFfZnJlZV93b3JrZXJfaW5m byh3aW5mbyk7Cit9CisKIC8qCiAgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBmb3IgcmV1 c2UuCiAgKgpAQCAtNTg4LDE4ICs2MDcsNyBAQCBwYV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8pCiAJCWxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29s KSA+CiAJCShtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikp CiAJewotCQlpbnQJCQlzbG90X25vOwotCQl1aW50MTYJCWdlbmVyYXRpb247Ci0KLQkJU3Bpbkxv Y2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7Ci0JCWdlbmVyYXRpb24gPSB3aW5mby0+ c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOwotCQlzbG90X25vID0gd2luZm8t PnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKLQkJU3BpbkxvY2tSZWxlYXNlKCZ3 aW5mby0+c2hhcmVkLT5tdXRleCk7Ci0KLQkJbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChzbG90 X25vLCBnZW5lcmF0aW9uKTsKLQotCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKLQorCQlw YV9zdG9wX3dvcmtlcih3aW5mbyk7CiAJCXJldHVybiB0cnVlOwogCX0KIApAQCAtNjA5LDYgKzYx Nyw0NyBAQCBwYV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCiAJ cmV0dXJuIGZhbHNlOwogfQogCisvKgorICogVHJ5IHRvIHN0b3AgcGFyYWxsZWwgYXBwbHkgd29y a2VycyB0aGF0IGFyZSBub3QgaW4gdXNlIHRvIGtlZXAgdGhlIG51bWJlciBvZgorICogd29ya2Vy cyBsb3dlciB0aGFuIGhhbGYgb2YgdGhlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24uCisgKi8KK3ZvaWQKK3BhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQpCit7CisJ TGlzdCAqYWN0aXZlX3dvcmtlcnM7CisJTGlzdENlbGwgKmxjOworCWludCBtYXhfYXBwbHl3b3Jr ZXJzID0gbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiAvIDI7CisK KwlpZiAobGlzdF9sZW5ndGgoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpIDw9IG1heF9hcHBseXdv cmtlcnMpCisJCXJldHVybjsKKworCWFjdGl2ZV93b3JrZXJzID0gbGlzdF9jb3B5KFBhcmFsbGVs QXBwbHlXb3JrZXJQb29sKTsKKworCWZvcmVhY2gobGMsIGFjdGl2ZV93b3JrZXJzKQorCXsKKwkJ UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogVHJ5IHRvIGZyZWUgYW5kIHN0b3AgdGhlIHdv cmtlciB0aGF0IGlzIGluIHVzZS4gTm9ybWFsbHksIHdlIGZyZWUKKwkJICogdGhlIHdvcmtlciBh ZnRlciBlbnN1cmluZyB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgYnkgdGhlCisJ CSAqIHBhcmFsbGVsIHdvcmtlciBidXQgZm9yIHJvbGxiYWNrcywgd2UgZG9uJ3Qgd2FpdCBmb3Ig dGhlIHRyYW5zYWN0aW9uCisJCSAqIHRvIGZpbmlzaCBzbyBjYW4ndCBmcmVlIHRoZSB3b3JrZXIg aW5mb3JtYXRpb24gaW1tZWRpYXRlbHkuCisJCSAqLworCQlpZiAod2luZm8tPmluX3VzZSkKKwkJ CXBhX2ZyZWVfd29ya2VyKHdpbmZvKTsKKworCQkvKiBEaXJlY3RseSBzdG9wIHRoZSB3b3JrZXIg aWYgbm90IGluIHVzZS4gKi8KKwkJZWxzZQorCQkJcGFfc3RvcF93b3JrZXIod2luZm8pOworCisJ CS8qIFJlY2hlY2sgdGhlIG51bWJlciBvZiB3b3JrZXJzLiAqLworCQlpZiAobGlzdF9sZW5ndGgo UGFyYWxsZWxBcHBseVdvcmtlclBvb2wpIDw9IG1heF9hcHBseXdvcmtlcnMpCisJCQlicmVhazsK Kwl9CisKKwlsaXN0X2ZyZWUoYWN0aXZlX3dvcmtlcnMpOworfQorCiAvKgogICogRnJlZSB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uIGFuZCB1bmxpbmsgdGhlIGZpbGVzIHdp dGgKICAqIHNlcmlhbGl6ZWQgY2hhbmdlcyBpZiBhbnkuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwppbmRleCAwNmJhZTg1ZWJhLi5hNTc0ZDczYzIyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM2MTQsNiArMzYxNCwxMyBAQCBM b2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAkJewogCQkJQ29u ZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hV UCk7CisKKwkJCS8qCisJCQkgKiBUcnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wg aW4gY2FzZSB0aGUKKwkJCSAqIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3Jp cHRpb24gaXMgY2hhbmdlZCB0byBhCisJCQkgKiBsb3dlciB2YWx1ZS4KKwkJCSAqLworCQkJcGFf c3RvcF9pZGxlX3dvcmtlcnMoKTsKIAkJfQogCiAJCWlmIChyYyAmIFdMX1RJTUVPVVQpCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDkwMTQxNTJlNmMuLmI4 YTlkNTJjOGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBA IC0yNzQsNiArMjc0LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3Jp Z2luKGNoYXIgKm9yaWdpbm5hbWUpOwogZXh0ZXJuIHZvaWQgcGFfYWxsb2NhdGVfd29ya2VyKFRy YW5zYWN0aW9uSWQgeGlkKTsKIGV4dGVybiBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqcGFfZmlu ZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgcGFfZnJlZV93b3JrZXIo UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKK2V4dGVybiB2b2lkIHBhX3N0b3BfaWRs ZV93b3JrZXJzKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lk KTsKIAogZXh0ZXJuIGJvb2wgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbywgU2l6ZSBuYnl0ZXMsCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_008_OS0PR01MB5716C1C1D8244BA86311193894EB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v64-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v64-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v64-0006-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=23103; creation-date="Wed, 21 Dec 2022 05:32:16 GMT"; modification-date="Wed, 21 Dec 2022 05:32:37 GMT" Content-Transfer-Encoding: base64 RnJvbSBmZDE1ODg4MmRjMzc5NjNiMWQ4MGUzMjEzYzZiYTBmMDllYjIyZTAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjQgNi83XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgIHwgIDEw ICsKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAxMSAr LQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICA1ICsK IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgICAgfCAgIDIgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICAgMSArCiAuLi4v cmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMzAgKysrCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxODIgKysrKysrKysr KysrKy0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAg fCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8 ICAgNyArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAg IDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgICA4 ICsKIC4uLi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwgICAgICAgICB8ICA2OSAr KysrKystCiAxMyBmaWxlcyBjaGFuZ2VkLCAyNzQgaW5zZXJ0aW9ucygrKSwgNTkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbAppbmRleCA0NGNkYTE1MzgzLi43NTkwODMxM2U1IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbApAQCAtNzk0OCw2ICs3OTQ4LDE2IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZs dDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnJldHJ5PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9v bDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgcHJl dmlvdXMgY2hhbmdlIGZhaWxlZCB0byBiZSBhcHBsaWVkIHdoaWxlIHRoZXJlIHdlcmUgYW55Cisg ICAgICAgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG5lY2Vzc2l0YXRpbmcgYSByZXRy eS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88L3N0cnVjdGZpZWxk PiA8dHlwZT50ZXh0PC90eXBlPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5k ZXggYTdiZDliZTk1NC4uYTYzZmExNTQ5YSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCkBAIC0xNTAwLDEyICsxNTAwLDExIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90 ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAK ICAgPHBhcmE+CiAgICBXaGVuIHRoZSBzdHJlYW1pbmcgbW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxl bDwvbGl0ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9mCi0gICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1h eSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KLSAg IGNoYW5nZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+IG9yIDxs aXRlcmFsPm9mZjwvbGl0ZXJhbD4gYW5kCi0gICBjYXVzZSB0aGUgc2FtZSBjb25mbGljdHMgYWdh aW4gc28gdGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsCi0gICBi ZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04s IHBsZWFzZSByZWZlciB0byA8bGluawotICAgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9u Ij48Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uCi0gICBTS0lQPC9jb21tYW5kPjwvbGlu az4uCisgICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNh c2UsIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24KKyAgIHdpbGwgYmUgcmV0cmllZCBpbiA8bGl0ZXJh bD5zdHJlYW1pbmcgPSBvbjwvbGl0ZXJhbD4gbW9kZS4gSWYgaXQgZmFpbHMKKyAgIGFnYWluLCB0 aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwgYmUgd3JpdHRlbiB0 byB0aGUKKyAgIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwgcGxlYXNl IHJlZmVyIHRvCisgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21t YW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gU0tJUDwvY29tbWFuZD48L2xpbms+LgogICA8L3Bh cmE+CiAgPC9zZWN0MT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dt bAppbmRleCBmMTczYTA5MDM3Li42NGQ1ODAyYWRkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjUxLDYgKzI1MSwxMSBAQCBDUkVBVEUgU1VCU0NSSVBU SU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVw bGFjZWFibAogICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlm IGFuIGVycm9yIGhhcHBlbnMgaW4gYQogICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwg dGhlIGZpbmlzaCBMU04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbgogICAgICAgICAgIG1pZ2h0 IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KKyAgICAgICAgICBXaGVuIGFwcGx5 aW5nIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMsIGlmIGEgZGVhZGxvY2sgaXMgZGV0ZWN0ZWQsIHRo ZQorICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGV4aXQgd2l0aCBhbiBlcnJv ci4gVGhlCisgICAgICAgICAgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+IG1vZGUgaXMgZGlz cmVnYXJkZWQgd2hlbiByZXRyeWluZzsKKyAgICAgICAgICBpbnN0ZWFkIHRoZSB0cmFuc2FjdGlv biB3aWxsIGJlIGFwcGxpZWQgdXNpbmcgPGxpdGVyYWw+b248L2xpdGVyYWw+CisgICAgICAgICAg bW9kZS4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zh cmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IGE1MDZm YzNlYzguLjcyM2IxNDFjNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpA QCAtNzEsNiArNzEsNyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdf b2spCiAJc3ViLT5zdHJlYW0gPSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50d29waGFzZXN0 YXRlID0gc3ViZm9ybS0+c3VidHdvcGhhc2VzdGF0ZTsKIAlzdWItPmRpc2FibGVvbmVyciA9IHN1 YmZvcm0tPnN1YmRpc2FibGVvbmVycjsKKwlzdWItPnJldHJ5ID0gc3ViZm9ybS0+c3VicmV0cnk7 CiAKIAkvKiBHZXQgY29ubmluZm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVUJTQ1JJ UFRJT05PSUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggMmQ4MTA0YjA5 MC4uYzJjN2Q4YThiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTMw MSw3ICsxMzAxLDcgQEAgUkVWT0tFIEFMTCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVz IEZST00gcHVibGljOwogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7 CiBHUkFOVCBTRUxFQ1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3du ZXIsIHN1YmVuYWJsZWQsCiAgICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0 d29waGFzZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsCi0gICAgICAgICAgICAgIHN1YnNsb3RuYW1l LCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKKyAgICAgICAgICAg ICAgc3VicmV0cnksIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMs IHN1Ym9yaWdpbikKICAgICBPTiBwZ19zdWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVBVEUg VklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCmluZGV4IGQwZTBkMjBhODcuLmYyYjdiMTk2NTYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTYzNSw2ICs2MzUsNyBAQCBDcmVhdGVT dWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpz dG10LAogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExP R0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJkaXNhYmxlb25lcnIgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVv bmVycik7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29s R2V0RGF0dW0oZmFsc2UpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5m byAtIDFdID0KIAkJQ1N0cmluZ0dldFRleHREYXR1bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xv dF9uYW1lKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBs eXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYwppbmRleCBlMTQ3NTUyZDkxLi5mODg3ODZjMTA4IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YwpAQCAtMzAwLDYgKzMwMCwxNyBAQCBwYV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCiAJ aWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyoKKwkgKiBE b24ndCB1c2UgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBmb3IgcmV0cmllcywgYmVjYXVzZSBpdCBp cyBwb3NzaWJsZQorCSAqIHRoYXQgYSBkZWFkbG9jayB3YXMgZGV0ZWN0ZWQgdGhlIGxhc3QgdGlt ZSB3ZSB0cmllZCB0byBhcHBseSBhCisJICogdHJhbnNhY3Rpb24gdXNpbmcgYSBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRyeSkKKwl7CisJCWVs b2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJp ZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCXJldHVybiB0cnVlOwogfQogCkBAIC0xNjgw LDMgKzE2OTEsMjIgQEAgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvLCBYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocmVtb3Rl X2xzbiwgd2luZm8tPnNoYXJlZC0+bGFzdF9jb21taXRfZW5kKTsKIAkodm9pZCkgcGFfZnJlZV93 b3JrZXIod2luZm8pOwogfQorCisvKiBDaGVjayBpZiBhbnkgYWN0aXZlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMuICovCitib29sCitwYV9oYXZlX2FjdGl2ZV93b3JrZXIodm9pZCkKK3sKKwlMaXN0 Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKQorCXsK KwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnRtcF93aW5mbzsKKworCQl0bXBfd2luZm8gPSAo UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQlpZiAodG1wX3dpbmZv LT5pbl91c2UpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBhNTc0ZDczYzIyLi5hZTgy Njk3NmViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM5 Myw3ICszOTMsNyBAQCBzdGF0aWMgdm9pZCBzdHJlYW1fY2xvc2VfZmlsZSh2b2lkKTsKIAogc3Rh dGljIHZvaWQgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJv b2wgcmVxdWVzdFJlcGx5KTsKIAotc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4 aXQodm9pZCk7CitzdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcih2b2lkKTsK IAogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29t bWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9p bnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLApAQCAtNDMwLDYgKzQzMCw4IEBAIHN0 YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCk7CiBz dGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5z YWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndp bmZvKTsKIAorc3RhdGljIHZvaWQgc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShib29sIHJldHJ5KTsK KwogLyoKICAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3Jr ZXIuCiAgKi8KQEAgLTEwNDUsNiArMTA0Nyw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXQoU3RyaW5n SW5mbyBzKQogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6 ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5l bmRfbHNuKTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRp b25fcmV0cnkoZmFsc2UpOworCiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBO VUxMKTsKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KQEAgLTExNTEsNiAr MTE1Niw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJ c2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMg dGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3lu Y2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwogCkBAIC0xMjA3LDYgKzEyMTUsOSBA QCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVz aF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCWlu X3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcu ICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0 YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nl c3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwogCkBAIC0xMjY4LDYgKzEy NzksOSBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbiwgWGFjdExh c3RDb21taXRFbmQpOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVz ZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisK IAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBh cmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocm9sbGJhY2tfZGF0YS5yb2xsYmFj a19lbmRfbHNuKTsKIApAQCAtMTM5MSw2ICsxNDA1LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9w cmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCWJyZWFrOwogCX0KIAorCS8qIFJlc2V0IHRoZSByZXRy eSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJcGdzdGF0X3Jl cG9ydF9zdGF0KGZhbHNlKTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWlu ZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCkBAIC0xOTQ2LDYgKzE5NjMsMTAgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAl9CiAKKwkv KiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlpZiAodG9wbGV2ZWxfeGFjdCkKKwkJc2V0X3N1 YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2lu Zm8oKTsKIH0KIApAQCAtMjIyMiw2ICsyMjQzLDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21t aXQoU3RyaW5nSW5mbyBzKQogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBz eW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21t aXRfZGF0YS5lbmRfbHNuKTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9z dWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFU RV9JRExFLCBOVUxMKTsKIAogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwpAQCAt NDMyMywyMCArNDM0NywyOCBAQCBzdGFydF90YWJsZV9zeW5jKFhMb2dSZWNQdHIgKm9yaWdpbl9z dGFydHBvcywgY2hhciAqKm15c2xvdG5hbWUpCiAJfQogCVBHX0NBVENIKCk7CiAJeworCQkvKgor CQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBz dGF0ZSB0byBhbiBpZGxlCisJCSAqIHN0YXRlCisJCSAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsK KworCQlFbWl0RXJyb3JSZXBvcnQoKTsKKwkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7CisJ CUZsdXNoRXJyb3JTdGF0ZSgpOworCisJCVJFU1VNRV9JTlRFUlJVUFRTKCk7CisKKwkJLyogUmVw b3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1cmluZyB0YWJsZSBzeW5jaHJvbml6YXRpb24gKi8KKwkJ cGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgZmFs c2UpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1 YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRo ZSB3b3JrZXIgZmFpbGVkIGR1cmluZyB0YWJsZSBzeW5jaHJvbml6YXRpb24uIEFib3J0Ci0JCQkg KiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNl bnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFu c2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3Jp cHRpb24tPm9pZCwgZmFsc2UpOworCQkJRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAot CQkJUEdfUkVfVEhST1coKTsKLQkJfQorCQkvKiBTZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNl dF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1ZSk7CisKKwkJcHJvY19leGl0KDApOwogCX0KIAlQR19F TkRfVFJZKCk7CiAKQEAgLTQzNjEsMjAgKzQzOTMsMjcgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0 ciBvcmlnaW5fc3RhcnRwb3MpCiAJfQogCVBHX0NBVENIKCk7CiAJeworCQkvKgorCQkgKiBFbWl0 IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBh biBpZGxlCisJCSAqIHN0YXRlCisJCSAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQlFbWl0 RXJyb3JSZXBvcnQoKTsKKwkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7CisJCUZsdXNoRXJy b3JTdGF0ZSgpOworCisJCVJFU1VNRV9JTlRFUlJVUFRTKCk7CisKKwkJLyogUmVwb3J0IHRoZSB3 b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMgKi8KKwkJcGdzdGF0X3JlcG9ydF9z dWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJCQkgIWFtX3Rh Ymxlc3luY193b3JrZXIoKSk7CisKIAkJaWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIp Ci0JCQlEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0J CQkgKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcy4gQWJv cnQgdGhlCi0JCQkgKiBjdXJyZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3Nh Z2UgaXMgc2VudCBpbiBhbgotCQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRP ZkFueVRyYW5zYWN0aW9uKCk7Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihN eVN1YnNjcmlwdGlvbi0+b2lkLCAhYW1fdGFibGVzeW5jX3dvcmtlcigpKTsKKwkJCURpc2FibGVT dWJzY3JpcHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0 IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOwogCX0K IAlQR19FTkRfVFJZKCk7CiB9CkBAIC00NjUwLDM5ICs0Njg5LDIwIEBAIEFwcGx5V29ya2VyTWFp bihEYXR1bSBtYWluX2FyZykKIH0KIAogLyoKLSAqIEFmdGVyIGVycm9yIHJlY292ZXJ5LCBkaXNh YmxlIHRoZSBzdWJzY3JpcHRpb24gaW4gYSBuZXcgdHJhbnNhY3Rpb24KLSAqIGFuZCBleGl0IGNs ZWFubHkuCisgKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gaW4gYSBuZXcgdHJhbnNhY3Rpb24u CiAgKi8KIHN0YXRpYyB2b2lkCi1EaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKQorRGlz YWJsZVN1YnNjcmlwdGlvbk9uRXJyb3Iodm9pZCkKIHsKLQkvKgotCSAqIEVtaXQgdGhlIGVycm9y IG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKLQkg KiBzdGF0ZQotCSAqLwotCUhPTERfSU5URVJSVVBUUygpOwotCi0JRW1pdEVycm9yUmVwb3J0KCk7 Ci0JQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7Ci0JRmx1c2hFcnJvclN0YXRlKCk7Ci0KLQlS RVNVTUVfSU5URVJSVVBUUygpOwotCi0JLyogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1cmlu ZyBlaXRoZXIgdGFibGUgc3luY2hyb25pemF0aW9uIG9yIGFwcGx5ICovCi0JcGdzdGF0X3JlcG9y dF9zdWJzY3JpcHRpb25fZXJyb3IoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKLQkJCQkJCQkJ CSAhYW1fdGFibGVzeW5jX3dvcmtlcigpKTsKLQogCS8qIERpc2FibGUgdGhlIHN1YnNjcmlwdGlv biAqLwogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJRGlzYWJsZVN1YnNjcmlwdGlvbihN eVN1YnNjcmlwdGlvbi0+b2lkKTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8q IE5vdGlmeSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkIGFuZCBleGl0ICovCisJ LyogTm90aWZ5IHRoZSBzdWJzY3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgKi8KIAllcmVwb3J0 KExPRywKIAkJCWVycm1zZygic3Vic2NyaXB0aW9uIFwiJXNcIiBoYXMgYmVlbiBkaXNhYmxlZCBi ZWNhdXNlIG9mIGFuIGVycm9yIiwKIAkJCQkgICBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpOwotCi0J cHJvY19leGl0KDApOwogfQogCiAvKgpAQCAtNDk3NCwzICs0OTk0LDcxIEBAIGdldF90cmFuc2Fj dGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICoqd2luZm8pCiAJCXJldHVybiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDsKIAl9 CiB9CisKKy8qCisgKiBTZXQgc3VicmV0cnkgb2YgcGdfc3Vic2NyaXB0aW9uIGNhdGFsb2cuCisg KgorICogSWYgcmV0cnkgaXMgdHJ1ZSwgc3Vic2NyaWJlciBpcyBhYm91dCB0byBleGl0IHdpdGgg YW4gZXJyb3IuIE90aGVyd2lzZSwgaXQKKyAqIG1lYW5zIHRoYXQgdGhlIHRyYW5zYWN0aW9uIHdh cyBhcHBsaWVkIHN1Y2Nlc3NmdWxseS4KKyAqLworc3RhdGljIHZvaWQKK3NldF9zdWJzY3JpcHRp b25fcmV0cnkoYm9vbCByZXRyeSkKK3sKKwlSZWxhdGlvbglyZWw7CisJSGVhcFR1cGxlCXR1cDsK Kwlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CisJYm9vbAkJbnVsbHNbTmF0dHNfcGdfc3Vic2Ny aXB0aW9uXTsKKwlib29sCQlyZXBsYWNlc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCURhdHVt CQl2YWx1ZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKworCS8qIEZhc3QgcGF0aCAtIGlmIG5v IHN0YXRlIGNoYW5nZSB0aGVuIG5vdGhpbmcgdG8gZG8gKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24t PnJldHJ5ID09IHJldHJ5KQorCQlyZXR1cm47CisKKwkvKiBGYXN0IHBhdGggLSBza2lwIGZvciBw YXJhbGxlbCBhcHBseSB3b3JrZXJzICovCisJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigp KQorCQlyZXR1cm47CisKKwkvKiBGYXN0IHBhdGggLSBza2lwIHNldCByZXRyeSBpZiBubyBhY3Rp dmUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLworCWlmIChyZXRyeSAmJiAhcGFfaGF2ZV9hY3Rp dmVfd29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJ eworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsKKwl9 CisKKwkvKiBMb29rIHVwIHRoZSBzdWJzY3JpcHRpb24gaW4gdGhlIGNhdGFsb2cgKi8KKwlyZWwg PSB0YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwor CXR1cCA9IFNlYXJjaFN5c0NhY2hlQ29weTEoU1VCU0NSSVBUSU9OT0lELAorCQkJCQkJCSAgT2Jq ZWN0SWRHZXREYXR1bShNeVN1YnNjcmlwdGlvbi0+b2lkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlz VmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgInN1YnNjcmlwdGlvbiBcIiVzXCIgZG9lcyBub3Qg ZXhpc3QiLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSk7CisKKwlMb2NrU2hhcmVkT2JqZWN0KFN1YnNj cmlwdGlvblJlbGF0aW9uSWQsIE15U3Vic2NyaXB0aW9uLT5vaWQsIDAsCisJCQkJCSBBY2Nlc3NT aGFyZUxvY2spOworCisJLyogRm9ybSBhIG5ldyB0dXBsZS4gKi8KKwltZW1zZXQodmFsdWVzLCAw LCBzaXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7 CisJbWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CisKKwkvKiBTZXQg c3VicmV0cnkgKi8KKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAxXSA9 IEJvb2xHZXREYXR1bShyZXRyeSk7CisJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi cmV0cnkgLSAxXSA9IHRydWU7CisKKwl0dXAgPSBoZWFwX21vZGlmeV90dXBsZSh0dXAsIFJlbGF0 aW9uR2V0RGVzY3IocmVsKSwgdmFsdWVzLCBudWxscywKKwkJCQkJCQlyZXBsYWNlcyk7CisKKwkv KiBVcGRhdGUgdGhlIGNhdGFsb2cuICovCisJQ2F0YWxvZ1R1cGxlVXBkYXRlKHJlbCwgJnR1cC0+ dF9zZWxmLCB0dXApOworCisJLyogQ2xlYW51cC4gKi8KKwloZWFwX2ZyZWV0dXBsZSh0dXApOwor CXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKworCWlmIChzdGFydGVkX3R4KQorCQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGY0NTRiMzFjNTguLjQ5Zjgz NWVlZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDU2MCw4ICs0NTYwLDkgQEAgZ2V0U3Vic2NyaXB0aW9u cyhBcmNoaXZlICpmb3V0KQogCW50dXBzID0gUFFudHVwbGVzKHJlcyk7CiAKIAkvKgotCSAqIEdl dCBzdWJzY3JpcHRpb24gZmllbGRzLiBXZSBkb24ndCBpbmNsdWRlIHN1YnNraXBsc24gaW4gdGhl IGR1bXAgYXMKLQkgKiBhZnRlciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8g bG9uZ2VyIGJlIHJlbGV2YW50LgorCSAqIEdldCBzdWJzY3JpcHRpb24gZmllbGRzLiBXZSBkb24n dCBpbmNsdWRlIHN1YnNraXBsc24gYW5kIHN1YnJldHJ5IGluCisJICogdGhlIGR1bXAgYXMgYWZ0 ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBiZQorCSAqIHJl bGV2YW50LgogCSAqLwogCWlfdGFibGVvaWQgPSBQUWZudW1iZXIocmVzLCAidGFibGVvaWQiKTsK IAlpX29pZCA9IFBRZm51bWJlcihyZXMsICJvaWQiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNj cmlwdGlvbi5oCmluZGV4IDViOWU1YTM5OWEuLmQzYjE1OGYwYzAgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaApAQCAtODgsNiArODgsMTEgQEAgQ0FUQUxPRyhwZ19zdWJzY3Jp cHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJL SV9ST1cKIAlib29sCQlzdWJkaXNhYmxlb25lcnI7CS8qIFRydWUgaWYgYSB3b3JrZXIgZXJyb3Ig c2hvdWxkIGNhdXNlIHRoZQogCQkJCQkJCQkJICogc3Vic2NyaXB0aW9uIHRvIGJlIGRpc2FibGVk ICovCiAKKwlib29sCQlzdWJyZXRyeSBCS0lfREVGQVVMVChmKTsJLyogVHJ1ZSBpZiBwcmV2aW91 cyBjaGFuZ2UgZmFpbGVkCisJCQkJCQkJCQkJCSAqIHRvIGJlIGFwcGxpZWQgd2hpbGUgdGhlcmUg d2VyZQorCQkJCQkJCQkJCQkgKiBhbnkgYWN0aXZlIHBhcmFsbGVsIGFwcGx5CisJCQkJCQkJCQkJ CSAqIHdvcmtlcnMgKi8KKwogI2lmZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVu Z3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1 Ymxpc2hlciAqLwogCXRleHQJCXN1YmNvbm5pbmZvIEJLSV9GT1JDRV9OT1RfTlVMTDsKQEAgLTEz MSw2ICsxMzYsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQlkaXNhYmxl b25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJ CQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCiAJCQkJCQkJCSAq IG9jY3VycyAqLworCWJvb2wJCXJldHJ5OwkJCS8qIEluZGljYXRlcyBpZiBwcmV2aW91cyBjaGFu Z2UgZmFpbGVkIHRvIGJlCisJCQkJCQkJCSAqIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgKi8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRv IHRoZSBwdWJsaXNoZXIgKi8KIAljaGFyCSAgICpzbG90bmFtZTsJCS8qIE5hbWUgb2YgdGhlIHJl cGxpY2F0aW9uIHNsb3QgKi8KIAljaGFyCSAgICpzeW5jY29tbWl0OwkJLyogU3luY2hyb25vdXMg Y29tbWl0IHNldHRpbmcgZm9yIHdvcmtlciAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaAppbmRleCBiOGE5ZDUyYzhlLi5lY2YxOGM1ODcyIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMzA0LDYgKzMwNCw4IEBAIGV4dGVy biB2b2lkIHBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKHZvaWQpOwogZXh0ZXJuIHZvaWQg cGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAogCQkJCQkJICAg WExvZ1JlY1B0ciByZW1vdGVfbHNuKTsKIAorZXh0ZXJuIGJvb2wgcGFfaGF2ZV9hY3RpdmVfd29y a2VyKHZvaWQpOworCiAjZGVmaW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpICgod29y a2VyKS0+YXBwbHlfbGVhZGVyX3BpZCAhPSBJbnZhbGlkUGlkKQogCiBzdGF0aWMgaW5saW5lIGJv b2wKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDM4OTQxZmZjMDEuLjg5 MGZhODhkMjkgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0u cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtODcsOCAr ODcsMTYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRh aW4gbG9jYWwgZGVmYXVsdHMnKTsKIAogCSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBt b2RlCisJbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlv bl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKTsKIAkkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkFMVEVSIFNVQlNDUklQVElP TiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7CisJJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19z dGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIKKwkgICkKKwkgIG9yIGRpZQorCSAgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElP TiI7CiAKIAkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KIAkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsCmluZGV4IDU5ZTdl NzUzNGYuLmIwZTdiNjcyMmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz Ml9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbApAQCAtMTAsNiArMTAsMjAgQEAgdXNl IFRlc3Q6Ok1vcmU7CiAKIG15ICRvZmZzZXQgPSAwOwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0 aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVw b3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZwor eworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9 IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRf Zm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5n IHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisKICMgQ3Jl YXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93 c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTI0LDkgKzM4LDkgQEAgJG5vZGVfcHVibGlz aGVyLT5zdGFydDsKIG15ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKICRub2RlX3N1YnNjcmliZXItPmluaXQ7CiAKLSMgQ2hl Y2sgaWYgYW55IHN0cmVhbWluZyBjaHVua3MgYXJlIGFwcGxpZWQgdXNpbmcgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4gV2UKLSMgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNz YWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cKLSMgdmVyYm9zaXR5LgorIyBDaGVj ayBpZiBhbnkgc3RyZWFtaW5nIGNodW5rcyBhcmUgYXBwbGllZCB1c2luZyB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyLgorIyBBbmQgY2hlY2sgaWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBm YWlsZWQgdG8gc3RhcnQuIFdlIGhhdmUgdG8gbG9vayBmb3IKKyMgdGhlIERFQlVHMSBsb2cgbWVz c2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KICRub2RlX3N1 YnNjcmliZXItPmFwcGVuZF9jb25mKAogCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKIAlsb2dfbWlu X21lc3NhZ2VzID0gZGVidWcxCkBAIC0yNzksNiArMjkzLDU1IEBAICRyZXN1bHQgPQogICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9N IHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKIAorIyBDbGVhbiB1 cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorIyBUZXN0IHJlLWFwcGx5IGEgZmFpbGVkIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0 aGUgbGVhZGVyIGFwcGx5CisjIHdvcmtlciBhbmQgYXBwbHkgc3Vic2VxdWVudCBzdHJlYW1pbmcg dHJhbnNhY3Rpb24gdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5CisjIHdvcmtlciBhZnRlciB0aGlz IHJldHJ5IHN1Y2NlZWRzLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIg b24gdGVzdF90YWIoYSkiKTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitCRUdJTjsKK0lOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CitJ TlNFUlQgSU5UTyB0ZXN0X3RhYiB2YWx1ZXMoMSk7CitDT01NSVQ7fSk7CisKKyMgQ2hlY2sgaWYg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBub3Qgc3RhcnRlZCBiZWNhdXNlIHRoZSBhYm92 ZQorIyB0cmFuc2FjdGlvbiBmYWlsZWQgdG8gYmUgYXBwbGllZC4KKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gcGFyYWxsZWwgYXBwbHkg d29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJpZXMvLAorCSRvZmZzZXQpOworCisjIERyb3Ag dGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90YWIiKTsK KworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGlu IHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEo NTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRl eCcpOworCisjIEFmdGVyIHN1Y2Nlc3NmdWxseSByZXRyeWluZyB0byBhcHBseSBhIGZhaWxlZCBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sIGFwcGx5CisjIHRoZSBmb2xsb3dpbmcgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSkiKTsKKworY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsIDEsICdDT01NSVQnKTsKKworJHJlc3Vs dCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDEwMDAxKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXInKTsK KwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIAotLSAK Mi4yMy4wLndpbmRvd3MuMQoK --_008_OS0PR01MB5716C1C1D8244BA86311193894EB9OS0PR01MB5716jpnp_--