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 1pDjgq-0001nG-Dl for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Jan 2023 10:11:09 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pDjgp-0004K7-8N for pgsql-hackers@arkaria.postgresql.org; Fri, 06 Jan 2023 10:11:07 +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 1pDjdy-0007MG-5T for pgsql-hackers@lists.postgresql.org; Fri, 06 Jan 2023 10:08:10 +0000 Received: from esa17.fujitsucc.c3s2.iphmx.com ([216.71.158.34]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pDjdu-0003UA-Hh for pgsql-hackers@lists.postgresql.org; Fri, 06 Jan 2023 10:08:09 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1672999687; x=1704535687; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=kcdFbRfPlBPivWiPuJ+SY0M8o4N5NQqy87I/6ZRkIgE=; b=bRwVv0EGEh6QKyxzH7URm3T77QSCwUf68kXp5IAHZFOie7muAl7Ikgpb Uumse6nPT/WLM0YOwSmmxphpKlDcjRAg1C+Kv5WQ634jdXQ/ywiPldO+z cMJCIymjFBCh18ELtLFhE8qBi1phdCQCk7zcZkmJszSjejK/knZtf9OM7 pbNsTUnLhNoI4uSoFeqjfR454Wp+ZoaMcEFwUfIqN1qgxUZ/wB+EyoEJ5 rpqe4IWuR9UYbOUmxKr1MbugsxNOq8lF6bY0diIl3GvfhkbtbKlynWfCm r/1LkboSlLa7ohKvBKhswkUWAJ8fG4Zb8LQ9P5+nW4r/QkuQAnfpflEWo w==; X-IronPort-AV: E=McAfee;i="6500,9779,10581"; a="73835898" X-IronPort-AV: E=Sophos;i="5.96,304,1665414000"; d="scan'208,223";a="73835898" Received: from mail-os0jpn01lp2108.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.108]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jan 2023 19:08:03 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gYtYBvxp3zwQIa3nSDqsKMMFTR244zDV/6WNsWXnymNLofa0VXjhzreHKuxOvl7earAN0XFn0CSxoqkb88P2eN28VrTDUTwd46l0mUrw9IWuW72VcOxI9kNc/lh0i8a8CWt1gGG33Hh+CN2DXv2DRP5LoNU8PLiKBDdp/mvBuw6gmJ560oIr82QegAsV4E1i8B0bgZ+cDin3QfrP1HKn+wQJfCeu9Ob9OiNcFDiTOPCNwFgFO22jpV5uPL2LS8yAODlAYOgnSGVpBGNY/65+Yr18UsEhL3prsIl2HJZk8T0anapzjVpBeY7yLWoC3sflWKKh0EmIN9/vzBfhZc2FYA== 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=d3+yitsDHnHQL3Yl1+lzaamsHQoXe8eb+LItaB8KmtY=; b=E0Z5GS9yXjTqlNUX7LR5RMu0OcQ1Y3PBGwAXhZ0IActDw0WaUHmxaSTJeG0682gp43+iJ5JPztbGhC3mVeZqgQ8iKqt4AU6LzX1QsJLw0RASbL9Hyqw9bN6WzRc8rN7tjxoXawuPOn+B+76xE4PcOUW0XGoP6F6kPpCke8yk/DL3L3p8Hv1Ww20+bTcqkrp0Tjl1EPk16hKaTzqYhDhGM+YEon8fooQPFI9HJmmKptW4w8Ohhy6F1+e7hhCDJ9RFxF2efD9NLY03rIgSZPHaK5fAgFit0eDXEluKMT0vnGviBFTKENnNImCk5MKkATZV9sXUtvVQ7YkcTC5TJu+wYQ== 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 TYBPR01MB5519.jpnprd01.prod.outlook.com (2603:1096:404:802c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.19; Fri, 6 Jan 2023 10:07:58 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::db62:a054:b1fa:4cb3]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::db62:a054:b1fa:4cb3%3]) with mapi id 15.20.5944.019; Fri, 6 Jan 2023 10:07:58 +0000 From: "houzj.fnst@fujitsu.com" To: Dilip Kumar , Amit Kapila CC: Masahiko Sawada , "wangw.fnst@fujitsu.com" , Peter Smith , "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+pYAgABJqTCAAgB9AIAA8s2ggABurUCABGXB4IAAfjmAgAEdzwCAAHCvAIABHXEAgAIlRYCAAWA5AIAEvuWAgAE6wQCAAY/VgIAAWFEwgAAJz4CAAB4xgIAABTsAgADsLVCAAFA9gIAAMiLQgAAJBQCAAQ5tgIAAH42AgAALiQCAAA7+AIAAKYCw Date: Fri, 6 Jan 2023 10:07:57 +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?NTBfQWN0aW9uSWQ9NDg5NTlmYWYtNjFhYy00Y2NiLWI5MTEtMmE0M2FiNTNh?= =?utf-8?B?MGM0O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMy0wMS0wNlQwOTo1Nzo1M1o7TVNJUF9MYWJl?= =?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_|TYBPR01MB5519:EE_ x-ms-office365-filtering-correlation-id: fbe9858b-35c8-462f-3102-08daefcde2e0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: F7BSy5A5TN1xcy7jVEM4auBAaoFejYfouh0/kHls2/RaE2jz8fAxO03MT+2QUhzx8tFdbCtzwGE9xRf5wc6I2gDGdd6B8t+zNKtXvjk8ldotoH3NUeqAi+P2jBSa5SCKmi67xjnRVcarkY5ejpTYlyPX/x52x7aFjXbCFyPaAIjlJotAcuefzKnuRUe5t1/PtEFK3rqd+lrBww7b3Z9jqF9Pd/Nju3ry7Q4yV6zvlDg7bTp7sXULUr4wN8wHE+exqJI1WoXspG21pJ0CFFSIuWG0m0e0SznvFwlSJIvF9KoKZLajyovOWNEfiMlHyQiUYFJVDxTJgkTa0EHGwSAFWAqIEtP3clGzxQlWjqTTFc6x5bst3EUWRHndmN4QQhx0HiWfEVL40jGebH9jD6Eulil33oLwOrb24wze5cwBcSg1FelANeexYXIJVVEBhysNwMfrzA7//Itw7IHYulxKEeofZta3/RlIFX34A95zOXSdpU4QT4AMIj1XRWt6ovaFBGudlDHoTOx5y1nbVAQU08Z6FejdYXH2Uo2LGqflLoGhOBWDXmefn9Vt/ljQejzjnBMBvBVjkDZDKs7vBWMIqlbTqudgw7MxoVj7zD/pgt5tlt5GbAXq+CO/8RaMuDM+IcmBedytPCArGj/UdG3OUcWhs4fal9LYKxHMcWRIUhOxQsNqpFL80aQEahYaOgMR5gAypTzCpd28/17+5lO29maGqi/4pGPiRTdMq1JPQKIUYB76L49vNwE7U4qA+4gM 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)(39860400002)(136003)(346002)(376002)(366004)(396003)(1590799012)(451199015)(38100700002)(82960400001)(66476007)(99936003)(122000001)(66446008)(83380400001)(86362001)(110136005)(33656002)(38070700005)(2906002)(64756008)(8676002)(5660300002)(66556008)(52536014)(76116006)(66946007)(4326008)(41300700001)(26005)(186003)(55016003)(9686003)(6506007)(53546011)(7696005)(8936002)(71200400001)(478600001)(54906003)(1580799009)(316002)(66899015)(85182001)(21314003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VEw1Y0FKdVdNYStHdGFnUzMyY1JkWkV6SzBGRzA3SndmdDIrSi9FTW1iSE9j?= =?utf-8?B?SmQ1dkYwSnpiT0dJaGxEOVFuS2d0MUJ6dnNCQnJ4dVZqK0VJWDl4WU1JNHU1?= =?utf-8?B?RDdvMEhibXJNaHVMbm4wdURvY1RQM2M3V1ZUU2hLbUJTNVdvbkFDSlkydjRq?= =?utf-8?B?dmNaQ1VINDVuUTllTDFzdHNvY3E0WW1ZNDUyQTJodkdWSWNUam43RjVqYW02?= =?utf-8?B?VVRFZjZkMWRMamlqdmlSMXo5R0V5N29YNHc3d0YxSHZ4MlJkZkRtWWlXSjRT?= =?utf-8?B?eGdSN1Raa1JHaWkwQzMzbEpFQUlxeGxFbUlYRmpPa0tEdmNoK3R0Z1hJNUFv?= =?utf-8?B?ZjB5dEcyNHBCM0Z3OEdCdDRiMVNDVTIreFZ6dis5bGNCZ2w0N20ySXZqUEtD?= =?utf-8?B?VzFSdmtVYnZxNkNLRVJxWlFkWThsdHVtSlJFcmZLTXE3dzBMcEVKeVpBSFZP?= =?utf-8?B?V0cvSmcwK0hMbTBsQVQyYzU2THpzS1planA3ZWRuOWtJb2J1cmgvQUdHT3Vt?= =?utf-8?B?RzZKK2hSLzBML2hObk0wTmc5UEZ0a1BCY3p3YkNjZWs0VUF5MTFLTlBMWHBV?= =?utf-8?B?Nkx1bnpDcEJQek9aMjk0S2VJY1lFdks1am4vV0tQb2crWFg3ejVJMWh2L0t3?= =?utf-8?B?ZytSOEJaazNXd3B6Zm9hYmswTExkT3ZvQW5wS0E4cStoQU1DbU1PeCtxUnpD?= =?utf-8?B?Y09FUWhjcTlsOWwzTlByNHpjdHpxQVo0NEdGSWxFd0R1NzZidkgvbFBPV0wv?= =?utf-8?B?R1J1c25CUFl4M1oxUy9lN2g4MmFZazVaaTNob0c0WmJGQTFsR29zM054QU83?= =?utf-8?B?Nm1lbE9iVHhDMGxXRHdXWTlrOW94TXExWUZVSE1lOFJzWXhnbVVGQ2tPK1VC?= =?utf-8?B?Z2t3Vm85dVU4U1V1SjVlaXFIeHFMMFFCUXk4VCs3VWFhMXQ1YXAyam4vZll5?= =?utf-8?B?M3BIcHRCcVY3ZU5JZWFCREtPYmdzc09xYkJkVExjVUg4cXJ5M2ZmbFcvWGor?= =?utf-8?B?UnpUMGFrOU5STDhjMUtkY2lPZ2crKzZqTFFVdG1TTGR2SEc3bVJwZGFGVnNG?= =?utf-8?B?Qnc4TVdQVEVPVzBHeCtnaCtmRHkyOGNCSmdRSmpaenZ4dnZKTnJXczFDL29h?= =?utf-8?B?dkFVbXhCbytkK3ZiTElwdmVhbzkvUkNZM3UwTW53cGlqTmlncXllV3E4UlV1?= =?utf-8?B?VS9ySFprUjN4bjJvK3hib3lSQjFPOFkwTlc2aXNyVWRHYnFMUld2dWpKZFdN?= =?utf-8?B?amdwUDBGVnBMY1FsVWdCVmRTYkdWa1lMM0JEc0ltaGgzcW5LUXpod0swU3hN?= =?utf-8?B?bVROUU1sRzQyMVV6VjlnQjFJQzE3a3YrSjNLWnQvZjRHL1JiRnI1cGFzS0RD?= =?utf-8?B?ZFlFRWdiWXVkWlJ5cldTL2FlUmI0bHZ0L29RNUExbm9nQU1YTVpRUUgvc0FB?= =?utf-8?B?WlNiYW5YdDlLWk55M1J5bC90ckRJOElGa2s0N2JzOGZrZ0lqcmFsMUs0VUJM?= =?utf-8?B?bDFIaDFrd0NMenpIMXp3S2pvRHAxZ00yd1dhRHoxK3YyRS9EcXVTOXc0SGRw?= =?utf-8?B?bDZ0RXdNM0ZMelBZd3VJNVJRK2FERU9OWW1COHNTQURmUjFCeTRQdzNEUzlp?= =?utf-8?B?Uk4rTGJMMnJDRWFRZjFiYzRGbVdRTDJaODNUdTRUUi81YlZRUUpUZGhaR2Nx?= =?utf-8?B?SkgxeUppb1UrbkxFTEhoeWx6VE91L0x2ek8rN3kxWm1aYkJnSXNKek8xMS9G?= =?utf-8?B?RG5LOVBSWHVweFpLOERYN3JpalVIaW9DZVZmaUMrMnQwbjBkNE8wQTlNMDIw?= =?utf-8?B?bC9qTVVDOHZ0cjQxTEs1dzV0dDZlSzR3dDVxME5tdGE4bjBodWVDcUNvMmJB?= =?utf-8?B?WW5tczRnTldMbFNuZDgxWEx2UDZiYUNEYnhKTFp4MU9iYUczcXk3Sm1QZFFW?= =?utf-8?B?OStkcExoSlBid0dkaWFJTnRnQm1Ma3R5SGN6dkdzc1BnZWZzQk9VNjE4QUt2?= =?utf-8?B?bm4xRmhhUW16S0ozSGJPRDN0RjRBd0pTeU15SStUY0JVQlF5WjZKOGZSZG5M?= =?utf-8?B?cUx1SnYwTEk3OVIvTWR5NkhTeXBkNDdaTFJidmVpOUhiYmtBSlRJdERxZ2Vl?= =?utf-8?Q?p8VDBRmxIs8wTf+T8E8qzmfe1?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB571621ED532C2D7C3E01625894FB9OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: yYv7V4OcS0u+H32HqiP/r9XFZaFZyP2rTMUz4/QVzors9nwz+4elAHbnpLC99f+mOFgF2QThvAGSKR5+OpW5TBLr7Wfz2sNv5vOogrq/f6Al+zn2qqTgTrQ2i7JV943NP9Z2YLkhKSv5lhO19whCAGNeRPCQXWUz8iutYMEz6u7doZ5vYvjGH7WLlZ9uPOBHPiyZiec/qZrTKIEdu7PWOHmvfpXjEuQygCHFUGwo/B+D6QjuPCJrSCqYOna0rSzmLGxRdQ5f6Hp7gdjXtFoKOkE/Dn3uSP8yJpnaPEKHch9CgLLE0tYFcMb+LkmRF6+H7xZANeaLIkUSJWp0YSkyWEesMoDnxzgrRVblX+X2HvyGuXMtSm4cZsTquGwfvuZvG6upnkku+FSZdzY6bLjqNYzp+AU04Q2/g7mE/DBkS9KtXgJsyJ4CMBIjU4LDusx4LbIVUUwxFVFreYJKtuq1ceTgi4+7XtCEP14bUjpMDMbZYJJ8jsPrZOEpQjc5NX8SJwe3uH17BXeZni6d5nUF6rtJlDF+gpjvMBdDWfkqkk0E/im1TSmuvNegmJR9GaVvRYJam4IkvtZhQCxEtkuOOPZ1PURSEa34t5mz7LLCaKrm8/+so7AwULZaZAeTJ5lTZSx0WH2ztsVFSHg/QosCpZWsKalJ9RX2XUpGuJPpbKe22k3Yiw7IGEbW1RYwCGZCaCNi4YTmvaRL2xQDfXOJhL0r2+X+RGKJRF7M+p1d8x8r/sT2N4hzFTBJFEq3AdFPXyLZXfxPNdqsmAkcxzZY/FUEQBZo2d48l4J+FbI/BeY3TFcprLf2rBSlmZOo45EyGIgvEF0G++x/jlndg5NKU1Dzq3X3yYWdPbMJtUWeJgXlQylnOThvAjKjcTAYs3UOEthPSMNM0jzx04Q51k85mA== 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: fbe9858b-35c8-462f-3102-08daefcde2e0 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jan 2023 10:07:57.9867 (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: OwIkNvNXL9QcihYmawk5eL798vivXouA9uDZSmF/OrTFvcgaWbDrEMoEgmbNlltDMUJhqjE0WGe5xgzaklXgfA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYBPR01MB5519 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB571621ED532C2D7C3E01625894FB9OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpZGF5LCBKYW51YXJ5IDYsIDIwMjMgMzoyOSBQTSBEaWxpcCBLdW1hciA8ZGlsaXBiYWxh dXRAZ21haWwuY29tPiB3cm90ZToNCg0KSGksDQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50cy4N Cg0KPiBPbiBGcmksIEphbiA2LCAyMDIzIGF0IDEyOjA1IFBNIEFtaXQgS2FwaWxhIDxhbWl0Lmth cGlsYTE2QGdtYWlsLmNvbT4gd3JvdGU6DQo+ID4NCj4gDQo+ID4NCj4gPiBZZWFoLCBJIGFsc28g ZG9uJ3QgdGhpbmsgc2VuZGluZyBleHRyYSBlaWdodCBieXRlcyB3aXRoIHN0cmVhbV9zdGFydA0K PiA+IG1lc3NhZ2UgaXMgd29ydGggaXQuIEJ1dCBpdCBpcyBmaW5lIHRvIG1lbnRpb24gdGhlIHNh bWUgaW4gdGhlDQo+ID4gY29tbWVudHMuDQo+IA0KPiBSaWdodC4NCg0KQWRkZWQgc29tZSBjb21t ZW50Lg0KDQo+IA0KPiA+ID4gMi4NCj4gPiA+DQo+ID4gPiArICAgICAqIFhYWCBBZGRpdGlvbmFs bHksIHdlIGFsc28gc3RvcCB0aGUgd29ya2VyIGlmIHRoZSBsZWFkZXIgYXBwbHkNCj4gd29ya2Vy DQo+ID4gPiArICAgICAqIHNlcmlhbGl6ZSBwYXJ0IG9mIHRoZSB0cmFuc2FjdGlvbiBkYXRhIGR1 ZSB0byBhIHNlbmQgdGltZW91dC4gVGhpcyBpcw0KPiA+ID4gKyAgICAgKiBiZWNhdXNlIHRoZSBt ZXNzYWdlIGNvdWxkIGJlIHBhcnRpYWxseSB3cml0dGVuIHRvIHRoZSBxdWV1ZSBhbmQNCj4gdGhl cmUNCj4gPiA+ICsgICAgICogaXMgbm8gd2F5IHRvIGNsZWFuIHRoZSBxdWV1ZSBvdGhlciB0aGFu IHJlc2VuZGluZyB0aGUgbWVzc2FnZQ0KPiB1bnRpbCBpdA0KPiA+ID4gKyAgICAgKiBzdWNjZWVk cy4gSW5zdGVhZCBvZiB0cnlpbmcgdG8gc2VuZCB0aGUgZGF0YSB3aGljaCBhbnl3YXkgd291bGQN Cj4gaGF2ZQ0KPiA+ID4gKyAgICAgKiBiZWVuIHNlcmlhbGl6ZWQgYW5kIHRoZW4gbGV0dGluZyB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGRlYWwgd2l0aA0KPiA+ID4gKyAgICAgKiB0aGUgc3B1 cmlvdXMgbWVzc2FnZSwgd2Ugc3RvcCB0aGUgd29ya2VyLg0KPiA+ID4gKyAgICAgKi8NCj4gPiA+ ICsgICAgaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyB8fA0KPiA+ID4gKyAgICAgICAgbGlz dF9sZW5ndGgoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpID4NCj4gPiA+ICsgICAgICAgIChtYXhf cGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikpDQo+ID4gPg0KPiA+ ID4gSU1ITyB0aGlzIHJlYXNvbiAoWFhYIEFkZGl0aW9uYWxseSwgd2UgYWxzbyBzdG9wIHRoZSB3 b3JrZXIgaWYgdGhlDQo+ID4gPiBsZWFkZXIgYXBwbHkgd29ya2VyIHNlcmlhbGl6ZSBwYXJ0IG9m IHRoZSB0cmFuc2FjdGlvbiBkYXRhIGR1ZSB0byBhDQo+ID4gPiBzZW5kIHRpbWVvdXQpIGZvciBz dG9wcGluZyB0aGUgd29ya2VyIGxvb2tzIGEgYml0IGhhY2tpc2ggdG8gbWUuICBJdA0KPiA+ID4g bWF5IGJlIGEgcmFyZSBjYXNlIHNvIEkgYW0gbm90IHRhbGtpbmcgYWJvdXQgdGhlIHBlcmZvcm1h bmNlIGJ1dCB0aGUNCj4gPiA+IHJlYXNvbmluZyBiZWhpbmQgc3RvcHBpbmcgaXMgbm90IGdvb2Qu IElkZWFsbHkgd2Ugc2hvdWxkIGJlIGFibGUgdG8NCj4gPiA+IGNsZWFuIHVwIHRoZSBtZXNzYWdl IHF1ZXVlIGFuZCByZXVzZSB0aGUgd29ya2VyLg0KPiA+ID4NCj4gPg0KPiA+IFRCSCwgSSBkb24n dCBrbm93IHdoYXQgaXMgdGhlIGJldHRlciB3YXkgdG8gZGVhbCB3aXRoIHRoaXMgd2l0aCB0aGUN Cj4gPiBjdXJyZW50IGluZnJhc3RydWN0dXJlLiBJIHRob3VnaHQgd2UgY2FuIGRvIHRoaXMgYXMg YSBzZXBhcmF0ZQ0KPiA+IGVuaGFuY2VtZW50IGluIHRoZSBmdXR1cmUuDQo+IA0KPiBPa2F5Lg0K PiANCj4gPiA+IDMuDQo+ID4gPiArICAgICAgICBlbHNlIGlmIChzaG1xX3JlcyA9PSBTSE1fTVFf V09VTERfQkxPQ0spDQo+ID4gPiArICAgICAgICB7DQo+ID4gPiArICAgICAgICAgICAgLyogUmVw bGF5IHRoZSBjaGFuZ2VzIGZyb20gdGhlIGZpbGUsIGlmIGFueS4gKi8NCj4gPiA+ICsgICAgICAg ICAgICBpZiAocGFfaGFzX3Nwb29sZWRfbWVzc2FnZV9wZW5kaW5nKCkpDQo+ID4gPiArICAgICAg ICAgICAgew0KPiA+ID4gKyAgICAgICAgICAgICAgICBwYV9zcG9vbGVkX21lc3NhZ2VzKCk7DQo+ ID4gPiArICAgICAgICAgICAgfQ0KPiA+ID4NCj4gPiA+IEkgdGhpbmsgd2UgZG8gbm90IG5lZWQg dGhpcyBwYV9oYXNfc3Bvb2xlZF9tZXNzYWdlX3BlbmRpbmcoKSBmdW5jdGlvbi4NCj4gPiA+IEJl Y2F1c2UgdGhpcyBmdW5jdGlvbiBpcyBqdXN0IGNhbGxpbmcgcGFfZ2V0X2ZpbGVzZXRfc3RhdGUo KSB3aGljaA0KPiA+ID4gaXMgYWNxdWlyaW5nIG11dGV4IGFuZCBnZXR0aW5nIGZpbGVzdGF0ZSB0 aGVuIGlmIHRoZSBmaWxlc3RhdGUgaXMNCj4gPiA+IG5vdCBGU19FTVBUWSB0aGVuIHdlIGNhbGwg cGFfc3Bvb2xlZF9tZXNzYWdlcygpIHRoYXQgd2lsbCBhZ2FpbiBjYWxsDQo+ID4gPiBwYV9nZXRf ZmlsZXNldF9zdGF0ZSgpIHdoaWNoIHdpbGwgYWdhaW4gYWNxdWlyZSBtdXRleC4gIEkgdGhpbmsg d2hlbg0KPiA+ID4gdGhlIHN0YXRlIGlzIEZTX1NFUklBTElaRV9JTl9QUk9HUkVTUyBpdCB3aWxs IGZyZXF1ZW50bHkgY2FsbA0KPiA+ID4gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKSBjb25zZWN1dGl2 ZWx5IDIgdGltZXMsIGFuZCBJIHRoaW5rIHdlIGNhbg0KPiA+ID4gZWFzaWx5IGFjaGlldmUgdGhl IHNhbWUgYmVoYXZpb3Igd2l0aCBqdXN0IG9uZSBjYWxsLg0KPiA+ID4NCj4gPg0KPiA+IFRoaXMg aXMganVzdCB0byBrZWVwIHRoZSBjb2RlIGVhc3kgdG8gZm9sbG93LiBBcyB0aGlzIHdvdWxkIGJl IGEgcmFyZQ0KPiA+IGNhc2UsIHNvIHRob3VnaHQgb2YgZ2l2aW5nIHByZWZlcmVuY2UgdG8gY29k ZSBjbGFyaXR5Lg0KPiANCj4gSSB0aGluayB0aGUgY29kZSB3aWxsIGJlIHNpbXBsZXIgd2l0aCBq dXN0IG9uZSBmdW5jdGlvbiBubz8gSSBtZWFuIGluc3RlYWQgb2YNCj4gY2FsbGluZyBwYV9oYXNf c3Bvb2xlZF9tZXNzYWdlX3BlbmRpbmcoKSBpbiBpZiBjb25kaXRpb24gd2hhdCBpZiB3ZSBkaXJl Y3RseQ0KPiBjYWxsIHBhX3Nwb29sZWRfbWVzc2FnZXMoKTssIHRoaXMgaXMgYW55d2F5IGZldGNo aW5nIHRoZSBmaWxlX3N0YXRlIGFuZCBpZiB0aGUNCj4gZmlsZXN0YXRlIGlzIEVNUFRZIHRoZW4g aXQgY2FuIHJldHVybiBmYWxzZSwgYW5kIGlmIGl0IHJldHVybnMgZmFsc2Ugd2UgY2FuIGV4ZWN1 dGUNCj4gdGhlIGNvZGUgd2hpY2ggaXMgdGhlcmUgaW4gZWxzZSBjb25kaXRpb24uICBXZSBtaWdo dCBuZWVkIHRvIGNoYW5nZSB0aGUgbmFtZQ0KPiBvZiB0aGUgZnVuY3Rpb24gdGhvdWdoLg0KDQpD aGFuZ2VkIGFzIHN1Z2dlc3RlZC4NCg0KSSBoYXZlIGFkZHJlc3NlZCBhbGwgdGhlIGNvbW1lbnRz IGFuZCBoZXJlIGlzIHRoZSBuZXcgdmVyc2lvbiBwYXRjaCBzZXQuDQpJIGFsc28gYWRkZWQgc29t ZSBkb2N1bWVudHMgYWJvdXQgdGhlIG5ldyBsb2NrIGFuZCBmaXhlZCBzb21lIHR5cG9zLg0KDQpB dHRhY2ggdGhlIG5ldyB2ZXJzaW9uIHBhdGNoIHNldC4NCg0KQmVzdCByZWdhcmRzLA0KSG91IHpq DQoNCg0K --_006_OS0PR01MB571621ED532C2D7C3E01625894FB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v75-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v75-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v75-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=9665; creation-date="Fri, 06 Jan 2023 10:07:30 GMT"; modification-date="Fri, 06 Jan 2023 10:07:53 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMTFjYzNlOGRkYmE3YTc4MGY2ZjcxOTQ5ZTg4NDlhNGE2YTQ2ZTdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djc1IDUvNV0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgfCAgMyArKy0K IGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICB8IDI2ICsrKysrKysr KysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAg ICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIHwg MzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgICAgfCAgNiArKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnVsZXMub3V0ICAgICAgICB8ICAzICsrLQogNiBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRp b25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bAppbmRleCBjYjRmNWM2Li42MjU0Mzg4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9u LnNnbWwKQEAgLTE2OTEsNyArMTY5MSw4IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBz dWJzY3JpcHRpb24uICBBIGRpc2FibGVkIHN1YnNjcmlwdGlvbiBvciBhIGNyYXNoZWQgc3Vic2Ny aXB0aW9uIHdpbGwgaGF2ZQogICAgemVybyByb3dzIGluIHRoaXMgdmlldy4gIElmIHRoZSBpbml0 aWFsIGRhdGEgc3luY2hyb25pemF0aW9uIG9mIGFueQogICAgdGFibGUgaXMgaW4gcHJvZ3Jlc3Ms IHRoZXJlIHdpbGwgYmUgYWRkaXRpb25hbCB3b3JrZXJzIGZvciB0aGUgdGFibGVzCi0gICBiZWlu ZyBzeW5jaHJvbml6ZWQuCisgICBiZWluZyBzeW5jaHJvbml6ZWQuIE1vcmVvdmVyLCBpZiB0aGUg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIGlzIGFwcGxpZWQgaW4KKyAgIHBhcmFsbGVsLCB0aGVyZSB3 aWxsIGJlIGFkZGl0aW9uYWwgd29ya2Vycy4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRv cmluZy5zZ21sCmluZGV4IGNmMjIwYzMuLmMyZTdiZGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAt MzE5OCwxMSArMzE5OCwyMiBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZl bnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogCiAgICAgIDxyb3c+ CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlmIHRo aXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAgICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRo aXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNocm9u aXphdGlvbiB3b3JrZXIuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAg ICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25pemlu ZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFpbiBhcHBseSB3b3JrZXIKKyAgICAgICBtYWluIGFw cGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwv ZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0zMjEyLDcgKzMyMjMsNyBAQCBTRUxFQ1QgcGlkLCB3 YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdh aXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3cml0 ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0gICAg ICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAgICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxsIGZv ciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAg PC9yb3c+CiAKQEAgLTMyMjEsNyArMzIzMiw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlw ZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAg ICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBl PnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxw YXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmln aW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQg ZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwgYXBw bHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMzAs NyArMzI0Miw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9N IHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxk Pmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRo IHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFJl Y2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRl cgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmln aW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMzksNyArMzI1Miw4 IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRf YWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVzdF9l bmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJhPgog ICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0 ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2Nh dGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+ CiAKQEAgLTMyNDksNyArMzI2Myw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2Fp dF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8 L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQgbG9n IGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdpbiBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAgICBz ZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1f dmlld3Muc3FsCmluZGV4IGFmMDc2ODQuLmFlZjkyNmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3Rl bV92aWV3cy5zcWwKQEAgLTk0OSw2ICs5NDksNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNj cmlwdGlvbiBBUwogICAgICAgICAgICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAgICAgICAgc3Uu c3VibmFtZSwKICAgICAgICAgICAgIHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFwcGx5X2xlYWRl cl9waWQsCiAgICAgICAgICAgICBzdC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJlY2VpdmVkX2xz biwKICAgICAgICAgICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCBhZmI3YWNkLi5iMzllMGYxIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC0xMDcyLDcgKzEwNzIs NyBAQCBJc0xvZ2ljYWxMYXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0YXRfZ2V0X3N1YnNjcmlw dGlvbihQR19GVU5DVElPTl9BUkdTKQogewotI2RlZmluZSBQR19TVEFUX0dFVF9TVUJTQ1JJUFRJ T05fQ09MUwk4CisjZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTkKIAlPaWQJ CQlzdWJpZCA9IFBHX0FSR0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQR19HRVRBUkdfT0lEKDAp OwogCWludAkJCWk7CiAJUmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikg ZmNpbmZvLT5yZXN1bHRpbmZvOwpAQCAtMTA5OCwxMCArMTA5OCw2IEBAIHBnX3N0YXRfZ2V0X3N1 YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYg d29ya2VyLnN1YmlkICE9IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJLyogU2tpcCBpZiB0aGlz IGlzIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCi0JCWlmIChpc1BhcmFsbGVsQXBwbHlXb3Jr ZXIoJndvcmtlcikpCi0JCQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlkID0gd29ya2VyLnByb2Mt PnBpZDsKIAogCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdvcmtlci5zdWJpZCk7CkBA IC0xMTEwLDI2ICsxMTA2LDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElP Tl9BUkdTKQogCQllbHNlCiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZhbHVlc1syXSA9IEludDMy R2V0RGF0dW0od29ya2VyX3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5s YXN0X2xzbikpCisKKwkJaWYgKHdvcmtlci5hcHBseV9sZWFkZXJfcGlkID09IEludmFsaWRQaWQp CiAJCQludWxsc1szXSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1szXSA9IExTTkdldERhdHVt KHdvcmtlci5sYXN0X2xzbik7Ci0JCWlmICh3b3JrZXIubGFzdF9zZW5kX3RpbWUgPT0gMCkKKwkJ CXZhbHVlc1szXSA9IEludDMyR2V0RGF0dW0od29ya2VyLmFwcGx5X2xlYWRlcl9waWQpOworCisJ CWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCiAJCQludWxsc1s0XSA9 IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s0XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2Vy Lmxhc3Rfc2VuZF90aW1lKTsKLQkJaWYgKHdvcmtlci5sYXN0X3JlY3ZfdGltZSA9PSAwKQorCQkJ dmFsdWVzWzRdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKKwkJaWYgKHdvcmtlci5s YXN0X3NlbmRfdGltZSA9PSAwKQogCQkJbnVsbHNbNV0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1 ZXNbNV0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3JlY3ZfdGltZSk7Ci0JCWlm IChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQorCQkJdmFsdWVzWzVdID0g VGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUpOworCQlpZiAod29ya2Vy Lmxhc3RfcmVjdl90aW1lID09IDApCiAJCQludWxsc1s2XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZh bHVlc1s2XSA9IExTTkdldERhdHVtKHdvcmtlci5yZXBseV9sc24pOwotCQlpZiAod29ya2VyLnJl cGx5X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1s2XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2Vy Lmxhc3RfcmVjdl90aW1lKTsKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLnJlcGx5 X2xzbikpCiAJCQludWxsc1s3XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s3XSA9IFRpbWVz dGFtcFR6R2V0RGF0dW0od29ya2VyLnJlcGx5X3RpbWUpOworCQkJdmFsdWVzWzddID0gTFNOR2V0 RGF0dW0od29ya2VyLnJlcGx5X2xzbik7CisJCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQor CQkJbnVsbHNbOF0gPSB0cnVlOworCQllbHNlCisJCQl2YWx1ZXNbOF0gPSBUaW1lc3RhbXBUekdl dERhdHVtKHdvcmtlci5yZXBseV90aW1lKTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2lu Zm8tPnNldFJlc3VsdCwgcnNpbmZvLT5zZXREZXNjLAogCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDdiZTlhNTAuLjYzNGM2ZDQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtNTQyNiw5ICs1NDI2LDkgQEAKICAgcHJvbmFtZSA9PiAncGdfc3Rh dF9nZXRfc3Vic2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZics CiAgIHByb3JldHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4g J3InLAogICBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAg cHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0 aW1lc3RhbXB0eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8s byxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBp ZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxs YXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tv aWQsb2lkLG9pZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xz bix0aW1lc3RhbXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG99 JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQsYXBwbHlfbGVhZGVy X3BpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGlt ZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0 X2dldF9zdWJzY3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAyNicsIGRlc2NyID0+ICdzdGF0aXN0 aWNzOiBjdXJyZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFtZSA9PiAncGdfYmFja2VuZF9waWQn LCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQKaW5kZXggZmI5ZjkzNi4uN2U2ZWE2MCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQKQEAgLTIwOTQsNiArMjA5NCw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qg cy5waWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAg ICBzdS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAgICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAg IHN0LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICBzdC5sYXN0X21zZ19zZW5kX3Rp bWUsCkBAIC0yMTAxLDcgKzIxMDIsNyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1 Lm9pZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3RfZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5k X3RpbWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlvbiBzdQotICAgICBMRUZUIEpPSU4gcGdfc3Rh dF9nZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkgc3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2Vp dmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBsYXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVz dF9lbmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9OICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7Cisg ICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJp ZCwgcmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3BpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19z ZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9l bmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9u X3N0YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAgcy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vy cm9yX2NvdW50LAotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB571621ED532C2D7C3E01625894FB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v75-0001-Perform-apply-of-large-transactions-by-parallel-.patch" Content-Description: v75-0001-Perform-apply-of-large-transactions-by-parallel-.patch Content-Disposition: attachment; filename="v75-0001-Perform-apply-of-large-transactions-by-parallel-.patch"; size=271936; creation-date="Fri, 06 Jan 2023 10:07:30 GMT"; modification-date="Fri, 06 Jan 2023 10:07:54 GMT" Content-Transfer-Encoding: base64 RnJvbSAyZGY3YjNlN2I3YmNkNWMyODA1M2M4ZDcyZTYxZmYxNmU1YTgxOWY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY3NV0gUGVyZm9ybSBhcHBseSBvZiBsYXJnZSB0cmFuc2FjdGlvbnMgYnkgcGFyYWxsZWwgd29y a2Vycy4KCkN1cnJlbnRseSwgZm9yIGxhcmdlIHRyYW5zYWN0aW9ucywgdGhlIHB1Ymxpc2hlciBz ZW5kcyB0aGUgZGF0YSBpbgptdWx0aXBsZSBzdHJlYW1zIChjaGFuZ2VzIGRpdmlkZWQgaW50byBj aHVua3MgZGVwZW5kaW5nIHVwb24KbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSksIGFuZCB0aGVu IG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUsIHRoZSBhcHBseQp3b3JrZXIgd3JpdGVzIHRoZSBjaGFu Z2VzIGludG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBvbmNlIGl0IHJlY2VpdmVzIHRoZQpjb21taXQs IGl0IHJlYWRzIGZyb20gdGhvc2UgZmlsZXMgYW5kIGFwcGxpZXMgdGhlIGVudGlyZSB0cmFuc2Fj dGlvbi4gVG8KaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaCB0cmFuc2FjdGlvbnMsIHdl IGNhbiBpbnN0ZWFkIGFsbG93IHRoZW0gdG8KYmUgYXBwbGllZCB2aWEgcGFyYWxsZWwgd29ya2Vy cy4KCkluIHRoaXMgYXBwcm9hY2gsIHdlIGFzc2lnbiBhIG5ldyBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgKGlmIGF2YWlsYWJsZSkgYXMKc29vbiBhcyB0aGUgeGFjdCdzIGZpcnN0IHN0cmVhbSBpcyBy ZWNlaXZlZCBhbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKd2lsbCBzZW5kIGNoYW5nZXMgdG8g dGhpcyBuZXcgd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LiBUaGUgcGFyYWxsZWwgYXBwbHkKd29y a2VyIHdpbGwgZGlyZWN0bHkgYXBwbHkgdGhlIGNoYW5nZSBpbnN0ZWFkIG9mIHdyaXRpbmcgaXQg dG8gdGVtcG9yYXJ5CmZpbGVzLiBIb3dldmVyLCBpZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0 aW1lcyBvdXQgd2hpbGUgYXR0ZW1wdGluZyB0bwpzZW5kIGEgbWVzc2FnZSB0byB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLCBpdCB3aWxsIHN3aXRjaCB0bwoicGFydGlhbCBzZXJpYWxpemUiIG1v ZGUgLSAgaW4gdGhpcyBtb2RlLCB0aGUgbGVhZGVyIHNlcmlhbGl6ZXMgYWxsCnJlbWFpbmluZyBj aGFuZ2VzIHRvIGEgZmlsZSBhbmQgbm90aWZpZXMgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg dG8KcmVhZCBhbmQgYXBwbHkgdGhlbSBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4gV2Ug dXNlIGEgbm9uLWJsb2NraW5nCndheSB0byBzZW5kIHRoZSBtZXNzYWdlcyBmcm9tIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIHRvIHRoZSBwYXJhbGxlbAphcHBseSB0byBhdm9pZCBkZWFkbG9ja3Mu IFdlIGtlZXAgdGhpcyBwYXJhbGxlbCBhcHBseSBhc3NpZ25lZCB0aWxsIHRoZQp0cmFuc2FjdGlv biBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBmaW5p c2ggYXQKY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3JkZXJpbmcgYW5kIGF2b2lkIHdy aXRpbmcgdG8gYW5kIHJlYWRpbmcKZnJvbSBmaWxlcyBpbiBtb3N0IGNhc2VzLiBXZSBzdGlsbCBu ZWVkIHRvIHNwaWxsIGlmIHRoZXJlIGlzIG5vIHdvcmtlcgphdmFpbGFibGUuCgpUaGlzIHBhdGNo IGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcnIHBhcmFtZXRlciBzbyB0 aGF0IHRoZQp1c2VyIGNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiBpbiBhIHBhcmFsbGVsCmFwcGx5IHdvcmtlciBvciBzcGlsbCB0aGUgY2hhbmdl IHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZwpwYXJhbWV0ZXIgdG8gJ29u L29mZicsIG9yICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIgdmFsdWUgJ3BhcmFsbGVsJyBtZWFu cwp0aGUgc3RyZWFtaW5nIHdpbGwgYmUgYXBwbGllZCB2aWEgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIsIGlmIGF2YWlsYWJsZS4KVGhlIHBhcmFtZXRlciB2YWx1ZSAnb24nIG1lYW5zIHRoZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVkCnRvIGRpc2suIFRoZSBkZWZhdWx0IHZh bHVlIGlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVoYXZpb3VyKS4KCkluIGFkZGl0aW9uLCB0 aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBTVFJFQU1fQUJPUlQKbWVz c2FnZSBzbyB0aGF0IGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBjYW4gYWxzbyBiZSBzZW50IHdo aWNoIGNhbiBiZQp1c2VkIHRvIHVwZGF0ZSB0aGUgcmVwbGljYXRpb24gb3JpZ2luIGluIHBhcmFs bGVsIGFwcGx5IHdvcmtlciB3aGVuIHRoZQpzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaXMgYWJvcnRl ZC4gQmVjYXVzZSB0aGlzIG1lc3NhZ2UgZXh0ZW5zaW9uIGlzIG5lZWRlZAp0byBzdXBwb3J0IHBh cmFsbGVsIHN0cmVhbWluZywgcGFyYWxsZWwgc3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9y CnB1YmxpY2F0aW9ucyBvbiBzZXJ2ZXJzIDwgUEcxNi4KCk5vdGU6IFNpbmNlIHRoZSBmaWVsZCAn c3Vic3RyZWFtJyBvZiBjYXRhbG9nICdwZ19zdWJzY3JpcHRpb24nIGhhcyBiZWVuCmV4cGFuZGVk LCB3ZSBuZWVkIGJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgoKQXV0aG9yOiBIb3UgWmhpamllLCBXYW5n IHdlaSwgQW1pdCBLYXBpbGEgd2l0aCBkZXNpZ24gaW5wdXRzIGZyb20gU2F3YWRhIE1hc2FoaWtv ClJldmlld2VkLWJ5OiBTYXdhZGEgTWFzYWhpa28sIFBldGVyIFNtaXRoLCBTaGkgeXUsIERpbGlw IEt1bWFyLCBLdXJvZGEgSGF5YXRvCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FB NGVLMSt3eU42enBhSFVrQ0xvckVXTng3NU1HMHhoTXdjRmh2anFtMktVUlpFQUd3QG1haWwuZ21h aWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDExICstCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNn bWwgICAgICAgICAgICAgIHwgICAyMiArLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21s ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgICAgICAgfCAgIDI0ICstCiBkb2Mvc3JjL3NnbWwvc3lz dGVtLXZpZXdzLnNnbWwgICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKy0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hhY3QuYyAgICAgICAgICAgICAgICAgIHwgICAyNCArLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgICAgICAgfCAgIDY3ICstCiBz cmMvYmFja2VuZC9saWJwcS9wcW1xLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTgg Ky0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICAgICAgIHwg ICAgMyArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jICAgICAgICAgICAgICAg ICB8ICAgIDUgKy0KIC4uLi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyAgICAg ICAgICAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmls ZSAgICAgICAgICAgfCAgICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxs ZWx3b3JrZXIuYyAgICAgIHwgMTYyNyArKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyAgICAgICAgICAgfCAgICA1ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgICAgICAgICB8ICAyMjAgKystCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgICAgICB8ICAgIDEg Kwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICAgICAgICAgfCAg IDI2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgICAg ICB8ICAgMzcgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZl ci5jICAgIHwgICAgNSArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5 bmMuYyAgICAgICAgfCAgIDI1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jICAgICAgICAgICB8IDEzODAgKysrKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICAgICAgIHwgICAyMiArLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgICAgICAgICAgICAgfCAgICA0ICsKIHNyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgICAgICAgICAgICAgICAgICAgIHwgICA0NiArCiBz cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Kwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jICAgICAgICAgICAgfCAg ICA2ICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYyAgICAgICAgICAgICAgICAg IHwgICAxNiArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAg ICAgICAgfCAgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZSAgICAgIHwgICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaCAgICAgICAgICAgICAgfCAgIDIxICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmggICAgICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmggICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICAgICAgIHwgICAyOCArLQogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgICAgICAgfCAgICA4ICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQog c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaCAgICAgICAgICAgICAgICAgfCAgICAy ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgICAgICB8 ICAgIDQgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICAg ICAgIHwgICAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgg ICAgICAgICAgfCAgMjI3ICsrLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICA1ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAxNyArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2ln bmFsLmggICAgICAgICAgICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRf ZXZlbnQuaCAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgICAgICB8ICAgNDYgKy0KIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwgICAgICAgICAgICAgIHwgICAgNiArLQogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAgMjc0ICsrKy0KIHNy Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCAgICAgIHwgIDEzMCAr LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgICAgICAgfCAg ICAzICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwgICAg IHwgIDIyMCArKy0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fi b3J0LnBsIHwgICAgMyArCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2Fz Y2FkZS5wbCAgICB8ICAgIDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNl X3N0cmVhbS5wbCAgICAgfCAgNTI1ICsrKystLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICAgICAgICAgICAgICAgIHwgICAgNyArCiA1NyBmaWxlcyBjaGFuZ2VkLCA0NTAw IGluc2VydGlvbnMoKyksIDc1OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwKaW5kZXggOTMxNmI4MS4uYzFlNDA0OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc5MTMsMTEg Kzc5MTMsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3Vu dCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8cm93PgogICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAg IElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJv Z3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBob3cgdG8gaGFuZGxl IHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgorICAgICAgIDxsaXRl cmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5z YWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBjaGFuZ2Vz IG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sgYW5kIGFwcGx5IGF0 IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUKKyAgICAgICBw dWJsaXNoZXIgYW5kIHJlY2VpdmVkIGJ5IHRoZSBzdWJzY3JpYmVyLAorICAgICAgIDxsaXRlcmFs PnA8L2xpdGVyYWw+ID0gYXBwbHkgY2hhbmdlcyBkaXJlY3RseSB1c2luZyBhIHBhcmFsbGVsIGFw cGx5CisgICAgICAgd29ya2VyIGlmIGF2YWlsYWJsZSAoc2FtZSBhcyAndCcgaWYgbm8gd29ya2Vy IGlzIGF2YWlsYWJsZSkKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sCmluZGV4IDA1YjM4NjIuLmEzM2E5MzUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ5NjgsNyArNDk2OCw4 IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2Vh YmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBh cmE+CiAgICAgICAgIFNwZWNpZmllcyBtYXhpbXVtIG51bWJlciBvZiBsb2dpY2FsIHJlcGxpY2F0 aW9uIHdvcmtlcnMuIFRoaXMgaW5jbHVkZXMKLSAgICAgICAgYm90aCBhcHBseSB3b3JrZXJzIGFu ZCB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2Vycy4KKyAgICAgICAgbGVhZGVyIGFwcGx5IHdv cmtlcnMsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGFuZCB0YWJsZSBzeW5jaHJvbml6YXRpb24K KyAgICAgICAgd29ya2Vycy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAg IExvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZp bmVkIGJ5CkBAIC01MDA4LDYgKzUwMDksMzEgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50 cnkgaWQ9Imd1Yy1tYXgtcGFyYWxsZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIiB4 cmVmbGFiZWw9Im1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24iPgor ICAgICAgPHRlcm0+PHZhcm5hbWU+bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbjwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVy bT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFy eT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgor ICAgICAgIDxwYXJhPgorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzIHBlciBzdWJzY3JpcHRpb24uIFRoaXMKKyAgICAgICAgcGFyYW1ldGVyIGNvbnRyb2xz IHRoZSBhbW91bnQgb2YgcGFyYWxsZWxpc20gZm9yIHN0cmVhbWluZyBvZgorICAgICAgICBpbi1w cm9ncmVzcyB0cmFuc2FjdGlvbnMgd2l0aCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyCisgICAgICAg IDxsaXRlcmFsPnN0cmVhbWluZyA9IHBhcmFsbGVsPC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSB0 YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKKyAgICAgICAgPHZhcm5hbWU+bWF4X2xvZ2lj YWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyLiBUaGlzIHBhcmFtZXRlciBj YW4gb25seSBiZSBzZXQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8 L2ZpbGVuYW1lPiBmaWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAgICBsaW5lLgor ICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1y ZXBsaWNhdGlvbi5zZ21sCmluZGV4IDdiOWJiMDAuLjU0ZjQ4YmUgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2lj YWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTUwMSw2ICsxNTAxLDE2IEBAIENPTlRFWFQ6ICBwcm9j ZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJp bmcgIklOU0VSCiAgICBtaWdodCBub3QgdmlvbGF0ZSBhbnkgY29uc3RyYWludC4gIFRoaXMgY2Fu IGVhc2lseSBtYWtlIHRoZSBzdWJzY3JpYmVyCiAgICBpbmNvbnNpc3RlbnQuCiAgIDwvcGFyYT4K KworICA8cGFyYT4KKyAgIFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFsPnBhcmFs bGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKKyAgIGZhaWxlZCB0cmFuc2FjdGlvbnMg bWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0bwor ICAgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4gb3Ig PGxpdGVyYWw+b2ZmPC9saXRlcmFsPiBhbmQKKyAgIGNhdXNlIHRoZSBzYW1lIGNvbmZsaWN0cyBh Z2FpbiBzbyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwKKyAg IGJlIHdyaXR0ZW4gdG8gdGhlIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExT TiwgcGxlYXNlIHJlZmVyIHRvIDxsaW5rCisgICBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRp b24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4KKyAgIFNLSVA8L2NvbW1hbmQ+PC9s aW5rPi4KKyAgPC9wYXJhPgogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9ImxvZ2ljYWwtcmVwbGlj YXRpb24tcmVzdHJpY3Rpb25zIj4KQEAgLTE4MDksOCArMTgxOSw5IEBAIENPTlRFWFQ6ICBwcm9j ZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJp bmcgIklOU0VSCiAKICAgIDxwYXJhPgogICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1tYXgtbG9naWNh bC1yZXBsaWNhdGlvbi13b3JrZXJzIj48dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93 b3JrZXJzPC92YXJuYW1lPjwvbGluaz4KLSAgICBtdXN0IGJlIHNldCB0byBhdCBsZWFzdCB0aGUg bnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMgKGZvciBhcHBseSB3b3JrZXJzKSwgcGx1cwotICAgIHNv bWUgcmVzZXJ2ZSBmb3IgdGhlIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJzLgorICAgIG11 c3QgYmUgc2V0IHRvIGF0IGxlYXN0IHRoZSBudW1iZXIgb2Ygc3Vic2NyaXB0aW9ucyAoZm9yIGxl YWRlciBhcHBseQorICAgIHdvcmtlcnMpLCBwbHVzIHNvbWUgcmVzZXJ2ZSBmb3IgdGhlIHRhYmxl IHN5bmNocm9uaXphdGlvbiB3b3JrZXJzIGFuZAorICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMu CiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgpAQCAtMTgyOCw2ICsxODM5LDEzIEBAIENPTlRFWFQ6 ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1 IiBkdXJpbmcgIklOU0VSCiAgICA8L3BhcmE+CiAKICAgIDxwYXJhPgorICAgIDxsaW5rIGxpbmtl bmQ9Imd1Yy1tYXgtcGFyYWxsZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIj48dmFy bmFtZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1l PjwvbGluaz4KKyAgICAgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3Ry ZWFtaW5nIG9mIGluLXByb2dyZXNzCisgICAgIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlv biBwYXJhbWV0ZXIKKyAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+ LgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KICAgICBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtl cnMgYXJlIGFsc28gYWZmZWN0ZWQgYnkKICAgICA8bGluayBsaW5rZW5kPSJndWMtd2FsLXJlY2Vp dmVyLXRpbWVvdXQiPjx2YXJuYW1lPndhbF9yZWNlaXZlcl90aW1lb3V0PC92YXJuYW1lPjwvbGlu az4sCiAgICAgPGxpbmsgbGlua2VuZD0iZ3VjLXdhbC1yZWNlaXZlci1zdGF0dXMtaW50ZXJ2YWwi Pjx2YXJuYW1lPndhbF9yZWNlaXZlcl9zdGF0dXNfaW50ZXJ2YWw8L3Zhcm5hbWU+PC9saW5rPiBh bmQKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDViY2JhMGYuLmNmMjIwYzMgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcu c2dtbApAQCAtMTg1OSw2ICsxODU5LDExIEBAIHBvc3RncmVzICAgMjcwOTMgIDAuMCAgMC4wICAz MDA5NiAgMjc1MiA/ICAgICAgICBTcyAgIDExOjM0ICAgMDowMCBwb3N0Z3Jlczogc2VyCiAgICAg ICA8ZW50cnk+V2FpdGluZyB0byBhY3F1aXJlIGFuIGFkdmlzb3J5IHVzZXIgbG9jay48L2VudHJ5 PgogICAgICA8L3Jvdz4KICAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5hcHBseXRy YW5zYWN0aW9uPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+V2FpdGluZyB0byBhY3F1 aXJlIGEgbG9jayBvbiBhIHJlbW90ZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkCisgICAgICBi eSBhIGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaWJlci48L2VudHJ5PgorICAgICA8L3Jvdz4K KyAgICAgPHJvdz4KICAgICAgIDxlbnRyeT48bGl0ZXJhbD5leHRlbmQ8L2xpdGVyYWw+PC9lbnRy eT4KICAgICAgIDxlbnRyeT5XYWl0aW5nIHRvIGV4dGVuZCBhIHJlbGF0aW9uLjwvZW50cnk+CiAg ICAgIDwvcm93PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mv c3JjL3NnbWwvcHJvdG9jb2wuc2dtbAppbmRleCAwMzMxMmUwLi40MzllZjY3IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wu c2dtbApAQCAtMzEwMyw3ICszMTAzLDcgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0 aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgPGxpc3RpdGVtPgogICAg ICAgPHBhcmE+CiAgICAgICAgUHJvdG9jb2wgdmVyc2lvbi4gQ3VycmVudGx5IHZlcnNpb25zIDxs aXRlcmFsPjE8L2xpdGVyYWw+LCA8bGl0ZXJhbD4yPC9saXRlcmFsPiwKLSAgICAgICBhbmQgPGxp dGVyYWw+MzwvbGl0ZXJhbD4gYXJlIHN1cHBvcnRlZC4KKyAgICAgICA8bGl0ZXJhbD4zPC9saXRl cmFsPiwgYW5kIDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGFyZSBzdXBwb3J0ZWQuCiAgICAgICA8L3Bh cmE+CiAgICAgICA8cGFyYT4KICAgICAgICBWZXJzaW9uIDxsaXRlcmFsPjI8L2xpdGVyYWw+IGlz IHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVyc2lvbiAxNApAQCAtMzExMyw2ICszMTEzLDEx IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5U SUZZX1NZU1RFTTsiCiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4zPC9saXRlcmFsPiBpcyBzdXBw b3J0ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTUKICAgICAgICBhbmQgYWJvdmUsIGFuZCBp dCBhbGxvd3Mgc3RyZWFtaW5nIG9mIHR3by1waGFzZSBjb21taXRzLgogICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD40PC9saXRlcmFsPiBpcyBzdXBw b3J0ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTYKKyAgICAgICBhbmQgYWJvdmUsIGFuZCBp dCBhbGxvd3Mgc3RyZWFtcyBvZiBsYXJnZSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAg ICAgICBiZSBhcHBsaWVkIGluIHBhcmFsbGVsLgorICAgICAgPC9wYXJhPgogICAgICA8L2xpc3Rp dGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC02ODgzLDYgKzY4ODgsMjggQEAgcHNxbCAi ZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVN OyIKICAgICAgICAgPC9wYXJhPgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3Rl bnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoWExvZ1Jl Y1B0cik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAg IFRoZSBMU04gb2YgdGhlIGFib3J0LiBUaGlzIGZpZWxkIGlzIGF2YWlsYWJsZSBzaW5jZSBwcm90 b2NvbCB2ZXJzaW9uCisgICAgICAgICA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0 aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAg ICAgIDx0ZXJtPkludDY0IChUaW1lc3RhbXBUeik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgor ICAgICAgICA8cGFyYT4KKyAgICAgICAgIEFib3J0IHRpbWVzdGFtcCBvZiB0aGUgdHJhbnNhY3Rp b24uIFRoZSB2YWx1ZSBpcyBpbiBudW1iZXIKKyAgICAgICAgIG9mIG1pY3Jvc2Vjb25kcyBzaW5j ZSBQb3N0Z3JlU1FMIGVwb2NoICgyMDAwLTAxLTAxKS4gVGhpcyBmaWVsZCBpcworICAgICAgICAg YXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24gNC4KKyAgICAgICAgPC9wYXJhPgorICAg ICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxl bGlzdD4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDkwYmQ3MDAuLmViYTcyYzYgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yMjgsMTMgKzIyOCwy OSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z dWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAg ICAgICAgPHZhcmxpc3RlbnRyeT4KLSAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9s aXRlcmFsPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pPC90ZXJtPgorICAgICAgICA8dGVybT48bGl0 ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5lbnVtPC90eXBlPik8L3Rlcm0+CiAgICAg ICAgIDxsaXN0aXRlbT4KICAgICAgICAgIDxwYXJhPgogICAgICAgICAgIFNwZWNpZmllcyB3aGV0 aGVyIHRvIGVuYWJsZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zCi0gICAg ICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0aW9uLiAgQnkgZGVmYXVsdCwgYWxsIHRyYW5zYWN0aW9u cwotICAgICAgICAgIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkg dGhlbiBzZW50IHRvIHRoZQotICAgICAgICAgIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAgICAg ICAgICBmb3IgdGhpcyBzdWJzY3JpcHRpb24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJh bD5vZmY8L2xpdGVyYWw+LAorICAgICAgICAgIG1lYW5pbmcgYWxsIHRyYW5zYWN0aW9ucyBhcmUg ZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBvbmx5CisgICAgICAgICAgdGhlbiBz ZW50IHRvIHRoZSBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisgICAgICAgICA8L3BhcmE+CisKKyAg ICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHNldCB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4s IHRoZSBpbmNvbWluZyBjaGFuZ2VzIGFyZSB3cml0dGVuIHRvCisgICAgICAgICAgdGVtcG9yYXJ5 IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMKKyAg ICAgICAgICBjb21taXR0ZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgcmVjZWl2ZWQgYnkgdGhlIHN1 YnNjcmliZXIuCisgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAg IElmIHNldCB0byA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4sIGluY29taW5nIGNoYW5nZXMg YXJlIGRpcmVjdGx5CisgICAgICAgICAgYXBwbGllZCB2aWEgb25lIG9mIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXJzLCBpZiBhdmFpbGFibGUuIElmIG5vCisgICAgICAgICAgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGlzIGZyZWUgdG8gaGFuZGxlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhlbgor ICAgICAgICAgIHRoZSBjaGFuZ2VzIGFyZSB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQg YXBwbGllZCBhZnRlciB0aGUKKyAgICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5v dGUgdGhhdCBpZiBhbiBlcnJvciBoYXBwZW5zIGluIGEKKyAgICAgICAgICBwYXJhbGxlbCBhcHBs eSB3b3JrZXIsIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24KKyAgICAg ICAgICBtaWdodCBub3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCiAgICAgICAgICA8 L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lz dGVtLXZpZXdzLnNnbWwKaW5kZXggMTQzYWU1Yi4uMWQxYjdkZSAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Mu c2dtbApAQCAtMTM3OSw4ICsxMzc5LDkgQEAKICAgICAgICA8bGl0ZXJhbD52aXJ0dWFseGlkPC9s aXRlcmFsPiwKICAgICAgICA8bGl0ZXJhbD5zcGVjdG9rZW48L2xpdGVyYWw+LAogICAgICAgIDxs aXRlcmFsPm9iamVjdDwvbGl0ZXJhbD4sCi0gICAgICAgPGxpdGVyYWw+dXNlcmxvY2s8L2xpdGVy YWw+LCBvcgotICAgICAgIDxsaXRlcmFsPmFkdmlzb3J5PC9saXRlcmFsPi4KKyAgICAgICA8bGl0 ZXJhbD51c2VybG9jazwvbGl0ZXJhbD4sCisgICAgICAgPGxpdGVyYWw+YWR2aXNvcnk8L2xpdGVy YWw+LCBvcgorICAgICAgIDxsaXRlcmFsPmFwcGx5dHJhbnNhY3Rpb248L2xpdGVyYWw+LgogICAg ICAgIChTZWUgYWxzbyA8eHJlZiBsaW5rZW5kPSJ3YWl0LWV2ZW50LWxvY2stdGFibGUiLz4uKQog ICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgpAQCAtMTU5NSw2ICsxNTk2LDE1IEBA CiAgIDwvcGFyYT4KIAogICA8cGFyYT4KKyAgIEFwcGx5IHRyYW5zYWN0aW9uIGxvY2tzIGFyZSB1 c2VkIGluIHBhcmFsbGVsIG1vZGUgdG8gYXBwbHkgdGhlIHRyYW5zYWN0aW9uCisgICBpbiBsb2dp Y2FsIHJlcGxpY2F0aW9uLiBUaGUgcmVtb3RlIHRyYW5zYWN0aW9uIGlkIGlzIGRpc3BsYXllZCBp biB0aGUKKyAgIDxzdHJ1Y3RmaWVsZD50cmFuc2FjdGlvbmlkPC9zdHJ1Y3RmaWVsZD4gY29sdW1u LiBUaGUgPHN0cnVjdGZpZWxkPm9ianN1YmlkPC9zdHJ1Y3RmaWVsZD4KKyAgIGRpc3BsYXlzIHRo ZSBsb2NrIHN1YnR5cGUgd2hpY2ggaXMgMCBmb3IgdGhlIGxvY2sgdXNlZCB0byBzeW5jaHJvbml6 ZSB0aGUKKyAgIHNldCBvZiBjaGFuZ2VzLCBhbmQgMSBmb3IgdGhlIGxvY2sgdXNlZCB0byB3YWl0 IGZvciB0aGUgdHJhbnNhY3Rpb24gdG8KKyAgIGZpbmlzaCB0byBlbnN1cmUgY29tbWl0IG9yZGVy LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CiAgICA8c3RydWN0bmFtZT5wZ19sb2Nrczwvc3RydWN0 bmFtZT4gcHJvdmlkZXMgYSBnbG9iYWwgdmlldyBvZiBhbGwgbG9ja3MKICAgIGluIHRoZSBkYXRh YmFzZSBjbHVzdGVyLCBub3Qgb25seSB0aG9zZSByZWxldmFudCB0byB0aGUgY3VycmVudCBkYXRh YmFzZS4KICAgIEFsdGhvdWdoIGl0cyA8c3RydWN0ZmllbGQ+cmVsYXRpb248L3N0cnVjdGZpZWxk PiBjb2x1bW4gY2FuIGJlIGpvaW5lZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IDI0 MjIxNTQuLmZjZDJjMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hh Y3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTE3MTIsNiAr MTcxMiw3IEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJaW50CQkJ bmNoaWxkcmVuOwogCVRyYW5zYWN0aW9uSWQgKmNoaWxkcmVuOwogCVRpbWVzdGFtcFR6IHhhY3Rf dGltZTsKKwlib29sCQlyZXBsb3JpZ2luOwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZlbid0IGJlZW4g YXNzaWduZWQgYW4gWElELCBub2JvZHkgd2lsbCBjYXJlIHdoZXRoZXIgd2UgYWJvcnRlZApAQCAt MTc0Miw2ICsxNzQzLDEzIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3Qp CiAJCWVsb2coUEFOSUMsICJjYW5ub3QgYWJvcnQgdHJhbnNhY3Rpb24gJXUsIGl0IHdhcyBhbHJl YWR5IGNvbW1pdHRlZCIsCiAJCQkgeGlkKTsKIAorCS8qCisJICogQXJlIHdlIHVzaW5nIHRoZSBy ZXBsaWNhdGlvbiBvcmlnaW5zIGZlYXR1cmU/ICBPciwgaW4gb3RoZXIgd29yZHMsIGFyZQorCSAq IHdlIHJlcGxheWluZyByZW1vdGUgYWN0aW9ucz8KKwkgKi8KKwlyZXBsb3JpZ2luID0gKHJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCisJCQkJICByZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOworCiAJLyogRmV0Y2gg dGhlIGRhdGEgd2UgbmVlZCBmb3IgdGhlIGFib3J0IHJlY29yZCAqLwogCW5yZWxzID0gc21nckdl dFBlbmRpbmdEZWxldGVzKGZhbHNlLCAmcmVscyk7CiAJbmNoaWxkcmVuID0geGFjdEdldENvbW1p dHRlZENoaWxkcmVuKCZjaGlsZHJlbik7CkBAIC0xNzY1LDYgKzE3NzMsMTEgQEAgUmVjb3JkVHJh bnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAkJCQkJICAgTXlYYWN0RmxhZ3MsIEludmFs aWRUcmFuc2FjdGlvbklkLAogCQkJCQkgICBOVUxMKTsKIAorCWlmIChyZXBsb3JpZ2luKQorCQkv KiBNb3ZlIExTTnMgZm9yd2FyZCBmb3IgdGhpcyByZXBsaWNhdGlvbiBvcmlnaW4gKi8KKwkJcmVw bG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24sCisJ CQkJCQkJCSAgIFhhY3RMYXN0UmVjRW5kKTsKKwogCS8qCiAJICogUmVwb3J0IHRoZSBsYXRlc3Qg YXN5bmMgYWJvcnQgTFNOLCBzbyB0aGF0IHRoZSBXQUwgd3JpdGVyIGtub3dzIHRvCiAJICogZmx1 c2ggdGhpcyBhYm9ydC4gVGhlcmUncyBub3RoaW5nIHRvIGJlIGdhaW5lZCBieSBkZWxheWluZyB0 aGlzLCBzaW5jZQpAQCAtNTg2NywxMSArNTg4MCwxMCBAQCBYYWN0TG9nQWJvcnRSZWNvcmQoVGlt ZXN0YW1wVHogYWJvcnRfdGltZSwKIAl9CiAKIAkvKgotCSAqIER1bXAgdHJhbnNhY3Rpb24gb3Jp Z2luIGluZm9ybWF0aW9uIG9ubHkgZm9yIGFib3J0IHByZXBhcmVkLiBXZSBuZWVkCi0JICogdGhp cyBkdXJpbmcgcmVjb3ZlcnkgdG8gdXBkYXRlIHRoZSByZXBsaWNhdGlvbiBvcmlnaW4gcHJvZ3Jl c3MuCisJICogRHVtcCB0cmFuc2FjdGlvbiBvcmlnaW4gaW5mb3JtYXRpb24uIFdlIG5lZWQgdGhp cyBkdXJpbmcgcmVjb3ZlcnkgdG8KKwkgKiB1cGRhdGUgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBw cm9ncmVzcy4KIAkgKi8KLQlpZiAoKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxp ZFJlcE9yaWdpbklkKSAmJgotCQlUcmFuc2FjdGlvbklkSXNWYWxpZCh0d29waGFzZV94aWQpKQor CWlmIChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCkKIAl7 CiAJCXhsX3hpbmZvLnhpbmZvIHw9IFhBQ1RfWElORk9fSEFTX09SSUdJTjsKIApAQCAtNTkyOCw4 ICs1OTQwLDggQEAgWGFjdExvZ0Fib3J0UmVjb3JkKFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsCiAJ aWYgKHhsX3hpbmZvLnhpbmZvICYgWEFDVF9YSU5GT19IQVNfT1JJR0lOKQogCQlYTG9nUmVnaXN0 ZXJEYXRhKChjaGFyICopICgmeGxfb3JpZ2luKSwgc2l6ZW9mKHhsX3hhY3Rfb3JpZ2luKSk7CiAK LQlpZiAoVHJhbnNhY3Rpb25JZElzVmFsaWQodHdvcGhhc2VfeGlkKSkKLQkJWExvZ1NldFJlY29y ZEZsYWdzKFhMT0dfSU5DTFVERV9PUklHSU4pOworCS8qIEluY2x1ZGUgdGhlIHJlcGxpY2F0aW9u IG9yaWdpbiAqLworCVhMb2dTZXRSZWNvcmRGbGFncyhYTE9HX0lOQ0xVREVfT1JJR0lOKTsKIAog CXJldHVybiBYTG9nSW5zZXJ0KFJNX1hBQ1RfSUQsIGluZm8pOwogfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IGI5YzVkZjcuLmJjMWIxOTggMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTg0LDcgKzg0LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgU3ViT3B0cwogCWJvb2wJCWNvcHlfZGF0YTsKIAlib29sCQlyZWZyZXNoOwogCWJvb2wJ CWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFtaW5nOwogCWJvb2wJCXR3 b3BoYXNlOwogCWJvb2wJCWRpc2FibGVvbmVycjsKIAljaGFyCSAgICpvcmlnaW47CkBAIC0xMzgs NyArMTM4LDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICpzdG10X29wdGlvbnMsCiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRf QklOQVJZKSkKIAkJb3B0cy0+YmluYXJ5ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9v cHRzLCBTVUJPUFRfU1RSRUFNSU5HKSkKLQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7CisJCW9w dHMtPnN0cmVhbWluZyA9IExPR0lDQUxSRVBfU1RSRUFNX09GRjsKIAlpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29waGFzZSA9IGZh bHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVfT05fRVJSKSkK QEAgLTI0MSw3ICsyNDEsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRl ICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxl bShkZWZlbCwgcHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX1NU UkVBTUlORzsKLQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJ b3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxz ZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAt NjI5LDcgKzYyOSw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENy ZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1Ym93bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1ZXNbQW51bV9w Z19zdWJzY3JpcHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZW5hYmxl ZCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFdID0gQm9vbEdl dERhdHVtKG9wdHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3Ry ZWFtIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVlc1tBbnVtX3Bn X3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRzLnN0cmVhbWlu Zyk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAxXSA9 CiAJCUNoYXJHZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhB U0VfU1RBVEVfUEVORElORyA6CkBAIC0xMDk4LDcgKzEwOTgsNyBAQCBBbHRlclN1YnNjcmlwdGlv bihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlp ZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCiAJCQkJewog CQkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPQotCQkJCQkJ Qm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLnN0 cmVhbWluZyk7CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAt IDFdID0gdHJ1ZTsKIAkJCQl9CiAKQEAgLTIxMjIsMyArMjEyMiw2MCBAQCBtZXJnZV9wdWJsaWNh dGlvbnMoTGlzdCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9vbCBhZGRwdWIsIGNv bnN0IGNoYXIgKgogCiAJcmV0dXJuIG9sZHB1Ymxpc3Q7CiB9CisKKy8qCisgKiBFeHRyYWN0IHRo ZSBzdHJlYW1pbmcgbW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMgaXMgbGlrZQorICog ZGVmR2V0Qm9vbGVhbigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwgdmFsdWUgb2YgInBh cmFsbGVsIi4KKyAqLworY2hhcgorZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpCit7 CisJLyoKKwkgKiBJZiBubyBwYXJhbWV0ZXIgdmFsdWUgZ2l2ZW4sIGFzc3VtZSAidHJ1ZSIgaXMg bWVhbnQuCisJICovCisJaWYgKCFkZWYtPmFyZykKKwkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFN X09OOworCisJLyoKKwkgKiBBbGxvdyAwLCAxLCAiZmFsc2UiLCAidHJ1ZSIsICJvZmYiLCAib24i IG9yICJwYXJhbGxlbCIuCisJICovCisJc3dpdGNoIChub2RlVGFnKGRlZi0+YXJnKSkKKwl7CisJ CWNhc2UgVF9JbnRlZ2VyOgorCQkJc3dpdGNoIChpbnRWYWwoZGVmLT5hcmcpKQorCQkJeworCQkJ CWNhc2UgMDoKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsKKwkJCQljYXNlIDE6 CisJCQkJCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkv KiBvdGhlcndpc2UsIGVycm9yIG91dCBiZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJy ZWFrOworCQlkZWZhdWx0OgorCQkJeworCQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmco ZGVmKTsKKworCQkJCS8qCisJCQkJICogVGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUg c2hvdWxkIG1hdGNoIHVwIHdpdGggdGhlCisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29y X3N0cmluZyBwcm9kdWN0aW9uLgorCQkJCSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWws ICJmYWxzZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkK KwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsKKwkJCQlpZiAocGdfc3RyY2FzZWNt cChzdmFsLCAidHJ1ZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib24iKSA9 PSAwKQorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT047CisJCQkJaWYgKHBnX3N0cmNh c2VjbXAoc3ZhbCwgInBhcmFsbGVsIikgPT0gMCkKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RS RUFNX1BBUkFMTEVMOworCQkJfQorCQkJYnJlYWs7CisJfQorCisJZXJlcG9ydChFUlJPUiwKKwkJ CShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHJlcXVpcmVz IGEgQm9vbGVhbiB2YWx1ZSBvciBcInBhcmFsbGVsXCIiLAorCQkJCQlkZWYtPmRlZm5hbWUpKSk7 CisJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09GRjsJLyoga2VlcCBjb21waWxlciBxdWlldCAq LworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jIGIvc3JjL2JhY2tlbmQv bGlicHEvcHFtcS5jCmluZGV4IDc2NmVjYTkuLjM5ZTc3ZWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2xpYnBxL3BxbXEuYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKQEAgLTEzLDEx ICsxMywxMyBAQAogCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgImFjY2Vzcy9w YXJhbGxlbC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFm b3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcW1xLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgi CiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtl ci5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgogCkBAIC0xNjIsOSArMTY0LDE5IEBAIG1xX3B1dG1lc3NhZ2UoY2hhciBtc2d0eXBlLCBj b25zdCBjaGFyICpzLCBzaXplX3QgbGVuKQogCQlyZXN1bHQgPSBzaG1fbXFfc2VuZHYocHFfbXFf aGFuZGxlLCBpb3YsIDIsIHRydWUsIHRydWUpOwogCiAJCWlmIChwcV9tcV9wYXJhbGxlbF9sZWFk ZXJfcGlkICE9IDApCi0JCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlk LAotCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9NRVNTQUdFLAotCQkJCQkJICAgcHFfbXFfcGFy YWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQl7CisJCQlpZiAoSXNMb2dpY2FsUGFyYWxsZWxB cHBseVdvcmtlcigpKQorCQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9w aWQsCisJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAorCQkJCQkJCSAg IHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJCWVsc2UKKwkJCXsKKwkJCQlB c3NlcnQoSXNQYXJhbGxlbFdvcmtlcigpKTsKKwkJCQlTZW5kUHJvY1NpZ25hbChwcV9tcV9wYXJh bGxlbF9sZWFkZXJfcGlkLAorCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfTUVTU0FHRSwKKwkJ CQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCQl9CisJCX0KIAog CQlpZiAocmVzdWx0ICE9IFNITV9NUV9XT1VMRF9CTE9DSykKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9iZ3dvcmtlci5jCmluZGV4IDZmOGUzNDQ1Li5lN2E0YTcxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dvcmtlci5jCkBAIC0xMjgsNiArMTI4LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCX0s CiAJewogCQkiQXBwbHlXb3JrZXJNYWluIiwgQXBwbHlXb3JrZXJNYWluCisJfSwKKwl7CisJCSJQ YXJhbGxlbEFwcGx5V29ya2VyTWFpbiIsIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluCiAJfQogfTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKaW5kZXggMmVlODk2Zi4uNmQ0YmQ3NiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYworKysgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCkBAIC05OCw4ICs5OCw5IEBAIFNpZ25hbEhhbmRs ZXJGb3JDcmFzaEV4aXQoU0lHTkFMX0FSR1MpCiAgKiBzaHV0IGRvd24gYW5kIGV4aXQuCiAgKgog ICogVHlwaWNhbGx5LCB0aGlzIGhhbmRsZXIgd291bGQgYmUgdXNlZCBmb3IgU0lHVEVSTSwgYnV0 IHNvbWUgcHJvY2Vzc2VzIHVzZQotICogb3RoZXIgc2lnbmFscy4gSW4gcGFydGljdWxhciwgdGhl IGNoZWNrcG9pbnRlciBleGl0cyBvbiBTSUdVU1IyLCBhbmQgdGhlCi0gKiBXQUwgd3JpdGVyIGV4 aXRzIG9uIGVpdGhlciBTSUdJTlQgb3IgU0lHVEVSTS4KKyAqIG90aGVyIHNpZ25hbHMuIEluIHBh cnRpY3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgZXhpdHMgb24gU0lHVVNSMiwgYW5kIHRoZSBXQUwK KyAqIHdyaXRlciBhbmQgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29y a2VyIGV4aXRzIG9uIGVpdGhlcgorICogU0lHSU5UIG9yIFNJR1RFUk0uCiAgKgogICogU2h1dGRv d25SZXF1ZXN0UGVuZGluZyBzaG91bGQgYmUgY2hlY2tlZCBhdCBhIGNvbnZlbmllbnQgcGxhY2Ug d2l0aGluIHRoZQogICogbWFpbiBsb29wLCBvciBlbHNlIHRoZSBtYWluIGxvb3Agc2hvdWxkIGNh bGwgSGFuZGxlTWFpbkxvb3BJbnRlcnJ1cHRzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwppbmRleCAy MTljZDczLi5jNDBjNjIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJw cXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYwpAQCAtNDQzLDkgKzQ0Myw5 IEBAIGxpYnBxcmN2X3N0YXJ0c3RyZWFtaW5nKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwKIAkJYXBw ZW5kU3RyaW5nSW5mbygmY21kLCAicHJvdG9fdmVyc2lvbiAnJXUnIiwKIAkJCQkJCSBvcHRpb25z LT5wcm90by5sb2dpY2FsLnByb3RvX3ZlcnNpb24pOwogCi0JCWlmIChvcHRpb25zLT5wcm90by5s b2dpY2FsLnN0cmVhbWluZyAmJgotCQkJUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4p ID49IDE0MDAwMCkKLQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmNtZCwgIiwgc3RyZWFtaW5n ICdvbiciKTsKKwkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0cikKKwkJ CWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgIiwgc3RyZWFtaW5nICclcyciLAorCQkJCQkJCSBvcHRp b25zLT5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIpOwogCiAJCWlmIChvcHRpb25zLT5wcm90 by5sb2dpY2FsLnR3b3BoYXNlICYmCiAJCQlQUXNlcnZlclZlcnNpb24oY29ubi0+c3RyZWFtQ29u bikgPj0gMTUwMDAwKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKaW5k ZXggYzRlMmZkZS4uMmRjMjVlMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01h a2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtl ZmlsZS5nbG9iYWwKIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChzcmNkaXIpICQoQ1BQRkxBR1Mp CiAKIE9CSlMgPSBcCisJYXBwbHlwYXJhbGxlbHdvcmtlci5vIFwKIAlkZWNvZGUubyBcCiAJbGF1 bmNoZXIubyBcCiAJbG9naWNhbC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uODk4MzI2NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0wLDAgKzEsMTYyNyBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMKKyAqCSAgIFN1cHBv cnQgcm91dGluZXMgZm9yIGFwcGx5aW5nIHhhY3QgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisg KgorICogQ29weXJpZ2h0IChjKSAyMDIzLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisgKgorICogVGhpcyBmaWxlIGNvbnRhaW5z IHRoZSBjb2RlIHRvIGxhdW5jaCwgc2V0IHVwLCBhbmQgdGVhcmRvd24gYSBwYXJhbGxlbCBhcHBs eQorICogd29ya2VyIHdoaWNoIHJlY2VpdmVzIHRoZSBjaGFuZ2VzIGZyb20gdGhlIGxlYWRlciB3 b3JrZXIgYW5kIGludm9rZXMgcm91dGluZXMKKyAqIHRvIGFwcGx5IHRob3NlIG9uIHRoZSBzdWJz Y3JpYmVyIGRhdGFiYXNlLiBBZGRpdGlvbmFsbHksIHRoaXMgZmlsZSBjb250YWlucworICogcm91 dGluZXMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBzZXR0aW5nIHVwLCB1c2luZywgYW5k IHRlYXJpbmcgZG93biBhCisgKiBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyB3aGljaCBpcyByZXF1 aXJlZCBzbyB0aGUgbGVhZGVyIHdvcmtlciBhbmQgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcnMg Y2FuIGNvbW11bmljYXRlIHdpdGggZWFjaCBvdGhlci4KKyAqCisgKiBUaGUgcGFyYWxsZWwgYXBw bHkgd29ya2VycyBhcmUgYXNzaWduZWQgKGlmIGF2YWlsYWJsZSkgYXMgc29vbiBhcyB4YWN0J3MK KyAqIGZpcnN0IHN0cmVhbSBpcyByZWNlaXZlZCBmb3Igc3Vic2NyaXB0aW9ucyB0aGF0IGhhdmUg c2V0IHRoZWlyICdzdHJlYW1pbmcnCisgKiBvcHRpb24gYXMgcGFyYWxsZWwuIFRoZSBsZWFkZXIg YXBwbHkgd29ya2VyIHdpbGwgc2VuZCBjaGFuZ2VzIHRvIHRoaXMgbmV3CisgKiB3b3JrZXIgdmlh IHNoYXJlZCBtZW1vcnkuIFdlIGtlZXAgdGhpcyB3b3JrZXIgYXNzaWduZWQgdGlsbCB0aGUgdHJh bnNhY3Rpb24KKyAqIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0IGZvciB0aGUgd29y a2VyIHRvIGZpbmlzaCBhdCBjb21taXQuIFRoaXMKKyAqIHByZXNlcnZlcyBjb21taXQgb3JkZXJp bmcgYW5kIGF2b2lkIGZpbGUgSS9PIGluIG1vc3QgY2FzZXMsIGFsdGhvdWdoIHdlCisgKiBzdGls bCBuZWVkIHRvIHNwaWxsIHRvIGEgZmlsZSBpZiB0aGVyZSBpcyBubyB3b3JrZXIgYXZhaWxhYmxl LiBTZWUgY29tbWVudHMKKyAqIGF0b3AgbG9naWNhbC93b3JrZXIgdG8ga25vdyBtb3JlIGFib3V0 IHN0cmVhbWVkIHhhY3RzIHdob3NlIGNoYW5nZXMgYXJlCisgKiBzcGlsbGVkIHRvIGRpc2suIEl0 IGlzIGltcG9ydGFudCB0byBtYWludGFpbiBjb21taXQgb3JkZXIgdG8gYXZvaWQgZmFpbHVyZXMK KyAqIGR1ZSB0bzogKGEpIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyAtIHNheSBpZiB3ZSBpbnNl cnQgYSByb3cgaW4gdGhlIGZpcnN0CisgKiB0cmFuc2FjdGlvbiBhbmQgdXBkYXRlIGl0IGluIHRo ZSBzZWNvbmQgdHJhbnNhY3Rpb24gb24gcHVibGlzaGVyIHRoZW4KKyAqIGFsbG93aW5nIHRoZSBz dWJzY3JpYmVyIHRvIGFwcGx5IGJvdGggaW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZmFpbHVyZSBp biB0aGUKKyAqIHVwZGF0ZTsgKGIpIGRlYWRsb2NrcyAtIGFsbG93aW5nIHRyYW5zYWN0aW9ucyB0 aGF0IHVwZGF0ZSB0aGUgc2FtZSBzZXQgb2YKKyAqIHJvd3MvdGFibGVzIGluIHRoZSBvcHBvc2l0 ZSBvcmRlciB0byBiZSBhcHBsaWVkIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvCisgKiBkZWFkbG9j a3MuCisgKgorICogQSB3b3JrZXIgcG9vbCBpcyB1c2VkIHRvIGF2b2lkIHJlc3RhcnRpbmcgd29y a2VycyBmb3IgZWFjaCBzdHJlYW1pbmcKKyAqIHRyYW5zYWN0aW9uLiBXZSBtYWludGFpbiBlYWNo IHdvcmtlcidzIGluZm9ybWF0aW9uIChQYXJhbGxlbEFwcGx5V29ya2VySW5mbykKKyAqIGluIHRo ZSBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbC4gQWZ0ZXIgc3VjY2Vzc2Z1bGx5IGxhdW5jaGluZyBh IG5ldyB3b3JrZXIsCisgKiBpdHMgaW5mb3JtYXRpb24gaXMgYWRkZWQgdG8gdGhlIFBhcmFsbGVs QXBwbHlXb3JrZXJQb29sLiBPbmNlIHRoZSB3b3JrZXIKKyAqIGZpbmlzaGVzIGFwcGx5aW5nIHRo ZSB0cmFuc2FjdGlvbiwgaXQgaXMgbWFya2VkIGFzIGF2YWlsYWJsZSBmb3IgcmUtdXNlLgorICog Tm93LCBiZWZvcmUgc3RhcnRpbmcgYSBuZXcgd29ya2VyIHRvIGFwcGx5IHRoZSBzdHJlYW1pbmcg dHJhbnNhY3Rpb24sIHdlCisgKiBjaGVjayB0aGUgbGlzdCBmb3IgYW55IGF2YWlsYWJsZSB3b3Jr ZXIuIE5vdGUgdGhhdCB3ZSByZXRhaW4gYSBtYXhpbXVtIG9mCisgKiBoYWxmIHRoZSBtYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIHdvcmtlcnMgaW4gdGhlIHBvb2wg YW5kCisgKiBhZnRlciB0aGF0LCB3ZSBzaW1wbHkgZXhpdCB0aGUgd29ya2VyIGFmdGVyIGFwcGx5 aW5nIHRoZSB0cmFuc2FjdGlvbi4KKyAqCisgKiBYWFggVGhpcyB3b3JrZXIgcG9vbCB0aHJlc2hv bGQgaXMgYXJiaXRyYXJ5IGFuZCB3ZSBjYW4gcHJvdmlkZSBhIEdVQworICogdmFyaWFibGUgZm9y IHRoaXMgaW4gdGhlIGZ1dHVyZSBpZiByZXF1aXJlZC4KKyAqCisgKiBUaGUgbGVhZGVyIGFwcGx5 IHdvcmtlciB3aWxsIGNyZWF0ZSBhIHNlcGFyYXRlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdt ZW50CisgKiB3aGVuIGVhY2ggcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXJ0cy4gVGhlIHJlYXNv biBmb3IgdGhpcyBkZXNpZ24gaXMgdGhhdAorICogd2UgY2Fubm90IHByZWRpY3QgaG93IG1hbnkg d29ya2VycyB3aWxsIGJlIG5lZWRlZC4gSXQgbWF5IGJlIHBvc3NpYmxlIHRvCisgKiBhbGxvY2F0 ZSBlbm91Z2ggc2hhcmVkIG1lbW9yeSBpbiBvbmUgc2VnbWVudCBiYXNlZCBvbiB0aGUgbWF4aW11 bSBudW1iZXIgb2YKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKG1heF9wYXJhbGxlbF9hcHBs eV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pLCBidXQKKyAqIHRoaXMgd291bGQgd2FzdGUgbWVt b3J5IGlmIG5vIHByb2Nlc3MgaXMgYWN0dWFsbHkgc3RhcnRlZC4KKyAqCisgKiBUaGUgZHluYW1p YyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgY29udGFpbnM6IChhKSBhIHNobV9tcSB0aGF0IGlzIHVz ZWQgdG8KKyAqIHNlbmQgY2hhbmdlcyBpbiB0aGUgdHJhbnNhY3Rpb24gZnJvbSBsZWFkZXIgYXBw bHkgd29ya2VyIHRvIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXI7IChiKSBhbm90aGVyIHNobV9t cSB0aGF0IGlzIHVzZWQgdG8gc2VuZCBlcnJvcnMgKGFuZCBvdGhlciBtZXNzYWdlcworICogcmVw b3J0ZWQgdmlhIGVsb2cvZXJlcG9ydCkgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRv IGxlYWRlciBhcHBseQorICogd29ya2VyOyAoYykgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGJl IHNoYXJlZCBhbW9uZyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKiBhbmQgdGhlIGxlYWRlciBh cHBseSB3b3JrZXIgKGkuZS4gbWVtYmVycyBvZiBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKS4K KyAqCisgKiBMb2NraW5nIENvbnNpZGVyYXRpb25zCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKiBXZSBoYXZlIGEgcmlzayBvZiBkZWFkbG9jayBkdWUgdG8gY29uY3VycmVudGx5IGFwcGx5 aW5nIHRoZSB0cmFuc2FjdGlvbnMgaW4KKyAqIHBhcmFsbGVsIG1vZGUgdGhhdCB3ZXJlIGluZGVw ZW5kZW50IG9uIHRoZSBwdWJsaXNoZXIgc2lkZSBidXQgYmVjYW1lCisgKiBkZXBlbmRlbnQgb24g dGhlIHN1YnNjcmliZXIgc2lkZSBkdWUgdG8gdGhlIGRpZmZlcmVudCBkYXRhYmFzZSBzdHJ1Y3R1 cmVzCisgKiAobGlrZSBzY2hlbWEgb2Ygc3Vic2NyaXB0aW9uIHRhYmxlcywgY29uc3RyYWludHMs IGV0Yy4pIG9uIGVhY2ggc2lkZS4gVGhpcworICogY2FuIGhhcHBlbiBldmVuIHdpdGhvdXQgcGFy YWxsZWwgbW9kZSB3aGVuIHRoZXJlIGFyZSBjb25jdXJyZW50IG9wZXJhdGlvbnMKKyAqIG9uIHRo ZSBzdWJzY3JpYmVyLiBJbiBvcmRlciB0byBkZXRlY3QgdGhlIGRlYWRsb2NrcyBhbW9uZyBsZWFk ZXIgKExBKSBhbmQKKyAqIHBhcmFsbGVsIGFwcGx5IChQQSkgd29ya2Vycywgd2UgdXNlZCBsbWdy IGxvY2tzIHdoZW4gdGhlIFBBIHdhaXRzIGZvciB0aGUKKyAqIG5leHQgc3RyZWFtIChzZXQgb2Yg Y2hhbmdlcykgYW5kIExBIHdhaXRzIGZvciBQQSB0byBmaW5pc2ggdGhlIHRyYW5zYWN0aW9uLgor ICogQW4gYWx0ZXJuYXRpdmUgYXBwcm9hY2ggY291bGQgYmUgdG8gbm90IGFsbG93IHBhcmFsbGVs aXNtIHdoZW4gdGhlIHNjaGVtYSBvZgorICogdGFibGVzIGlzIGRpZmZlcmVudCBiZXR3ZWVuIHRo ZSBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgYnV0IHRoYXQgd291bGQgYmUKKyAqIHRvbyByZXN0 cmljdGl2ZSBhbmQgd291bGQgcmVxdWlyZSB0aGUgcHVibGlzaGVyIHRvIHNlbmQgbXVjaCBtb3Jl CisgKiBpbmZvcm1hdGlvbiB0aGFuIGl0IGlzIGN1cnJlbnRseSBzZW5kaW5nLgorICoKKyAqIENv bnNpZGVyIGEgY2FzZSB3aGVyZSB0aGUgc3Vic2NyaWJlZCB0YWJsZSBkb2VzIG5vdCBoYXZlIGEg dW5pcXVlIGtleSBvbiB0aGUKKyAqIHB1Ymxpc2hlciBhbmQgaGFzIGEgdW5pcXVlIGtleSBvbiB0 aGUgc3Vic2NyaWJlci4gVGhlIGRlYWRsb2NrIGNhbiBoYXBwZW4gaW4KKyAqIHRoZSBmb2xsb3dp bmcgd2F5czoKKyAqCisgKiAxKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIGFuZCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENvbnNpZGVyIHRoYXQgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciAoUEEpIGlzIGV4ZWN1dGluZyBUWC0xIGFuZCB0aGUKKyAq IGxlYWRlciBhcHBseSB3b3JrZXIgKExBKSBpcyBleGVjdXRpbmcgVFgtMiBjb25jdXJyZW50bHkg b24gdGhlIHN1YnNjcmliZXIuCisgKiBOb3csIExBIGlzIHdhaXRpbmcgZm9yIFBBIGJlY2F1c2Ug b2YgdGhlIHVuaXF1ZSBrZXkgY29uc3RyYWludCBvZiB0aGUKKyAqIHN1YnNjcmliZWQgdGFibGUg d2hpbGUgUEEgaXMgd2FpdGluZyBmb3IgTEEgdG8gc2VuZCB0aGUgbmV4dCBzdHJlYW0gb2YKKyAq IGNoYW5nZXMgb3IgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQgbWVzc2FnZS4KKyAqCisgKiBJ biBvcmRlciBmb3IgbG1nciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBMQSBhY3F1aXJlIGEgc2Vz c2lvbiBsb2NrIG9uIHRoZQorICogcmVtb3RlIHRyYW5zYWN0aW9uIChieSBwYV9sb2NrX3N0cmVh bSgpKSBhbmQgaGF2ZSBQQSB3YWl0IG9uIHRoZSBsb2NrIGJlZm9yZQorICogdHJ5aW5nIHRvIHJl Y2VpdmUgdGhlIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMuIFNwZWNpZmljYWxseSwgTEEgd2lsbCBh Y3F1aXJlCisgKiB0aGUgbG9jayBpbiBBY2Nlc3NFeGNsdXNpdmUgbW9kZSBiZWZvcmUgc2VuZGlu ZyB0aGUgU1RSRUFNX1NUT1AgYW5kIHdpbGwKKyAqIHJlbGVhc2UgaXQgaWYgYWxyZWFkeSBhY3F1 aXJlZCBhZnRlciBzZW5kaW5nIHRoZSBTVFJFQU1fU1RBUlQsIFNUUkVBTV9BQk9SVAorICogKGZv ciB0b3BsZXZlbCB0cmFuc2FjdGlvbiksIFNUUkVBTV9QUkVQQVJFLCBhbmQgU1RSRUFNX0NPTU1J VC4gVGhlIFBBIHdpbGwKKyAqIGFjcXVpcmUgdGhlIGxvY2sgaW4gQWNjZXNzU2hhcmUgbW9kZSBh ZnRlciBwcm9jZXNzaW5nIFNUUkVBTV9TVE9QIGFuZAorICogU1RSRUFNX0FCT1JUIChmb3Igc3Vi dHJhbnNhY3Rpb24pIGFuZCB0aGVuIHJlbGVhc2UgdGhlIGxvY2sgaW1tZWRpYXRlbHkKKyAqIGFm dGVyIGFjcXVpcmluZyBpdC4KKyAqCisgKiBUaGUgbG9jayBncmFwaCBmb3IgdGhlIGFib3ZlIGV4 YW1wbGUgd2lsbCBsb29rIGFzIGZvbGxvd3M6CisgKiBMQSAod2FpdGluZyB0byBhY3F1aXJlIHRo ZSBsb2NrIG9uIHRoZSB1bmlxdWUgaW5kZXgpIC0+IFBBICh3YWl0aW5nIHRvCisgKiBhY3F1aXJl IHRoZSBzdHJlYW0gbG9jaykgLT4gTEEKKyAqCisgKiBUaGlzIHdheSwgd2hlbiBQQSBpcyB3YWl0 aW5nIGZvciBMQSBmb3IgdGhlIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMsIHdlIGNhbgorICogaGF2 ZSBhIHdhaXQtZWRnZSBmcm9tIFBBIHRvIExBIGluIGxtZ3IsIHdoaWNoIHdpbGwgbWFrZSB1cyBk ZXRlY3QgdGhlCisgKiBkZWFkbG9jayBiZXR3ZWVuIExBIGFuZCBQQS4KKyAqCisgKiAyKSBEZWFk bG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzCisgKgorICogVGhpcyBzY2VuYXJpbyBpcyBzaW1pbGFyIHRvIHRoZSBmaXJzdCBjYXNl IGJ1dCBUWC0xIGFuZCBUWC0yIGFyZSBleGVjdXRlZCBieQorICogdHdvIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcnMgKFBBLTEgYW5kIFBBLTIgcmVzcGVjdGl2ZWx5KS4gSW4gdGhpcyBzY2VuYXJpbywK KyAqIFBBLTIgaXMgd2FpdGluZyBmb3IgUEEtMSB0byBjb21wbGV0ZSBpdHMgdHJhbnNhY3Rpb24g d2hpbGUgUEEtMSBpcyB3YWl0aW5nCisgKiBmb3Igc3Vic2VxdWVudCBpbnB1dCBmcm9tIExBLiBB bHNvLCBMQSBpcyB3YWl0aW5nIGZvciBQQS0yIHRvIGNvbXBsZXRlIGl0cworICogdHJhbnNhY3Rp b24gaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIGNvbW1pdCBvcmRlci4gVGhlcmUgaXMgYSBkZWFk bG9jayBhbW9uZworICogdGhlIHRocmVlIHByb2Nlc3Nlcy4KKyAqCisgKiBJbiBvcmRlciBmb3Ig bG1nciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBQQSBhY3F1aXJlIGEgc2Vzc2lvbiBsb2NrICh0 aGlzIGlzCisgKiBhIGRpZmZlcmVudCBsb2NrIHRoYW4gcmVmZXJyZWQgaW4gdGhlIHByZXZpb3Vz IGNhc2UsIHNlZQorICogcGFfbG9ja190cmFuc2FjdGlvbigpKSBvbiB0aGUgdHJhbnNhY3Rpb24g YmVpbmcgYXBwbGllZCBhbmQgaGF2ZSBMQSB3YWl0IG9uCisgKiB0aGUgbG9jayBiZWZvcmUgcHJv Y2VlZGluZyBpbiB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzLiBTcGVjaWZpY2FsbHks CisgKiBQQSB3aWxsIGFjcXVpcmUgdGhpcyBsb2NrIGluIEFjY2Vzc0V4Y2x1c2l2ZSBtb2RlIGJl Zm9yZSBleGVjdXRpbmcgdGhlIGZpcnN0CisgKiBtZXNzYWdlIG9mIHRoZSB0cmFuc2FjdGlvbiBh bmQgcmVsZWFzZSBpdCBhdCB0aGUgeGFjdCBlbmQuIExBIHdpbGwgYWNxdWlyZQorICogdGhpcyBs b2NrIGluIEFjY2Vzc1NoYXJlIG1vZGUgYXQgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIGFu ZCByZWxlYXNlIGl0CisgKiBpbW1lZGlhdGVseS4KKyAqCisgKiBUaGUgbG9jayBncmFwaCBmb3Ig dGhlIGFib3ZlIGV4YW1wbGUgd2lsbCBsb29rIGFzIGZvbGxvd3M6CisgKiBMQSAod2FpdGluZyB0 byBhY3F1aXJlIHRoZSB0cmFuc2FjdGlvbiBsb2NrKSAtPiBQQS0yICh3YWl0aW5nIHRvIGFjcXVp cmUgdGhlCisgKiBsb2NrIGR1ZSB0byB1bmlxdWUgaW5kZXggY29uc3RyYWludCkgLT4gUEEtMSAo d2FpdGluZyB0byBhY3F1aXJlIHRoZSBzdHJlYW0KKyAqIGxvY2spIC0+IExBCisgKgorICogVGhp cyB3YXkgd2hlbiBMQSBpcyB3YWl0aW5nIHRvIGZpbmlzaCB0aGUgdHJhbnNhY3Rpb24gZW5kIGNv bW1hbmQgdG8gcHJlc2VydmUKKyAqIHRoZSBjb21taXQgb3JkZXIsIHdlIHdpbGwgYmUgYWJsZSB0 byBkZXRlY3QgZGVhZGxvY2ssIGlmIGFueS4KKyAqCisgKiBPbmUgbWlnaHQgdGhpbmsgd2UgY2Fu IHVzZSBYYWN0TG9ja1RhYmxlV2FpdCgpLCBidXQgWGFjdExvY2tUYWJsZVdhaXQoKQorICogY29u c2lkZXJzIFBSRVBBUkVEIFRSQU5TQUNUSU9OIGFzIHN0aWxsIGluIHByb2dyZXNzIHdoaWNoIG1l YW5zIHRoZSBsb2NrCisgKiB3b24ndCBiZSByZWxlYXNlZCBldmVuIGFmdGVyIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgaGFzIHByZXBhcmVkIHRoZQorICogdHJhbnNhY3Rpb24uCisgKgorICog MykgRGVhZGxvY2sgd2hlbiB0aGUgc2htX21xIGJ1ZmZlciBpcyBmdWxsCisgKgorICogSW4gdGhl IHByZXZpb3VzIHNjZW5hcmlvIChpZS4gUEEtMSBhbmQgUEEtMiBhcmUgZXhlY3V0aW5nIHRyYW5z YWN0aW9ucworICogY29uY3VycmVudGx5KSwgaWYgdGhlIHNobV9tcSBidWZmZXIgYmV0d2VlbiBM QSBhbmQgUEEtMiBpcyBmdWxsLCBMQSBoYXMgdG8KKyAqIHdhaXQgdG8gc2VuZCBtZXNzYWdlcywg YW5kIHRoaXMgd2FpdCBkb2Vzbid0IGFwcGVhciBpbiBsbWdyLgorICoKKyAqIFRvIGF2b2lkIHRo aXMgd2FpdCwgd2UgdXNlIGEgbm9uLWJsb2NraW5nIHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1l b3V0LiBJZgorICogdGhlIHRpbWVvdXQgaXMgZXhjZWVkZWQsIHRoZSBMQSB3aWxsIHNlcmlhbGl6 ZSBhbGwgdGhlIHBlbmRpbmcgbWVzc2FnZXMgdG8KKyAqIGEgZmlsZSBhbmQgaW5kaWNhdGUgUEEt MiB0aGF0IGl0IG5lZWRzIHRvIHJlYWQgdGhhdCBmaWxlIGZvciB0aGUgcmVtYWluaW5nCisgKiBt ZXNzYWdlcy4gVGhlbiBMQSB3aWxsIHN0YXJ0IHdhaXRpbmcgZm9yIGNvbW1pdCBhcyBpbiB0aGUg cHJldmlvdXMgY2FzZQorICogd2hpY2ggd2lsbCBkZXRlY3QgZGVhZGxvY2sgaWYgYW55LiBTZWUg cGFfc2VuZF9kYXRhKCkgYW5kCisgKiBlbnVtIFRyYW5zQXBwbHlBY3Rpb24uCisgKgorICogTG9j ayB0eXBlcworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQm90aCB0aGUgc3RyZWFtIGxv Y2sgYW5kIHRoZSB0cmFuc2FjdGlvbiBsb2NrIG1lbnRpb25lZCBhYm92ZSBhcmUKKyAqIHNlc3Np b24tbGV2ZWwgbG9ja3MgYmVjYXVzZSBib3RoIGxvY2tzIGNvdWxkIGJlIGFjcXVpcmVkIG91dHNp ZGUgdGhlCisgKiB0cmFuc2FjdGlvbiwgYW5kIHRoZSBzdHJlYW0gbG9jayBpbiB0aGUgbGVhZGVy IG5lZWRzIHRvIHBlcnNpc3QgYWNyb3NzCisgKiB0cmFuc2FjdGlvbiBib3VuZGFyaWVzIGkuZS4g dW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorICotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJsaWJwcS9w cWZvcm1hdC5oIgorI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIK KyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUg InN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1 dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRp bHMvc3lzY2FjaGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAweDc4 N2NhMDY3CisKKy8qCisgKiBEU00ga2V5cyBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBVbmxp a2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVk IHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdl CisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZ X0tFWV9TSEFSRUQJCTEKKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX01RCQkJMgorI2RlZmlu ZSBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUJMworCisvKiBRdWV1ZSBzaXplIG9mIERT TSwgMTYgTUIgZm9yIG5vdy4gKi8KKyNkZWZpbmUgRFNNX1FVRVVFX1NJWkUJKDE2ICogMTAyNCAq IDEwMjQpCisKKy8qCisgKiBFcnJvciBxdWV1ZSBzaXplIG9mIERTTS4gSXQgaXMgZGVzaXJhYmxl IHRvIG1ha2UgaXQgbGFyZ2UgZW5vdWdoIHRoYXQgYQorICogdHlwaWNhbCBFcnJvclJlc3BvbnNl IGNhbiBiZSBzZW50IHdpdGhvdXQgYmxvY2tpbmcuIFRoYXQgd2F5LCBhIHdvcmtlciB0aGF0Cisg KiBlcnJvcnMgb3V0IGNhbiB3cml0ZSB0aGUgd2hvbGUgbWVzc2FnZSBpbnRvIHRoZSBxdWV1ZSBh bmQgdGVybWluYXRlIHdpdGhvdXQKKyAqIHdhaXRpbmcgZm9yIHRoZSB1c2VyIGJhY2tlbmQuCisg Ki8KKyNkZWZpbmUgRFNNX0VSUk9SX1FVRVVFX1NJWkUJCQkoMTYgKiAxMDI0KQorCisvKgorICog VGhlcmUgYXJlIHRocmVlIGZpZWxkcyBpbiBlYWNoIG1lc3NhZ2UgcmVjZWl2ZWQgYnkgdGhlIHBh cmFsbGVsIGFwcGx5CisgKiB3b3JrZXI6IHN0YXJ0X2xzbiwgZW5kX2xzbiBhbmQgc2VuZF90aW1l LiBCZWNhdXNlIHdlIGhhdmUgdXBkYXRlZCB0aGVzZQorICogc3RhdGlzdGljcyBpbiB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciwgd2UgY2FuIGlnbm9yZSB0aGVzZSBmaWVsZHMgaW4gdGhlCisgKiBw YXJhbGxlbCBhcHBseSB3b3JrZXIgKHNlZSBmdW5jdGlvbiBMb2dpY2FsUmVwQXBwbHlMb29wKS4K KyAqLworI2RlZmluZSBTSVpFX1NUQVRTX01FU1NBR0UgKDIgKiBzaXplb2YoWExvZ1JlY1B0cikg KyBzaXplb2YoVGltZXN0YW1wVHopKQorCisvKgorICogVGhlIHR5cGUgb2Ygc2Vzc2lvbi1sZXZl bCBsb2NrIG9uIGEgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKyAqIHJl cGxpY2F0aW9uIHN1YnNjcmliZXIuCisgKi8KKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfTE9DS19T VFJFQU0JMAorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QJMQorCisvKgorICogSGFz aCB0YWJsZSBlbnRyeSB0byBtYXAgeGlkIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3Rh dGUuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQoreworCVRy YW5zYWN0aW9uSWQgeGlkOwkJCS8qIEhhc2gga2V5IC0tIG11c3QgYmUgZmlyc3QgKi8KKwlQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeTsK KworLyoKKyAqIEEgaGFzaCB0YWJsZSB1c2VkIHRvIGNhY2hlIHRoZSBzdGF0ZSBvZiBzdHJlYW1p bmcgdHJhbnNhY3Rpb25zIGJlaW5nIGFwcGxpZWQKKyAqIGJ5IHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzLgorICovCitzdGF0aWMgSFRBQiAqUGFyYWxsZWxBcHBseVR4bkhhc2ggPSBOVUxMOwor CisvKgorKiBBIGxpc3QgKHBvb2wpIG9mIGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiBU aGUgaW5mb3JtYXRpb24gZm9yCisqIHRoZSBuZXcgd29ya2VyIGlzIGFkZGVkIHRvIHRoZSBsaXN0 IGFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgaXQuIFRoZQorKiBsaXN0IGVudHJ5IGlzIHJl bW92ZWQgaWYgdGhlcmUgYXJlIGFscmVhZHkgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHdvcmtlcgor KiBwb29sIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLiBGb3IgbW9yZSBpbmZvcm1hdGlv biBhYm91dCB0aGUgd29ya2VyCisqIHBvb2wsIHNlZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZS4K KyAqLworc3RhdGljIExpc3QgKlBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gTklMOworCisvKgor ICogSW5mb3JtYXRpb24gc2hhcmVkIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorICovCitQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpNeVBh cmFsbGVsU2hhcmVkID0gTlVMTDsKKworLyoKKyAqIElzIHRoZXJlIGEgbWVzc2FnZSBzZW50IGJ5 IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgdGhlIGxlYWRlciBhcHBseQorICogd29ya2Vy IG5lZWRzIHRvIHJlY2VpdmU/CisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFw cGx5TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKKworLyoKKyAqIENhY2hlIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGFwcGx5aW5nIHRoZQorICogY3Vy cmVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEl0IGlzIHVzZWQgdG8gc2F2ZSB0aGUgY29zdCBv ZiBzZWFyY2hpbmcgdGhlCisgKiBoYXNoIHRhYmxlIHdoZW4gYXBwbHlpbmcgdGhlIGNoYW5nZXMg YmV0d2VlbiBTVFJFQU1fU1RBUlQgYW5kIFNUUkVBTV9TVE9QLgorICovCitzdGF0aWMgUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOworCisvKiBBIGxp c3QgdG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCitzdGF0aWMgTGlzdCAq c3VieGFjdGxpc3QgPSBOSUw7CisKK3N0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2luZm8oUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKK3N0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUg cGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7Citz dGF0aWMgUGFydGlhbEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lkKTsKKwor LyoKKyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyBPSyB0byBzdGFydCBhIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorcGFfY2FuX3N0YXJ0 KHZvaWQpCit7CisJLyogT25seSBsZWFkZXIgYXBwbHkgd29ya2VycyBjYW4gc3RhcnQgcGFyYWxs ZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoIWFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwkJ cmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBJdCBpcyBnb29kIHRvIGNoZWNrIGZvciBhbnkgY2hh bmdlIGluIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHRvCisJICogYXZvaWQgdGhlIGNhc2Ug d2hlcmUgZm9yIGEgdmVyeSBsb25nIHRpbWUgdGhlIGNoYW5nZSBkb2Vzbid0IGdldAorCSAqIHJl ZmxlY3RlZC4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlcmUgaXMgYSBjb25zdGFudCBmbG93IG9m IHN0cmVhbWluZworCSAqIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBoYW5kbGVkIGJ5IHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMuCisJICoKKwkgKiBJdCBpcyBiZXR0ZXIgdG8gZG8gaXQgYmVmb3JlIHRo ZSBiZWxvdyBjaGVja3Mgc28gdGhhdCB0aGUgbGF0ZXN0IHZhbHVlcworCSAqIG9mIHN1YnNjcmlw dGlvbiBjYW4gYmUgdXNlZCBmb3IgdGhlIGNoZWNrcy4KKwkgKi8KKwltYXliZV9yZXJlYWRfc3Vi c2NyaXB0aW9uKCk7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBpZiB0aGUgc3Vic2NyaXB0aW9uIGlzIG5vdAorCSAqIHVzaW5nIHBhcmFsbGVsIHN0 cmVhbWluZyBtb2RlLCBvciBpZiB0aGUgcHVibGlzaGVyIGRvZXMgbm90IHN1cHBvcnQKKwkgKiBw YXJhbGxlbCBhcHBseS4KKwkgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxf YXBwbHkpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFy YWxsZWwgd29ya2VyIGlmIHVzZXIgaGFzIHNldCBza2lwbHNuIGFzIGl0J3MKKwkgKiBwb3NzaWJs ZSB0aGF0IHRoZXkgd2FudCB0byBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEZvcgor CSAqIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMsIHdlIG5lZWQgdG8gc2VyaWFsaXplIHRoZSB0cmFu c2FjdGlvbiB0byBhIGZpbGUKKwkgKiBzbyB0aGF0IHdlIGNhbiBnZXQgdGhlIGxhc3QgTFNOIG9m IHRoZSB0cmFuc2FjdGlvbiB0byBqdWRnZSB3aGV0aGVyIHRvCisJICogc2tpcCBiZWZvcmUgc3Rh cnRpbmcgdG8gYXBwbHkgdGhlIGNoYW5nZS4KKwkgKgorCSAqIE9uZSBtaWdodCB0aGluayB0aGF0 IHdlIGNvdWxkIGFsbG93IHBhcmFsbGVsaXNtIGlmIHRoZSBmaXJzdCBsc24gb2YgdGhlCisJICog dHJhbnNhY3Rpb24gaXMgZ3JlYXRlciB0aGFuIHNraXBsc24sIGJ1dCB3ZSBkb24ndCBzZW5kIGl0 IHdpdGggdGhlCisJICogU1RSRUFNIFNUQVJUIG1lc3NhZ2UsIGFuZCBpdCBkb2Vzbid0IHNlZW0g d29ydGggc2VuZGluZyB0aGUgZXh0cmEgZWlnaHQKKwkgKiBieXRlcyB3aXRoIHRoZSBTVFJFQU0g U1RBUlQgdG8gZW5hYmxlIHBhcmFsbGVsaXNtIGZvciB0aGlzIGNhc2UuCisJICovCisJaWYgKCFY TG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKKwkJcmV0dXJuIGZh bHNlOworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWlu ZyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIsIHdlIGNhbm5vdCBk ZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhCisJICogcmVsYXRpb24gdGhh dCBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdl c19mb3JfcmVsKSBhcyB3ZSB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdAorCSAq IHRpbWUuIFNvLCB3ZSBkb24ndCBzdGFydCB0aGUgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBp biB0aGlzIGNhc2UuCisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJu IGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTZXQgdXAgYSBkeW5hbWljIHNo YXJlZCBtZW1vcnkgc2VnbWVudC4KKyAqCisgKiBXZSBzZXQgdXAgYSBjb250cm9sIHJlZ2lvbiB0 aGF0IGNvbnRhaW5zIGEgZml4ZWQtc2l6ZSB3b3JrZXIgaW5mbworICogKFBhcmFsbGVsQXBwbHlX b3JrZXJTaGFyZWQpLCBhIG1lc3NhZ2UgcXVldWUsIGFuZCBhbiBlcnJvciBxdWV1ZS4KKyAqCisg KiBSZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KKyAqLworc3RhdGlj IGJvb2wKK3BhX3NldHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJ c2htX3RvY19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7 CisJc2htX3RvYyAgICAqdG9jOworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsK KwlzaG1fbXEJICAgKm1xOworCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsKKwlT aXplCQllcnJvcl9xdWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7CisKKwkvKgorCSAq IEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1 c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRs eS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJh dGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24g b2YgdGhlIGhlYWRlciwgYW5kIHR3byBvdGhlcgorCSAqIGtleXMgdG8gdHJhY2sgdGhlIGxvY2F0 aW9ucyBvZiB0aGUgbWVzc2FnZSBxdWV1ZSBhbmQgdGhlIGVycm9yIG1lc3NhZ2UKKwkgKiBxdWV1 ZS4KKwkgKi8KKwlzaG1fdG9jX2luaXRpYWxpemVfZXN0aW1hdG9yKCZlKTsKKwlzaG1fdG9jX2Vz dGltYXRlX2NodW5rKCZlLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCXNo bV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHF1ZXVlX3NpemUpOworCXNobV90b2NfZXN0aW1hdGVf Y2h1bmsoJmUsIGVycm9yX3F1ZXVlX3NpemUpOworCisJc2htX3RvY19lc3RpbWF0ZV9rZXlzKCZl LCAzKTsKKwlzZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhl IHNoYXJlZCBtZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMu ICovCisJc2VnID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJaWYgKCFz ZWcpCisJCXJldHVybiBmYWxzZTsKKworCXRvYyA9IHNobV90b2NfY3JlYXRlKFBHX0xPR0lDQUxf QVBQTFlfU0hNX01BR0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZyksCisJCQkJCQkgc2Vnc2l6 ZSk7CisKKwkvKiBTZXQgdXAgdGhlIGhlYWRlciByZWdpb24uICovCisJc2hhcmVkID0gc2htX3Rv Y19hbGxvY2F0ZSh0b2MsIHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSk7CisJU3Bp bkxvY2tJbml0KCZzaGFyZWQtPm11dGV4KTsKKworCXNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFM TEVMX1RSQU5TX1VOS05PV047CisJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5kaW5n X3N0cmVhbV9jb3VudCksIDApOworCXNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxpZFhM b2dSZWNQdHI7CisJc2hhcmVkLT5maWxlc2V0X3N0YXRlID0gRlNfRU1QVFk7CisKKwlzaG1fdG9j X2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIHNoYXJlZCk7CisKKwkvKiBT ZXQgdXAgbWVzc2FnZSBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVh dGUoc2htX3RvY19hbGxvY2F0ZSh0b2MsIHF1ZXVlX3NpemUpLCBxdWV1ZV9zaXplKTsKKwlzaG1f dG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9NUSwgbXEpOworCXNobV9tcV9zZXRf c2VuZGVyKG1xLCBNeVByb2MpOworCisJLyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+ bXFfaGFuZGxlID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFNldCB1cCBl cnJvciBxdWV1ZSBmb3IgdGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3Rv Y19hbGxvY2F0ZSh0b2MsIGVycm9yX3F1ZXVlX3NpemUpLAorCQkJCQkgICBlcnJvcl9xdWV1ZV9z aXplKTsKKwlzaG1fdG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVV RSwgbXEpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2gg dGhlIHF1ZXVlLiAqLworCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1x LCBzZWcsIE5VTEwpOworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdpbmZv LT5kc21fc2VnID0gc2VnOworCXdpbmZvLT5zaGFyZWQgPSBzaGFyZWQ7CisKKwlyZXR1cm4gdHJ1 ZTsKK30KKworLyoKKyAqIFRyeSB0byBnZXQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0 aGUgcG9vbC4gSWYgbm9uZSBpcyBhdmFpbGFibGUgdGhlbgorICogc3RhcnQgYSBuZXcgb25lLgor ICovCitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFfbGF1bmNoX3BhcmFsbGVs X3dvcmtlcih2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVu Y2hlZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJTGlzdENlbGwgICAqbGM7 CisKKwkvKiBUcnkgdG8gZ2V0IGFuIGF2YWlsYWJsZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJv bSB0aGUgd29ya2VyIHBvb2wuICovCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBv b2wpCisJeworCQl3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMp OworCisJCWlmICghd2luZm8tPmluX3VzZSkKKwkJCXJldHVybiB3aW5mbzsKKwl9CisKKwkvKgor CSAqIFN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKgorCSAqIFRoZSB3b3Jr ZXIgaW5mbyBjYW4gYmUgdXNlZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSB3b3JrZXIgcHJvY2Vz cywgc28KKwkgKiBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQgY29udGV4dC4KKwkgKi8KKwlvbGRj b250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwl3aW5mbyA9 IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBwYWxsb2MwKHNpemVvZihQYXJhbGxlbEFwcGx5 V29ya2VySW5mbykpOworCisJLyogU2V0dXAgc2hhcmVkIG1lbW9yeS4gKi8KKwlpZiAoIXBhX3Nl dHVwX2RzbSh3aW5mbykpCisJeworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7 CisJCXBmcmVlKHdpbmZvKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJbGF1bmNoZWQgPSBsb2dp Y2FscmVwX3dvcmtlcl9sYXVuY2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAorCQkJCQkJCQkJ CU15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJ CQkJCQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJSW52YWxpZE9p ZCwKKwkJCQkJCQkJCQlkc21fc2VnbWVudF9oYW5kbGUod2luZm8tPmRzbV9zZWcpKTsKKworCWlm IChsYXVuY2hlZCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gbGFwcGVuZChQYXJh bGxlbEFwcGx5V29ya2VyUG9vbCwgd2luZm8pOworCX0KKwllbHNlCisJeworCQlwYV9mcmVlX3dv cmtlcl9pbmZvKHdpbmZvKTsKKwkJd2luZm8gPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiB3aW5mbzsKK30KKworLyoKKyAqIEFsbG9j YXRlIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgc3Bl Y2lmaWVkIHhpZC4KKyAqCisgKiBXZSBmaXJzdCB0cnkgdG8gZ2V0IGFuIGF2YWlsYWJsZSB3b3Jr ZXIgZnJvbSB0aGUgcG9vbCwgaWYgYW55IGFuZCB0aGVuIHRyeQorICogdG8gbGF1bmNoIGEgbmV3 IHdvcmtlci4gT24gc3VjY2Vzc2Z1bCBhbGxvY2F0aW9uLCByZW1lbWJlciB0aGUgd29ya2VyCisg KiBpbmZvcm1hdGlvbiBpbiB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IHdlIGNhbiBnZXQgaXQgbGF0 ZXIgZm9yIHByb2Nlc3NpbmcgdGhlCisgKiBzdHJlYW1pbmcgY2hhbmdlcy4KKyAqLwordm9pZAor cGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOwor CVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJUGFyYWxsZWxBcHBseVdv cmtlckVudHJ5ICplbnRyeTsKKworCWlmICghcGFfY2FuX3N0YXJ0KCkpCisJCXJldHVybjsKKwor CS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg c3RhdGUgaGFzaHRhYmxlLiAqLworCWlmICghUGFyYWxsZWxBcHBseVR4bkhhc2gpCisJeworCQlI QVNIQ1RMCQljdGw7CisKKwkJTWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwkJY3RsLmtl eXNpemUgPSBzaXplb2YoVHJhbnNhY3Rpb25JZCk7CisJCWN0bC5lbnRyeXNpemUgPSBzaXplb2Yo UGFyYWxsZWxBcHBseVdvcmtlckVudHJ5KTsKKwkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7CisK KwkJUGFyYWxsZWxBcHBseVR4bkhhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2giLAorCQkJCQkJCQkJCSAgIDE2LCAmY3RsLAor CQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0K KworCXdpbmZvID0gcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtlcigpOworCWlmICghd2luZm8pCisJ CXJldHVybjsKKworCS8qIENyZWF0ZSBhbiBlbnRyeSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2Fj dGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlk LCBIQVNIX0VOVEVSLCAmZm91bmQpOworCWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhhc2gg dGFibGUgY29ycnVwdGVkIik7CisKKwkvKiBVcGRhdGUgdGhlIHRyYW5zYWN0aW9uIGluZm9ybWF0 aW9uIGluIHNoYXJlZCBtZW1vcnkuICovCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVk LT5tdXRleCk7CisJd2luZm8tPnNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VO S05PV047CisJd2luZm8tPnNoYXJlZC0+eGlkID0geGlkOworCVNwaW5Mb2NrUmVsZWFzZSgmd2lu Zm8tPnNoYXJlZC0+bXV0ZXgpOworCisJd2luZm8tPmluX3VzZSA9IHRydWU7CisJd2luZm8tPnNl cmlhbGl6ZV9jaGFuZ2VzID0gZmFsc2U7CisJZW50cnktPndpbmZvID0gd2luZm87CisJZW50cnkt PnhpZCA9IHhpZDsKK30KKworLyoKKyAqIEZpbmQgdGhlIGFzc2lnbmVkIHdvcmtlciBmb3IgdGhl IGdpdmVuIHRyYW5zYWN0aW9uLCBpZiBhbnkuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICoKK3BhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOwor CVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHhpZCkpCisJCXJldHVybiBOVUxMOworCisJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFz aCkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBSZXR1cm4gdGhlIGNhY2hlZCBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaWYgdmFsaWQuICovCisJaWYgKHN0cmVhbV9hcHBseV93b3JrZXIpCisJCXJldHVy biBzdHJlYW1fYXBwbHlfd29ya2VyOworCisJLyogRmluZCBhbiBlbnRyeSBmb3IgdGhlIHJlcXVl c3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlU eG5IYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCXsKKwkJLyog VGhlIHdvcmtlciBtdXN0IG5vdCBoYXZlIGV4aXRlZC4gICovCisJCUFzc2VydChlbnRyeS0+d2lu Zm8tPmluX3VzZSk7CisJCXJldHVybiBlbnRyeS0+d2luZm87CisJfQorCisJcmV0dXJuIE5VTEw7 Cit9CisKKy8qCisgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBmb3IgcmV1c2UuCisgKgor ICogVGhpcyByZW1vdmVzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZW50cnkgZnJvbSB0aGUg aGFzaCB0YWJsZSBzbyB0aGF0IGl0CisgKiBjYW4ndCBiZSB1c2VkLiBJZiB0aGVyZSBhcmUgZW5v dWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wsIGl0IHN0b3BzIHRoZSB3b3JrZXIKKyAqIGFuZCBmcmVl cyB0aGUgY29ycmVzcG9uZGluZyBpbmZvLiBPdGhlcndpc2UgaXQganVzdCBtYXJrcyB0aGUgd29y a2VyIGFzCisgKiBhdmFpbGFibGUgZm9yIHJldXNlLgorICoKKyAqIEZvciBtb3JlIGluZm9ybWF0 aW9uIGFib3V0IHRoZSB3b3JrZXIgcG9vbCwgc2VlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlLgor ICovCitzdGF0aWMgdm9pZAorcGFfZnJlZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KndpbmZvKQoreworCUFzc2VydCghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpOworCUFzc2Vy dCh3aW5mby0+aW5fdXNlKTsKKwlBc3NlcnQocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJl ZCkgPT0gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCisJaWYgKCFoYXNoX3NlYXJjaChQYXJh bGxlbEFwcGx5VHhuSGFzaCwgJndpbmZvLT5zaGFyZWQtPnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwp KQorCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCS8qCisJICogU3Rv cCB0aGUgd29ya2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4KKwkg KgorCSAqIFhYWCBBZGRpdGlvbmFsbHksIHdlIGFsc28gc3RvcCB0aGUgd29ya2VyIGlmIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyCisJICogc2VyaWFsaXplIHBhcnQgb2YgdGhlIHRyYW5zYWN0aW9u IGRhdGEgZHVlIHRvIGEgc2VuZCB0aW1lb3V0LiBUaGlzIGlzCisJICogYmVjYXVzZSB0aGUgbWVz c2FnZSBjb3VsZCBiZSBwYXJ0aWFsbHkgd3JpdHRlbiB0byB0aGUgcXVldWUgYW5kIHRoZXJlCisJ ICogaXMgbm8gd2F5IHRvIGNsZWFuIHRoZSBxdWV1ZSBvdGhlciB0aGFuIHJlc2VuZGluZyB0aGUg bWVzc2FnZSB1bnRpbCBpdAorCSAqIHN1Y2NlZWRzLiBJbnN0ZWFkIG9mIHRyeWluZyB0byBzZW5k IHRoZSBkYXRhIHdoaWNoIGFueXdheSB3b3VsZCBoYXZlCisJICogYmVlbiBzZXJpYWxpemVkIGFu ZCB0aGVuIGxldHRpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkZWFsIHdpdGgKKwkgKiB0 aGUgc3B1cmlvdXMgbWVzc2FnZSwgd2Ugc3RvcCB0aGUgd29ya2VyLgorCSAqLworCWlmICh3aW5m by0+c2VyaWFsaXplX2NoYW5nZXMgfHwKKwkJbGlzdF9sZW5ndGgoUGFyYWxsZWxBcHBseVdvcmtl clBvb2wpID4KKwkJKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g LyAyKSkKKwl7CisJCWludAkJCXNsb3Rfbm87CisJCXVpbnQxNgkJZ2VuZXJhdGlvbjsKKworCQlT cGluTG9ja0FjcXVpcmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKwkJZ2VuZXJhdGlvbiA9IHdp bmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisJCXNsb3Rfbm8gPSB3 aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworCQlTcGluTG9ja1JlbGVh c2UoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKworCQlsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9w KHNsb3Rfbm8sIGdlbmVyYXRpb24pOworCisJCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOwor CisJCXJldHVybjsKKwl9CisKKwl3aW5mby0+aW5fdXNlID0gZmFsc2U7CisJd2luZm8tPnNlcmlh bGl6ZV9jaGFuZ2VzID0gZmFsc2U7Cit9CisKKy8qCisgKiBGcmVlIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgaW5mb3JtYXRpb24gYW5kIHVubGluayB0aGUgZmlsZXMgd2l0aAorICogc2VyaWFs aXplZCBjaGFuZ2VzIGlmIGFueS4KKyAqLworc3RhdGljIHZvaWQKK3BhX2ZyZWVfd29ya2VyX2lu Zm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCUFzc2VydCh3aW5mbyk7CisK KwlpZiAod2luZm8tPm1xX2hhbmRsZSkKKwkJc2htX21xX2RldGFjaCh3aW5mby0+bXFfaGFuZGxl KTsKKworCWlmICh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKQorCQlzaG1fbXFfZGV0YWNoKHdpbmZv LT5lcnJvcl9tcV9oYW5kbGUpOworCisJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6 ZWQgY2hhbmdlcy4gKi8KKwlpZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQlzdHJlYW1f Y2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB3aW5mby0+c2hhcmVkLT54 aWQpOworCisJaWYgKHdpbmZvLT5kc21fc2VnKQorCQlkc21fZGV0YWNoKHdpbmZvLT5kc21fc2Vn KTsKKworCS8qIFJlbW92ZSBmcm9tIHRoZSB3b3JrZXIgcG9vbC4gKi8KKwlQYXJhbGxlbEFwcGx5 V29ya2VyUG9vbCA9IGxpc3RfZGVsZXRlX3B0cihQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCwgd2lu Zm8pOworCisJcGZyZWUod2luZm8pOworfQorCisvKgorICogRGV0YWNoIHRoZSBlcnJvciBxdWV1 ZSBmb3IgYWxsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8KK3ZvaWQKK3BhX2RldGFjaF9h bGxfZXJyb3JfbXEodm9pZCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIFBh cmFsbGVsQXBwbHlXb3JrZXJQb29sKQorCXsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJc2htX21x X2RldGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKwkJd2luZm8tPmVycm9yX21xX2hhbmRs ZSA9IE5VTEw7CisJfQorfQorCisvKgorICogQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBwZW5kaW5n IHNwb29sZWQgbWVzc2FnZXMuCisgKi8KK3N0YXRpYyBib29sCitwYV9oYXNfc3Bvb2xlZF9tZXNz YWdlX3BlbmRpbmcoKQoreworCVBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKwor CWZpbGVzZXRfc3RhdGUgPSBwYV9nZXRfZmlsZXNldF9zdGF0ZSgpOworCisJcmV0dXJuIChmaWxl c2V0X3N0YXRlICE9IEZTX0VNUFRZKTsKK30KKworLyoKKyAqIFJlcGxheSB0aGUgc3Bvb2xlZCBt ZXNzYWdlcyBvbmNlIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZAorICogc2Vy aWFsaXppbmcgY2hhbmdlcyB0byB0aGUgZmlsZS4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGlmIHRo ZXJlIGFyZW4ndCBhbnkgcGVuZGluZyBzcG9vbGVkIG1lc3NhZ2VzLCB0cnVlIG90aGVyd2lzZS4K KyAqLworc3RhdGljIGJvb2wKK3BhX3Byb2Nlc3Nfc3Bvb2xlZF9tZXNzYWdlc19pZl9yZXF1aXJl ZCh2b2lkKQoreworCVBhcnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKworCWZpbGVz ZXRfc3RhdGUgPSBwYV9nZXRfZmlsZXNldF9zdGF0ZSgpOworCisJLyoKKwkgKiBJZiB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciBpcyBidXN5IHNlcmlhbGl6aW5nIHRoZSBwYXJ0aWFsIGNoYW5nZXMg dGhlbgorCSAqIGFjcXVpcmUgdGhlIHN0cmVhbSBsb2NrIG5vdyBhbmQgd2FpdCBmb3IgdGhlIGxl YWRlciB3b3JrZXIgdG8gZmluaXNoCisJICogc2VyaWFsaXppbmcgdGhlIGNoYW5nZXMuIE90aGVy d2lzZSwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3b24ndCBnZXQKKwkgKiBhIGNoYW5jZSB0 byByZWNlaXZlIGEgU1RSRUFNX1NUT1AgKGFuZCBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jaykgdW50 aWwKKwkgKiB0aGUgbGVhZGVyIGhhZCBzZXJpYWxpemVkIGFsbCBjaGFuZ2VzIHdoaWNoIGNhbiBs ZWFkIHRvIHVuZGV0ZWN0ZWQKKwkgKiBkZWFkbG9jay4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGUg ZmlsZXNldCBzdGF0ZSBjYW4gYmUgRlNfU0VSSUFMSVpFX0RPTkUgb25jZSB0aGUgbGVhZGVyCisJ ICogd29ya2VyIGhhcyBmaW5pc2hlZCBzZXJpYWxpemluZyB0aGUgY2hhbmdlcy4KKwkgKi8KKwlp ZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19TRVJJQUxJWkVfSU5fUFJPR1JFU1MpCisJeworCQlwYV9s b2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCXBh X3VubG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOwor CisJCWZpbGVzZXRfc3RhdGUgPSBwYV9nZXRfZmlsZXNldF9zdGF0ZSgpOworCX0KKworCS8qCisJ ICogV2UgY2Fubm90IHJlYWQgdGhlIGZpbGUgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxlYWRlciBo YXMgc2VyaWFsaXplZCBhbGwKKwkgKiBjaGFuZ2VzIHRvIHRoZSBmaWxlIGJlY2F1c2UgdGhlcmUg bWF5IHN0aWxsIGJlIG1lc3NhZ2VzIGluIHRoZSBtZW1vcnkKKwkgKiBxdWV1ZS4gV2Ugd2lsbCBh cHBseSBhbGwgc3Bvb2xlZCBtZXNzYWdlcyB0aGUgbmV4dCB0aW1lIHdlIGNhbGwgdGhpcworCSAq IGZ1bmN0aW9uIGFuZCB0aGF0IHdpbGwgZW5zdXJlIHRoZXJlIGFyZSBubyBtZXNzYWdlcyBsZWZ0 IGluIHRoZSBtZW1vcnkKKwkgKiBxdWV1ZS4KKwkgKi8KKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBG U19TRVJJQUxJWkVfRE9ORSkKKwl7CisJCXBhX3NldF9maWxlc2V0X3N0YXRlKE15UGFyYWxsZWxT aGFyZWQsIEZTX1JFQURZKTsKKwl9CisJZWxzZSBpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19SRUFE WSkKKwl7CisJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoJk15UGFyYWxsZWxTaGFyZWQtPmZpbGVz ZXQsCisJCQkJCQkJICAgTXlQYXJhbGxlbFNoYXJlZC0+eGlkLAorCQkJCQkJCSAgIEludmFsaWRY TG9nUmVjUHRyKTsKKwkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgRlNf RU1QVFkpOworCX0KKworCXJldHVybiAoZmlsZXNldF9zdGF0ZSAhPSBGU19FTVBUWSk7Cit9CisK Ky8qCisgKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wIG9mIHBhcmFsbGVsIGFwcGx5 IHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK1Byb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0 cyh2b2lkKQoreworCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwlpZiAoU2h1dGRvd25SZXF1 ZXN0UGVuZGluZykKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJtc2coImxvZ2ljYWwgcmVw bGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhh cyBmaW5pc2hlZCIsCisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKworCQlwcm9jX2V4 aXQoMCk7CisJfQorCisJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCisJeworCQlDb25maWdSZWxv YWRQZW5kaW5nID0gZmFsc2U7CisJCVByb2Nlc3NDb25maWdGaWxlKFBHQ19TSUdIVVApOworCX0K K30KKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1haW4gbG9vcC4gKi8KK3N0YXRpYyB2b2lk CitMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQoreworCXNobV9t cV9yZXN1bHQgc2htcV9yZXM7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisJ TWVtb3J5Q29udGV4dCBvbGRjeHQgPSBDdXJyZW50TWVtb3J5Q29udGV4dDsKKworCS8qCisJICog SW5pdCB0aGUgQXBwbHlNZXNzYWdlQ29udGV4dCB3aGljaCB3ZSBjbGVhbiB1cCBhZnRlciBlYWNo IHJlcGxpY2F0aW9uCisJICogcHJvdG9jb2wgbWVzc2FnZS4KKwkgKi8KKwlBcHBseU1lc3NhZ2VD b250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJ CSJBcHBseU1lc3NhZ2VDb250ZXh0IiwKKwkJCQkJCQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0la RVMpOworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9yIGNvbnRleHQgY2FsbGJhY2suIEZpZWxk cyB3aWxsIGJlIGZpbGxlZCB3aGlsZSBhcHBseWluZworCSAqIGEgY2hhbmdlLgorCSAqLworCWVy cmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2su cHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sgPSAm ZXJyY2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJdm9pZAkgICAqZGF0YTsKKwkJU2l6ZQkJ bGVuOworCisJCVByb2Nlc3NQYXJhbGxlbEFwcGx5SW50ZXJydXB0cygpOworCisJCS8qIEVuc3Vy ZSB3ZSBhcmUgcmVhZGluZyB0aGUgZGF0YSBpbnRvIG91ciBtZW1vcnkgY29udGV4dC4gKi8KKwkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCXNobXFfcmVz ID0gc2htX21xX3JlY2VpdmUobXFoLCAmbGVuLCAmZGF0YSwgdHJ1ZSk7CisKKwkJaWYgKHNobXFf cmVzID09IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlTdHJpbmdJbmZvRGF0YSBzOworCQkJaW50 CQkJYzsKKworCQkJaWYgKGxlbiA9PSAwKQorCQkJCWVsb2coRVJST1IsICJpbnZhbGlkIG1lc3Nh Z2UgbGVuZ3RoIik7CisKKwkJCXMuY3Vyc29yID0gMDsKKwkJCXMubWF4bGVuID0gLTE7CisJCQlz LmRhdGEgPSAoY2hhciAqKSBkYXRhOworCQkJcy5sZW4gPSBsZW47CisKKwkJCS8qCisJCQkgKiBU aGUgZmlyc3QgYnl0ZSBvZiBtZXNzYWdlcyBzZW50IGZyb20gbGVhZGVyIGFwcGx5IHdvcmtlciB0 bworCQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBjYW4gb25seSBiZSAndycuCisJCQkgKi8K KwkJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJCWlmIChjICE9ICd3JykKKwkJCQllbG9nKEVS Uk9SLCAidW5leHBlY3RlZCBtZXNzYWdlIFwiJWNcIiIsIGMpOworCisJCQkvKgorCQkJICogSWdu b3JlIHN0YXRpc3RpY3MgZmllbGRzIHRoYXQgaGF2ZSBiZWVuIHVwZGF0ZWQgYnkgdGhlIGxlYWRl cgorCQkJICogYXBwbHkgd29ya2VyLgorCQkJICoKKwkJCSAqIFhYWCBXZSBjYW4gYXZvaWQgc2Vu ZGluZyB0aGUgc3RhdGlzdGljcyBmaWVsZHMgZnJvbSB0aGUgbGVhZGVyCisJCQkgKiBhcHBseSB3 b3JrZXIgYnV0IGZvciB0aGF0LCBpdCBuZWVkcyB0byByZWJ1aWxkIHRoZSBlbnRpcmUKKwkJCSAq IG1lc3NhZ2UgYnkgcmVtb3ZpbmcgdGhlc2UgZmllbGRzIHdoaWNoIGNvdWxkIGJlIG1vcmUgd29y ayB0aGFuCisJCQkgKiBzaW1wbHkgaWdub3JpbmcgdGhlc2UgZmllbGRzIGluIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXMuY3Vyc29yICs9IFNJWkVfU1RBVFNfTUVTU0FH RTsKKworCQkJYXBwbHlfZGlzcGF0Y2goJnMpOworCQl9CisJCWVsc2UgaWYgKHNobXFfcmVzID09 IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJeworCQkJLyogUmVwbGF5IHRoZSBjaGFuZ2VzIGZyb20g dGhlIGZpbGUsIGlmIGFueS4gKi8KKwkJCWlmICghcGFfcHJvY2Vzc19zcG9vbGVkX21lc3NhZ2Vz X2lmX3JlcXVpcmVkKCkpCisJCQl7CisJCQkJaW50CQkJcmM7CisKKwkJCQkvKiBXYWl0IGZvciBt b3JlIHdvcmsuICovCisJCQkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJCQkgICBXTF9M QVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgICAx MDAwTCwKKwkJCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTik7 CisKKwkJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7 CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQlBc3NlcnQoc2htcV9yZXMgPT0gU0hNX01RX0RF VEFDSEVEKTsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVj dGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKSkpOworCQl9CisK KwkJTWVtb3J5Q29udGV4dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQpOworCQlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwl9CisKKwkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3Rh Y2suICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworCisJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CisKKy8qCisgKiBNYWtlIHN1cmUgdGhl IGxlYWRlciBhcHBseSB3b3JrZXIgdHJpZXMgdG8gcmVhZCBmcm9tIG91ciBlcnJvciBxdWV1ZSBv bmUgbW9yZQorICogdGltZS4gVGhpcyBndWFyZHMgYWdhaW5zdCB0aGUgY2FzZSB3aGVyZSB3ZSBl eGl0IHVuY2xlYW5seSB3aXRob3V0IHNlbmRpbmcKKyAqIGFuIEVycm9yUmVzcG9uc2UsIGZvciBl eGFtcGxlIGJlY2F1c2Ugc29tZSBjb2RlIGNhbGxzIHByb2NfZXhpdCBkaXJlY3RseS4KKyAqLwor c3RhdGljIHZvaWQKK3BhX3NodXRkb3duKGludCBjb2RlLCBEYXR1bSBhcmcpCit7CisJU2VuZFBy b2NTaWduYWwoTXlMb2dpY2FsUmVwV29ya2VyLT5hcHBseV9sZWFkZXJfcGlkLAorCQkJCSAgIFBS T0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FHRSwKKwkJCQkgICBJbnZhbGlkQmFja2VuZElkKTsK KworCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKK30K KworLyoKKyAqIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBlbnRyeSBwb2ludC4KKyAqLwordm9pZAor UGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJUGFyYWxsZWxBcHBs eVdvcmtlclNoYXJlZCAqc2hhcmVkOworCWRzbV9oYW5kbGUJaGFuZGxlOworCWRzbV9zZWdtZW50 ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCXNobV9tcQkgICAqbXE7CisJc2htX21xX2hhbmRs ZSAqbXFoOworCXNobV9tcV9oYW5kbGUgKmVycm9yX21xaDsKKwlSZXBPcmlnaW5JZCBvcmlnaW5p ZDsKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJ CW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nLiAq LworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJcHFz aWduYWwoU0lHSU5ULCBTaWduYWxIYW5kbGVyRm9yU2h1dGRvd25SZXF1ZXN0KTsKKwlwcXNpZ25h bChTSUdURVJNLCBkaWUpOworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJ LyoKKwkgKiBBdHRhY2ggdG8gdGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGZvciB0 aGUgcGFyYWxsZWwgYXBwbHksIGFuZAorCSAqIGZpbmQgaXRzIHRhYmxlIG9mIGNvbnRlbnRzLgor CSAqCisJICogTGlrZSBwYXJhbGxlbCBxdWVyeSwgd2UgZG9uJ3QgbmVlZCByZXNvdXJjZSBvd25l ciBieSB0aGlzIHRpbWUuIFNlZQorCSAqIFBhcmFsbGVsV29ya2VyTWFpbi4KKwkgKi8KKwltZW1j cHkoJmhhbmRsZSwgTXlCZ3dvcmtlckVudHJ5LT5iZ3dfZXh0cmEsIHNpemVvZihkc21faGFuZGxl KSk7CisJc2VnID0gZHNtX2F0dGFjaChoYW5kbGUpOworCWlmICghc2VnKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RB VEUpLAorCQkJCSBlcnJtc2coInVuYWJsZSB0byBtYXAgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNl Z21lbnQiKSkpOworCisJdG9jID0gc2htX3RvY19hdHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1f TUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSk7CisJaWYgKCF0b2MpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9T VEFURSksCisJCQkJIGVycm1zZygiYmFkIG1hZ2ljIG51bWJlciBpbiBkeW5hbWljIHNoYXJlZCBt ZW1vcnkgc2VnbWVudCIpKSk7CisKKwliZWZvcmVfc2htZW1fZXhpdChwYV9zaHV0ZG93biwgUG9p bnRlckdldERhdHVtKHNlZykpOworCisJLyogTG9vayB1cCB0aGUgc2hhcmVkIGluZm9ybWF0aW9u LiAqLworCXNoYXJlZCA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NI QVJFRCwgZmFsc2UpOworCU15UGFyYWxsZWxTaGFyZWQgPSBzaGFyZWQ7CisKKwkvKgorCSAqIEF0 dGFjaCB0byB0aGUgbWVzc2FnZSBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRv YywgUEFSQUxMRUxfQVBQTFlfS0VZX01RLCBmYWxzZSk7CisJc2htX21xX3NldF9yZWNlaXZlciht cSwgTXlQcm9jKTsKKwltcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyoK KwkgKiBQcmltYXJ5IGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLiBOb3csIHdlIGNhbiBhdHRh Y2ggdG8gb3VyIHNsb3QuCisJICogVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciBkb2VzIG5vdCB3cml0ZSBkYXRhIHRvCisJICogdGhlIHVuaW5pdGlhbGl6ZWQg bWVtb3J5IHF1ZXVlLgorCSAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xv dCk7CisKKwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBh cmFsbGVsU2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uID0gTXlMb2dpY2FsUmVw V29ya2VyLT5nZW5lcmF0aW9uOworCU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2Vy X3Nsb3Rfbm8gPSB3b3JrZXJfc2xvdDsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTaGFy ZWQtPm11dGV4KTsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBlcnJvciBxdWV1ZS4KKwkgKi8K KwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVF LCBmYWxzZSk7CisJc2htX21xX3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisJZXJyb3JfbXFoID0g c2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCXBxX3JlZGlyZWN0X3RvX3NobV9tcShz ZWcsIGVycm9yX21xaCk7CisJcHFfc2V0X3BhcmFsbGVsX2xlYWRlcihNeUxvZ2ljYWxSZXBXb3Jr ZXItPmFwcGx5X2xlYWRlcl9waWQsCisJCQkJCQkgICBJbnZhbGlkQmFja2VuZElkKTsKKworCU15 TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxh c3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gMDsKKwor CUluaXRpYWxpemVBcHBseVdvcmtlcigpOworCisJLyogU2V0dXAgcmVwbGljYXRpb24gb3JpZ2lu IHRyYWNraW5nLiAqLworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJUmVwbGljYXRpb25P cmlnaW5OYW1lRm9yTG9naWNhbFJlcChNeVN1YnNjcmlwdGlvbi0+b2lkLCBJbnZhbGlkT2lkLAor CQkJCQkJCQkJICAgb3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdpbm5hbWUpKTsKKwlvcmlnaW5pZCA9 IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7CisKKwkvKgorCSAqIFRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgZG9lc24ndCBuZWVkIHRvIG1vbm9wb2xpemUgdGhpcyByZXBs aWNhdGlvbgorCSAqIG9yaWdpbiB3aGljaCB3YXMgYWxyZWFkeSBhY3F1aXJlZCBieSBpdHMgbGVh ZGVyIHByb2Nlc3MuCisJICovCisJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCBN eUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQpOworCXJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW4gPSBvcmlnaW5pZDsKKwlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCS8q CisJICogU2V0dXAgY2FsbGJhY2sgZm9yIHN5c2NhY2hlIHNvIHRoYXQgd2Uga25vdyB3aGVuIHNv bWV0aGluZyBjaGFuZ2VzIGluCisJICogdGhlIHN1YnNjcmlwdGlvbiByZWxhdGlvbiBzdGF0ZS4K KwkgKi8KKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhTVUJTQ1JJUFRJT05SRUxNQVAs CisJCQkJCQkJCSAgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcywKKwkJCQkJCQkJICAo RGF0dW0pIDApOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5hbWUp OworCisJTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKG1xaCk7CisKKwkvKgorCSAqIFRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgbXVzdCBub3QgZ2V0IGhlcmUgYmVjYXVzZSB0aGUgcGFyYWxsZWwg YXBwbHkKKwkgKiB3b3JrZXIgd2lsbCBvbmx5IHN0b3Agd2hlbiBpdCByZWNlaXZlcyBhIFNJR1RF Uk0gb3IgU0lHSU5UIGZyb20gdGhlCisJICogbGVhZGVyLCBvciB3aGVuIHRoZXJlIGlzIGFuIGVy cm9yLiBOb25lIG9mIHRoZXNlIGNhc2VzIHdpbGwgYWxsb3cgdGhlCisJICogY29kZSB0byByZWFj aCBoZXJlLgorCSAqLworCUFzc2VydChmYWxzZSk7Cit9CisKKy8qCisgKiBIYW5kbGUgcmVjZWlw dCBvZiBhbiBpbnRlcnJ1cHQgaW5kaWNhdGluZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtZXNz YWdlLgorICoKKyAqIE5vdGU6IHRoaXMgaXMgY2FsbGVkIHdpdGhpbiBhIHNpZ25hbCBoYW5kbGVy ISBBbGwgd2UgY2FuIGRvIGlzIHNldCBhIGZsYWcKKyAqIHRoYXQgd2lsbCBjYXVzZSB0aGUgbmV4 dCBDSEVDS19GT1JfSU5URVJSVVBUUygpIHRvIGludm9rZQorICogSGFuZGxlUGFyYWxsZWxBcHBs eU1lc3NhZ2VzKCkuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJy dXB0KHZvaWQpCit7CisJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJUGFyYWxsZWxBcHBseU1l c3NhZ2VQZW5kaW5nID0gdHJ1ZTsKKwlTZXRMYXRjaChNeUxhdGNoKTsKK30KKworLyoKKyAqIEhh bmRsZSBhIHNpbmdsZSBwcm90b2NvbCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gYSBzaW5nbGUgcGFy YWxsZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLworc3RhdGljIHZvaWQKK0hhbmRsZVBhcmFsbGVs QXBwbHlNZXNzYWdlKFN0cmluZ0luZm8gbXNnKQoreworCWNoYXIJCW1zZ3R5cGU7CisKKwltc2d0 eXBlID0gcHFfZ2V0bXNnYnl0ZShtc2cpOworCisJc3dpdGNoIChtc2d0eXBlKQorCXsKKwkJY2Fz ZSAnRSc6CQkJCS8qIEVycm9yUmVzcG9uc2UgKi8KKwkJCXsKKwkJCQlFcnJvckRhdGEJZWRhdGE7 CisKKwkJCQkvKiBQYXJzZSBFcnJvclJlc3BvbnNlLiAqLworCQkJCXBxX3BhcnNlX2Vycm9ybm90 aWNlKG1zZywgJmVkYXRhKTsKKworCQkJCS8qCisJCQkJICogSWYgZGVzaXJlZCwgYWRkIGEgY29u dGV4dCBsaW5lIHRvIHNob3cgdGhhdCB0aGlzIGlzIGEKKwkJCQkgKiBtZXNzYWdlIHByb3BhZ2F0 ZWQgZnJvbSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gT3RoZXJ3aXNlLAorCQkJCSAqIGl0IGNh biBzb21ldGltZXMgYmUgY29uZnVzaW5nIHRvIHVuZGVyc3RhbmQgd2hhdCBhY3R1YWxseQorCQkJ CSAqIGhhcHBlbmVkLgorCQkJCSAqLworCQkJCWlmIChlZGF0YS5jb250ZXh0KQorCQkJCQllZGF0 YS5jb250ZXh0ID0gcHNwcmludGYoIiVzXG4lcyIsIGVkYXRhLmNvbnRleHQsCisJCQkJCQkJCQkJ CSBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKwkJCQll bHNlCisJCQkJCWVkYXRhLmNvbnRleHQgPSBwc3RyZHVwKF8oImxvZ2ljYWwgcmVwbGljYXRpb24g cGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCisJCQkJLyoKKwkJCQkgKiBDb250ZXh0IGJleW9u ZCB0aGF0IHNob3VsZCB1c2UgdGhlIGVycm9yIGNvbnRleHQgY2FsbGJhY2tzCisJCQkJICogdGhh dCB3ZXJlIGluIGVmZmVjdCBpbiBMb2dpY2FsUmVwQXBwbHlMb29wKCkuCisJCQkJICovCisJCQkJ ZXJyb3JfY29udGV4dF9zdGFjayA9IGFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CisKKwkJCQkv KgorCQkJCSAqIFRoZSBhY3R1YWwgZXJyb3IgbXVzdCBoYXZlIGJlZW4gcmVwb3J0ZWQgYnkgdGhl IHBhcmFsbGVsCisJCQkJICogYXBwbHkgd29ya2VyLgorCQkJCSAqLworCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NU QVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkg d29ya2VyIGV4aXRlZCBkdWUgdG8gZXJyb3IiKSwKKwkJCQkJCSBlcnJjb250ZXh0KCIlcyIsIGVk YXRhLmNvbnRleHQpKSk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBEb24ndCBuZWVkIHRvIGRvIGFu eXRoaW5nIGFib3V0IE5vdGljZVJlc3BvbnNlIGFuZAorCQkJICogTm90aWZ5UmVzcG9uc2UgYXMg dGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGRvZXNuJ3QgbmVlZAorCQkJICogdG8gc2Vu ZCBtZXNzYWdlcyB0byB0aGUgY2xpZW50LgorCQkJICovCisJCWNhc2UgJ04nOgorCQljYXNlICdB JzoKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IG1lc3NhZ2UgdHlwZSByZWNlaXZlZCBmcm9tIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VyOiAlYyAobWVzc2FnZSBsZW5ndGggJWQgYnl0ZXMpIiwKKwkJCQkgbXNndHlw ZSwgbXNnLT5sZW4pOworCX0KK30KKworLyoKKyAqIEhhbmRsZSBhbnkgcXVldWVkIHByb3RvY29s IG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqLwordm9p ZAorSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7 CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJc3RhdGljIE1lbW9yeUNvbnRleHQgaHBh bV9jb250ZXh0ID0gTlVMTDsKKworCS8qCisJICogVGhpcyBpcyBpbnZva2VkIGZyb20gUHJvY2Vz c0ludGVycnVwdHMoKSwgYW5kIHNpbmNlIHNvbWUgb2YgdGhlCisJICogZnVuY3Rpb25zIGl0IGNh bGxzIGNvbnRhaW4gQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSwgdGhlcmUgaXMgYSBwb3RlbnRpYWwK KwkgKiBmb3IgcmVjdXJzaXZlIGNhbGxzIGlmIG1vcmUgc2lnbmFscyBhcmUgcmVjZWl2ZWQgd2hp bGUgdGhpcyBydW5zLiBJdCdzCisJICogdW5jbGVhciB0aGF0IHJlY3Vyc2l2ZSBlbnRyeSB3b3Vs ZCBiZSBzYWZlLCBhbmQgaXQgZG9lc24ndCBzZWVtIHVzZWZ1bAorCSAqIGV2ZW4gaWYgaXQgaXMg c2FmZSwgc28gbGV0J3MgYmxvY2sgaW50ZXJydXB0cyB1bnRpbCBkb25lLgorCSAqLworCUhPTERf SU5URVJSVVBUUygpOworCisJLyoKKwkgKiBNb3Jlb3ZlciwgQ3VycmVudE1lbW9yeUNvbnRleHQg bWlnaHQgYmUgcG9pbnRpbmcgYWxtb3N0IGFueXdoZXJlLiBXZQorCSAqIGRvbid0IHdhbnQgdG8g cmlzayBsZWFraW5nIGRhdGEgaW50byBsb25nLWxpdmVkIGNvbnRleHRzLCBzbyBsZXQncyBkbwor CSAqIG91ciB3b3JrIGhlcmUgaW4gYSBwcml2YXRlIGNvbnRleHQgdGhhdCB3ZSBjYW4gcmVzZXQg b24gZWFjaCB1c2UuCisJICovCisJaWYgKCFocGFtX2NvbnRleHQpCQkJLyogZmlyc3QgdGltZSB0 aHJvdWdoPyAqLworCQlocGFtX2NvbnRleHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoVG9wTWVt b3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJICJIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMiLAor CQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisJZWxzZQorCQlNZW1vcnlDb250 ZXh0UmVzZXQoaHBhbV9jb250ZXh0KTsKKworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oaHBhbV9jb250ZXh0KTsKKworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZh bHNlOworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCisJeworCQlzaG1f bXFfcmVzdWx0IHJlczsKKwkJU2l6ZQkJbmJ5dGVzOworCQl2b2lkCSAgICpkYXRhOworCQlQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikg bGZpcnN0KGxjKTsKKworCQkvKgorCQkgKiBUaGUgbGVhZGVyIHdpbGwgZGV0YWNoIGZyb20gdGhl IGVycm9yIHF1ZXVlIGFuZCBzZXQgaXQgdG8gTlVMTAorCQkgKiBiZWZvcmUgcHJlcGFyaW5nIHRv IHN0b3AgYWxsIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIHNvIHdlIGRvbid0CisJCSAqIG5lZWQg dG8gaGFuZGxlIGVycm9yIG1lc3NhZ2VzIGFueW1vcmUuIFNlZQorCQkgKiBsb2dpY2FscmVwX3dv cmtlcl9kZXRhY2guCisJCSAqLworCQlpZiAoIXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpCisJCQlj b250aW51ZTsKKworCQlyZXMgPSBzaG1fbXFfcmVjZWl2ZSh3aW5mby0+ZXJyb3JfbXFfaGFuZGxl LCAmbmJ5dGVzLCAmZGF0YSwgdHJ1ZSk7CisKKwkJaWYgKHJlcyA9PSBTSE1fTVFfV09VTERfQkxP Q0spCisJCQljb250aW51ZTsKKwkJZWxzZSBpZiAocmVzID09IFNITV9NUV9TVUNDRVNTKQorCQl7 CisJCQlTdHJpbmdJbmZvRGF0YSBtc2c7CisKKwkJCWluaXRTdHJpbmdJbmZvKCZtc2cpOworCQkJ YXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBuYnl0ZXMpOworCQkJSGFuZGxlUGFy YWxsZWxBcHBseU1lc3NhZ2UoJm1zZyk7CisJCQlwZnJlZShtc2cuZGF0YSk7CisJCX0KKwkJZWxz ZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lO X1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0 aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSkpOworCX0KKwor CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCS8qIE1pZ2h0IGFzIHdlbGwg Y2xlYXIgdGhlIGNvbnRleHQgb24gb3VyIHdheSBvdXQgKi8KKwlNZW1vcnlDb250ZXh0UmVzZXQo aHBhbV9jb250ZXh0KTsKKworCVJFU1VNRV9JTlRFUlJVUFRTKCk7Cit9CisKKy8qCisgKiBTZW5k IHRoZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHZpYSBzaGFy ZWQtbWVtb3J5CisgKiBxdWV1ZS4KKyAqCisgKiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBhdHRlbXB0 IHRvIHNlbmQgZGF0YSB2aWEgc2hhcmVkIG1lbW9yeSB0aW1lcyBvdXQsIHRydWUKKyAqIG90aGVy d2lzZS4KKyAqLworYm9vbAorcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCit7CisJaW50CQkJcmM7CisJc2ht X21xX3Jlc3VsdCByZXN1bHQ7CisJVGltZXN0YW1wVHogc3RhcnRUaW1lID0gMDsKKworCUFzc2Vy dCghSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCUFzc2VydCghd2luZm8tPnNlcmlhbGl6ZV9jaGFu Z2VzKTsKKworLyoKKyAqIFRoaXMgdGltZW91dCBpcyBhIGJpdCBhcmJpdHJhcnkgYnV0IHRlc3Rp bmcgcmV2ZWFsZWQgdGhhdCBpdCBpcyBzdWZmaWNpZW50CisgKiB0byBzZW5kIHRoZSBtZXNzYWdl IHVubGVzcyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIHdhaXRpbmcgb24gc29tZQorICog bG9jayBvciB0aGVyZSBpcyBhIHNlcmlvdXMgcmVzb3VyY2UgY3J1bmNoLiBTZWUgdGhlIGNvbW1l bnRzIGF0b3AgdGhpcyBmaWxlCisgKiB0byBrbm93IHdoeSB3ZSBhcmUgdXNpbmcgYSBub24tYmxv Y2tpbmcgd2F5IHRvIHNlbmQgdGhlIG1lc3NhZ2UuCisgKi8KKyNkZWZpbmUgU0hNX1NFTkRfUkVU UllfSU5URVJWQUxfTVMgMTAwMAorI2RlZmluZSBTSE1fU0VORF9USU1FT1VUX01TCQkoMTAwMDAg LSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUykKKworCWZvciAoOzspCisJeworCQlyZXN1bHQg PSBzaG1fbXFfc2VuZCh3aW5mby0+bXFfaGFuZGxlLCBuYnl0ZXMsIGRhdGEsIHRydWUsIHRydWUp OworCisJCWlmIChyZXN1bHQgPT0gU0hNX01RX1NVQ0NFU1MpCisJCQlyZXR1cm4gdHJ1ZTsKKwkJ ZWxzZSBpZiAocmVzdWx0ID09IFNITV9NUV9ERVRBQ0hFRCkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAor CQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBkYXRhIHRvIHNoYXJlZC1tZW1vcnkgcXVldWUi KSkpOworCisJCUFzc2VydChyZXN1bHQgPT0gU0hNX01RX1dPVUxEX0JMT0NLKTsKKworCQkvKiBX YWl0IGJlZm9yZSByZXRyeWluZy4gKi8KKwkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJ ICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJ CSAgIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TLAorCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lD QUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKworCQlpZiAocmMgJiBXTF9MQVRDSF9T RVQpCisJCXsKKwkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBU UygpOworCQl9CisKKwkJaWYgKHN0YXJ0VGltZSA9PSAwKQorCQkJc3RhcnRUaW1lID0gR2V0Q3Vy cmVudFRpbWVzdGFtcCgpOworCQllbHNlIGlmIChUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyhz dGFydFRpbWUsIEdldEN1cnJlbnRUaW1lc3RhbXAoKSwKKwkJCQkJCQkJCQkJU0hNX1NFTkRfVElN RU9VVF9NUykpCisJCXsKKwkJCWVyZXBvcnQoTE9HLAorCQkJCQkoZXJybXNnKCJsb2dpY2FsIHJl cGxpY2F0aW9uIGFwcGx5IHdvcmtlciB3aWxsIHNlcmlhbGl6ZSB0aGUgcmVtYWluaW5nIGNoYW5n ZXMgb2YgcmVtb3RlIHRyYW5zYWN0aW9uICV1IHRvIGEgZmlsZSIsCisJCQkJCQkJd2luZm8tPnNo YXJlZC0+eGlkKSkpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorfQorCisvKgorICogU3dp dGNoIHRvIFBBUlRJQUxfU0VSSUFMSVpFIG1vZGUgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9u IC0tIHRoaXMgbWVhbnMKKyAqIHRoYXQgdGhlIGN1cnJlbnQgZGF0YSBhbmQgYW55IHN1YnNlcXVl bnQgZGF0YSBmb3IgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlCisgKiBzZXJpYWxpemVkIHRvIGEg ZmlsZS4gVGhpcyBpcyBkb25lIHRvIHByZXZlbnQgcG9zc2libGUgZGVhZGxvY2tzIHdpdGgKKyAq IGFub3RoZXIgcGFyYWxsZWwgYXBwbHkgd29ya2VyIChyZWZlciB0byB0aGUgY29tbWVudHMgYXRv cCB0aGlzIGZpbGUpLgorICovCit2b2lkCitwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUo UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAorCQkJCQkJCSAgIGJvb2wgc3RyZWFtX2xv Y2tlZCkKK3sKKwkvKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY291bGQgYmUgc3R1 Y2sgZm9yIHNvbWUgcmVhc29uIChzYXkgd2FpdGluZworCSAqIG9uIHNvbWUgbG9jayBieSBvdGhl ciBiYWNrZW5kKSwgc28gc3RvcCB0cnlpbmcgdG8gc2VuZCBkYXRhIGRpcmVjdGx5IHRvCisJICog aXQgYW5kIHN0YXJ0IHNlcmlhbGl6aW5nIGRhdGEgdG8gdGhlIGZpbGUgaW5zdGVhZC4KKwkgKi8K Kwl3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSB0cnVlOworCisJLyogSW5pdGlhbGl6ZSB0aGUg c3RyZWFtIGZpbGVzZXQuICovCisJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHdpbmZvLT5zaGFyZWQt PnhpZCwgdHJ1ZSk7CisKKwkvKgorCSAqIEFjcXVpcmVzIHRoZSBzdHJlYW0gbG9jayBpZiBub3Qg YWxyZWFkeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIg d2lsbCB3YWl0IGZvciB0aGUgbGVhZGVyIHRvIHJlbGVhc2UgdGhlIHN0cmVhbSBsb2NrIHVudGls CisJICogdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uCisJICovCisJaWYgKCFzdHJlYW1fbG9j a2VkKQorCQlwYV9sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2 ZUxvY2spOworCisJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VSSUFM SVpFX0lOX1BST0dSRVNTKTsKK30KKworLyoKKyAqIFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlcidzIHRyYW5zYWN0aW9uIHN0YXRlIGhhcyByZWFjaGVkIG9yCisgKiBleGNlZWRl ZCB0aGUgZ2l2ZW4geGFjdF9zdGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3dhaXRfZm9yX3hh Y3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLAorCQkJCQkgICBQYXJhbGxl bFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlmb3IgKDs7KQorCXsKKwkJLyoKKwkJICogU3Rv cCBpZiB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaGFzIHJlYWNoZWQgb3IgZXhjZWVkZWQgdGhlIGdp dmVuCisJCSAqIHhhY3Rfc3RhdGUuCisJCSAqLworCQlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2lu Zm8tPnNoYXJlZCkgPj0geGFjdF9zdGF0ZSkKKwkJCWJyZWFrOworCisJCS8qIFdhaXQgdG8gYmUg c2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkgV0xfTEFU Q0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgMTBMLAor CQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOwor CisJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNo KE15TGF0Y2gpOworCisJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3 ZSB3ZXJlIHdhaXRpbmcuICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisv KgorICogV2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJ3MgdHJhbnNhY3Rpb24g ZmluaXNoZXMuCisgKi8KK3N0YXRpYyB2b2lkCitwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaChQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJLyoKKwkgKiBXYWl0IHVudGlsIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgc2V0IHRoZSBzdGF0ZSB0bworCSAqIFBBUkFMTEVMX1RSQU5T X1NUQVJURUQgd2hpY2ggbWVhbnMgaXQgaGFzIGFjcXVpcmVkIHRoZSB0cmFuc2FjdGlvbgorCSAq IGxvY2suIFRoaXMgaXMgdG8gcHJldmVudCBsZWFkZXIgYXBwbHkgd29ya2VyIGZyb20gYWNxdWly aW5nIHRoZQorCSAqIHRyYW5zYWN0aW9uIGxvY2sgZWFybGllciB0aGFuIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCisJICovCisJcGFfd2FpdF9mb3JfeGFjdF9zdGF0ZSh3aW5mbywgUEFSQUxM RUxfVFJBTlNfU1RBUlRFRCk7CisKKwkvKgorCSAqIFdhaXQgZm9yIHRoZSB0cmFuc2FjdGlvbiBs b2NrIHRvIGJlIHJlbGVhc2VkLiBUaGlzIGlzIHJlcXVpcmVkIHRvCisJICogZGV0ZWN0IGRlYWRs b2NrIGFtb25nIGxlYWRlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gUmVmZXIgdG8gdGhl CisJICogY29tbWVudHMgYXRvcCB0aGlzIGZpbGUuCisJICovCisJcGFfbG9ja190cmFuc2FjdGlv bih3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJcGFfdW5sb2NrX3RyYW5z YWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qCisJICog Q2hlY2sgaWYgdGhlIHN0YXRlIGJlY29tZXMgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQgaW4gY2Fz ZSB0aGUgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNo YW5nZXMgY2F1c2luZyB0aGUgbG9jayB0byBiZQorCSAqIHJlbGVhc2VkLgorCSAqLworCWlmIChw YV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hF RCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhl IGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpKTsKK30KKworLyoK KyAqIFNldCB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgZm9yIGEgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkg d29ya2VyLgorICovCit2b2lkCitwYV9zZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2Vy U2hhcmVkICp3c2hhcmVkLAorCQkJCSAgUGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3RhdGUpCit7 CisJU3BpbkxvY2tBY3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJd3NoYXJlZC0+eGFjdF9zdGF0 ZSA9IHhhY3Rfc3RhdGU7CisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7Cit9CisK Ky8qCisgKiBHZXQgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGZvciBhIGdpdmVuIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKyAqLworc3RhdGljIFBhcmFsbGVsVHJhbnNTdGF0ZQorcGFfZ2V0X3hhY3Rf c3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCkKK3sKKwlQYXJhbGxlbFRy YW5zU3RhdGUgeGFjdF9zdGF0ZTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgp OworCXhhY3Rfc3RhdGUgPSB3c2hhcmVkLT54YWN0X3N0YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgm d3NoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJuIHhhY3Rfc3RhdGU7Cit9CisKKy8qCisgKiBDYWNo ZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uLgorICovCit2b2lkCitwYV9z ZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7 CisJc3RyZWFtX2FwcGx5X3dvcmtlciA9IHdpbmZvOworfQorCisvKgorICogRm9ybSBhIHVuaXF1 ZSBzYXZlcG9pbnQgbmFtZSBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKyAqCisgKiBO b3RlIHRoYXQgZGlmZmVyZW50IHN1YnNjcmlwdGlvbnMgZm9yIHB1YmxpY2F0aW9ucyBvbiBkaWZm ZXJlbnQgbm9kZXMgY2FuCisgKiByZWNlaXZlIHNhbWUgcmVtb3RlIHhpZCwgc28gd2UgbmVlZCB0 byB1c2Ugc3Vic2NyaXB0aW9uIGlkIGFsb25nIHdpdGggaXQuCisgKgorICogUmV0dXJucyB0aGUg bmFtZSBpbiB0aGUgc3VwcGxpZWQgYnVmZmVyLgorICovCitzdGF0aWMgdm9pZAorcGFfc2F2ZXBv aW50X25hbWUoT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKnNwbmFtZSwgU2l6 ZSBzenNwKQoreworCXNucHJpbnRmKHNwbmFtZSwgc3pzcCwgInBnX3NwXyV1XyV1Iiwgc3Vib2lk LCB4aWQpOworfQorCisvKgorICogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3QgaW4g cGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIG5lZWRlZC4KKyAqCisgKiBUaGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGNhbiBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1YnRyYW5zYWN0aW9uIHdhcworICog c3RhcnRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNoYW5nZSBhcnJpdmVkIHdpdGggYSBkaWZm ZXJlbnQgeGlkLiBJbiB0aGF0CisgKiBjYXNlIGRlZmluZSBhIG5hbWVkIHNhdmVwb2ludCwgc28g dGhhdCB3ZSBhcmUgYWJsZSB0byByb2xsYmFjayB0byBpdAorICogaWYgcmVxdWlyZWQuCisgKi8K K3ZvaWQKK3BhX3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsIFRyYW5z YWN0aW9uSWQgdG9wX3hpZCkKK3sKKwlpZiAoY3VycmVudF94aWQgIT0gdG9wX3hpZCAmJgorCQkh bGlzdF9tZW1iZXJfeGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCkpCisJeworCQlNZW1vcnlD b250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJc3BuYW1lW05BTUVEQVRBTEVOXTsKKworCQlwYV9zYXZl cG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBjdXJyZW50X3hpZCwKKwkJCQkJCSAgc3Bu YW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJkZWZpbmluZyBzYXZlcG9p bnQgJXMgaW4gbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLCBzcG5h bWUpOworCisJCS8qIFdlIG11c3QgYmUgaW4gdHJhbnNhY3Rpb24gYmxvY2sgdG8gZGVmaW5lIHRo ZSBTQVZFUE9JTlQuICovCisJCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCWlm ICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsK KworCQkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKKwkJfQorCisJCURlZmluZVNhdmVwb2ludChzcG5hbWUpOworCisJCS8qCisJCSAqIENv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCBpcyBuZWVkZWQgdG8gc3RhcnQgYSBzdWJ0cmFuc2FjdGlv biBhZnRlcgorCQkgKiBpc3N1aW5nIGEgU0FWRVBPSU5UIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJs b2NrIChzZWUKKwkJICogU3RhcnRTdWJUcmFuc2FjdGlvbigpKS4KKwkJICovCisJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhU b3BUcmFuc2FjdGlvbkNvbnRleHQpOworCQlzdWJ4YWN0bGlzdCA9IGxhcHBlbmRfeGlkKHN1Ynhh Y3RsaXN0LCBjdXJyZW50X3hpZCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwor CX0KK30KKworLyogUmVzZXQgdGhlIGxpc3QgdGhhdCBtYWludGFpbnMgc3VidHJhbnNhY3Rpb25z LiAqLwordm9pZAorcGFfcmVzZXRfc3VidHJhbnModm9pZCkKK3sKKwkvKgorCSAqIFdlIGRvbid0 IG5lZWQgdG8gZnJlZSB0aGlzIGV4cGxpY2l0bHkgYXMgdGhlIGFsbG9jYXRlZCBtZW1vcnkgd2ls bCBiZQorCSAqIGZyZWVkIGF0IHRoZSB0cmFuc2FjdGlvbiBlbmQuCisJICovCisJc3VieGFjdGxp c3QgPSBOSUw7Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0 aGUgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgaW4gYSBwYXJhbGxlbAorICogYXBwbHkgd29ya2Vy LgorICovCit2b2lkCitwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAq YWJvcnRfZGF0YSkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZCA9IGFib3J0X2RhdGEtPnhpZDsKKwlU cmFuc2FjdGlvbklkIHN1YnhpZCA9IGFib3J0X2RhdGEtPnN1YnhpZDsKKworCS8qCisJICogVXBk YXRlIG9yaWdpbiBzdGF0ZSBzbyB3ZSBjYW4gcmVzdGFydCBzdHJlYW1pbmcgZnJvbSBjb3JyZWN0 IHBvc2l0aW9uCisJICogaW4gY2FzZSBvZiBjcmFzaC4KKwkgKi8KKwlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luX2xzbiA9IGFib3J0X2RhdGEtPmFib3J0X2xzbjsKKwlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luX3RpbWVzdGFtcCA9IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7CisKKwkvKgorCSAq IElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3Bs ZXZlbCB4YWN0LCBzbworCSAqIGp1c3QgZnJlZSB0aGUgc3VieGFjdGxpc3QuCisJICovCisJaWYg KHN1YnhpZCA9PSB4aWQpCisJeworCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVk LCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisKKwkJLyoKKwkJICogUmVsZWFzZSB0aGUgbG9j ayBhcyB3ZSBtaWdodCBiZSBwcm9jZXNzaW5nIGFuIGVtcHR5IHN0cmVhbWluZworCQkgKiB0cmFu c2FjdGlvbiBpbiB3aGljaCBjYXNlIHRoZSBsb2NrIHdvbid0IGJlIHJlbGVhc2VkIGR1cmluZwor CQkgKiB0cmFuc2FjdGlvbiByb2xsYmFjay4KKwkJICoKKwkJICogTm90ZSB0aGF0IGl0J3Mgb2sg dG8gcmVsZWFzZSB0aGUgdHJhbnNhY3Rpb24gbG9jayBiZWZvcmUgYWJvcnRpbmcKKwkJICogdGhl IHRyYW5zYWN0aW9uIGJlY2F1c2UgZXZlbiBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGRp ZXMgZHVlCisJCSAqIHRvIGNyYXNoIG9yIHNvbWUgb3RoZXIgcmVhc29uLCBzdWNoIGEgdHJhbnNh Y3Rpb24gd291bGQgc3RpbGwgYmUKKwkJICogY29uc2lkZXJlZCBhYm9ydGVkIGFueXdheS4KKwkJ ICovCisJCXBhX3VubG9ja190cmFuc2FjdGlvbih4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOwor CisJCUFib3J0Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9j aygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCX0KKwllbHNlCisJeworCQkv KiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJvbGxiYWNrIHRvIHRoZSBzYXZlcG9pbnQuICovCisJ CWludAkJCWk7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFUQUxFTl07CisKKwkJcGFfc2F2ZXBvaW50 X25hbWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgc3VieGlkLCBzcG5hbWUsIHNpemVvZihzcG5hbWUp KTsKKworCQllbG9nKERFQlVHMSwgInJvbGxpbmcgYmFjayB0byBzYXZlcG9pbnQgJXMgaW4gbG9n aWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLCBzcG5hbWUpOworCisJCS8q CisJCSAqIFNlYXJjaCB0aGUgc3VieGFjdGxpc3QsIGRldGVybWluZSB0aGUgb2Zmc2V0IHRyYWNr ZWQgZm9yIHRoZQorCQkgKiBzdWJ4YWN0LCBhbmQgdHJ1bmNhdGUgdGhlIGxpc3QuCisJCSAqCisJ CSAqIE5vdGUgdGhhdCBmb3IgYW4gZW1wdHkgc3ViLXRyYW5zYWN0aW9uIHdlIHdvbid0IGZpbmQg dGhlIHN1YnhpZAorCQkgKiBoZXJlLgorCQkgKi8KKwkJZm9yIChpID0gbGlzdF9sZW5ndGgoc3Vi eGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0pCisJCXsKKwkJCVRyYW5zYWN0aW9uSWQgeGlkX3Rt cCA9IGxmaXJzdF94aWQobGlzdF9udGhfY2VsbChzdWJ4YWN0bGlzdCwgaSkpOworCisJCQlpZiAo eGlkX3RtcCA9PSBzdWJ4aWQpCisJCQl7CisJCQkJUm9sbGJhY2tUb1NhdmVwb2ludChzcG5hbWUp OworCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCXN1YnhhY3RsaXN0ID0gbGlz dF90cnVuY2F0ZShzdWJ4YWN0bGlzdCwgaSk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9Cit9 CisKKy8qCisgKiBTZXQgdGhlIGZpbGVzZXQgc3RhdGUgZm9yIGEgcGFydGljdWxhciBwYXJhbGxl bCBhcHBseSB3b3JrZXIuIFRoZSBmaWxlc2V0CisgKiB3aWxsIGJlIHNldCBvbmNlIHRoZSBsZWFk ZXIgd29ya2VyIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8gdGhlIGZpbGUKKyAqIHNvIHRoYXQg aXQgY2FuIGJlIHVzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2b2lkCitwYV9z ZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJ CQkgUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlKQoreworCVNwaW5Mb2NrQWNxdWly ZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPmZpbGVzZXRfc3RhdGUgPSBmaWxlc2V0X3N0 YXRlOworCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpFX0RPTkUpCisJeworCQlB c3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKKwkJQXNzZXJ0KE15TG9naWNhbFJlcFdv cmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQl3c2hhcmVkLT5maWxlc2V0ID0gKk15TG9naWNhbFJl cFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQ7CisJfQorCisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVk LT5tdXRleCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIGZpbGVzZXQgc3RhdGUgZm9yIHRoZSBjdXJy ZW50IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworc3RhdGljIFBhcnRpYWxGaWxlU2V0U3Rh dGUKK3BhX2dldF9maWxlc2V0X3N0YXRlKHZvaWQpCit7CisJUGFydGlhbEZpbGVTZXRTdGF0ZSBm aWxlc2V0X3N0YXRlOworCisJQXNzZXJ0KGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKTsKKwor CVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCWZpbGVzZXRfc3Rh dGUgPSBNeVBhcmFsbGVsU2hhcmVkLT5maWxlc2V0X3N0YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgm TXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJuIGZpbGVzZXRfc3RhdGU7Cit9CisK Ky8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUgYW5kIHJlbGVhc2UgYSBsb2NrIGZv ciBlYWNoIHN0cmVhbSBibG9jay4KKyAqCisgKiBTZXQgbG9ja3RhZ19maWVsZDQgdG8gUEFSQUxM RUxfQVBQTFlfTE9DS19TVFJFQU0gdG8gaW5kaWNhdGUgdGhhdCBpdCdzIGEKKyAqIHN0cmVhbSBs b2NrLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZSB0byBzZWUg aG93IHRoZSBzdHJlYW0gbG9jayBpcyB1c2VkLgorICovCit2b2lkCitwYV9sb2NrX3N0cmVhbShU cmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJTG9ja0FwcGx5VHJhbnNh Y3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJ ICAgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0sIGxvY2ttb2RlKTsKK30KKwordm9pZAorcGFf dW5sb2NrX3N0cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJ VW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgeGlkLAorCQkJCQkJCQkJIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNLCBsb2NrbW9kZSk7 Cit9CisKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUgYW5kIHJlbGVhc2UgYSBs b2NrIGZvciBlYWNoIGxvY2FsIHRyYW5zYWN0aW9uCisgKiBhcHBseS4KKyAqCisgKiBTZXQgbG9j a3RhZ19maWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNUIHRvIGluZGljYXRlIHRoYXQg aXQncyBhCisgKiB0cmFuc2FjdGlvbiBsb2NrLgorICoKKyAqIE5vdGUgdGhhdCBhbGwgdGhlIGNh bGxlcnMgbXVzdCBwYXNzIGEgcmVtb3RlIHRyYW5zYWN0aW9uIElEIGluc3RlYWQgb2YgYQorICog bG9jYWwgdHJhbnNhY3Rpb24gSUQgYXMgeGlkLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGxvY2FsIHRy YW5zYWN0aW9uIElEIHdpbGwKKyAqIG9ubHkgYmUgYXNzaWduZWQgd2hpbGUgYXBwbHlpbmcgdGhl IGZpcnN0IGNoYW5nZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgYnV0CisgKiBpdCdzIHBvc3NpYmxl IHRoYXQgdGhlIGZpcnN0IGNoYW5nZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGJs b2NrZWQKKyAqIGJ5IGEgY29uY3VycmVudGx5IGV4ZWN1dGluZyB0cmFuc2FjdGlvbiBpbiBhbm90 aGVyIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKKyAqIGNhbiBvbmx5IGNvbW11bmljYXRlIHRo ZSBsb2NhbCB0cmFuc2FjdGlvbiBpZCB0byB0aGUgbGVhZGVyIGFmdGVyIGFwcGx5aW5nCisgKiB0 aGUgZmlyc3QgY2hhbmdlIHNvIGl0IHdvbid0IGJlIGFibGUgdG8gd2FpdCBhZnRlciBzZW5kaW5n IHRoZSB4YWN0IGZpbmlzaAorICogY29tbWFuZCB1c2luZyB0aGlzIGxvY2suCisgKgorICogUmVm ZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AgdGhpcyBmaWxlIHRvIHNlZSBob3cgdGhlIHRyYW5zYWN0 aW9uIGxvY2sgaXMKKyAqIHVzZWQuCisgKi8KK3ZvaWQKK3BhX2xvY2tfdHJhbnNhY3Rpb24oVHJh bnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxvY2tBcHBseVRyYW5zYWN0 aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCSAg IFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVCwgbG9ja21vZGUpOworfQorCit2b2lkCitwYV91bmxv Y2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQorewor CVVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQsIHhpZCwKKwkJCQkJCQkJCSBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QsIGxvY2ttb2RlKTsK K30KKworLyoKKyAqIERlY3JlbWVudCB0aGUgbnVtYmVyIG9mIHBlbmRpbmcgc3RyZWFtaW5nIGJs b2NrcyBhbmQgd2FpdCBvbiB0aGUgc3RyZWFtIGxvY2sKKyAqIGlmIHRoZXJlIGlzIG5vIHBlbmRp bmcgYmxvY2sgYXZhaWxhYmxlLgorICovCit2b2lkCitwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9i bG9jayh2b2lkKQoreworCUFzc2VydChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSk7CisKKwkv KgorCSAqIEl0IGlzIG9ubHkgcG9zc2libGUgdG8gbm90IGhhdmUgYW55IHBlbmRpbmcgc3RyZWFt IGNodW5rcyB3aGVuIHdlIGFyZQorCSAqIGFwcGx5aW5nIHNwb29sZWQgbWVzc2FnZXMuCisJICov CisJaWYgKHBnX2F0b21pY19yZWFkX3UzMigmTXlQYXJhbGxlbFNoYXJlZC0+cGVuZGluZ19zdHJl YW1fY291bnQpID09IDApCisJeworCQlpZiAocGFfaGFzX3Nwb29sZWRfbWVzc2FnZV9wZW5kaW5n KCkpCisJCQlyZXR1cm47CisKKwkJZWxvZyhFUlJPUiwgImludmFsaWQgcGVuZGluZyBzdHJlYW1p bmcgY2h1bmsgMCIpOworCX0KKworCWlmIChwZ19hdG9taWNfc3ViX2ZldGNoX3UzMigmTXlQYXJh bGxlbFNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQsIDEpID09IDApCisJeworCQlwYV9sb2Nr X3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCXBhX3Vu bG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCX0K K30KKworLyoKKyAqIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24g aW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX3hhY3RfZmluaXNoKFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgWExvZ1JlY1B0ciByZW1vdGVfbHNuKQorewor CUFzc2VydChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpOworCisJLyoKKwkgKiBVbmxvY2sgdGhl IHNoYXJlZCBvYmplY3QgbG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4KKwkg KiBjb250aW51ZSB0byByZWNlaXZlIGFuZCBhcHBseSBjaGFuZ2VzLgorCSAqLworCXBhX3VubG9j a19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCS8q CisJICogV2FpdCBmb3IgdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0 byBtYWludGFpbiBjb21taXQKKwkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRv IHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkgKiBkZWFkbG9ja3MuCisJICovCisJcGFf d2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlk KHJlbW90ZV9sc24pKQorCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihyZW1vdGVfbHNuLCB3aW5mby0+ c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQpOworCisJcGFfZnJlZV93b3JrZXIod2luZm8pOworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggYzNiYzhlYy4uYTUz ZTIzYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC04MjIs MTAgKzgyMiwxMSBAQCBEZWNvZGVBYm9ydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhM b2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAkJZm9yIChpID0gMDsgaSA8IHBhcnNlZC0+bnN1YnhhY3Rz OyBpKyspCiAJCXsKIAkJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+ c3VieGFjdHNbaV0sCi0JCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCQkJCQkJ ICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwgYWJvcnRfdGltZSk7CiAJCX0KIAotCQlSZW9yZGVy QnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIpOwor CQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+cmVjb3JkLT5FbmRS ZWNQdHIsCisJCQkJCQkgICBhYm9ydF90aW1lKTsKIAl9CiAKIAkvKiB1cGRhdGUgdGhlIGRlY29k aW5nIHN0YXRzICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMK aW5kZXggYTY5ZTM3MS4uYWZiN2FjZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbGF1bmNoZXIuYwpAQCAtNTUsNiArNTUsNyBAQAogLyogR1VDIHZhcmlhYmxlcyAqLwogaW50 CQkJbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQ7CiBpbnQJCQltYXhfc3luY193 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyOworaW50CQkJbWF4X3BhcmFsbGVsX2FwcGx5X3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNh bFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTc0LDYgKzc1LDcgQEAgc3RhdGljIHZvaWQgbG9naWNh bHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBs b2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9p ZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVw X3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CitzdGF0aWMgaW50CWxv Z2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CiAKIHN0YXRpYyBib29sIG9uX2Nv bW1pdF9sYXVuY2hlcl93YWtldXAgPSBmYWxzZTsKIApAQCAtMTUyLDggKzE1NCwxMCBAQCBnZXRf c3Vic2NyaXB0aW9uX2xpc3Qodm9pZCkKICAqCiAgKiBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBj bGVhbmluZyB1cCB0aGUgc2hhcmVkIG1lbW9yeSBpbiBjYXNlIHRoZSB3b3JrZXIKICAqIGZhaWxz IHRvIGF0dGFjaC4KKyAqCisgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGF0dGFjaCB3YXMgc3VjY2Vz c2Z1bC4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBXYWl0Rm9yUmVwbGljYXRpb25X b3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJCQkJCSAgIHVpbnQxNiBn ZW5lcmF0aW9uLAogCQkJCQkJCSAgIEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKQEAg LTE2OSwxMSArMTczLDExIEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXIsCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9j aywgTFdfU0hBUkVEKTsKIAotCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQ7 IG5vIG5lZWQgdG8gZG8gYW55dGhpbmcuICovCisJCS8qIFdvcmtlciBlaXRoZXIgZGllZCBvciBo YXMgc3RhcnRlZC4gUmV0dXJuIGZhbHNlIGlmIGRpZWQuICovCiAJCWlmICghd29ya2VyLT5pbl91 c2UgfHwgd29ya2VyLT5wcm9jKQogCQl7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiB3b3JrZXItPmluX3VzZTsKIAkJfQogCiAJ CUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwpAQCAtMTg4LDcgKzE5Miw3IEBA IFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIs CiAJCQlpZiAoZ2VuZXJhdGlvbiA9PSB3b3JrZXItPmdlbmVyYXRpb24pCiAJCQkJbG9naWNhbHJl cF93b3JrZXJfY2xlYW51cCh3b3JrZXIpOwogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29y a2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAogCQkvKgpAQCAt MjEwLDYgKzIxNCw4IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVw V29ya2VyICp3b3JrZXIsCiAvKgogICogV2Fsa3MgdGhlIHdvcmtlcnMgYXJyYXkgYW5kIHNlYXJj aGVzIGZvciBvbmUgdGhhdCBtYXRjaGVzIGdpdmVuCiAgKiBzdWJzY3JpcHRpb24gaWQgYW5kIHJl bGlkLgorICoKKyAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgb3IgdGFibGUgc3luYyB3b3JrZXIuCiAgKi8KIExvZ2ljYWxSZXBXb3JrZXIgKgogbG9n aWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBvbmx5X3J1bm5p bmcpCkBAIC0yMjQsNiArMjMwLDEwIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1Ymlk LCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9naWNhbFJlcFdvcmtlciAq dyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qIFNraXAgcGFyYWxsZWwgYXBw bHkgd29ya2Vycy4gKi8KKwkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCWNvbnRp bnVlOworCiAJCWlmICh3LT5pbl91c2UgJiYgdy0+c3ViaWQgPT0gc3ViaWQgJiYgdy0+cmVsaWQg PT0gcmVsaWQgJiYKIAkJCSghb25seV9ydW5uaW5nIHx8IHctPnByb2MpKQogCQl7CkBAIC0yNjAs MTEgKzI3MCwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25s eV9ydW5uaW5nKQogfQogCiAvKgotICogU3RhcnQgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2Vy LCBpZiBwb3NzaWJsZS4KKyAqIFN0YXJ0IG5ldyBsb2dpY2FsIHJlcGxpY2F0aW9uIGJhY2tncm91 bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqCisgKiBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcywg ZmFsc2Ugb24gZmFpbHVyZS4KICAqLwotdm9pZAorYm9vbAogbG9naWNhbHJlcF93b3JrZXJfbGF1 bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQs Ci0JCQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9pZCByZWxpZCwgZHNtX2hhbmRsZSBzdWJ3b3Jr ZXJfZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIgYmd3OwogCUJhY2tncm91bmRXb3JrZXJIYW5k bGUgKmJnd19oYW5kbGU7CkBAIC0yNzMsNyArMjg1LDEyIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2xh dW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlk LAogCWludAkJCXNsb3QgPSAwOwogCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9IE5VTEw7CiAJ aW50CQkJbnN5bmN3b3JrZXJzOworCWludAkJCW5wYXJhbGxlbGFwcGx5d29ya2VyczsKIAlUaW1l c3RhbXBUeiBub3c7CisJYm9vbAkJaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID0gKHN1Yndvcmtl cl9kc20gIT0gRFNNX0hBTkRMRV9JTlZBTElEKTsKKworCS8qIFNhbml0eSBjaGVjayAtIHRhYmxl c3luYyB3b3JrZXIgY2Fubm90IGJlIGEgc3Vid29ya2VyICovCisJQXNzZXJ0KCEoaXNfcGFyYWxs ZWxfYXBwbHlfd29ya2VyICYmIE9pZElzVmFsaWQocmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVH MSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoInN0YXJ0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29y a2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKQEAgLTM1MSw3ICszNjgsMjAgQEAgcmV0cnk6 CiAJaWYgKE9pZElzVmFsaWQocmVsaWQpICYmIG5zeW5jd29ya2VycyA+PSBtYXhfc3luY193b3Jr ZXJzX3Blcl9zdWJzY3JpcHRpb24pCiAJewogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJbnBhcmFsbGVsYXBw bHl3b3JrZXJzID0gbG9naWNhbHJlcF9wYV93b3JrZXJfY291bnQoc3ViaWQpOworCisJLyoKKwkg KiBSZXR1cm4gZmFsc2UgaWYgdGhlIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHJl YWNoZWQgdGhlIGxpbWl0CisJICogcGVyIHN1YnNjcmlwdGlvbi4KKwkgKi8KKwlpZiAoaXNfcGFy YWxsZWxfYXBwbHlfd29ya2VyICYmCisJCW5wYXJhbGxlbGFwcGx5d29ya2VycyA+PSBtYXhfcGFy YWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQorCXsKKwkJTFdMb2NrUmVsZWFz ZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAt MzY1LDcgKzM5NSw3IEBAIHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElP Tl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3Jl YXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQly ZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogUHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0z ODAsNiArNDEwLDggQEAgcmV0cnk6CiAJd29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9V TktOT1dOOwogCXdvcmtlci0+cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29y a2VyLT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7CisJd29ya2VyLT5hcHBseV9sZWFkZXJfcGlkID0g aXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyID8gTXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3b3Jr ZXItPnBhcmFsbGVsX2FwcGx5ID0gaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyOwogCXdvcmtlci0+ bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXIt Pmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90 aW1lKTsKQEAgLTM5NywxOSArNDI5LDM0IEBAIHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5EX0RB VEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJnd19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9S ZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRmKGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1dfTUFY TEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19N QVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3Jr ZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIlBhcmFs bGVsQXBwbHlXb3JrZXJNYWluIik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9u X25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKwogCWlmIChPaWRJc1ZhbGlk KHJlbGlkKSkKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9n aWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwgc3Vi aWQsIHJlbGlkKTsKKwllbHNlIGlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJp bnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24g cGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJZWxz ZQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCi0JCQkJICJsb2dpY2FsIHJl cGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwotCXNucHJpbnRm KGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7 CisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u ICV1Iiwgc3ViaWQpOworCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmlu dGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxl bCB3b3JrZXIiKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwg ImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CiAKIAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9 IEJHV19ORVZFUl9SRVNUQVJUOwogCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAli Z3cuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShzbG90KTsKIAorCWlmIChpc19wYXJhbGxl bF9hcHBseV93b3JrZXIpCisJCW1lbWNweShiZ3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwg c2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdv cmtlcigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2Vy LCBzbyBjbGVhbiB1cCB0aGUgd29ya2VyIHNsb3QuICovCkBAIC00MjIsMzMgKzQ2OSwyMyBAQCBy ZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQp LAogCQkJCSBlcnJtc2coIm91dCBvZiBiYWNrZ3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBl cnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4i KSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRp bCBpdCBhdHRhY2hlcy4gKi8KLQlXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2Vy LCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKKwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9uV29y a2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCi0gKiBT dG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFu eSwgYW5kIHdhaXQgdW50aWwKLSAqIGl0IGRldGFjaGVzIGZyb20gdGhlIHNsb3QuCisgKiBJbnRl cm5hbCBmdW5jdGlvbiB0byBzdG9wIHRoZSB3b3JrZXIgYW5kIHdhaXQgdW50aWwgaXQgZGV0YWNo ZXMgZnJvbSB0aGUKKyAqIHNsb3QuCiAgKi8KLXZvaWQKLWxvZ2ljYWxyZXBfd29ya2VyX3N0b3Ao T2lkIHN1YmlkLCBPaWQgcmVsaWQpCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3Rv cF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsIGludCBzaWdubykKIHsKLQlMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXI7CiAJdWludDE2CQlnZW5lcmF0aW9uOwogCi0JTFdMb2NrQWNx dWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKLQotCXdvcmtlciA9IGxvZ2lj YWxyZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJlbGlkLCBmYWxzZSk7Ci0KLQkvKiBObyB3b3JrZXIs IG5vdGhpbmcgdG8gZG8uICovCi0JaWYgKCF3b3JrZXIpCi0JewotCQlMV0xvY2tSZWxlYXNlKExv Z2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOwotCX0KKwlBc3NlcnQoTFdMb2NrSGVsZEJ5 TWVJbk1vZGUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCkpOwogCiAJLyoKIAkgKiBS ZW1lbWJlciB3aGljaCBnZW5lcmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVjayBp ZiB3aGF0IHdlIHNlZQpAQCAtNDg2LDEwICs1MjMsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9w KE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRp ZmZlcmVudCB3b3JrZXIgaGFzIHRha2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXIt PmluX3VzZSB8fCB3b3JrZXItPmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdM b2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkv KiBXb3JrZXIgaGFzIGFzc2lnbmVkIHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAo d29ya2VyLT5wcm9jKQpAQCAtNDk3LDcgKzUzMSw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3Ao T2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJfQogCiAJLyogTm93IHRlcm1pbmF0ZSB0aGUgd29ya2Vy IC4uLiAqLwotCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIFNJR1RFUk0pOworCWtpbGwod29ya2Vy LT5wcm9jLT5waWQsIHNpZ25vKTsKIAogCS8qIC4uLiBhbmQgd2FpdCBmb3IgaXQgdG8gZGllLiAq LwogCWZvciAoOzspCkBAIC01MjMsNiArNTU3LDUzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3Ao T2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2Vy TG9jaywgTFdfU0hBUkVEKTsKIAl9Cit9CisKKy8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFueS4KKyAqLwordm9pZAorbG9naWNh bHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKK3sKKwlMb2dpY2FsUmVwV29y a2VyICp3b3JrZXI7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19T SEFSRUQpOworCisJd29ya2VyID0gbG9naWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQs IGZhbHNlKTsKKworCWlmICh3b3JrZXIpCisJeworCQlBc3NlcnQoIWlzUGFyYWxsZWxBcHBseVdv cmtlcih3b3JrZXIpKTsKKwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIs IFNJR1RFUk0pOworCX0KKworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwor fQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgY29ycmVzcG9uZGluZyB0byB0aGUKKyAqIGlucHV0IHNsb3QgbnVtYmVyLgorICoKKyAq IE5vZGUgdGhhdCB0aGUgZnVuY3Rpb24gc2VuZHMgU0lHSU5UIGluc3RlYWQgb2YgU0lHVEVSTSB0 byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciBzbyB0aGF0IHRoZSB3b3JrZXIgZXhpdHMg Y2xlYW5seS4KKyAqLwordm9pZAorbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9u bywgdWludDE2IGdlbmVyYXRpb24pCit7CisJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOworCisJ QXNzZXJ0KHNsb3Rfbm8gPj0gMCAmJiBzbG90X25vIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2Vycyk7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFS RUQpOworCisJd29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisJQXNz ZXJ0KGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKworCS8qCisJICogT25seSBzdG9w IHRoZSB3b3JrZXIgaWYgdGhlIGdlbmVyYXRpb24gbWF0Y2hlcyBhbmQgdGhlIHdvcmtlciBpcyBh bGl2ZS4KKwkgKi8KKwlpZiAod29ya2VyLT5nZW5lcmF0aW9uID09IGdlbmVyYXRpb24gJiYgd29y a2VyLT5wcm9jKQorCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgU0lH SU5UKTsKIAogCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogfQpAQCAtNTk1 LDExICs2NzYsNDAgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQogfQogCiAv KgotICogRGV0YWNoIHRoZSB3b3JrZXIgKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgorICog U3RvcCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBpZiBhbnksIGFuZCBkZXRhY2ggdGhlIGxl YWRlciBhcHBseSB3b3JrZXIKKyAqIChjbGVhbnMgdXAgdGhlIHdvcmtlciBpbmZvKS4KICAqLwog c3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qIFN0b3Ag dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICovCisJaWYgKGFtX2xlYWRlcl9hcHBseV93b3Jr ZXIoKSkKKwl7CisJCUxpc3QJICAgKndvcmtlcnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8q CisJCSAqIERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9oYW5kbGUgZm9yIGFsbCBwYXJhbGxlbCBh cHBseSB3b3JrZXJzCisJCSAqIGJlZm9yZSB0ZXJtaW5hdGluZyB0aGVtLiBUaGlzIHByZXZlbnRz IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGZyb20KKwkJICogcmVjZWl2aW5nIHRoZSB3b3JrZXIg dGVybWluYXRpb24gbWVzc2FnZSBhbmQgc2VuZGluZyBpdCB0byBsb2dzCisJCSAqIHdoZW4gdGhl IHNhbWUgaXMgYWxyZWFkeSBkb25lIGJ5IHRoZSBwYXJhbGxlbCB3b3JrZXIuCisJCSAqLworCQlw YV9kZXRhY2hfYWxsX2Vycm9yX21xKCk7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29y a2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2Zp bmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtl cnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBs Zmlyc3QobGMpOworCisJCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJCWxvZ2lj YWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodywgU0lHVEVSTSk7CisJCX0KKworCQlMV0xvY2tS ZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9jayBjb25jdXJyZW50 IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19FWENM VVNJVkUpOwogCkBAIC02MjIsNiArNzMyLDggQEAgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChM b2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJbnZhbGlkT2lkOwog CXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+cmVsaWQgPSBJbnZhbGlkT2lk OworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJh bGxlbF9hcHBseSA9IGZhbHNlOwogfQogCiAvKgpAQCAtNjUzLDYgKzc2NSwxMyBAQCBsb2dpY2Fs cmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZykKIAlpZiAoTXlMb2dpY2FsUmVw V29ya2VyLT5zdHJlYW1fZmlsZXNldCAhPSBOVUxMKQogCQlGaWxlU2V0RGVsZXRlQWxsKE15TG9n aWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCisJLyoKKwkgKiBTZXNzaW9uIGxldmVs IGxvY2tzIG1heSBiZSBhY3F1aXJlZCBvdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24gaW4KKwkgKiBw YXJhbGxlbCBhcHBseSBtb2RlIGFuZCB3aWxsIG5vdCBiZSByZWxlYXNlZCB3aGVuIHRoZSB3b3Jr ZXIKKwkgKiB0ZXJtaW5hdGVzLCBzbyBtYW51YWxseSByZWxlYXNlIGFsbCBsb2NrcyBiZWZvcmUg dGhlIHdvcmtlciBleGl0cy4KKwkgKi8KKwlMb2NrUmVsZWFzZUFsbChERUZBVUxUX0xPQ0tNRVRI T0QsIHRydWUpOworCiAJQXBwbHlMYXVuY2hlcldha2V1cCgpOwogfQogCkBAIC02ODEsNiArODAw LDMzIEBAIGxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKQogfQogCiAvKgor ICogQ291bnQgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIChidXQgbm90IG5lY2Vzc2FyaWx5IHJ1 bm5pbmcpIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAq Lworc3RhdGljIGludAorbG9naWNhbHJlcF9wYV93b3JrZXJfY291bnQoT2lkIHN1YmlkKQorewor CWludAkJCWk7CisJaW50CQkJcmVzID0gMDsKKworCUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dp Y2FsUmVwV29ya2VyTG9jaykpOworCisJLyoKKwkgKiBTY2FuIGFsbCBhdHRhY2hlZCBwYXJhbGxl bCBhcHBseSB3b3JrZXJzLCBvbmx5IGNvdW50aW5nIHRob3NlIHdoaWNoCisJICogaGF2ZSB0aGUg Z2l2ZW4gc3Vic2NyaXB0aW9uIGlkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzOyBpKyspCisJeworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0g JkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CisKKwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYm IGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCXJlcysrOworCX0KKworCXJldHVybiByZXM7 Cit9CisKKy8qCiAgKiBBcHBseUxhdW5jaGVyU2htZW1TaXplCiAgKgkJQ29tcHV0ZSBzcGFjZSBu ZWVkZWQgZm9yIHJlcGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJlZCBtZW1vcnkKICAqLwpAQCAtODY5 LDcgKzEwMTUsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJd2Fp dF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwogCiAJCQkJCWxvZ2ljYWxyZXBf d29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUsCi0JCQkJCQkJCQkJ CSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFs aWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJfQogCkBAIC05NTIsNiArMTA5 OCwxMCBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJT05fQVJHUykKIAkJaWYg KE9pZElzVmFsaWQoc3ViaWQpICYmIHdvcmtlci5zdWJpZCAhPSBzdWJpZCkKIAkJCWNvbnRpbnVl OwogCisJCS8qIFNraXAgaWYgdGhpcyBpcyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworCQlp ZiAoaXNQYXJhbGxlbEFwcGx5V29ya2VyKCZ3b3JrZXIpKQorCQkJY29udGludWU7CisKIAkJd29y a2VyX3BpZCA9IHdvcmtlci5wcm9jLT5waWQ7CiAKIAkJdmFsdWVzWzBdID0gT2JqZWN0SWRHZXRE YXR1bSh3b3JrZXIuc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVz b24uYnVpbGQKaW5kZXggNzE0NGQ3YS4uZDQ4Y2Q0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCkBAIC0xLDYgKzEsNyBAQAogIyBDb3B5cmlnaHQgKGMp IDIwMjItMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKIAogYmFja2Vu ZF9zb3VyY2VzICs9IGZpbGVzKAorICAnYXBwbHlwYXJhbGxlbHdvcmtlci5jJywKICAgJ2RlY29k ZS5jJywKICAgJ2xhdW5jaGVyLmMnLAogICAnbG9naWNhbC5jJywKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IGZjODY3NjguLmI3NTRjNDMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwpAQCAtMTA3NSwxMiArMTA3NSwyMCBAQCBS ZXBsaWNhdGlvbk9yaWdpbkV4aXRDbGVhbnVwKGludCBjb2RlLCBEYXR1bSBhcmcpCiAgKiBhcnJh eSBkb2Vzbid0IGhhdmUgdG8gYmUgc2VhcmNoZWQgd2hlbiBjYWxsaW5nCiAgKiByZXBsb3JpZ2lu X3Nlc3Npb25fYWR2YW5jZSgpLgogICoKLSAqIE9idmlvdXNseSBvbmx5IG9uZSBzdWNoIGNhY2hl ZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNzIGFuZCB0aGUgY3VycmVudAotICogY2FjaGVk IHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBhZnRlciB0aGUgcHJldmlvdXMgdmFsdWUgaXMg dG9ybiBkb3duCi0gKiB3aXRoIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCgpLgorICogTm9ybWFs bHkgb25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2VzcyBzbyB0 aGUgY2FjaGVkCisgKiB2YWx1ZSBjYW4gb25seSBiZSBzZXQgYWdhaW4gYWZ0ZXIgdGhlIHByZXZp b3VzIHZhbHVlIGlzIHRvcm4gZG93biB3aXRoCisgKiByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQo KS4gRm9yIHRoaXMgbm9ybWFsIGNhc2UgcGFzcyBhY3F1aXJlZF9ieSA9IDAKKyAqIChtZWFuaW5n IHRoZSBzbG90IGlzIG5vdCBhbGxvd2VkIHRvIGJlIGFscmVhZHkgYWNxdWlyZWQgYnkgYW5vdGhl ciBwcm9jZXNzKS4KKyAqCisgKiBIb3dldmVyLCBzb21ldGltZXMgbXVsdGlwbGUgcHJvY2Vzc2Vz IGNhbiBzYWZlbHkgcmUtdXNlIHRoZSBzYW1lIG9yaWdpbiBzbG90CisgKiAoZm9yIGV4YW1wbGUs IG11bHRpcGxlIHBhcmFsbGVsIGFwcGx5IHByb2Nlc3NlcyBjYW4gc2FmZWx5IHVzZSB0aGUgc2Ft ZQorICogb3JpZ2luLCBwcm92aWRlZCB0aGV5IG1haW50YWluIGNvbW1pdCBvcmRlciBieSBhbGxv d2luZyBvbmx5IG9uZSBwcm9jZXNzIHRvCisgKiBjb21taXQgYXQgYSB0aW1lKS4gRm9yIHRoaXMg Y2FzZSB0aGUgZmlyc3QgcHJvY2VzcyBtdXN0IHBhc3MgYWNxdWlyZWRfYnkgPQorICogMCwgYW5k IHRoZW4gdGhlIG90aGVyIHByb2Nlc3NlcyBzaGFyaW5nIHRoYXQgc2FtZSBvcmlnaW4gY2FuIHBh c3MKKyAqIGFjcXVpcmVkX2J5ID0gUElEIG9mIHRoZSBmaXJzdCBwcm9jZXNzLgogICovCiB2b2lk Ci1yZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKK3JlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBpbnQgYWNxdWlyZWRfYnkpCiB7CiAJc3Rh dGljIGJvb2wgcmVnaXN0ZXJlZF9jbGVhbnVwOwogCWludAkJCWk7CkBAIC0xMTIyLDcgKzExMzAs NyBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAkJaWYgKGN1 cnN0YXRlLT5yb2lkZW50ICE9IG5vZGUpCiAJCQljb250aW51ZTsKIAotCQllbHNlIGlmIChjdXJz dGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCkKKwkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5 ICE9IDAgJiYgYWNxdWlyZWRfYnkgPT0gMCkKIAkJewogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJ KGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfSU5fVVNFKSwKQEAgLTExNTMsNyArMTE2MSwxMSBAQCBy ZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkKIAogCUFzc2VydChzZXNz aW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5yb2lkZW50ICE9IEludmFsaWRSZXBPcmlnaW5JZCk7CiAK LQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSA9IE15UHJvY1BpZDsKKwlp ZiAoYWNxdWlyZWRfYnkgPT0gMCkKKwkJc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWly ZWRfYnkgPSBNeVByb2NQaWQ7CisJZWxzZSBpZiAoc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+ YWNxdWlyZWRfYnkgIT0gYWNxdWlyZWRfYnkpCisJCWVsb2coRVJST1IsICJjb3VsZCBub3QgZmlu ZCByZXBsaWNhdGlvbiBzdGF0ZSBzbG90IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gd2l0aCBPSUQg JXUgd2hpY2ggd2FzIGFjcXVpcmVkIGJ5ICVkIiwKKwkJCSBub2RlLCBhY3F1aXJlZF9ieSk7CiAK IAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uT3JpZ2luTG9jayk7CiAKQEAgLTEzMzcsNyArMTM0 OSw3IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9uX3NldHVwKFBHX0ZVTkNUSU9OX0FS R1MpCiAKIAluYW1lID0gdGV4dF90b19jc3RyaW5nKCh0ZXh0ICopIERhdHVtR2V0UG9pbnRlcihQ R19HRVRBUkdfREFUVU0oMCkpKTsKIAlvcmlnaW4gPSByZXBsb3JpZ2luX2J5X25hbWUobmFtZSwg ZmFsc2UpOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4pOworCXJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChvcmlnaW4sIDApOwogCiAJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9 IG9yaWdpbjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9w cm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCmluZGV4IGQw MGU5MGQuLjNhOWQ1M2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMK QEAgLTExNjQsMTAgKzExNjQsMTQgQEAgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3Ry aW5nSW5mbyBpbiwgTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKQogLyoKICAqIFdy aXRlIFNUUkVBTSBBQk9SVCB0byB0aGUgb3V0cHV0IHN0cmVhbS4gTm90ZSB0aGF0IHhpZCBhbmQg c3VieGlkIHdpbGwgYmUKICAqIHNhbWUgZm9yIHRoZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gYWJv cnQuCisgKgorICogSWYgd3JpdGVfYWJvcnRfaW5mbyBpcyB0cnVlLCBzZW5kIHRoZSBhYm9ydF9s c24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3aXNlIGRvbid0LgogICovCiB2b2lk CiBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rp b25JZCB4aWQsCi0JCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCkKKwkJCQkJCQkgIFRyYW5z YWN0aW9uSWQgc3VieGlkLCBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJCQkJCQkgIFRpbWVzdGFt cFR6IGFib3J0X3RpbWUsIGJvb2wgd3JpdGVfYWJvcnRfaW5mbykKIHsKIAlwcV9zZW5kYnl0ZShv dXQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQpOwogCkBAIC0xMTc2LDE5ICsxMTgwLDQw IEBAIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2Fj dGlvbklkIHhpZCwKIAkvKiB0cmFuc2FjdGlvbiBJRCAqLwogCXBxX3NlbmRpbnQzMihvdXQsIHhp ZCk7CiAJcHFfc2VuZGludDMyKG91dCwgc3VieGlkKTsKKworCWlmICh3cml0ZV9hYm9ydF9pbmZv KQorCXsKKwkJcHFfc2VuZGludDY0KG91dCwgYWJvcnRfbHNuKTsKKwkJcHFfc2VuZGludDY0KG91 dCwgYWJvcnRfdGltZSk7CisJfQogfQogCiAvKgogICogUmVhZCBTVFJFQU0gQUJPUlQgZnJvbSB0 aGUgb3V0cHV0IHN0cmVhbS4KKyAqCisgKiBJZiByZWFkX2Fib3J0X2luZm8gaXMgdHJ1ZSwgcmVh ZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVyd2lzZSBkb24n dC4KICAqLwogdm9pZAotbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGlu LCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1YnhpZCkKK2xv Z2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJCQkgTG9naWNh bFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkgYm9vbCByZWFkX2Fib3J0 X2luZm8pCiB7Ci0JQXNzZXJ0KHhpZCAmJiBzdWJ4aWQpOworCUFzc2VydChhYm9ydF9kYXRhKTsK KworCWFib3J0X2RhdGEtPnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJYWJvcnRfZGF0YS0+ c3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKIAotCSp4aWQgPSBwcV9nZXRtc2dpbnQoaW4s IDQpOwotCSpzdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWlmIChyZWFkX2Fib3J0X2lu Zm8pCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJ CWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJfQorCWVsc2UK Kwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCQlhYm9y dF9kYXRhLT5hYm9ydF90aW1lID0gMDsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IGYyODRmYzIuLjY2ZmIwMzkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5j CkBAIC0yODczLDcgKzI4NzMsOCBAQCBSZW9yZGVyQnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRl ckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogICogZGlzay4KICAqLwogdm9pZAotUmVv cmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExv Z1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5z YWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90 aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKIApAQCAtMjg4NCw2ICsyODg1LDggQEAg UmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhh Y3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFu c2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYg KHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMKaW5kZXggMmZkZmViNS4uMDE2ZDBhNCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC0xNCw3ICsxNCw3IEBACiAgKgkg IFRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9uIGlzIGRvbmUgc2VwYXJhdGVseSBmb3Ig ZWFjaCB0YWJsZSwKICAqCSAgaW4gYSBzZXBhcmF0ZSBhcHBseSB3b3JrZXIgdGhhdCBvbmx5IGZl dGNoZXMgdGhlIGluaXRpYWwgc25hcHNob3QgZGF0YQogICoJICBmcm9tIHRoZSBwdWJsaXNoZXIg YW5kIHRoZW4gc3luY2hyb25pemVzIHRoZSBwb3NpdGlvbiBpbiB0aGUgc3RyZWFtIHdpdGgKLSAq CSAgdGhlIG1haW4gYXBwbHkgd29ya2VyLgorICoJICB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4K ICAqCiAgKgkgIFRoZXJlIGFyZSBzZXZlcmFsIHJlYXNvbnMgZm9yIGRvaW5nIHRoZSBzeW5jaHJv bml6YXRpb24gdGhpcyB3YXk6CiAgKgkgICAtIEl0IGFsbG93cyB1cyB0byBwYXJhbGxlbGl6ZSB0 aGUgaW5pdGlhbCBkYXRhIHN5bmNocm9uaXphdGlvbgpAQCAtMTUzLDcgKzE1Myw3IEBAIGZpbmlz aF9zeW5jX3dvcmtlcih2b2lkKQogCQkJCQlnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2Vy LT5yZWxpZCkpKSk7CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBGaW5kIHRo ZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgc2lnbmFsIGl0LiAqLworCS8qIEZpbmQgdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIgYW5kIHNpZ25hbCBpdC4gKi8KIAlsb2dpY2FscmVwX3dvcmtlcl93YWtl dXAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgSW52YWxpZE9pZCk7CiAKIAkvKiBTdG9wIGdy YWNlZnVsbHkgKi8KQEAgLTYwOSw3ICs2MDksOCBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zv cl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0 aW9uLT5vaWQsCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUsCiAJCQkJCQkJCQkJ CQkgTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCi0JCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxp ZCk7CisJCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCwKKwkJCQkJCQkJCQkJCSBEU01fSEFORExF X0lOVkFMSUQpOwogCQkJCQkJaGVudHJ5LT5sYXN0X3N0YXJ0X3RpbWUgPSBub3c7CiAJCQkJCX0K IAkJCQl9CkBAIC02MzAsNiArNjMxLDE0IEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2Fw cGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB2b2lkCiBwcm9jZXNzX3N5bmNpbmdfdGFibGVz KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB7CisJLyoKKwkgKiBTa2lwIGZvciBwYXJhbGxlbCBh cHBseSB3b3JrZXJzIGJlY2F1c2UgdGhleSBvbmx5IG9wZXJhdGUgb24gdGFibGVzCisJICogdGhh dCBhcmUgaW4gYSBSRUFEWSBzdGF0ZS4gU2VlIHBhX2Nhbl9zdGFydCgpIGFuZAorCSAqIHNob3Vs ZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwoKS4KKwkgKi8KKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlf d29ya2VyKCkpCisJCXJldHVybjsKKwogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCXBy b2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX3N5bmMoY3VycmVudF9sc24pOwogCWVsc2UKQEAgLTEy NDcsNyArMTI1Niw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmln aW5fc3RhcnRwb3MpCiAKIAkvKgogCSAqIEhlcmUgd2UgdXNlIHRoZSBzbG90IG5hbWUgaW5zdGVh ZCBvZiB0aGUgc3Vic2NyaXB0aW9uIG5hbWUgYXMgdGhlCi0JICogYXBwbGljYXRpb25fbmFtZSwg c28gdGhhdCBpdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbWFpbiBhcHBseSB3b3JrZXIsCisJICog YXBwbGljYXRpb25fbmFtZSwgc28gdGhhdCBpdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciwKIAkgKiBzbyB0aGF0IHN5bmNocm9ub3VzIHJlcGxpY2F0aW9uIGNhbiBk aXN0aW5ndWlzaCB0aGVtLgogCSAqLwogCUxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPQpAQCAtMTI5 NSw3ICsxMzA0LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdp bl9zdGFydHBvcykKIAkJICogdGltZSB0aGlzIHRhYmxlc3luYyB3YXMgbGF1bmNoZWQuCiAJCSAq LwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7Ci0J CXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lv bl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmln aW5pZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jl c3MoZmFsc2UpOwogCkBAIC0xNDA2LDcgKzE0MTUsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3Rh cnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJCQkJICAgdHJ1ZSAvKiBnbyBiYWNr d2FyZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyApOwogCQlVbmxvY2tSZWxhdGlvbk9pZChSZXBs aWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JCXJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChv cmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAl9 CiAJZWxzZQpAQCAtMTQ2MSw4ICsxNDcwLDggQEAgY29weV90YWJsZV9kb25lOgogCVNwaW5Mb2Nr UmVsZWFzZSgmTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxtdXRleCk7CiAKIAkvKgotCSAqIEZpbmFs bHksIHdhaXQgdW50aWwgdGhlIG1haW4gYXBwbHkgd29ya2VyIHRlbGxzIHVzIHRvIGNhdGNoIHVw IGFuZCB0aGVuCi0JICogcmV0dXJuIHRvIGxldCBMb2dpY2FsUmVwQXBwbHlMb29wIGRvIGl0Lgor CSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdGVsbHMgdXMg dG8gY2F0Y2ggdXAgYW5kCisJICogdGhlbiByZXR1cm4gdG8gbGV0IExvZ2ljYWxSZXBBcHBseUxv b3AgZG8gaXQuCiAJICovCiAJd2FpdF9mb3Jfd29ya2VyX3N0YXRlX2NoYW5nZShTVUJSRUxfU1RB VEVfQ0FUQ0hVUCk7CiAJcmV0dXJuIHNsb3RuYW1lOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKaW5kZXggZjhlOGNmNy4uYzRjMDQwOSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yMiw4ICsyMiwxMiBAQAogICogU1RSRUFNRUQg VFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFN0cmVhbWVkIHRyYW5z YWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25zIGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1pdCBvbiB0 aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFwcGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBpbnN0ZWFk LCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBw bGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICogdXBzdHJlYW0p IGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBvZiB0d28gYXBwcm9hY2hlczoKKyAqCisgKiAxKSBXcml0 ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJp dmVzCisgKgorICogVGhpcyBhcHByb2FjaCBpcyB1c2VkIHdoZW4gdGhlIHVzZXIgaGFzIHNldCB0 aGUgc3Vic2NyaXB0aW9uJ3Mgc3RyZWFtaW5nCisgKiBvcHRpb24gYXMgb24uCiAgKgogICogVW5s aWtlIHRoZSByZWd1bGFyIChub24tc3RyZWFtZWQpIGNhc2UsIGhhbmRsaW5nIHN0cmVhbWVkIHRy YW5zYWN0aW9ucyBoYXMKICAqIHRvIGhhbmRsZSBhYm9ydHMgb2YgYm90aCB0aGUgdG9wbGV2ZWwg dHJhbnNhY3Rpb24gYW5kIHN1YnRyYW5zYWN0aW9ucy4gVGhpcwpAQCAtNTAsNiArNTQsMTIgQEAK ICAqIHRoZSBmaWxlIHdlIGRlc2lyZWQgYWNyb3NzIG11bHRpcGxlIHN0cmVhbS1vcGVuIGNhbGxz IGZvciB0aGUgc2FtZQogICogdHJhbnNhY3Rpb24uCiAgKgorICogMikgUGFyYWxsZWwgYXBwbHkg d29ya2Vycy4KKyAqCisgKiBUaGlzIGFwcHJvYWNoIGlzIHVzZWQgd2hlbiB0aGUgdXNlciBoYXMg c2V0IHRoZSBzdWJzY3JpcHRpb24ncyBzdHJlYW1pbmcKKyAqIG9wdGlvbiBhcyBwYXJhbGxlbC4g U2VlIGxvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGZvciBpbmZvcm1hdGlvbiBhYm91dAor ICogdGhpcyBhcHByb2FjaC4KKyAqCiAgKiBUV09fUEhBU0UgVFJBTlNBQ1RJT05TCiAgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUd28gcGhhc2UgdHJhbnNhY3Rpb25zIGFyZSByZXBsYXll ZCBhdCBwcmVwYXJlIGFuZCB0aGVuIGNvbW1pdHRlZCBvcgpAQCAtMjMzLDcgKzI0Myw1MiBAQCB0 eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKIAljaGFyCSAgICpvcmlnaW5fbmFt ZTsKIH0gQXBwbHlFcnJvckNhbGxiYWNrQXJnOwogCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNr QXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CisvKgorICogVGhlIGFjdGlvbiB0byBiZSB0 YWtlbiBmb3IgdGhlIGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0aW9uLgorICoKKyAqIFRSQU5TX0xF QURFUl9BUFBMWToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCBjaGFuZ2VzIG9mIHRoZQorICogdHJhbnNhY3Rpb24gYXJlIGFw cGxpZWQgZGlyZWN0bHkgYnkgdGhlIHdvcmtlci4KKyAqCisgKiBUUkFOU19MRUFERVJfU0VSSUFM SVpFOgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIgb3IgdGFibGUgc3luYworICogd29ya2VyLiBDaGFuZ2VzIGFyZSB3cml0dGVuIHRv IHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIHdoZW4gdGhlCisgKiBmaW5hbCBjb21t aXQgYXJyaXZlcy4KKyAqCisgKiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKyAqIFRo aXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFu ZCBuZWVkIHRvIHNlbmQKKyAqIHRoZSBjaGFuZ2VzIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCisgKgorICogVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorICogVGhpcyBhY3Rp b24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGhhdmUg c2VudCBzb21lCisgKiBjaGFuZ2VzIGRpcmVjdGx5IHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUKKyAqIHNlcmlhbGl6ZWQgdG8gYSBmaWxl LCBkdWUgdG8gdGltZW91dCB3aGlsZSBzZW5kaW5nIGRhdGEuIFRoZSBwYXJhbGxlbCBhcHBseQor ICogd29ya2VyIHdpbGwgYXBwbHkgdGhlc2Ugc2VyaWFsaXplZCBjaGFuZ2VzIHdoZW4gdGhlIGZp bmFsIGNvbW1pdCBhcnJpdmVzLgorICoKKyAqIFdlIGNhbid0IHVzZSBUUkFOU19MRUFERVJfU0VS SUFMSVpFIGZvciB0aGlzIGNhc2UgYmVjYXVzZSwgaW4gYWRkaXRpb24gdG8KKyAqIHNlcmlhbGl6 aW5nIGNoYW5nZXMsIHRoZSBsZWFkZXIgd29ya2VyIGFsc28gbmVlZHMgdG8gc2VyaWFsaXplIHRo ZQorICogU1RSRUFNX1hYWCBtZXNzYWdlIHRvIGEgZmlsZSwgYW5kIHdhaXQgZm9yIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgdG8KKyAqIGZpbmlzaCB0aGUgdHJhbnNhY3Rpb24gd2hlbiBwcm9j ZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZC4gU28KKyAqIHRoaXMgbmV3IGFj dGlvbiB3YXMgaW50cm9kdWNlZCB0byBrZWVwIHRoZSBjb2RlIGFuZCBsb2dpYyBjbGVhci4KKyAq CisgKiBUUkFOU19QQVJBTExFTF9BUFBMWToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2Ug YXJlIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMgb2YKKyAqIHRoZSB0 cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBieSB0aGUgd29ya2VyLgorICovCit0eXBl ZGVmIGVudW0KK3sKKwkvKiBUaGUgYWN0aW9uIGZvciBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9u cy4gKi8KKwlUUkFOU19MRUFERVJfQVBQTFksCisKKwkvKiBBY3Rpb25zIGZvciBzdHJlYW1pbmcg dHJhbnNhY3Rpb25zLiAqLworCVRSQU5TX0xFQURFUl9TRVJJQUxJWkUsCisJVFJBTlNfTEVBREVS X1NFTkRfVE9fUEFSQUxMRUwsCisJVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFLAorCVRS QU5TX1BBUkFMTEVMX0FQUExZCit9IFRyYW5zQXBwbHlBY3Rpb247CisKKy8qIGVycmNvbnRleHQg dHJhY2tlciAqLworQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy ZyA9CiB7CiAJLmNvbW1hbmQgPSAwLAogCS5yZWwgPSBOVUxMLApAQCAtMjQzLDcgKzI5OCw5IEBA IHN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0K IAkub3JpZ2luX25hbWUgPSBOVUxMLAogfTsKIAotc3RhdGljIE1lbW9yeUNvbnRleHQgQXBwbHlN ZXNzYWdlQ29udGV4dCA9IE5VTEw7CitFcnJvckNvbnRleHRDYWxsYmFjayAqYXBwbHlfZXJyb3Jf Y29udGV4dF9zdGFjayA9IE5VTEw7CisKK01lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4 dCA9IE5VTEw7CiBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dCA9IE5VTEw7CiAKIC8qIHBlciBz dHJlYW0gY29udGV4dCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyAqLwpAQCAtMjYzLDE2ICsz MjAsMjUgQEAgc3RhdGljIGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIHN0 YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAog LyoKKyAqIFRoZSBudW1iZXIgb2YgY2hhbmdlcyBhcHBsaWVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdv cmtlciBkdXJpbmcgb25lIHN0cmVhbWluZworICogYmxvY2suCisgKi8KK3N0YXRpYyB1aW50MzIg cGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKKworLyoKICAqIFdlIGVuYWJsZSBza2lwcGlu ZyBhbGwgZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZv cgogICogdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNo IExTTiBtYXRjaGVzIHRoZSBzdWJza2lwbHNuLgogICogT25jZSB3ZSBzdGFydCBza2lwcGluZyBj aGFuZ2VzLCB3ZSBkb24ndCBzdG9wIGl0IHVudGlsIHdlIHNraXAgYWxsIGNoYW5nZXMgb2YKICAq IHRoZSB0cmFuc2FjdGlvbiBldmVuIGlmIHBnX3N1YnNjcmlwdGlvbiBpcyB1cGRhdGVkIGFuZCBN eVN1YnNjcmlwdGlvbi0+c2tpcGxzbgotICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0 aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMsIHdlCi0gKiBkb24ndCBz a2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdo ZXRoZXIgb3Igbm90CisgKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28s IGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcyAoc3RyZWFtaW5nID0gb24pLAorICogd2Ug ZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRl Y2lkZSB3aGV0aGVyIG9yIG5vdAogICogdG8gc2tpcCBhcHBseWluZyB0aGUgY2hhbmdlcyB3aGVu IHN0YXJ0aW5nIHRvIGFwcGx5IGNoYW5nZXMuIFRoZSBzdWJza2lwbHNuIGlzCiAgKiBjbGVhcmVk IGFmdGVyIHN1Y2Nlc3NmdWxseSBza2lwcGluZyB0aGUgdHJhbnNhY3Rpb24gb3IgYXBwbHlpbmcg bm9uLWVtcHR5CiAgKiB0cmFuc2FjdGlvbi4gVGhlIGxhdHRlciBwcmV2ZW50cyB0aGUgbWlzdGFr ZW5seSBzcGVjaWZpZWQgc3Vic2tpcGxzbiBmcm9tCi0gKiBiZWluZyBsZWZ0LgorICogYmVpbmcg bGVmdC4gTm90ZSB0aGF0IHdlIGNhbm5vdCBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25z IHdoZW4gdXNpbmcKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYmVjYXVzZSB3ZSBjYW5ub3Qg Z2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZSBhcHBseWluZworICogdGhlIGNoYW5nZXMuIFNvLCB3 ZSBkb24ndCBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hlbiBmaW5pc2ggTFNOIGlzIHNl dAorICogYnkgdGhlIHVzZXIuCiAgKi8KIHN0YXRpYyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5p c2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMo KSAodW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkK QEAgLTMxMiwyMyArMzc4LDE2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhbnVwX3N1YnhhY3Rf aW5mbyh2b2lkKTsKIC8qCiAgKiBTZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIGNoYW5nZXMgZm9y IGEgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCiAgKi8KLXN0YXRpYyB2b2lkIHN0cmVhbV9jbGVhbnVw X2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogc3RhdGljIHZvaWQgc3RyZWFt X29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCSBib29sIGZp cnN0X3NlZ21lbnQpOwogc3RhdGljIHZvaWQgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlv biwgU3RyaW5nSW5mbyBzKTsKK3N0YXRpYyB2b2lkIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFu Z2UoVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpOwogc3RhdGlj IHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJh Y2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSk7CiAK LXN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbik7 Ci0KLXN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7Ci0KIHN0YXRp YyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOwogCi0vKiBwcm90b3R5cGUg bmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwotc3RhdGljIHZvaWQgYXBwbHlfZGlz cGF0Y2goU3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9p bnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3RhdGljIHZvaWQg YXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAog CQkJCQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLApAQCAtMzUyLDE5ICs0MTEsMzIgQEAg c3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoQXBwbHlFeGVjdXRpb25EYXRh ICplZGF0YSwKIC8qIENvbXB1dGUgR0lEIGZvciB0d29fcGhhc2UgdHJhbnNhY3Rpb25zICovCiBz dGF0aWMgdm9pZCBUd29QaGFzZVRyYW5zYWN0aW9uR2lkKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25J ZCB4aWQsIGNoYXIgKmdpZCwgaW50IHN6Z2lkKTsKIAotLyogQ29tbW9uIHN0cmVhbWluZyBmdW5j dGlvbiB0byBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVzc2FnZXMgKi8KLXN0YXRpYyB2b2lkIGFw cGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsK LQogLyogRnVuY3Rpb25zIGZvciBza2lwcGluZyBjaGFuZ2VzICovCiBzdGF0aWMgdm9pZCBtYXli ZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiBzdGF0aWMg dm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CiBzdGF0aWMgdm9pZCBjbGVhcl9zdWJz Y3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKTsKIAogLyogRnVuY3Rpb25z IGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3RhdGljIHZvaWQgYXBwbHlfZXJyb3JfY2Fs bGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29u dGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiBzdGF0aWMgaW5s aW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogCitzdGF0aWMg VHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9u SWQgeGlkLAorCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKTsK KworLyoKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3Jr ZXIuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2dldF93b3JrZXJfbmFtZSh2b2lkKQorewor CWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCisJCXJldHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0 aW9uIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIiKTsKKwllbHNlIGlmIChhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIF8oImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxs ZWwgYXBwbHkgd29ya2VyIik7CisJZWxzZQorCQlyZXR1cm4gXygibG9naWNhbCByZXBsaWNhdGlv biBhcHBseSB3b3JrZXIiKTsKK30KKwogLyoKICAqIEZvcm0gdGhlIG9yaWdpbiBuYW1lIGZvciB0 aGUgc3Vic2NyaXB0aW9uLgogICoKQEAgLTM5NCwxOSArNDY2LDQzIEBAIFJlcGxpY2F0aW9uT3Jp Z2luTmFtZUZvckxvZ2ljYWxSZXAoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogICoKICAqIFRoaXMg aXMgbWFpbmx5IG5lZWRlZCBmb3IgaW5pdGlhbCByZWxhdGlvbiBkYXRhIHN5bmMgYXMgdGhhdCBy dW5zIGluCiAgKiBzZXBhcmF0ZSB3b3JrZXIgcHJvY2VzcyBydW5uaW5nIGluIHBhcmFsbGVsIGFu ZCB3ZSBuZWVkIHNvbWUgd2F5IHRvIHNraXAKLSAqIGNoYW5nZXMgY29taW5nIHRvIHRoZSBtYWlu IGFwcGx5IHdvcmtlciBkdXJpbmcgdGhlIHN5bmMgb2YgYSB0YWJsZS4KKyAqIGNoYW5nZXMgY29t aW5nIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1cmluZyB0aGUgc3luYyBvZiBhIHRhYmxl LgogICoKICAqIE5vdGUgd2UgbmVlZCB0byBkbyBzbWFsbGVyIG9yIGVxdWFscyBjb21wYXJpc29u IGZvciBTWU5DRE9ORSBzdGF0ZSBiZWNhdXNlCiAgKiBpdCBtaWdodCBob2xkIHBvc2l0aW9uIG9m IGVuZCBvZiBpbml0aWFsIHNsb3QgY29uc2lzdGVudCBwb2ludCBXQUwKICAqIHJlY29yZCArIDEg KGllIHN0YXJ0IG9mIG5leHQgcmVjb3JkKSBhbmQgbmV4dCByZWNvcmQgY2FuIGJlIENPTU1JVCBv ZgogICogdHJhbnNhY3Rpb24gd2UgYXJlIG5vdyBwcm9jZXNzaW5nICh3aGljaCBpcyB3aGF0IHdl IHNldCByZW1vdGVfZmluYWxfbHNuCiAgKiB0byBpbiBhcHBseV9oYW5kbGVfYmVnaW4pLgorICoK KyAqIE5vdGUgdGhhdCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBh cHBsaWVkIGluIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLCB3ZSBkaXNhbGxvdyBhcHBs eWluZyBjaGFuZ2VzIGlmIHRoZSB0YXJnZXQgdGFibGUgaW4gdGhlCisgKiBzdWJzY3JpcHRpb24g aXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRo ZXIgdG8KKyAqIGFwcGx5IHRoZSBjaGFuZ2UgYXMgd2Ugd29uJ3Qga25vdyByZW1vdGVfZmluYWxf bHNuIGJ5IHRoYXQgdGltZS4KKyAqCisgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyBpbiBwYV9j YW5fc3RhcnQoKSBiZWZvcmUgYXNzaWduaW5nIHRoZQorICogc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHRvIHRoZSBwYXJhbGxlbCB3b3JrZXIsIGJ1dCBpdCBhbHNvIG5lZWRzIHRvIGJlCisgKiBjaGVj a2VkIGhlcmUgYmVjYXVzZSBpZiB0aGUgdXNlciBleGVjdXRlcyBBTFRFUiBTVUJTQ1JJUFRJT04g Li4uIFJFRlJFU0gKKyAqIFBVQkxJQ0FUSU9OIGluIHBhcmFsbGVsLCB0aGUgbmV3IHRhYmxlIGNh biBiZSBhZGRlZCB0byBwZ19zdWJzY3JpcHRpb25fcmVsCisgKiB3aGlsZSBhcHBseWluZyB0aGlz IHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgYm9vbAogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9y X3JlbChMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCkKIHsKIAlpZiAoYW1fdGFibGVzeW5jX3dv cmtlcigpKQogCQlyZXR1cm4gTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCA9PSByZWwtPmxvY2Fs cmVsb2lkOworCWVsc2UgaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJLyog V2UgZG9uJ3Qgc3luY2hyb25pemUgcmVsJ3MgdGhhdCBhcmUgaW4gdW5rbm93biBzdGF0ZS4gKi8K KwkJaWYgKHJlbC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRFX1JFQURZICYmCisJCQlyZWwtPnN0YXRl ICE9IFNVQlJFTF9TVEFURV9VTktOT1dOKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJt c2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3Jp cHRpb24gXCIlc1wiIHdpbGwgc3RvcCIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAor CQkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5z YWN0aW9ucyB1c2luZyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHVudGlsIGFsbCB0YWJsZXMgaGF2 ZSBiZWVuIHN5bmNocm9uaXplZC4iKSkpOworCisJCXJldHVybiByZWwtPnN0YXRlID09IFNVQlJF TF9TVEFURV9SRUFEWTsKKwl9CiAJZWxzZQogCQlyZXR1cm4gKHJlbC0+c3RhdGUgPT0gU1VCUkVM X1NUQVRFX1JFQURZIHx8CiAJCQkJKHJlbC0+c3RhdGUgPT0gU1VCUkVMX1NUQVRFX1NZTkNET05F ICYmCkBAIC00NTIsNDMgKzU0OCwxMTAgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAodm9pZCkKIH0K IAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5kbGUgc3RyZWFt ZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUK KyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgorICogSW4gdGhlIHN0cmVhbWluZyBjYXNl IChyZWNlaXZpbmcgYSBibG9jayBvZiB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24pLCBmb3IKKyAq IHNlcmlhbGl6ZSBtb2RlLCBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJv cGVyIHRvcGxldmVsCisgKiB0cmFuc2FjdGlvbiwgYW5kIGZvciBwYXJhbGxlbCBtb2RlLCB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQgdGhlCisgKiBjaGFuZ2VzIHRvIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMgYW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBkZWZpbmUK KyAqIHNhdmVwb2ludHMgaWYgbmVlZGVkLiAoTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExP R0lDQUxfUkVQX01TR19UWVBFCisgKiBtZXNzYWdlcyB3aWxsIGJlIGFwcGxpZWQgYnkgYm90aCBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseQorICogd29ya2VycykuCiAgKgot ICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRy YW5zYWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBw cm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVk IHRyYW5zYWN0aW9ucyAod2hlbiB0aGUgY2hhbmdlIGlzIGVpdGhlciBzZXJpYWxpemVkCisgKiB0 byBmaWxlIG9yIHNlbnQgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2VyKSwgZmFsc2Ugb3RoZXJ3aXNl IChyZWd1bGFyIG1vZGUgb3IKKyAqIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBieSBwYXJhbGxlbCBh cHBseSB3b3JrZXIpLgogICoKLSAqIFJldHVybnMgdHJ1ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rp b25zLCBmYWxzZSBvdGhlcndpc2UgKHJlZ3VsYXIgbW9kZSkuCisgKiBFeGNlcHRpb246IElmIHRo ZSBtZXNzYWdlIGJlaW5nIHByb2Nlc3NlZCBpcyBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04KKyAq IG9yIExPR0lDQUxfUkVQX01TR19UWVBFLCByZXR1cm4gZmFsc2UgZXZlbiBpZiB0aGUgbWVzc2Fn ZSBuZWVkcyB0byBiZSBzZW50CisgKiB0byBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwog c3RhdGljIGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlw ZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2Fj dGlvbklkIGN1cnJlbnRfeGlkOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlU cmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9t c2c7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVh bV94aWQsICZ3aW5mbyk7CiAKIAkvKiBub3QgaW4gc3RyZWFtaW5nIG1vZGUgKi8KLQlpZiAoIWlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmIChhcHBseV9hY3Rpb24gPT0gVFJBTlNfTEVBREVS X0FQUExZKQogCQlyZXR1cm4gZmFsc2U7CiAKLQlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwog CUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAKIAkvKgorCSAqIFRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgbmVlZHMgdGhlIHhpZCBpbiB0aGlzIG1lc3NhZ2UgdG8g ZGVjaWRlCisJICogd2hldGhlciB0byBkZWZpbmUgYSBzYXZlcG9pbnQsIHNvIHNhdmUgdGhlIG9y aWdpbmFsIG1lc3NhZ2UgdGhhdCBoYXMKKwkgKiBub3QgbW92ZWQgdGhlIGN1cnNvciBhZnRlciB0 aGUgeGlkLiBXZSB3aWxsIHNlcmlhbGl6ZSB0aGlzIG1lc3NhZ2UgdG8gYQorCSAqIGZpbGUgaW4g UEFSVElBTF9TRVJJQUxJWkUgbW9kZS4KKwkgKi8KKwlvcmlnaW5hbF9tc2cgPSAqczsKKworCS8q CiAJICogV2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBm aXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1lc3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICovCi0JeGlk ID0gcHFfZ2V0bXNnaW50KHMsIDQpOworCWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQp OwogCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCWlmICghVHJhbnNhY3Rpb25J ZElzVmFsaWQoY3VycmVudF94aWQpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJpbnZhbGlk IHRyYW5zYWN0aW9uIElEIGluIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIikpKTsK IAotCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0 aGVyZSkuICovCi0Jc3VieGFjdF9pbmZvX2FkZCh4aWQpOworCXN3aXRjaCAoYXBwbHlfYWN0aW9u KQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHN0cmVhbV9m ZCk7CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJl YW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRv IHRoZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAqLworCQkJc3VieGFjdF9pbmZvX2Fk ZChjdXJyZW50X3hpZCk7CisKKwkJCS8qIFdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQg ZmlsZSAqLworCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQkJcmV0dXJuIHRy dWU7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3 aW5mbyk7CisKKwkJCS8qCisJCQkgKiBYWFggVGhlIHB1Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3 YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKKwkJCSAqIG1lc3NhZ2VzIGFmdGVyIHRoZSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBkYXRlIHRoZQorCQkJICogcmVsYXRpb24v dHlwZSBpbiBsZWFkZXIgYXBwbHkgd29ya2VyLiBTZWUgZnVuY3Rpb24KKwkJCSAqIGNsZWFudXBf cmVsX3N5bmNfY2FjaGUuCisJCQkgKi8KKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxl biwgcy0+ZGF0YSkpCisJCQkJcmV0dXJuIChhY3Rpb24gIT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFU SU9OICYmCisJCQkJCQlhY3Rpb24gIT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpOworCisJCQkvKgor CQkJICogU3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlIHdoZW4gd2UgYXJlIG5vdCBhYmxlIHRvIHNl bmQgdGhlCisJCQkgKiBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJ CQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2luZm8sIGZhbHNlKTsKKworCQkJLyog ZmFsbCB0aHJvdWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgor CQkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sICZvcmlnaW5hbF9tc2cpOwogCi0JcmV0dXJu IHRydWU7CisJCQkvKiBTYW1lIHJlYXNvbiBhcyBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExF TCBjYXNlLiAqLworCQkJcmV0dXJuIChhY3Rpb24gIT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9O ICYmCisJCQkJCWFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfVFlQRSk7CisKKwkJY2FzZSBUUkFO U19QQVJBTExFTF9BUFBMWToKKwkJCXBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyArPSAxOworCisJ CQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpZiBuZWVkZWQuICovCisJCQlw YV9zdGFydF9zdWJ0cmFucyhjdXJyZW50X3hpZCwgc3RyZWFtX3hpZCk7CisJCQlyZXR1cm4gZmFs c2U7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlyZXR1cm4gZmFsc2U7CQkv KiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8KKwl9CiB9CiAKIC8qCkBAIC05MjYsOCArMTA4 OSwxMSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbChMb2dpY2FsUmVwUHJlcGFyZWRU eG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJICogQmVnaW5UcmFuc2FjdGlvbkJsb2NrIGlzIG5lY2Vz c2FyeSB0byBiYWxhbmNlIHRoZSBFbmRUcmFuc2FjdGlvbkJsb2NrCiAJICogY2FsbGVkIHdpdGhp biB0aGUgUHJlcGFyZVRyYW5zYWN0aW9uQmxvY2sgYmVsb3cuCiAJICovCi0JQmVnaW5UcmFuc2Fj dGlvbkJsb2NrKCk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7IC8qIENvbXBsZXRlcyB0 aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2so KSkKKwl7CisJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQlDb21taXRUcmFuc2FjdGlvbkNv bW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KKwl9 CiAKIAkvKgogCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFt aW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgpAQCAtOTc0LDcgKzExNDAsNyBAQCBhcHBseV9oYW5k bGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJ cGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBh cmVfZGF0YS5lbmRfbHNuKTsKKwlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5k X2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFs c2U7CiAKQEAgLTk5Niw2ICsxMTYyLDEyIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0lu Zm8gcykKIAogLyoKICAqIEhhbmRsZSBhIENPTU1JVCBQUkVQQVJFRCBvZiBhIHByZXZpb3VzbHkg UFJFUEFSRUQgdHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8g d2FpdCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgaW4gYQorICogcGFyYWxs ZWwgYXBwbHkgd29ya2VyLiBJbiB0aGF0IGNhc2UsIHdlIGhhdmUgYWxyZWFkeSB3YWl0ZWQgZm9y IHRoZSBwcmVwYXJlCisgKiB0byBmaW5pc2ggaW4gYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJl KCkgd2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZQorICogb3BlcmF0aW9ucyBpbiB0aGF0IHRyYW5z YWN0aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmliZXIsIHNvIG5vCisgKiBjb25jdXJy ZW50IHRyYW5zYWN0aW9uIGNhbiBjYXVzZSBkZWFkbG9jayBvciB0cmFuc2FjdGlvbiBkZXBlbmRl bmN5IGlzc3Vlcy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFy ZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTAyNSw3ICsxMTk3LDcgQEAgYXBwbHlfaGFuZGxlX2NvbW1p dF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJ cGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBh cmVfZGF0YS5lbmRfbHNuKTsKKwlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5k X2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNl OwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBp biBwYXJhbGxlbC4gKi8KQEAgLTEwMzksNiArMTIxMSwxMiBAQCBhcHBseV9oYW5kbGVfY29tbWl0 X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBhIFJPTExCQUNLIFBSRVBB UkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJFRCBUUkFOU0FDVElPTi4KKyAqCisgKiBOb3RlIHRo YXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVw YXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIEluIHRoYXQgY2FzZSwgd2UgaGF2 ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUKKyAqIHRvIGZpbmlzaCBpbiBhcHBseV9o YW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVuc3VyZSBhbGwgdGhlCisgKiBvcGVy YXRpb25zIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJl ciwgc28gbm8KKyAqIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb24gY2FuIGNhdXNlIGRlYWRsb2NrIG9y IHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kgaXNzdWVzLgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlf aGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKQEAgLTEwODAsNyArMTI1OCw3 IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAKIAlwZ3N0 YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tf ZGF0YS5yb2xsYmFja19lbmRfbHNuKTsKKwlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19k YXRhLnJvbGxiYWNrX2VuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAlpbl9yZW1vdGVfdHJh bnNhY3Rpb24gPSBmYWxzZTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWlu ZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCkBAIC0xMDkyLDE1ICsxMjcwLDE2IEBAIGFw cGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAKIC8qCiAgKiBIYW5k bGUgU1RSRUFNIFBSRVBBUkUuCi0gKgotICogTG9naWMgaXMgaW4gdHdvIHBhcnRzOgotICogMS4g UmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zCi0gKiAyLiBNYXJrIHRoZSB0cmFuc2Fj dGlvbiBhcyBwcmVwYXJlZAogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9w cmVwYXJlKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhIHByZXBh cmVfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFj dGlvbiBhcHBseV9hY3Rpb247CisKKwkvKiBTYXZlIHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBj b25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKIAogCWlmIChp bl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTExMTYsMjQgKzEy OTUsOTggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAlsb2dp Y2FscmVwX3JlYWRfc3RyZWFtX3ByZXBhcmUocywgJnByZXBhcmVfZGF0YSk7CiAJc2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfeGFjdChwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFy ZV9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNlaXZlZCBwcmVwYXJlIGZvciBzdHJlYW1lZCB0 cmFuc2FjdGlvbiAldSIsIHByZXBhcmVfZGF0YS54aWQpOworCWFwcGx5X2FjdGlvbiA9IGdldF90 cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocHJlcGFyZV9kYXRhLnhpZCwgJndpbmZvKTsKIAotCS8q IFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4gKi8KLQlhcHBseV9zcG9vbGVkX21l c3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CisJc3dp dGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAK LQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KLQlhcHBseV9oYW5kbGVf cHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKwkJCS8qCisJCQkgKiBUaGUgdHJhbnNh Y3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBmaWxlLCBzbyByZXBsYXkgYWxsIHRoZQorCQkJ ICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJCQlhcHBseV9zcG9vbGVkX21lc3NhZ2Vz KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQsCisJCQkJCQkJCSAgIHByZXBhcmVf ZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CiAKLQlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwor CQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CiAKLQlwZ3N0 YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK LQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCQlzdG9yZV9m bHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwog Ci0JaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rp b24gPSBmYWxzZTsKKworCQkJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hh bmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisKKwkJCWVsb2coREVCVUcx LCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIFBSRVBBUkUgY29tbWFuZCIpOworCQkJ YnJlYWs7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFu ZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRf VE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQlpZiAocGFfc2VuZF9kYXRhKHdp bmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQkJcGFfeGFjdF9maW5pc2god2luZm8sIHBy ZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFN3 aXRjaCB0byBzZXJpYWxpemUgbW9kZSB3aGVuIHdlIGFyZSBub3QgYWJsZSB0byBzZW5kIHRoZQor CQkJICogY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJCSAqLworCQkJcGFfc3dp dGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCB0cnVlKTsKKworCQkJLyogZmFsbCB0aHJv dWdoICovCisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJQXNzZXJ0 KHdpbmZvKTsKKworCQkJc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZShwcmVwYXJlX2RhdGEu eGlkLAorCQkJCQkJCQkJCSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BSRVBBUkUsCisJCQkJCQkJ CQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hh cmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisKKwkJCS8qIEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgcHJlcGFy ZV9kYXRhLmVuZF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBM WToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXBwbHlp bmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9zZSB0aGUgZmlsZSBiZWZvcmUgcHJl cGFyaW5nLgorCQkJICovCisJCQlpZiAoc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9maWxl KCk7CisKKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQkJLyogTWFyayB0aGUgdHJh bnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5h bCgmcHJlcGFyZV9kYXRhKTsKKworCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKworCQkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCU15UGFyYWxsZWxTaGFyZWQtPmxhc3RfY29t bWl0X2VuZCA9IFhhY3RMYXN0Q29tbWl0RW5kOworCisJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBh cmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisJCQlwYV91bmxvY2tfdHJh bnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwor CQkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9j ZXNzaW5nIHRoZSBTVFJFQU0gUFJFUEFSRSBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZh dWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRf c3RhdChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3lu Y2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFy ZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE3MSwyNyArMTQyNCw2NCBAQCBhcHBseV9oYW5kbGVfb3Jp Z2luKFN0cmluZ0luZm8gcykKIH0KIAogLyoKKyAqIEluaXRpYWxpemUgZmlsZXNldCAoaWYgbm90 IGFscmVhZHkgZG9uZSkuCisgKgorICogQ3JlYXRlIGEgbmV3IGZpbGUgd2hlbiBmaXJzdF9zZWdt ZW50IGlzIHRydWUsIG90aGVyd2lzZSBvcGVuIHRoZSBleGlzdGluZworICogZmlsZS4KKyAqLwor dm9pZAorc3RyZWFtX3N0YXJ0X2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0 X3NlZ21lbnQpCit7CisJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJLyoKKwkgKiBJbml0 aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhp cyB3aWxsIGJlCisJICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2Vy IHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAorCSAqIGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlz IG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55CisJICogdHJhbnNh Y3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNh Y3Rpb25zLgorCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQg b2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAorCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0 IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCSAqLworCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5z dHJlYW1fZmlsZXNldCkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCisJCW9sZGN0eCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJCU15TG9naWNhbFJlcFdv cmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKKwkJRmlsZVNl dEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisKKwkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCisJLyogT3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3Ig dGhpcyB0cmFuc2FjdGlvbi4gKi8KKwlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHhpZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkvKiBJZiB0aGlzIGlzIG5vdCB0aGUg Zmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCisJaWYgKCFmaXJz dF9zZWdtZW50KQorCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1Ymlk LCB4aWQpOworCisJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKK30KKworLyoKICAqIEhhbmRsZSBT VFJFQU0gU1RBUlQgbWVzc2FnZS4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJl YW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogewogCWJvb2wJCWZpcnN0X3NlZ21lbnQ7CisJUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9u OworCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3Ry aW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9W SU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImR1cGxpY2F0ZSBTVFJFQU0gU1RBUlQg bWVzc2FnZSIpKSk7CiAKLQkvKgotCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0 YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkCi0JICogb24gdGhlIHN0cmVh bSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4gd2hpY2ggY2FzZSBpdAot CSAqIHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4g V2UgbmVlZCB0aGUKLQkgKiB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsIHVz ZWQgZm9yIHNlcmlhbGl6aW5nIHRoZQotCSAqIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGlu Zm8uCi0JICovCi0JYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwotCiAJLyogbm90aWZ5IGhhbmRs ZSBtZXRob2RzIHdlJ3JlIHByb2Nlc3NpbmcgYSByZW1vdGUgdHJhbnNhY3Rpb24gKi8KIAlpbl9z dHJlYW1lZF90cmFuc2FjdGlvbiA9IHRydWU7CiAKQEAgLTEyMDUsNTQgKzE0OTUsMTEzIEBAIGFw cGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCiAJc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfeGFjdChzdHJlYW1feGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAKLQkvKgotCSAq IEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0 LiBUaGlzIHdpbGwgYmUKLQkgKiB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3 b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50Ci0JICogY29udGV4dC4gV2UgY3JlYXRl IHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkKLQkgKiB0 cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90aGVyIHN0cmVhbWluZyB0 cmFuc2FjdGlvbnMuCi0JICogTm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBz dGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0Ci0JICogdGhlbiB3ZSB3b24ndCBiZSBzdXJl IHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCi0JICovCi0JaWYgKE15TG9naWNhbFJlcFdvcmtl ci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwkvKiBUcnkgdG8gYWxsb2NhdGUgYSB3b3JrZXIg Zm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJaWYgKGZpcnN0X3NlZ21lbnQpCisJ CXBhX2FsbG9jYXRlX3dvcmtlcihzdHJlYW1feGlkKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90 cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKKworCXN3aXRjaCAo YXBwbHlfYWN0aW9uKQogCXsKLQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNhc2UgVFJBTlNf TEVBREVSX1NFUklBTElaRToKIAotCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBw bHlDb250ZXh0KTsKKwkJCS8qCisJCQkgKiBGdW5jdGlvbiBzdHJlYW1fc3RhcnRfaW50ZXJuYWwg c3RhcnRzIGEgdHJhbnNhY3Rpb24uIFRoaXMKKwkJCSAqIHRyYW5zYWN0aW9uIHdpbGwgYmUgY29t bWl0dGVkIG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYQorCQkJICogdGFibGVzeW5j IHdvcmtlciBpbiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyCisJCQkgKiBw cm9jZXNzaW5nIGFsbCB0aGUgbWVzc2FnZXMuIFdlIG5lZWQgdGhpcyB0cmFuc2FjdGlvbiBmb3IK KwkJCSAqIGhhbmRsaW5nIHRoZSBCdWZGaWxlLCB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUgc3Ry ZWFtaW5nIGRhdGEKKwkJCSAqIGFuZCBzdWJ4YWN0IGluZm8uCisJCQkgKi8KKwkJCXN0cmVhbV9z dGFydF9pbnRlcm5hbChzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJCWJyZWFrOwogCi0J CU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVT ZXQpKTsKLQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7 CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8p OwogCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwotCX0KKwkJCS8qCisJCQkgKiBP bmNlIHdlIHN0YXJ0IHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLCB0aGUgcGFyYWxsZWwgYXBwbHkK KwkJCSAqIHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8gcmVsZWFzZSB0aGUgc3Ry ZWFtIGxvY2sKKwkJCSAqIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLiBTbywgd2Ug ZG9uJ3QgbmVlZCB0byByZWxlYXNlCisJCQkgKiB0aGUgbG9jayBvciBpbmNyZW1lbnQgdGhlIHN0 cmVhbSBjb3VudCBpbiB0aGF0IGNhc2UuCisJCQkgKi8KKwkJCWlmIChwYV9zZW5kX2RhdGEod2lu Zm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBVbmxvY2sgdGhlIHNo YXJlZCBvYmplY3QgbG9jayBzbyB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseQorCQkJCSAqIHdvcmtl ciBjYW4gY29udGludWUgdG8gcmVjZWl2ZSBjaGFuZ2VzLgorCQkJCSAqLworCQkJCWlmICghZmly c3Rfc2VnbWVudCkKKwkJCQkJcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2spOwogCi0JLyogb3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0 cmFuc2FjdGlvbiAqLwotCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCQkJLyoKKwkJCQkgKiBJbmNyZW1lbnQg dGhlIG51bWJlciBvZiBzdHJlYW1pbmcgYmxvY2tzIHdhaXRpbmcgdG8gYmUKKwkJCQkgKiBwcm9j ZXNzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJCSAqLworCQkJCXBnX2F0b21pY19h ZGRfZmV0Y2hfdTMyKCZ3aW5mby0+c2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCwgMSk7CiAK LQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4 YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCXN1YnhhY3RfaW5mb19yZWFkKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQkJCS8qIENhY2hlIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQkJcGFfc2V0 X3N0cmVhbV9hcHBseV93b3JrZXIod2luZm8pOworCQkJCWJyZWFrOworCQkJfQogCi0JcGdzdGF0 X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKKwkJCS8qCisJCQkgKiBTd2l0 Y2ggdG8gc2VyaWFsaXplIG1vZGUgd2hlbiB3ZSBhcmUgbm90IGFibGUgdG8gc2VuZCB0aGUKKwkJ CSAqIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXBhX3N3aXRj aF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgIWZpcnN0X3NlZ21lbnQpOwogCi0JZW5kX3Jl cGxpY2F0aW9uX3N0ZXAoKTsKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xF QURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkg KiBPcGVuIHRoZSBzcG9vbCBmaWxlIHVubGVzcyBpdCB3YXMgYWxyZWFkeSBvcGVuZWQgd2hlbiBz d2l0Y2hpbmcKKwkJCSAqIHRvIHNlcmlhbGl6ZSBtb2RlLiBUaGUgdHJhbnNhY3Rpb24gc3RhcnRl ZCBpbgorCQkJICogc3RyZWFtX3N0YXJ0X2ludGVybmFsIHdpbGwgYmUgY29tbWl0dGVkIG9uIHRo ZSBzdHJlYW0gc3RvcC4KKwkJCSAqLworCQkJaWYgKGFwcGx5X2FjdGlvbiAhPSBUUkFOU19MRUFE RVJfU0VORF9UT19QQVJBTExFTCkKKwkJCQlzdHJlYW1fc3RhcnRfaW50ZXJuYWwoc3RyZWFtX3hp ZCwgZmlyc3Rfc2VnbWVudCk7CisKKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoTE9HSUNBTF9SRVBf TVNHX1NUUkVBTV9TVEFSVCwgJm9yaWdpbmFsX21zZyk7CisKKwkJCS8qIENhY2hlIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlwYV9zZXRfc3Ry ZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFM TEVMX0FQUExZOgorCQkJaWYgKGZpcnN0X3NlZ21lbnQpCisJCQl7CisJCQkJLyogSG9sZCB0aGUg bG9jayB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV9sb2NrX3Ry YW5zYWN0aW9uKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJ CQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfU1RB UlRFRCk7CisJCQl9CisKKwkJCXBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyA9IDA7CisJCQlicmVh azsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJyZWFrOworCX0KKworCXBn c3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CiB9CiAKIC8qCi0gKiBI YW5kbGUgU1RSRUFNIFNUT1AgbWVzc2FnZS4KKyAqIFVwZGF0ZSB0aGUgaW5mb3JtYXRpb24gYWJv dXQgc3VieGFjdHMgYW5kIGNsb3NlIHRoZSBmaWxlLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gc2hv dWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBzdHJlYW1fc3RhcnRfaW50ZXJuYWwgZnVuY3Rpb24gaGFz CisgKiBiZWVuIGNhbGxlZC4KICAqLwotc3RhdGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJlYW1f c3RvcChTdHJpbmdJbmZvIHMpCit2b2lkCitzdHJlYW1fc3RvcF9pbnRlcm5hbChUcmFuc2FjdGlv bklkIHhpZCkKIHsKLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQotCQllcmVwb3J0KEVS Uk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkgZXJy bXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUQVJUIikp KTsKLQogCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFu ZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0cyBmb3IgdGhlIHRvcGxl dmVsIHRyYW5zYWN0aW9uLgorCSAqIFNlcmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91dCBzdWJ4YWN0 cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLCB0aGVuCisJICogY2xvc2UgdGhlIHN0cmVh bSBtZXNzYWdlcyBzcG9vbCBmaWxlLgogCSAqLwotCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwlzdWJ4YWN0X2luZm9fd3JpdGUoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKIAlzdHJlYW1fY2xvc2VfZmlsZSgpOwogCiAJ LyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCkBAIC0xMjYxLDQw ICsxNjEwLDEyNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQogCS8q IENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLwogCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOwogCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKLQogCS8qIFJl c2V0IHBlci1zdHJlYW0gY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3Ry ZWFtaW5nQ29udGV4dCk7Ci0KLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5V TEwpOwotCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQogCiAvKgotICogSGFu ZGxlIFNUUkVBTSBhYm9ydCBtZXNzYWdlLgorICogSGFuZGxlIFNUUkVBTSBTVE9QIG1lc3NhZ2Uu CiAgKi8KIHN0YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g cykKK2FwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNhY3Rp b25JZCB4aWQ7Ci0JVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwogCi0JaWYgKGluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAot CQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFN IFNUT1AiKSkpOworCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBTVE9QIG1lc3NhZ2Ugd2l0 aG91dCBTVFJFQU0gU1RBUlQiKSkpOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9u X2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rp b24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisJCQlzdHJlYW1fc3RvcF9p bnRlcm5hbChzdHJlYW1feGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NF TkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogTG9jayBi ZWZvcmUgc2VuZGluZyB0aGUgU1RSRUFNX1NUT1AgbWVzc2FnZSBzbyB0aGF0IHRoZSBsZWFkZXIK KwkJCSAqIGNhbiBob2xkIHRoZSBsb2NrIGZpcnN0IGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyIHdpbGwgd2FpdAorCQkJICogZm9yIGxlYWRlciB0byByZWxlYXNlIHRoZSBsb2NrLiBTZWUg TG9ja2luZyBDb25zaWRlcmF0aW9ucyBhdG9wCisJCQkgKiBhcHBseXBhcmFsbGVsd29ya2VyLmMu CisJCQkgKi8KKwkJCXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhj bHVzaXZlTG9jayk7CisKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0 YSkpCisJCQl7CisJCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoTlVMTCk7CisJCQkJYnJl YWs7CisJCQl9CisKKwkJCS8qCisJCQkgKiBTd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUgd2hlbiB3 ZSBhcmUgbm90IGFibGUgdG8gc2VuZCB0aGUKKwkJCSAqIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5m bywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9Q QVJUSUFMX1NFUklBTElaRToKKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoTE9HSUNBTF9SRVBfTVNH X1NUUkVBTV9TVE9QLCBzKTsKKwkJCXN0cmVhbV9zdG9wX2ludGVybmFsKHN0cmVhbV94aWQpOwor CQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIoTlVMTCk7CisJCQlicmVhazsKKworCQljYXNl IFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJZWxvZyhERUJVRzEsICJhcHBsaWVkICV1IGNoYW5n ZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVuayIsCisJCQkJIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdl cyk7CisKKwkJCS8qCisJCQkgKiBCeSB0aGUgdGltZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMg cHJvY2Vzc2luZyB0aGUgY2hhbmdlcyBpbgorCQkJICogdGhlIGN1cnJlbnQgc3RyZWFtaW5nIGJs b2NrLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBtYXkgaGF2ZQorCQkJICogc2VudCBtdWx0aXBs ZSBzdHJlYW1pbmcgYmxvY2tzLiBUaGlzIGNhbiBsZWFkIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkg KiB3b3JrZXIgc3RhcnQgd2FpdGluZyBldmVuIHdoZW4gdGhlcmUgYXJlIG1vcmUgY2h1bmsgb2Yg c3RyZWFtcworCQkJICogaW4gdGhlIHF1ZXVlLiBTbywgdHJ5IHRvIGxvY2sgb25seSBpZiB0aGVy ZSBpcyBubyBtZXNzYWdlIGxlZnQKKwkJCSAqIGluIHRoZSBxdWV1ZS4gU2VlIExvY2tpbmcgQ29u c2lkZXJhdGlvbnMgYXRvcAorCQkJICogYXBwbHlwYXJhbGxlbHdvcmtlci5jLgorCQkJICoKKwkJ CSAqIE5vdGUgdGhhdCBoZXJlIHdlIGhhdmUgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB3ZSBjYW4g c3RhcnQKKwkJCSAqIHdhaXRpbmcgZXZlbiB3aGVuIHRoZXJlIGFyZSBwZW5kaW5nIHN0cmVhbWlu ZyBjaHVua3MuIFRoaXMgY2FuCisJCQkgKiBoYXBwZW4gaWYgdGhlIGxlYWRlciBzZW5kcyBhbm90 aGVyIHN0cmVhbWluZyBibG9jayBhbmQgYWNxdWlyZXMKKwkJCSAqIHRoZSBzdHJlYW0gbG9jayBh Z2FpbiBhZnRlciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNoZWNrcworCQkJICogdGhhdCB0 aGVyZSBpcyBubyBwZW5kaW5nIHN0cmVhbWluZyBibG9jayBhbmQgYmVmb3JlIGl0IGFjdHVhbGx5 CisJCQkgKiBzdGFydHMgd2FpdGluZyBvbiBhIGxvY2suIFdlIGNhbiBoYW5kbGUgdGhpcyBjYXNl IGJ5IG5vdAorCQkJICogYWxsb3dpbmcgdGhlIGxlYWRlciB0byBpbmNyZW1lbnQgdGhlIHN0cmVh bSBibG9jayBjb3VudCBkdXJpbmcKKwkJCSAqIHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBhY3F1aXJlcyB0aGUgbG9jayBidXQgaXQgaXMgbm90CisJCQkgKiBjbGVhciB3aGV0aGVyIHRo YXQgaXMgd29ydGggdGhlIGNvbXBsZXhpdHkuCisJCQkgKgorCQkJICogTm93LCBpZiB0aGlzIG1p c3NlZCBjaHVuayBjb250YWlucyByb2xsYmFjayB0byBzYXZlcG9pbnQsIHRoZW4KKwkJCSAqIHRo ZXJlIGlzIGEgcmlzayBvZiBkZWFkbG9jayB3aGljaCBwcm9iYWJseSBzaG91bGRuJ3QgaGFwcGVu CisJCQkgKiBhZnRlciByZXN0YXJ0LgorCQkJICovCisJCQlwYV9kZWNyX2FuZF93YWl0X3N0cmVh bV9ibG9jaygpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJ CQlicmVhazsKKwl9CisKKwlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJLyoK KwkgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNvdWxkIGJlIGluIGEgdHJhbnNhY3Rpb24g aW4gd2hpY2ggY2FzZSB3ZQorCSAqIG5lZWQgdG8gcmVwb3J0IHRoZSBzdGF0ZSBhcyBTVEFURV9J RExFSU5UUkFOU0FDVElPTi4KKwkgKi8KKwlpZiAoSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25C bG9jaygpKQorCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9O LCBOVUxMKTsKKwllbHNlCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVM TCk7CiAKLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4aWQsICZzdWJ4aWQpOwor CXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOworfQogCisvKgorICogSGVscGVyIGZ1 bmN0aW9uIHRvIGhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlv biB3YXMKKyAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK3N0cmVhbV9h Ym9ydF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCwgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCit7 CiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJv cnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0IGRlbGV0ZSB0aGUgZmlsZXMgd2l0aCBz ZXJpYWxpemVkIGluZm8uCiAJICovCiAJaWYgKHhpZCA9PSBzdWJ4aWQpCi0JewotCQlzZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCQlzdHJlYW1f Y2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwotCX0KIAllbHNl CiAJewogCQkvKgpAQCAtMTMxOCw4ICsxNzUxLDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIHMpCiAJCWJvb2wJCWZvdW5kID0gZmFsc2U7CiAJCWNoYXIJCXBhdGhbTUFY UEdQQVRIXTsKIAotCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgSW52YWxp ZFhMb2dSZWNQdHIpOwotCiAJCXN1YmlkeCA9IC0xOwogCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVw KCk7CiAJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7 CkBAIC0xMzQ0LDQ3ICsxNzc1LDIzNyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmlu Z0luZm8gcykKIAkJCWNsZWFudXBfc3VieGFjdF9pbmZvKCk7CiAJCQllbmRfcmVwbGljYXRpb25f c3RlcCgpOwogCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Ci0JCQlyZXNldF9hcHBseV9l cnJvcl9jb250ZXh0X2luZm8oKTsKIAkJCXJldHVybjsKIAkJfQogCi0JCS8qIG9wZW4gdGhlIGNo YW5nZXMgZmlsZSAqLwotCQljaGFuZ2VzX2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHhpZCk7Ci0JCWZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KE15TG9naWNhbFJlcFdv cmtlci0+c3RyZWFtX2ZpbGVzZXQsIHBhdGgsCi0JCQkJCQkJCU9fUkRXUiwgZmFsc2UpOworCQkv KiBvcGVuIHRoZSBjaGFuZ2VzIGZpbGUgKi8KKwkJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQlmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChN eUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCBwYXRoLAorCQkJCQkJCQlPX1JEV1Is IGZhbHNlKTsKKworCQkvKiBPSywgdHJ1bmNhdGUgdGhlIGZpbGUgYXQgdGhlIHJpZ2h0IG9mZnNl dCAqLworCQlCdWZGaWxlVHJ1bmNhdGVGaWxlU2V0KGZkLCBzdWJ4YWN0X2RhdGEuc3VieGFjdHNb c3ViaWR4XS5maWxlbm8sCisJCQkJCQkJICAgc3VieGFjdF9kYXRhLnN1YnhhY3RzW3N1YmlkeF0u b2Zmc2V0KTsKKwkJQnVmRmlsZUNsb3NlKGZkKTsKKworCQkvKiBkaXNjYXJkIHRoZSBzdWJ4YWN0 cyBhZGRlZCBsYXRlciAqLworCQlzdWJ4YWN0X2RhdGEubnN1YnhhY3RzID0gc3ViaWR4OworCisJ CS8qIHdyaXRlIHRoZSB1cGRhdGVkIHN1YnhhY3QgbGlzdCAqLworCQlzdWJ4YWN0X2luZm9fd3Jp dGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKKworCQllbmRfcmVwbGljYXRpb25f c3RlcCgpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwl9Cit9CisKKy8qCisgKiBI YW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5k bGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlU cmFuc2FjdGlvbklkIHN1YnhpZDsKKwlMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhIGFib3J0X2Rh dGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24g YXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3Vt ZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CisJYm9vbAkJdG9wbGV2 ZWxfeGFjdDsKKworCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJIGVycm1z Z19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7 CisKKwkvKiBXZSByZWNlaXZlIGFib3J0IGluZm9ybWF0aW9uIG9ubHkgd2hlbiB3ZSBjYW4gYXBw bHkgaW4gcGFyYWxsZWwuICovCisJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmYWJv cnRfZGF0YSwKKwkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkpOwor CisJeGlkID0gYWJvcnRfZGF0YS54aWQ7CisJc3VieGlkID0gYWJvcnRfZGF0YS5zdWJ4aWQ7CisJ dG9wbGV2ZWxfeGFjdCA9ICh4aWQgPT0gc3VieGlkKTsKKworCXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3Qoc3VieGlkLCBhYm9ydF9kYXRhLmFib3J0X2xzbik7CisKKwlhcHBseV9hY3Rpb24g PSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHhpZCwgJndpbmZvKTsKKworCXN3aXRjaCAo YXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCisJCQkv KgorCQkJICogV2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgdHJhbnNh Y3Rpb24gaGFzIGJlZW4KKwkJCSAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KKwkJCSAqLworCQkJc3Ry ZWFtX2Fib3J0X2ludGVybmFsKHhpZCwgc3VieGlkKTsKKworCQkJZWxvZyhERUJVRzEsICJmaW5p c2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gQUJPUlQgY29tbWFuZCIpOworCQkJYnJlYWs7CisK KwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7 CisKKwkJCS8qCisJCQkgKiBGb3IgdGhlIGNhc2Ugb2YgYWJvcnRpbmcgdGhlIHN1YnRyYW5zYWN0 aW9uLCB3ZSBpbmNyZW1lbnQgdGhlCisJCQkgKiBudW1iZXIgb2Ygc3RyZWFtaW5nIGJsb2NrcyBh bmQgdGFrZSB0aGUgbG9jayBhZ2FpbiBiZWZvcmUKKwkJCSAqIHNlbmRpbmcgdGhlIFNUUkVBTV9B Qk9SVCB0byBlbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3aWxs IHdhaXQgb24gdGhlIGxvY2sgZm9yIHRoZSBuZXh0IHNldCBvZiBjaGFuZ2VzIGFmdGVyCisJCQkg KiBwcm9jZXNzaW5nIHRoZSBTVFJFQU1fQUJPUlQgbWVzc2FnZSBpZiBpdCBpcyBub3QgYWxyZWFk eQorCQkJICogd2FpdGluZyBmb3IgU1RSRUFNX1NUT1AgbWVzc2FnZS4KKwkJCSAqCisJCQkgKiBJ dCBpcyBpbXBvcnRhbnQgdG8gcGVyZm9ybSB0aGlzIGxvY2tpbmcgYmVmb3JlIHNlbmRpbmcgdGhl CisJCQkgKiBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbyB0aGF0IHRoZSBsZWFkZXIgY2FuIGhvbGQg dGhlIGxvY2sgZmlyc3QKKwkJCSAqIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwg d2FpdCBmb3IgdGhlIGxlYWRlciB0bworCQkJICogcmVsZWFzZSB0aGUgbG9jay4gVGhpcyBpcyB0 aGUgc2FtZSBhcyB3aGF0IHdlIGRvIGluCisJCQkgKiBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3Au IFNlZSBMb2NraW5nIENvbnNpZGVyYXRpb25zIGF0b3AKKwkJCSAqIGFwcGx5cGFyYWxsZWx3b3Jr ZXIuYy4KKwkJCSAqLworCQkJaWYgKCF0b3BsZXZlbF94YWN0KQorCQkJeworCQkJCXBhX3VubG9j a19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCQlwZ19hdG9taWNfYWRkX2Zl dGNoX3UzMigmd2luZm8tPnNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQsIDEpOworCQkJCXBh X2xvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQl9CisKKwkJCWlmIChw YV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJLyoKKwkJCQkg KiBVbmxpa2UgU1RSRUFNX0NPTU1JVCBhbmQgU1RSRUFNX1BSRVBBUkUsIHdlIGRvbid0IG5lZWQg dG8KKwkJCQkgKiB3YWl0IGhlcmUgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gZmlu aXNoIGFzIHRoYXQKKwkJCQkgKiBpcyBub3QgcmVxdWlyZWQgdG8gbWFpbnRhaW4gdGhlIGNvbW1p dCBvcmRlciBhbmQgd29uJ3QgaGF2ZQorCQkJCSAqIHRoZSByaXNrIG9mIGZhaWx1cmVzIGR1ZSB0 byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCQkJICogZGVhZGxvY2tzLiBIb3dldmVy LCBpdCBpcyBwb3NzaWJsZSB0aGF0IGJlZm9yZSB0aGUgcGFyYWxsZWwKKwkJCQkgKiB3b3JrZXIg ZmluaXNoZXMgYW5kIHdlIGNsZWFyIHRoZSB3b3JrZXIgaW5mbywgdGhlIHhpZAorCQkJCSAqIHdy YXBhcm91bmQgaGFwcGVucyBvbiB0aGUgdXBzdHJlYW0gYW5kIGEgbmV3IHRyYW5zYWN0aW9uCisJ CQkJICogd2l0aCB0aGUgc2FtZSB4aWQgY2FuIGFwcGVhciBhbmQgdGhhdCBjYW4gbGVhZCB0byBk dXBsaWNhdGUKKwkJCQkgKiBlbnRyaWVzIGluIFBhcmFsbGVsQXBwbHlUeG5IYXNoLiBZZXQgYW5v dGhlciBwcm9ibGVtIGNvdWxkCisJCQkJICogYmUgdGhhdCB3ZSBtYXkgaGF2ZSBzZXJpYWxpemVk IHRoZSBjaGFuZ2VzIGluIHBhcnRpYWwKKwkJCQkgKiBzZXJpYWxpemUgbW9kZSBhbmQgdGhlIGZp bGUgY29udGFpbmluZyB4YWN0IGNoYW5nZXMgbWF5CisJCQkJICogYWxyZWFkeSBleGlzdCwgYW5k IGFmdGVyIHhpZCB3cmFwYXJvdW5kIHRyeWluZyB0byBjcmVhdGUKKwkJCQkgKiB0aGUgZmlsZSBm b3IgdGhlIHNhbWUgeGlkIGNhbiBsZWFkIHRvIGFuIGVycm9yLiBUbyBhdm9pZAorCQkJCSAqIHRo ZXNlIHByb2JsZW1zLCB3ZSBkZWNpZGUgdG8gd2FpdCBmb3IgdGhlIGFib3J0cyB0byBmaW5pc2gu CisJCQkJICoKKwkJCQkgKiBOb3RlLCBpdCBpcyBva2F5IHRvIG5vdCB1cGRhdGUgdGhlIGZsdXNo IGxvY2F0aW9uIHBvc2l0aW9uCisJCQkJICogZm9yIGFib3J0cyBhcyBpbiB3b3JzdCBjYXNlIHRo YXQgbWVhbnMgc3VjaCBhIHRyYW5zYWN0aW9uCisJCQkJICogd29uJ3QgYmUgc2VudCBhZ2FpbiBh ZnRlciByZXN0YXJ0LgorCQkJCSAqLworCQkJCWlmICh0b3BsZXZlbF94YWN0KQorCQkJCQlwYV94 YWN0X2ZpbmlzaCh3aW5mbywgSW52YWxpZFhMb2dSZWNQdHIpOworCisJCQkJYnJlYWs7CisJCQl9 CisKKwkJCS8qCisJCQkgKiBTd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUgd2hlbiB3ZSBhcmUgbm90 IGFibGUgdG8gc2VuZCB0aGUKKwkJCSAqIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgdHJ1ZSk7 CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NF UklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBQYXJhbGxlbCBhcHBs eSB3b3JrZXIgbWlnaHQgaGF2ZSBhcHBsaWVkIHNvbWUgY2hhbmdlcywgc28gd3JpdGUKKwkJCSAq IHRoZSBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbyB0aGF0IGl0IGNhbiByb2xsYmFjayB0aGUKKwkJ CSAqIHN1YnRyYW5zYWN0aW9uIGlmIG5lZWRlZC4KKwkJCSAqLworCQkJc3RyZWFtX29wZW5fYW5k X3dyaXRlX2NoYW5nZSh4aWQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQsCisJCQkJCQkJ CQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlpZiAodG9wbGV2ZWxfeGFjdCkKKwkJCXsKKwkJCQlw YV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfRE9ORSk7CisJ CQkJcGFfeGFjdF9maW5pc2god2luZm8sIEludmFsaWRYTG9nUmVjUHRyKTsKKwkJCX0KKwkJCWJy ZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisKKwkJCS8qCisJCQkgKiBJZiB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5nIHNwb29sZWQgbWVzc2FnZXMgdGhl bgorCQkJICogY2xvc2UgdGhlIGZpbGUgYmVmb3JlIGFib3J0aW5nLgorCQkJICovCisJCQlpZiAo dG9wbGV2ZWxfeGFjdCAmJiBzdHJlYW1fZmQpCisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKwor CQkJcGFfc3RyZWFtX2Fib3J0KCZhYm9ydF9kYXRhKTsKKworCQkJLyoKKwkJCSAqIFdlIG5lZWQg dG8gd2FpdCBhZnRlciBwcm9jZXNzaW5nIHJvbGxiYWNrIHRvIHNhdmVwb2ludCBmb3IgdGhlCisJ CQkgKiBuZXh0IHNldCBvZiBjaGFuZ2VzLgorCQkJICoKKwkJCSAqIFdlIGhhdmUgYSByYWNlIGNv bmRpdGlvbiBoZXJlIGR1ZSB0byB3aGljaCB3ZSBjYW4gc3RhcnQgd2FpdGluZworCQkJICogaGVy ZSB3aGVuIHRoZXJlIGFyZSBtb3JlIGNodW5rIG9mIHN0cmVhbXMgaW4gdGhlIHF1ZXVlLiBTZWUK KwkJCSAqIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcC4KKwkJCSAqLworCQkJaWYgKCF0b3BsZXZl bF94YWN0KQorCQkJCXBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKCk7CisKKwkJCWVsb2co REVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIEFCT1JUIGNvbW1hbmQiKTsK KwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJ fQorCisJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7Cit9CisKKy8qCisgKiBFbnN1 cmUgdGhhdCB0aGUgcGFzc2VkIGxvY2F0aW9uIGlzIGZpbGVzZXQncyBlbmQuCisgKi8KK3N0YXRp YyB2b2lkCitlbnN1cmVfbGFzdF9tZXNzYWdlKEZpbGVTZXQgKnN0cmVhbV9maWxlc2V0LCBUcmFu c2FjdGlvbklkIHhpZCwgaW50IGZpbGVubywKKwkJCQkJb2ZmX3Qgb2Zmc2V0KQoreworCWNoYXIJ CXBhdGhbTUFYUEdQQVRIXTsKKwlCdWZGaWxlICAgICpmZDsKKwlpbnQJCQlsYXN0X2ZpbGVubzsK KwlvZmZfdAkJbGFzdF9vZmZzZXQ7CisKKwlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKTsK IAotCQkvKiBPSywgdHJ1bmNhdGUgdGhlIGZpbGUgYXQgdGhlIHJpZ2h0IG9mZnNldCAqLwotCQlC dWZGaWxlVHJ1bmNhdGVGaWxlU2V0KGZkLCBzdWJ4YWN0X2RhdGEuc3VieGFjdHNbc3ViaWR4XS5m aWxlbm8sCi0JCQkJCQkJICAgc3VieGFjdF9kYXRhLnN1YnhhY3RzW3N1YmlkeF0ub2Zmc2V0KTsK LQkJQnVmRmlsZUNsb3NlKGZkKTsKKwliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkJLyog ZGlzY2FyZCB0aGUgc3VieGFjdHMgYWRkZWQgbGF0ZXIgKi8KLQkJc3VieGFjdF9kYXRhLm5zdWJ4 YWN0cyA9IHN1YmlkeDsKKwljaGFuZ2VzX2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHhpZCk7CiAKLQkJLyogd3JpdGUgdGhlIHVwZGF0ZWQgc3VieGFjdCBsaXN0ICov Ci0JCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwor CWZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KHN0cmVhbV9maWxlc2V0LCBwYXRoLCBPX1JET05MWSwg ZmFsc2UpOwogCi0JCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0JCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOwotCX0KKwlCdWZGaWxlU2VlayhmZCwgMCwgMCwgU0VFS19FTkQpOworCUJ1ZkZp bGVUZWxsKGZkLCAmbGFzdF9maWxlbm8sICZsYXN0X29mZnNldCk7CiAKLQlyZXNldF9hcHBseV9l cnJvcl9jb250ZXh0X2luZm8oKTsKKwlCdWZGaWxlQ2xvc2UoZmQpOworCisJZW5kX3JlcGxpY2F0 aW9uX3N0ZXAoKTsKKworCWlmIChsYXN0X2ZpbGVubyAhPSBmaWxlbm8gfHwgbGFzdF9vZmZzZXQg IT0gb2Zmc2V0KQorCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBtZXNzYWdlIGxlZnQgaW4gc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdlcyBmaWxlIFwiJXNcIiIsCisJCQkgcGF0aCk7CiB9 CiAKIC8qCiAgKiBDb21tb24gc3Bvb2xmaWxlIHByb2Nlc3NpbmcuCiAgKi8KLXN0YXRpYyB2b2lk Ci1hcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxz bikKK3ZvaWQKK2FwcGx5X3Nwb29sZWRfbWVzc2FnZXMoRmlsZVNldCAqc3RyZWFtX2ZpbGVzZXQs IFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkgICBYTG9nUmVjUHRyIGxzbikKIHsKIAlTdHJpbmdJ bmZvRGF0YSBzMjsKIAlpbnQJCQluY2hhbmdlczsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAJ Y2hhcgkgICAqYnVmZmVyID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKLQlCdWZGaWxl ICAgICpmZDsKKwlSZXNvdXJjZU93bmVyIG9sZG93bmVyOworCWludAkJCWZpbGVubzsKKwlvZmZf dAkJb2Zmc2V0OwogCi0JbWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhsc24pOworCWlmICgh YW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCW1heWJlX3N0YXJ0X3NraXBwaW5nX2NoYW5n ZXMobHNuKTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIG9wZW4gdHJhbnNhY3Rpb24gKi8K IAliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CkBAIC0xNDAwLDggKzIwMjEsMTYgQEAgYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJY2hh bmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCWVs b2coREVCVUcxLCAicmVwbGF5aW5nIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsIHBhdGgpOwog Ci0JZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldCwgcGF0aCwgT19SRE9OTFksCi0JCQkJCQkJZmFsc2UpOworCS8qCisJICogTWFrZSBzdXJl IHRoZSBmaWxlIGlzIG93bmVkIGJ5IHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRo ZQorCSAqIGZpbGUgd2lsbCBub3QgYmUgYWNjaWRlbnRhbGx5IGNsb3NlZCB3aGVuIGFib3J0aW5n IGEgc3VidHJhbnNhY3Rpb24uCisJICovCisJb2xkb3duZXIgPSBDdXJyZW50UmVzb3VyY2VPd25l cjsKKwlDdXJyZW50UmVzb3VyY2VPd25lciA9IFRvcFRyYW5zYWN0aW9uUmVzb3VyY2VPd25lcjsK KworCXN0cmVhbV9mZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChzdHJlYW1fZmlsZXNldCwgcGF0aCwg T19SRE9OTFksIGZhbHNlKTsKKworCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gb2xkb3duZXI7CiAK IAlidWZmZXIgPSBwYWxsb2MoQkxDS1NaKTsKIAlpbml0U3RyaW5nSW5mbygmczIpOwpAQCAtMTQz Miw3ICsyMDYxLDcgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24pCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyogcmVhZCBs ZW5ndGggb2YgdGhlIG9uLWRpc2sgcmVjb3JkICovCi0JCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkKGZk LCAmbGVuLCBzaXplb2YobGVuKSk7CisJCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkKHN0cmVhbV9mZCwg Jmxlbiwgc2l6ZW9mKGxlbikpOwogCiAJCS8qIGhhdmUgd2UgcmVhY2hlZCBlbmQgb2YgdGhlIGZp bGU/ICovCiAJCWlmIChuYnl0ZXMgPT0gMCkKQEAgLTE0NTMsMTIgKzIwODIsMTQgQEAgYXBwbHlf c3Bvb2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJCWJ1 ZmZlciA9IHJlcGFsbG9jKGJ1ZmZlciwgbGVuKTsKIAogCQkvKiBhbmQgZmluYWxseSByZWFkIHRo ZSBkYXRhIGludG8gdGhlIGJ1ZmZlciAqLwotCQlpZiAoQnVmRmlsZVJlYWQoZmQsIGJ1ZmZlciwg bGVuKSAhPSBsZW4pCisJCWlmIChCdWZGaWxlUmVhZChzdHJlYW1fZmQsIGJ1ZmZlciwgbGVuKSAh PSBsZW4pCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3Mo KSwKIAkJCQkJIGVycm1zZygiY291bGQgbm90IHJlYWQgZnJvbSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24ncyBjaGFuZ2VzIGZpbGUgXCIlc1wiOiAlbSIsCiAJCQkJCQkJcGF0aCkpKTsKIAorCQlCdWZG aWxlVGVsbChzdHJlYW1fZmQsICZmaWxlbm8sICZvZmZzZXQpOworCiAJCS8qIGNvcHkgdGhlIGJ1 ZmZlciB0byB0aGUgc3RyaW5naW5mbyBhbmQgY2FsbCBhcHBseV9kaXNwYXRjaCAqLwogCQlyZXNl dFN0cmluZ0luZm8oJnMyKTsKIAkJYXBwZW5kQmluYXJ5U3RyaW5nSW5mbygmczIsIGJ1ZmZlciwg bGVuKTsKQEAgLTE0NzQsMTUgKzIxMDUsMjQgQEAgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhUcmFu c2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAKIAkJbmNoYW5nZXMrKzsKIAorCQkvKgor CQkgKiBJdCBpcyBwb3NzaWJsZSB0aGUgZmlsZSBoYXMgYmVlbiBjbG9zZWQgYmVjYXVzZSB3ZSBo YXZlIHByb2Nlc3NlZAorCQkgKiB0aGUgdHJhbnNhY3Rpb24gZW5kIG1lc3NhZ2UgbGlrZSBzdHJl YW1fY29tbWl0IGluIHdoaWNoIGNhc2UgdGhhdAorCQkgKiBtdXN0IGJlIHRoZSBsYXN0IG1lc3Nh Z2UuCisJCSAqLworCQlpZiAoIXN0cmVhbV9mZCkKKwkJeworCQkJZW5zdXJlX2xhc3RfbWVzc2Fn ZShzdHJlYW1fZmlsZXNldCwgeGlkLCBmaWxlbm8sIG9mZnNldCk7CisJCQlicmVhazsKKwkJfQor CiAJCWlmIChuY2hhbmdlcyAlIDEwMDAgPT0gMCkKIAkJCWVsb2coREVCVUcxLCAicmVwbGF5ZWQg JWQgY2hhbmdlcyBmcm9tIGZpbGUgXCIlc1wiIiwKIAkJCQkgbmNoYW5nZXMsIHBhdGgpOwogCX0K IAotCUJ1ZkZpbGVDbG9zZShmZCk7Ci0KLQlwZnJlZShidWZmZXIpOwotCXBmcmVlKHMyLmRhdGEp OworCWlmIChzdHJlYW1fZmQpCisJCXN0cmVhbV9jbG9zZV9maWxlKCk7CiAKIAllbG9nKERFQlVH MSwgInJlcGxheWVkICVkIChhbGwpIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsCiAJCSBuY2hh bmdlcywgcGF0aCk7CkBAIC0xNDk4LDYgKzIxMzgsMTEgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9j b21taXQoU3RyaW5nSW5mbyBzKQogewogCVRyYW5zYWN0aW9uSWQgeGlkOwogCUxvZ2ljYWxSZXBD b21taXREYXRhIGNvbW1pdF9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsK KwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCS8qIFNhdmUgdGhlIG1lc3NhZ2Ug YmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZyA9 ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApA QCAtMTUwNywxNCArMjE1Miw4NSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJ bmZvIHMpCiAJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQocywgJmNvbW1pdF9k YXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29tbWl0X2RhdGEuY29t bWl0X2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQg dHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9h cHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOwogCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQs IGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJ Y2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRl cm5hbCgmY29tbWl0X2RhdGEpOworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVl biBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9w ZXJhdGlvbnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVw V29ya2VyLT5zdHJlYW1fZmlsZXNldCwgeGlkLAorCQkJCQkJCQkgICBjb21taXRfZGF0YS5jb21t aXRfbHNuKTsKKworCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEp OworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBz dWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQpOworCisJCQllbG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3Npbmcg dGhlIFNUUkVBTSBDT01NSVQgY29tbWFuZCIpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19M RUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCWlmIChwYV9z ZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJLyogRmluaXNoIHBy b2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV94YWN0X2Zpbmlz aCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCS8q CisJCQkgKiBTd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUgd2hlbiB3ZSBhcmUgbm90IGFibGUgdG8g c2VuZCB0aGUKKwkJCSAqIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJCQkgKi8K KwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCS8q IGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToK KwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCXN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoeGlk LCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0NPTU1JVCwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21z Zyk7CisKKwkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTEla RV9ET05FKTsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMg YW5kIHN1YnhhY3QgaW5mbyAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHhpZCk7CisJCQkvKiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUgc3RyZWFtaW5n IHRyYW5zYWN0aW9uLiAqLworCQkJcGFfeGFjdF9maW5pc2god2luZm8sIGNvbW1pdF9kYXRhLmVu ZF9sc24pOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKworCQkJ LyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXBwbHlpbmcgc3Bvb2xl ZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9zZSB0aGUgZmlsZSBiZWZvcmUgY29tbWl0dGluZy4K KwkJCSAqLworCQkJaWYgKHN0cmVhbV9mZCkKKwkJCQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCisJ CQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCU15UGFy YWxsZWxTaGFyZWQtPmxhc3RfY29tbWl0X2VuZCA9IFhhY3RMYXN0Q29tbWl0RW5kOworCisJCQkv KgorCQkJICogSXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgYXMg ZmluaXNoZWQgYmVmb3JlCisJCQkgKiByZWxlYXNpbmcgdGhlIGxvY2suIFNlZSBwYV93YWl0X2Zv cl94YWN0X2ZpbmlzaC4KKwkJCSAqLworCQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNo YXJlZCwgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCQkJcGFfdW5sb2NrX3RyYW5zYWN0aW9u KHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCXBhX3Jlc2V0X3N1YnRyYW5zKCk7CisK KwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIENPTU1JVCBj b21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJ CWJyZWFrOworCX0KIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5j aHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRf ZGF0YS5lbmRfbHNuKTsKQEAgLTE1NTgsOSArMjI3NCwxNiBAQCBhcHBseV9oYW5kbGVfY29tbWl0 X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIAkJcmVwbG9yaWdp bl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBjb21taXRfZGF0YS0+Y29tbWl0dGltZTsKIAog CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlpZiAoSXNUcmFuc2FjdGlvbkJsb2Nr KCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFsc2UpOworCQkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJCX0KKwogCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0J CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLT5lbmRfbHNuKTsKKwkJc3RvcmVfZmx1 c2hfcG9zaXRpb24oY29tbWl0X2RhdGEtPmVuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAl9 CiAJZWxzZQogCXsKQEAgLTI1MDYsNyArMzIyOSw3IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0ZShT dHJpbmdJbmZvIHMpCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNzYWdl IGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChTdHJp bmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShz KTsKQEAgLTI2NzAsMTcgKzMzOTMsMjQgQEAgZ2V0X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIg KndyaXRlLCBYTG9nUmVjUHRyICpmbHVzaCwKIC8qCiAgKiBTdG9yZSBjdXJyZW50IHJlbW90ZS9s b2NhbCBsc24gcGFpciBpbiB0aGUgdHJhY2tpbmcgbGlzdC4KICAqLwotc3RhdGljIHZvaWQKLXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKK3ZvaWQKK3N0b3JlX2Zs dXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgWExvZ1JlY1B0ciBsb2NhbF9sc24p CiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKgorCSAqIFNraXAgZm9yIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMsIGJlY2F1c2UgdGhlIGxzbl9tYXBwaW5nIGlzIG1haW50YWluZWQK KwkgKiBieSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlpZiAoYW1fcGFyYWxsZWxf YXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKwogCS8qIE5lZWQgdG8gZG8gdGhpcyBpbiBwZXJt YW5lbnQgY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwog CiAJLyogVHJhY2sgY29tbWl0IGxzbiAgKi8KIAlmbHVzaHBvcyA9IChGbHVzaFBvc2l0aW9uICop IHBhbGxvYyhzaXplb2YoRmx1c2hQb3NpdGlvbikpOwotCWZsdXNocG9zLT5sb2NhbF9lbmQgPSBY YWN0TGFzdENvbW1pdEVuZDsKKwlmbHVzaHBvcy0+bG9jYWxfZW5kID0gbG9jYWxfbHNuOwogCWZs dXNocG9zLT5yZW1vdGVfZW5kID0gcmVtb3RlX2xzbjsKIAogCWRsaXN0X3B1c2hfdGFpbCgmbHNu X21hcHBpbmcsICZmbHVzaHBvcy0+bm9kZSk7CkBAIC0yNzM5LDYgKzM0NjksNyBAQCBMb2dpY2Fs UmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAllcnJjYWxsYmFjay5jYWxs YmFjayA9IGFwcGx5X2Vycm9yX2NhbGxiYWNrOwogCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJy b3JfY29udGV4dF9zdGFjazsKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOwor CWFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCiAJLyog VGhpcyBvdXRlciBsb29wIGl0ZXJhdGVzIG9uY2UgcGVyIHdhaXQuICovCiAJZm9yICg7OykKQEAg LTI5NTMsNiArMzY4NCw3IEBAIExvZ2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3Jl Y2VpdmVkKQogCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29u dGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworCWFwcGx5X2Vycm9yX2NvbnRleHRf c3RhY2sgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCiAJLyogQWxsIGRvbmUgKi8KIAl3YWxyY3Zf ZW5kc3RyZWFtaW5nKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sICZ0bGkpOwpAQCAtMzA1MSw5ICsz NzgzLDMxIEBAIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBi b29sIHJlcXVlc3RSZXBseSkKIH0KIAogLyoKLSAqIFJlcmVhZCBzdWJzY3JpcHRpb24gaW5mbyBp ZiBuZWVkZWQuIE1vc3QgY2hhbmdlcyB3aWxsIGJlIGV4aXQuCisgKiBFeGl0IHJvdXRpbmUgZm9y IGFwcGx5IHdvcmtlcnMgZHVlIHRvIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgY2hhbmdlcy4KICAq Lwogc3RhdGljIHZvaWQKK2FwcGx5X3dvcmtlcl9leGl0KHZvaWQpCit7CisJaWYgKGFtX3BhcmFs bGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJLyoKKwkJICogRG9uJ3Qgc3RvcCB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGFzIHRoZSBsZWFkZXIgd2lsbCBkZXRlY3QgdGhlCisJCSAqIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIgY2hhbmdlIGFuZCByZXN0YXJ0IGxvZ2ljYWwgcmVwbGljYXRpb24g bGF0ZXIKKwkJICogYW55d2F5LiBUaGlzIGFsc28gcHJldmVudHMgdGhlIGxlYWRlciBmcm9tIHJl cG9ydGluZyBlcnJvcnMgd2hlbgorCQkgKiB0cnlpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCBhIHN0 b3BwZWQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3aGljaAorCQkgKiB3b3VsZCBhY2NpZGVudGFs bHkgZGlzYWJsZSBzdWJzY3JpcHRpb25zIGlmIGRpc2FibGVfb25fZXJyb3Igd2FzCisJCSAqIHNl dC4KKwkJICovCisJCXJldHVybjsKKwl9CisKKwlwcm9jX2V4aXQoMCk7Cit9CisKKy8qCisgKiBS ZXJlYWQgc3Vic2NyaXB0aW9uIGluZm8gaWYgbmVlZGVkLiBNb3N0IGNoYW5nZXMgd2lsbCBiZSBl eGl0LgorICovCit2b2lkCiBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiB7CiAJTWVt b3J5Q29udGV4dCBvbGRjdHg7CkBAIC0zMDgzLDkgKzM4MzcsOSBAQCBtYXliZV9yZXJlYWRfc3Vi c2NyaXB0aW9uKHZvaWQpCiAJaWYgKCFuZXdzdWIpCiAJewogCQllcmVwb3J0KExPRywKLQkJCQko ZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9u IFwiJXNcIiB3aWxsICIKLQkJCQkJCSJzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMg cmVtb3ZlZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRv cjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8K KwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVz ZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgp LCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCQlwcm9jX2V4aXQoMCk7CiAJfQpAQCAtMzA5 NCwxMSArMzg0OCwxMSBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJaWYgKCFu ZXdzdWItPmVuYWJsZWQpCiAJewogCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2Fs IHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsICIK LQkJCQkJCSJzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQiLAotCQkJ CQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlz IHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygi JXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlw dGlvbiB3YXMgZGlzYWJsZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0 aW9uLT5uYW1lKSkpOwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2V4aXQoKTsK IAl9CiAKIAkvKiAhc2xvdG5hbWUgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aGVuIGVuYWJsZWQgaXMg dHJ1ZS4gKi8KQEAgLTMxMDksNyArMzg2MywxMCBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9u KHZvaWQpCiAKIAkvKgogCSAqIEV4aXQgaWYgYW55IHBhcmFtZXRlciB0aGF0IGFmZmVjdHMgdGhl IHJlbW90ZSBjb25uZWN0aW9uIHdhcyBjaGFuZ2VkLgotCSAqIFRoZSBsYXVuY2hlciB3aWxsIHN0 YXJ0IGEgbmV3IHdvcmtlci4KKwkgKiBUaGUgbGF1bmNoZXIgd2lsbCBzdGFydCBhIG5ldyB3b3Jr ZXIgYnV0IG5vdGUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgd29uJ3QgcmVz dGFydCBpZiB0aGUgc3RyZWFtaW5nIG9wdGlvbidzIHZhbHVlIGlzIGNoYW5nZWQgZnJvbQorCSAq ICdwYXJhbGxlbCcgdG8gYW55IG90aGVyIHZhbHVlIG9yIHRoZSBzZXJ2ZXIgZGVjaWRlcyBub3Qg dG8gc3RyZWFtIHRoZQorCSAqIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uLgogCSAqLwogCWlmIChz dHJjbXAobmV3c3ViLT5jb25uaW5mbywgTXlTdWJzY3JpcHRpb24tPmNvbm5pbmZvKSAhPSAwIHx8 CiAJCXN0cmNtcChuZXdzdWItPm5hbWUsIE15U3Vic2NyaXB0aW9uLT5uYW1lKSAhPSAwIHx8CkBA IC0zMTIwLDExICszODc3LDE3IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAkJ bmV3c3ViLT5vd25lciAhPSBNeVN1YnNjcmlwdGlvbi0+b3duZXIgfHwKIAkJIWVxdWFsKG5ld3N1 Yi0+cHVibGljYXRpb25zLCBNeVN1YnNjcmlwdGlvbi0+cHVibGljYXRpb25zKSkKIAl7Ci0JCWVy ZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIG9mIGEgcGFyYW1l dGVyIGNoYW5nZSIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJaWYgKGFtX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQkJZXJlcG9ydChMT0csCisJCQkJCShlcnJtc2coImxv Z2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24g XCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCisJCQkJCQkJ TXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCWVsc2UKKwkJCWVyZXBvcnQoTE9HLAorCQkJLyog dHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3 b3JrZXIgKi8KKwkJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBy ZXN0YXJ0IGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKKwkJCQkJCQlnZXRfd29ya2Vy X25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJvY19leGl0KDApOworCQlh cHBseV93b3JrZXJfZXhpdCgpOwogCX0KIAogCS8qIENoZWNrIGZvciBvdGhlciBjaGFuZ2VzIHRo YXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB0b28uICovCkBAIC0zMzc2LDcgKzQxMzksNyBAQCBjaGFu Z2VzX2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpCiAg KiB0b3BsZXZlbCB0cmFuc2FjdGlvbi4gRWFjaCBzdWJzY3JpcHRpb24gaGFzIGEgc2VwYXJhdGUg c2V0IG9mIGZpbGVzCiAgKiBmb3IgYW55IHRvcGxldmVsIHRyYW5zYWN0aW9uLgogICovCi1zdGF0 aWMgdm9pZAordm9pZAogc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlv bklkIHhpZCkKIHsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CkBAIC0zMzk5LDkgKzQxNjIsNiBA QCBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogICog Ynkgc3RyZWFtX3hpZCAoZ2xvYmFsIHZhcmlhYmxlKS4gSWYgaXQncyB0aGUgZmlyc3QgY2h1bmsg b2Ygc3RyZWFtZWQKICAqIGNoYW5nZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb24sIGNyZWF0ZSB0aGUg YnVmZmlsZSwgb3RoZXJ3aXNlIG9wZW4gdGhlCiAgKiBwcmV2aW91c2x5IGNyZWF0ZWQgZmlsZS4K LSAqCi0gKiBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgInN0 cmVhbWluZyIgYmxvY2ssIGkuZS4KLSAqIGJldHdlZW4gc3RyZWFtX3N0YXJ0L3N0cmVhbV9zdG9w IG1lc3NhZ2VzIGZyb20gdGhlIHVwc3RyZWFtLgogICovCiBzdGF0aWMgdm9pZAogc3RyZWFtX29w ZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQp CkBAIC0zNDA5LDcgKzQxNjksNiBAQCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNh Y3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07 CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKLQlBc3NlcnQoaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24pOwogCUFzc2VydChPaWRJc1ZhbGlkKHN1YmlkKSk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHhpZCkpOwogCUFzc2VydChzdHJlYW1fZmQgPT0gTlVMTCk7CkBAIC0zNDQ4LDE1ICs0 MjA3LDEwIEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwg Ym9vbCBmaXJzdF9zZWdtZW50KQogLyoKICAqIHN0cmVhbV9jbG9zZV9maWxlCiAgKgkgIENsb3Nl IHRoZSBjdXJyZW50bHkgb3BlbiBmaWxlIHdpdGggc3RyZWFtZWQgY2hhbmdlcy4KLSAqCi0gKiBU aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGEgc3RyZWFtaW5nIGJsb2NrLCBp LmUuIGF0IHN0cmVhbV9zdG9wCi0gKiBtZXNzYWdlIGZyb20gdGhlIHVwc3RyZWFtLgogICovCiBz dGF0aWMgdm9pZAogc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCkKIHsKLQlBc3NlcnQoaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb24pOwotCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlk KSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAogCUJ1ZkZpbGVDbG9zZShzdHJlYW1f ZmQpOwpAQCAtMzQ3OCw4ICs0MjMyLDYgQEAgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlv biwgU3RyaW5nSW5mbyBzKQogewogCWludAkJCWxlbjsKIAotCUFzc2VydChpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbik7Ci0JQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsK IAlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCiAJLyogdG90YWwgb24tZGlzayBzaXplLCBp bmNsdWRpbmcgdGhlIGFjdGlvbiB0eXBlIGNoYXJhY3RlciAqLwpAQCAtMzQ5OCw2ICs0MjUwLDI2 IEBAIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIH0KIAog LyoKKyAqIHN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UKKyAqCSAgU2VyaWFsaXplIGEgbWVz c2FnZSB0byBhIGZpbGUgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4KKyAqCisgKiBUaGlzIGZ1 bmN0aW9uIGlzIHNpbWlsYXIgdG8gc3RyZWFtX3dyaXRlX2NoYW5nZSBleGNlcHQgdGhhdCBpdCB3 aWxsIG9wZW4gdGhlCisgKiB0YXJnZXQgZmlsZSBpZiBub3QgYWxyZWFkeSBiZWZvcmUgd3JpdGlu ZyB0aGUgbWVzc2FnZSBhbmQgY2xvc2UgdGhlIGZpbGUgYXQKKyAqIHRoZSBlbmQuCisgKi8KK3N0 YXRpYyB2b2lkCitzdHJlYW1fb3Blbl9hbmRfd3JpdGVfY2hhbmdlKFRyYW5zYWN0aW9uSWQgeGlk LCBjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQoreworCUFzc2VydCghaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pOworCisJaWYgKCFzdHJlYW1fZmQpCisJCXN0cmVhbV9zdGFydF9pbnRlcm5hbCh4 aWQsIGZhbHNlKTsKKworCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwlzdHJlYW1f c3RvcF9pbnRlcm5hbCh4aWQpOworfQorCisvKgogICogQ2xlYW51cCB0aGUgbWVtb3J5IGZvciBz dWJ4YWN0cyBhbmQgcmVzZXQgdGhlIHJlbGF0ZWQgdmFyaWFibGVzLgogICovCiBzdGF0aWMgaW5s aW5lIHZvaWQKQEAgLTM2MDgsMzcgKzQzODAsMTYgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBv cmlnaW5fc3RhcnRwb3MpCiAJUEdfRU5EX1RSWSgpOwogfQogCi0vKiBMb2dpY2FsIFJlcGxpY2F0 aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLworLyoKKyAqIENvbW1vbiBpbml0aWFsaXph dGlvbiBmb3IgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor ICoKKyAqIEluaXRpYWxpemUgdGhlIGRhdGFiYXNlIGNvbm5lY3Rpb24sIGluLW1lbW9yeSBzdWJz Y3JpcHRpb24gYW5kIG5lY2Vzc2FyeQorICogY29uZmlnIG9wdGlvbnMuCisgKi8KIHZvaWQKLUFw cGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK0luaXRpYWxpemVBcHBseVdvcmtlcih2b2lk KQogewotCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CiAJTWVt b3J5Q29udGV4dCBvbGRjdHg7Ci0JY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07Ci0JWExv Z1JlY1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQljaGFyCSAgICpt eXNsb3RuYW1lID0gTlVMTDsKLQlXYWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7Ci0JaW50CQkJ c2VydmVyX3ZlcnNpb247Ci0KLQkvKiBBdHRhY2ggdG8gc2xvdCAqLwotCWxvZ2ljYWxyZXBfd29y a2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7Ci0KLQkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8K LQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2ln bmFsKFNJR1RFUk0sIGRpZSk7Ci0JQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7Ci0K LQkvKgotCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEg d2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0Ci0JICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENy ZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCi0JICovCi0KLQkvKiBJbml0aWFsaXNl IHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCi0JTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3Nl bmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQotCQlNeUxvZ2lj YWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0KLQkvKiBM b2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KLQlsb2FkX2ZpbGUoImxpYnBxd2Fs cmVjZWl2ZXIiLCBmYWxzZSk7CiAKIAkvKiBSdW4gYXMgcmVwbGljYSBzZXNzaW9uIHJlcGxpY2F0 aW9uIHJvbGUuICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUi LCAicmVwbGljYSIsCkBAIC0zNjY2LDkgKzQ0MTcsMTAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVt IG1haW5fYXJnKQogCWlmICghTXlTdWJzY3JpcHRpb24pCiAJewogCQllcmVwb3J0KExPRywKLQkJ CQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0 aW9uICV1IHdpbGwgbm90ICIKLQkJCQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24g d2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAiLAotCQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCkpKTsKKwkJLyogdHJhbnNsYXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBs aWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uICV1IHdp bGwgbm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcg c3RhcnR1cCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCkpKTsKKwogCQlwcm9jX2V4aXQoMCk7CiAJfQogCkBAIC0zNjc4LDExICs0NDMwLDExIEBA IEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlpZiAoIU15U3Vic2NyaXB0aW9uLT5l bmFibGVkKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNh dGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBub3QgIgotCQkJ CQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQgZHVyaW5nIHN0 YXJ0dXAiLAotCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6 IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJ CQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBub3Qgc3RhcnQgYmVj YXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJ CQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJvY19l eGl0KDApOworCQlhcHBseV93b3JrZXJfZXhpdCgpOwogCX0KIAogCS8qIFNldHVwIHN5bmNocm9u b3VzIGNvbW1pdCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyB3aXNoZXMgKi8KQEAgLTM2OTcsMTMg KzQ0NDksNDkgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCWlmIChhbV90YWJs ZXN5bmNfd29ya2VyKCkpCiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2coImxvZ2ljYWwgcmVw bGljYXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiwgdGFibGUgXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5u YW1lLCBnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CisJCQkJCQlN eVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCWdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBXb3Jr ZXItPnJlbGlkKSkpKTsKIAllbHNlCiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2lj YWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBz dGFydGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9y OiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLwor CQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKKwkJ CQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQorCisvKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5 IHdvcmtlciBlbnRyeSBwb2ludCAqLwordm9pZAorQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKQoreworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CisJ Y2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisJWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRw b3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKKwlX YWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisKKwkv KiBBdHRhY2ggdG8gc2xvdCAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xv dCk7CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNp Z25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJ QmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIFdlIGRvbid0IGN1 cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2Vzcywg YnV0CisJICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJj ZU93bmVyIGhlcmUuCisJICovCisKKwkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZh bHVlICovCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJl cFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3Rp bWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZp YyBmdW5jdGlvbnMgKi8KKwlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CisK KwlJbml0aWFsaXplQXBwbHlXb3JrZXIoKTsKIAogCS8qIENvbm5lY3QgdG8gdGhlIG9yaWdpbiBh bmQgc3RhcnQgdGhlIHJlcGxpY2F0aW9uLiAqLwogCWVsb2coREVCVUcxLCAiY29ubmVjdGluZyB0 byBwdWJsaXNoZXIgdXNpbmcgY29ubmVjdGlvbiBzdHJpbmcgXCIlc1wiIiwKQEAgLTM3MTMsMjAg KzQ1MDEsMTUgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCXsKIAkJc3RhcnRf dGFibGVfc3luYygmb3JpZ2luX3N0YXJ0cG9zLCAmbXlzbG90bmFtZSk7CiAKLQkJLyoKLQkJICog QWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3Ig Y29udGV4dAotCQkgKiBtZXNzYWdlLgotCQkgKi8KIAkJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9y TG9naWNhbFJlcChNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCSAgIE15TG9naWNhbFJl cFdvcmtlci0+cmVsaWQsCiAJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSwKIAkJCQkJCQkJCQkgICBz aXplb2Yob3JpZ2lubmFtZSkpOwotCQlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25h bWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJCQkg ICBvcmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5h bWUpOwogCX0KIAllbHNlCiAJewotCQkvKiBUaGlzIGlzIG1haW4gYXBwbHkgd29ya2VyICovCisJ CS8qIFRoaXMgaXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgKi8KIAkJUmVwT3JpZ2luSWQgb3Jp Z2luaWQ7CiAJCVRpbWVMaW5lSUQJc3RhcnRwb2ludFRMSTsKIAkJY2hhcgkgICAqZXJyOwpAQCAt Mzc1MCw3ICs0NTMzLDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvcmln aW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKIAkJaWYgKCFPaWRJ c1ZhbGlkKG9yaWdpbmlkKSkKIAkJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lu bmFtZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmln aW4gPSBvcmlnaW5pZDsKIAkJb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dl dF9wcm9ncmVzcyhmYWxzZSk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtMzc2 OCwxMiArNDU1MSw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJICovCiAJ CSh2b2lkKSB3YWxyY3ZfaWRlbnRpZnlfc3lzdGVtKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sICZz dGFydHBvaW50VExJKTsKIAotCQkvKgotCQkgKiBBbGxvY2F0ZSB0aGUgb3JpZ2luIG5hbWUgaW4g bG9uZy1saXZlZCBjb250ZXh0IGZvciBlcnJvciBjb250ZXh0Ci0JCSAqIG1lc3NhZ2UuCi0JCSAq LwotCQlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0 U3RyZHVwKEFwcGx5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKwkJ c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5hbWUpOwogCX0KIAogCS8qCkBA IC0zNzkxLDEzICs0NTY5LDM2IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAog CXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJj dkNvbm4pOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVy X3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVS U0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RP X1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9H SUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZF UlNJT05fTlVNOwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0g TXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmlu YXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3Ry ZWFtaW5nID0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKworCS8qCisJICogQXNzaWduIHRoZSBh cHByb3ByaWF0ZSBvcHRpb24gdmFsdWUgZm9yIHN0cmVhbWluZyBvcHRpb24gYWNjb3JkaW5nIHRv CisJICogdGhlICdzdHJlYW1pbmcnIG1vZGUgYW5kIHRoZSBwdWJsaXNoZXIncyBhYmlsaXR5IHRv IHN1cHBvcnQgdGhhdCBtb2RlLgorCSAqLworCWlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAg JiYKKwkJTXlTdWJzY3JpcHRpb24tPnN0cmVhbSA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExF TCkKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gInBhcmFsbGVs IjsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IHRydWU7CisJfQorCWVs c2UgaWYgKHNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCAmJgorCQkJIE15U3Vic2NyaXB0aW9uLT5z dHJlYW0gIT0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGKQorCXsKKwkJb3B0aW9ucy5wcm90by5sb2dp Y2FsLnN0cmVhbWluZ19zdHIgPSAib24iOworCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVs X2FwcGx5ID0gZmFsc2U7CisJfQorCWVsc2UKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5z dHJlYW1pbmdfc3RyID0gTlVMTDsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBs eSA9IGZhbHNlOworCX0KKwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC50d29waGFzZSA9IGZhbHNl OwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5vcmlnaW4gPSBwc3RyZHVwKE15U3Vic2NyaXB0aW9u LT5vcmlnaW4pOwogCkBAIC0zODk1LDYgKzQ2OTYsMTUgQEAgSXNMb2dpY2FsV29ya2VyKHZvaWQp CiB9CiAKIC8qCisgKiBJcyBjdXJyZW50IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBh cmFsbGVsIGFwcGx5IHdvcmtlcj8KKyAqLworYm9vbAorSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdv cmtlcih2b2lkKQoreworCXJldHVybiBJc0xvZ2ljYWxXb3JrZXIoKSAmJiBhbV9wYXJhbGxlbF9h cHBseV93b3JrZXIoKTsKK30KKworLyoKICAqIFN0YXJ0IHNraXBwaW5nIGNoYW5nZXMgb2YgdGhl IHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBMU04gbWF0Y2hlcyB0aGUKICAqIExTTiBzcGVjaWZp ZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxzbi4KICAqLwpAQCAtMzk1Niw3ICs0NzY2LDcgQEAg Y2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIAlYTG9n UmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2NyaXB0aW9uLT5za2lwbHNuOwogCWJvb2wJCXN0YXJ0 ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBs c24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkgfHwgYW1f cGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFuc2FjdGlv blN0YXRlKCkpCkBAIC00MDI4LDcgKzQ4MzgsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9s c24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBnaXZl IG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwotc3Rh dGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlBcHBs eUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7CkBA IC00MDU2LDIzICs0ODY2LDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIAkJ CQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJn LT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8IDAp Ci0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9y aWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRh cmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVY LyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVz c2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJl bC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkg ICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+Zmlu aXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBm b3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBm b3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGlu IHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmln aW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQp LAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmct PnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5h dHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAotCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hp ZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJeworCQlp ZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwgMCkKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJc0lu dmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJl bW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5 cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRy YW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBs b2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJn LT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJl bC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQll cnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4g XCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQg cmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIs CisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNz YWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVy ZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJ CQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJh cmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyBy ZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0 eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1 bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25h bWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAor CQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJn LT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJl bC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1v dGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRh IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wi IGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIg aW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+ b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNv bW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJ ICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwt PnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJy YXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNo X2xzbikpOworCQl9CisJfQogfQogCiAvKiBTZXQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gb2Yg YXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAgLTQwOTIsMyArNDkyNiw1MyBAQCByZXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCkKIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVt b3RlX2F0dG51bSA9IC0xOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxpZFRy YW5zYWN0aW9uSWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KKworLyoKKyAqIEFsbG9jYXRlIHRo ZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQgbWVz c2FnZS4KKyAqLwordm9pZAorc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9y aWdpbm5hbWUpCit7CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVt b3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5u YW1lKTsKK30KKworLyoKKyAqIFJldHVybiB0aGUgYWN0aW9uIHRvIGJlIHRha2VuIGZvciB0aGUg Z2l2ZW4gdHJhbnNhY3Rpb24uICp3aW5mbyBpcworICogYXNzaWduZWQgdG8gdGhlIGRlc3RpbmF0 aW9uIHBhcmFsbGVsIHdvcmtlciBpbmZvIHdoZW4gdGhlIGxlYWRlciBhcHBseQorICogd29ya2Vy IGhhcyB0byBwYXNzIGFsbCB0aGUgdHJhbnNhY3Rpb24ncyBjaGFuZ2VzIHRvIHRoZSBwYXJhbGxl bCBhcHBseQorICogd29ya2VyLgorICovCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbgorZ2V0X3Ry YW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKip3aW5mbykKK3sKKwkqd2luZm8gPSBOVUxMOworCisJaWYgKGFtX3BhcmFsbGVs X2FwcGx5X3dvcmtlcigpKQorCXsKKwkJcmV0dXJuIFRSQU5TX1BBUkFMTEVMX0FQUExZOworCX0K KwllbHNlIGlmIChpbl9yZW1vdGVfdHJhbnNhY3Rpb24pCisJeworCQlyZXR1cm4gVFJBTlNfTEVB REVSX0FQUExZOworCX0KKworCS8qCisJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhp cyB0cmFuc2FjdGlvbiB1c2luZyBhIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyLgorCSAqLwor CSp3aW5mbyA9IHBhX2ZpbmRfd29ya2VyKHhpZCk7CisKKwlpZiAoISp3aW5mbykKKwl7CisJCXJl dHVybiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOworCX0KKwllbHNlIGlmICgoKndpbmZvKS0+c2Vy aWFsaXplX2NoYW5nZXMpCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFM SVpFOworCX0KKwllbHNlCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQv cGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMK aW5kZXggNzczNzI0Mi4uZTUzN2ZjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291 dHB1dC9wZ291dHB1dC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19w dWJsaWNhdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgog I2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgImZt Z3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAgLTI5MCw3ICsyOTEsNyBAQCBw YXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25zLCBQR091dHB1dERhdGEgKmRhdGEp CiAJYm9vbAkJb3JpZ2luX29wdGlvbl9naXZlbiA9IGZhbHNlOwogCiAJZGF0YS0+YmluYXJ5ID0g ZmFsc2U7Ci0JZGF0YS0+c3RyZWFtaW5nID0gZmFsc2U7CisJZGF0YS0+c3RyZWFtaW5nID0gTE9H SUNBTFJFUF9TVFJFQU1fT0ZGOwogCWRhdGEtPm1lc3NhZ2VzID0gZmFsc2U7CiAJZGF0YS0+dHdv X3BoYXNlID0gZmFsc2U7CiAKQEAgLTM2OSw3ICszNzAsNyBAQCBwYXJzZV9vdXRwdXRfcGFyYW1l dGVycyhMaXN0ICpvcHRpb25zLCBQR091dHB1dERhdGEgKmRhdGEpCiAJCQkJCQkgZXJybXNnKCJj b25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIpKSk7CiAJCQlzdHJlYW1pbmdfZ2l2ZW4g PSB0cnVlOwogCi0JCQlkYXRhLT5zdHJlYW1pbmcgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJ CWRhdGEtPnN0cmVhbWluZyA9IGRlZkdldFN0cmVhbWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVs c2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInR3b19waGFzZSIpID09IDApCiAJCXsKQEAg LTQ2MSwxMyArNDYyLDIwIEBAIHBnb3V0cHV0X3N0YXJ0dXAoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBPdXRwdXRQbHVnaW5PcHRpb25zICpvcHQsCiAJCSAqIHdlIG9ubHkgYWxsb3cgaXQg d2l0aCBzdWZmaWNpZW50IHZlcnNpb24gb2YgdGhlIHByb3RvY29sLCBhbmQgd2hlbgogCQkgKiB0 aGUgb3V0cHV0IHBsdWdpbiBzdXBwb3J0cyBpdC4KIAkJICovCi0JCWlmICghZGF0YS0+c3RyZWFt aW5nKQorCQlpZiAoZGF0YS0+c3RyZWFtaW5nID09IExPR0lDQUxSRVBfU1RSRUFNX09GRikKIAkJ CWN0eC0+c3RyZWFtaW5nID0gZmFsc2U7Ci0JCWVsc2UgaWYgKGRhdGEtPnByb3RvY29sX3ZlcnNp b24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkKKwkJZWxzZSBpZiAoZGF0 YS0+c3RyZWFtaW5nID09IExPR0lDQUxSRVBfU1RSRUFNX09OICYmCisJCQkJIGRhdGEtPnByb3Rv Y29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkKIAkJCWVy ZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAogCQkJCQkgZXJybXNnKCJyZXF1ZXN0ZWQgcHJvdG9fdmVyc2lvbj0lZCBkb2VzIG5vdCBz dXBwb3J0IHN0cmVhbWluZywgbmVlZCAlZCBvciBoaWdoZXIiLAogCQkJCQkJCWRhdGEtPnByb3Rv Y29sX3ZlcnNpb24sIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKSkpOworCQll bHNlIGlmIChkYXRhLT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJFUF9TVFJFQU1fUEFSQUxMRUwgJiYK KwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BB UkFMTEVMX1ZFUlNJT05fTlVNKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCSBlcnJtc2coInJlcXVlc3RlZCBw cm90b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1cHBvcnQgcGFyYWxsZWwgc3RyZWFtaW5nLCBuZWVk ICVkIG9yIGhpZ2hlciIsCisJCQkJCQkJZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiwgTE9HSUNBTFJF UF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pKSk7CiAJCWVsc2UgaWYgKCFjdHgt PnN0cmVhbWluZykKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9QQVJBTUVURVJfVkFMVUUpLApAQCAtMTg0MSw2ICsxODQ5LDggQEAgcGdvdXRwdXRfc3Ry ZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCSAgWExv Z1JlY1B0ciBhYm9ydF9sc24pCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdG9wdHhuOworCVBHT3V0 cHV0RGF0YSAqZGF0YSA9IChQR091dHB1dERhdGEgKikgY3R4LT5vdXRwdXRfcGx1Z2luX3ByaXZh dGU7CisJYm9vbAkJd3JpdGVfYWJvcnRfaW5mbyA9IChkYXRhLT5zdHJlYW1pbmcgPT0gTE9HSUNB TFJFUF9TVFJFQU1fUEFSQUxMRUwpOwogCiAJLyoKIAkgKiBUaGUgYWJvcnQgc2hvdWxkIGhhcHBl biBvdXRzaWRlIHN0cmVhbWluZyBibG9jaywgZXZlbiBmb3Igc3RyZWFtZWQKQEAgLTE4NTQsNyAr MTg2NCw5IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LAogCUFzc2VydChyYnR4bl9pc19zdHJlYW1lZCh0b3B0eG4pKTsKIAogCU91dHB1 dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFt X2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQpOworCWxvZ2ljYWxyZXBfd3Jp dGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQsIGFib3J0X2xz biwKKwkJCQkJCQkJICB0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lLCB3cml0ZV9hYm9ydF9pbmZv KTsKKwogCU91dHB1dFBsdWdpbldyaXRlKGN0eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5j X2NhY2hlKHRvcHR4bi0+eGlkLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFs LmMKaW5kZXggNDNmYmJkYi4uMzk1YjJjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWdu YWwuYwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGlj YXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5o IgogI2luY2x1ZGUgInN0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9pcGMuaCIKQEAgLTY1Nyw2ICs2NTgsOSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxl cihTSUdOQUxfQVJHUykKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9D T05URVhUKSkKIAkJSGFuZGxlTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOwogCisJaWYgKENo ZWNrUHJvY1NpZ25hbChQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UpKQorCQlIYW5kbGVQ YXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCgpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQ Uk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKSkKIAkJUmVjb3ZlcnlDb25mbGljdElu dGVycnVwdChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNUX0RBVEFCQVNFKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9sbWdyLmMKaW5kZXggMjBkY2NhMy4uZWU5Yjg5YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2xtZ3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1n ci5jCkBAIC0xMTE3LDYgKzExMTcsNDUgQEAgVW5sb2NrU2hhcmVkT2JqZWN0Rm9yU2Vzc2lvbihP aWQgY2xhc3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jqc3ViaWQsCiAJTG9ja1JlbGVhc2UoJnRh ZywgbG9ja21vZGUsIHRydWUpOwogfQogCisvKgorICoJCUxvY2tBcHBseVRyYW5zYWN0aW9uRm9y U2Vzc2lvbgorICoKKyAqIE9idGFpbiBhIHNlc3Npb24tbGV2ZWwgbG9jayBvbiBhIHRyYW5zYWN0 aW9uIGJlaW5nIGFwcGxpZWQgb24gYSBsb2dpY2FsCisgKiByZXBsaWNhdGlvbiBzdWJzY3JpYmVy LiBTZWUgTG9ja1JlbGF0aW9uSWRGb3JTZXNzaW9uIGZvciBub3RlcyBhYm91dAorICogc2Vzc2lv bi1sZXZlbCBsb2Nrcy4KKyAqLwordm9pZAorTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9u KE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQsCisJCQkJCQkJICAg TE9DS01PREUgbG9ja21vZGUpCit7CisJTE9DS1RBRwkJdGFnOworCisJU0VUX0xPQ0tUQUdfQVBQ TFlfVFJBTlNBQ1RJT04odGFnLAorCQkJCQkJCQkgIE15RGF0YWJhc2VJZCwKKwkJCQkJCQkJICBz dWJvaWQsCisJCQkJCQkJCSAgeGlkLAorCQkJCQkJCQkgIG9iamlkKTsKKworCSh2b2lkKSBMb2Nr QWNxdWlyZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSwgZmFsc2UpOworfQorCisvKgorICoJCVVubG9j a0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uCisgKi8KK3ZvaWQKK1VubG9ja0FwcGx5VHJhbnNh Y3Rpb25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2Jq aWQsCisJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMT0NLVEFHCQl0YWc7CisKKwlT RVRfTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTih0YWcsCisJCQkJCQkJCSAgTXlEYXRhYmFzZUlk LAorCQkJCQkJCQkgIHN1Ym9pZCwKKwkJCQkJCQkJICB4aWQsCisJCQkJCQkJCSAgb2JqaWQpOwor CisJTG9ja1JlbGVhc2UoJnRhZywgbG9ja21vZGUsIHRydWUpOworfQogCiAvKgogICogQXBwZW5k IGEgZGVzY3JpcHRpb24gb2YgYSBsb2NrYWJsZSBvYmplY3QgdG8gYnVmLgpAQCAtMTIwMiw2ICsx MjQxLDEzIEBAIERlc2NyaWJlTG9ja1RhZyhTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgTE9DS1RBRyAq dGFnKQogCQkJCQkJCSB0YWctPmxvY2t0YWdfZmllbGQzLAogCQkJCQkJCSB0YWctPmxvY2t0YWdf ZmllbGQ0KTsKIAkJCWJyZWFrOworCQljYXNlIExPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT046CisJ CQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKKwkJCQkJCQkgXygicmVtb3RlIHRyYW5zYWN0aW9uICV1 IG9mIHN1YnNjcmlwdGlvbiAldSBvZiBkYXRhYmFzZSAldSIpLAorCQkJCQkJCSB0YWctPmxvY2t0 YWdfZmllbGQzLAorCQkJCQkJCSB0YWctPmxvY2t0YWdfZmllbGQyLAorCQkJCQkJCSB0YWctPmxv Y2t0YWdfZmllbGQxKTsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJYXBwZW5kU3RyaW5nSW5m byhidWYsCiAJCQkJCQkJIF8oInVucmVjb2duaXplZCBsb2NrdGFnIHR5cGUgJWQiKSwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9z dGdyZXMuYwppbmRleCAzMTQ3OWU4Li4yMjRhYjI5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC0zMzkx LDYgKzMzOTEsOSBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQogCiAJaWYgKExvZ01lbW9yeUNv bnRleHRQZW5kaW5nKQogCQlQcm9jZXNzTG9nTWVtb3J5Q29udGV4dEludGVycnVwdCgpOworCisJ aWYgKFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZykKKwkJSGFuZGxlUGFyYWxsZWxBcHBseU1l c3NhZ2VzKCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS93YWl0X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMK aW5kZXggZjk1NzRlOC4uNmU0NTk5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYwpAQCAtMjMwLDYgKzIzMCw5IEBAIHBnc3RhdF9nZXRfd2FpdF9hY3Rpdml0eShXYWl0 RXZlbnRBY3Rpdml0eSB3KQogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9NQUlO OgogCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsTGF1bmNoZXJNYWluIjsKIAkJCWJyZWFrOworCQlj YXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOOgorCQkJZXZlbnRfbmFt ZSA9ICJMb2dpY2FsUGFyYWxsZWxBcHBseU1haW4iOworCQkJYnJlYWs7CiAJCWNhc2UgV0FJVF9F VkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFNOgogCQkJZXZlbnRfbmFtZSA9ICJSZWNvdmVyeVdhbFN0 cmVhbSI7CiAJCQlicmVhazsKQEAgLTM4OCw2ICszOTEsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBj KFdhaXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJ TlNFUlQ6CiAJCQlldmVudF9uYW1lID0gIkhhc2hHcm93QnVja2V0c1JlaW5zZXJ0IjsKIAkJCWJy ZWFrOworCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFO R0U6CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxQYXJhbGxlbEFwcGx5U3RhdGVDaGFuZ2UiOwor CQkJYnJlYWs7CiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQToKIAkJCWV2ZW50 X25hbWUgPSAiTG9naWNhbFN5bmNEYXRhIjsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tm dW5jcy5jCmluZGV4IDNjY2U0YmQuLmM4YWFjMDYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9sb2NrZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNz LmMKQEAgLTM3LDEwICszNywxMSBAQCBjb25zdCBjaGFyICpjb25zdCBMb2NrVGFnVHlwZU5hbWVz W10gPSB7CiAJInNwZWN0b2tlbiIsCiAJIm9iamVjdCIsCiAJInVzZXJsb2NrIiwKLQkiYWR2aXNv cnkiCisJImFkdmlzb3J5IiwKKwkiYXBwbHl0cmFuc2FjdGlvbiIKIH07CiAKLVN0YXRpY0Fzc2Vy dERlY2wobGVuZ3Rob2YoTG9ja1RhZ1R5cGVOYW1lcykgPT0gKExPQ0tUQUdfQURWSVNPUlkgKyAx KSwKK1N0YXRpY0Fzc2VydERlY2wobGVuZ3Rob2YoTG9ja1RhZ1R5cGVOYW1lcykgPT0gKExPQ0tU QUdfTEFTVF9UWVBFICsgMSksCiAJCQkJICJhcnJheSBsZW5ndGggbWlzbWF0Y2giKTsKIAogLyog VGhpcyBtdXN0IG1hdGNoIGVudW0gUHJlZGljYXRlTG9ja1RhcmdldFR5cGUgKHByZWRpY2F0ZV9p bnRlcm5hbHMuaCkgKi8KQEAgLTMxMiw2ICszMTMsMTcgQEAgcGdfbG9ja19zdGF0dXMoUEdfRlVO Q1RJT05fQVJHUykKIAkJCQludWxsc1s4XSA9IHRydWU7CiAJCQkJbnVsbHNbOV0gPSB0cnVlOwog CQkJCWJyZWFrOworCQkJY2FzZSBMT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OOgorCQkJCXZhbHVl c1sxXSA9IE9iamVjdElkR2V0RGF0dW0oaW5zdGFuY2UtPmxvY2t0YWcubG9ja3RhZ19maWVsZDEp OworCQkJCXZhbHVlc1s4XSA9IE9iamVjdElkR2V0RGF0dW0oaW5zdGFuY2UtPmxvY2t0YWcubG9j a3RhZ19maWVsZDIpOworCQkJCXZhbHVlc1s2XSA9IE9iamVjdElkR2V0RGF0dW0oaW5zdGFuY2Ut PmxvY2t0YWcubG9ja3RhZ19maWVsZDMpOworCQkJCXZhbHVlc1s5XSA9IEludDE2R2V0RGF0dW0o aW5zdGFuY2UtPmxvY2t0YWcubG9ja3RhZ19maWVsZDQpOworCQkJCW51bGxzWzJdID0gdHJ1ZTsK KwkJCQludWxsc1szXSA9IHRydWU7CisJCQkJbnVsbHNbNF0gPSB0cnVlOworCQkJCW51bGxzWzVd ID0gdHJ1ZTsKKwkJCQludWxsc1s3XSA9IHRydWU7CisJCQkJYnJlYWs7CiAJCQljYXNlIExPQ0tU QUdfT0JKRUNUOgogCQkJY2FzZSBMT0NLVEFHX1VTRVJMT0NLOgogCQkJY2FzZSBMT0NLVEFHX0FE VklTT1JZOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA2ODMyOGIxLi45MjU0 NWI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMzAwMyw2ICszMDAzLDE4 IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCX0sCiAKIAl7CisJ CXsibWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiIsCisJCQlQR0Nf U0lHSFVQLAorCQkJUkVQTElDQVRJT05fU1VCU0NSSUJFUlMsCisJCQlnZXR0ZXh0X25vb3AoIk1h eGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4i KSwKKwkJCU5VTEwsCisJCX0sCisJCSZtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uLAorCQkyLCAwLCBNQVhfUEFSQUxMRUxfV09SS0VSX0xJTUlULAorCQlOVUxMLCBO VUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwg TE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUg dG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkgImxvZyBmaWxlIHJvdGF0aW9uLiIpLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDVh ZmRlYjAuLmMyYWRhOTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwu Y29uZi5zYW1wbGUKQEAgLTM1OSw2ICszNTksNyBAQAogI21heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nlc3NlcwogCQkJCQkjIChj aGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRp b24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCisjbWF4 X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9t IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMKIAogCiAjLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwppbmRleCAzMDcxOGRkLi41ZTgwMGRjIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1 MzMsNyArNDUzMyw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpZiAoZm91 dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiIHMuc3Vic3RyZWFtLFxuIik7CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIiBmYWxzZSBBUyBzdWJzdHJlYW0sXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgJ2YnIEFTIHN1YnN0cmVhbSxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24g Pj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ2NzAsOCArNDY3 MCwxMCBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlv bkluZm8gKnN1YmluZm8pCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJiaW5hcnksICJ0IikgPT0g MCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGJpbmFyeSA9IHRydWUiKTsKIAot CWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAiZiIpICE9IDApCisJaWYgKHN0cmNtcChz dWJpbmZvLT5zdWJzdHJlYW0sICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIsIHN0cmVhbWluZyA9IG9uIik7CisJZWxzZSBpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0 cmVhbSwgInAiKSA9PSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFt aW5nID0gcGFyYWxsZWwiKTsKIAogCWlmIChzdHJjbXAoc3ViaW5mby0+c3VidHdvcGhhc2VzdGF0 ZSwgdHdvX3BoYXNlX2Rpc2FibGVkKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIiwgdHdvX3BoYXNlID0gb24iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmli ZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggNTIzZmFiNi4uNjY1NWYwNyAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKQEAgLTY1MDIsMTEgKzY1MDIsMjQgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0 IGNoYXIgKnBhdHRlcm4sIGJvb2wgdmVyYm9zZSkKIAl7CiAJCS8qIEJpbmFyeSBtb2RlIGFuZCBz dHJlYW1pbmcgYXJlIG9ubHkgc3VwcG9ydGVkIGluIHYxNCBhbmQgaGlnaGVyICovCiAJCWlmIChw c2V0LnN2ZXJzaW9uID49IDE0MDAwMCkKKwkJewogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwK LQkJCQkJCQkgICIsIHN1YmJpbmFyeSBBUyBcIiVzXCJcbiIKLQkJCQkJCQkgICIsIHN1YnN0cmVh bSBBUyBcIiVzXCJcbiIsCi0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkJpbmFyeSIpLAotCQkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJCQkJCQkJICAiLCBzdWJiaW5hcnkgQVMg XCIlc1wiXG4iLAorCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJCaW5hcnkiKSk7CisKKwkJCWlmIChw c2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJ CQkJCQkgICIsIChDQVNFIHN1YnN0cmVhbVxuIgorCQkJCQkJCQkgICIgICAgV0hFTiAnZicgVEhF TiAnb2ZmJ1xuIgorCQkJCQkJCQkgICIgICAgV0hFTiAndCcgVEhFTiAnb24nXG4iCisJCQkJCQkJ CSAgIiAgICBXSEVOICdwJyBUSEVOICdwYXJhbGxlbCdcbiIKKwkJCQkJCQkJICAiICAgRU5EKSBB UyBcIiVzXCJcbiIsCisJCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJCQll bHNlCisJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCBzdWJzdHJlYW0g QVMgXCIlc1wiXG4iLAorCQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikpOworCQl9 CiAKIAkJLyogVHdvX3BoYXNlIGFuZCBkaXNhYmxlX29uX2Vycm9yIGFyZSBvbmx5IHN1cHBvcnRl ZCBpbiB2MTUgYW5kIGhpZ2hlciAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCBlYjRlZWI0Li5iMGYyYTE3IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTgwLDcgKzgwLDggQEAgQ0FU QUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hB UkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJiaW5hcnk7CQkvKiBUcnVlIGlmIHRoZSBz dWJzY3JpcHRpb24gd2FudHMgdGhlCiAJCQkJCQkJCSAqIHB1Ymxpc2hlciB0byBzZW5kIGRhdGEg aW4gYmluYXJ5ICovCiAKLQlib29sCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3Mg dHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVz cyB0cmFuc2FjdGlvbnMuIFNlZQorCQkJCQkJCQkgKiBMT0dJQ0FMUkVQX1NUUkVBTV94eHggY29u c3RhbnRzLiAqLwogCiAJY2hhcgkJc3VidHdvcGhhc2VzdGF0ZTsJLyogU3RyZWFtIHR3by1waGFz ZSB0cmFuc2FjdGlvbnMgKi8KIApAQCAtMTI0LDcgKzEyNSw4IEBAIHR5cGVkZWYgc3RydWN0IFN1 YnNjcmlwdGlvbgogCWJvb2wJCWVuYWJsZWQ7CQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlw dGlvbiBpcyBlbmFibGVkICovCiAJYm9vbAkJYmluYXJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUg c3Vic2NyaXB0aW9uIHdhbnRzIGRhdGEgaW4KIAkJCQkJCQkJICogYmluYXJ5IGZvcm1hdCAqLwot CWJvb2wJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b25zLiAqLworCWNoYXIJCXN0cmVhbTsJCQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3Mg dHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgTE9HSUNBTFJFUF9TVFJFQU1feHh4IGNvbnN0 YW50cy4gKi8KIAljaGFyCQl0d29waGFzZXN0YXRlOwkvKiBBbGxvdyBzdHJlYW1pbmcgdHdvLXBo YXNlIHRyYW5zYWN0aW9ucyAqLwogCWJvb2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlm IHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlz YWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKQEAgLTEzNyw2ICsxMzksMjEgQEAgdHlwZWRlZiBzdHJ1 Y3QgU3Vic2NyaXB0aW9uCiAJCQkJCQkJCSAqIHNwZWNpZmllZCBvcmlnaW4gKi8KIH0gU3Vic2Ny aXB0aW9uOwogCisvKiBEaXNhbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25z LiAqLworI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9PRkYgJ2YnCisKKy8qCisgKiBTdHJlYW1p bmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZp bGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRl ZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBMT0dJQ0FMUkVQX1NUUkVBTV9PTiAndCcKKwor LyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxpZWQgaW1t ZWRpYXRlbHkgdmlhIGEgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqLworI2RlZmluZSBM T0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCAncCcKKwogZXh0ZXJuIFN1YnNjcmlwdGlvbiAqR2V0 U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiB2b2lkIEZy ZWVTdWJzY3JpcHRpb24oU3Vic2NyaXB0aW9uICpzdWIpOwogZXh0ZXJuIHZvaWQgRGlzYWJsZVN1 YnNjcmlwdGlvbihPaWQgc3ViaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5oCmluZGV4IGY1OWFhZjQuLjIxNGRjNmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3N1YnNjcmlwdGlvbmNtZHMuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmgKQEAgLTI2LDQgKzI2LDYgQEAgZXh0ZXJuIHZvaWQgRHJvcFN1YnNjcmlwdGlv bihEcm9wU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwgYm9vbCBpc1RvcExldmVsKTsKIGV4dGVybiBP YmplY3RBZGRyZXNzIEFsdGVyU3Vic2NyaXB0aW9uT3duZXIoY29uc3QgY2hhciAqbmFtZSwgT2lk IG5ld093bmVySWQpOwogZXh0ZXJuIHZvaWQgQWx0ZXJTdWJzY3JpcHRpb25Pd25lcl9vaWQoT2lk IHN1YmlkLCBPaWQgbmV3T3duZXJJZCk7CiAKK2V4dGVybiBjaGFyIGRlZkdldFN0cmVhbWluZ01v ZGUoRGVmRWxlbSAqZGVmKTsKKwogI2VuZGlmCQkJCQkJCS8qIFNVQlNDUklQVElPTkNNRFNfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAppbmRleCBlMTY2MWI2 Li5jODU1OTNhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1 bmNoZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaApA QCAtMTQsNiArMTQsNyBAQAogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9sb2dpY2FsX3Jl cGxpY2F0aW9uX3dvcmtlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9zeW5jX3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3BhcmFsbGVs X2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKIAogZXh0ZXJuIHZvaWQgQXBwbHlMYXVu Y2hlclJlZ2lzdGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0g bWFpbl9hcmcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHBy b3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCBkNjQy NjQzLi4wZWEyZGY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAt MzIsMTIgKzMyLDE3IEBACiAgKgogICogTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9O X05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIHdpdGgKICAqIHN1cHBvcnQgZm9y IHR3by1waGFzZSBjb21taXQgZGVjb2RpbmcgKGF0IHByZXBhcmUgdGltZSkuIEludHJvZHVjZWQg aW4gUEcxNS4KKyAqCisgKiBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9O X05VTSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uCisgKiB3aGVyZSB3ZSBzdXBwb3J0 IGFwcGx5aW5nIGxhcmdlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwuCisgKiBJ bnRyb2R1Y2VkIGluIFBHMTYuCiAgKi8KICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NSU5fVkVS U0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNIDEKICNkZWZp bmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gMgogI2RlZmluZSBMT0dJQ0FM UkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDMKLSNkZWZpbmUgTE9HSUNBTFJFUF9QUk9U T19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTQor I2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA0Cisj ZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9f U1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNCiAKIC8qCiAgKiBMb2dpY2FsIG1lc3NhZ2UgdHlw ZXMKQEAgLTE3NSw2ICsxODAsMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJvbGxiYWNr UHJlcGFyZWRUeG5EYXRhCiAJY2hhcgkJZ2lkW0dJRFNJWkVdOwogfSBMb2dpY2FsUmVwUm9sbGJh Y2tQcmVwYXJlZFR4bkRhdGE7CiAKKy8qCisgKiBUcmFuc2FjdGlvbiBwcm90b2NvbCBpbmZvcm1h dGlvbiBmb3Igc3RyZWFtIGFib3J0LgorICovCit0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwU3Ry ZWFtQWJvcnREYXRhCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4 aWQ7CisJWExvZ1JlY1B0cglhYm9ydF9sc247CisJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKK30g TG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YTsKKwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0 ZV9iZWdpbihTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuKTsKIGV4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfcmVhZF9iZWdpbihTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkgIExvZ2lj YWxSZXBCZWdpbkRhdGEgKmJlZ2luX2RhdGEpOwpAQCAtMjQ2LDkgKzI2MiwxMyBAQCBleHRlcm4g dm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBvdXQsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4bgogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgbG9naWNhbHJlcF9yZWFkX3N0 cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJCQkJCSAgIExvZ2ljYWxSZXBDb21t aXREYXRhICpjb21taXRfZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJCQkJICBU cmFuc2FjdGlvbklkIHN1YnhpZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFt X2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJCQkgVHJh bnNhY3Rpb25JZCAqc3VieGlkKTsKKwkJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkLAor CQkJCQkJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJCQkJICBUaW1lc3RhbXBU eiBhYm9ydF90aW1lLAorCQkJCQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9pbmZvKTsKK2V4dGVy biB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJ CQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkJCQkg Ym9vbCByZWFkX2Fib3J0X2luZm8pOwogZXh0ZXJuIGNoYXIgKmxvZ2ljYWxyZXBfbWVzc2FnZV90 eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbik7CiAKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FM X1BST1RPX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3 b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAppbmRleCBm MWU3ZThhLi42OTM1Y2IzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o CkBAIC0xMiw4ICsxMiwxNiBAQAogI2lmbmRlZiBMT0dJQ0FMV09SS0VSX0gKICNkZWZpbmUgTE9H SUNBTFdPUktFUl9ICiAKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworZXh0ZXJuIFBHRExMSU1QT1JU IHZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmc7CisKIGV4 dGVybiB2b2lkIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CitleHRlcm4gdm9pZCBQ YXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiAKIGV4dGVybiBib29sIElz TG9naWNhbFdvcmtlcih2b2lkKTsKK2V4dGVybiBib29sIElzTG9naWNhbFBhcmFsbGVsQXBwbHlX b3JrZXIodm9pZCk7CitleHRlcm4gdm9pZCBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVy cnVwdCh2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lk KTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9v cmlnaW4uaAppbmRleCAzNzg1Zjk1Li41MzEzNTEwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9vcmlnaW4uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4u aApAQCAtNTMsNyArNTMsNyBAQCBleHRlcm4gWExvZ1JlY1B0ciByZXBsb3JpZ2luX2dldF9wcm9n cmVzcyhSZXBPcmlnaW5JZCBub2RlLCBib29sIGZsdXNoKTsKIAogZXh0ZXJuIHZvaWQgcmVwbG9y aWdpbl9zZXNzaW9uX2FkdmFuY2UoWExvZ1JlY1B0ciByZW1vdGVfY29tbWl0LAogCQkJCQkJCQkJ ICAgWExvZ1JlY1B0ciBsb2NhbF9jb21taXQpOwotZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNz aW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpOworZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNz aW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGludCBhY3F1aXJlZF9ieSk7CiBleHRlcm4gdm9p ZCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQodm9pZCk7CiBleHRlcm4gWExvZ1JlY1B0ciByZXBs b3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGJvb2wgZmx1c2gpOwogCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vcGdvdXRwdXQuaAppbmRleCA2NjMzMTFhLi5iNGE4MDE1IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Bnb3V0cHV0LmgKQEAgLTI2LDcgKzI2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUEdPdXRwdXREYXRh CiAJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7CiAJTGlzdAkgICAqcHVibGljYXRpb25zOwog CWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFtaW5nOwogCWJv b2wJCW1lc3NhZ2VzOwogCWJvb2wJCXR3b19waGFzZTsKIAljaGFyCSAgICpvcmlnaW47CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggYTQyYTEyMC4uZjZjNGRkNyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtMzE2LDYgKzMxNiw3 IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAl7CiAJCVRpbWVzdGFtcFR6IGNv bW1pdF90aW1lOwogCQlUaW1lc3RhbXBUeiBwcmVwYXJlX3RpbWU7CisJCVRpbWVzdGFtcFR6IGFi b3J0X3RpbWU7CiAJfQkJCXhhY3RfdGltZTsKIAogCS8qCkBAIC02NzgsNyArNjc5LDggQEAgZXh0 ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFu c2FjdGlvbklkIHhpZCwKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJDb21taXRDaGlsZChSZW9y ZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkgVHJhbnNhY3Rpb25J ZCBzdWJ4aWQsIFhMb2dSZWNQdHIgY29tbWl0X2xzbiwKIAkJCQkJCQkJCSBYTG9nUmVjUHRyIGVu ZF9sc24pOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJuIHZvaWQgUmVvcmRl ckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24sCisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBleHRlcm4gdm9p ZCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQg b2xkZXN0UnVubmluZ1hpZCk7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3Jk ZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwogZXh0ZXJu IHZvaWQgUmVvcmRlckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0 aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93YWxyZWNlaXZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2 ZXIuaAppbmRleCBmZDYxMzY4Li5kZWNmZmUzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93YWxyZWNlaXZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmgKQEAgLTE4Miw3ICsxODIsNyBAQCB0eXBlZGVmIHN0cnVjdAogCQkJdWludDMyCQlw cm90b192ZXJzaW9uOwkvKiBMb2dpY2FsIHByb3RvY29sIHZlcnNpb24gKi8KIAkJCUxpc3QJICAg KnB1YmxpY2F0aW9uX25hbWVzOwkvKiBTdHJpbmcgbGlzdCBvZiBwdWJsaWNhdGlvbnMgKi8KIAkJ CWJvb2wJCWJpbmFyeTsgLyogQXNrIHB1Ymxpc2hlciB0byB1c2UgYmluYXJ5ICovCi0JCQlib29s CQlzdHJlYW1pbmc7CS8qIFN0cmVhbWluZyBvZiBsYXJnZSB0cmFuc2FjdGlvbnMgKi8KKwkJCWNo YXIJICAgKnN0cmVhbWluZ19zdHI7CS8qIFN0cmVhbWluZyBvZiBsYXJnZSB0cmFuc2FjdGlvbnMg Ki8KIAkJCWJvb2wJCXR3b3BoYXNlOwkvKiBTdHJlYW1pbmcgb2YgdHdvLXBoYXNlIHRyYW5zYWN0 aW9ucyBhdAogCQkJCQkJCQkJICogcHJlcGFyZSB0aW1lICovCiAJCQljaGFyCSAgICpvcmlnaW47 IC8qIE9ubHkgcHVibGlzaCBkYXRhIG9yaWdpbmF0aW5nIGZyb20gdGhlCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDJhM2VjNWMuLmRiODkxZWUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xNyw4ICsxNywxMyBA QAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAi bWlzY2FkbWluLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCisj aW5jbHVkZSAic3RvcmFnZS9idWZmaWxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9maWxlc2V0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIK IAogCkBAIC01MywxMyArNTgsMjQgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgog CiAJLyoKIAkgKiBVc2VkIHRvIGNyZWF0ZSB0aGUgY2hhbmdlcyBhbmQgc3VieGFjdCBmaWxlcyBm b3IgdGhlIHN0cmVhbWluZwotCSAqIHRyYW5zYWN0aW9ucy4gIFVwb24gdGhlIGFycml2YWwgb2Yg dGhlIGZpcnN0IHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgdGhlCi0JICogZmlsZXNldCB3aWxsIGJl IGluaXRpYWxpemVkLCBhbmQgaXQgd2lsbCBiZSBkZWxldGVkIHdoZW4gdGhlIHdvcmtlcgotCSAq IGV4aXRzLiAgVW5kZXIgdGhpcywgc2VwYXJhdGUgYnVmZmlsZXMgd291bGQgYmUgY3JlYXRlZCBm b3IgZWFjaAotCSAqIHRyYW5zYWN0aW9uIHdoaWNoIHdpbGwgYmUgZGVsZXRlZCBhZnRlciB0aGUg dHJhbnNhY3Rpb24gaXMgZmluaXNoZWQuCisJICogdHJhbnNhY3Rpb25zLiAgVXBvbiB0aGUgYXJy aXZhbCBvZiB0aGUgZmlyc3Qgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIG9yCisJICogd2hlbiB0aGUg Zmlyc3QtdGltZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRpbWVzIG91dCB3aGlsZSBzZW5kaW5nIGNo YW5nZXMKKwkgKiB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB0aGUgZmlsZXNldCB3aWxs IGJlIGluaXRpYWxpemVkLCBhbmQgaXQKKwkgKiB3aWxsIGJlIGRlbGV0ZWQgd2hlbiB0aGUgd29y a2VyIGV4aXRzLiAgVW5kZXIgdGhpcywgc2VwYXJhdGUgYnVmZmlsZXMKKwkgKiB3b3VsZCBiZSBj cmVhdGVkIGZvciBlYWNoIHRyYW5zYWN0aW9uIHdoaWNoIHdpbGwgYmUgZGVsZXRlZCBhZnRlciB0 aGUKKwkgKiB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZC4KIAkgKi8KIAlGaWxlU2V0ICAgICpzdHJl YW1fZmlsZXNldDsKIAorCS8qCisJICogUElEIG9mIGxlYWRlciBhcHBseSB3b3JrZXIgaWYgdGhp cyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIsIEludmFsaWRQ aWQgb3RoZXJ3aXNlLgorCSAqLworCXBpZF90CQlhcHBseV9sZWFkZXJfcGlkOworCisJLyogSW5k aWNhdGVzIHdoZXRoZXIgYXBwbHkgY2FuIGJlIHBlcmZvcm1lZCBpbiBwYXJhbGxlbC4gKi8KKwli b29sCQlwYXJhbGxlbF9hcHBseTsKKwogCS8qIFN0YXRzLiAqLwogCVhMb2dSZWNQdHIJbGFzdF9s c247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3RpbWU7CkBAIC02OCw5ICs4NCwxMzggQEAgdHlw ZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCVRpbWVzdGFtcFR6IHJlcGx5X3RpbWU7CiB9 IExvZ2ljYWxSZXBXb3JrZXI7CiAKKy8qCisgKiBTdGF0ZSBvZiB0aGUgdHJhbnNhY3Rpb24gaW4g cGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRoZSBlbnVtIHZhbHVlcyBtdXN0IGhhdmUg dGhlIHNhbWUgb3JkZXIgYXMgdGhlIHRyYW5zYWN0aW9uIHN0YXRlCisgKiB0cmFuc2l0aW9ucy4K KyAqLwordHlwZWRlZiBlbnVtIFBhcmFsbGVsVHJhbnNTdGF0ZQoreworCVBBUkFMTEVMX1RSQU5T X1VOS05PV04sCisJUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCwKKwlQQVJBTExFTF9UUkFOU19GSU5J U0hFRAorfSBQYXJhbGxlbFRyYW5zU3RhdGU7CisKKy8qCisgKiBTdGF0ZSBvZiBmaWxlc2V0IHVz ZWQgdG8gY29tbXVuaWNhdGUgY2hhbmdlcyBmcm9tIGxlYWRlciB0byBwYXJhbGxlbAorICogYXBw bHkgd29ya2VyLgorICoKKyAqIEZTX0VNUFRZIGluZGljYXRlcyBhbiBpbml0aWFsIHN0YXRlIHdo ZXJlIHRoZSBsZWFkZXIgZG9lc24ndCBuZWVkIHRvIHVzZQorICogdGhlIGZpbGUgdG8gY29tbXVu aWNhdGUgd2l0aCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIEZTX1NFUklBTEla RV9JTl9QUk9HUkVTUyBpbmRpY2F0ZXMgdGhhdCB0aGUgbGVhZGVyIGlzIHNlcmlhbGl6aW5nIGNo YW5nZXMKKyAqIHRvIHRoZSBmaWxlLgorICoKKyAqIEZTX1NFUklBTElaRV9ET05FIGluZGljYXRl cyB0aGF0IHRoZSBsZWFkZXIgaGFzIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8KKyAqIHRoZSBm aWxlLgorICoKKyAqIEZTX1JFQURZIGluZGljYXRlcyB0aGF0IGl0IGlzIG5vdyBvayBmb3IgYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKyAqIHJlYWQgdGhlIGZpbGUuCisgKi8KK3R5cGVkZWYg ZW51bSBQYXJ0aWFsRmlsZVNldFN0YXRlCit7CisJRlNfRU1QVFksCisJRlNfU0VSSUFMSVpFX0lO X1BST0dSRVNTLAorCUZTX1NFUklBTElaRV9ET05FLAorCUZTX1JFQURZCit9IFBhcnRpYWxGaWxl U2V0U3RhdGU7CisKKy8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2Vl biBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbAorICogYXBwbHkgd29ya2Vycy4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZAoreworCXNsb2NrX3QJ CW11dGV4OworCisJVHJhbnNhY3Rpb25JZCB4aWQ7CisKKwkvKgorCSAqIFN0YXRlIHVzZWQgdG8g ZW5zdXJlIGNvbW1pdCBvcmRlcmluZy4KKwkgKgorCSAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgd2lsbCBzZXQgaXQgdG8gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQgYWZ0ZXIKKwkgKiBoYW5k bGluZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIHdoaWxlIHRoZSBhcHBseSBsZWFk ZXIgd2lsbAorCSAqIHdhaXQgZm9yIGl0IHRvIGJlY29tZSBQQVJBTExFTF9UUkFOU19GSU5JU0hF RCBiZWZvcmUgcHJvY2VlZGluZyBpbgorCSAqIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcyAo ZS5nLiBTVFJFQU1fQ09NTUlUL1NUUkVBTV9QUkVQQVJFLworCSAqIFNUUkVBTV9BQk9SVCkuCisJ ICovCisJUGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3RhdGU7CisKKwkvKiBJbmZvcm1hdGlvbiBm cm9tIHRoZSBjb3JyZXNwb25kaW5nIExvZ2ljYWxSZXBXb3JrZXIgc2xvdC4gKi8KKwl1aW50MTYJ CWxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisJaW50CQkJbG9naWNhbHJlcF93b3JrZXJf c2xvdF9ubzsKKworCS8qCisJICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlcmUgYXJlIHBlbmRpbmcg c3RyZWFtaW5nIGJsb2NrcyBpbiB0aGUgcXVldWUuIFRoZQorCSAqIHBhcmFsbGVsIGFwcGx5IHdv cmtlciB3aWxsIGNoZWNrIGl0IGJlZm9yZSBzdGFydGluZyB0byB3YWl0LgorCSAqLworCXBnX2F0 b21pY191aW50MzIgcGVuZGluZ19zdHJlYW1fY291bnQ7CisKKwkvKgorCSAqIFhhY3RMYXN0Q29t bWl0RW5kIGZyb20gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gVGhpcyBpcyByZXF1aXJlZCBi eQorCSAqIHRoZSBsZWFkZXIgd29ya2VyIHNvIGl0IGNhbiB1cGRhdGUgdGhlIGxzbl9tYXBwaW5n cy4KKwkgKi8KKwlYTG9nUmVjUHRyCWxhc3RfY29tbWl0X2VuZDsKKworCS8qCisJICogQWZ0ZXIg ZW50ZXJpbmcgUEFSVElBTF9TRVJJQUxJWkUgbW9kZSwgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg d2lsbAorCSAqIHNlcmlhbGl6ZSBjaGFuZ2VzIHRvIHRoZSBmaWxlLCBhbmQgc2hhcmUgdGhlIGZp bGVzZXQgd2l0aCB0aGUgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIgd2hlbiBwcm9jZXNzaW5n IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZC4gVGhlbiB0aGUKKwkgKiBwYXJhbGxlbCBh cHBseSB3b3JrZXIgd2lsbCBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVzc2FnZXMuCisJICoKKwkg KiBGaWxlU2V0IGlzIHVzZWQgaGVyZSBpbnN0ZWFkIG9mIFNoYXJlZEZpbGVTZXQgYmVjYXVzZSB3 ZSBuZWVkIGl0IHRvCisJICogc3Vydml2ZSBhZnRlciByZWxlYXNpbmcgdGhlIHNoYXJlZCBtZW1v cnkgc28gdGhhdCB0aGUgbGVhZGVyIGFwcGx5CisJICogd29ya2VyIGNhbiByZS11c2UgdGhlIHNh bWUgZmlsZXNldCBmb3IgdGhlIG5leHQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSAqLworCVBh cnRpYWxGaWxlU2V0U3RhdGUgZmlsZXNldF9zdGF0ZTsKKwlGaWxlU2V0CQlmaWxlc2V0OworfSBQ YXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkOworCisvKgorICogSW5mb3JtYXRpb24gd2hpY2ggaXMg dXNlZCB0byBtYW5hZ2UgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlckluZm8KK3sKKwkvKgorCSAqIFRoaXMgcXVldWUgaXMg dXNlZCB0byBzZW5kIGNoYW5nZXMgZnJvbSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0byB0aGUK KwkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICovCisJc2htX21xX2hhbmRsZSAqbXFfaGFu ZGxlOworCisJLyoKKwkgKiBUaGlzIHF1ZXVlIGlzIHVzZWQgdG8gdHJhbnNmZXIgZXJyb3IgbWVz c2FnZXMgZnJvbSB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgdG8gdGhlIGxlYWRlciBh cHBseSB3b3JrZXIuCisJICovCisJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFfaGFuZGxlOworCisJ ZHNtX3NlZ21lbnQgKmRzbV9zZWc7CisKKwkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyIG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKwkgKiByZW1haW5pbmcg Y2hhbmdlcyB0byBhIGZpbGUgZHVlIHRvIHRpbWVvdXQgd2hlbiBhdHRlbXB0aW5nIHRvIHNlbmQg ZGF0YQorCSAqIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnku CisJICovCisJYm9vbAkJc2VyaWFsaXplX2NoYW5nZXM7CisKKwkvKgorCSAqIFRydWUgaWYgdGhl IHdvcmtlciBpcyBiZWluZyB1c2VkIHRvIHByb2Nlc3MgYSBwYXJhbGxlbCBhcHBseQorCSAqIHRy YW5zYWN0aW9uLiBGYWxzZSBpbmRpY2F0ZXMgdGhpcyB3b3JrZXIgaXMgYXZhaWxhYmxlIGZvciBy ZS11c2UuCisJICovCisJYm9vbAkJaW5fdXNlOworCisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJl ZCAqc2hhcmVkOworfSBQYXJhbGxlbEFwcGx5V29ya2VySW5mbzsKKwogLyogTWFpbiBtZW1vcnkg Y29udGV4dCBmb3IgYXBwbHkgd29ya2VyLiBQZXJtYW5lbnQgZHVyaW5nIHdvcmtlciBsaWZldGlt ZS4gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dDsKIAor ZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dDsKKwor ZXh0ZXJuIFBHRExMSU1QT1JUIEVycm9yQ29udGV4dENhbGxiYWNrICphcHBseV9lcnJvcl9jb250 ZXh0X3N0YWNrOworCitleHRlcm4gUEdETExJTVBPUlQgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJl ZCAqTXlQYXJhbGxlbFNoYXJlZDsKKwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9uICovCiBl eHRlcm4gUEdETExJTVBPUlQgc3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2Fs UmN2Q29ubjsKIApAQCAtODQsOSArMjI5LDExIEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29y a2VyX2F0dGFjaChpbnQgc2xvdCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJl cF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25s eV9ydW5uaW5nKTsKIGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3Vi aWQsIGJvb2wgb25seV9ydW5uaW5nKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xh dW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJ IE9pZCB1c2VyaWQsIE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9s YXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJ CSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJf ZHNtKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQg cmVsaWQpOworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9u bywgdWludDE2IGdlbmVyYXRpb24pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2Fr ZXVwKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2Vy X3dha2V1cF9wdHIoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKIApAQCAtMTAzLDEwICsyNTAs NzggQEAgZXh0ZXJuIHZvaWQgcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJl bnRfbHNuKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMoRGF0 dW0gYXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4 dGVybiB2b2lkIHN0cmVhbV9zdGFydF9pbnRlcm5hbChUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBm aXJzdF9zZWdtZW50KTsKK2V4dGVybiB2b2lkIHN0cmVhbV9zdG9wX2ludGVybmFsKFRyYW5zYWN0 aW9uSWQgeGlkKTsKKworLyogQ29tbW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwg dGhlIHNwb29sZWQgbWVzc2FnZXMgKi8KK2V4dGVybiB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2Fn ZXMoRmlsZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkg ICBYTG9nUmVjUHRyIGxzbik7CisKK2V4dGVybiB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0lu Zm8gcyk7CisKK2V4dGVybiB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7CisK K2V4dGVybiB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25J ZCB4aWQpOworCitleHRlcm4gdm9pZCBJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCk7CisKK2V4 dGVybiB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgWExv Z1JlY1B0ciBsb2NhbF9sc24pOworCisvKiBGdW5jdGlvbiBmb3IgYXBwbHkgZXJyb3IgY2FsbGJh Y2sgKi8KK2V4dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CitleHRl cm4gdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9vcmlnaW4oY2hhciAqb3JpZ2lubmFtZSk7 CisKKy8qIFBhcmFsbGVsIGFwcGx5IHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICovCitl eHRlcm4gdm9pZCBwYV9hbGxvY2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJu IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhp ZCk7CitleHRlcm4gdm9pZCBwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpOworCitleHRlcm4g Ym9vbCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5i eXRlcywKKwkJCQkJCSBjb25zdCB2b2lkICpkYXRhKTsKK2V4dGVybiB2b2lkIHBhX3N3aXRjaF90 b19wYXJ0aWFsX3NlcmlhbGl6ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCisJCQkJ CQkJCQkJICAgYm9vbCBzdHJlYW1fbG9ja2VkKTsKKworZXh0ZXJuIHZvaWQgcGFfc2V0X3hhY3Rf c3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJCQkgIFBhcmFs bGVsVHJhbnNTdGF0ZSBpbl94YWN0KTsKK2V4dGVybiB2b2lkIHBhX3NldF9zdHJlYW1fYXBwbHlf d29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CisKK2V4dGVybiB2b2lkIHBh X3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsCisJCQkJCQkJICBUcmFu c2FjdGlvbklkIHRvcF94aWQpOworZXh0ZXJuIHZvaWQgcGFfcmVzZXRfc3VidHJhbnModm9pZCk7 CitleHRlcm4gdm9pZCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAq YWJvcnRfZGF0YSk7CitleHRlcm4gdm9pZCBwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFw cGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCQkgUGFydGlhbEZpbGVTZXRTdGF0ZSBm aWxlc2V0X3N0YXRlKTsKKworZXh0ZXJuIHZvaWQgcGFfbG9ja19zdHJlYW0oVHJhbnNhY3Rpb25J ZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIHBhX3VubG9ja19zdHJlYW0o VHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKKworZXh0ZXJuIHZvaWQgcGFf bG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpOwor ZXh0ZXJuIHZvaWQgcGFfdW5sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NL TU9ERSBsb2NrbW9kZSk7CisKK2V4dGVybiB2b2lkIHBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Js b2NrKHZvaWQpOworCitleHRlcm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm8sCisJCQkJCQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24pOworCisjZGVm aW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpICgod29ya2VyKS0+YXBwbHlfbGVhZGVy X3BpZCAhPSBJbnZhbGlkUGlkKQorCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxlc3luY193 b3JrZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lkSXNWYWxpZChNeUxvZ2ljYWxSZXBXb3JrZXItPnJl bGlkKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCithbV9sZWFkZXJfYXBwbHlfd29ya2VyKHZv aWQpCit7CisJcmV0dXJuICghYW1fdGFibGVzeW5jX3dvcmtlcigpICYmCisJCQkhaXNQYXJhbGxl bEFwcGx5V29ya2VyKE15TG9naWNhbFJlcFdvcmtlcikpOworfQorCitzdGF0aWMgaW5saW5lIGJv b2wKK2FtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcih2b2lkKQoreworCXJldHVybiBpc1BhcmFsbGVs QXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKTsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFdP UktFUl9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3Iu aCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCmluZGV4IDk5NWM4ZTguLjRlZTkxZTMgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvbG1nci5oCkBAIC0xMDcsNiArMTA3LDExIEBAIGV4dGVybiB2b2lkIExvY2tTaGFyZWRP YmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQsIHVpbnQxNiBvYmpzdWJpZCwK IGV4dGVybiB2b2lkIFVubG9ja1NoYXJlZE9iamVjdEZvclNlc3Npb24oT2lkIGNsYXNzaWQsIE9p ZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogCQkJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSk7 CiAKK2V4dGVybiB2b2lkIExvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lk LCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlkLAorCQkJCQkJCQkJCSAgIExPQ0tNT0RF IGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIFVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9u KE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQsCisJCQkJCQkJCQkJ CSBMT0NLTU9ERSBsb2NrbW9kZSk7CisKIC8qIERlc2NyaWJlIGEgbG9ja3RhZyBmb3IgZXJyb3Ig bWVzc2FnZXMgKi8KIGV4dGVybiB2b2lkIERlc2NyaWJlTG9ja1RhZyhTdHJpbmdJbmZvIGJ1Ziwg Y29uc3QgTE9DS1RBRyAqdGFnKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9s b2NrLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaAppbmRleCA5YTcxOTM0Li4xOTBiZGRi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaAorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL2xvY2suaApAQCAtMTQ5LDEwICsxNDksMTIgQEAgdHlwZWRlZiBlbnVtIExvY2tU YWdUeXBlCiAJTE9DS1RBR19TUEVDVUxBVElWRV9UT0tFTiwJLyogc3BlY3VsYXRpdmUgaW5zZXJ0 aW9uIFhpZCBhbmQgdG9rZW4gKi8KIAlMT0NLVEFHX09CSkVDVCwJCQkJLyogbm9uLXJlbGF0aW9u IGRhdGFiYXNlIG9iamVjdCAqLwogCUxPQ0tUQUdfVVNFUkxPQ0ssCQkJLyogcmVzZXJ2ZWQgZm9y IG9sZCBjb250cmliL3VzZXJsb2NrIGNvZGUgKi8KLQlMT0NLVEFHX0FEVklTT1JZCQkJLyogYWR2 aXNvcnkgdXNlciBsb2NrcyAqLworCUxPQ0tUQUdfQURWSVNPUlksCQkJLyogYWR2aXNvcnkgdXNl ciBsb2NrcyAqLworCUxPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04JLyogdHJhbnNhY3Rpb24gYmVp bmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKwkJCQkJCQkJICogcmVwbGljYXRpb24gc3Vic2NyaWJl ciAqLwogfSBMb2NrVGFnVHlwZTsKIAotI2RlZmluZSBMT0NLVEFHX0xBU1RfVFlQRQlMT0NLVEFH X0FEVklTT1JZCisjZGVmaW5lIExPQ0tUQUdfTEFTVF9UWVBFCUxPQ0tUQUdfQVBQTFlfVFJBTlNB Q1RJT04KIAogZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IGNoYXIgKmNvbnN0IExvY2tUYWdUeXBl TmFtZXNbXTsKIApAQCAtMjc4LDYgKzI4MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMT0NLVEFHCiAJ IChsb2NrdGFnKS5sb2NrdGFnX3R5cGUgPSBMT0NLVEFHX0FEVklTT1JZLCBcCiAJIChsb2NrdGFn KS5sb2NrdGFnX2xvY2ttZXRob2RpZCA9IFVTRVJfTE9DS01FVEhPRCkKIAorLyoKKyAqIElEIGlu Zm8gZm9yIGEgcmVtb3RlIHRyYW5zYWN0aW9uIG9uIGEgbG9naWNhbCByZXBsaWNhdGlvbiBzdWJz Y3JpYmVyIGlzOiBEQgorICogT0lEICsgU1VCU0NSSVBUSU9OIE9JRCArIFRSQU5TQUNUSU9OIElE ICsgT0JKSUQKKyAqLworI2RlZmluZSBTRVRfTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTihsb2Nr dGFnLGRib2lkLHN1Ym9pZCx4aWQsb2JqaWQpIFwKKwkoKGxvY2t0YWcpLmxvY2t0YWdfZmllbGQx ID0gKGRib2lkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVsZDIgPSAoc3Vib2lkKSwgXAor CSAobG9ja3RhZykubG9ja3RhZ19maWVsZDMgPSAoeGlkKSwgXAorCSAobG9ja3RhZykubG9ja3Rh Z19maWVsZDQgPSAob2JqaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX3R5cGUgPSBMT0NLVEFH X0FQUExZX1RSQU5TQUNUSU9OLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2xvY2ttZXRob2RpZCA9 IERFRkFVTFRfTE9DS01FVEhPRCkKIAogLyoKICAqIFBlci1sb2NrZWQtb2JqZWN0IGxvY2sgaW5m b3JtYXRpb246CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBi L3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IDQ1ZTJmMWYuLjkwNWFmMjIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgZW51 bQogCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8qIGFzayB3YWxzZW5kZXJzIHRvIHBy ZXBhcmUgZm9yIHNodXRkb3duICAqLwogCVBST0NTSUdfQkFSUklFUiwJCQkvKiBnbG9iYWwgYmFy cmllciBpbnRlcnJ1cHQgICovCiAJUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQsIC8qIGFzayBi YWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzICovCisJUFJPQ1NJR19QQVJBTExFTF9B UFBMWV9NRVNTQUdFLCAvKiBNZXNzYWdlIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLwog CiAJLyogUmVjb3ZlcnkgY29uZmxpY3QgcmVhc29ucyAqLwogCVBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfREFUQUJBU0UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50 LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5kZXggZjUzMjU0YS4uNmNhY2Q2 ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9p bmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApAQCAtNDIsNiArNDIsNyBAQCB0eXBlZGVmIGVudW0K IAlXQUlUX0VWRU5UX0NIRUNLUE9JTlRFUl9NQUlOLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9BUFBM WV9NQUlOLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9MQVVOQ0hFUl9NQUlOLAorCVdBSVRfRVZFTlRf TE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOLAogCVdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NU UkVBTSwKIAlXQUlUX0VWRU5UX1NZU0xPR0dFUl9NQUlOLAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJ VkVSX01BSU4sCkBAIC0xMDUsNiArMTA2LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9I QVNIX0dST1dfQlVDS0VUU19BTExPQ0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRT X0VMRUNULAogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9F VkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX0xP R0lDQUxfU1lOQ19EQVRBLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSwK IAlXQUlUX0VWRU5UX01RX0lOVEVSTkFMLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJz Y3JpcHRpb24ub3V0CmluZGV4IGMxM2QyMTguLjFlZDZmNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAgLTExNyw3ICsxMTcsNyBAQCBISU5UOiAgVG8g aW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGlj YXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKICAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3Rz dWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgbm9uZSAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0 IFNFVCAob3JpZ2luID0gYW55KTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViNCBTRVQgKG9yaWdpbiA9IGFueSk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2Vy IHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViMzsKQEAgLTEzOCw3ICsxMzgsNyBAQCBFUlJPUjogIGlu dmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4OiBtaXNzaW5nICI9IiBhZnRlciAiZm9vYmFy IiBpbiBjb25uZWN0aQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAg ICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg UFVCTElDQVRJT04gdGVzdHB1YjIsIHRlc3RwdWIzIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBA IC0xNTgsNyArMTU4LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQ IChsc24gPSAnMC8xMjM0NScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBM U04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVz dHB1YjN9IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9m ZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIz NDUKICgxIHJvdykKIAogLS0gb2sgLSB3aXRoIGxzbiA9IE5PTkUKQEAgLTE3MCw3ICsxNzAsNyBA QCBFUlJPUjogIGludmFsaWQgV0FMIGxvY2F0aW9uIChMU04pOiAwLzAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0 aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1 YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3Rw dWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiBCRUdJTjsKQEAgLTIwNSw3ICsyMDUsNyBAQCBI SU5UOiAgQXZhaWxhYmxlIHZhbHVlczogbG9jYWwsIHJlbW90ZV93cml0ZSwgcmVtb3RlX2FwcGx5 LCBvbiwgb2ZmLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKICAgICAgICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04g CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi Mix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWJfZm9vIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAg IHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkg ICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwg MC8wCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBiYWNrIHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxlCkBA IC0yNDIsNyArMjQyLDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVz dCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IHQgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChiaW5hcnkgPSBmYWxzZSk7CkBAIC0yNTEsMTMg KzI1MSwxMyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9u YW1lID0gTk9ORSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vi c2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAg fCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2Ug Y29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8 ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7Ci0tLSBm YWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0 IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElP TiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gZm9vKTsKLUVSUk9S OiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZQorRVJST1I6ICBzdHJlYW1pbmcg cmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yICJwYXJhbGxlbCIKIC0tIG5vdyBpdCB3b3Jrcwog Q1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBm YWxzZSwgc3RyZWFtaW5nID0gdHJ1ZSk7CiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVh dGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZApAQCAtMjY2LDcgKzI2NiwxNSBAQCBISU5UOiAgVG8g aW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGlj YXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1 YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNl IGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQg fCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAg ICAgIHwgb24gICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKKygxIHJvdykKKworQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK1xkUnMrCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBw YXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAog KDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFt aW5nID0gZmFsc2UpOwpAQCAtMjc1LDcgKzI4Myw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNh dGlvbiBhbHJlYWR5IGV4aXN0cwpAQCAtMjkzLDcgKzMwMSw3IEBAIEVSUk9SOiAgcHVibGljYXRp b24gInRlc3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3Vi IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgICAgICAgICBQdWJsaWNhdGlvbiAgICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5n IHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJv bm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0 cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwg ZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKICgxIHJvdykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIHVzZWQgbW9yZSB0aGVu IG9uY2UKQEAgLTMxMSw3ICszMTksNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIERST1AgUFVCTElDQVRJT04gdGVzdHB1YjEsIHRlc3RwdWIyIFdJVEggKHJlZgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5h bWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJP UCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwpAQCAtMzUwLDcgKzM1OCw3IEBAIEhJTlQ6 ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSBy ZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28t cGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNv bW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBw ICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAg ICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAg fCBmICAgICAgfCBvZmYgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAg ICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3Rl eGlzdCB8IDAvMAogKDEgcm93KQogCiAtLWZhaWwgLSBhbHRlciBvZiB0d29fcGhhc2Ugb3B0aW9u IG5vdCBzdXBwb3J0ZWQuCkBAIC0zNjIsNyArMzcwLDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHRydWUpOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBT a2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAg ICAgIHwgdCAgICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAg ICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtMzc1LDcgKzM4 Myw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkg Y3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJl YW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5 bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNO IAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jl c3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0 ICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8 IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAor IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVn cmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CkBAIC0zOTEsNyArMzk5LDcgQEAg SElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUg dGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJz Y3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAg ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAg ICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgU0VUIChkaXNhYmxlX29uX2Vycm9yID0gdHJ1ZSk7CkBAIC0zOTksNyArNDA3LDcgQEAg QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3Ig PSB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3Jp cHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVu YWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21t aXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVn cmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8 IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwgYW55ICAg IHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8w CiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90 X25hbWUgPSBOT05FKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlw dGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCmluZGV4IGVh ZWFkZTguLjc5OTFhYmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlw dGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbApAQCAt MTY3LDcgKzE2Nyw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChz bG90X25hbWUgPSBOT05FKTsKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwog Ci0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0cmVhbWlu ZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJM SUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gZm9vKTsK IAogLS0gbm93IGl0IHdvcmtzCkBAIC0xNzUsNiArMTc1LDEwIEBAIENSRUFURSBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCcgUFVCCiAKIFxkUnMrCiAKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CisKK1xkUnMrCisKIEFMVEVSIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IGUyNTljMTAuLjkxZThhYTggMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtOCw2ICs4LDEyOCBAQCB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0 OjpNb3JlOwogCisjIENoZWNrIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMgZmlu aXNoZWQgYXBwbHlpbmcgdGhlIHN0cmVhbWluZworIyB0cmFuc2FjdGlvbi4KK3N1YiBjaGVja19w YXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFs bGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNo ZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJ fQorfQorCisjIENvbW1vbiB0ZXN0IHN0ZXBzIGZvciBib3RoIHRoZSBzdHJlYW1pbmc9b24gYW5k IHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwp ID0gQF87CisKKwkjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNl ZWRpbmcgdGhlIDY0a0IgbGltaXQuCisJbXkgJGluICA9ICcnOworCW15ICRvdXQgPSAnJzsKKwor CW15ICRvZmZzZXQgPSAwOworCisJbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCisJbXkgJGggPSAkbm9kZV9w dWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVy LAorCQlvbl9lcnJvcl9zdG9wID0+IDApOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK KwkkaW4gLj0gcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJfTsKKwkkaC0+cHVtcF9uYjsKKworCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAwMSwgOTk5OSkgcyhpKTsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAw MDsKKwlDT01NSVQ7CisJfSk7CisKKwkkaW4gLj0gcXsKKwlDT01NSVQ7CisJXHEKKwl9OworCSRo LT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWlsLCBzbyBpZ25vcmUg dGhlbSBoZXJlCisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8 MzMzNCksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsK KworCSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBT RVQgKGJpbmFyeSA9IG9uKSIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJF R0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJz Y3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1bHQgPQor CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJl c3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWlu IGxvY2FsIGRlZmF1bHRzJyk7CisKKwkjIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9mIHRoZSBl eHRyYSBjb2x1bW5zIG9uIHRoZSBzdWJzY3JpYmVyLAorCSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5k IGNoZWNrIHRoYXQgc3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAorCSMgdmFsdWVzLiBU aGlzIGlzIHRvIGVuc3VyZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQor CSMgcHJvcGVybHkgYWZ0ZXIgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAn ZXBvY2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCisJKTsKKwor CSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNr X3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdD T01NSVQnKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0g OTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1 bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbGx5IGNoYW5nZWQgZGF0YScpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNo ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVf cHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTI2LDE3 ICsxNDgsMjcgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIklOU0VSVCBJTlRPIHRlc3RfdGFi IFZBTFVFUyAoMSwgJ2ZvbycpLCAoMiwgJ2JhcicpIik7CiAKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWJfMiAoYSBpbnQpIik7CisK ICMgU2V0dXAgc3RydWN0dXJlIG9uIHN1YnNjcmliZXIKICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50IHByaW1hcnkg a2V5LCBiIHRleHQsIGMgdGltZXN0YW1wdHogREVGQVVMVCBub3coKSwgZCBiaWdpbnQgREVGQVVM VCA5OTkpIgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJD UkVBVEUgVEFCTEUgdGVzdF90YWJfMiAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3Rf dGFiXzIoYSkiKTsKKwogIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCiBteSAkcHVibGlzaGVy X2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7 CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDUkVBVEUgUFVCTElD QVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiLCB0ZXN0X3RhYl8yIik7CiAKIG15ICRhcHBuYW1l ID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNV QlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNh dGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9 IG9uKSIKICk7CkBAIC00OSw2ICsxODEsNDMgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1 bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmli ZXInKTsKIAordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv biBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki QUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5h cnkgPSBvZmYpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0 byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKKyMgV2UgbmVlZCB0byBj aGVjayBERUJVRyBsb2dzIHRvIGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg aGFzCisjIGFwcGxpZWQgdGhlIHRyYW5zYWN0aW9uLiBTbywgYnVtcCB1cCB0aGUgbG9nIHZlcmJv c2l0eS4KKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAi bG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwor CisjIFJ1biBhIHF1ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVm ZmVjdC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCAx fSk7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUsIDEpOworCisjIFRlc3QgdGhhdCB0aGUgZGVhZGxvY2sgaXMgZGV0ZWN0ZWQgYW1v bmcgdGhlIGxlYWRlciBhbmQgcGFyYWxsZWwgYXBwbHkKKyMgd29ya2Vycy4KKworJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJkZWFkbG9ja190aW1lb3V0 ID0gMTBtcyIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisjIFJ1biBhIHF1ZXJ5IHRv IG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCAxfSk7CisKICMgSW50ZXJsZWF2 ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4K IG15ICRpbiAgPSAnJzsKIG15ICRvdXQgPSAnJzsKQEAgLTU4LDczICsyMjcsOTAgQEAgbXkgJHRp bWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0 X2RlZmF1bHQpOwogbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAogCW9uX2Vycm9yX3N0b3AgPT4gMCk7CiAKKyMg Q29uZmlybSBpZiBhIGRlYWRsb2NrIGJldHdlZW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5k IHRoZSBwYXJhbGxlbCBhcHBseQorIyB3b3JrZXIgY2FuIGJlIGRldGVjdGVkLgorCitteSAkb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwogJGluIC49IHF7CiBCRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDUwMDApIHMoaSk7CiB9OwogJGgtPnB1bXBfbmI7CiAKLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhp KTsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7Cisj IEVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhlY3V0ZXMgdGhlIGluc2Vy dCBjb21tYW5kIGJlZm9yZSB0aGUKKyMgbGVhZGVyIHdvcmtlci4KKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gYXBwbGllZCBbMC05XSsg Y2hhbmdlcyBpbiB0aGUgc3RyZWFtaW5nIGNodW5rLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiXzIgdmFs dWVzKDEpIik7CiAKICRpbiAuPSBxewogQ09NTUlUOwogXHEKIH07Ci0kaC0+ZmluaXNoOyAgICAj IGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQorJGgt PmZpbmlzaDsKIAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL0VSUk9SOiAoIFtB LVowLTldKzopPyBkZWFkbG9jayBkZXRlY3RlZC8sCisJJG9mZnNldCk7CisKKyMgSW4gb3JkZXIg Zm9yIHRoZSB0d28gdHJhbnNhY3Rpb25zIHRvIGJlIGNvbXBsZXRlZCBub3JtYWxseSB3aXRob3V0 IGNhdXNpbmcKKyMgY29uZmxpY3RzIGR1ZSB0byB0aGUgdW5pcXVlIGluZGV4LCB3ZSB0ZW1wb3Jh cmlseSBkcm9wIGl0LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE Uk9QIElOREVYIGlkeF90YWIiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMz NHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwor ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKIAotIyBUZXN0IHRoZSBz dHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVu dmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5D QVRFIFRBQkxFIHRlc3RfdGFiXzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki QUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKwkiQ1JFQVRF IFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiXzIoYSkiKTsKIAotIyBJbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAwMSwgMTAwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotQ09NTUlUOwotfSk7CisjIENvbmZpcm0gaWYgYSBkZWFkbG9jayBiZXR3ZWVuIHR3byBwYXJh bGxlbCBhcHBseSB3b3JrZXJzIGNhbiBiZSBkZXRlY3RlZC4KIAotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CiAKLSRy ZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwot aXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJyk7CiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVz dF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsK KyRoLT5wdW1wX25iOworCisjIEVuc3VyZSB0aGF0IHRoZSBmaXJzdCBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgZXhlY3V0ZXMgdGhlIGluc2VydCBjb21tYW5kCisjIGJlZm9yZSB0aGUgc2Vjb25kIG9u ZS4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05 XSs6KT8gYXBwbGllZCBbMC05XSsgY2hhbmdlcyBpbiB0aGUgc3RyZWFtaW5nIGNodW5rLywKKwkk b2Zmc2V0KTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1u cyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQg c3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5z dXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFm dGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFt cHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7CiAkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4 dCkiKTsKKwkiSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA1MDAwKSBzKGkpIik7CiAKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvRVJST1I6ICggW0Et WjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVkLywKKwkkb2Zmc2V0KTsKKworIyBJbiBvcmRlciBm b3IgdGhlIHR3byB0cmFuc2FjdGlvbnMgdG8gYmUgY29tcGxldGVkIG5vcm1hbGx5IHdpdGhvdXQg Y2F1c2luZworIyBjb25mbGljdHMgZHVlIHRvIHRoZSB1bmlxdWUgaW5kZXgsIHdlIHRlbXBvcmFy aWx5IGRyb3AgaXQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgSU5ERVggaWR4X3RhYiIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChleHRyYWN0 KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFi IgotKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKLQknY2hlY2sgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsbHkgY2hhbmdlZCBkYXRhJyk7CiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5z dG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE2X3N0cmVhbV9zdWJ4YWN0LnBsCmluZGV4IDY0OWRkOTUuLjJmMDE0OGMgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAorKysgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKQEAgLTgsNiArOCw3MyBA QCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIENoZWNrIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBoYXMgZmluaXNoZWQgYXBwbHlpbmcgdGhlIHN0cmVhbWluZworIyB0cmFuc2FjdGlv bi4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1a MC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAor CQkJJG9mZnNldCk7CisJfQorfQorCisjIENvbW1vbiB0ZXN0IHN0ZXBzIGZvciBib3RoIHRoZSBz dHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVh bWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOworCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4K Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMsIDUpIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNiwgOCkgcyhpKTsKKwlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5LCAxMSkg cyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQg czM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygxMiwgMTQpIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUsIDE3KSBzKGkpOworCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsKKwl9KTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7 CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDEyfDEyfDEyKSwKKwkJJ2NoZWNrIGRhdGEgd2Fz IGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5z IGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRh CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVf cHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsK ICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBA IC0zNyw2ICsxMDQsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAki Q1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0 ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0 cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSw0MSArMTIwLDM0IEBAIG15ICRyZXN1bHQgPQogCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7 CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0 byBzdWJzY3JpYmVyJyk7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3Mu Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1J TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUpIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUg bW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwot U0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg2LCA4KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOSwgMTEpIHMoaSk7Ci1VUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx MiwgMTQpIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBP SU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygxNSwgMTcpIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTJ8MTJ8MTIpLAotCSdjaGVjayBk YXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3Bh cmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRw aWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0 cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50 aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCisjIFdl IG5lZWQgdG8gY2hlY2sgREVCVUcgbG9ncyB0byBlbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGhhcworIyBhcHBsaWVkIHRoZSB0cmFuc2FjdGlvbi4gU28sIGJ1bXAgdXAgdGhl IGxvZyB2ZXJib3NpdHkuCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXIt PnJlbG9hZDsKKworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVsb2FkIGhh cyB0YWtlbiBlZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXtTRUxFQ1QgMX0pOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1 YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2Rl X3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE3X3N0cmVhbV9kZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2Rk bC5wbAppbmRleCAyZmJkNjQzLi42MjY2NzZhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MTdfc3RyZWFtX2RkbC5wbApAQCAtMiw2ICsyLDkgQEAKICMgQ29weXJpZ2h0IChjKSAyMDIxLTIw MjMsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCiAKICMgVGVzdCBzdHJlYW1p bmcgb2YgbGFyZ2UgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIHN1YnRyYW5zYWN0aW9ucworIwor IyBUaGlzIGZpbGUgaXMgbWFpbmx5IHRvIHRlc3QgdGhlIERETC9ETUwgaW50ZXJhY3Rpb24gb2Yg dGhlIHB1Ymxpc2hlciBzaWRlLAorIyBzbyB3ZSBkaWRuJ3QgYWRkIGEgcGFyYWxsZWwgYXBwbHkg dmVyc2lvbiBmb3IgdGhlIHRlc3RzIGluIHRoaXMgZmlsZS4KIHVzZSBzdHJpY3Q7CiB1c2Ugd2Fy bmluZ3M7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAppbmRleCAxNzBlZTEw Li5kY2UxNGIxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFt X3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVh bV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTI0IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKKyMgQ2hlY2sgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZCBh cHBseWluZyB0aGUgc3RyZWFtaW5nCisjIHRyYW5zYWN0aW9uLgorc3ViIGNoZWNrX3BhcmFsbGVs X2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0 eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9j ZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisK KyMgQ29tbW9uIHRlc3Qgc3RlcHMgZm9yIGJvdGggdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFt aW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsK KworCW15ICRvZmZzZXQgPSAwOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIHN0 cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKKwlTQVZFUE9JTlQgczE7CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0LCBtZDUoNDo6dGV4dCkpOworCVNBVkVQT0lO VCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDUsIG1kNSg1Ojp0ZXh0KSk7CisJ U0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNiwgbWQ1KDY6OnRl eHQpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDcs IG1kNSg3Ojp0ZXh0KSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg4LCBtZDUoODo6dGV4dCkpOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDksIG1kNSg5Ojp0ZXh0KSk7CisJU0FWRVBPSU5UIHM1OworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTAsIG1kNSgxMDo6dGV4dCkpOworCUNPTU1JVDsKKwl9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs LCAnQ09NTUlUJyk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3Rf dGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNnwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVw b2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkj IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9y ZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDExLCBtZDUoMTE6OnRleHQpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8g dGVzdF90YWIgVkFMVUVTICgxMiwgbWQ1KDEyOjp0ZXh0KSk7CisJU0FWRVBPSU5UIHMyOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTMsIG1kNSgxMzo6dGV4dCkpOworCVNBVkVQT0lO VCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE0LCBtZDUoMTQ6OnRleHQpKTsK KwlSRUxFQVNFIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTUsIG1kNSgxNTo6 dGV4dCkpOworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2co JG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwkk cmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwg cXEoN3wwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9u IHN1YnNjcmliZXInKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBzdHJlYW1l ZCB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIHJvbGxiYWNrCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICgxNiwgbWQ1KDE2Ojp0ZXh0KSk7CisJU0FWRVBPSU5UIHMx OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTcsIG1kNSgxNzo6dGV4dCkpOworCVNB VkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE4LCBtZDUoMTg6OnRl eHQpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwg JG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQUJPUlQnKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg3fDApLCAnY2hlY2sgcm9s bGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENsZWFudXAgdGhlIHRl c3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15 ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlz aGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNh bCcpOwpAQCAtMzYsNiArMTU0LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIp OwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVy X2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBX SVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDgsODEgKzE3MCwzMyBAQCBteSAkcmVzdWx0 ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVz dWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi0jIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNL cwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOwotU0FWRVBPSU5U IHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0LCBtZDUoNDo6dGV4dCkpOwotU0FW RVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg1LCBtZDUoNTo6dGV4dCkp OwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg2LCBtZDUoNjo6 dGV4dCkpOwotUk9MTEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDcs IG1kNSg3Ojp0ZXh0KSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoOCwgbWQ1KDg6OnRleHQpKTsKLVNBVkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoOSwgbWQ1KDk6OnRleHQpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoMTAsIG1kNSgxMDo6dGV4dCkpOwotQ09NTUlUOwotfSk7Ci0KLSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQot ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg2fDApLAotCSdj aGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0ZXN0X3N0cmVhbWluZygk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcg bW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor bXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKLSMgc3RyZWFtZWQg dHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIgc3VidHJh bnNhY3Rpb24KLSMgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDExLCBtZDUo MTE6OnRleHQpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAo MTIsIG1kNSgxMjo6dGV4dCkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICgxMywgbWQ1KDEzOjp0ZXh0KSk7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDE0LCBtZDUoMTQ6OnRleHQpKTsKLVJFTEVBU0UgczI7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE1LCBtZDUoMTU6OnRleHQpKTsKLVJPTExCQUNLIFRPIHMx OwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSg3fDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxl Y3RlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2l0aCBzdWJz Y3JpYmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxNiwg bWQ1KDE2Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDE3LCBtZDUoMTc6OnRleHQpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoMTgsIG1kNSgxODo6dGV4dCkpOwotUk9MTEJBQ0s7Ci19KTsKLQotJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDd8MCksICdjaGVjayBy b2xsYmFjayB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQo c3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91 bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3Jl cGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9 ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5n IGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKKyMg V2UgbmVlZCB0byBjaGVjayBERUJVRyBsb2dzIHRvIGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgaGFzCisjIGFwcGxpZWQgdGhlIHRyYW5zYWN0aW9uLiBTbywgYnVtcCB1cCB0 aGUgbG9nIHZlcmJvc2l0eS4KKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworJG5vZGVfc3Vic2NyaWJl ci0+cmVsb2FkOworCisjIFJ1biBhIHF1ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQg aGFzIHRha2VuIGVmZmVjdC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCBxe1NFTEVDVCAxfSk7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5v ZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5kZXggOTYyZTM0Ny4uYjMwMjIzZCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2Rk bF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1Ynhh Y3RfZGRsX2Fib3J0LnBsCkBAIC0zLDYgKzMsOSBAQAogCiAjIFRlc3Qgc3RyZWFtaW5nIG9mIHRy YW5zYWN0aW9uIHdpdGggc3VidHJhbnNhY3Rpb25zLCBERExzLCBETUxzLCBhbmQKICMgcm9sbGJh Y2tzCisjCisjIFRoaXMgZmlsZSBpcyBtYWlubHkgdG8gdGVzdCB0aGUgRERML0RNTCBpbnRlcmFj dGlvbiBvZiB0aGUgcHVibGlzaGVyIHNpZGUsCisjIHNvIHdlIGRpZG4ndCBhZGQgYSBwYXJhbGxl bCBhcHBseSB2ZXJzaW9uIGZvciB0aGUgdGVzdHMgaW4gdGhpcyBmaWxlLgogdXNlIHN0cmljdDsK IHVzZSB3YXJuaW5nczsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCA4ZTNlNzRi Li5lNjI0ZWJlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhh c2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2Vf Y2FzY2FkZS5wbApAQCAtNSw2ICs1LDggQEAKICMKICMgSW5jbHVkZXMgdGVzdHMgZm9yIG9wdGlv bnMgMlBDIChub3Qtc3RyZWFtaW5nKSBhbmQgYWxzbyBmb3IgMlBDIChzdHJlYW1pbmcpLgogIwor IyBUd28tcGhhc2UgYW5kIHBhcmFsbGVsIGFwcGx5IHdpbGwgYmUgdGVzdGVkIGluIDAyM190d29w aGFzZV9zdHJlYW0sIHNvIHdlCisjIGRpZG4ndCBhZGQgYSBwYXJhbGxlbCBhcHBseSB2ZXJzaW9u IGZvciB0aGUgdGVzdHMgaW4gdGhpcyBmaWxlLgogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsK IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggN2NkODAxNy4uNzVjYTgzNyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC04LDYg KzgsMjg5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhhdCB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGhhcyBmaW5pc2hlZCBhcHBseWluZyB0aGUgc3RyZWFtaW5nCisjIHRy YW5zYWN0aW9uLgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVH OiAoIFtBLVowLTldKzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29t bWFuZC8sCisJCQkkb2Zmc2V0KTsKKwl9Cit9CisKKyMgQ29tbW9uIHRlc3Qgc3RlcHMgZm9yIGJv dGggdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRl c3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1J VCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24u CisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEg aXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgorCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkp OworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwor CQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwlteSAk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgx KSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRy YW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0 LCBxcSg0fDR8NCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7 CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJPTExC QUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGlj aCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1 c2luZyAyUEMuCisJIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgZGF0 YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgorCSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNl cHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsi KTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRl IGFuZCBkZWxldGUgc29tZSByb3dzLgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOworCQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0 aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9u IGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMg YWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJST0xM QkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlv biBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAorCQkn Um93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9y aWdpbmFsIDIgcm93cycKKwkpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1 YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIENoZWNr IHRoYXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJl c3RhcnQuCisJIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KKwkjIDIu IFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNhY3Rpb24gaXMgY29tbWl0 dGVkLgorCSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5kaW5nIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRl ZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIE5vdGU6IGJvdGggcHVi bGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMywgNSkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9z dWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2lt bWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVy LT5zdGFydDsKKworCSMgV2UgZG9uJ3QgdHJ5IHRvIGNoZWNrIHRoZSBsb2cgZm9yIHBhcmFsbGVs IG9wdGlvbiBoZXJlIGFzIHRoZSBzdWJzY3JpYmVyCisJIyBtYXkgaGF2ZSBzdG9wcGVkIGFmdGVy IGZpbmlzaGluZyB0aGUgcHJlcGFyZSBhbmQgYmVmb3JlIGxvZ2dpbmcgdGhlCisJIyBhcHByb3By aWF0ZSBtZXNzYWdlLgorCisJIyBjb21taXQgcG9zdCB0aGUgcmVzdGFydAorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJl cGFyZWRfdGFiJzsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDR8 NHw0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJF UEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRl ZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMg Mi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJU IGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgUk9M TEJBQ0sgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxl YXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUgb3JpZ2luYWwgMiAr IGluc2VydGVkIDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmly c3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVk KQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor CisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgorCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzLCA1KSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9s b2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOwor CisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNj cmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKwor CSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAy UEMgdHJhbnNhY3Rpb24pCisJIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRz IHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhdGUgcHJp bWFyeSBrZXkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0 cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyLAorCSMgYnV0IHRoZSBl eHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCisJJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDN8M3wzKSwKKwkJJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXInKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBz dWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJ TlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJFUEFSRUQuCisJIyAx LiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIEEg c2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KKwkj IDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IDJQQyBkYXRhICsg dGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUgMzMzNCArIGluc2Vy dGVkIDEgPSAzMzM1KS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZp cnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRl ZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMywgNSkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxf bG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BSRVBBUkUnKTsK KworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJz Y3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJl c3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisK KwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUg MlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xk cyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHBy aW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklO U0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMg dHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVj ayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1 bHQsIHFxKDV8NXw1KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91dHNp ZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVw CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszMzEsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YgpAQCAtNjQsMjM2ICszNTEsMzggQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5ID0KICRu b2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3BoYXNlX3F1 ZXJ5KQogICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRv IGVuYWJsZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMg Q2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0 aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMg MS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBj b21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1 YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotCi0jIGNoZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy Ci0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMo aSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK LQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFO U0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4g cHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJl ZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0 ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDR8NHw0KSwKLQknUm93cyBpbnNlcnRl ZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCiApOwotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK LWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQ QVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAy IHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBz dHJlYW1lZCB1c2luZyAyUEMuCi0jIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBl Y3QgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEg ZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsi KTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDMsIDUpIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0 ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlJPTExCQUNLIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9y dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkg RlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAotCSdSb3dzIGluc2VydGVk IGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dz Jyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRoYXQgMlBDIENPTU1JVCBQUkVQ QVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCi0jIDEuIGluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJl Zm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVy cyBhcmUgcmVzdGFydGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMK LSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVy IHRoZSBjb21taXQuCi0jIE5vdGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNy YXNoL3Jlc3RhcnQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1KSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBB UkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJl ci0+c3RvcCgnaW1tZWRpYXRlJyk7Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScp OwotCi0kbm9kZV9wdWJsaXNoZXItPnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAK LSMgY29tbWl0IHBvc3QgdGhlIHJlc3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNl cnRzIGFyZSB2aXNpYmxlCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDR8NHw0KSwKLQknUm93cyBpbnNlcnRlZCBi eSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJF UEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu Ci0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJF UEFSRS4KLSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhl IDJQQyBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJl cgotIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dz ICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNl cnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOwotCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNp ZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBz dGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNl cGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQot IyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIp OwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNo ZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyLAotIyBidXQgdGhl IGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0ZWQKLSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMo JHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0IHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmli ZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0 ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlz IGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJl ci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMuIEEgc2luZ2xlIHJvdyBJ TlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KLSMgNC4gVGhlbiBkbyBh IENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQQyBkYXRhICsgdGhlIGV4dHJhIHJvdyBh cmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRh dGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4g MjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUpIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0J UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNh Y3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24g aXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcg PSBwYXJhbGxlbCkiKTsKIAotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJl IG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2Fj dGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZv ciBhIHNlcGFyYXJlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJyki KTsKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0 aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBv ciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFm dGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29t bWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQg UFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKyMgV2UgbmVlZCB0byBjaGVjayBERUJV RyBsb2dzIHRvIGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzCisjIGFw cGxpZWQgdGhlIHRyYW5zYWN0aW9uLiBTbywgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKyRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMSIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwogCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworIyBSdW4gYSBxdWVyeSB0byBt YWtlIHN1cmUgdGhhdCB0aGUgcmVsb2FkIGhhcyB0YWtlbiBlZmZlY3QuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgMX0pOwogCi0jIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNXw1 fDUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkg aGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKLSk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJz Y3JpYmVyJyk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAxKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBj aGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNTBkODZj Yi4uMjNiYWZlYyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK KysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE0NzMsNiArMTQ3Myw3 IEBAIExvZ2ljYWxSZXBSZWxJZAogTG9naWNhbFJlcFJlbE1hcEVudHJ5CiBMb2dpY2FsUmVwUmVs YXRpb24KIExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQorTG9naWNhbFJlcFN0cmVh bUFib3J0RGF0YQogTG9naWNhbFJlcFR1cGxlRGF0YQogTG9naWNhbFJlcFR5cAogTG9naWNhbFJl cFdvcmtlcgpAQCAtMTg3Niw2ICsxODc3LDkgQEAgUGFnZVhMb2dSZWNQdHIKIFBhZ2V0YWJsZUVu dHJ5CiBQYWlycwogUGFyYWxsZWxBcHBlbmRTdGF0ZQorUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5 CitQYXJhbGxlbEFwcGx5V29ya2VySW5mbworUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZAogUGFy YWxsZWxCaXRtYXBIZWFwU3RhdGUKIFBhcmFsbGVsQmxvY2tUYWJsZVNjYW5EZXNjCiBQYXJhbGxl bEJsb2NrVGFibGVTY2FuV29ya2VyCkBAIC0xODk1LDYgKzE4OTksNyBAQCBQYXJhbGxlbFNsb3RS ZXN1bHRIYW5kbGVyCiBQYXJhbGxlbFN0YXRlCiBQYXJhbGxlbFRhYmxlU2NhbkRlc2MKIFBhcmFs bGVsVGFibGVTY2FuRGVzY0RhdGEKK1BhcmFsbGVsVHJhbnNTdGF0ZQogUGFyYWxsZWxWYWN1dW1T dGF0ZQogUGFyYWxsZWxXb3JrZXJDb250ZXh0CiBQYXJhbGxlbFdvcmtlckluZm8KQEAgLTE5MjQs NiArMTkyOSw3IEBAIFBhcnNlclN0YXRlCiBQYXJ0Q2xhdXNlSW5mbwogUGFydENsYXVzZU1hdGNo U3RhdHVzCiBQYXJ0Q2xhdXNlVGFyZ2V0CitQYXJ0aWFsRmlsZVNldFN0YXRlCiBQYXJ0aXRpb25C b3VuZEluZm8KIFBhcnRpdGlvbkJvdW5kSW5mb0RhdGEKIFBhcnRpdGlvbkJvdW5kU3BlYwpAQCAt Mjc3NCw2ICsyNzgwLDcgQEAgVG9jRW50cnkKIFRva2VuQXV4RGF0YQogVG9rZW5pemVkQXV0aExp bmUKIFRyYWNrSXRlbQorVHJhbnNBcHBseUFjdGlvbgogVHJhbnNJbnZhbGlkYXRpb25JbmZvCiBU cmFuc1N0YXRlCiBUcmFuc2FjdGlvbklkCi0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB571621ED532C2D7C3E01625894FB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v75-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v75-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v75-0002-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=12800; creation-date="Fri, 06 Jan 2023 10:07:30 GMT"; modification-date="Fri, 06 Jan 2023 10:07:55 GMT" Content-Transfer-Encoding: base64 RnJvbSAxN2Y0YmExM2I0YzFjOGU1YjY4MjUxZmQ3Mjc3NmI1ZWZkYmY0N2U1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IEthcGlsYSA8YWthcGlsYUBwb3N0Z3Jlc3FsLm9yZz4K RGF0ZTogTW9uLCAyIEphbiAyMDIzIDE1OjM3OjI1ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2NzUg Mi81XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJpYWxp emluZyBtZXNzYWdlcyB0byBkaXNrLgoKLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAzMiArKysrKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAgfCAgMTIgKysKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAgIHwgICA5ICsrCiBzcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAgICAgICB8ICAxNCArKwogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAgfCAgIDQgKwogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAxNDQgKysrKysr KysrKysrKysrKysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDIxMiBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBhMzNhOTM1Li42NjliYWJmIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBA IC0xMTY1MCw2ICsxMTY1MCwzOCBAQCBMT0c6ICBDbGVhblVwTG9jazogZGVsZXRpbmc6IGxvY2so MHhiN2FjZDg0NCkgaWQoMjQ2ODgsMjQ2OTYsMCwwLDAsMSkKICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1zdHJlYW0t c2VyaWFsaXplLXRocmVzaG9sZCIgeHJlZmxhYmVsPSJzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9s ZCI+CisgICAgICA8dGVybT48dmFybmFtZT5zdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZDwvdmFy bmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8 cHJpbWFyeT48dmFybmFtZT5zdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZDwvdmFybmFtZT4gY29u ZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAg IDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRm9yY2Vz IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyB0byBmaWxlcyBh ZnRlcgorICAgICAgICBzZW5kaW5nIHNwZWNpZmllZCBhbW91bnQgb2Ygc3RyZWFtaW5nIGNodW5r cyB0byB0aGUgcGFyYWxsZWwgYXBwbHkKKyAgICAgICAgd29ya2VyLiBTZXR0aW5nIHRoaXMgdG8g emVybyBzZXJpYWxpemUgYWxsIG1lc3NhZ2VzLiBBIHZhbHVlIG9mCisgICAgICAgIDxsaXRlcmFs Pi0xPC9saXRlcmFsPiAodGhlIGRlZmF1bHQpIGRpc2FibGVzIHRoaXMgZmVhdHVyZS4gVGhpcyBp cworICAgICAgICBpbnRlbmRlZCB0byB0ZXN0IHNlcmlhbGl6YXRpb24gdG8gZmlsZXMgd2l0aAor ICAgICAgICA8bGl0ZXJhbD5zdHJlYW1pbmcgPSBwYXJhbGxlbDwvbGl0ZXJhbD4uCisgICAgICAg PC9wYXJhPgorCisgICAgICAgPHBhcmE+CisgICAgICAgIFdoZW4gbG9naWNhbCByZXBsaWNhdGlv biBzdWJzY3JpcHRpb24gPGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPgorICAgICAgICBwYXJh bWV0ZXIgaXMgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGxlYWRlciBh cHBseSB3b3JrZXIKKyAgICAgICAgc2VuZHMgbWVzc2FnZXMgdG8gcGFyYWxsZWwgd29ya2VycyB3 aXRoIGEgdGltZW91dC4gQnkgZGVmYXVsdCwgdGhlCisgICAgICAgIGxlYWRlciBhcHBseSB3b3Jr ZXIgd2lsbCBzZXJpYWxpemUgdGhlIHJlbWFpbmluZyBtZXNzYWdlcyB0byBmaWxlcyBpZgorICAg ICAgICB0aGUgdGltZW91dCBpcyBleGNlZWRlZC4gSWYgdGhpcyBvcHRpb24gaXMgc2V0IHRvIGFu eSB2YWx1ZSBvdGhlciB0aGFuCisgICAgICAgIDxsaXRlcmFsPi0xPC9saXRlcmFsPiwgc2VyaWFs aXplIHRvIGZpbGVzIGV2ZW4gd2l0aG91dCB0aW1lb3V0LgorICAgICAgIDwvcGFyYT4KKworICAg ICAgIDxwYXJhPgorICAgICAgICBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQgaW4gdGhl IDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPgorICAgICAgICBmaWxlIG9yIG9u IHRoZSBzZXJ2ZXIgY29tbWFuZCBsaW5lLgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgPC92YXJpYWJsZWxpc3Q+CiAgIDwvc2Vj dDE+CiAgIDxzZWN0MSBpZD0icnVudGltZS1jb25maWctc2hvcnQiPgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA4 OTgzMjY3Li5lNWVjOGIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMjU0LDYgKzI1NCw5IEBAIHN0YXRpYyBQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAvKiBB IGxpc3QgdG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCiBzdGF0aWMgTGlz dCAqc3VieGFjdGxpc3QgPSBOSUw7CiAKKy8qIEdVQyB2YXJpYWJsZSAqLworaW50CQkJc3RyZWFt X3NlcmlhbGl6ZV90aHJlc2hvbGQgPSAtMTsKKwogc3RhdGljIHZvaWQgcGFfZnJlZV93b3JrZXJf aW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pOwogc3RhdGljIFBhcmFsbGVsVHJh bnNTdGF0ZSBwYV9nZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hh cmVkKTsKIHN0YXRpYyBQYXJ0aWFsRmlsZVNldFN0YXRlIHBhX2dldF9maWxlc2V0X3N0YXRlKHZv aWQpOwpAQCAtMTE0Niw2ICsxMTQ5LDE1IEBAIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQogCUFzc2VydCgh SXNUcmFuc2FjdGlvblN0YXRlKCkpOwogCUFzc2VydCghd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2Vz KTsKIAorCS8qIEZvcmNlIHRvIHNlcmlhbGl6ZSBtZXNzYWdlcyBpZiBzdHJlYW1fc2VyaWFsaXpl X3RocmVzaG9sZCBpcyByZWFjaGVkLiAqLworCWlmIChzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9s ZCAhPSAtMSAmJgorCQkoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPT0gMCB8fAorCQkgc3Ry ZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPCBwYXJhbGxlbF9zdHJlYW1fbmNodW5rcykpCisJewor CQlwYXJhbGxlbF9zdHJlYW1fbmNodW5rcyA9IDA7CisJCXJldHVybiBmYWxzZTsKKwl9CisKIC8q CiAgKiBUaGlzIHRpbWVvdXQgaXMgYSBiaXQgYXJiaXRyYXJ5IGJ1dCB0ZXN0aW5nIHJldmVhbGVk IHRoYXQgaXQgaXMgc3VmZmljaWVudAogICogdG8gc2VuZCB0aGUgbWVzc2FnZSB1bmxlc3MgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyB3YWl0aW5nIG9uIHNvbWUKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGM0YzA0MDkuLjJmNjQ0YjcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzI2LDYgKzMyNiwxMiBAQCBz dGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiBz dGF0aWMgdWludDMyIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyA9IDA7CiAKIC8qCisgKiBUaGUg bnVtYmVyIG9mIHN0cmVhbWluZyBjaHVua3Mgc2VudCBieSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1 cmluZyBvbmUKKyAqIHN0cmVhbWVkIHRyYW5zYWN0aW9uLiBUaGlzIGlzIG9ubHkgdXNlZCB3aGVu IHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID4gMC4KKyAqLwordWludDMyCQlwYXJhbGxlbF9z dHJlYW1fbmNodW5rcyA9IDA7CisKKy8qCiAgKiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEg bW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBz dWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hl cyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQgc2tpcHBpbmcgY2hhbmdlcywgd2Ug ZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFuZ2VzIG9mCkBAIC0xNTE5LDYgKzE1 MjUsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAkJY2FzZSBU UkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKKwkJCWlm IChzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCA+IDApCisJCQkJcGFyYWxsZWxfc3RyZWFtX25j aHVua3MrKzsKKwogCQkJLyoKIAkJCSAqIE9uY2Ugd2Ugc3RhcnQgc2VyaWFsaXppbmcgdGhlIGNo YW5nZXMsIHRoZSBwYXJhbGxlbCBhcHBseQogCQkJICogd29ya2VyIHdpbGwgd2FpdCBmb3IgdGhl IGxlYWRlciB0byByZWxlYXNlIHRoZSBzdHJlYW0gbG9jawpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYwppbmRleCA5MjU0NWI0Li4zMDJjZWI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi9zeW5jcmVwLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhcmdl X29iamVjdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKQEAgLTMwMTUsNiArMzAx NiwxOSBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVOYW1lc0ludFtdID0KIAl9LAogCiAJ eworCQl7InN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIiwgUEdDX1NJR0hVUCwgREVWRUxPUEVS X09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciB0byBzZXJpYWxpemUgbWVzc2FnZXMgIgorCQkJCQkJICJ0byBmaWxlcyBhZnRlciBzZW5kaW5n IHNwZWNpZmllZCBhbW91bnQgb2Ygc3RyZWFtaW5nICIKKwkJCQkJCSAiY2h1bmtzIGluIHN0cmVh bWluZyBwYXJhbGxlbCBtb2RlLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJBIHZhbHVlIG9mIC0xIGRp c2FibGVzIHRoaXMgZmVhdHVyZS4iKSwKKwkJCUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZz dHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCwKKwkJLTEsIC0xLCBJTlRfTUFYLAorCQlOVUxMLCBO VUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwg TE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUg dG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkgImxvZyBmaWxlIHJvdGF0aW9uLiIpLApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCBkYjg5MWVlLi5h NjgyNzkxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAt MjI1LDYgKzIyNSwxMCBAQCBleHRlcm4gUEdETExJTVBPUlQgTG9naWNhbFJlcFdvcmtlciAqTXlM b2dpY2FsUmVwV29ya2VyOwogCiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBpbl9yZW1vdGVfdHJh bnNhY3Rpb247CiAKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgc3RyZWFtX3NlcmlhbGl6ZV90aHJl c2hvbGQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaHVu a3M7CisKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7CiBl eHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQs IE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDkxZThhYTguLjgzZDY5NTYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtMTMzLDEzICsxMzMsMjAgQEAgc3ViIHRlc3Rf c3RyZWFtaW5nCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxp c2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ci0kbm9kZV9wdWJsaXNo ZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCSdsb2dpY2FsX2RlY29kaW5nX3dv cmtfbWVtID0gNjRrQicpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigKKwkncG9zdGdy ZXNxbC5jb25mJywgcXEoCittYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMTAKK2xvZ2ljYWxf ZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCCispKTsKICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CiAK ICMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQogbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOwogJG5vZGVfc3Vic2NyaWJlci0+ aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5h cHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCittYXhfcHJlcGFyZWRfdHJhbnNh Y3Rpb25zID0gMTAKKykpOwogJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAKICMgQ3JlYXRlIHNv bWUgcHJlZXhpc3RpbmcgY29udGVudCBvbiBwdWJsaXNoZXIKQEAgLTE3MCw3ICsxNzcsNyBAQCBt eSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKICMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24n CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElD QVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCisJIkNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFt ZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbiwgdHdv X3BoYXNlID0gb24pIgogKTsKIAogIyBXYWl0IGZvciBpbml0aWFsIHRhYmxlIHN5bmMgdG8gZmlu aXNoCkBAIC0zMTIsNiArMzE5LDEzNyBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7 CiBpcygkcmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyBpbmRleCcpOwogCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBl bnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVO Q0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisjIFRlc3Qgc2VyaWFsaXppbmcgbWVzc2FnZXMgdG8gZGlzaworCisj IFNldCBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCB0byB6ZXJvLCBzbyB0aGUgbWVzc2FnZXMg d2lsbCBiZSBzZXJpYWxpemVkIHRvIGRpc2suCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwknQUxURVIgU1lTVEVNIFNFVCBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9s ZCA9IDA7Jyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisKKyMgUnVuIGEgcXVlcnkgdG8g bWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4gZWZmZWN0LgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNUIDF9KTsKKworIyBTZXJpYWxpemUg dGhlIENPTU1JVCB0cmFuc2FjdGlvbi4KKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFi XzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIpOworCisjIEVu c3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXplZC4KKyRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gb3BlbmluZyBmaWxlICIu KlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAorCSRvZmZzZXQpOworCiskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CisKKyMgQ2xlYW4g dXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiXzIiKTsKKyRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgU2VyaWFsaXplIHRoZSBQ UkVQQVJFIHRyYW5zYWN0aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7 CisJUFJFUEFSRSBUUkFOU0FDVElPTiAneGFjdCc7CisJfSk7CisKKyMgRW5zdXJlIHRoYXQgdGhl IG1lc3NhZ2VzIGFyZSBzZXJpYWxpemVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9n KAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBvcGVuaW5nIGZpbGUgIi4qXC5jaGFuZ2VzIiBm b3Igc3RyZWFtZWQgY2hhbmdlcy8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBp biBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKyMgQ2hlY2sgdGhhdCAyUEMgZ2V0cyBjb21taXR0ZWQgb24g c3Vic2NyaWJlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1J VCBQUkVQQVJFRCAneGFjdCc7Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24g c3Vic2NyaWJlcgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJlc3VsdCwg cXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5n IG1lc3NhZ2VzIHRvIGRpc2snKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52 aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNB VEUgVEFCTEUgdGVzdF90YWJfMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworIyBTZXJpYWxpemUgdGhlIEFCT1JUIHRvcC10cmFuc2FjdGlvbi4KKyMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworCVJPTExCQUNLOworCX0pOworCisj IEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXplZC4KKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gb3BlbmluZyBmaWxl ICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAorCSRvZmZzZXQpOworCiskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSgwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYnkgc2VyaWFsaXppbmcgbWVzc2FnZXMgdG8gZGlzaycpOworCisjIENsZWFuIHVw IHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7Ciskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFNlcmlhbGl6ZSB0aGUgQUJP UlQgc3ViLXRyYW5zYWN0aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7 CisJU0FWRVBPSU5UIHNwOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gc3A7CisJQ09N TUlUOworCX0pOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXplZC4K KyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6 KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAorCSRv ZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisjIENoZWNrIHRoYXQgb25seSBzdWItdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3Jp YmVyLgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJlc3VsdCwgcXEoNTAw MCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3Nh Z2VzIHRvIGRpc2snKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hl ci0+c3RvcDsKIAotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB571621ED532C2D7C3E01625894FB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v75-0003-Stop-extra-worker-if-GUC-was-changed.patch" Content-Description: v75-0003-Stop-extra-worker-if-GUC-was-changed.patch Content-Disposition: attachment; filename="v75-0003-Stop-extra-worker-if-GUC-was-changed.patch"; size=4294; creation-date="Fri, 06 Jan 2023 10:07:30 GMT"; modification-date="Fri, 06 Jan 2023 10:07:55 GMT" Content-Transfer-Encoding: base64 RnJvbSA4MTE5MjUyYzYzMzgxNDM3OGEwZWQwY2IwMTdmMzIxYjczNjMzMmE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGVybG9ja2NwcCA8c2hlcmxvY2tjcHBAZm94bWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgRGVjIDIwMjIgMjA6NDM6MjEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY3 NSAzLzVdIFN0b3AgZXh0cmEgd29ya2VyIGlmIEdVQyB3YXMgY2hhbmdlZAoKSWYgdGhlIG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gaXMgY2hhbmdlZCB0byBhCmxv d2VyIHZhbHVlLCB0cnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgdG8ga2VlcCB0 aGUgbnVtYmVyIG9mCndvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uCi0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAgfCA2MCArKysrKysrKysrKysrKysrKystLS0t CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgICAgICB8ICA3 ICsrKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAg fCAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFs bGVsd29ya2VyLmMKaW5kZXggZTVlYzhiMi4uMDgzZmYzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTU0Niw2 ICs1NDYsMjUgQEAgcGFfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCiB9CiAKIC8qCisg KiBTdG9wIHRoZSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIGZyZWUgdGhlIGNvcnJl c3BvbmRpbmcgaW5mby4KKyAqLworc3RhdGljIHZvaWQKK3BhX3N0b3Bfd29ya2VyKFBhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlpbnQJCQlzbG90X25vOworCXVpbnQxNgkJZ2Vu ZXJhdGlvbjsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCWdl bmVyYXRpb24gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOwor CXNsb3Rfbm8gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworCVNw aW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJbG9naWNhbHJlcF9wYV93 b3JrZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCXBhX2ZyZWVfd29ya2VyX2luZm8o d2luZm8pOworfQorCisvKgogICogTWFrZXMgdGhlIHdvcmtlciBhdmFpbGFibGUgZm9yIHJldXNl LgogICoKICAqIFRoaXMgcmVtb3ZlcyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGVudHJ5IGZy b20gdGhlIGhhc2ggdGFibGUgc28gdGhhdCBpdApAQCAtNTgwLDIzICs1OTksNDIgQEAgcGFfZnJl ZV93b3JrZXIoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCQlsaXN0X2xlbmd0aChQ YXJhbGxlbEFwcGx5V29ya2VyUG9vbCkgPgogCQkobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbiAvIDIpKQogCXsKLQkJaW50CQkJc2xvdF9ubzsKLQkJdWludDE2CQln ZW5lcmF0aW9uOwotCi0JCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwot CQlnZW5lcmF0aW9uID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlv bjsKLQkJc2xvdF9ubyA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87 Ci0JCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCQlwYV9zdG9wX3dv cmtlcih3aW5mbyk7CisJCXJldHVybjsKKwl9CiAKLQkJbG9naWNhbHJlcF9wYV93b3JrZXJfc3Rv cChzbG90X25vLCBnZW5lcmF0aW9uKTsKKwl3aW5mby0+aW5fdXNlID0gZmFsc2U7CisJd2luZm8t PnNlcmlhbGl6ZV9jaGFuZ2VzID0gZmFsc2U7Cit9CiAKLQkJcGFfZnJlZV93b3JrZXJfaW5mbyh3 aW5mbyk7CisvKgorICogVHJ5IHRvIHN0b3AgcGFyYWxsZWwgYXBwbHkgd29ya2VycyB0aGF0IGFy ZSBub3QgaW4gdXNlIHRvIGtlZXAgdGhlIG51bWJlciBvZgorICogd29ya2VycyBsb3dlciB0aGFu IGhhbGYgb2YgdGhlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24u CisgKi8KK3ZvaWQKK3BhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQpCit7CisJTGlzdAkgICAqYWN0 aXZlX3dvcmtlcnM7CisJTGlzdENlbGwgICAqbGM7CisJaW50CQkJbWF4X2FwcGx5d29ya2VycyA9 IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyOwogCisJaWYg KGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA8PSBtYXhfYXBwbHl3b3JrZXJz KQogCQlyZXR1cm47CisKKwlhY3RpdmVfd29ya2VycyA9IGxpc3RfY29weShQYXJhbGxlbEFwcGx5 V29ya2VyUG9vbCk7CisKKwlmb3JlYWNoKGxjLCBhY3RpdmVfd29ya2VycykKKwl7CisJCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBs Zmlyc3QobGMpOworCisJCXBhX3N0b3Bfd29ya2VyKHdpbmZvKTsKKworCQkvKiBSZWNoZWNrIHRo ZSBudW1iZXIgb2Ygd29ya2Vycy4gKi8KKwkJaWYgKGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlX b3JrZXJQb29sKSA8PSBtYXhfYXBwbHl3b3JrZXJzKQorCQkJYnJlYWs7CiAJfQogCi0Jd2luZm8t PmluX3VzZSA9IGZhbHNlOwotCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IGZhbHNlOworCWxp c3RfZnJlZShhY3RpdmVfd29ya2Vycyk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwppbmRleCAyZjY0NGI3Li5lYjUzYWNlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM2MzEsNiArMzYzMSwxMyBAQCBMb2dpY2Fs UmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAkJewogCQkJQ29uZmlnUmVs b2FkUGVuZGluZyA9IGZhbHNlOwogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisK KwkJCS8qCisJCQkgKiBUcnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgaW4gY2Fz ZSB0aGUKKwkJCSAqIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g aXMgY2hhbmdlZCB0byBhCisJCQkgKiBsb3dlciB2YWx1ZS4KKwkJCSAqLworCQkJcGFfc3RvcF9p ZGxlX3dvcmtlcnMoKTsKIAkJfQogCiAJCWlmIChyYyAmIFdMX1RJTUVPVVQpCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IGE2ODI3OTEuLmYzYjJmMmQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yNzgsNiArMjc4 LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9y aWdpbm5hbWUpOwogLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlv bnMgKi8KIGV4dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7 CiBleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0 aW9uSWQgeGlkKTsKK2V4dGVybiB2b2lkIHBhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQpOwogZXh0 ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKTsKIAogZXh0ZXJuIGJvb2wgcGFf c2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsCi0t IAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB571621ED532C2D7C3E01625894FB9OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v75-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v75-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v75-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=21629; creation-date="Fri, 06 Jan 2023 10:07:30 GMT"; modification-date="Fri, 06 Jan 2023 10:07:56 GMT" Content-Transfer-Encoding: base64 RnJvbSA0YTEyNGQxMjg2MWExY2U2NTVlM2YxZGUwMTdhMThkZjA5YzAxODdhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NzUgNC81XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku CgpOb3RlOiBTaW5jZSB3ZSBhZGQgYSBuZXcgZmllbGQgJ3N1YnJldHJ5JyB0byBjYXRhbG9nICdw Z19zdWJzY3JpcHRpb24nIGhhcyBiZWVuCmV4cGFuZGVkLCB3ZSBuZWVkIGJ1bXAgY2F0YWxvZyB2 ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDEwICsrCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAg ICAgICAgICAgICB8ICAxMSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwgICAgICAgICAgfCAgIDUgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRp b24uYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuYyAgICAgICAgICAgIHwgICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYyAgICAgIHwgIDMwICsrKysKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAgIHwgMTgyICsrKysrKysrKysrKysrKy0t LS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICAg ICAgIHwgICA3ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAg ICAgICAgIHwgICAyICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAg ICAgICAgICAgIHwgIDYzICsrKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDI2MyBpbnNlcnRpb25z KCspLCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGMxZTQwNDguLmQ5MTgzMjcg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCkBAIC03OTUwLDYgKzc5NTAsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVw bGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFi bGU+JmwKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ c3VicmV0cnk8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiBwcmV2aW91cyBjaGFuZ2UgZmFpbGVkIHRvIGJl IGFwcGxpZWQgd2hpbGUgdGhlcmUgd2VyZSBhbnkKKyAgICAgICBhY3RpdmUgcGFyYWxsZWwgYXBw bHkgd29ya2VycywgbmVjZXNzaXRhdGluZyBhIHJldHJ5LgorICAgICAgPC9wYXJhPjwvZW50cnk+ CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1 Y3RmaWVsZD5zdWJjb25uaW5mbzwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CiAgICAg ICA8L3BhcmE+CiAgICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CmluZGV4IDU0ZjQ4YmUuLmNiNGY1YzYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbApAQCAtMTUwNCwxMiArMTUwNCwxMSBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUg ZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogCiAg IDxwYXJhPgogICAgV2hlbiB0aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8 L2xpdGVyYWw+LCB0aGUgZmluaXNoIExTTiBvZgotICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkg bm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCi0gICBj aGFuZ2UgdGhlIHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0 ZXJhbD5vZmY8L2xpdGVyYWw+IGFuZAotICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWlu IHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAotICAgYmUg d3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBw bGVhc2UgcmVmZXIgdG8gPGxpbmsKLSAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+ PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgotICAgU0tJUDwvY29tbWFuZD48L2xpbms+ LgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNl LCB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uCisgICB3aWxsIGJlIHJldHJpZWQgaW4gPGxpdGVyYWw+ c3RyZWFtaW5nID0gb248L2xpdGVyYWw+IG1vZGUuIElmIGl0IGZhaWxzCisgICBhZ2FpbiwgdGhl IGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsIGJlIHdyaXR0ZW4gdG8g dGhlCisgICBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSBy ZWZlciB0bworICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29tbWFu ZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFNLSVA8L2NvbW1hbmQ+PC9saW5rPi4KICAgPC9wYXJh PgogIDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNj cmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwK aW5kZXggZWJhNzJjNi4uZGVjZDU1NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2Ny aXB0aW9uLnNnbWwKQEAgLTI1MSw2ICsyNTEsMTEgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwK ICAgICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJv ciBoYXBwZW5zIGluIGEKICAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHRoZSBmaW5p c2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24KICAgICAgICAgICBtaWdodCBub3QgYmUg cmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgV2hlbiBhcHBseWluZyBzdHJl YW1pbmcgdHJhbnNhY3Rpb25zLCBpZiBhIGRlYWRsb2NrIGlzIGRldGVjdGVkLCB0aGUKKyAgICAg ICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBleGl0IHdpdGggYW4gZXJyb3IuIFRoZQor ICAgICAgICAgIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiBtb2RlIGlzIGRpc3JlZ2FyZGVk IHdoZW4gcmV0cnlpbmc7CisgICAgICAgICAgaW5zdGVhZCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBi ZSBhcHBsaWVkIHVzaW5nIDxsaXRlcmFsPm9uPC9saXRlcmFsPgorICAgICAgICAgIG1vZGUuCiAg ICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50 cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCBhNTZhZTMxLi4wZWI1 ZmZiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAgLTcxLDYgKzcxLDcg QEAgR2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKQogCXN1Yi0+c3Ry ZWFtID0gc3ViZm9ybS0+c3Vic3RyZWFtOwogCXN1Yi0+dHdvcGhhc2VzdGF0ZSA9IHN1YmZvcm0t PnN1YnR3b3BoYXNlc3RhdGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJmb3JtLT5zdWJkaXNh Ymxlb25lcnI7CisJc3ViLT5yZXRyeSA9IHN1YmZvcm0tPnN1YnJldHJ5OwogCiAJLyogR2V0IGNv bm5pbmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDQ0N2M5YjkuLmFmMDc2ODQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEzMDEsNyArMTMwMSw3IEBAIFJFVk9L RSBBTEwgT04gcGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1cyBGUk9NIHB1YmxpYzsKIFJFVk9L RSBBTEwgT04gcGdfc3Vic2NyaXB0aW9uIEZST00gcHVibGljOwogR1JBTlQgU0VMRUNUIChvaWQs IHN1YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVyLCBzdWJlbmFibGVkLAogICAg ICAgICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlz YWJsZW9uZXJyLAotICAgICAgICAgICAgICBzdWJzbG90bmFtZSwgc3Vic3luY2NvbW1pdCwgc3Vi cHVibGljYXRpb25zLCBzdWJvcmlnaW4pCisgICAgICAgICAgICAgIHN1YnJldHJ5LCBzdWJzbG90 bmFtZSwgc3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zLCBzdWJvcmlnaW4pCiAgICAgT04g cGdfc3Vic2NyaXB0aW9uIFRPIHB1YmxpYzsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF9zdWJzY3Jp cHRpb25fc3RhdHMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRl eCBiYzFiMTk4Li44MzY3YmM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJz Y3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5jCkBAIC02MzUsNiArNjM1LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJIExPR0lDQUxSRVBfVFdP UEhBU0VfU1RBVEVfUEVORElORyA6CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX0RJ U0FCTEVEKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZGlzYWJsZW9uZXJyIC0g MV0gPSBCb29sR2V0RGF0dW0ob3B0cy5kaXNhYmxlb25lcnIpOworCXZhbHVlc1tBbnVtX3BnX3N1 YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdldERhdHVtKGZhbHNlKTsKIAl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9CiAJCUNTdHJpbmdHZXRUZXh0 RGF0dW0oY29ubmluZm8pOwogCWlmIChvcHRzLnNsb3RfbmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggMDgz ZmYzMy4uNmZlOTFjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTMxNSw2ICszMTUsMTcgQEAgcGFfY2FuX3N0 YXJ0KHZvaWQpCiAJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKIAkJcmV0dXJuIGZhbHNlOwog CisJLyoKKwkgKiBEb24ndCB1c2UgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBmb3IgcmV0cmllcywg YmVjYXVzZSBpdCBpcyBwb3NzaWJsZQorCSAqIHRoYXQgYSBkZWFkbG9jayB3YXMgZGV0ZWN0ZWQg dGhlIGxhc3QgdGltZSB3ZSB0cmllZCB0byBhcHBseSBhCisJICogdHJhbnNhY3Rpb24gdXNpbmcg YSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRy eSkKKwl7CisJCWVsb2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2VycyBhcmUgbm90IHVz ZWQgZm9yIHJldHJpZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCXJldHVybiB0cnVlOwog fQogCkBAIC0xNjc1LDMgKzE2ODYsMjIgQEAgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvLCBYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAKIAlwYV9mcmVlX3dvcmtl cih3aW5mbyk7CiB9CisKKy8qIENoZWNrIGlmIGFueSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29y a2Vycy4gKi8KK2Jvb2wKK3BhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lkKQoreworCUxpc3RDZWxs ICAgKmxjOworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCisJeworCQlQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqdG1wX3dpbmZvOworCisJCXRtcF93aW5mbyA9IChQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCWlmICh0bXBfd2luZm8tPmlu X3VzZSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGViNTNhY2UuLjI3N2QzMjEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzkyLDcgKzM5Miw3 IEBAIHN0YXRpYyB2b2lkIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBz ZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0 UmVwbHkpOwogCi1zdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsK K3N0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpOwogCiBzdGF0aWMg dm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFw cGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00MjksNiArNDI5LDggQEAgc3RhdGljIGlubGlu ZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIHN0YXRpYyBUcmFu c0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4 aWQsCiAJCQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pOwogCitz dGF0aWMgdm9pZCBzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpOworCiAvKgogICog UmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlci4KICAqLwpA QCAtMTA0NCw2ICsxMDQ2LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJ LyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJh bGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwog CisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShm YWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQpAQCAtMTE1MCw2ICsxMTU1LDkgQEAg YXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0 aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2Ny aXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBi ZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxl cyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEyMDYsNiArMTIxNCw5IEBAIGFwcGx5X2hh bmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9u KHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3Ry YW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRf c3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0 IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5n X3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEyNjcsNiArMTI3OCw5IEBAIGFw cGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hf cG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVu ZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nl c3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICov CiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24p OwogCkBAIC0xMzkyLDYgKzE0MDYsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3Ry aW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJfQogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICov CisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X3N0YXQo ZmFsc2UpOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9u aXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTE5NjIsNiArMTk3OSwxMCBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWJyZWFrOwogCX0KIAorCS8qIFJlc2V0IHRo ZSByZXRyeSBmbGFnLiAqLworCWlmICh0b3BsZXZlbF94YWN0KQorCQlzZXRfc3Vic2NyaXB0aW9u X3JldHJ5KGZhbHNlKTsKKwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQog CkBAIC0yMjQ0LDYgKzIyNjUsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJ bmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXpl ZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVu ZF9sc24pOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlv bl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5V TEwpOwogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CkBAIC00MzQwLDIwICs0 MzY0LDI4IEBAIHN0YXJ0X3RhYmxlX3N5bmMoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zLCBj aGFyICoqbXlzbG90bmFtZSkKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQg dGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFu IGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRF cnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJv clN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdv cmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbiAqLworCQlwZ3N0YXRfcmVw b3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisKIAkJ aWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlEaXNhYmxlU3Vic2NyaXB0aW9u QW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBSZXBvcnQgdGhlIHdvcmtlciBm YWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbi4gQWJvcnQKLQkJCSAqIHRoZSBjdXJy ZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3NhZ2UgaXMgc2VudCBpbiBhbgot CQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7 Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lk LCBmYWxzZSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9U SFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeSh0cnVlKTsKKworCQlwcm9jX2V4aXQoMCk7CiAJfQogCVBHX0VORF9UUlkoKTsK IApAQCAtNDM3OCwyMCArNDQxMCwyNyBAQCBzdGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9z dGFydHBvcykKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9y IG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJ ICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRFcnJvclJlcG9y dCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7 CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWls ZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcyAqLworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlv bl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCSAhYW1fdGFibGVzeW5jX3dv cmtlcigpKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2Fi bGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9y dCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzLiBBYm9ydCB0aGUKLQkJ CSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50 IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNh Y3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0 aW9uLT5vaWQsICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCQkJRGlzYWJsZVN1YnNjcmlwdGlv bk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsKLQkJfQorCQkvKiBTZXQgdGhlIHJldHJ5 IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1ZSk7CiAJfQogCVBHX0VORF9U UlkoKTsKIH0KQEAgLTQ2NjcsMzkgKzQ3MDYsMjAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1h aW5fYXJnKQogfQogCiAvKgotICogQWZ0ZXIgZXJyb3IgcmVjb3ZlcnksIGRpc2FibGUgdGhlIHN1 YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbgotICogYW5kIGV4aXQgY2xlYW5seS4KKyAq IERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbi4KICAqLwogc3Rh dGljIHZvaWQKLURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpCitEaXNhYmxlU3Vic2Ny aXB0aW9uT25FcnJvcih2b2lkKQogewotCS8qCi0JICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwg YW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQotCSAqIHN0YXRlCi0J ICovCi0JSE9MRF9JTlRFUlJVUFRTKCk7Ci0KLQlFbWl0RXJyb3JSZXBvcnQoKTsKLQlBYm9ydE91 dE9mQW55VHJhbnNhY3Rpb24oKTsKLQlGbHVzaEVycm9yU3RhdGUoKTsKLQotCVJFU1VNRV9JTlRF UlJVUFRTKCk7Ci0KLQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIGVpdGhlciB0 YWJsZSBzeW5jaHJvbml6YXRpb24gb3IgYXBwbHkgKi8KLQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlw dGlvbl9lcnJvcihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAotCQkJCQkJCQkJICFhbV90YWJs ZXN5bmNfd29ya2VyKCkpOwotCiAJLyogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uICovCiAJU3Rh cnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlEaXNhYmxlU3Vic2NyaXB0aW9uKE15U3Vic2NyaXB0 aW9uLT5vaWQpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogTm90aWZ5IHRo ZSBzdWJzY3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGV4aXQgKi8KKwkvKiBOb3RpZnkg dGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCAqLwogCWVyZXBvcnQoTE9HLAogCQkJ ZXJybXNnKCJzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBiZWVuIGRpc2FibGVkIGJlY2F1c2Ugb2Yg YW4gZXJyb3IiLAogCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lKSk7Ci0KLQlwcm9jX2V4aXQo MCk7CiB9CiAKIC8qCkBAIC00OTkyLDMgKzUwMTIsNzEgQEAgZ2V0X3RyYW5zYWN0aW9uX2FwcGx5 X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5m bykKIAkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOwogCX0KIH0KKworLyoK KyAqIFNldCBzdWJyZXRyeSBvZiBwZ19zdWJzY3JpcHRpb24gY2F0YWxvZy4KKyAqCisgKiBJZiBy ZXRyeSBpcyB0cnVlLCBzdWJzY3JpYmVyIGlzIGFib3V0IHRvIGV4aXQgd2l0aCBhbiBlcnJvci4g T3RoZXJ3aXNlLCBpdAorICogbWVhbnMgdGhhdCB0aGUgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQg c3VjY2Vzc2Z1bGx5LgorICovCitzdGF0aWMgdm9pZAorc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShi b29sIHJldHJ5KQoreworCVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVwbGUJdHVwOworCWJvb2wJCXN0 YXJ0ZWRfdHggPSBmYWxzZTsKKwlib29sCQludWxsc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOwor CWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisJRGF0dW0JCXZhbHVlc1tO YXR0c19wZ19zdWJzY3JpcHRpb25dOworCisJLyogRmFzdCBwYXRoIC0gaWYgbm8gc3RhdGUgY2hh bmdlIHRoZW4gbm90aGluZyB0byBkbyAqLworCWlmIChNeVN1YnNjcmlwdGlvbi0+cmV0cnkgPT0g cmV0cnkpCisJCXJldHVybjsKKworCS8qIEZhc3QgcGF0aCAtIHNraXAgZm9yIHBhcmFsbGVsIGFw cGx5IHdvcmtlcnMgKi8KKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVy bjsKKworCS8qIEZhc3QgcGF0aCAtIHNraXAgc2V0IHJldHJ5IGlmIG5vIGFjdGl2ZSBwYXJhbGxl bCBhcHBseSB3b3JrZXJzICovCisJaWYgKHJldHJ5ICYmICFwYV9oYXZlX2FjdGl2ZV93b3JrZXIo KSkKKwkJcmV0dXJuOworCisJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwl7CisJCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCXN0YXJ0ZWRfdHggPSB0cnVlOworCX0KKworCS8qIExv b2sgdXAgdGhlIHN1YnNjcmlwdGlvbiBpbiB0aGUgY2F0YWxvZyAqLworCXJlbCA9IHRhYmxlX29w ZW4oU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJdHVwID0gU2Vh cmNoU3lzQ2FjaGVDb3B5MShTVUJTQ1JJUFRJT05PSUQsCisJCQkJCQkJICBPYmplY3RJZEdldERh dHVtKE15U3Vic2NyaXB0aW9uLT5vaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXAp KQorCQllbG9nKEVSUk9SLCAic3Vic2NyaXB0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIE15 U3Vic2NyaXB0aW9uLT5uYW1lKTsKKworCUxvY2tTaGFyZWRPYmplY3QoU3Vic2NyaXB0aW9uUmVs YXRpb25JZCwgTXlTdWJzY3JpcHRpb24tPm9pZCwgMCwKKwkJCQkJIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwkvKiBGb3JtIGEgbmV3IHR1cGxlLiAqLworCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2 YWx1ZXMpKTsKKwltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKKwltZW1zZXQo cmVwbGFjZXMsIGZhbHNlLCBzaXplb2YocmVwbGFjZXMpKTsKKworCS8qIFNldCBzdWJyZXRyeSAq LworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdldERh dHVtKHJldHJ5KTsKKwlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFd ID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwgUmVsYXRpb25HZXREZXNj cihyZWwpLCB2YWx1ZXMsIG51bGxzLAorCQkJCQkJCXJlcGxhY2VzKTsKKworCS8qIFVwZGF0ZSB0 aGUgY2F0YWxvZy4gKi8KKwlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50X3NlbGYsIHR1 cCk7CisKKwkvKiBDbGVhbnVwLiAqLworCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisJdGFibGVfY2xv c2UocmVsLCBOb0xvY2spOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRyYW5zYWN0aW9u Q29tbWFuZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggNWU4MDBkYy4uOTMxMjMzZiAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCkBAIC00NTYwLDggKzQ1NjAsOSBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQp CiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAogCS8qCi0JICogR2V0IHN1YnNjcmlwdGlvbiBm aWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBpbiB0aGUgZHVtcCBhcwotCSAqIGFm dGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUgcmVsZXZh bnQuCisJICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tp cGxzbiBhbmQgc3VicmV0cnkgaW4KKwkgKiB0aGUgZHVtcCBhcyBhZnRlciByZXN0b3JpbmcgdGhl IGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJlCisJICogcmVsZXZhbnQuCiAJICovCiAJ aV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOwogCWlfb2lkID0gUFFmbnVt YmVyKHJlcywgIm9pZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXgg YjBmMmExNy4uOGVkYmJjYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBA IC04OCw2ICs4OCwxMSBAQCBDQVRBTE9HKHBnX3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlv blJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJX1JPVwogCWJvb2wJCXN1YmRpc2Fi bGVvbmVycjsJLyogVHJ1ZSBpZiBhIHdvcmtlciBlcnJvciBzaG91bGQgY2F1c2UgdGhlCiAJCQkJ CQkJCQkgKiBzdWJzY3JpcHRpb24gdG8gYmUgZGlzYWJsZWQgKi8KIAorCWJvb2wJCXN1YnJldHJ5 IEJLSV9ERUZBVUxUKGYpOwkvKiBUcnVlIGlmIHByZXZpb3VzIGNoYW5nZSBmYWlsZWQKKwkJCQkJ CQkJCQkJICogdG8gYmUgYXBwbGllZCB3aGlsZSB0aGVyZSB3ZXJlCisJCQkJCQkJCQkJCSAqIGFu eSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkKKwkJCQkJCQkJCQkJICogd29ya2VycyAqLworCiAjaWZk ZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUg Ki8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3Vi Y29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxMOwpAQCAtMTMxLDYgKzEzNiw4IEBAIHR5cGVkZWYg c3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlm IHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlz YWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKIAkJCQkJCQkJICogb2NjdXJzICovCisJYm9vbAkJcmV0 cnk7CQkJLyogSW5kaWNhdGVzIGlmIHByZXZpb3VzIGNoYW5nZSBmYWlsZWQgdG8gYmUKKwkJCQkJ CQkJICogYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLwogCWNoYXIJICAg KmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNo YXIJICAgKnNsb3RuYW1lOwkJLyogTmFtZSBvZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNo YXIJICAgKnN5bmNjb21taXQ7CQkvKiBTeW5jaHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29y a2VyICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IGYz YjJmMmQuLjQyYzMzYTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oCkBAIC0zMDgsNiArMzA4LDggQEAgZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2FpdF9zdHJl YW1fYmxvY2sodm9pZCk7CiBleHRlcm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8sCiAJCQkJCQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24pOwogCitl eHRlcm4gYm9vbCBwYV9oYXZlX2FjdGl2ZV93b3JrZXIodm9pZCk7CisKICNkZWZpbmUgaXNQYXJh bGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5hcHBseV9sZWFkZXJfcGlkICE9IElu dmFsaWRQaWQpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9z dHJlYW0ucGwKaW5kZXggODNkNjk1Ni4uNDA1NGE1ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MTVfc3RyZWFtLnBsCkBAIC03NCw4ICs3NCwxNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJJ2No ZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwogCiAJIyBUZXN0IHRo ZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKKwlteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxp Y2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIKKwkpOwogCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKwkk bm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBw aWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSAgKQorCSAgb3Ig ZGllCisJICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0 ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAogCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgogCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwpA QCAtNDUwLDYgKzQ1OCw2MSBAQCAkcmVzdWx0ID0KIGlzKCRyZXN1bHQsIHFxKDUwMDApLAogCSdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBk aXNrJyk7CiAKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3Rf dGFiXzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHJlLWFwcGx5IGEgZmFpbGVkIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgbGVhZGVyIGFwcGx5CisjIHdvcmtlciBhbmQgYXBwbHkg c3Vic2VxdWVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5 CisjIHdvcmtlciBhZnRlciB0aGlzIHJldHJ5IHN1Y2NlZWRzLgorIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUg VU5JUVVFIElOREVYIGlkeF90YWIgb24gdGVzdF90YWJfMihhKSIpOworCisjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MDAwKSBzKGkpOworSU5TRVJUIElOVE8gdGVzdF90YWJfMiB2YWx1ZXMoMSk7 CitDT01NSVQ7fSk7CisKKyMgQ2hlY2sgaWYgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBu b3Qgc3RhcnRlZCBiZWNhdXNlIHRoZSBhYm92ZQorIyB0cmFuc2FjdGlvbiBmYWlsZWQgdG8gYmUg YXBwbGllZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBb QS1aMC05XSs6KT8gcGFyYWxsZWwgYXBwbHkgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJp ZXMvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2Ny aWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJEUk9QIElOREVYIGlkeF90YWIiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CisKKyMgQWZ0ZXIgc3VjY2Vzc2Z1bGx5 IHJldHJ5aW5nIHRvIGFwcGx5IGEgZmFpbGVkIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgYXBwbHkK KyMgdGhlIGZvbGxvd2luZyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u Ciskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxF Q1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKSIpOworCitjaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgMSwgJ0NPTU1JVCcpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMSksCisJ J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXInKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3Rv cDsKIAotLSAKMi43LjIud2luZG93cy4xCgo= --_006_OS0PR01MB571621ED532C2D7C3E01625894FB9OS0PR01MB5716jpnp_--