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 1mhXCq-0005o6-81 for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Nov 2021 13:18:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mhXCp-0007dK-5v for pgsql-hackers@arkaria.postgresql.org; Mon, 01 Nov 2021 13:18:31 +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 1mhXCo-0007Zf-Io for pgsql-hackers@lists.postgresql.org; Mon, 01 Nov 2021 13:18:30 +0000 Received: from esa2.fujitsucc.c3s2.iphmx.com ([68.232.152.246]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mhXCj-0002F4-Tu for pgsql-hackers@lists.postgresql.org; Mon, 01 Nov 2021 13:18:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1635772706; x=1667308706; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=vgMxW47V32pBTn+tf4nytJ9iYSK4YLCNhs3QcGkF2sY=; b=Yul8FIIa7BZ8YpSziGq2b1rJc4hZ3UwmMzXt1l2uRfZt4qpHwv310p8l yEBZrlL3lHF7MUTam7oL3XO25Cc9fMoAC3JD737I3wCV2PNY2KYiLRug9 lPP+zp3MYlQLqQa6zIfnCUoST0BNwv59D2hbV/TymCCKRnVnPOlTrbDl4 gA/RPGNvDQfHvUPQyIVOMd0cPO7nLgpTCghhddmFUDq2nDAn/w7ZfuNXx pnrMd/WkVhUSXzwsEB51W9Fuu+IyM4OH2KyArFXWvkApKbgCb0oIMN8Nv awNWWknVePjh1/69ysYcv8bhL61Yhwl61RvQ0fMv4MzrlibfR92jkLiDi g==; X-IronPort-AV: E=McAfee;i="6200,9189,10154"; a="50816370" X-IronPort-AV: E=Sophos;i="5.87,199,1631545200"; d="scan'208";a="50816370" Received: from mail-ty1jpn01lp2057.outbound.protection.outlook.com (HELO JPN01-TY1-obe.outbound.protection.outlook.com) ([104.47.93.57]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Nov 2021 22:18:22 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Nh+p0ITQ+UEsRj05le9xAC9cYqJppXKt5Xs/AHas/ODygEXSBV0wsue1eBtw5d0XuTUhZOBPt9jouNmRwQ0EpZgaBYr9Y3AZOltIMvwkX4jFpq/5tWf9NULvGKFSBxqxNvqLDX+5RoeY140mraI1GACiRAv/+hCAcMMa4l6oFWLR5qFGfC/gPaUL30ZBGu+vMI/rTY5bOwsnqeUvq8MK2YyWT4UfL6FxRckMRWP/ctn/x1O5hfxPHEOiwVxf6ddpRPZFuu78upb9iiGZjk7NAi+p3oXz4QXLOkX9IKUlKYeo+4t05FWn0o5ImBUyOOYQDeqts0UqNLzNCAlruABuLA== 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=vfLlDOasV2D79MSh+5yqzQ8RZa5XV3iEgWmS3R49mnU=; b=ea8vtRBFlQpSULoz4kbMDZJnszoLcJjcNBQM3rp5HfjcuElSxioGE/f8K4IawM++ACxjZFo+S4nC8mrTc9hFtQcBDtANBWsom3x7U8+PY0k4di7wwOdCONj+yHDugA/wB0zInnBuDUNgDVu3f20SZaJGt11G9znsrV4Jh+25n8GQDBt5DjGSyJVjgCTCNRhR525oMN0Ey4oKJsh2qzx0x4wiWgeLSVR9UXm2BVlW9iiL51D/S0uZK0kz/sWO6+Jk5nUoHRIFFFC5l28D1LCgecb0R6w2fTcGPH3lxGX2nRmYlGf6SVnDAVFd3L5NLBRatazQLd+Q2kMIvgnditPxcg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vfLlDOasV2D79MSh+5yqzQ8RZa5XV3iEgWmS3R49mnU=; b=BiRaXQKTASvd26cvKqAo9AGYAzPL1aUoQbNj6zG+5NnPJZQ85YiyPUxkKiaY9/V3apObTzDlSWDN8A8+B1bEMU3jhGvdrBWA3kPAQtKHW5sN12c1s8U0F4DRxhGYZsFGPMjPwKZBB+8ug5sUhvsnMMrdKrhpAoGzZ2qf9MgAWlI= Received: from OSBPR01MB4888.jpnprd01.prod.outlook.com (2603:1096:604:79::23) by OS0PR01MB5988.jpnprd01.prod.outlook.com (2603:1096:604:c9::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4649.14; Mon, 1 Nov 2021 13:18:18 +0000 Received: from OSBPR01MB4888.jpnprd01.prod.outlook.com ([fe80::587c:3bd2:344e:fa04]) by OSBPR01MB4888.jpnprd01.prod.outlook.com ([fe80::587c:3bd2:344e:fa04%6]) with mapi id 15.20.4649.019; Mon, 1 Nov 2021 13:18:18 +0000 From: "osumi.takamichi@fujitsu.com" To: 'Masahiko Sawada' , Amit Kapila CC: "houzj.fnst@fujitsu.com" , "pgsql-hackers@lists.postgresql.org" Subject: RE: Failed transaction statistics to measure the logical replication progress Thread-Topic: Failed transaction statistics to measure the logical replication progress Thread-Index: AddzxbV4E8towJomTkm1trqmHwIwlgQVlICAANF/lUAAA/6ZgAAn+wOAAAWfTgAAB8XmAAAgvB4AAAU0KgAAB+7hgAAMXNsABZwy4NABa8QD4ADxViZAAZV2mrAA+6DXgAAsU7aAAAZiVQAAAnmZAAAIXu+AAFRfhZAAA/2jgAK/RTlAANYpygAAhIjngAF7IiwAAMcV0oA= Date: Mon, 1 Nov 2021 13:18:18 +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?NTBfRW5hYmxlZD10cnVlOyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJh?= =?utf-8?B?Yy1hYjRkLTNiMGY0ZmVjZTA1MF9TZXREYXRlPTIwMjEtMTAtMjhUMTQ6MTg6?= =?utf-8?B?NDVaOyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0?= =?utf-8?B?ZmVjZTA1MF9NZXRob2Q9U3RhbmRhcmQ7IE1TSVBfTGFiZWxfYTcyOTVjYzEt?= =?utf-8?B?ZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX05hbWU9RlVKSVRTVS1SRVNU?= =?utf-8?B?UklDVEVE4oCLOyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9TaXRlSWQ9YTE5ZjEyMWQtODFlMS00ODU4LWE5ZDgt?= =?utf-8?B?NzM2ZTI2N2ZkNGM3OyBNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1h?= =?utf-8?B?YjRkLTNiMGY0ZmVjZTA1MF9BY3Rpb25JZD1jYjc5N2VhMC1jOGUxLTQzMzQt?= =?utf-8?B?OWVjOC1jM2EzMTNmMzdmZjA7IE1TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00?= =?utf-8?B?MmFjLWFiNGQtM2IwZjRmZWNlMDUwX0NvbnRlbnRCaXRzPTA=?= authentication-results: fujitsu.com; dkim=none (message not signed) header.d=none;fujitsu.com; dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7d263aae-a8af-4742-ccb2-08d99d3a122a x-ms-traffictypediagnostic: OS0PR01MB5988: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:513; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8e7A0UeafjaOSuHCA8oO9W3b8UinX/3xjCcqmA225CCpjUUDiOYzxmiuE7oPq2Dzsv7XYlnv864bs0HB4rN/PJkfBqlpxT+0e37VFk4gQszdnAmKPbyzHRdfLAFGXHobLesLvC4B8hUjYWENyDAYjWDipiw2AQAZWjslzgqkTyGWxB37kty4rjbIqwgwwI/XPHEPan/iRuso/hvCo9yBArc6FIsi6yI4Mm79f5/6SALzNAjTiYilzkUTAtzB/T8ku4zWied2A7xgTXWyiuBzfxOaMZ6um6RV5qvEcx1oxHtze7u4SvUHXjlm90r7HDrpw+jnVQGFsxC9+TmiabhqINe+074P0f/6Zq/WHA05R2dVOqyZX83OXv5+2NGuj00WCM5grn65LT+C5KUWed/54QpugezxNiyzriVUC4YbudlPHV6Kw9tHSMDGYOFWal27wxqOQlOBDvltFMnfoyKS5IwWxzuo8GxrsOCL5vkuer2wFrAw7n4E6MWc2NuqsUEfX5VA6ZTkKXEwQCOEh5ULyVc6Zw+ixW0uNZ1b6SxfjN93sqjdTDqxKCsZqtmGkjo1Q29J1qsXB7vgifxtVh+acgaGBKQOzHYcBJUczeOoltahzKDKFjm3nG9YoV/hV9QkgfmWJTXSG19YCxYvQnf6vojZkZP3Fv1o6V+VW0Kqa388Rem5VXsAZiApqw3VHUQgf1GbeZyxvhKAAktUOBnRcRL9a5mdLuNkEN7E0SQNPqM3USNd8KsGykGo01HzgSdd+PGuIE7Bv4+ciHr0ciJII4U/d1BWV/gvhHmHqMzfFIA= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSBPR01MB4888.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(186003)(4744005)(83380400001)(6506007)(53546011)(52536014)(8936002)(38100700002)(7696005)(71200400001)(9686003)(76116006)(66946007)(26005)(122000001)(66446008)(66476007)(85182001)(55016002)(66556008)(64756008)(38070700005)(5660300002)(99936003)(966005)(110136005)(82960400001)(33656002)(2906002)(316002)(54906003)(8676002)(86362001)(4326008)(508600001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bVBZcnBoem5lVlJaai9uU1hYTmkxSlhBUjkrTUFnN2JWbUphQmlraWlhNDQ3?= =?utf-8?B?eFFXVHFLUUhEbkVJaWhLM04wcUtIQjN2blV6RWhwbHd1TTA1MjdnV3NNYkN1?= =?utf-8?B?akRzNVpsZGNHLzRvY2lmUVg1N1lpSVcvVWhPSnNRbmpBVU54aS9tNWhlaDdP?= =?utf-8?B?elhvN2pldmM4U01hU3RNUHc5djArRno4bVM0bmpJblJmRzh0cnVZM2tkaWFC?= =?utf-8?B?MXBUZTBHbGJRRkhkWXAxU3h6MVJnWEV0ZW9HaGN5TWU3SkhjUkVmck00Vi9V?= =?utf-8?B?UWI0U1ZTMStuOE5Wb0RzdWkyZjJjSjRjYXhWNU12dW1VL0haNDM3NTJ2UDBX?= =?utf-8?B?Vjk1cm95NWFIeDBOdDRaYS96eE4vTytoM3BWa2xYNFhpWUFEMXM3bSs4WnV2?= =?utf-8?B?cEJQQmJ2WXR4MmJDeUw3UlVDUm1rZVlTYjNmb3JFVlFrTzZNU3RaeWFmZm10?= =?utf-8?B?RGNiZ09aOHNXc2xSOHVCTk9TZkhjbldjYk55RkJzZEc2UHZBQlN5bnJOU3FU?= =?utf-8?B?TU1uRFJvOFpnSWdvQllMdHJ2UXhKYjR4aXM2YmdJYnFGSHdVQXlTSVBEU2Rs?= =?utf-8?B?T045elB5Ui8rSG1WSWZoRzk4d0dzajd5WDkxYUNBOVYwUG9YNmFXb0E5L2dT?= =?utf-8?B?dmxBUHVybExQQlRTRXFkbjhSZDhvdGhLOVBaeDdTVXExL3NpbUlYdC91T2lS?= =?utf-8?B?WGl0TW5pdjBGY2VaOW9GOHRsdGhxRGpBU1h5aGRVbzM4b210bzV4aFBhY1pi?= =?utf-8?B?OVpLYVFnQWhMMFpMcDVlay9DSU1WTHMrRzU4M0NOWTlFWkJnck94VXROZUlQ?= =?utf-8?B?bUlQZ2FuaTFNK0FDRjhZeGIwek9ORnB5VWUvWnd2QTU4QVozeWNYUHNRMnVH?= =?utf-8?B?NHNjTkgzY3VlZXlEQUhBSW1YaXcwTG5PTFhQV0N3eEg3RVVZTTNrMGd4VXJS?= =?utf-8?B?VWdPamN4Slh3aGZWQjJHbkw3aHZsa005UlVKbzJnUkJLK1JZY2RpNjYvQmxX?= =?utf-8?B?UWZQSzBBbmxYdkkxSnBpYmJOcDh3YkdzSExMRnU5WVdUQUduOU9kaFcvWUhT?= =?utf-8?B?T0hNbWdLNjlPczZhdklwNVhNa09jVnJBTkJSUStIUUlzdWFRcFgydTRaV0c0?= =?utf-8?B?NUxWcTBpdXY3bHI1SGVvMi80dFFkdytiRXdnNlA1T1NuTWowbkFiTWlud1N1?= =?utf-8?B?aHVLejJ5c2NPU1RRdC9YTVVIRjR6OTUrLzhackk3UkVtd2JWL1BHMnhaTjRm?= =?utf-8?B?aW1HUDBxeXJ5ZlptK1lqSlhZUFRGdFlWWE5qMEM0UzIzRFJhMmdvak1KbTJm?= =?utf-8?B?MVdqLzVWaVVRK3RpcDRFN2VFUS90dUJScGI4MEtXbytJZVI3UDgrazNIcHRz?= =?utf-8?B?OVRHQkZLWjRvOFEzMllYZWtGd1AvZXNMQlgySTV0WE02OHZCM2Z0SEQ1eU43?= =?utf-8?B?RjlVS2hRY1IyMW1yeklQRW9sU1VOc29QSUNjRHE5UmZMVWZHMkc2enhtc01M?= =?utf-8?B?Z0pPOGxjK0ZTLzJSQjNGUnpPS0ZmanhXaVk3MTk1Tm5TL3RvaDNhV2tZdmZH?= =?utf-8?B?MWhzSTIyaTBDcHN0UTBBRGdqWXNSWnlDaHJhN21LL1BDS3RDUkdSVCtQdUpS?= =?utf-8?B?VmVQYzZQK0hPR1hoWTJ6bkd2YzB5dW9SamtXd0pLbU54VW4zYTRaeWdWKzhY?= =?utf-8?B?WHg5T0puRkxCMVhsS3JVemVIVEVVR05JcEVHTTRtYWdRVm92ci9xNllXNnpB?= =?utf-8?B?OHpPblpGQUNJTEY4TTZ6aVNPcHI4a2p1TFBnQ29kQTJ4Rlc1ZWFmMlpCdDE2?= =?utf-8?B?L1hOeFZsS1pUbzlUMEltL3lFUTFsVm4ybUc1aFkyRmpyRi9KVFZqd0NhSmdD?= =?utf-8?B?TUlwSWhPMnRGOXU1SWZPMThsY2VnYjhnR2JnTGcrOXpGYzBlbWYwV3dGc1Y5?= =?utf-8?B?bTBEa2ZLcTgzWTNoc1hseTZOSGlwRWJySm8ydldaOGJiYjhhN0pLVWR5RkQ2?= =?utf-8?B?bUJEVWQrY0NkMkJGeGhOZVV0RURDVTQrZjZIczFrR1dnTlRKRXE4eWp1aEJT?= =?utf-8?B?OTNKTG9jSW55Y1IrTHg0emI4RGN6WjJaN2Q4akNQaHRtNmJoZDJ3WVJTck5Q?= =?utf-8?B?bkZnRGNOQVNabGY4L2xScDZQZVVxbmMwQkhxeDRjRlZjdkZaTTN0cTg5VGhL?= =?utf-8?B?MEtKZDBqR0ZvZWY3UW01UVNHSE9LL2xPbldqUEV5YTF6Yi9tNmIvQmd0Q2FL?= =?utf-8?B?a3hNam1OdTBwNHo1ak8vVC95NDJnPT0=?= Content-Type: multipart/mixed; boundary="_002_OSBPR01MB48880D8D2966FE8711F5BBB0ED8A9OSBPR01MB4888jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OSBPR01MB4888.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d263aae-a8af-4742-ccb2-08d99d3a122a X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2021 13:18:18.7644 (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: aUcSdBa3NeL/+6ANvOhm+vH6AzML0C2vzNtikxN1e/vbAbIZauKlRSmtQSTkswhA1GTMSLpZRLBETQmOi4Hs6OsjgdDz7A0rgnyvzdO6yl8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS0PR01MB5988 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_OSBPR01MB48880D8D2966FE8711F5BBB0ED8A9OSBPR01MB4888jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1cnNkYXksIE9jdG9iZXIgMjgsIDIwMjEgMTE6MTkgUE0gSSB3cm90ZToNCj4gSSd2ZSBj cmVhdGVkIGEgbmV3IHBhdGNoIHRoYXQgZXh0ZW5kcyBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3Jr ZXJzIHRvIGluY2x1ZGUNCj4gb3RoZXIgdHJhbnNhY3Rpb24gc3RhdGlzdGljcy4NCj4gDQo+IE5v dGUgdGhhdCB0aGlzIHBhdGNoIGRlcGVuZHMgb24gdjE4IHBhdGNoLXNldCBpbiBbMV0uLi4NClJl YmFzZWQgYmFzZWQgb24gdGhlIHYxOSBpbiBbMV0uDQpBbHNvLCBmaXhlZCBkb2N1bWVudGF0aW9u IGEgbGl0dGxlIGFuZCBtYWRlIHRlc3RzIHRpZHkuDQpGWUksIHRoZSBuZXdseSBpbmNsdWRlZCBU QVAgdGVzdCgwMjdfd29ya2VyX3hhY3Rfc3RhdHMucGwpIGlzIHN0YWJsZQ0KYmVjYXVzZSBJIGNo ZWNrZWQgdGhhdCAxMDAgdGltZXMgb2YgaXRzIGV4ZWN1dGlvbiBpbiBhIHRpZ2h0IGxvb3AgYWxs IHBhc3NlZC4NCg0KDQpbMV0gLSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlk L0NBRDIxQW9EWS05X3g4MTlGX20xX3dmQ1ZYWEZKckdpU21SMk1mQzlOdzRuVzhPbTBxQSU0MG1h aWwuZ21haWwuY29tDQoNCg0KQmVzdCBSZWdhcmRzLA0KCVRha2FtaWNoaSBPc3VtaQ0KDQo= --_002_OSBPR01MB48880D8D2966FE8711F5BBB0ED8A9OSBPR01MB4888jpnp_ Content-Type: application/octet-stream; name="extend_xact_stats_of_subscription_worker_v7.patch" Content-Description: extend_xact_stats_of_subscription_worker_v7.patch Content-Disposition: attachment; filename="extend_xact_stats_of_subscription_worker_v7.patch"; size=57059; creation-date="Mon, 01 Nov 2021 13:16:40 GMT"; modification-date="Mon, 01 Nov 2021 13:16:40 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCmluZGV4IDA5NGM3MjMuLjAwMDZjNjQgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dt bApAQCAtNjI5LDcgKzYyOSw3IEBAIHBvc3RncmVzICAgMjcwOTMgIDAuMCAgMC4wICAzMDA5NiAg Mjc1MiA/ICAgICAgICBTcyAgIDExOjM0ICAgMDowMCBwb3N0Z3Jlczogc2VyCiAKICAgICAgPHJv dz4KICAgICAgIDxlbnRyeT48c3RydWN0bmFtZT5wZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJz PC9zdHJ1Y3RuYW1lPjxpbmRleHRlcm0+PHByaW1hcnk+cGdfc3RhdF9zdWJzY3JpcHRpb25fd29y a2VyczwvcHJpbWFyeT48L2luZGV4dGVybT48L2VudHJ5PgotICAgICAgPGVudHJ5PkF0IGxlYXN0 IG9uZSByb3cgcGVyIHN1YnNjcmlwdGlvbiwgc2hvd2luZyBhYm91dCBlcnJvcnMgdGhhdAorICAg ICAgPGVudHJ5PkF0IGxlYXN0IG9uZSByb3cgcGVyIHN1YnNjcmlwdGlvbiwgc2hvd2luZyBhYm91 dCB0cmFuc2FjdGlvbiBzdGF0aXN0aWNzIGFuZCBlcnJvciBzdW1tYXJ5IHRoYXQKICAgICAgIG9j Y3VycmVkIG9uIHN1YnNjcmlwdGlvbi4KICAgICAgIFNlZSA8bGluayBsaW5rZW5kPSJtb25pdG9y aW5nLXBnLXN0YXQtc3Vic2NyaXB0aW9uLXdvcmtlcnMiPgogICAgICAgPHN0cnVjdG5hbWU+cGdf c3RhdF9zdWJzY3JpcHRpb25fd29ya2Vyczwvc3RydWN0bmFtZT48L2xpbms+IGZvciBkZXRhaWxz LgpAQCAtMzA1Miw5ICszMDUyLDkgQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0 X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKIAogICA8cGFy YT4KICAgIFRoZSA8c3RydWN0bmFtZT5wZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzPC9zdHJ1 Y3RuYW1lPiB2aWV3IHdpbGwgY29udGFpbgotICAgb25lIHJvdyBwZXIgc3Vic2NyaXB0aW9uIGVy cm9yIHJlcG9ydGVkIGJ5IHdvcmtlcnMgYXBwbHlpbmcgbG9naWNhbAotICAgcmVwbGljYXRpb24g Y2hhbmdlcyBhbmQgd29ya2VycyBoYW5kbGluZyB0aGUgaW5pdGlhbCBkYXRhIGNvcHkgb2YgdGhl Ci0gICBzdWJzY3JpYmVkIHRhYmxlcy4KKyAgIG9uZSByb3cgcGVyIHN1YnNjcmlwdGlvbiBmb3Ig dHJhbnNhY3Rpb24gc3RhdGlzdGljcyBhbmQgc3VtbWFyeSBvZiB0aGUgbGFzdAorICAgZXJyb3Ig cmVwb3J0ZWQgYnkgd29ya2VycyBhcHBseWluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIGNoYW5nZXMg YW5kIHdvcmtlcnMKKyAgIGhhbmRsaW5nIHRoZSBpbml0aWFsIGRhdGEgY29weSBvZiB0aGUgc3Vi c2NyaWJlZCB0YWJsZXMuCiAgIDwvcGFyYT4KIAogICA8dGFibGUgaWQ9InBnLXN0YXQtc3Vic2Ny aXB0aW9uLXdvcmtlcnMiIHhyZWZsYWJlbD0icGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2VycyI+ CkBAIC0zMTAyLDIwICszMTAyLDg2IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2Fp dF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAKICAgICAg PHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+Ci0gICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD54YWN0X2NvbW1pdDwv c3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIE51bWJlciBvZiB0cmFuc2FjdGlvbnMgc3VjY2Vzc2Z1bGx5IGFwcGxpZWQg aW4gdGhpcyBzdWJzY3JpcHRpb24uCisgICAgICAgQ09NTUlULCBDT01NSVQgb2Ygc3RyZWFtaW5n IHRyYW5zYWN0aW9uIGFuZCBDT01NSVQgUFJFUEFSRUQgaW5jcmVtZW50cworICAgICAgIHRoaXMg Y291bnRlci4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+eGFjdF9jb21taXRfYnl0ZXM8 L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8 cGFyYT4KKyAgICAgICBBbW91bnQgb2YgdHJhbnNhY3Rpb25zIGRhdGEgc3VjY2Vzc2Z1bGx5IGFw cGxpZWQgaW4gdGhpcyBzdWJzY3JpcHRpb24uCisgICAgICAgQ29uc3VtZWQgbWVtb3J5IGZvciB4 YWN0X2NvbW1pdCBpcyBkaXNwbGF5ZWQuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9y b3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5 Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnhh Y3RfZXJyb3I8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+ CisgICAgICA8cGFyYT4KKyAgICAgICBOdW1iZXIgb2YgdHJhbnNhY3Rpb25zIGZhaWxlZCB0byBi ZSBhcHBsaWVkIGFuZCBjYXVnaHQgYnkgdGFibGUKKyAgICAgICBzeW5jIHdvcmtlciBvciBtYWlu IGFwcGx5IHdvcmtlciBpbiB0aGlzIHN1YnNjcmlwdGlvbi4KKyAgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPnhhY3RfZXJyb3JfYnl0ZXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBBbW91bnQgb2YgdHJhbnNh Y3Rpb25zIGRhdGEgdW5zdWNjZXNzZnVsbHkgYXBwbGllZCBpbiB0aGlzIHN1YnNjcmlwdGlvbi4K KyAgICAgICBDb25zdW1lZCBtZW1vcnkgdGhhdCBwYXN0IGZhaWxlZCB0cmFuc2FjdGlvbiB1c2Vk IGlzIGRpc3BsYXllZC4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+eGFjdF9hYm9ydDwv c3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxw YXJhPgorICAgICAgIE51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWJvcnRlZCBpbiB0aGlzIHN1YnNj cmlwdGlvbi4KKyAgICAgICBSb2xsYmFjayBvZiB0aGUgcHJlcGFyZWQgdHJhbnNhY3Rpb24gYW5k IGFib3J0IG9mIHN0cmVhbWluZyB0cmFuc2FjdGlvbgorICAgICAgIGluY3JlbWVudHMgdGhpcyBj b3VudGVyLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD54YWN0X2Fib3J0X2J5dGVzPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBh cmE+CisgICAgICAgQW1vdW50IG9mIHRyYW5zYWN0aW9ucyBkYXRhIGFib3J0ZWQgaW4gdGhpcyBz dWJzY3JpcHRpb24uCisgICAgICAgSW5jcmVhc2UgPGxpdGVyYWw+bG9naWNhbF9kZWNvZGluZ193 b3JrX21lbTwvbGl0ZXJhbD4gb24gdGhlIHB1Ymxpc2hlcgorICAgICAgIHNvIHRoYXQgaXQgZXhj ZWVkcyB0aGUgc2l6ZSBvZiB3aG9sZSBzdHJlYW1lZCB0cmFuc2FjdGlvbgorICAgICAgIHRvIHN1 cHByZXNzIHVubmVjZXNzYXJ5IGNvbnN1bWVkIG5ldHdvcmsgYmFuZHdpZHRoIGluIGFkZGl0aW9u IHRvIGNoYW5nZQorICAgICAgIGluIG1lbW9yeSBvZiB0aGUgc3Vic2NyaWJlciwgaWYgdW5leHBl Y3RlZCBhbW91bnQgb2Ygc3RyZWFtZWQgdHJhbnNhY3Rpb25zCisgICAgICAgYXJlIGFib3J0ZWQu CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfZXJyb3JfcmVsaWQ8L3N0cnVjdGZp ZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAg ICBPSUQgb2YgdGhlIHJlbGF0aW9uIHRoYXQgdGhlIHdvcmtlciB3YXMgcHJvY2Vzc2luZyB3aGVu IHRoZQotICAgICAgIGVycm9yIG9jY3VycmVkCisgICAgICAgbGFzdCBlcnJvciBvY2N1cnJlZAog ICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCiAgICAgIDxyb3c+CiAgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5jb21tYW5kPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ dGV4dDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF9lcnJvcl9jb21tYW5kPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgot ICAgICAgIE5hbWUgb2YgY29tbWFuZCBiZWluZyBhcHBsaWVkIHdoZW4gdGhlIGVycm9yIG9jY3Vy cmVkLiAgVGhpcyBmaWVsZAorICAgICAgIE5hbWUgb2YgbGFzdCBjb21tYW5kIGJlaW5nIGFwcGxp ZWQgd2hlbiB0aGUgZXJyb3Igb2NjdXJyZWQuICBUaGlzIGZpZWxkCiAgICAgICAgaXMgYWx3YXlz IE5VTEwgaWYgdGhlIGVycm9yIHdhcyByZXBvcnRlZCBkdXJpbmcgdGhlIGluaXRpYWwgZGF0YQog ICAgICAgIGNvcHkuCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KQEAgLTMxMjMsMTAgKzMxODksMTAg QEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9h Y3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K LSAgICAgICA8c3RydWN0ZmllbGQ+eGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+eGlkPC90eXBlPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5sYXN0X2Vycm9yX3hpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPnhp ZDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFRyYW5zYWN0aW9u IElEIG9mIHRoZSBwdWJsaXNoZXIgbm9kZSBiZWluZyBhcHBsaWVkIHdoZW4gdGhlIGVycm9yCisg ICAgICAgVHJhbnNhY3Rpb24gSUQgb2YgdGhlIHB1Ymxpc2hlciBub2RlIGJlaW5nIGFwcGxpZWQg d2hlbiB0aGUgbGFzdCBlcnJvcgogICAgICAgIG9jY3VycmVkLiAgVGhpcyBmaWVsZCBpcyBhbHdh eXMgTlVMTCBpZiB0aGUgZXJyb3Igd2FzIHJlcG9ydGVkCiAgICAgICAgZHVyaW5nIHRoZSBpbml0 aWFsIGRhdGEgY29weS4KICAgICAgIDwvcGFyYT48L2VudHJ5PgpAQCAtMzEzNCwxOSArMzIwMCwx OSBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJPTSBwZ19zdGF0 X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgotICAgICAgIDxzdHJ1Y3RmaWVsZD5lcnJvcl9jb3VudDwvc3RydWN0ZmllbGQ+IDx0eXBlPnVp bnQ4PC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5sYXN0X2Vycm9yX2NvdW50PC9zdHJ1Y3Rm aWVsZD4gPHR5cGU+dWludDg8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAg ICAgICBOdW1iZXIgb2YgY29uc2VjdXRpdmUgdGltZXMgdGhlIGVycm9yIG9jY3VycmVkCisgICAg ICAgTnVtYmVyIG9mIGNvbnNlY3V0aXZlIHRpbWVzIHRoZSBsYXN0IGVycm9yIG9jY3VycmVkCiAg ICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKICAgICAgPHJvdz4KICAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5p dGlvbiI+Ci0gICAgICAgPHN0cnVjdGZpZWxkPmVycm9yX21lc3NhZ2U8L3N0cnVjdGZpZWxkPiA8 dHlwZT50ZXh0PC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5sYXN0X2Vycm9yX21lc3NhZ2U8 L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBh cmE+Ci0gICAgICAgVGhlIGVycm9yIG1lc3NhZ2UKKyAgICAgICBUaGUgbGFzdCBlcnJvciBtZXNz YWdlCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv c3lzdGVtX3ZpZXdzLnNxbAppbmRleCBhMmVlMDBjLi4zMTJmMTQ1IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMjY3LDExICsxMjY3LDE3IEBAIENSRUFURSBWSUVXIHBn X3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgQVMKIAl3LnN1YmlkLAogCXMuc3VibmFtZSwKIAl3 LnN1YnJlbGlkLAotCXcucmVsaWQsCi0Jdy5jb21tYW5kLAotCXcueGlkLAotCXcuZXJyb3JfY291 bnQsCi0Jdy5lcnJvcl9tZXNzYWdlLAorCXcueGFjdF9jb21taXQsCisJdy54YWN0X2NvbW1pdF9i eXRlcywKKwl3LnhhY3RfZXJyb3IsCisJdy54YWN0X2Vycm9yX2J5dGVzLAorCXcueGFjdF9hYm9y dCwKKwl3LnhhY3RfYWJvcnRfYnl0ZXMsCisJdy5sYXN0X2Vycm9yX3JlbGlkLAorCXcubGFzdF9l cnJvcl9jb21tYW5kLAorCXcubGFzdF9lcnJvcl94aWQsCisJdy5sYXN0X2Vycm9yX2NvdW50LAor CXcubGFzdF9lcnJvcl9tZXNzYWdlLAogCXcubGFzdF9lcnJvcl90aW1lLAogCXcuc3RhdHNfcmVz ZXQKICAgICBGUk9NIChTRUxFQ1QKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRl eCA1YzcyM2JjLi4yMDE4NGM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFydGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBA IC0xOTIsNiArMTkyLDE2IEBAIHN0YXRpYyB2b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVj dXJzZShQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCQkJCSAgIGJvb2wg aW5pdGlhbF9wcnVuZSwKIAkJCQkJCQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKTsK IAorLyoKKyAqIFBhcnRpdGlvblR1cGxlUm91dGluZ1NpemUgLSBleHBvcnRlZCB0byBjYWxjdWxh dGUgdG90YWwgZGF0YSBzaXplCisgKiBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIG1lc2FnZSBhcHBs eSwgYmVjYXVzZSB0aGlzIGlzIG9uZSBvZiB0aGUKKyAqIEFwcGx5RXhlY3V0aW9uRGF0YSBzdHJ1 Y3QgbWVtYmVycy4KKyAqLworc2l6ZV90CitQYXJ0aXRpb25UdXBsZVJvdXRpbmdTaXplKHZvaWQp Cit7CisJcmV0dXJuIHNpemVvZihQYXJ0aXRpb25UdXBsZVJvdXRpbmcpOworfQogCiAvKgogICog RXhlY1NldHVwUGFydGl0aW9uVHVwbGVSb3V0aW5nIC0gc2V0cyB1cCBpbmZvcm1hdGlvbiBuZWVk ZWQgZHVyaW5nCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ3N0YXQuYwppbmRleCBiNzg4M2VjLi5kNzEwNDllIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bnc3RhdC5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcGdzdGF0LmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJwb3N0 bWFzdGVyL2ZvcmtfcHJvY2Vzcy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0Lmgi CiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Nsb3QuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2JhY2tlbmRp ZC5oIgpAQCAtMjg4LDYgKzI4OSwxNSBAQCBzdGF0aWMgSFRBQiAqcmVwbFNsb3RTdGF0SGFzaCA9 IE5VTEw7CiBzdGF0aWMgSFRBQiAqc3ViV29ya2VyU3RhdEhhc2ggPSBOVUxMOwogCiAvKgorICog U3RhdHMgb2YgcHJlcGFyZWQgdHJhbnNhY3Rpb25zIHNob3VsZCBiZSBkaXNwbGF5ZWQKKyAqIGF0 IGVpdGhlciBjb21taXQgcHJlcGFyZWQgb3Igcm9sbGJhY2sgcHJlcGFyZWQgdGltZSwgZXZlbiB3 aGVuIGl0J3MKKyAqIGFmdGVyIHRoZSBzZXJ2ZXIgcmVzdGFydC4gV2UgaGF2ZSB0aGUgYXBwbHkg d29ya2VyIHNlbmQgdGhvc2Ugc3RhdGlzdGljcworICogdG8gdGhlIHN0YXRzIGNvbGxlY3RvciBh dCBwcmVwYXJlIHRpbWUgYW5kIHRoZSBzdGFydHVwIHByb2Nlc3MgcmVzdG9yZQorICogdGhvc2Ug YXQgcmVzdGFydCBpZiBuZWNlc3NhcnkuCisgKi8KK3N0YXRpYyBIVEFCICpzdWJXb3JrZXJQcmVw YXJlZFhhY3RTaXplSGFzaCA9IE5VTEw7CisKKy8qCiAgKiBMaXN0IG9mIE9JRHMgb2YgZGF0YWJh c2VzIHdlIG5lZWQgdG8gd3JpdGUgb3V0LiAgSWYgYW4gZW50cnkgaXMgSW52YWxpZE9pZCwKICAq IGl0IG1lYW5zIHRvIHdyaXRlIG9ubHkgdGhlIHNoYXJlZC1jYXRhbG9nIHN0YXRzICgiREIgMCIp OyBvdGhlcndpc2UsIHdlCiAgKiB3aWxsIHdyaXRlIGJvdGggdGhhdCBEQidzIGRhdGEgYW5kIHRo ZSBzaGFyZWQgc3RhdHMuCkBAIC0zMzgsNiArMzQ4LDkgQEAgc3RhdGljIHZvaWQgcGdzdGF0X3Jl c2V0X3JlcGxzbG90KFBnU3RhdF9TdGF0UmVwbFNsb3RFbnRyeSAqc2xvdHN0YXRzLCBUaW1lc3Rh bXAKIAogc3RhdGljIFBnU3RhdF9TdGF0U3ViV29ya2VyRW50cnkgKnBnc3RhdF9nZXRfc3Vid29y a2VyX2VudHJ5KE9pZCBzdWJpZCwgT2lkIHN1YnJlbGlkLAogCQkJCQkJCQkJCQkJCQkJIGJvb2wg Y3JlYXRlKTsKK3N0YXRpYyBQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUgKnBn c3RhdF9nZXRfc3Vid29ya2VyX3ByZXBhcmVkX3R4bihPaWQgc3ViaWQsCisJCQkJCQkJCQkJCQkJ CQkJCQkJICAgY2hhciAqZ2lkLCBib29sIGNyZWF0ZSk7CisKIHN0YXRpYyB2b2lkIHBnc3RhdF9y ZXNldF9zdWJ3b3JrZXJfZW50cnkoUGdTdGF0X1N0YXRTdWJXb3JrZXJFbnRyeSAqd2VudHJ5LCBU aW1lc3RhbXBUeiB0cyk7CiBzdGF0aWMgdm9pZCBwZ3N0YXRfdmFjdXVtX3N1Yndvcmtlcl9zdGF0 cyh2b2lkKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9zZW5kX3N1YnNjcmlwdGlvbl9wdXJnZShQZ1N0 YXRfTXNnU3Vic2NyaXB0aW9uUHVyZ2UgKm1zZyk7CkBAIC0zODgsNiArNDAxLDkgQEAgc3RhdGlj IHZvaWQgcGdzdGF0X3JlY3ZfdGVtcGZpbGUoUGdTdGF0X01zZ1RlbXBGaWxlICptc2csIGludCBs ZW4pOwogc3RhdGljIHZvaWQgcGdzdGF0X3JlY3Zfc3Vic2NyaXB0aW9uX3B1cmdlKFBnU3RhdF9N c2dTdWJzY3JpcHRpb25QdXJnZSAqbXNnLCBpbnQgbGVuKTsKIHN0YXRpYyB2b2lkIHBnc3RhdF9y ZWN2X3N1Yndvcmtlcl9lcnJvcihQZ1N0YXRfTXNnU3ViV29ya2VyRXJyb3IgKm1zZywgaW50IGxl bik7CiBzdGF0aWMgdm9pZCBwZ3N0YXRfcmVjdl9zdWJ3b3JrZXJfcHVyZ2UoUGdTdGF0X01zZ1N1 YldvcmtlclB1cmdlICptc2csIGludCBsZW4pOworc3RhdGljIHZvaWQgcGdzdGF0X3JlY3Zfc3Vi d29ya2VyX3hhY3RfZW5kKFBnU3RhdF9Nc2dTdWJXb3JrZXJYYWN0RW5kICptc2csIGludCBsZW4p Oworc3RhdGljIHZvaWQgcGdzdGF0X3JlY3Zfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoUGdTdGF0 X01zZ1N1YldvcmtlclR3b3BoYXNlWGFjdCAqbXNnLCBpbnQgbGVuKTsKKwogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq IFB1YmxpYyBmdW5jdGlvbnMgY2FsbGVkIGZyb20gcG9zdG1hc3RlciBmb2xsb3cKQEAgLTIxMTEs NiArMjEyNyw3MiBAQCBwZ3N0YXRfcmVwb3J0X3JlcGxzbG90X2Ryb3AoY29uc3QgY2hhciAqc2xv dG5hbWUpCiB9CiAKIC8qIC0tLS0tLS0tLS0KKyAqIHBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX3hh Y3RfZW5kKCkgLQorICoKKyAqICBUZWxsIHRoZSBjb2xsZWN0b3IgdGhhdCB3b3JrZXIgdHJhbnNh Y3Rpb24gaGFzIGZpbmlzaGVkIHdpdGhvdXQgcHJvYmxlbS4KKyAqIC0tLS0tLS0tLS0KKyAqLwor dm9pZAorcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfeGFjdF9lbmQoT2lkIHN1YmlkLCBPaWQgc3Vi cmVsLAorCQkJCQkJCQkgTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZCwgUGdTdGF0X0NvdW50ZXIg eGFjdF9zaXplKQoreworCVBnU3RhdF9Nc2dTdWJXb3JrZXJYYWN0RW5kIG1zZzsKKworCUFzc2Vy dChjb21tYW5kID09IDAgLyogdGFibGUgc3luYyB3b3JrZXIgKi8gfHwKKwkJICAgY29tbWFuZCA9 PSBMT0dJQ0FMX1JFUF9NU0dfQ09NTUlUIHx8CisJCSAgIGNvbW1hbmQgPT0gTE9HSUNBTF9SRVBf TVNHX1NUUkVBTV9BQk9SVCB8fAorCQkgICBjb21tYW5kID09IExPR0lDQUxfUkVQX01TR19TVFJF QU1fQ09NTUlUKTsKKworCXBnc3RhdF9zZXRoZWFkZXIoJm1zZy5tX2hkciwgUEdTVEFUX01UWVBF X1NVQldPUktFUlhBQ1RFTkQpOworCW1zZy5tX3N1YmlkID0gc3ViaWQ7CisJbXNnLm1fc3VicmVs aWQgPSBzdWJyZWw7CisJbXNnLm1fY29tbWFuZCA9IGNvbW1hbmQ7CisJbXNnLm1feGFjdF9ieXRl cyA9IHhhY3Rfc2l6ZTsKKwlwZ3N0YXRfc2VuZCgmbXNnLCBzaXplb2YoUGdTdGF0X01zZ1N1Yldv cmtlclhhY3RFbmQpKTsKKworCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKCk7 Cit9CisKKy8qIC0tLS0tLS0tLS0KKyAqIHBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX3R3b3BoYXNl X3hhY3QoKSAtCisgKgorICogIFRlbGwgdGhlIGNvbGxlY3RvciB0aGF0IHdvcmtlciB0cmFuc2Fj dGlvbiBoYXMgZG9uZSAyUEMgcmVsYXRlZCBvcGVyYXRpb24uCisgKiAtLS0tLS0tLS0tCisgKi8K K3ZvaWQKK3Bnc3RhdF9yZXBvcnRfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoT2lkIHN1YmlkLCBM b2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kLAorCQkJCQkJCQkJICBQZ1N0YXRfQ291bnRlciB4YWN0 X3NpemUsCisJCQkJCQkJCQkgIExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0 YSwKKwkJCQkJCQkJCSAgTG9naWNhbFJlcENvbW1pdFByZXBhcmVkVHhuRGF0YSAqY29tbWl0X2Rh dGEsCisJCQkJCQkJCQkgIExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YSAqcm9sbGJh Y2tfZGF0YSkKK3sKKwlQZ1N0YXRfTXNnU3ViV29ya2VyVHdvcGhhc2VYYWN0IG1zZzsKKworCUFz c2VydChjb21tYW5kID09IExPR0lDQUxfUkVQX01TR19QUkVQQVJFIHx8CisJCSAgIGNvbW1hbmQg PT0gTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9QUkVQQVJFIHx8CisJCSAgIGNvbW1hbmQgPT0gTE9H SUNBTF9SRVBfTVNHX0NPTU1JVF9QUkVQQVJFRCB8fAorCQkgICBjb21tYW5kID09IExPR0lDQUxf UkVQX01TR19ST0xMQkFDS19QUkVQQVJFRCk7CisKKwkvKiBzZXR1cCB0aGUgbWVzc2FnZSAqLwor CXBnc3RhdF9zZXRoZWFkZXIoJm1zZy5tX2hkciwgUEdTVEFUX01UWVBFX1NVQldPUktFUlRXT1BI QVNFWEFDVCk7CisJbXNnLm1fc3ViaWQgPSBzdWJpZDsKKwltc2cubV9jb21tYW5kID0gY29tbWFu ZDsKKworCS8qIGdldCB0aGUgZ2lkIGZvciB0aGlzIHR3byBwaGFzZSBvcGVyYXRpb24gKi8KKwlp ZiAoY29tbWFuZCA9PSBMT0dJQ0FMX1JFUF9NU0dfUFJFUEFSRSB8fAorCQljb21tYW5kID09IExP R0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRSkKKwkJbWVtY3B5KG1zZy5tX2dpZCwgcHJlcGFy ZV9kYXRhLT5naWQsIEdJRFNJWkUpOworCWVsc2UgaWYgKGNvbW1hbmQgPT0gTE9HSUNBTF9SRVBf TVNHX0NPTU1JVF9QUkVQQVJFRCkKKwkJbWVtY3B5KG1zZy5tX2dpZCwgY29tbWl0X2RhdGEtPmdp ZCwgR0lEU0laRSk7CisJZWxzZSAvKiByb2xsYmFjayBwcmVwYXJlZCAqLworCQltZW1jcHkobXNn Lm1fZ2lkLCByb2xsYmFja19kYXRhLT5naWQsIEdJRFNJWkUpOworCisJbXNnLm1feGFjdF9ieXRl cyA9IHhhY3Rfc2l6ZTsKKwlwZ3N0YXRfc2VuZCgmbXNnLCBzaXplb2YoUGdTdGF0X01zZ1N1Yldv cmtlclR3b3BoYXNlWGFjdCkpOworCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXpl KCk7Cit9CisKKy8qIC0tLS0tLS0tLS0KICAqIHBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX2Vycm9y KCkgLQogICoKICAqCVRlbGwgdGhlIGNvbGxlY3RvciBhYm91dCB0aGUgc3Vic2NyaXB0aW9uIHdv cmtlciBlcnJvci4KQEAgLTIxMzAsNiArMjIxMiw3IEBAIHBnc3RhdF9yZXBvcnRfc3Vid29ya2Vy X2Vycm9yKE9pZCBzdWJpZCwgT2lkIHN1YnJlbGlkLCBPaWQgcmVsaWQsCiAJcGdzdGF0X3NldGhl YWRlcigmbXNnLm1faGRyLCBQR1NUQVRfTVRZUEVfU1VCV09SS0VSRVJST1IpOwogCW1zZy5tX3N1 YmlkID0gc3ViaWQ7CiAJbXNnLm1fc3VicmVsaWQgPSBzdWJyZWxpZDsKKwltc2cubV94YWN0X2Vy cm9yX2J5dGVzID0gZ2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKCk7CiAJbXNnLm1f ZGJpZCA9IE15RGF0YWJhc2VJZDsKIAltc2cubV9yZWxpZCA9IHJlbGlkOwogCW1zZy5tX2NvbW1h bmQgPSBjb21tYW5kOwpAQCAtMjEzOCw2ICsyMjIxLDggQEAgcGdzdGF0X3JlcG9ydF9zdWJ3b3Jr ZXJfZXJyb3IoT2lkIHN1YmlkLCBPaWQgc3VicmVsaWQsIE9pZCByZWxpZCwKIAlzdHJsY3B5KG1z Zy5tX21lc3NhZ2UsIGVycm1zZywgUEdTVEFUX1NVQldPUktFUkVSUk9SX01TR0xFTik7CiAKIAlw Z3N0YXRfc2VuZCgmbXNnLCBsZW4pOworCisJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0 X3NpemUoKTsKIH0KIAogLyogLS0tLS0tLS0tLQpAQCAtMzkwNiw2ICszOTkxLDE0IEBAIFBnc3Rh dENvbGxlY3Rvck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQkJcGdzdGF0X3JlY3Zf c3Vid29ya2VyX3B1cmdlKCZtc2cubXNnX3N1YndvcmtlcnB1cmdlLCBsZW4pOwogCQkJCQlicmVh azsKIAorCQkJCWNhc2UgUEdTVEFUX01UWVBFX1NVQldPUktFUlhBQ1RFTkQ6CisJCQkJCXBnc3Rh dF9yZWN2X3N1Yndvcmtlcl94YWN0X2VuZCgmbXNnLm1zZ19zdWJ3b3JrZXJ4YWN0ZW5kLCBsZW4p OworCQkJCQlicmVhazsKKworCQkJCWNhc2UgUEdTVEFUX01UWVBFX1NVQldPUktFUlRXT1BIQVNF WEFDVDoKKwkJCQkJcGdzdGF0X3JlY3Zfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoJm1zZy5tc2df c3Vid29ya2VydHdvcGhhc2V4YWN0LCBsZW4pOworCQkJCQlicmVhazsKKwogCQkJCWRlZmF1bHQ6 CiAJCQkJCWJyZWFrOwogCQkJfQpAQCAtNDIyMyw2ICs0MzE2LDIyIEBAIHBnc3RhdF93cml0ZV9z dGF0c2ZpbGVzKGJvb2wgcGVybWFuZW50LCBib29sIGFsbERicykKIAl9CiAKIAkvKgorCSAqIFdy aXRlIHN1YnNjcmlwdGlvbiB3b3JrZXIncyBwcmVwYXJlZCB0cmFuc2FjdGlvbiBzdHJ1Y3QKKwkg Ki8KKwlpZiAoc3ViV29ya2VyUHJlcGFyZWRYYWN0U2l6ZUhhc2gpCisJeworCQlQZ1N0YXRfU3Rh dFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUgKnByZXBhcmVkX3NpemU7CisKKwkJaGFzaF9zZXFf aW5pdCgmaHN0YXQsIHN1YldvcmtlclByZXBhcmVkWGFjdFNpemVIYXNoKTsKKwkJd2hpbGUoKHBy ZXBhcmVkX3NpemUgPSAoUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplICopIGhh c2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQorCQl7CisJCQlmcHV0YygnUCcsIGZwb3V0 KTsKKwkJCXJjID0gZndyaXRlKHByZXBhcmVkX3NpemUsIHNpemVvZihQZ1N0YXRfU3RhdFN1Yldv cmtlclByZXBhcmVkWGFjdFNpemUpLCAxLCBmcG91dCk7CisJCQkodm9pZCkgcmM7IAkJCS8qIHdl J2xsIGNoZWNrIGZvciBlcnJvciB3aXRoIGZlcnJvciAqLworCQl9CisJfQorCisJLyoKIAkgKiBO byBtb3JlIG91dHB1dCB0byBiZSBkb25lLiBDbG9zZSB0aGUgdGVtcCBmaWxlIGFuZCByZXBsYWNl IHRoZSBvbGQKIAkgKiBwZ3N0YXQuc3RhdCB3aXRoIGl0LiAgVGhlIGZlcnJvcigpIGNoZWNrIHJl cGxhY2VzIHRlc3RpbmcgZm9yIGVycm9yCiAJICogYWZ0ZXIgZWFjaCBpbmRpdmlkdWFsIGZwdXRj IG9yIGZ3cml0ZSBhYm92ZS4KQEAgLTQ3MjUsNiArNDgzNCw0MCBAQCBwZ3N0YXRfcmVhZF9zdGF0 c2ZpbGVzKE9pZCBvbmx5ZGIsIGJvb2wgcGVybWFuZW50LCBib29sIGRlZXApCiAJCQkJCWJyZWFr OwogCQkJCX0KIAorCQkJY2FzZSAnUCc6CisJCQkJeworCQkJCQlQZ1N0YXRfU3RhdFN1Yldvcmtl clByZXBhcmVkWGFjdFNpemUgYnVmZjsKKwkJCQkJUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJl ZFhhY3RTaXplICpwcmVwYXJlZF94YWN0X3NpemU7CisKKwkJCQkJaWYgKGZyZWFkKCZidWZmLCAx LCBzaXplb2YoUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplKSwKKwkJCQkJCQkg IGZwaW4pICE9IHNpemVvZihQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUpKQor CQkJCQl7CisJCQkJCQllcmVwb3J0KHBnU3RhdFJ1bm5pbmdJbkNvbGxlY3RvciA/IExPRyA6IFdB Uk5JTkcsCisJCQkJCQkJCShlcnJtc2coImNvcnJ1cHRlZCBzdGF0aXN0aWNzIGZpbGUgXCIlc1wi IiwKKwkJCQkJCQkJCQlzdGF0ZmlsZSkpKTsKKwkJCQkJCWdvdG8gZG9uZTsKKwkJCQkJfQorCisJ CQkJCWlmIChzdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplSGFzaCA9PSBOVUxMKQorCQkJCQl7CisJ CQkJCQlIQVNIQ1RMCQloYXNoX2N0bDsKKworCQkJCQkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVv ZihQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdCk7CisJCQkJCQloYXNoX2N0bC5lbnRy eXNpemUgPSBzaXplb2YoUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplKTsKKwkJ CQkJCWhhc2hfY3RsLmhjeHQgPSBwZ1N0YXRMb2NhbENvbnRleHQ7CisJCQkJCQlzdWJXb3JrZXJQ cmVwYXJlZFhhY3RTaXplSGFzaCA9IGhhc2hfY3JlYXRlKCJTdWJzY3JpcHRpb24gd29ya2VyIHN0 YXRzIG9mIHByZXBhcmVkIHR4biIsCisJCQkJCQkJCQkJCQkJCVBHU1RBVF9TVUJXT1JLRVJfSEFT SF9TSVpFLAorCQkJCQkJCQkJCQkJCQkmaGFzaF9jdGwsCisJCQkJCQkJCQkJCQkJCUhBU0hfRUxF TSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfQ09OVEVYVCk7CisJCQkJCX0KKworCQkJCQlwcmVwYXJl ZF94YWN0X3NpemUgPQorCQkJCQkJKFBnU3RhdF9TdGF0U3ViV29ya2VyUHJlcGFyZWRYYWN0U2l6 ZSAqKSBoYXNoX3NlYXJjaChzdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplSGFzaCwKKwkJCQkJCQkJ CQkJCQkJCQkJCQkgKHZvaWQgKikgJmJ1ZmYua2V5LAorCQkJCQkJCQkJCQkJCQkJCQkJCSBIQVNI X0VOVEVSLCBOVUxMKTsKKwkJCQkJbWVtY3B5KHByZXBhcmVkX3hhY3Rfc2l6ZSwgJmJ1ZmYsIHNp emVvZihQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUpKTsKKwkJCQkJYnJlYWs7 CisJCQkJfQogCQkJY2FzZSAnRSc6CiAJCQkJZ290byBkb25lOwogCkBAIC01MjkwLDYgKzU0MzMs NyBAQCBwZ3N0YXRfY2xlYXJfc25hcHNob3Qodm9pZCkKIAlwZ1N0YXREQkhhc2ggPSBOVUxMOwog CXJlcGxTbG90U3RhdEhhc2ggPSBOVUxMOwogCXN1YldvcmtlclN0YXRIYXNoID0gTlVMTDsKKwlz dWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplSGFzaCA9IE5VTEw7CiAKIAkvKgogCSAqIEhpc3Rvcmlj YWxseSB0aGUgYmFja2VuZF9zdGF0dXMuYyBmYWNpbGl0aWVzIGxpdmVkIGluIHRoaXMgZmlsZSwg YW5kCkBAIC02Mjg3LDYgKzY0MzEsMTA1IEBAIHBnc3RhdF9yZWN2X3N1YnNjcmlwdGlvbl9wdXJn ZShQZ1N0YXRfTXNnU3Vic2NyaXB0aW9uUHVyZ2UgKm1zZywgaW50IGxlbikKIH0KIAogLyogLS0t LS0tLS0tLQorICogcGdzdGF0X3JlY3Zfc3Vid29ya2VyX3hhY3RfZW5kKCkgLQorICoKKyAqCVBy b2Nlc3MgYSBTVUJXT1JLRVJYQUNURU5EIG1lc3NhZ2UuCisgKiAtLS0tLS0tLS0tCisgKi8KK3N0 YXRpYyB2b2lkCitwZ3N0YXRfcmVjdl9zdWJ3b3JrZXJfeGFjdF9lbmQoUGdTdGF0X01zZ1N1Yldv cmtlclhhY3RFbmQgKm1zZywgaW50IGxlbikKK3sKKwlQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5 ICp3ZW50cnk7CisKKwl3ZW50cnkgPSBwZ3N0YXRfZ2V0X3N1Yndvcmtlcl9lbnRyeShtc2ctPm1f c3ViaWQsIG1zZy0+bV9zdWJyZWxpZCwgdHJ1ZSk7CisJQXNzZXJ0KHdlbnRyeSk7CisKKwkvKiB0 YWJsZSBzeW5jIHdvcmtlciAqLworCWlmIChtc2ctPm1fY29tbWFuZCA9PSAwKQorCQl3ZW50cnkt PnhhY3RfY29tbWl0Kys7CisJZWxzZQorCXsKKwkJLyogYXBwbHkgd29ya2VyICovCisJCXN3aXRj aChtc2ctPm1fY29tbWFuZCkKKwkJeworCQkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfQ09NTUlUOgor CQkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0NPTU1JVDoKKwkJCQl3ZW50cnktPnhhY3Rf Y29tbWl0Kys7CisJCQkJd2VudHJ5LT54YWN0X2NvbW1pdF9ieXRlcyArPSBtc2ctPm1feGFjdF9i eXRlczsKKwkJCQlicmVhazsKKwkJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVDoK KwkJCQl3ZW50cnktPnhhY3RfYWJvcnQrKzsKKwkJCQl3ZW50cnktPnhhY3RfYWJvcnRfYnl0ZXMg Kz0gbXNnLT5tX3hhY3RfYnl0ZXM7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2co RVJST1IsICJ1bmV4cGVjdGVkIGxvZ2ljYWwgbWVzc2FnZSB0eXBlIGFzIG5vcm1hbCBhcHBseSBl bmQiKTsKKwkJCQlicmVhazsKKwkJfQorCX0KK30KKworLyogLS0tLS0tLS0tLQorICogcGdzdGF0 X3JlY3Zfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoKSAtCisgKgorICoJUHJvY2VzcyBhIFNVQldP UktFUlRXT1BIQVNFWEFDVCBtZXNzYWdlLgorICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgdm9p ZAorcGdzdGF0X3JlY3Zfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoUGdTdGF0X01zZ1N1Yldvcmtl clR3b3BoYXNlWGFjdCAqbXNnLCBpbnQgbGVuKQoreworCVBnU3RhdF9TdGF0U3ViV29ya2VyUHJl cGFyZWRYYWN0U2l6ZSAqcHJlcGFyZWRfdHhuOworCVBnU3RhdF9TdGF0U3ViV29ya2VyRW50cnkg KndlbnRyeTsKKwlQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdCBrZXk7CisKKwlwcmVw YXJlZF90eG4gPSBwZ3N0YXRfZ2V0X3N1Yndvcmtlcl9wcmVwYXJlZF90eG4obXNnLT5tX3N1Ymlk LCBtc2ctPm1fZ2lkLCB0cnVlKTsKKwlBc3NlcnQocHJlcGFyZWRfdHhuKTsKKwlzd2l0Y2gobXNn LT5tX2NvbW1hbmQpCisJeworCQljYXNlIExPR0lDQUxfUkVQX01TR19QUkVQQVJFOgorCQljYXNl IExPR0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRToKKwkJCS8qCisJCQkgKiBNYWtlIGVhY2gg c2l6ZSBvZiBwcmVwYXJlZCB0cmFuc2FjdGlvbiBwZXJzaXN0ZW50CisJCQkgKiBzbyB0aGF0IHdl IGNhbiB1cGRhdGUgc3RhdHMgb3ZlciB0aGUgc2VydmVyIHJlc3RhcnQKKwkJCSAqIGFuZCBtYWtl IHByZXBhcmVkIHN0YXRzIHVwZGF0ZWQgd2hlbiBjb21taXQgcHJlcGFyZWQKKwkJCSAqIG9yIHJv bGxiYWNrIHByZXBhcmVkIGFycml2ZXMuCisJCQkgKi8KKwkJCXByZXBhcmVkX3R4bi0+c3ViaWQg PSBtc2ctPm1fc3ViaWQ7CisJCQlzdHJsY3B5KHByZXBhcmVkX3R4bi0+Z2lkLCBtc2ctPm1fZ2lk LCBzdHJsZW4obXNnLT5tX2dpZCkgKyAxKTsKKwkJCXByZXBhcmVkX3R4bi0+eGFjdF9zaXplID0g bXNnLT5tX3hhY3RfYnl0ZXM7CisJCQlicmVhazsKKworCQljYXNlIExPR0lDQUxfUkVQX01TR19D T01NSVRfUFJFUEFSRUQ6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1JPTExCQUNLX1BSRVBBUkVE OgorCQkJLyogVXBkYXRlIGV4cG9ydGVkIHhhY3Qgc3RhdHMgbm93ICovCisJCQl3ZW50cnkgPSBw Z3N0YXRfZ2V0X3N1Yndvcmtlcl9lbnRyeShtc2ctPm1fc3ViaWQsCisJCQkJCQkJCQkJCQlJbnZh bGlkT2lkIC8qIGFwcGx5IHdvcmtlciAqLywKKwkJCQkJCQkJCQkJCXRydWUpOworCQkJQXNzZXJ0 KHdlbnRyeSk7CisJCQlpZiAobXNnLT5tX2NvbW1hbmQgPT0gTE9HSUNBTF9SRVBfTVNHX0NPTU1J VF9QUkVQQVJFRCkKKwkJCXsKKwkJCQl3ZW50cnktPnhhY3RfY29tbWl0Kys7CisJCQkJd2VudHJ5 LT54YWN0X2NvbW1pdF9ieXRlcyArPSBwcmVwYXJlZF90eG4tPnhhY3Rfc2l6ZTsKKwkJCX0KKwkJ CWVsc2UKKwkJCXsKKwkJCQl3ZW50cnktPnhhY3RfYWJvcnQrKzsKKwkJCQl3ZW50cnktPnhhY3Rf YWJvcnRfYnl0ZXMgKz0gcHJlcGFyZWRfdHhuLT54YWN0X3NpemU7CisJCQl9CisKKwkJCS8qIENs ZWFuIHVwIHRoaXMgZ2lkIGZyb20gdHJhbnNhY3Rpb24gc2l6ZSBoYXNoICovCisJCQlrZXkuc3Vi aWQgPSBwcmVwYXJlZF90eG4tPnN1YmlkOworCQkJbWVtY3B5KGtleS5naWQsIG1zZy0+bV9naWQs IHN0cmxlbihtc2ctPm1fZ2lkKSk7CisJCQkodm9pZCkgaGFzaF9zZWFyY2goc3ViV29ya2VyUHJl cGFyZWRYYWN0U2l6ZUhhc2gsCisJCQkJCQkJICAgKHZvaWQgKikgJmtleSwgSEFTSF9SRU1PVkUs IE5VTEwpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bmV4cGVj dGVkIGxvZ2ljYWwgbWVzc2FnZSB0eXBlIGFzIHByZXBhcmUgdHJhbnNhY3Rpb24iKTsKKwkJCWJy ZWFrOworCX0KK30KKworLyogLS0tLS0tLS0tLQogICogcGdzdGF0X3JlY3Zfc3Vid29ya2VyX2Vy cm9yKCkgLQogICoKICAqCVByb2Nlc3MgYSBTVUJXT1JLRVJFUlJPUiBtZXNzYWdlLgpAQCAtNjMw MSw2ICs2NTQ0LDEwIEBAIHBnc3RhdF9yZWN2X3N1Yndvcmtlcl9lcnJvcihQZ1N0YXRfTXNnU3Vi V29ya2VyRXJyb3IgKm1zZywgaW50IGxlbikKIAl3ZW50cnkgPSBwZ3N0YXRfZ2V0X3N1Yndvcmtl cl9lbnRyeShtc2ctPm1fc3ViaWQsIG1zZy0+bV9zdWJyZWxpZCwgdHJ1ZSk7CiAJQXNzZXJ0KHdl bnRyeSk7CiAKKwkvKiBnZW5lcmFsIHRyYW5zYWN0aW9uIHN0YXRzIGZvciBlcnJvciAqLworCXdl bnRyeS0+eGFjdF9lcnJvcisrOworCXdlbnRyeS0+eGFjdF9lcnJvcl9ieXRlcyArPSBtc2ctPm1f eGFjdF9lcnJvcl9ieXRlczsKKwogCS8qCiAJICogVXBkYXRlIG9ubHkgdGhlIGNvdW50ZXIgYW5k IHRpbWVzdGFtcCBpZiB3ZSByZWNlaXZlZCB0aGUgc2FtZSBlcnJvcgogCSAqIGFnYWluCkBAIC02 NTIwLDYgKzY3NjcsNTEgQEAgcGdzdGF0X2dldF9zdWJ3b3JrZXJfZW50cnkoT2lkIHN1YmlkLCBP aWQgc3VicmVsaWQsIGJvb2wgY3JlYXRlKQogfQogCiAvKiAtLS0tLS0tLS0tCisgKiBwZ3N0YXRf Z2V0X3N1Yndvcmtlcl9wcmVwYXJlZF90eG4KKyAqCisgKiBSZXR1cm4gc3Vic2NyaXB0aW9uIHdv cmtlciBlbnRyeSB3aXRoIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gT0lEIGFuZAorICogZ2lkLgor ICogLS0tLS0tLS0tLQorICovCitzdGF0aWMgUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhh Y3RTaXplKgorcGdzdGF0X2dldF9zdWJ3b3JrZXJfcHJlcGFyZWRfdHhuKE9pZCBzdWJpZCwgY2hh ciAqZ2lkLCBib29sIGNyZWF0ZSkKK3sKKwlQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFj dCBrZXk7CisJUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplICpwcmVwYXJlZF90 eG5fc2l6ZTsKKwlIQVNIQUNUSU9OCWFjdGlvbjsKKwlib29sCQlmb3VuZDsKKworCWlmIChzdWJX b3JrZXJQcmVwYXJlZFhhY3RTaXplSGFzaCA9PSBOVUxMKQorCXsKKwkJSEFTSENUTAkJaGFzaF9j dGw7CisKKwkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihQZ1N0YXRfU3RhdFN1YldvcmtlclBy ZXBhcmVkWGFjdCk7CisJCWhhc2hfY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQZ1N0YXRfU3RhdFN1 YldvcmtlclByZXBhcmVkWGFjdFNpemUpOworCQloYXNoX2N0bC5oY3h0ID0gcGdTdGF0TG9jYWxD b250ZXh0OworCQlzdWJXb3JrZXJQcmVwYXJlZFhhY3RTaXplSGFzaCA9IGhhc2hfY3JlYXRlKCJT dWJzY3JpcHRpb24gd29ya2VyIHN0YXRzIG9mIHByZXBhcmVkIHR4biIsCisJCQkJCQkJCQkJCQkJ UEdTVEFUX1NVQldPUktFUl9IQVNIX1NJWkUsCisJCQkJCQkJCQkJCQkJJmhhc2hfY3RsLAorCQkJ CQkJCQkJCQkJCUhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyk7CisJfQorCisJa2V5LnN1YmlkID0g c3ViaWQ7CisJbWVtY3B5KGtleS5naWQsIGdpZCwgc3RybGVuKGdpZCkpOworCWFjdGlvbiA9IChj cmVhdGUgPyBIQVNIX0VOVEVSIDogSEFTSF9GSU5EKTsKKwlwcmVwYXJlZF90eG5fc2l6ZSA9IChQ Z1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdFNpemUgKikgaGFzaF9zZWFyY2goc3ViV29y a2VyUHJlcGFyZWRYYWN0U2l6ZUhhc2gsCisJCQkJCQkJCQkJCQkJCQkJCQkJICh2b2lkICopICZr ZXksCisJCQkJCQkJCQkJCQkJCQkJCQkJIGFjdGlvbiwgJmZvdW5kKTsKKworCWlmIChjcmVhdGUg JiYgIWZvdW5kKQorCXsKKwkJcHJlcGFyZWRfdHhuX3NpemUtPnN1YmlkID0gMDsKKwkJcHJlcGFy ZWRfdHhuX3NpemUtPmdpZFswXSA9ICdcMCc7CisJCXByZXBhcmVkX3R4bl9zaXplLT54YWN0X3Np emUgPSAwOworCX0KKworCXJldHVybiBwcmVwYXJlZF90eG5fc2l6ZTsKK30KKworLyogLS0tLS0t LS0tLQogICogcGdzdGF0X3Jlc2V0X3N1Yndvcmtlcl9lbnRyeQogICoKICAqIFJlc2V0IHRoZSBn aXZlbiBzdWJzY3JpcHRpb24gd29ya2VyIHN0YXRpc3RpY3MuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA5YjZkMDU3Li4wZDA0ZWE1IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTExNjIsNiArMTE2 MiwxMiBAQCBjb3B5X3RhYmxlX2RvbmU6CiAJTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxzdGF0ZV9s c24gPSAqb3JpZ2luX3N0YXJ0cG9zOwogCVNwaW5Mb2NrUmVsZWFzZSgmTXlMb2dpY2FsUmVwV29y a2VyLT5yZWxtdXRleCk7CiAKKwkvKiBSZXBvcnQgdGhlIHN1Y2Nlc3Mgb2YgdGFibGUgc3luYy4g Ki8KKwlwZ3N0YXRfcmVwb3J0X3N1Yndvcmtlcl94YWN0X2VuZChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLAorCQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQsCisJCQkJCQkJCQkg MCAvKiBubyBsb2dpY2FsIG1lc3NhZ2UgdHlwZSAqLywKKwkJCQkJCQkJCSAwIC8qIHhhY3Qgc2l6 ZSAqLyk7CisKIAkvKgogCSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIG1haW4gYXBwbHkgd29y a2VyIHRlbGxzIHVzIHRvIGNhdGNoIHVwIGFuZCB0aGVuCiAJICogcmV0dXJuIHRvIGxldCBMb2dp Y2FsUmVwQXBwbHlMb29wIGRvIGl0LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMKaW5kZXggM2E0MDY4NC4uMWNiZTkyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3dvcmtlci5jCkBAIC0yMjEsNiArMjIxLDIxIEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5 RXJyb3JDYWxsYmFja0FyZwogCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52 YWxpZCAqLwogCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOwogCisJLyoKKwkgKiBTdG9yZSBk YXRhIHNpemUgb2YgdGhpcyB0cmFuc2FjdGlvbi4KKwkgKgorCSAqIFRoZSBieXRlIHNpemUgb2Yg dHJhbnNhY3Rpb24gb24gdGhlIHB1Ymxpc2hlciBpcyBjYWxjdWxhdGVkCisJICogYnkgUmVvcmRl ckJ1ZmZlckNoYW5nZVNpemUoKSBiYXNlZCBvbiB0aGUgUmVvcmRlckJ1ZmZlckNoYW5nZQorCSAq IHN0cnVjdHVyZS4gQnV0IG9uIHRoZSBzdWJzY3JpYmVyLCBjb25zdW1lZCByZXNvdXJjZXMgYXJl CisJICogbm90IHNhbWUgYXMgdGhlIHB1Ymxpc2hlcidzIGRlY29kaW5nIHByb2Nlc3NzaW5nIGFu ZCByZXF1aXJlZAorCSAqIHRvIGJlIGNvbXB1dGVkIGluIGRpZmZlcmVudCB3YXkuIFRoZXJlZm9y ZSwgdGhlIGV4YWN0IHNhbWUgYnl0ZQorCSAqIHNpemUgaXMgbm90IHJlc3RvcmVkIG9uIHRoZSBz dWJzY3JpYmVyIHVzdWFsbHkuCisJICoKKwkgKiBEYXRhIHNpemUgb2Ygc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyBpcyBtYW5hZ2VkIGJ5IHN0cmVhbWluZ1hhY3RTaXplCisJICogZm9yIGZsZXhpYmxl IGRhdGEgYmxvY2tzIGhhbmRsaW5nLgorCSAqLworCVBnU3RhdF9Db3VudGVyIGJ5dGVzOworCiAJ LyogUmVtb3RlIG5vZGUgaW5mb3JtYXRpb24gKi8KIAlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAt MSBpZiBpbnZhbGlkICovCiAJVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwpAQCAtMjMxLDExICsy NDYsMzIgQEAgc3RhdGljIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFj a19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVMTCwKKwkuYnl0ZXMgPSAwLAog CS5yZW1vdGVfYXR0bnVtID0gLTEsCiAJLnJlbW90ZV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZCwKIAkudHMgPSAwLAogfTsKIAorLyoKKyAqIFR3byBvciBtb3JlIHN0cmVhbWluZyB0cmFuc2Fj dGlvbnMgaW4gcGFyYWxsZWwgb24gdGhlIHB1Ymxpc2hlcgorICogZ2VuZXJhdGUgdW5leHBlY3Rl ZCBvcmRlciBvZiBwYXJ0aWFsIHR4biBkYXRhIGRlbWFyY2F0ZWQgc3RyZWFtIHN0YXJ0CisgKiBh bmQgc3RyZWFtIHN0b3AgdG8gdGhlIHN1YnNjcmliZXIsIHNpbmNlIHdoZW5ldmVyIGl0cyBzaXpl IG9mIG9uZSBvZgorICogdGhlIHR4bnMgcmVhY2hlcyB0aGUgcHVibGlzaGVyJ3MgbG9naWNhbF9k ZWNvZGluZ193b3JrX21lbSwKKyAqIHRoZSBwYXJ0IChhbmQgaW4gdGhlIGVuZCwgbGFzdCByZW1h aW5pbmcgY2hhbmdlcykgaXMgc3RyZWFtZWQuCisgKiBUaGlzIGNyZWF0ZXMgbWl4ZWQgYmxvY2tz IG9mIHN0cmVhbWluZyBkYXRhIHdoaWxlCisgKiB0aGVyZSdzIHBvc3NpYmlsaXR5IHNvbWUgYXJl IHN1Y2Nlc3NmdWxseSBjb21taXR0ZWQgYnV0IG90aGVycyBhcmUKKyAqIG5vdCBieSBzdHJlYW0g YWJvcnQuIFRoZXJlZm9yZSwgdG8gdHJhY2sgY29ycmVjdCBieXRlIHNpemUKKyAqIGl0J3MgbmVj ZXNzYXJ5IHRvIHRyYWNlIGVhY2ggc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGJ5IG1ha2luZyBwYWly CisgKiBvZiB4aWQgYW5kIHRyYW5zYWN0aW9uIHNpemUuCisgKi8KKyNkZWZpbmUgUEFSQUxMRUxf U1RSRUFNSU5HX1hBQ1RTIDMyCit0eXBlZGVmIHN0cnVjdCBYYWN0U2l6ZUVudHJ5Cit7CisJVHJh bnNhY3Rpb25JZAlrZXk7CisJUGdTdGF0X0NvdW50ZXIJeGFjdF9zaXplOworfSBYYWN0U2l6ZUVu dHJ5Oworc3RhdGljIEhUQUIgKnN0cmVhbWluZ1hhY3RTaXplID0gTlVMTDsKKwogc3RhdGljIE1l bW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5VTEw7CiBNZW1vcnlDb250ZXh0IEFw cGx5Q29udGV4dCA9IE5VTEw7CiAKQEAgLTMwNCw2ICszNDAsOCBAQCBzdGF0aWMgdm9pZCBtYXli ZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpOwogLyogcHJvdG90eXBlIG5lZWRlZCBiZWNhdXNl IG9mIHN0cmVhbV9jb21taXQgKi8KIHN0YXRpYyB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0lu Zm8gcyk7CiAKK3ZvaWQgdXBkYXRlX2FwcGx5X2NoYW5nZV9zaXplKExvZ2ljYWxSZXBNc2dUeXBl IGFjdGlvbiwgdm9pZCAqZGF0YSk7CisKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRf aW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lk IGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwK IAkJCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKQEAgLTgxOCw2ICs4NTYsMTEgQEAg YXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVz IHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5 bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwogCisJcGdzdGF0X3JlcG9ydF9zdWJ3 b3JrZXJfeGFjdF9lbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKKwkJCQkJCQkJCSBJbnZh bGlkT2lkLAorCQkJCQkJCQkJIExPR0lDQUxfUkVQX01TR19DT01NSVQsCisJCQkJCQkJCQkgZ2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKCkpOworCiAJcGdzdGF0X3JlcG9ydF9hY3Rp dml0eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8o KTsKIH0KQEAgLTkyMiw2ICs5NjUsMTEgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5m byBzKQogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQg aW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5k X2xzbik7CiAKKwlwZ3N0YXRfcmVwb3J0X3N1Yndvcmtlcl90d29waGFzZV94YWN0KE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQsCisJCQkJCQkJCQkJICBMT0dJQ0FMX1JFUF9NU0dfUFJFUEFSRSwK KwkJCQkJCQkJCQkgIGdldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Rfc2l6ZSgpLAorCQkJCQkJ CQkJCSAgJnByZXBhcmVfZGF0YSwgTlVMTCwgTlVMTCk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygp OwogfQpAQCAtOTYzLDYgKzEwMTEsMTMgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChT dHJpbmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNo cm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVf ZGF0YS5lbmRfbHNuKTsKIAorCXVwZGF0ZV9hcHBseV9jaGFuZ2Vfc2l6ZShMT0dJQ0FMX1JFUF9N U0dfQ09NTUlUX1BSRVBBUkVELCBOVUxMKTsKKworCXBnc3RhdF9yZXBvcnRfc3Vid29ya2VyX3R3 b3BoYXNlX3hhY3QoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKKwkJCQkJCQkJCQkgIExPR0lD QUxfUkVQX01TR19DT01NSVRfUFJFUEFSRUQsCisJCQkJCQkJCQkJICBnZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF94YWN0X3NpemUoKSwKKwkJCQkJCQkJCQkgIE5VTEwsICZwcmVwYXJlX2RhdGEsIE5V TEwpOworCiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNl dF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KQEAgLTEwMTQsNiArMTA2OSwxMiBAQCBh cHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCS8qIFByb2Nlc3Mg YW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJ cHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24pOwog CisJLyogc2VuZCByb2xsYmFjayBwcmVwYXJlZCBtZXNzYWdlIGZvciB0aGlzIGdpZCAqLworCXBn c3RhdF9yZXBvcnRfc3Vid29ya2VyX3R3b3BoYXNlX3hhY3QoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwKKwkJCQkJCQkJCQkgIExPR0lDQUxfUkVQX01TR19ST0xMQkFDS19QUkVQQVJFRCwKKwkJ CQkJCQkJCQkgIGdldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Rfc2l6ZSgpLAorCQkJCQkJCQkJ CSAgTlVMTCwgTlVMTCwgJnJvbGxiYWNrX2RhdGEpOworCiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0 eShTVEFURV9JRExFLCBOVUxMKTsKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsK IH0KQEAgLTEwMjksNiArMTA5MCw3IEBAIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFt X3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJl cGFyZV9kYXRhOworCVhhY3RTaXplRW50cnkgKnN0cmVhbWVkX2VudHJ5OwogCiAJaWYgKGluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTA2Niw2ICsxMTI4LDE5 IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJLyogUHJvY2Vz cyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8K IAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAorCS8qCisJ ICogUmVwb3J0IHRoZSBwcmVwYXJlZCBzdHJlYW1pbmcgeGFjdCBzaXplIHRvIHRoZSBzdGF0cyBj b2xsZWN0b3IKKwkgKiBpbiBhIHByZXBhcmVkIHhhY3QgbWFubmVyIHRvIG1ha2UgaXQgc3Vydml2 ZSBvdmVyIHRoZSByZXN0YXJ0LgorCSAqLworCXN0cmVhbWVkX2VudHJ5ID0gaGFzaF9zZWFyY2go c3RyZWFtaW5nWGFjdFNpemUsCisJCQkJCQkJCSAodm9pZCAqKSAmcHJlcGFyZV9kYXRhLnhpZCwK KwkJCQkJCQkJIEhBU0hfRklORCwgTlVMTCk7CisJQXNzZXJ0KHN0cmVhbWVkX2VudHJ5KTsKKwlw Z3N0YXRfcmVwb3J0X3N1Yndvcmtlcl90d29waGFzZV94YWN0KE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsCisJCQkJCQkJCQkJICBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1BSRVBBUkUsCisJCQkJ CQkJCQkJICBzdHJlYW1lZF9lbnRyeS0+eGFjdF9zaXplLAorCQkJCQkJCQkJCSAgJnByZXBhcmVf ZGF0YSwgTlVMTCwgTlVMTCk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUs IE5VTEwpOwogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CkBAIC0xMTQzLDYg KzEyMTgsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAkJTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkp OwogCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKIAor CQl1cGRhdGVfYXBwbHlfY2hhbmdlX3NpemUoTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVEFSVCwg TlVMTCk7CisKIAkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAJfQogCkBAIC0xMTkz LDEyICsxMjcwLDE3IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAK IC8qCiAgKiBIYW5kbGUgU1RSRUFNIGFib3J0IG1lc3NhZ2UuCisgKgorICogQ3VycmVudGx5LCBh Ym9ydCBvZiBzdHJlYW1pbmcgc3VidHJhbnNhY3Rpb24gZG9lcyBub3QgYWZmZWN0CisgKiBzaXpl IG9mIHN0cmVhbWluZyB0cmFuc2FjdGlvbiByZXNvdXJjZXMgYmVjYXVzZSBpdCBoYXZlIHVzZWQg dGhlCisgKiByZXNvdXJjZXMgYW55d2F5LgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxl X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiB7CiAJVHJhbnNhY3Rpb25JZCB4aWQ7CiAJVHJh bnNhY3Rpb25JZCBzdWJ4aWQ7CisJWGFjdFNpemVFbnRyeSAqc3RyZWFtZWRfZW50cnk7CiAKIAlp ZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xMjEzLDgg KzEyOTUsMzYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJICov CiAJaWYgKHhpZCA9PSBzdWJ4aWQpCiAJeworCQlib29sCQlmb3VuZCA9IGZhbHNlOwogCQlzZXRf YXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgMCk7CiAJCXN0cmVhbV9jbGVhbnVwX2ZpbGVz KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisKKwkJLyoKKwkJICogV2UndmUgY29t cGxldGVkIHRvIGhhbmRsZSBzdHJlYW0gYWJvcnQgd2l0aG91dCBpc3N1ZSwgc28KKwkJICogZ2V0 IHJlYWR5IHRvIHJlcG9ydCB0aGUgdHJhbnNhY3Rpb24gc3RhdHMgdmlhIG5vcm1hbAorCQkgKiB0 ZXJtaW5hdGlvbiByb3V0ZSBpbnN0ZWFkIG9mIHRoZSBhcHBseSBlcnJvciByb3V0ZS4KKwkJICov CisJCXN0cmVhbWVkX2VudHJ5ID0gaGFzaF9zZWFyY2goc3RyZWFtaW5nWGFjdFNpemUsCisJCQkJ CQkJCQkgKHZvaWQgKikgJnhpZCwKKwkJCQkJCQkJCSBIQVNIX0ZJTkQsICZmb3VuZCk7CisJCS8q CisJCSAqIEl0J3MgcG9zc2libGUgdGhhdCB3ZSBnZXQgc3RyZWFtIGFib3J0CisJCSAqIGVhcmxp ZXIgdGhhbiBhbnkgY2FsbCBvZiB3cml0ZV9zdHJlYW1fY2hhbmdlIHRoYXQKKwkJICogY3JlYXRl cyBvbmUgaGFzaCBlbnRyeSBmb3IgdGhpcyB4aWQuIEluIHRoaXMgY2FzZSwKKwkJICogdG8gZmlu ZCBhIGVudHJ5IHdpdGggdGhpcyB4aWQgZmFpbHMuIFNvIGp1c3QgY2hlY2sKKwkJICogaWYgd2Un dmUgZm91bmQgaXQuIE9ubHkgd2hlbiB3ZSBjb25maXJtIHNvbWUgd3JpdGVzCisJCSAqIGJ5IHdy aXRlX3N0cmVhbV9jaGFuZ2UsIHJlcG9ydCB0aGUgc3RyZWFtX2Fib3J0LgorCQkgKi8KKwkJaWYg KGZvdW5kKQorCQl7CisJCQlwZ3N0YXRfcmVwb3J0X3N1Yndvcmtlcl94YWN0X2VuZChNeUxvZ2lj YWxSZXBXb3JrZXItPnN1YmlkLAorCQkJCQkJCQkJCQkgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkJ IExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQsCisJCQkJCQkJCQkJCSBzdHJlYW1lZF9lbnRy eS0+eGFjdF9zaXplKTsKKwkJCSh2b2lkKSBoYXNoX3NlYXJjaChzdHJlYW1pbmdYYWN0U2l6ZSwK KwkJCQkJCQkgICAodm9pZCAqKSAmeGlkLAorCQkJCQkJCSAgIEhBU0hfUkVNT1ZFLCBOVUxMKTsK KwkJfQogCX0KIAllbHNlCiAJewpAQCAtMTQxNyw2ICsxNTI3LDcgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogewogCVRyYW5zYWN0aW9uSWQgeGlkOwogCUxvZ2lj YWxSZXBDb21taXREYXRhIGNvbW1pdF9kYXRhOworCVhhY3RTaXplRW50cnkgKnN0cmVhbWVkX2Vu dHJ5OwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApA QCAtMTQzOCw2ICsxNTQ5LDE5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0lu Zm8gcykKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVk IGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5k X2xzbik7CiAKKwkvKiBSZXBvcnQgYW5kIGNsZWFuIHVwIHRoZSB4aWQgKi8KKwlzdHJlYW1lZF9l bnRyeSA9IGhhc2hfc2VhcmNoKHN0cmVhbWluZ1hhY3RTaXplLAorCQkJCQkJCQkgKHZvaWQgKikg JnhpZCwKKwkJCQkJCQkJIEhBU0hfRklORCwgTlVMTCk7CisJQXNzZXJ0KHN0cmVhbWVkX2VudHJ5 KTsKKwlwZ3N0YXRfcmVwb3J0X3N1Yndvcmtlcl94YWN0X2VuZChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLAorCQkJCQkJCQkJIEludmFsaWRPaWQsCisJCQkJCQkJCQkgTE9HSUNBTF9SRVBfTVNH X1NUUkVBTV9DT01NSVQsCisJCQkJCQkJCQkgc3RyZWFtZWRfZW50cnktPnhhY3Rfc2l6ZSk7CisJ KHZvaWQpIGhhc2hfc2VhcmNoKHN0cmVhbWluZ1hhY3RTaXplLAorCQkJCQkgICAodm9pZCAqKSAm eGlkLAorCQkJCQkgICBIQVNIX1JFTU9WRSwgTlVMTCk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KCk7CkBAIC0xNTc2LDYgKzE3MDAsOCBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8g cykKIAlzbG90X2ZpbGxfZGVmYXVsdHMocmVsLCBlc3RhdGUsIHJlbW90ZXNsb3QpOwogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJdXBkYXRlX2FwcGx5X2NoYW5nZV9zaXplKExP R0lDQUxfUkVQX01TR19JTlNFUlQsIHJlbCk7CisKIAkvKiBGb3IgYSBwYXJ0aXRpb25lZCB0YWJs ZSwgaW5zZXJ0IHRoZSB0dXBsZSBpbnRvIGEgcGFydGl0aW9uLiAqLwogCWlmIChyZWwtPmxvY2Fs cmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKIAkJYXBw bHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcoZWRhdGEsCkBAIC0xNzMzLDYgKzE4NTksOCBAQCBhcHBs eV9oYW5kbGVfdXBkYXRlKFN0cmluZ0luZm8gcykKIAkJCQkJaGFzX29sZHR1cCA/ICZvbGR0dXAg OiAmbmV3dHVwKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIAorCXVwZGF0ZV9h cHBseV9jaGFuZ2Vfc2l6ZShMT0dJQ0FMX1JFUF9NU0dfVVBEQVRFLCByZWwpOworCiAJLyogRm9y IGEgcGFydGl0aW9uZWQgdGFibGUsIGFwcGx5IHVwZGF0ZSB0byBjb3JyZWN0IHBhcnRpdGlvbi4g Ki8KIAlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEUpCiAJCWFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKGVkYXRhLApAQCAtMTg2 Nyw2ICsxOTk1LDggQEAgYXBwbHlfaGFuZGxlX2RlbGV0ZShTdHJpbmdJbmZvIHMpCiAJc2xvdF9z dG9yZV9kYXRhKHJlbW90ZXNsb3QsIHJlbCwgJm9sZHR1cCk7CiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN0eCk7CiAKKwl1cGRhdGVfYXBwbHlfY2hhbmdlX3NpemUoTE9HSUNBTF9SRVBfTVNH X0RFTEVURSwgcmVsKTsKKwogCS8qIEZvciBhIHBhcnRpdGlvbmVkIHRhYmxlLCBhcHBseSBkZWxl dGUgdG8gY29ycmVjdCBwYXJ0aXRpb24uICovCiAJaWYgKHJlbC0+bG9jYWxyZWwtPnJkX3JlbC0+ cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQogCQlhcHBseV9oYW5kbGVfdHVw bGVfcm91dGluZyhlZGF0YSwKQEAgLTI0MTgsNiArMjU0OCwxMTcgQEAgYXBwbHlfZGlzcGF0Y2go U3RyaW5nSW5mbyBzKQogfQogCiAvKgorICogU3Vic2NyaWJlciBzaWRlIGltcGxlbWVudGF0aW9u IGVxdWl2YWxlbnQgdG8gUmVvcmRlckJ1ZmZlckNoYW5nZVNpemUKKyAqIG9mIHRoZSBwdWJsaXNo ZXIuCisgKgorICogQWNjb3JkaW5nIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIG1lc3NhZ2Ug dHlwZSwgcmVjb3JkIG1ham9yCisgKiByZXNvdXJjZSBjb25zdW1wdGlvbnMgb2YgdGhpcyBzdWJz Y3JpcHRpb24gZm9yIGVhY2ggbWVzc2FnZS4KKyAqIEF0IHByZXNlbnQsIGRvIG5vdCBjb2xsZWN0 IGRhdGEgZnJvbSBnZW5lcmljIGZ1bmN0aW9ucyB0byBrZWVwCisgKiBjb2RlIHNpbXBsaWNpdHks IHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBjb21wbGV4aXR5IHZlcnN1cyBiZW5lZml0CisgKiB0 cmFkZW9mZiBzaG91bGQgbm90IGJlIGdvb2QuIEFsc28sIGFkZCBtdWx0aXBsZSB2YWx1ZXMKKyAq IGF0IG9uY2UgaW4gb3JkZXIgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgdGhpcyBmdW5jdGlvbiBj YWxsLgorICoKKyAqICdkYXRhJyBjb250cm9scyBkZXRhaWwgaGFuZGxpbmcgb2YgZGF0YSBzaXpl IGNhbGN1bGF0aW9uLgorICovCit2b2lkCit1cGRhdGVfYXBwbHlfY2hhbmdlX3NpemUoTG9naWNh bFJlcE1zZ1R5cGUgYWN0aW9uLCB2b2lkICpkYXRhKQoreworCWludDY0ICAgICAgIHNpemUgPSAw OworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsbWFwZW50cnk7CisJTG9naWNhbFJlcFJlbGF0 aW9uICpyZXByZWxhdGlvbjsKKwlpbnQgICAgICAgICAqc3RyZWFtX3dyaXRlX2xlbjsKKworCS8q CisJICogSW4gc3RyZWFtaW5nIG1vZGUsIHN0cmVhbV93cml0ZV9jaGFuZ2UgaXMgY2FsbGVkCisJ ICogaW5zdGVhZCBvZiBpbW1lZGlhdGUgYXBwbHkuIExpc3QgdXAgdGhlIG1lc3NhZ2VzIHR5cGVz CisJICogdGhhdCBjYW4gYmUgY2F1Z2h0IGJ5IGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbiBh bmQKKwkgKiB0cmVhdCB0aGUgd3JpdGUgbGVuZ3RoIGFzIHRoZSBzaXplIG9mIHRyYW5zYWN0aW9u IHNvCisJICogdGhhdCB3ZSBjYW4gZXhwb3J0IGl0IGFzIHBhcnQgb2YgcGdfc3RhdF9zdWJzY3Jp cHRpb25fd29ya2VyLgorCSAqLworCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiAmJgorCQko YWN0aW9uID09IExPR0lDQUxfUkVQX01TR19JTlNFUlQgfHwKKwkJIGFjdGlvbiA9PSBMT0dJQ0FM X1JFUF9NU0dfVVBEQVRFIHx8CisJCSBhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX0RFTEVURSB8 fAorCQkgYWN0aW9uID09IExPR0lDQUxfUkVQX01TR19UUlVOQ0FURSB8fAorCQkgYWN0aW9uID09 IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiB8fAorCQkgYWN0aW9uID09IExPR0lDQUxfUkVQX01T R19UWVBFKSkKKwl7CisJCXN0cmVhbV93cml0ZV9sZW4gPSAoaW50ICopIGRhdGE7CisJCXNpemUg Kz0gKnN0cmVhbV93cml0ZV9sZW47CisJCWFkZF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Rfc2l6 ZShzaXplKTsKKwkJcmV0dXJuOworCX0KKworCXN3aXRjaCAoYWN0aW9uKQorCXsKKwkJLyogTm8g c3BlY2lhbCBtZW1vcnkgY29uc3VtcHRpb24gKi8KKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfQkVH SU46CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0NPTU1JVDoKKwkJY2FzZSBMT0dJQ0FMX1JFUF9N U0dfVFJVTkNBVEU6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1RZUEU6CisJCWNhc2UgTE9HSUNB TF9SRVBfTVNHX09SSUdJTjoKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfTUVTU0FHRToKKwkJY2Fz ZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NU UkVBTV9BQk9SVDoKKwkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfQkVHSU5fUFJFUEFSRToKKwkJCWJy ZWFrOworCisJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX0lOU0VSVDoKKwkJY2FzZSBMT0dJQ0FMX1JF UF9NU0dfVVBEQVRFOgorCQljYXNlIExPR0lDQUxfUkVQX01TR19ERUxFVEU6CisJCQlBc3NlcnQo ZGF0YSAhPSBOVUxMKTsKKworCQkJLyoKKwkJCSAqIENvbXB1dGUgc2l6ZSBiYXNlZCBvbiBBcHBs eUV4ZWN1dGlvbkRhdGEuCisJCQkgKiBUaGUgc2l6ZSBvZiBMb2dpY2FsUmVwUmVsTWFwRW50cnkg Y2FuIGJlIHNraXBwZWQgYmVjYXVzZQorCQkJICogaXQgaXMgb2J0YWluZWQgZnJvbSBoYXNoX3Nl YXJjaCBpbiBsb2dpY2FscmVwX3JlbF9vcGVuLgorCQkJICovCisJCQlzaXplICs9IHNpemVvZihB cHBseUV4ZWN1dGlvbkRhdGEpICsgc2l6ZW9mKEVTdGF0ZSkgKworCQkJCXNpemVvZihSZXN1bHRS ZWxJbmZvKSArIHNpemVvZihSZXN1bHRSZWxJbmZvKTsKKworCQkJLyoKKwkJCSAqIEFkZCBzb21l IGV4dHJhIHNpemUgaWYgdGhlIHRhcmdldCByZWxhdGlvbiBpcyBwYXJ0aXRpb25lZC4KKwkJCSAq IFBhcnRpdGlvblR1cGxlUm91dGluZyBpc24ndCBleHBvcnRlZC4gVGhlcmVmb3JlLCBjYWxsIHRo ZQorCQkJICogZnVuY3Rpb24gdGhhdCByZXR1cm5zIGl0cyBzaXplIGluc3RlYWQuCisJCQkgKi8K KwkJCXJlbG1hcGVudHJ5ID0gKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqKSBkYXRhOworCQkJaWYg KHJlbG1hcGVudHJ5LT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEUpCisJCQkJc2l6ZSArPSBzaXplb2YoTW9kaWZ5VGFibGVTdGF0ZSkgKyBQYXJ0 aXRpb25UdXBsZVJvdXRpbmdTaXplKCk7CisJCQlicmVhazsKKworCQljYXNlIExPR0lDQUxfUkVQ X01TR19SRUxBVElPTjoKKwkJCUFzc2VydChkYXRhICE9IE5VTEwpOworCisJCQlyZXByZWxhdGlv biA9IChMb2dpY2FsUmVwUmVsYXRpb24gKikgZGF0YTsKKwkJCS8qIFNlZSBsb2dpY2FscmVwX3Jl YWRfYXR0cnMgZm9yIHRoZSBsYXN0IHR3byAqLworCQkJc2l6ZSArPSBzaXplb2YoTG9naWNhbFJl cFJlbGF0aW9uKSArCisJCQkJcmVwcmVsYXRpb24tPm5hdHRzICogc2l6ZW9mKGNoYXIgKikgKwor CQkJCXJlcHJlbGF0aW9uLT5uYXR0cyAqIHNpemVvZihPaWQpOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUQVJUOgorCQkJc2l6ZSArPSBzaXplb2YoRmlsZVNl dCk7CisJCQlicmVhazsKKworCQljYXNlIExPR0lDQUxfUkVQX01TR19QUkVQQVJFOgorCQljYXNl IExPR0lDQUxfUkVQX01TR19DT01NSVRfUFJFUEFSRUQ6CisJCWNhc2UgTE9HSUNBTF9SRVBfTVNH X1JPTExCQUNLX1BSRVBBUkVEOgorCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQ09NTUlU OgorCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fUFJFUEFSRToKKwkJCXNpemUgKz0gc2l6 ZW9mKEZsdXNoUG9zaXRpb24pOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJ IGVycm1zZygiaW52YWxpZCBsb2dpY2FsIHJlcGxpY2F0aW9uIG1lc3NhZ2UgdHlwZSBcIiVjXCIi LCBhY3Rpb24pKSk7CisJfQorCisJLyogdXBkYXRlIHRoZSB0b3RhbCBzaXplIG9mIGNvbnN1bXB0 aW9uICovCisJYWRkX2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdF9zaXplKHNpemUpOworfQorCisv KgogICogRmlndXJlIG91dCB3aGljaCB3cml0ZS9mbHVzaCBwb3NpdGlvbnMgdG8gcmVwb3J0IHRv IHRoZSB3YWxzZW5kZXIgcHJvY2Vzcy4KICAqCiAgKiBXZSBjYW4ndCBzaW1wbHkgcmVwb3J0IGJh Y2sgdGhlIGxhc3QgTFNOIHRoZSB3YWxzZW5kZXIgc2VudCB1cyBiZWNhdXNlIHRoZQpAQCAtMzI3 MSw2ICszNTEyLDkgQEAgc3RhdGljIHZvaWQKIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rp b24sIFN0cmluZ0luZm8gcykKIHsKIAlpbnQJCQlsZW47CisJaW50CQkJdG90YWxfbGVuOworCWJv b2wJCWZvdW5kOworCVhhY3RTaXplRW50cnkgKnN0cmVhbWVkX2VudHJ5OwogCiAJQXNzZXJ0KGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3Ry ZWFtX3hpZCkpOwpAQCAtMzI4OSw2ICszNTMzLDE2IEBAIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hh ciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAlsZW4gPSAocy0+bGVuIC0gcy0+Y3Vyc29yKTsKIAog CUJ1ZkZpbGVXcml0ZShzdHJlYW1fZmQsICZzLT5kYXRhW3MtPmN1cnNvcl0sIGxlbik7CisKKwkv KiB1cGRhdGUgeGFjdCBzaXplIGJ5IHhpZCAqLworCXRvdGFsX2xlbiA9IChzLT5sZW4gLSBzLT5j dXJzb3IpICogMiArIHNpemVvZihjaGFyKSArIHNpemVvZihhY3Rpb24pOworCXN0cmVhbWVkX2Vu dHJ5ID0gKFhhY3RTaXplRW50cnkgKikgaGFzaF9zZWFyY2goc3RyZWFtaW5nWGFjdFNpemUsCisJ CQkJCQkJCQkJCQkgICAodm9pZCAqKSAmc3RyZWFtX3hpZCwKKwkJCQkJCQkJCQkJCSAgIEhBU0hf RU5URVIsICZmb3VuZCk7CisJaWYgKCFmb3VuZCkKKwkJc3RyZWFtZWRfZW50cnktPnhhY3Rfc2l6 ZSA9IHRvdGFsX2xlbjsgLyogaW5pdCAqLworCWVsc2UKKwkJc3RyZWFtZWRfZW50cnktPnhhY3Rf c2l6ZSA9IHN0cmVhbWVkX2VudHJ5LT54YWN0X3NpemUgKyB0b3RhbF9sZW47IC8qIHVwZGF0ZSAq LwogfQogCiAvKgpAQCAtMzQyNiw2ICszNjgwLDIzIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBt YWluX2FyZykKIAllbG9nKERFQlVHMSwgImNvbm5lY3RpbmcgdG8gcHVibGlzaGVyIHVzaW5nIGNv bm5lY3Rpb24gc3RyaW5nIFwiJXNcIiIsCiAJCSBNeVN1YnNjcmlwdGlvbi0+Y29ubmluZm8pOwog CisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSBhcHBseSB3b3JrZXIncyBoYXNoIHRvIG1hbmFnZSBi eXRlcyBmb3IKKwkgKiBzdHJlYW1pbmcgdHhucy4KKwkgKi8KKwlpZiAoIWFtX3RhYmxlc3luY193 b3JrZXIoKSAmJiBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtKQorCXsKKwkJSEFTSENUTCAgICAgaGFz aF9jdGw7CisKKwkJaGFzaF9jdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKKwkJ aGFzaF9jdGwuZW50cnlzaXplID0gc2l6ZW9mKFhhY3RTaXplRW50cnkpOworCQloYXNoX2N0bC5o Y3h0ID0gTG9naWNhbFN0cmVhbWluZ0NvbnRleHQ7CisJCXN0cmVhbWluZ1hhY3RTaXplID0gaGFz aF9jcmVhdGUoInhhY3Qgc2l6ZSBwZXIgc3RyZWFtaW5nIHhpZCIsCisJCQkJCQkJCQkJUEFSQUxM RUxfU1RSRUFNSU5HX1hBQ1RTLAorCQkJCQkJCQkJCSZoYXNoX2N0bCwKKwkJCQkJCQkJCQlIQVNI X0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKIAlpZiAoYW1fdGFibGVz eW5jX3dvcmtlcigpKQogCXsKIAkJY2hhcgkgICAqc3luY3Nsb3RuYW1lOwpAQCAtMzYwMSw2ICsz ODcyLDI3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAlwcm9jX2V4aXQoMCk7 CiB9CiAKKy8qIEV4cG9ydGVkIHNvIHRoYXQgc3RhdHMgY29sbGVjdG9yIGNhbiB1dGlsaXplIHRo aXMgdmFsdWUgKi8KK2ludDY0CitnZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUodm9p ZCkKK3sKKwlyZXR1cm4gYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLmJ5dGVzOworfQorCisvKiBB ZGQgc2l6ZSB0byBhcHBseSBlcnJvciBieXRlcyAqLwordm9pZAorYWRkX2FwcGx5X2Vycm9yX2Nv bnRleHRfeGFjdF9zaXplKGludDY0IHNpemUpCit7CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJn LmJ5dGVzICs9IHNpemU7Cit9CisKKy8qIFJlc2V0IGluZm9ybWF0aW9uIG9mIGFwcGx5IGVycm9y IGNhbGxiYWNrICovCit2b2lkCityZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Rfc2l6ZSh2 b2lkKQoreworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5ieXRlcyA9IDA7Cit9CisKIC8qCiAg KiBJcyBjdXJyZW50IHByb2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcj8KICAqLwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwppbmRleCAyNTExZGYxLi45OWIzZTdmIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcGdzdGF0ZnVuY3MuYwpAQCAtMjQwNSw3ICsyNDA1LDcgQEAgcGdfc3Rh dF9nZXRfcmVwbGljYXRpb25fc2xvdChQR19GVU5DVElPTl9BUkdTKQogRGF0dW0KIHBnX3N0YXRf Z2V0X3N1YnNjcmlwdGlvbl93b3JrZXIoUEdfRlVOQ1RJT05fQVJHUykKIHsKLSNkZWZpbmUgUEdf U1RBVF9HRVRfU1VCU0NSSVBUSU9OX1dPUktFUl9DT0xTIDkKKyNkZWZpbmUgUEdfU1RBVF9HRVRf U1VCU0NSSVBUSU9OX1dPUktFUl9DT0xTIDE1CiAJT2lkCQkJc3ViaWQgPSBQR19HRVRBUkdfT0lE KDApOwogCU9pZAkJCXN1YnJlbGlkOwogCVR1cGxlRGVzYwl0dXBkZXNjOwpAQCAtMjQyNSwxOSAr MjQyNSwzMSBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb25fd29ya2VyKFBHX0ZVTkNUSU9OX0FS R1MpCiAJCQkJCSAgIE9JRE9JRCwgLTEsIDApOwogCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNj LCAoQXR0ck51bWJlcikgMiwgInN1YnJlbGlkIiwKIAkJCQkJICAgT0lET0lELCAtMSwgMCk7Ci0J VHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAzLCAicmVsaWQiLAorCVR1 cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMywgInhhY3RfY29tbWl0IiwK KwkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAo QXR0ck51bWJlcikgNCwgInhhY3RfY29tbWl0X2J5dGVzIiwKKwkJCQkJICAgSU5UOE9JRCwgLTEs IDApOworCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgNSwgInhhY3Rf ZXJyb3IiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1 cGRlc2MsIChBdHRyTnVtYmVyKSA2LCAieGFjdF9lcnJvcl9ieXRlcyIsCisJCQkJCSAgIElOVDhP SUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDcs ICJ4YWN0X2Fib3J0IiwKKwkJCQkJICAgSU5UOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0luaXRF bnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgOCwgInhhY3RfYWJvcnRfYnl0ZXMiLAorCQkJCQkg ICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVt YmVyKSA5LCAibGFzdF9lcnJvcl9yZWxpZCIsCiAJCQkJCSAgIE9JRE9JRCwgLTEsIDApOwotCVR1 cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgNCwgImNvbW1hbmQiLAorCVR1 cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMTAsICJsYXN0X2Vycm9yX2Nv bW1hbmQiLAogCQkJCQkgICBURVhUT0lELCAtMSwgMCk7Ci0JVHVwbGVEZXNjSW5pdEVudHJ5KHR1 cGRlc2MsIChBdHRyTnVtYmVyKSA1LCAieGlkIiwKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVz YywgKEF0dHJOdW1iZXIpIDExLCAibGFzdF9lcnJvcl94aWQiLAogCQkJCQkgICBYSURPSUQsIC0x LCAwKTsKLQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDYsICJlcnJv cl9jb3VudCIsCisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxMiwg Imxhc3RfZXJyb3JfY291bnQiLAogCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7Ci0JVHVwbGVEZXNj SW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA3LCAiZXJyb3JfbWVzc2FnZSIsCisJVHVw bGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxMywgImxhc3RfZXJyb3JfbWVz c2FnZSIsCiAJCQkJCSAgIFRFWFRPSUQsIC0xLCAwKTsKLQlUdXBsZURlc2NJbml0RW50cnkodHVw ZGVzYywgKEF0dHJOdW1iZXIpIDgsICJsYXN0X2Vycm9yX3RpbWUiLAorCVR1cGxlRGVzY0luaXRF bnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMTQsICJsYXN0X2Vycm9yX3RpbWUiLAogCQkJCQkg ICBUSU1FU1RBTVBUWk9JRCwgLTEsIDApOwotCVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAo QXR0ck51bWJlcikgOSwgInN0YXRzX3Jlc2V0IiwKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVz YywgKEF0dHJOdW1iZXIpIDE1LCAic3RhdHNfcmVzZXQiLAogCQkJCQkgICBUSU1FU1RBTVBUWk9J RCwgLTEsIDApOwogCUJsZXNzVHVwbGVEZXNjKHR1cGRlc2MpOwogCkBAIC0yNDYyLDI4ICsyNDc0 LDM2IEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl93b3JrZXIoUEdfRlVOQ1RJT05fQVJHUykK IAllbHNlCiAJCW51bGxzW2krK10gPSB0cnVlOwogCi0JLyogcmVsaWQgKi8KKwkvKiB0cmFuc2Fj dGlvbiBzdGF0cyAqLworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh3ZW50cnktPnhhY3Rf Y29tbWl0KTsKKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0RGF0dW0od2VudHJ5LT54YWN0X2NvbW1p dF9ieXRlcyk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+eGFjdF9lcnJv cik7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+eGFjdF9lcnJvcl9ieXRl cyk7CisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+eGFjdF9hYm9ydCk7CisJ dmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+eGFjdF9hYm9ydF9ieXRlcyk7CisK KwkvKiBsYXN0X2Vycm9yX3JlbGlkICovCiAJaWYgKE9pZElzVmFsaWQod2VudHJ5LT5yZWxpZCkp CiAJCXZhbHVlc1tpKytdID0gT2JqZWN0SWRHZXREYXR1bSh3ZW50cnktPnJlbGlkKTsKIAllbHNl CiAJCW51bGxzW2krK10gPSB0cnVlOwogCi0JLyogY29tbWFuZCAqLworCS8qIGxhc3RfZXJyb3Jf Y29tbWFuZCAqLwogCWlmICh3ZW50cnktPmNvbW1hbmQgIT0gMCkKIAkJdmFsdWVzW2krK10gPSBD U3RyaW5nR2V0VGV4dERhdHVtKGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKHdlbnRyeS0+Y29tbWFu ZCkpOwogCWVsc2UKIAkJbnVsbHNbaSsrXSA9IHRydWU7CiAKLQkvKiB4aWQgKi8KKwkvKiBsYXN0 X2Vycm9yX3hpZCAqLwogCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh3ZW50cnktPnhpZCkpCiAJ CXZhbHVlc1tpKytdID0gVHJhbnNhY3Rpb25JZEdldERhdHVtKHdlbnRyeS0+eGlkKTsKIAllbHNl CiAJCW51bGxzW2krK10gPSB0cnVlOwogCi0JLyogZXJyb3JfY291bnQgKi8KKwkvKiBsYXN0X2Vy cm9yX2NvdW50ICovCiAJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHdlbnRyeS0+ZXJyb3Jf Y291bnQpOwogCi0JLyogZXJyb3JfbWVzc2FnZSAqLworCS8qIGxhc3RfZXJyb3JfbWVzc2FnZSAq LwogCXZhbHVlc1tpKytdID0gQ1N0cmluZ0dldFRleHREYXR1bSh3ZW50cnktPmVycm9yX21lc3Nh Z2UpOwogCiAJLyogbGFzdF9lcnJvcl90aW1lICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRl eCBlNmM3YWJiLi5kYjdkMjcwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTUzODksOSAr NTM4OSw5IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl93b3JrZXIn LCBwcm9yb3dzID0+ICcxJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9yZXRzZXQgPT4gJ3Qn LCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKICAgcHJvcmV0dHlwZSA9 PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ29pZCBvaWQnLAotICBwcm9hbGxhcmd0eXBlcyA9 PiAne29pZCxvaWQsb2lkLG9pZCxvaWQsdGV4dCx4aWQsaW50OCx0ZXh0LHRpbWVzdGFtcHR6LHRp bWVzdGFtcHR6fScsCi0gIHByb2FyZ21vZGVzID0+ICd7aSxpLG8sbyxvLG8sbyxvLG8sbyxvfScs Ci0gIHByb2FyZ25hbWVzID0+ICd7c3ViaWQsc3VicmVsaWQsc3ViaWQsc3VicmVsaWQscmVsaWQs Y29tbWFuZCx4aWQsZXJyb3JfY291bnQsZXJyb3JfbWVzc2FnZSxsYXN0X2Vycm9yX3RpbWUsc3Rh dHNfcmVzZXR9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxvaWQsaW50OCxp bnQ4LGludDgsaW50OCxpbnQ4LGludDgsb2lkLHRleHQseGlkLGludDgsdGV4dCx0aW1lc3RhbXB0 eix0aW1lc3RhbXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksaSxvLG8sbyxvLG8sbyxvLG8s byxvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne3N1YmlkLHN1YnJlbGlkLHN1Ymlk LHN1YnJlbGlkLHhhY3RfY29tbWl0LHhhY3RfY29tbWl0X2J5dGVzLHhhY3RfZXJyb3IseGFjdF9l cnJvcl9ieXRlcyx4YWN0X2Fib3J0LHhhY3RfYWJvcnRfYnl0ZXMsbGFzdF9lcnJvcl9yZWxpZCxs YXN0X2Vycm9yX2NvbW1hbmQsbGFzdF9lcnJvcl94aWQsbGFzdF9lcnJvcl9jb3VudCxsYXN0X2Vy cm9yX21lc3NhZ2UsbGFzdF9lcnJvcl90aW1lLHN0YXRzX3Jlc2V0fScsCiAgIHByb3NyYyA9PiAn cGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uX3dvcmtlcicgfSwKIHsgb2lkID0+ICc2MTE4JywgZGVz Y3IgPT4gJ3N0YXRpc3RpY3M6IGluZm9ybWF0aW9uIGFib3V0IHN1YnNjcmlwdGlvbicsCiAgIHBy b25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbicsIHByb3Jvd3MgPT4gJzEwJywgcHJv aXNzdHJpY3QgPT4gJ2YnLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCmluZGV4IDY5 NGUzOGIuLjc3M2U0NmMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKQEAgLTEx MCw2ICsxMTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVuZVN0YXRlCiAJUGFydGl0 aW9uUHJ1bmluZ0RhdGEgKnBhcnRwcnVuZWRhdGFbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsKIH0g UGFydGl0aW9uUHJ1bmVTdGF0ZTsKIAorZXh0ZXJuIHNpemVfdCBQYXJ0aXRpb25UdXBsZVJvdXRp bmdTaXplKHZvaWQpOwogZXh0ZXJuIFBhcnRpdGlvblR1cGxlUm91dGluZyAqRXhlY1NldHVwUGFy dGl0aW9uVHVwbGVSb3V0aW5nKEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkJCQkJCQkJIFJlbGF0 aW9uIHJlbCk7CiBleHRlcm4gUmVzdWx0UmVsSW5mbyAqRXhlY0ZpbmRQYXJ0aXRpb24oTW9kaWZ5 VGFibGVTdGF0ZSAqbXRzdGF0ZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oIGIv c3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggN2EyNmQ2ZC4uYWVmYWY0NSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKQEAgLTg4LDYg Kzg4LDggQEAgdHlwZWRlZiBlbnVtIFN0YXRNc2dUeXBlCiAJUEdTVEFUX01UWVBFX1NVQlNDUklQ VElPTlBVUkdFLAogCVBHU1RBVF9NVFlQRV9TVUJXT1JLRVJFUlJPUiwKIAlQR1NUQVRfTVRZUEVf U1VCV09SS0VSUFVSR0UsCisJUEdTVEFUX01UWVBFX1NVQldPUktFUlhBQ1RFTkQsCisJUEdTVEFU X01UWVBFX1NVQldPUktFUlRXT1BIQVNFWEFDVCwKIH0gU3RhdE1zZ1R5cGU7CiAKIC8qIC0tLS0t LS0tLS0KQEAgLTU5MSw2ICs1OTMsNTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X01zZ1N1Yldv cmtlclB1cmdlCiB9IFBnU3RhdF9Nc2dTdWJXb3JrZXJQdXJnZTsKIAogLyogLS0tLS0tLS0tLQor ICogUGdTdGF0X01zZ1N1YnNjcmlwdGlvblhhY3RFbmQJU2VudCBieSB0aGUgYXBwbHkgd29ya2Vy IG9yIHRoZSB0YWJsZSBzeW5jIHdvcmtlcgorICoJCQkJCQkJCQl0byByZXBvcnQgc3VjY2Vzc2Z1 bCB0cmFuc2FjdGlvbiBlbmRzLgorICogLS0tLS0tLS0tLQorICovCit0eXBlZGVmIHN0cnVjdCBQ Z1N0YXRfTXNnU3ViV29ya2VyWGFjdEVuZAoreworCVBnU3RhdF9Nc2dIZHIgbV9oZHI7CisKKwkv KiBkZXRlcm1pbmUgdGhlIHdvcmtlciBlbnRyeSAqLworCU9pZCAgICAgICAgIG1fc3ViaWQ7CisJ T2lkICAgICAgICAgbV9zdWJyZWxpZDsKKworCS8qCisJICogZGlzdGluZ3Vpc2ggYmV0d2VlbiB0 cmFuc2FjdGlvbiBjb21taXRzIGFuZCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gYWJvcnRzCisJICog dGhhdCBhcmUgaGFuZGxlZCB3aXRob3V0IGVycm9yLgorCSAqLworCUxvZ2ljYWxSZXBNc2dUeXBl IG1fY29tbWFuZDsKKworCS8qIG1lbW9yeSBjb25zdW1wdGlvbiB1c2VkIGJ5IHRyYW5zYWN0aW9u ICovCisJUGdTdGF0X0NvdW50ZXIgbV94YWN0X2J5dGVzOworCit9IFBnU3RhdF9Nc2dTdWJXb3Jr ZXJYYWN0RW5kOworCisvKiAtLS0tLS0tLS0tCisgKiBQZ1N0YXRfTXNnU3ViV29ya2VyVHdvcGhh c2VYYWN0CVNlbnQgYnkgdGhlIGFwcGx5IHdvcmtlciB0byBtYWtlIHNpemUgb2YgcHJlcGFyZWQK KyAqCQkJCQkJCQkJdHhuIHBlcnNpc3RlbnQgb3ZlciB0aGUgc2VydmVyIHJlc3RhcnQgYW5kIG1h a2UgaXQKKyAqCQkJCQkJCQkJdmlzaWJsZSBhZnRlciBjb21taXQgcHJlcGFyZSBvciByb2xsYmFj ayBwcmVwYXJlZC4KKyAqCQkJCQkJCQkJVGhpcyBpcyBzZXBhcmF0ZWQgZnJvbSBQZ1N0YXRfTXNn U3ViV29ya2VyWGFjdEVuZAorICoJCQkJCQkJCQlzbyB0aGF0IHdlIGNhbiByZWR1Y2UgbWVzc2Fn ZSBzaXplIG9mIGdpZCBmb3Igb3RoZXIKKyAqCQkJCQkJCQkJb3BlcmF0aW9ucyAoZS5nLiBub3Jt YWwgQ09NTUlUKSB0aGF0IHNob3VsZCBoYXBwZW4gbW9yZQorICoJCQkJCQkJCQlmcmVxdWVudGx5 IHRoYW4gcHJlcGFyZSBvcGVyYXRpb24gdXN1YWxseS4KKyAqIC0tLS0tLS0tLS0KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgUGdTdGF0X01zZ1N1YldvcmtlclR3b3BoYXNlWGFjdAoreworCVBnU3RhdF9N c2dIZHIgbV9oZHI7CisKKwkvKiBkZXRlcm1pbmUgdGhlIHN1YnNjcmlwdGlvbiAqLworCU9pZCAg ICAgICAgIG1fc3ViaWQ7CisKKwlMb2dpY2FsUmVwTXNnVHlwZSBtX2NvbW1hbmQ7CisJY2hhciAg ICAgICAgIG1fZ2lkW0dJRFNJWkVdOworCWludCAgICAgICAgICBnaWRfbGVuOworCVBnU3RhdF9D b3VudGVyIG1feGFjdF9ieXRlczsKKworfSBQZ1N0YXRfTXNnU3ViV29ya2VyVHdvcGhhc2VYYWN0 OworCisvKiAtLS0tLS0tLS0tCiAgKiBQZ1N0YXRfTXNnU3ViV29ya2VyRXJyb3IJCVNlbnQgYnkg dGhlIGFwcGx5IHdvcmtlciBvciB0aGUgdGFibGUgc3luYyB3b3JrZXIgdG8KICAqCQkJCQkJCQly ZXBvcnQgdGhlIGVycm9yIG9jY3VycmVkIGR1cmluZyBsb2dpY2FsIHJlcGxpY2F0aW9uLgogICog LS0tLS0tLS0tLQpAQCAtNjA5LDYgKzY1OSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfTXNn U3ViV29ya2VyRXJyb3IKIAlPaWQJCQltX3N1YnJlbGlkOwogCiAJLyoKKwkgKiBUcmFuc2FjdGlv biBzdGF0cyBvZiBzdWJzY3JpcHRpb24gbmVlZHMgdG8gYmUgdXBkYXRlZCB3aGVuIGFuCisJICog ZXJyb3Igb2NjdXJzLgorCSAqLworCVBnU3RhdF9Db3VudGVyIG1feGFjdF9lcnJvcl9ieXRlczsK KworCS8qCiAJICogT2lkcyBvZiB0aGUgZGF0YWJhc2UgYW5kIHRoZSB0YWJsZSB0aGF0IHRoZSBy ZXBvcnRlciB3YXMgYWN0dWFsbHkKIAkgKiBwcm9jZXNzaW5nLiBtX3JlbGlkIGNhbiBiZSBJbnZh bGlkT2lkIGlmIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZwogCSAqIHdvcmtlciBhcHBseWluZyBh IG5vbi1kYXRhLW1vZGlmaWNhdGlvbiBtZXNzYWdlIHN1Y2ggYXMgUkVMQVRJT04uCkBAIC04MDMs NiArODU5LDggQEAgdHlwZWRlZiB1bmlvbiBQZ1N0YXRfTXNnCiAJUGdTdGF0X01zZ1N1YnNjcmlw dGlvblB1cmdlIG1zZ19zdWJzY3JpcHRpb25wdXJnZTsKIAlQZ1N0YXRfTXNnU3ViV29ya2VyRXJy b3IgbXNnX3N1YndvcmtlcmVycm9yOwogCVBnU3RhdF9Nc2dTdWJXb3JrZXJQdXJnZSBtc2dfc3Vi d29ya2VycHVyZ2U7CisJUGdTdGF0X01zZ1N1YldvcmtlclhhY3RFbmQgbXNnX3N1Yndvcmtlcnhh Y3RlbmQ7CisJUGdTdGF0X01zZ1N1YldvcmtlclR3b3BoYXNlWGFjdCBtc2dfc3Vid29ya2VydHdv cGhhc2V4YWN0OwogfSBQZ1N0YXRfTXNnOwogCiAKQEAgLTEwMzUsNiArMTA5MywxNiBAQCB0eXBl ZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5CiAJUGdTdGF0X1N0YXRTdWJXb3Jr ZXJLZXkga2V5OwkvKiBoYXNoIGtleSAobXVzdCBiZSBmaXJzdCkgKi8KIAogCS8qCisJICogVHJh bnNhY3Rpb24gc3RhdGlzdGljcyBvZiBzdWJzY3JpcHRpb24gd29ya2VyCisJICovCisJUGdTdGF0 X0NvdW50ZXIgeGFjdF9jb21taXQ7CisJUGdTdGF0X0NvdW50ZXIgeGFjdF9jb21taXRfYnl0ZXM7 CisJUGdTdGF0X0NvdW50ZXIgeGFjdF9lcnJvcjsKKwlQZ1N0YXRfQ291bnRlciB4YWN0X2Vycm9y X2J5dGVzOworCVBnU3RhdF9Db3VudGVyIHhhY3RfYWJvcnQ7CisJUGdTdGF0X0NvdW50ZXIgeGFj dF9hYm9ydF9ieXRlczsKKworCS8qCiAJICogU3Vic2NyaXB0aW9uIHdvcmtlciBlcnJvciBzdGF0 aXN0aWNzIHJlcHJlc2VudGluZyBhbiBlcnJvciB0aGF0CiAJICogb2NjdXJyZWQgZHVyaW5nIGFw cGxpY2F0aW9uIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gb3IgdGhlIGluaXRpYWwgdGFibGUKIAkg KiBzeW5jaHJvbml6YXRpb24uCkBAIC0xMDQ5LDYgKzExMTcsMjIgQEAgdHlwZWRlZiBzdHJ1Y3Qg UGdTdGF0X1N0YXRTdWJXb3JrZXJFbnRyeQogCVRpbWVzdGFtcFR6IHN0YXRfcmVzZXRfdGltZXN0 YW1wOwogfSBQZ1N0YXRfU3RhdFN1YldvcmtlckVudHJ5OwogCisvKiBwcmVwYXJlZCB0cmFuc2Fj dGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRTdWJXb3JrZXJQcmVwYXJlZFhhY3QK K3sKKwlPaWQJCQlzdWJpZDsKKwljaGFyCQlnaWRbR0lEU0laRV07Cit9IFBnU3RhdF9TdGF0U3Vi V29ya2VyUHJlcGFyZWRYYWN0OworCit0eXBlZGVmIHN0cnVjdCBQZ1N0YXRfU3RhdFN1Yldvcmtl clByZXBhcmVkWGFjdFNpemUKK3sKKwlQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBhcmVkWGFjdCBr ZXk7IC8qIGhhc2gga2V5ICovCisKKwlPaWQJCQlzdWJpZDsKKwljaGFyCQlnaWRbR0lEU0laRV07 CisJUGdTdGF0X0NvdW50ZXIgeGFjdF9zaXplOworfSBQZ1N0YXRfU3RhdFN1YldvcmtlclByZXBh cmVkWGFjdFNpemU7CisKIC8qCiAgKiBXb3JraW5nIHN0YXRlIG5lZWRlZCB0byBhY2N1bXVsYXRl IHBlci1mdW5jdGlvbi1jYWxsIHRpbWluZyBzdGF0aXN0aWNzLgogICovCkBAIC0xMTU4LDYgKzEy NDIsMTMgQEAgZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9jaGVja3N1bV9mYWlsdXJlKHZvaWQp OwogZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9yZXBsc2xvdChjb25zdCBQZ1N0YXRfU3RhdFJl cGxTbG90RW50cnkgKnJlcFNsb3RTdGF0KTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfcmVw bHNsb3RfY3JlYXRlKGNvbnN0IGNoYXIgKnNsb3RuYW1lKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9y ZXBvcnRfcmVwbHNsb3RfZHJvcChjb25zdCBjaGFyICpzbG90bmFtZSk7CitleHRlcm4gdm9pZCBw Z3N0YXRfcmVwb3J0X3N1Yndvcmtlcl94YWN0X2VuZChPaWQgc3ViaWQsIE9pZCBzdWJyZWwsCisJ CQkJCQkJCQkJCSBMb2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kLCBQZ1N0YXRfQ291bnRlciB4YWN0 X3NpemUpOworZXh0ZXJuIHZvaWQgcGdzdGF0X3JlcG9ydF9zdWJ3b3JrZXJfdHdvcGhhc2VfeGFj dChPaWQgc3ViaWQsIExvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQsCisJCQkJCQkJCQkJCQkgIFBn U3RhdF9Db3VudGVyIHhhY3Rfc2l6ZSwKKwkJCQkJCQkJCQkJCSAgTG9naWNhbFJlcFByZXBhcmVk VHhuRGF0YSAqcHJlcGFyZWRfZGF0YSwKKwkJCQkJCQkJCQkJCSAgTG9naWNhbFJlcENvbW1pdFBy ZXBhcmVkVHhuRGF0YSAqY29tbWl0X2RhdGEsCisJCQkJCQkJCQkJCQkgIExvZ2ljYWxSZXBSb2xs YmFja1ByZXBhcmVkVHhuRGF0YSAqcm9sbGJhY2tfZGF0YSk7CiBleHRlcm4gdm9pZCBwZ3N0YXRf cmVwb3J0X3N1Yndvcmtlcl9lcnJvcihPaWQgc3ViaWQsIE9pZCBzdWJyZWxpZCwgT2lkIHJlbGlk LAogCQkJCQkJCQkJCSAgTG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZCwKIAkJCQkJCQkJCQkgIFRy YW5zYWN0aW9uSWQgeGlkLCBjb25zdCBjaGFyICplcnJtc2cpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHdvcmtlci5oCmluZGV4IDJhZDYxYTAuLjlhODQ0N2IgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAgLTE2LDQgKzE2LDkgQEAgZXh0ZXJuIHZvaWQg QXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0ZXJuIGJvb2wgSXNMb2dpY2Fs V29ya2VyKHZvaWQpOwogCisvKiBmb3IgdHJhbnNhY3Rpb24gc3RhdHMgKi8KK2V4dGVybiBpbnQ2 NCBnZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUodm9pZCk7CitleHRlcm4gdm9pZCBh ZGRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0X3NpemUoaW50NjQgc2l6ZSk7CitleHRlcm4gdm9p ZCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Rfc2l6ZSh2b2lkKTsKKwogI2VuZGlmCQkJ CQkJCS8qIExPR0lDQUxXT1JLRVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApp bmRleCBmNmIxYmQ2Li5hNWViN2MzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApA QCAtMjA5NywxMSArMjA5NywxNyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9p ZCBBUyBzdWJpZCwKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnN8IFNFTEVDVCB3LnN1Ymlk LAogICAgIHMuc3VibmFtZSwKICAgICB3LnN1YnJlbGlkLAotICAgIHcucmVsaWQsCi0gICAgdy5j b21tYW5kLAotICAgIHcueGlkLAotICAgIHcuZXJyb3JfY291bnQsCi0gICAgdy5lcnJvcl9tZXNz YWdlLAorICAgIHcueGFjdF9jb21taXQsCisgICAgdy54YWN0X2NvbW1pdF9ieXRlcywKKyAgICB3 LnhhY3RfZXJyb3IsCisgICAgdy54YWN0X2Vycm9yX2J5dGVzLAorICAgIHcueGFjdF9hYm9ydCwK KyAgICB3LnhhY3RfYWJvcnRfYnl0ZXMsCisgICAgdy5sYXN0X2Vycm9yX3JlbGlkLAorICAgIHcu bGFzdF9lcnJvcl9jb21tYW5kLAorICAgIHcubGFzdF9lcnJvcl94aWQsCisgICAgdy5sYXN0X2Vy cm9yX2NvdW50LAorICAgIHcubGFzdF9lcnJvcl9tZXNzYWdlLAogICAgIHcubGFzdF9lcnJvcl90 aW1lLAogICAgIHcuc3RhdHNfcmVzZXQKICAgIEZST00gKCBTRUxFQ1QgcGdfc3Vic2NyaXB0aW9u Lm9pZCBBUyBzdWJpZCwKQEAgLTIxMTIsNyArMjExOCw3IEBAIHBnX3N0YXRfc3Vic2NyaXB0aW9u X3dvcmtlcnN8IFNFTEVDVCB3LnN1YmlkLAogICAgICAgICAgICAgcGdfc3Vic2NyaXB0aW9uX3Jl bC5zcnJlbGlkIEFTIHJlbGlkCiAgICAgICAgICAgIEZST00gcGdfc3Vic2NyaXB0aW9uX3JlbAog ICAgICAgICAgIFdIRVJFIChwZ19zdWJzY3JpcHRpb25fcmVsLnNyc3Vic3RhdGUgPD4gJ3InOjoi Y2hhciIpKSBzciwKLSAgICAoTEFURVJBTCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb25fd29ya2Vy KHNyLnN1YmlkLCBzci5yZWxpZCkgdyhzdWJpZCwgc3VicmVsaWQsIHJlbGlkLCBjb21tYW5kLCB4 aWQsIGVycm9yX2NvdW50LCBlcnJvcl9tZXNzYWdlLCBsYXN0X2Vycm9yX3RpbWUsIHN0YXRzX3Jl c2V0KQorICAgIChMQVRFUkFMIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbl93b3JrZXIoc3Iuc3Vi aWQsIHNyLnJlbGlkKSB3KHN1YmlkLCBzdWJyZWxpZCwgeGFjdF9jb21taXQsIHhhY3RfY29tbWl0 X2J5dGVzLCB4YWN0X2Vycm9yLCB4YWN0X2Vycm9yX2J5dGVzLCB4YWN0X2Fib3J0LCB4YWN0X2Fi b3J0X2J5dGVzLCBsYXN0X2Vycm9yX3JlbGlkLCBsYXN0X2Vycm9yX2NvbW1hbmQsIGxhc3RfZXJy b3JfeGlkLCBsYXN0X2Vycm9yX2NvdW50LCBsYXN0X2Vycm9yX21lc3NhZ2UsIGxhc3RfZXJyb3Jf dGltZSwgc3RhdHNfcmVzZXQpCiAgICAgIEpPSU4gcGdfc3Vic2NyaXB0aW9uIHMgT04gKCh3LnN1 YmlkID0gcy5vaWQpKSk7CiBwZ19zdGF0X3N5c19pbmRleGVzfCBTRUxFQ1QgcGdfc3RhdF9hbGxf aW5kZXhlcy5yZWxpZCwKICAgICBwZ19zdGF0X2FsbF9pbmRleGVzLmluZGV4cmVsaWQsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfZXJyb3JfcmVwb3J0LnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI2X2Vycm9yX3JlcG9ydC5wbAppbmRleCAzZDIzYmI1Li45 ZmY2MTllIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfZXJyb3JfcmVw b3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9lcnJvcl9yZXBvcnQucGwK QEAgLTE1LDggKzE1LDggQEAgc3ViIHRlc3Rfc3Vic2NyaXB0aW9uX2Vycm9yCiAKICAgICBteSAk Y2hlY2tfc3FsID0gcXFbCiBTRUxFQ1QgY291bnQoMSkgPiAwIEZST00gcGdfc3RhdF9zdWJzY3Jp cHRpb25fd29ya2VycwotV0hFUkUgcmVsaWQgPSAnJHJlbG5hbWUnOjpyZWdjbGFzc107Ci0gICAg JGNoZWNrX3NxbCAuPSAiIEFORCB4aWQgPSAnJHhpZCc6OnhpZDsiIGlmICR4aWQgbmUgJyc7CitX SEVSRSBsYXN0X2Vycm9yX3JlbGlkID0gJyRyZWxuYW1lJzo6cmVnY2xhc3NdOworICAgICRjaGVj a19zcWwgLj0gIiBBTkQgbGFzdF9lcnJvcl94aWQgPSAnJHhpZCc6OnhpZDsiIGlmICR4aWQgbmUg Jyc7CiAKICAgICAjIFdhaXQgZm9yIHRoZSBlcnJvciBzdGF0aXN0aWNzIHRvIGJlIHVwZGF0ZWQu CiAgICAgJG5vZGUtPnBvbGxfcXVlcnlfdW50aWwoCkBAIC0yNiw5ICsyNiw5IEBAIFdIRVJFIHJl bGlkID0gJyRyZWxuYW1lJzo6cmVnY2xhc3NdOwogICAgIG15ICRyZXN1bHQgPSAkbm9kZS0+c2Fm ZV9wc3FsKAogCSdwb3N0Z3JlcycsCiAJcXFbCi1TRUxFQ1Qgc3VibmFtZSwgY29tbWFuZCwgcmVs aWQ6OnJlZ2NsYXNzLCBlcnJvcl9jb3VudCA+IDAKK1NFTEVDVCBzdWJuYW1lLCBsYXN0X2Vycm9y X2NvbW1hbmQsIGxhc3RfZXJyb3JfcmVsaWQ6OnJlZ2NsYXNzLCBsYXN0X2Vycm9yX2NvdW50ID4g MAogRlJPTSBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzCi1XSEVSRSByZWxpZCA9ICckcmVs bmFtZSc6OnJlZ2NsYXNzOworV0hFUkUgbGFzdF9lcnJvcl9yZWxpZCA9ICckcmVsbmFtZSc6OnJl Z2NsYXNzOwogXSk7CiAgICAgaXMoJHJlc3VsdCwgJGV4cGVjdGVkX2Vycm9yLCAkbXNnKTsKIH0K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN193b3JrZXJfeGFjdF9zdGF0 cy5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyN193b3JrZXJfeGFjdF9zdGF0cy5wbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjNmMTQwCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDI3X3dvcmtlcl94YWN0X3N0YXRzLnBsCkBA IC0wLDAgKzEsMTc0IEBACisKKyMgQ29weXJpZ2h0IChjKSAyMDIxLCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3RzIGZvciBzdWJzY3JpcHRpb24gd29ya2VyIHN0 YXRpc3RpY3MgZHVyaW5nIGFwcGx5LgordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwor dXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gMzsKKworIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKK215 ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlz aGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNh bCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXFb Citsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtID0gNjRrQgorbWF4X3ByZXBhcmVkX3RyYW5zYWN0 aW9ucyA9IDEwCittYXhfd2FsX3NlbmRlcnMgPSAxMAord2FsX3NlbmRlcl90aW1lb3V0ID0gMAor XSk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUK K215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1 YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmliZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAn bG9naWNhbCcpOworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsIHFxWworbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyA9IDEwCitdKTsKKyRub2RlX3N1YnNj cmliZXItPnN0YXJ0OworCisjIFNldHVwIHN0cnVjdHVyZXMgb24gdGhlIHB1Ymxpc2hlciBhbmQg dGhlIHN1YnNjcmliZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiIChhIGludCBwcmltYXJ5 IGtleSk7Iik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkgJHB1Ymxpc2hlcl9j b25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOwor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisKK215ICRhcHBuYW1lID0gJ3RhcF9z dWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxWworQ1JFQVRF IFNVQlNDUklQVElPTiB0YXBfc3ViCitDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBw bGljYXRpb25fbmFtZT0kYXBwbmFtZScKK1BVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFt aW5nID0gb24sIHR3b19waGFzZSA9IG9uLCBjb3B5X2RhdGEgPSBvZmYpOworXSk7CisKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlcmUncyBubyBl bnRyeSBhdCB0aGUgYmVnaW5uaW5nCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisiU0VMRUNUIGNvdW50KCopIEZST00gcGdfc3RhdF9zdWJzY3Jp cHRpb25fd29ya2VyczsiKTsKK2lzKCRyZXN1bHQsICcwJywgJ25vIGVudHJ5IGZvciB0cmFuc2Fj dGlvbiBzdGF0cyB5ZXQnKTsKKworIyBDT01NSVQKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisgICAgIkJFR0lOOyBJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDEp OyBDT01NSVQ7Iik7CisKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3Rn cmVzJywKKyJTRUxFQ1QgY291bnQoMSkgPSAxIEZST00gcGdfc3RhdF9zdWJzY3JpcHRpb25fd29y a2VycyB3aGVyZSB4YWN0X2NvbW1pdCA9IDE7IikKKyAgb3IgZGllICJkaWRuJ3QgZ2V0IHVwZGF0 ZXMgb2YgeGFjdCBzdGF0cyBieSBjb21taXQiOworCisjIE5vdywgc3RhdHMgY29sbGVjdG9yIG1h a2UgdGhlIGJ5dGVzIHVwZGF0ZWQgYWxzby4KKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKyJTRUxFQ1QgeGFjdF9jb21taXRfYnl0ZXMgPiAwIEZST00g cGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2VyczsiKTsKK2lzKCRyZXN1bHQsICd0JywgJ2dvdCBj b25zdW1lZCBieXRlcycpOworCisjIFNUUkVBTSBDT01NSVQKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorICAgICdwb3N0Z3JlcycsCisgICAgIkJFR0lOOyBJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIwMDApKTsgQ09NTUlUOyIpOworJHJlc3Vs dCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisiU0VMRUNUIHN0cmVh bV9jb3VudCA+IDAgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uX3Nsb3RzOyIpOworaXMoJHJlc3Vs dCwgJ3QnLCAiY29uZmlybSB0aGUgc3RyZWFtaW5nIGhhcyBoYXBwZW5lZC4iKTsKKyRub2RlX3N1 YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKyJTRUxFQ1QgY291bnQoMSkg PSAxIEZST00gcGdfc3RhdF9zdWJzY3JpcHRpb25fd29ya2VycyB3aGVyZSB4YWN0X2NvbW1pdCA9 IDI7IikKKyAgb3IgZGllICJkaWRuJ3QgZ2V0IHVwZGF0ZXMgb2YgeGFjdCBzdGF0cyBieSBzdHJl YW0gY29tbWl0IjsKKworIyBTVFJFQU0gUFJFUEFSRSAmIENPTU1JVCBQUkVQQVJFRAorIyBUaGlz IHNob3VsZCByZXN0b3JlIHRoZSB4YWN0IHNpemUgYmVmb3JlIHRoZSBzaHV0ZG93bi4KKyRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorICAgICdwb3N0Z3JlcycsIHFbCitCRUdJTjsKK0lOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyhnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMzAwMCkpOworUFJF UEFSRSBUUkFOU0FDVElPTiAnZ2lkMSc7CitdKTsKKworIyBUaGlzIHN0cmVhbWVkIHByZXBhcmUg aXMgbm90IGRpc3BsYXllZCB1bnRpbCB0aGUgY29tbWl0IHByZXBhcmVkCisjIG9yIHJvbGxiYWNr IHByZXBhcmVkLiBIZW5jZSwgdGhlcmUncyBubyB3YXkgdG8gY29uZmlybSB0aGF0CisjIHN0YXRz IGNvbGxlY3RvciBoYXMgcmVjZWl2ZWQgdGhlIGJ5dGVzIG9mIHByZXBhcmVkIHRyYW5zYWN0aW9u LgorIyBTbywgaW5zdGVhZCBvZiBjaGVja2luZyB0aGUgdmlldywgaXNzdWUgb25lIG1vcmUgY29t bWl0dGVkIHRyYW5zYWN0aW9uCisjIGFmdGVyIHRoZSBwcmVwYXJlIGFuZCBtYWtlIHN1cmUgdGhh dCB0aGlzIGNvbW1pdCdzIHVwZGF0ZSBpcyBkb25lLAorIyB3aGljaCBzaG91bGQgbWVhbiB0aGUg cHJldmlvdXMgc3RyZWFtZWQgcHJlcGFyZSBpcyBhbHJlYWR5IHByb2Nlc3NlZAorIyBieSB0aGUg c3RhdHMgY29sbGVjdG9yIGFzIHdlbGwuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorIkJFR0lOOyBJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIpOyBDT01NSVQ7 Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisiU0VM RUNUIGNvdW50KDEpID0gMSBGUk9NIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgd2hlcmUg eGFjdF9jb21taXQgPSAzOyIpCisgIG9yIGRpZSAiZGlkbid0IHByb2Nlc3MgdGhlIHVwZGF0ZXMg b2YgY29tbWl0dGVkIHRyYW5zYWN0aW9uIjsKKworJG5vZGVfc3Vic2NyaWJlci0+cmVzdGFydDsK KworIyBHZXQgeGFjdF9jb21taXRfYnl0ZXMgYmVmb3JlIGNvbW1pdCBwcmVwYXJlZC4KK215ICR0 bXAgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyJTRUxFQ1QgeGFj dF9jb21taXRfYnl0ZXMgRlJPTSBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzIHdoZXJlIHhh Y3RfY29tbWl0ID0gMzsiKTsKKworIyBDb21taXQgcHJlcGFyZWQgaW5jcmVtZW50cyB0aGUgeGFj dF9jb21taXQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlU IFBSRVBBUkVEICdnaWQxJyIpOworJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgn cG9zdGdyZXMnLAorIlNFTEVDVCBjb3VudCgxKSA9IDEgRlJPTSBwZ19zdGF0X3N1YnNjcmlwdGlv bl93b3JrZXJzIHdoZXJlIHhhY3RfY29tbWl0ID0gNDsiKQorICBvciBkaWUgImRpZG4ndCBnZXQg dXBkYXRlcyBvZiB4YWN0IHN0YXRzIGJ5IHN0cmVhbSBwcmVwYXJlIGFuZCBjb21taXQgcHJlcGFy ZWQiOworCiskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisi U0VMRUNUIHhhY3RfY29tbWl0X2J5dGVzID4gJHRtcCBGUk9NIHBnX3N0YXRfc3Vic2NyaXB0aW9u X3dvcmtlcnMgd2hlcmUgeGFjdF9jb21taXQgPSA0OyIpOworCisjIFNUUkVBTSBBQk9SVAorIyBT dG9yZSBwcmV2aW91cyBzdHJlYW1fY291bnRzIHRvIHJlY29nbml6ZQorIyBhbm90aGVyIHN0cmVh bWluZyBmcm9tIHRoZSBpbmNyZWFzZSBvZiB0aGlzIHZhbHVlIGJlbG93LgorJHRtcCA9ICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisiU0VMRUNUIHN0cmVhbV9jb3VudCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb25fc2xvdHMiKTsKKworIyBDYXVzZSBhIG5ldyBzdHJlYW1p bmcgYW5kIGNoZWNrIGl0IGJ5IGFub3RoZXIgc2Vzc2lvbgorbXkgJGluID0gJyc7CitteSAkb3V0 ID0gJyc7CitteSAkdGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgxODApOworbXkgJGggPSAkbm9k ZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRp bWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMSk7CisKKyRpbiAuPSBxeworQkVHSU47CitJTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMoZ2VuZXJhdGVfc2VyaWVzKDMwMDEsIDQwMDApKTsKK307Cisk aC0+cHVtcF9uYjsKKworIyBXYWl0IHVudGlsIHRoaXMgdHJhbnNhY3Rpb24gaXMgc3RyZWFtZWQg Y2VydGFpbmx5CisjIGFuZCBhZnRlciB0aGF0IHJvbGxiYWNrIHRvIHNlbmQgc3RyZWFtIGFib3J0 LgorJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisiU0VMRUNU IHN0cmVhbV9jb3VudCA+ICR0bXAgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uX3Nsb3RzOyIpCisg IG9yIGRpZSAiZGlkbid0IHN0cmVhbSBkYXRhIG9mIGEgbmV3IHRyYW5zYWN0aW9uIjsKKworJGlu IC49IHF7CitST0xMQkFDSzsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorIlNFTEVDVCBjb3VudCgxKSA9IDEgRlJP TSBwZ19zdGF0X3N1YnNjcmlwdGlvbl93b3JrZXJzIHdoZXJlIHhhY3RfYWJvcnQgPSAxOyIpCisg IG9yIGRpZSAiZGlkbid0IGdldCB1cGRhdGVzIG9mIHhhY3Qgc3RhdHMgYnkgc3RyZWFtIGFib3J0 IjsKKworIyBST0xMQkFDSyBQUkVQQVJFRAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcVsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzKTsKK1BS RVBBUkUgVFJBTlNBQ1RJT04gJ2dpZDInOworXSk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiUk9MTEJBQ0sgUFJFUEFSRUQgJ2dpZDInIik7Ciskbm9kZV9zdWJzY3Jp YmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisiU0VMRUNUIGNvdW50KDEpID0gMSBG Uk9NIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgd2hlcmUgeGFjdF9hYm9ydCA9IDI7IikK KyAgb3IgZGllICJkaWRuJ3QgZ2V0IHVwZGF0ZXMgb2YgeGFjdCBzdGF0cyBieSByb2xsYmFjayBw cmVwYXJlZCI7CisKKyMgZXJyb3Igc3RhdHMgKGJ5IGR1cGxpY2F0aW9uIGVycm9yKQorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcVsKK0JFR0lOOworSU5TRVJUIElOVE8g dGVzdF90YWIgVkFMVUVTICgxKTsKK0NPTU1JVDsKK10pOworCiskbm9kZV9zdWJzY3JpYmVyLT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisiU0VMRUNUIGNvdW50KDEpID0gMSBGUk9NIHBn X3N0YXRfc3Vic2NyaXB0aW9uX3dvcmtlcnMgd2hlcmUgeGFjdF9lcnJvciA+IDA7IikKKyAgb3Ig ZGllICJkaWRuJ3QgZ2V0IHVwZGF0ZXMgb2YgeGFjdCBzdGF0cyBieSBlcnJvciI7CisKKyRub2Rl X3N1YnNjcmliZXItPnN0b3AoJ2Zhc3QnKTsKKyRub2RlX3B1Ymxpc2hlci0+c3RvcCgnZmFzdCcp Owo= --_002_OSBPR01MB48880D8D2966FE8711F5BBB0ED8A9OSBPR01MB4888jpnp_--