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 1pA1yl-0003cy-V7 for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Dec 2022 04:54:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pA1yj-0007cX-31 for pgsql-hackers@arkaria.postgresql.org; Tue, 27 Dec 2022 04:54:17 +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 1pA1yi-0007cN-7n for pgsql-hackers@lists.postgresql.org; Tue, 27 Dec 2022 04:54:16 +0000 Received: from esa4.fujitsucc.c3s2.iphmx.com ([68.232.151.214]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pA1yd-0002Ad-GZ for pgsql-hackers@lists.postgresql.org; Tue, 27 Dec 2022 04:54:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1672116852; x=1703652852; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=RTtgIf3n33U9y6j4ETKD7av9GzWj/bxokpVIXFvxzlY=; b=IZ/TFkDu2UoqsC0iF7fIEhIAHwDU/k1g3xpwzHwdza01T2iDxv0c7vS9 sZ6wzlhaxmQHHMmLYgySpKCz5RB985iOKzULibb7GEZtgWEorSAdX99eh zmEkyxmNuBsDIwiHrsoaU25Rh8Y7TFGjSoFDy2K89OV1THlEW7Aaqs5qI AflJ0zZIe7aJLTE+7ni15yheJjFRvS8Nr/HhcrJSWn1Xmeo+6qcK7fEZo 6eFvsH6ZDy07bNCq10V7AOf25WHXwgWFo6FgT1BT1h6j+e7DGQZZeXfm1 jeMIjOMBKTydvGoGjqJzZo01EroExMhg4q+rOlzXiiYh6cYLXDRnGVYOV g==; X-IronPort-AV: E=McAfee;i="6500,9779,10572"; a="81206159" X-IronPort-AV: E=Sophos;i="5.96,277,1665414000"; d="scan'208,223";a="81206159" Received: from mail-tycjpn01lp2177.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.177]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Dec 2022 13:54:07 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iIBgfFyIZtrnxMM+NEOEAKEPNtjfaRbLbgBEyBzpiYLtcEb+99Tm03I26Aw+HEYPazpzsjGcdGiyXwukExADhUApPKfHfx95MxnaV2JX1x13N681PfWCvz0L7WwLQRnDgpB4+TakZoLok4BTARZBugSPrD1kOmQ7Z+D6hSzRr963zLJ6+6vrQh07dJfzf3UkPfioqUGE4UnXha0atOAlRCG1U8LOGB6b/Rg2m8QbOPaD97aBKb8p37YfWLeVPYdcOTeVGIGEKH27sK3ZN1TTaqOSjSrapmvaLK23RD+u7LpUFFVRhygQ/fXvig+G4e2+qx39RCG3mKRLWucyX8kp+Q== 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=w+G75xsRqPC5wnGW5crGRN5fokEmzG+FJuwpP6DicTQ=; b=MYXamiJMl4E3dO/ziaQl8iS41FVENIlDQWOSTmp1XLyy48OH4wEejNrs5mY0cky7cCw+AiQeePdUUcSYV7VJaF2ipuu20J3B1UvauZ25avMtcB6iZBB0rJXVEm6bwFj8DIWmMr32ndhD2WKB4Jkg3tEYpkV6liy4fW5M/jJFD8GqtILN5PQIC9KlP53h3N6ua8dYgGZx3aMQUYBpPC6SkXQ7I0jRkAdRfl+59Oj38DYAz0fVtH1a7MqG5tpbJJ9uzvuj6M+mYdD6FZR9yl5O7vmR5vjR9kIKniVYYNiDDBJNQEVcaqPkYhms4VHChPKy39vdQg8YwIWtjsFCqyBvsw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by OS3PR01MB8146.jpnprd01.prod.outlook.com (2603:1096:604:174::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5944.16; Tue, 27 Dec 2022 04:54:02 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::212c:b8ab:a55a:2c69]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::212c:b8ab:a55a:2c69%9]) with mapi id 15.20.5944.016; Tue, 27 Dec 2022 04:54:02 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila , "houzj.fnst@fujitsu.com" CC: Peter Smith , Masahiko Sawada , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHZD4glaZYxcS7PWkmy2G012OfTrq5uS4SAgAHPyoCAACQbgIAAHfaAgAGmKgCAAB5KAIADDzOAgAFWGwCAABIHgIAA+NgAgABKNQCAAf/xAIABKiIAgAA6H4CABGPrgIAAfUiAgAEdO9A= Date: Tue, 27 Dec 2022 04:54:02 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9YjVmYzQ1ZGYtNDkyZC00ZjZhLWIyMjUtYTViMTQ5ZDll?= =?utf-8?B?YmUyO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0xMi0yN1QwNDo1MTo1N1o7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS3PR01MB6275:EE_|OS3PR01MB8146:EE_ x-ms-office365-filtering-correlation-id: 3ceeb46b-c1a2-4838-2df7-08dae7c66001 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: FYkaH3HQKPkgaJWbjPkGfMDFue+iAvJsvdxu0TYjLWfh0kbRgQHT/IcX3u5M7XtM9m1AWuDMXItfcFpeByjaCmrorHj3kVHsaYVtpS0t2EkKUGxyjVX2+QZrrkFVC0DHChFeVPTx9qj8rbPpQjInVEdfzwhBG2ZFUUJhkQ9OyPFi2vebKeb7M+Tm2IOIBOz7CbvzEf/rs6xB3bca5qxfmiAGdd9qHmsFNsPvQP4khSEC2kq453mrPvjh1MX2k3ouHBpHq+bgjO8XwCmMNbNSdDTKfPL3lLXPVK0MLyB5wXMeHgIJEXL4i1X9JG/NIVbFuUg6UDLFPSn+5Jsyiwe3BXLxhvujcEyLfK2ku2SE+Rs7w56yfqulXSPFXAqFhI608M+VRlGE8TxK+UdNRP2rPAH2xDOi7D2go7W2Ydfwa6ggmFyQ7lXADdtOiV7zR9D0zyq5neMZ/vLn9HuJpiEAUuolFN06d4Xauu3N/k3vwm6pUIcA7WEkTAwicEbvOzgIkbbBLTN8+NjWjNFJgr/9ut/r1h6omgLWR9HpgYHjJ0UMCHGgsjdgR3SVuLfWTbuNlx4uVqvxjRdJG0za+KuPtFhdlDM0vysdCvCbyC8+mfD2Rr1Z7GPoeySiEQWIRuvBSjPX692Um1JETdVYs5RAmT3R5yAyyDiZZS1gf07DYFOnQexHrHT0d68nYuLTe0IXRAyqzHzHwL44Iou401qI7ILXmFqcdD3CZlBQ2/e8a1AAkTc0Ca34hjzTzeoIy6Doc30NheGB9r1HRqt6v9nIBtE7zmhtBW1HevOqIZ1tKK4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(346002)(39860400002)(136003)(396003)(376002)(1590799012)(451199015)(122000001)(99936003)(1580799009)(85182001)(8936002)(55016003)(41300700001)(5660300002)(52536014)(4326008)(8676002)(64756008)(76116006)(66946007)(66476007)(66446008)(66556008)(86362001)(2906002)(33656002)(6636002)(54906003)(38070700005)(6506007)(7696005)(110136005)(82960400001)(316002)(71200400001)(38100700002)(966005)(478600001)(83380400001)(186003)(26005)(53546011)(9686003)(60764002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?enRiKzBVdVc5dVk3TmtRUy9kQTZpMGorNnY2bVNwUlJmb0pORkdtaWVnZmpL?= =?utf-8?B?bVRlaURUUnR3OGlDZU85SXUrSFZ2OHl2YVd5K09KTWhBKzJadlMvdDBpRENj?= =?utf-8?B?YllMRWJnOXJ1clprcWRrOFVyVDJCakYxREovT0JFTlpXSmJOUFB3cEcxQUlu?= =?utf-8?B?ZjhVbVYyZGVRTXByeFB5Zm9ueXIra1Y5dk5UM1krN3IzOXFIa2ZyVEp5TWVk?= =?utf-8?B?WTdMUnBYRmdwK25sb2MrY0Q0R0FZYmJRVHVjdXVZRmFGVjErSEZqOVdzYU1X?= =?utf-8?B?Vkw2bnNNK0FVU1NPYVpzL09NQXJ4UTNTRDF6bXkzbHhZc1NzQllLUExtejdx?= =?utf-8?B?SDZSVjM5dllRcSttNlRYU2cwRHdxZFZ4ODl1YjNIMm1lbnA2dUpGdmRVYlA5?= =?utf-8?B?Kzdmbk85WEtWbmxHR1IvckI4VUNVTUp6ZHIzVEI0MHlzZnVua3pkMUljYmlU?= =?utf-8?B?T3I2a2YzZVQ2bnMwdUhxWGJWUVNsL3RsVU0zMEluRjU5c0pEUjJ3QVBkL3R6?= =?utf-8?B?UGZmN3hUTk5DWlRCemYzTm9uRkllTkFsb3Y1L2tKdHljKzM1SjQ4R1oySExa?= =?utf-8?B?VUNPNDRJb2RQWXBtS25aTlFyQUI4bzFlWVd6Z0dYL3pkL1Z4VThua2RveTVl?= =?utf-8?B?K0psTEJ0NG43V3hMZGU5U3poOENUaHl5b0VoUmtlbEVXdmN1VnJTaGxmRkJW?= =?utf-8?B?WXZhaG5INkU5YUJxd1BzZ25TNDFFV1ZOdW1NUFNCaWtPMXZDSi9mZytydTB4?= =?utf-8?B?UnNvYnZLS3F1NmdLSnQxbzgreVN2ekFBTjBiLzB5ZUNEb3g0eVNhU0ppV3pV?= =?utf-8?B?MitzcDVYWDZ1RCtmTW1TeXJlcG9YempqcjByblVNSXV3TklNVW5HT1NyenFs?= =?utf-8?B?MHM0K0MzVTNVdFB3TWlxd2pzRHJBYUEwdUQ0b0tkSVdwUCtMWjhuK1A2dXNl?= =?utf-8?B?OHM2Y3h4ZGhOdjBpdU5VTVU0alBZcVRhdDkwWXVqL0FFWXEvMG5rNkNLVFFt?= =?utf-8?B?WE5sY0tsTUZOdTZwSVR1NERjUG9WZ3lSWXVjOFMrdW1qQTVEaTNsM2FVNXpo?= =?utf-8?B?L0hsWGswN0d3TU5HaWNveitXR1JQUzNQR08rbjdRVVMwZ2xFdFlHTGxGVGty?= =?utf-8?B?VGxGTXBZcHpTNmYvZzNoMmZFbnpkNndzWFFlaS9Mc2tsV01BMmFSTlJtNktt?= =?utf-8?B?d3JTcS8xekxEaHpTNXNNUFlmU2hKallTdVE4Qyt2NTQyTmxzNWJaKzVQSjVZ?= =?utf-8?B?bVZ0bGZhYUtQOHZ2Nk5La2l5NDR5NGtCNGoyRGYybWJMVXBsOGJJWlBzT1ND?= =?utf-8?B?aENvRDdoS2xiRHdvandvMm1pWXZrM2dCU0JtS3U4OTErWkwvTUVwMTJrZXhH?= =?utf-8?B?MGVTOFdyajZzTEk3bUFKVjBGUktEUzF4YmdVME0zM3djdmExMXl1OGxJd0Rr?= =?utf-8?B?OUErR292eTRrVjVETzJzMEJJclBTczhyM0Q0NEdNK01uUytKaVNBTTFZSTFr?= =?utf-8?B?U1dENWRvOWEwZmhjVnNnWDZFNXRRQWRIUEpJQUZVM21FeFF6czNUQk5jWHJJ?= =?utf-8?B?Tk1KUTBJUlYrSUVYdHhPVnYycnZXN2ZKMWhhSGE5UmZVcWNWSWJ5ck9CR1JC?= =?utf-8?B?SDB6SXJaL3puckhjbUE0Z1MyU0ZnS203bndWWGk4OE9EUEpyazVaeWFCWHdv?= =?utf-8?B?QTlUVVhhSmpwZVJ2b25YNXpoSTltT2NZZnRPeVdkZzZxekZoU1RxVHo2QTFV?= =?utf-8?B?NEU3SEliL050dlZYQ21hOHJncnNPTW9jbGJUN3R2TTlibEIvS0EzcDByTXZJ?= =?utf-8?B?RzFYYkNmNU84MExPL0cxVjJUZTM0WkUxMEowdlFOcHJ4aHpZUnZGQ1lTZkRu?= =?utf-8?B?bXlUcnhRM1pzcEFHb3I3MXpKb3JpcjhGZ0xaWThwYkNqWVRXc2Y3V1BCYjhT?= =?utf-8?B?SmxWR0E5Y0hiUmYyYzd1S2FTREFQRVVka3E4cC9oVUt2ekpvcGRoNHVPN1FP?= =?utf-8?B?WVlYOHlERGh1aXFwWlNmR1ZkWlFXOFRTcmZ0M2gzZ09qcjdObkVieU50SGxr?= =?utf-8?B?Y3IrZXFuVmZ4RlVqNlZhKzBQQmNvZ0pyOXAvNVRzaloyZ2RQZTNQK1BNWEZD?= =?utf-8?Q?J6sCUHnFsgiPJpTUo7LsFejux?= Content-Type: multipart/mixed; boundary="_007_OS3PR01MB6275B61076717E4CE9E079D19EED9OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3ceeb46b-c1a2-4838-2df7-08dae7c66001 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Dec 2022 04:54:02.5951 (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: mwOl/FU6ntD7nKoapinQQ0GgvyKmoAJZrJIUwegblkZP7nollOuACYUFD17s5czuGU7K2egQBWYCg4slJPPw7w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3PR01MB8146 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_007_OS3PR01MB6275B61076717E4CE9E079D19EED9OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gTW9uLCBEZWMgMjYsIDIwMjIgMTk6NTEgUE0gQW1pdCBLYXBpbGEgPGFtaXQua2FwaWxhMTZA Z21haWwuY29tPiB3cm90ZToNCj4gRmV3IGNvbW1lbnRzIG9uIDAwMDIgYW5kIDAwMDEgcGF0Y2hl cw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KVGhhbmtzIGZvciB5b3Vy IGNvbW1lbnRzLg0KDQo+IDEuDQo+ICsgICAgaWYgKCRpc19wYXJhbGxlbCkNCj4gKyAgICB7DQo+ ICsgICAgICAgICRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LA0KPiArICAgICAgICAgICAgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsNCj4gKyAgICAg ICAgJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOw0KPiArICAgIH0NCj4gKw0KPiArICAgICMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLg0KPiArICAgICRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOw0KPiArDQo+ICsgICAgJGluIC49IHF7DQo+ICsgICAg QkVHSU47DQo+ICsgICAgSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NDQo+IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOw0KPiANCj4gSG93IGNhbiB3 ZSBndWFyYW50ZWUgdGhhdCByZWxvYWQgd291bGQgaGF2ZSB0YWtlbiBwbGFjZSBiZWZvcmUgdGhp cw0KPiBuZXh0IHRlc3Q/IEkgc2VlIHRoYXQgMDIwX2FyY2hpdmVfc3RhdHVzLnBsIGlzIGV4ZWN1 dGluZyBhIHF1ZXJ5IHRvDQo+IGVuc3VyZSB0aGUgcmVsb2FkIGhhcyBiZWVuIHRha2VuIGludG8g Y29uc2lkZXJhdGlvbi4gQ2FuIHdlIGRvIHRoZQ0KPiBzYW1lPw0KDQpBZ3JlZS4gSW1wcm92ZWQg YXMgc3VnZ2VzdGVkLg0KDQo+IDIuIEl0IGlzIG5vdCB2ZXJ5IGNsZWFyIHdoZXRoZXIgY29udmVy dGluZyAwMTdfc3RyZWFtX2RkbCBhbmQNCj4gMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydCBh ZGRzIG11Y2ggdmFsdWUuIFRoZXkgc2VlbSB0byBiZSBtb3N0bHkNCj4gdGVzdGluZyBEREwvRE1M IGludGVyYWN0aW9uIG9mIHB1Ymxpc2hlciBzaWRlLiBXZSBjYW4gcHJvYmFibHkgY2hlY2sNCj4g dGhlIGNvZGUgY292ZXJhZ2UgYnkgcmVtb3ZpbmcgdGhlIHBhcmFsbGVsIHZlcnNpb24gZm9yIHRo ZXNlIHR3byBmaWxlcw0KPiBhbmQgcmVtb3ZlIHRoZW0gdW5sZXNzIGl0IGNvdmVycyBzb21lIGV4 dHJhIGNvZGUuIElmIHdlIGRlY2lkZSB0bw0KPiByZW1vdmUgcGFyYWxsZWwgdmVyc2lvbiBmb3Ig dGhlc2UgdHdvIGZpbGVzIHRoZW4gd2UgY2FuIHByb2JhYmx5IGFkZCBhDQo+IGNvbW1lbnQgYXRv cCB0aGVzZSBmaWxlcyBpbmRpY2F0aW5nIHdoeSB3ZSBkb24ndCBoYXZlIGEgdmVyc2lvbiB0aGF0 DQo+IHBhcmFsbGVsIG9wdGlvbiBmb3IgdGhlc2UgdGVzdHMuDQoNCkkgaGF2ZSBjaGVja2VkIHRo aXMgYW5kIHJlbW92ZWQgdGhlIHBhcmFsbGVsIHZlcnNpb24gZm9yIHRoZXNlIHR3byBmaWxlcy4N CkFsc28gYWRkZWQgc29tZSBjb21tZW50cyBhdG9wIHRoZXNlIHR3byB0ZXN0IGZpbGVzIHRvIGV4 cGxhaW4gdGhpcy4NCg0KPiAzLg0KPiArIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1 YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4NCj4gKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7DQo+ICsNCj4gKyMgV2FpdCBmb3IgdGhp cyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2Vy Lg0KPiAgJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsNCj4gDQo+ ICAkcmVzdWx0ID0NCj4gLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs DQo+IC0gIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsNCj4gLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwgJ2NoZWNrIGV4dHJh IGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOw0KPiArICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NDQo+IHRlc3RfdGFi XzIiKTsNCj4gK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsNCj4gDQo+IC0jIFRlc3QgdGhlIHN0cmVhbWlu ZyBpbiBiaW5hcnkgbW9kZQ0KPiArIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuDQo+ICskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNB VEUgVEFCTEUgdGVzdF90YWJfMiIpOw0KPiArJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsNCj4gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LA0KPiAtICJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJpbmFyeSA9IG9uKSIpOw0K PiArICJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIgb24gdGVzdF90YWJfMihhKSIpOw0KPiAN Cj4gV2hhdCBpcyB0aGUgbmVlZCB0byBmaXJzdCBEcm9wIHRoZSBpbmRleCBhbmQgdGhlbiByZWNy ZWF0ZSBpdCBhZnRlciBhIGZldyBsaW5lcz8NCg0KU2luY2Ugd2Ugd2FudCB0aGUgdHdvIHRyYW5z YWN0aW9ucyB0byBjb21wbGV0ZSBub3JtYWxseSB3aXRob3V0IGNvbmZsaWN0cyBkdWUNCnRvIHRo ZSB1bmlxdWUgaW5kZXgsIHdlIHRlbXBvcmFyaWx5IGRlbGV0ZSB0aGUgaW5kZXguDQpJIGFkZGVk IHNvbWUgbmV3IGNvbW1lbnRzIHRvIGV4cGxhaW4gdGhpcy4NCg0KPiA0LiBBdHRhY2hlZCwgZmlu ZCBzb21lIGNvbW1lbnQgaW1wcm92ZW1lbnRzIGF0b3AgdjY3LTAwMDIqIHBhdGNoLg0KPiBTaW1p bGFyIGNvbW1lbnRzIG5lZWQgdG8gYmUgY2hhbmdlZCBpbiBvdGhlciB0ZXN0IGZpbGVzLg0KDQpU aGFua3MsIEkgaGF2ZSBjaGVja2VkIGFuZCBtZXJnZSB0aGVtLiBBbmQgYWxzbyBjaGFuZ2VkIHNp bWlsYXIgY29tbWVudHMgaW4NCm90aGVyIHRlc3QgZmlsZXMuDQoNCj4gNS4gQXR0YWNoZWQsIGZp bmQgc29tZSBjb21tZW50IGltcHJvdmVtZW50cyBhdG9wIHY2Ny0wMDAxKiBwYXRjaC4NCg0KVGhh bmtzLCBJIGhhdmUgY2hlY2tlZCBhbmQgbWVyZ2UgdGhlbS4NCg0KQXR0YWNoIHRoZSBuZXcgdmVy c2lvbiBwYXRjaCB3aGljaCBhZGRyZXNzZWQgYWxsIGFib3ZlIGNvbW1lbnRzIGFuZCBwYXJ0IG9m DQpjb21tZW50cyBmcm9tIFsxXSBleGNlcHQgb25lIGNvbW1lbnQgdGhhdCBhcmUgYmVpbmcgZGlz Y3Vzc2VkLg0KDQpbMV0gLSBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NB RDIxQW9EdlQlMkJUdjNhdUJCU2hrMTlFa0tMajZCeVF0bkF6Zk1qaDQ5Qmh5VDdmNE53JTQwbWFp bC5nbWFpbC5jb20NCg0KUmVnYXJkcywNCldhbmcgd2VpDQo= --_007_OS3PR01MB6275B61076717E4CE9E079D19EED9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v68-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v68-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v68-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=219968; creation-date="Tue, 27 Dec 2022 04:52:38 GMT"; modification-date="Tue, 27 Dec 2022 04:53:58 GMT" Content-Transfer-Encoding: base64 RnJvbSBkNjFhNmFhMmMwNjk2MTBiN2M2ODVjMWQzYTdjN2YyMTBjMzE5MjJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY2OCAxLzZdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzIHNvb24KYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VuZApjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gSG93ZXZlciwgaWYKdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgdGltZXMgb3V0IHdoaWxlIGF0dGVtcHRpbmcgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhl CnBhcmFsbGVsIGFwcGx5IHdvcmtlciwgaXQgd2lsbCBzd2l0Y2ggdG8gInBhcnRpYWwgc2VyaWFs aXplIiBtb2RlIC0gIGluIHRoaXMKbW9kZSB0aGUgbGVhZGVyIHNlcmlhbGl6ZXMgYWxsIHJlbWFp bmluZyBjaGFuZ2VzIHRvIGEgZmlsZSBhbmQgbm90aWZpZXMgdGhlCnBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgdG8gcmVhZCBhbmQgYXBwbHkgdGhlbSBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlv bi4gV2UKa2VlcCB0aGlzIHBhcmFsbGVsIGFwcGx5IGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0 aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQKYWxzbyB3YWl0IGZvciB0aGUgd29ya2VyIHRvIGZp bmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZwphbmQgYXZvaWRz IHdyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbSBmaWxlcyBpbiBtb3N0IGNhc2VzLiBXZSBzdGls bCBuZWVkIHRvCnNwaWxsIGlmIHRoZXJlIGlzIG5vIHdvcmtlciBhdmFpbGFibGUuCgpUaGlzIHBh dGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcnIHBhcmFtZXRlciBz byB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiBpbiBhIHBhcmFsbGVsIGFwcGx5CndvcmtlciBvciBzcGlsbCB0aGUgY2hh bmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0cmVhbWluZyBwYXJhbWV0ZXIgdG8K J29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIgdmFsdWUgJ3BhcmFsbGVsJyBtZWFu cyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2YWx1ZQonb24nIG1lYW5zIHRoZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVkIHRvIGRpc2suIFRoZSBkZWZhdWx0IHZh bHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVoYXZpb3VyKS4KCkluIGFkZGl0aW9uLCB0 aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBTVFJFQU1fQUJPUlQgbWVz c2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0X2xzbiBjYW4gYWxzbyBiZSBzZW50IHdo aWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVwbGljYXRpb24gb3JpZ2luIGluIHBhcmFs bGVsIGFwcGx5IHdvcmtlciB3aGVuIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaXMKYWJvcnRl ZC4gQmVjYXVzZSB0aGlzIG1lc3NhZ2UgZXh0ZW5zaW9uIGlzIG5lZWRlZCB0byBzdXBwb3J0IHBh cmFsbGVsCnN0cmVhbWluZywgcGFyYWxsZWwgc3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9y IHB1YmxpY2F0aW9ucyBvbiBzZXJ2ZXJzIDwKUEcxNi4KCk5vdGU6IFNpbmNlIHRoZSBmaWVsZCAn c3Vic3RyZWFtJyBvZiBjYXRhbG9nICdwZ19zdWJzY3JpcHRpb24nIGhhcyBiZWVuCmV4cGFuZGVk LCB3ZSBuZWVkIGJ1bXAgY2F0YWxvZyB2ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcu c2dtbCAgICAgICAgICAgICAgICAgICAgICB8ICAgMjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAgMjIgKy0KIGRvYy9zcmMvc2dtbC9tb25pdG9y aW5nLnNnbWwgICAgICAgICAgICAgICAgICB8ICAgIDUgKwogZG9jL3NyYy9zZ21sL3Byb3RvY29s LnNnbWwgICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICAyNCArLQogZG9jL3NyYy9zZ21sL3N5c3RlbS12 aWV3cy5zZ21sICAgICAgICAgICAgICAgIHwgICAgNSArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGFjdC5jICAgICAgICAgICAgIHwgICAyNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgICA2NyArLQogc3JjL2JhY2tlbmQvbGlicHEvcHFt cS5jICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dvcmtlci5jICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVy L2ludGVycnVwdC5jICAgICAgICAgICAgfCAgICA1ICstCiAuLi4vbGlicHF3YWxyZWNlaXZlci9s aWJwcXdhbHJlY2VpdmVyLmMgICAgICAgfCAgICA2ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL01ha2VmaWxlICAgICAgfCAgICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYyB8IDE2MzIgKysrKysrKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8ICAyMjAgKystCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgfCAgICAxICsKIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAgICB8ICAgMjYgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICB8ICAgMzcgKy0KIC4uLi9yZXBs aWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMjUgKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICB8IDEzNTkgKysrKysrKysrKyst LS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICAgMjIg Ky0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyAgICAgICAgICB8ICAgIDQg Kwogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYyAgICAgICAgICAgICAgIHwgICA0NiAr CiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgICAgICAgfCAgICAzICsK IHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICB8ICAgIDYgKwog c3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jICAgICAgICAgICAgIHwgICAgNSArLQog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgICAxMiArCiBz cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgICAxICsKIHNy Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNy Yy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjEgKy0KIHNy Yy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICB8ICAgMjEgKy0KIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCAgICAgICB8ICAgIDIgKwogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggICAgIHwgICAgMSArCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgIDI4ICstCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAgICA4ICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCAgICAgICB8ICAgIDQgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICB8ICAgIDIgKy0KIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAyMjMgKystCiBzcmMv aW5jbHVkZS9zdG9yYWdlL2xtZ3IuaCAgICAgICAgICAgICAgICAgICAgfCAgICA1ICsKIHNyYy9p bmNsdWRlL3N0b3JhZ2UvbG9jay5oICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKy0KIHNyYy9p bmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL2lu Y2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICAgIHwgICAgMiArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgICAgfCAgIDQ2ICstCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsICAgICAgICAgfCAgICA2ICstCiBzcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgICA3ICsKIDUwIGZpbGVz IGNoYW5nZWQsIDM2NzAgaW5zZXJ0aW9ucygrKSwgMzkxIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCA5MzE2YjgxMWFjLi5jMWU0MDQ4MDU0IDEwMDY0NAot LS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbApAQCAtNzkxMywxMSArNzkxMywxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJs ZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAog CiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJl YW08L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5z dWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8dHlwZT5jaGFyPC90eXBlPgogICAgICAgPC9wYXJhPgog ICAgICAgPHBhcmE+Ci0gICAgICAgSWYgdHJ1ZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIGFsbG93 IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcwotICAgICAgIHRyYW5zYWN0aW9ucworICAgICAgIENv bnRyb2xzIGhvdyB0byBoYW5kbGUgdGhlIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2Fj dGlvbnM6CisgICAgICAgPGxpdGVyYWw+ZjwvbGl0ZXJhbD4gPSBkaXNhbGxvdyBzdHJlYW1pbmcg b2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLAorICAgICAgIDxsaXRlcmFsPnQ8L2xpdGVyYWw+ ID0gc3BpbGwgdGhlIGNoYW5nZXMgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisgICAg ICAgZGlzayBhbmQgYXBwbHkgYXQgb25jZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0 dGVkIG9uIHRoZQorICAgICAgIHB1Ymxpc2hlciBhbmQgcmVjZWl2ZWQgYnkgdGhlIHN1YnNjcmli ZXIsCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBhcHBseSBjaGFuZ2VzIGRpcmVjdGx5 IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKyAgICAgICB3b3JrZXIgaWYgYXZhaWxhYmxlIChzYW1l IGFzICd0JyBpZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlKQogICAgICAgPC9wYXJhPjwvZW50cnk+ CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgYi9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggMzA3MWM4ZWFjZS4uZjQ3NmNjNGY0NSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbApAQCAtNDk2OCw3ICs0OTY4LDggQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAg ICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmaWVzIG1heGltdW0g bnVtYmVyIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBpbmNsdWRlcwotICAg ICAgICBib3RoIGFwcGx5IHdvcmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJz LgorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VycywgcGFyYWxsZWwgYXBwbHkgd29ya2Vycywg YW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbgorICAgICAgICB3b3JrZXJzLgogICAgICAgIDwvcGFy YT4KICAgICAgICA8cGFyYT4KICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFy ZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKQEAgLTUwMDgsNiArNTAwOSwzMSBAQCBB TlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4g KCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0 ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1wYXJhbGxlbC1hcHBseS13 b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X3BhcmFsbGVsX2FwcGx5X3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdl cjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1h eF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZp Z3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8 L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE1heGltdW0g bnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcwor ICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Ig c3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8 L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQor ICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1l Pi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZh bHVlIGlzIDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAgICAg PGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZl ciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRl bT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9z ZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggN2I5YmIwMGU1 YS4uNTRmNDhiZTg3ZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0x NTAxLDYgKzE1MDEsMTYgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJl cGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIG1pZ2h0IG5vdCB2 aW9sYXRlIGFueSBjb25zdHJhaW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2UgdGhlIHN1YnNjcmli ZXIKICAgIGluY29uc2lzdGVudC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hlbiB0aGUg c3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgZmluaXNo IExTTiBvZgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhh dCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhlIHN0cmVhbWluZyBt b2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IGFu ZAorICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9m IHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0byB0aGUgc2VydmVy IGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsK KyAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NS SVBUSU9OIC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAgPC9zZWN0 MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMiPgpAQCAt MTgwOSw4ICsxODE5LDkgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJl cGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKIAogICAgPHBhcmE+CiAg ICAgPGxpbmsgbGlua2VuZD0iZ3VjLW1heC1sb2dpY2FsLXJlcGxpY2F0aW9uLXdvcmtlcnMiPjx2 YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+PC9saW5rPgot ICAgIG11c3QgYmUgc2V0IHRvIGF0IGxlYXN0IHRoZSBudW1iZXIgb2Ygc3Vic2NyaXB0aW9ucyAo Zm9yIGFwcGx5IHdvcmtlcnMpLCBwbHVzCi0gICAgc29tZSByZXNlcnZlIGZvciB0aGUgdGFibGUg c3luY2hyb25pemF0aW9uIHdvcmtlcnMuCisgICAgbXVzdCBiZSBzZXQgdG8gYXQgbGVhc3QgdGhl IG51bWJlciBvZiBzdWJzY3JpcHRpb25zIChmb3IgbGVhZGVyIGFwcGx5CisgICAgd29ya2Vycyks IHBsdXMgc29tZSByZXNlcnZlIGZvciB0aGUgdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlcnMg YW5kCisgICAgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KICAgIDwvcGFyYT4KIAogICAgPHBhcmE+ CkBAIC0xODI3LDYgKzE4MzgsMTMgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgICAgc3Vi c2NyaXB0aW9uIGluaXRpYWxpemF0aW9uIG9yIHdoZW4gbmV3IHRhYmxlcyBhcmUgYWRkZWQuCiAg ICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxs ZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIj48dmFybmFtZT5tYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPjwvbGluaz4KKyAgICAgY29u dHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mIGluLXByb2dy ZXNzCisgICAgIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAg PGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgPC9wYXJhPgorCiAg ICA8cGFyYT4KICAgICBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMgYXJlIGFsc28gYWZmZWN0 ZWQgYnkKICAgICA8bGluayBsaW5rZW5kPSJndWMtd2FsLXJlY2VpdmVyLXRpbWVvdXQiPjx2YXJu YW1lPndhbF9yZWNlaXZlcl90aW1lb3V0PC92YXJuYW1lPjwvbGluaz4sCmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dt bAppbmRleCAzNjNiMTgzZTVmLi5lYWZlZWFkZjQ3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv bW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTE4 NTEsNiArMTg1MSwxMSBAQCBwb3N0Z3JlcyAgIDI3MDkzICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIg PyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdyZXM6IHNlcgogICAgICAgPGVudHJ5Pjxs aXRlcmFsPmFkdmlzb3J5PC9saXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+V2FpdGluZyB0 byBhY3F1aXJlIGFuIGFkdmlzb3J5IHVzZXIgbG9jay48L2VudHJ5PgogICAgICA8L3Jvdz4KKyAg ICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5hcHBseXRyYW5zYWN0aW9uPC9saXRlcmFs PjwvZW50cnk+CisgICAgICA8ZW50cnk+V2FpdGluZyB0byBhY3F1aXJlIGEgbG9jayBvbiBhIHJl bW90ZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkCisgICAgICBieSBhIGxvZ2ljYWwgcmVwbGlj YXRpb24gc3Vic2NyaWJlci48L2VudHJ5PgorICAgICA8L3Jvdz4KICAgICAgPHJvdz4KICAgICAg IDxlbnRyeT48bGl0ZXJhbD5leHRlbmQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT5X YWl0aW5nIHRvIGV4dGVuZCBhIHJlbGF0aW9uLjwvZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4IDAz MzEyZTA3ZTIuLjQzOWVmNjc1ZjMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC0zMTAzLDcgKzMxMDMsNyBA QCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElG WV9TWVNURU07IgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KICAgICAgICBQcm90b2Nv bCB2ZXJzaW9uLiBDdXJyZW50bHkgdmVyc2lvbnMgPGxpdGVyYWw+MTwvbGl0ZXJhbD4sIDxsaXRl cmFsPjI8L2xpdGVyYWw+LAotICAgICAgIGFuZCA8bGl0ZXJhbD4zPC9saXRlcmFsPiBhcmUgc3Vw cG9ydGVkLgorICAgICAgIDxsaXRlcmFsPjM8L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+NDwvbGl0 ZXJhbD4gYXJlIHN1cHBvcnRlZC4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAg IFZlcnNpb24gPGxpdGVyYWw+MjwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZl ciB2ZXJzaW9uIDE0CkBAIC0zMTEzLDYgKzMxMTMsMTEgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVz IHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICBWZXJz aW9uIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVy c2lvbiAxNQogICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1pbmcgb2YgdHdv LXBoYXNlIGNvbW1pdHMuCiAgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBWZXJz aW9uIDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVy c2lvbiAxNgorICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1zIG9mIGxhcmdl IGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGJlIGFwcGxpZWQgaW4gcGFyYWxs ZWwuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+ CiAKQEAgLTY4ODMsNiArNjg4OCwyOCBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRp b249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgICA8L3BhcmE+CiAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8bGlz dGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQuIFRo aXMgZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAgIDQu CisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVzdGFt cFR6KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAg QWJvcnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51bWJl cgorICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIwMDAt MDEtMDEpLiBUaGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFibGUgc2luY2UgcHJvdG9jb2wg dmVyc2lvbiA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwv dmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvbGlzdGl0ZW0+CiAg ICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1 YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNn bWwKaW5kZXggZjlhMTc3NjM4MC4uZjE3M2EwOTAzNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIyOCwxMyArMjI4LDI5IEBAIENSRUFURSBTVUJTQ1JJ UFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9y ZXBsYWNlYWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVudHJ5 PgotICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5ib29s ZWFuPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0 ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAg ICAgICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0cmVh bWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBzdWJz Y3JpcHRpb24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJlIGZ1 bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhlCi0g ICAgICAgICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1YnNj cmlwdGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sCisg ICAgICAgICAgbWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRo ZSBwdWJsaXNoZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNjcmli ZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNoYW5n ZXMgYXJlIHdyaXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBw bGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRlZCBv biB0aGUgcHVibGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAgICAg IDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAgICAg ICAgICBhcHBsaWVkIHZpYSBvbmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGlmIGF2 YWlsYWJsZS4gSWYgbm8KKyAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgZnJlZSB0 byBoYW5kbGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGVuCisgICAgICAgICAgdGhlIGNoYW5n ZXMgYXJlIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQor ICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9y IGhhcHBlbnMgaW4gYQorICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZpbmlz aCBMU04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbgorICAgICAgICAgIG1pZ2h0IG5vdCBiZSBy ZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9s aXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRl eCAxNDNhZTViN2JiLi44NDI4ZWU3ODY3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVt LXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0xMzc5 LDggKzEzNzksOSBAQAogICAgICAgIDxsaXRlcmFsPnZpcnR1YWx4aWQ8L2xpdGVyYWw+LAogICAg ICAgIDxsaXRlcmFsPnNwZWN0b2tlbjwvbGl0ZXJhbD4sCiAgICAgICAgPGxpdGVyYWw+b2JqZWN0 PC9saXRlcmFsPiwKLSAgICAgICA8bGl0ZXJhbD51c2VybG9jazwvbGl0ZXJhbD4sIG9yCi0gICAg ICAgPGxpdGVyYWw+YWR2aXNvcnk8L2xpdGVyYWw+LgorICAgICAgIDxsaXRlcmFsPnVzZXJsb2Nr PC9saXRlcmFsPiwKKyAgICAgICA8bGl0ZXJhbD5hZHZpc29yeTwvbGl0ZXJhbD4sIG9yCisgICAg ICAgPGxpdGVyYWw+YXBwbHl0cmFuc2FjdGlvbjwvbGl0ZXJhbD4uCiAgICAgICAgKFNlZSBhbHNv IDx4cmVmIGxpbmtlbmQ9IndhaXQtZXZlbnQtbG9jay10YWJsZSIvPi4pCiAgICAgICA8L3BhcmE+ PC9lbnRyeT4KICAgICAgPC9yb3c+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggYjdj N2ZkOWYwMC4uZDBkOWM4NjQ0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYwpAQCAtMTcx Miw2ICsxNzEyLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAlp bnQJCQluY2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW47CiAJVGltZXN0YW1wVHog eGFjdF90aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAKIAkvKgogCSAqIElmIHdlIGhhdmVuJ3Qg YmVlbiBhc3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxsIGNhcmUgd2hldGhlciB3ZSBhYm9ydGVk CkBAIC0xNzQyLDYgKzE3NDMsMTMgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3Vi WGFjdCkKIAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9ydCB0cmFuc2FjdGlvbiAldSwgaXQgd2Fz IGFscmVhZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwogCisJLyoKKwkgKiBBcmUgd2UgdXNpbmcg dGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8gIE9yLCBpbiBvdGhlciB3b3JkcywgYXJl CisJICogd2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPworCSAqLworCXJlcGxvcmlnaW4gPSAo cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2luSWQgJiYKKwkJCQkg IHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJZCk7CisKIAkvKiBG ZXRjaCB0aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVjb3JkICovCiAJbnJlbHMgPSBz bWdyR2V0UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKIAluY2hpbGRyZW4gPSB4YWN0R2V0 Q29tbWl0dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAgLTE3NjUsNiArMTc3MywxMSBAQCBSZWNv cmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQkJCQkgICBNeVhhY3RGbGFncywg SW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5VTEwpOwogCisJaWYgKHJlcGxvcmlnaW4p CisJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9uIG9yaWdpbiAqLwor CQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xz biwKKwkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOworCiAJLyoKIAkgKiBSZXBvcnQgdGhlIGxh dGVzdCBhc3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIga25vd3MgdG8KIAkg KiBmbHVzaCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2FpbmVkIGJ5IGRlbGF5 aW5nIHRoaXMsIHNpbmNlCkBAIC01ODY3LDExICs1ODgwLDEwIEBAIFhhY3RMb2dBYm9ydFJlY29y ZChUaW1lc3RhbXBUeiBhYm9ydF90aW1lLAogCX0KIAogCS8qCi0JICogRHVtcCB0cmFuc2FjdGlv biBvcmlnaW4gaW5mb3JtYXRpb24gb25seSBmb3IgYWJvcnQgcHJlcGFyZWQuIFdlIG5lZWQKLQkg KiB0aGlzIGR1cmluZyByZWNvdmVyeSB0byB1cGRhdGUgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbiBw cm9ncmVzcy4KKwkgKiBEdW1wIHRyYW5zYWN0aW9uIG9yaWdpbiBpbmZvcm1hdGlvbi4gV2UgbmVl ZCB0aGlzIGR1cmluZyByZWNvdmVyeSB0bworCSAqIHVwZGF0ZSB0aGUgcmVwbGljYXRpb24gb3Jp Z2luIHByb2dyZXNzLgogCSAqLwotCWlmICgocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJ bnZhbGlkUmVwT3JpZ2luSWQpICYmCi0JCVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHR3b3BoYXNlX3hp ZCkpCisJaWYgKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklk KQogCXsKIAkJeGxfeGluZm8ueGluZm8gfD0gWEFDVF9YSU5GT19IQVNfT1JJR0lOOwogCkBAIC01 OTI4LDggKzU5NDAsOCBAQCBYYWN0TG9nQWJvcnRSZWNvcmQoVGltZXN0YW1wVHogYWJvcnRfdGlt ZSwKIAlpZiAoeGxfeGluZm8ueGluZm8gJiBYQUNUX1hJTkZPX0hBU19PUklHSU4pCiAJCVhMb2dS ZWdpc3RlckRhdGEoKGNoYXIgKikgKCZ4bF9vcmlnaW4pLCBzaXplb2YoeGxfeGFjdF9vcmlnaW4p KTsKIAotCWlmIChUcmFuc2FjdGlvbklkSXNWYWxpZCh0d29waGFzZV94aWQpKQotCQlYTG9nU2V0 UmVjb3JkRmxhZ3MoWExPR19JTkNMVURFX09SSUdJTik7CisJLyogSW5jbHVkZSB0aGUgcmVwbGlj YXRpb24gb3JpZ2luICovCisJWExvZ1NldFJlY29yZEZsYWdzKFhMT0dfSU5DTFVERV9PUklHSU4p OwogCiAJcmV0dXJuIFhMb2dJbnNlcnQoUk1fWEFDVF9JRCwgaW5mbyk7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggZDY3MzU1N2VhNC4uOTM4MmU2MTllOSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtODQsNyArODQsNyBA QCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRzCiAJYm9vbAkJY29weV9kYXRhOwogCWJvb2wJCXJlZnJl c2g7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7 CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9vbAkJZGlzYWJsZW9uZXJyOwogCWNoYXIJICAgKm9yaWdp bjsKQEAgLTEzOCw3ICsxMzgsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0 YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29w dHMsIFNVQk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAoSXNTZXQo c3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1pbmcgPSBm YWxzZTsKKwkJb3B0cy0+c3RyZWFtaW5nID0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOwogCWlmIChJ c1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCkpCiAJCW9wdHMtPnR3 b3BoYXNlID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfRElTQUJM RV9PTl9FUlIpKQpAQCAtMjQxLDcgKzI0MSw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9vcHRpb25z KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJCWVycm9yQ29uZmxp Y3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOwogCiAJCQlvcHRzLT5zcGVjaWZpZWRfb3B0cyB8 PSBTVUJPUFRfU1RSRUFNSU5HOwotCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVhbihk ZWZlbCk7CisJCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVsKTsK IAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAw KQogCQl7CkBAIC02MjksNyArNjI5LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3Vib3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob3duZXIpOwogCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJlbmFibGVkIC0gMV0gPSBCb29sR2V0RGF0dW0o b3B0cy5lbmFibGVkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViYmluYXJ5IC0g MV0gPSBCb29sR2V0RGF0dW0ob3B0cy5iaW5hcnkpOwotCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJzdHJlYW0gLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQ2hhckdldERhdHVtKG9w dHMuc3RyZWFtaW5nKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VidHdvcGhhc2Vz dGF0ZSAtIDFdID0KIAkJQ2hhckdldERhdHVtKG9wdHMudHdvcGhhc2UgPwogCQkJCQkgTE9HSUNB TFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKQEAgLTEwOTgsNyArMTA5OCw3IEBAIEFsdGVy U3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3JpcHRpb25TdG10ICpz dG10LAogCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmllZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5H KSkKIAkJCQl7CiAJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAx XSA9Ci0JCQkJCQlCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCQkJCQkJQ2hhckdldERh dHVtKG9wdHMuc3RyZWFtaW5nKTsKIAkJCQkJcmVwbGFjZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3Vic3RyZWFtIC0gMV0gPSB0cnVlOwogCQkJCX0KIApAQCAtMjEyMiwzICsyMTIyLDYwIEBAIG1l cmdlX3B1YmxpY2F0aW9ucyhMaXN0ICpvbGRwdWJsaXN0LCBMaXN0ICpuZXdwdWJsaXN0LCBib29s IGFkZHB1YiwgY29uc3QgY2hhciAqCiAKIAlyZXR1cm4gb2xkcHVibGlzdDsKIH0KKworLyoKKyAq IEV4dHJhY3QgdGhlIHN0cmVhbWluZyBtb2RlIHZhbHVlIGZyb20gYSBEZWZFbGVtLiAgVGhpcyBp cyBsaWtlCisgKiBkZWZHZXRCb29sZWFuKCkgYnV0IGFsc28gYWNjZXB0cyB0aGUgc3BlY2lhbCB2 YWx1ZSBvZiAicGFyYWxsZWwiLgorICovCitjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERlZkVs ZW0gKmRlZikKK3sKKwkvKgorCSAqIElmIG5vIHBhcmFtZXRlciB2YWx1ZSBnaXZlbiwgYXNzdW1l ICJ0cnVlIiBpcyBtZWFudC4KKwkgKi8KKwlpZiAoIWRlZi0+YXJnKQorCQlyZXR1cm4gTE9HSUNB TFJFUF9TVFJFQU1fT047CisKKwkvKgorCSAqIEFsbG93IDAsIDEsICJmYWxzZSIsICJ0cnVlIiwg Im9mZiIsICJvbiIgb3IgInBhcmFsbGVsIi4KKwkgKi8KKwlzd2l0Y2ggKG5vZGVUYWcoZGVmLT5h cmcpKQorCXsKKwkJY2FzZSBUX0ludGVnZXI6CisJCQlzd2l0Y2ggKGludFZhbChkZWYtPmFyZykp CisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOwor CQkJCWNhc2UgMToKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RSRUFNX09OOworCQkJCWRlZmF1 bHQ6CisJCQkJCS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0IGJlbG93ICovCisJCQkJCWJyZWFrOwor CQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJY2hhcgkgICAqc3ZhbCA9IGRl ZkdldFN0cmluZyhkZWYpOworCisJCQkJLyoKKwkJCQkgKiBUaGUgc2V0IG9mIHN0cmluZ3MgYWNj ZXB0ZWQgaGVyZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0aGUKKwkJCQkgKiBncmFtbWFyJ3Mgb3B0 X2Jvb2xlYW5fb3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJCQkJICovCisJCQkJaWYgKHBnX3N0cmNh c2VjbXAoc3ZhbCwgImZhbHNlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2YWwsICJv ZmYiKSA9PSAwKQorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOworCQkJCWlmIChw Z19zdHJjYXNlY21wKHN2YWwsICJ0cnVlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2 YWwsICJvbiIpID09IDApCisJCQkJCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PTjsKKwkJCQlp ZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxsZWwiKSA9PSAwKQorCQkJCQlyZXR1cm4gTE9H SUNBTFJFUF9TVFJFQU1fUEFSQUxMRUw7CisJCQl9CisJCQlicmVhazsKKwl9CisKKwllcmVwb3J0 KEVSUk9SLAorCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJIGVycm1zZygi JXMgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yIFwicGFyYWxsZWxcIiIsCisJCQkJCWRlZi0+ ZGVmbmFtZSkpKTsKKwlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGOwkvKiBrZWVwIGNvbXBp bGVyIHF1aWV0ICovCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMgYi9z cmMvYmFja2VuZC9saWJwcS9wcW1xLmMKaW5kZXggNGQwNDE1ZTM3OS4uNjM5ODQ1ZmQ4MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBx L3BxbXEuYwpAQCAtMTMsMTEgKzEzLDEzIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisj aW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNp bmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNh dGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAKQEAgLTE2Miw5ICsxNjQsMTkgQEAgbXFfcHV0bWVzc2Fn ZShjaGFyIG1zZ3R5cGUsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCXJlc3VsdCA9IHNo bV9tcV9zZW5kdihwcV9tcV9oYW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKIAkJaWYgKHBx X21xX3BhcmFsbGVsX2xlYWRlcl9waWQgIT0gMCkKLQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3Bh cmFsbGVsX2xlYWRlcl9waWQsCi0JCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0J CQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCXsKKwkJCWlmIChJ c0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKCkpCisJCQkJU2VuZFByb2NTaWduYWwocHFfbXFf cGFyYWxsZWxfbGVhZGVyX3BpZCwKKwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01F U1NBR0UsCisJCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQkJ ZWxzZQorCQkJeworCQkJCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkpOworCQkJCVNlbmRQcm9j U2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19QQVJB TExFTF9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lk KTsKKwkJCX0KKwkJfQogCiAJCWlmIChyZXN1bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQogCQkJ YnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggMGQ3MmRlMjRiMC4uMmRmYTlh YjUyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBi L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QKIAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29y a2VyTWFpbgorCX0sCisJeworCQkiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iLCBQYXJhbGxlbEFw cGx5V29ya2VyTWFpbgogCX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvaW50ZXJydXB0LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCmluZGV4 IDFhZWQyZTJlOTkuLmU2NDAyOWZhYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvaW50ZXJydXB0LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYwpA QCAtOTgsOCArOTgsOSBAQCBTaWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KFNJR05BTF9BUkdTKQog ICogc2h1dCBkb3duIGFuZCBleGl0LgogICoKICAqIFR5cGljYWxseSwgdGhpcyBoYW5kbGVyIHdv dWxkIGJlIHVzZWQgZm9yIFNJR1RFUk0sIGJ1dCBzb21lIHByb2Nlc3NlcyB1c2UKLSAqIG90aGVy IHNpZ25hbHMuIEluIHBhcnRpY3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgZXhpdHMgb24gU0lHVVNS MiwgYW5kIHRoZQotICogV0FMIHdyaXRlciBleGl0cyBvbiBlaXRoZXIgU0lHSU5UIG9yIFNJR1RF Uk0uCisgKiBvdGhlciBzaWduYWxzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgY2hlY2twb2ludGVyIGV4 aXRzIG9uIFNJR1VTUjIsIGFuZCB0aGUgV0FMCisgKiB3cml0ZXIgYW5kIHRoZSBsb2dpY2FsIHJl cGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGl0cyBvbiBlaXRoZXIKKyAqIFNJR0lO VCBvciBTSUdURVJNLgogICoKICAqIFNodXRkb3duUmVxdWVzdFBlbmRpbmcgc2hvdWxkIGJlIGNo ZWNrZWQgYXQgYSBjb252ZW5pZW50IHBsYWNlIHdpdGhpbiB0aGUKICAqIG1haW4gbG9vcCwgb3Ig ZWxzZSB0aGUgbWFpbiBsb29wIHNob3VsZCBjYWxsIEhhbmRsZU1haW5Mb29wSW50ZXJydXB0cy4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGli cHF3YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZl ci9saWJwcXdhbHJlY2VpdmVyLmMKaW5kZXggN2Y2OTdiMGYyOS4uMjI1ZGE4MWYyZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJl Y2VpdmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9s aWJwcXdhbHJlY2VpdmVyLmMKQEAgLTQ0Myw5ICs0NDMsOSBAQCBsaWJwcXJjdl9zdGFydHN0cmVh bWluZyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sCiAJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgInBy b3RvX3ZlcnNpb24gJyV1JyIsCiAJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5wcm90b192 ZXJzaW9uKTsKIAotCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgJiYKLQkJ CVBRc2VydmVyVmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAxNDAwMDApCi0JCQlhcHBlbmRT dHJpbmdJbmZvU3RyaW5nKCZjbWQsICIsIHN0cmVhbWluZyAnb24nIik7CisJCWlmIChvcHRpb25z LT5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIpCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQs ICIsIHN0cmVhbWluZyAnJXMnIiwKKwkJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJl YW1pbmdfc3RyKTsKIAogCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC50d29waGFzZSAmJgog CQkJUFFzZXJ2ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pID49IDE1MDAwMCkKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4IGM0ZTJmZGViNzEuLjJkYzI1ZTM3 YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQpAQCAtMTUsNiAr MTUsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiBvdmVy cmlkZSBDUFBGTEFHUyA6PSAtSSQoc3JjZGlyKSAkKENQUEZMQUdTKQogCiBPQkpTID0gXAorCWFw cGx5cGFyYWxsZWx3b3JrZXIubyBcCiAJZGVjb2RlLm8gXAogCWxhdW5jaGVyLm8gXAogCWxvZ2lj YWwubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmUy Yjc3ZDM4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMCwwICsxLDE2MzIgQEAKKy8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICogYXBwbHlwYXJhbGxlbHdvcmtlci5jCisgKgkgICBTdXBwb3J0IHJvdXRpbmVz IGZvciBhcHBseWluZyB4YWN0IGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENvcHly aWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisg KiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5cGFyYWxsZWx3b3JrZXIuYworICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29kZSB0 byBsYXVuY2gsIHNldCB1cCwgYW5kIHRlYXJkb3duIGEgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtl ciB3aGljaCByZWNlaXZlcyB0aGUgY2hhbmdlcyBmcm9tIHRoZSBsZWFkZXIgd29ya2VyIGFuZCBp bnZva2VzIHJvdXRpbmVzCisgKiB0byBhcHBseSB0aG9zZSBvbiB0aGUgc3Vic2NyaWJlciBkYXRh YmFzZS4gQWRkaXRpb25hbGx5LCB0aGlzIGZpbGUgY29udGFpbnMKKyAqIHJvdXRpbmVzIHRoYXQg YXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGluZyB1cCwgdXNpbmcsIGFuZCB0ZWFyaW5nIGRv d24gYQorICogUGFyYWxsZWxBcHBseVdvcmtlckluZm8gd2hpY2ggaXMgcmVxdWlyZWQgc28gdGhl IGxlYWRlciB3b3JrZXIgYW5kIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJzIGNhbiBjb21tdW5p Y2F0ZSB3aXRoIGVhY2ggb3RoZXIuCisgKgorICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg YXJlIGFzc2lnbmVkIChpZiBhdmFpbGFibGUpIGFzIHNvb24gYXMgeGFjdCdzCisgKiBmaXJzdCBz dHJlYW0gaXMgcmVjZWl2ZWQgZm9yIHN1YnNjcmlwdGlvbnMgdGhhdCBoYXZlIHNldCB0aGVpciAn c3RyZWFtaW5nJworICogb3B0aW9uIGFzIHBhcmFsbGVsLiBUaGUgbGVhZGVyIGFwcGx5IHdvcmtl ciB3aWxsIHNlbmQgY2hhbmdlcyB0byB0aGlzIG5ldworICogd29ya2VyIHZpYSBzaGFyZWQgbWVt b3J5LiBXZSBrZWVwIHRoaXMgd29ya2VyIGFzc2lnbmVkIHRpbGwgdGhlIHRyYW5zYWN0aW9uCisg KiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBmaW5p c2ggYXQgY29tbWl0LiBUaGlzCisgKiBwcmVzZXJ2ZXMgY29tbWl0IG9yZGVyaW5nIGFuZCBhdm9p ZCBmaWxlIEkvTyBpbiBtb3N0IGNhc2VzLCBhbHRob3VnaCB3ZQorICogc3RpbGwgbmVlZCB0byBz cGlsbCB0byBhIGZpbGUgaWYgdGhlcmUgaXMgbm8gd29ya2VyIGF2YWlsYWJsZS4gU2VlIGNvbW1l bnRzCisgKiBhdG9wIGxvZ2ljYWwvd29ya2VyIHRvIGtub3cgbW9yZSBhYm91dCBzdHJlYW1lZCB4 YWN0cyB3aG9zZSBjaGFuZ2VzIGFyZQorICogc3BpbGxlZCB0byBkaXNrLiBJdCBpcyBpbXBvcnRh bnQgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHRvIGF2b2lkIGZhaWx1cmVzCisgKiBkdWUgdG86 IChhKSB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgLSBzYXkgaWYgd2UgaW5zZXJ0IGEgcm93IGlu IHRoZSBmaXJzdAorICogdHJhbnNhY3Rpb24gYW5kIHVwZGF0ZSBpdCBpbiB0aGUgc2Vjb25kIHRy YW5zYWN0aW9uIG9uIHB1Ymxpc2hlciB0aGVuCisgKiBhbGxvd2luZyB0aGUgc3Vic2NyaWJlciB0 byBhcHBseSBib3RoIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGZhaWx1cmUgaW4gdGhlCisgKiB1 cGRhdGU7IChiKSBkZWFkbG9ja3MgLSBhbGxvd2luZyB0cmFuc2FjdGlvbnMgdGhhdCB1cGRhdGUg dGhlIHNhbWUgc2V0IG9mCisgKiByb3dzL3RhYmxlcyBpbiB0aGUgb3Bwb3NpdGUgb3JkZXIgdG8g YmUgYXBwbGllZCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0bworICogZGVhZGxvY2tzLgorICoKKyAq IEEgd29ya2VyIHBvb2wgaXMgdXNlZCB0byBhdm9pZCByZXN0YXJ0aW5nIHdvcmtlcnMgZm9yIGVh Y2ggc3RyZWFtaW5nCisgKiB0cmFuc2FjdGlvbi4gV2UgbWFpbnRhaW4gZWFjaCB3b3JrZXIncyBp bmZvcm1hdGlvbiAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pCisgKiBpbiB0aGUgUGFyYWxsZWxB cHBseVdvcmtlclBvb2wuIEFmdGVyIHN1Y2Nlc3NmdWxseSBsYXVuY2hpbmcgYSBuZXcgd29ya2Vy LAorICogaXRzIGluZm9ybWF0aW9uIGlzIGFkZGVkIHRvIHRoZSBQYXJhbGxlbEFwcGx5V29ya2Vy UG9vbC4gT25jZSB0aGUgd29ya2VyCisgKiBmaW5pc2hlcyBhcHBseWluZyB0aGUgdHJhbnNhY3Rp b24sIGl0IGlzIG1hcmtlZCBhcyBhdmFpbGFibGUgZm9yIHJlLXVzZS4KKyAqIE5vdywgYmVmb3Jl IHN0YXJ0aW5nIGEgbmV3IHdvcmtlciB0byBhcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u LCB3ZQorICogY2hlY2sgdGhlIGxpc3QgZm9yIGFueSBhdmFpbGFibGUgd29ya2VyLiBOb3RlIHRo YXQgd2UgcmV0YWluIGEgbWF4aW11bSBvZgorICogaGFsZiB0aGUgbWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiB3b3JrZXJzIGluIHRoZSBwb29sIGFuZAorICogYWZ0 ZXIgdGhhdCwgd2Ugc2ltcGx5IGV4aXQgdGhlIHdvcmtlciBhZnRlciBhcHBseWluZyB0aGUgdHJh bnNhY3Rpb24uCisgKgorICogWFhYIFRoaXMgd29ya2VyIHBvb2wgdGhyZXNob2xkIGlzIGFyYml0 cmFyeSBhbmQgd2UgY2FuIHByb3ZpZGUgYSBHVUMKKyAqIHZhcmlhYmxlIGZvciB0aGlzIGluIHRo ZSBmdXR1cmUgaWYgcmVxdWlyZWQuCisgKgorICogVGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2ls bCBjcmVhdGUgYSBzZXBhcmF0ZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudAorICogd2hl biBlYWNoIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGFydHMuIFRoZSByZWFzb24gZm9yIHRoaXMg ZGVzaWduIGlzIHRoYXQKKyAqIHdlIGNhbm5vdCBwcmVkaWN0IGhvdyBtYW55IHdvcmtlcnMgd2ls bCBiZSBuZWVkZWQuIEl0IG1heSBiZSBwb3NzaWJsZSB0bworICogYWxsb2NhdGUgZW5vdWdoIHNo YXJlZCBtZW1vcnkgaW4gb25lIHNlZ21lbnQgYmFzZWQgb24gdGhlIG1heGltdW0gbnVtYmVyIG9m CisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uKSwgYnV0CisgKiB0aGlzIHdvdWxkIHdhc3RlIG1lbW9yeSBpZiBubyBw cm9jZXNzIGlzIGFjdHVhbGx5IHN0YXJ0ZWQuCisgKgorICogVGhlIGR5bmFtaWMgc2hhcmVkIG1l bW9yeSBzZWdtZW50IGNvbnRhaW5zOiAoYSkgYSBzaG1fbXEgdGhhdCBpcyB1c2VkIHRvCisgKiBz ZW5kIGNoYW5nZXMgaW4gdGhlIHRyYW5zYWN0aW9uIGZyb20gbGVhZGVyIGFwcGx5IHdvcmtlciB0 byBwYXJhbGxlbCBhcHBseQorICogd29ya2VyOyAoYikgYW5vdGhlciBzaG1fbXEgdGhhdCBpcyB1 c2VkIHRvIHNlbmQgZXJyb3JzIChhbmQgb3RoZXIgbWVzc2FnZXMKKyAqIHJlcG9ydGVkIHZpYSBl bG9nL2VyZXBvcnQpIGZyb20gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBsZWFkZXIgYXBw bHkKKyAqIHdvcmtlcjsgKGMpIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBiZSBzaGFyZWQgYW1v bmcgcGFyYWxsZWwgYXBwbHkgd29ya2VycworICogYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IChpLmUuIG1lbWJlcnMgb2YgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkuCisgKgorICogTG9j a2luZyBDb25zaWRlcmF0aW9ucworICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogU2luY2Ug dGhlIGRhdGFiYXNlIHN0cnVjdHVyZSAoc2NoZW1hIG9mIHN1YnNjcmlwdGlvbiB0YWJsZXMsIGNv bnN0cmFpbnRzLAorICogZXRjLikgb2YgdGhlIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBjb3Vs ZCBiZSBkaWZmZXJlbnQsIGFwcGx5aW5nCisgKiB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwgbW9k ZSBvbiB0aGUgc3Vic2NyaWJlciBzaWRlIGNhbiBjYXVzZSBzb21lCisgKiBkZWFkbG9ja3MgdGhh dCBkbyBub3Qgb2NjdXIgb24gdGhlIHB1Ymxpc2hlciBzaWRlLiBUaGlzIGNhbiBoYXBwZW4gZXZl bgorICogd2l0aG91dCBwYXJhbGxlbCBtb2RlIHdoZW4gdGhlcmUgYXJlIGNvbmN1cnJlbnQgb3Bl cmF0aW9ucyBvbiB0aGUKKyAqIHN1YnNjcmliZXIuIEluIG9yZGVyIHRvIGRldGVjdCB0aGUgZGVh ZGxvY2tzIGFtb25nIGxlYWRlciBhbmQgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMsIHdlIG5l ZWQgdG8gZW5zdXJlIHRoYXQgd2Ugd2FpdCB1c2luZyBsbWdyIGxvY2tzLiBBbiBhbHRlcm5hdGl2 ZQorICogYXBwcm9hY2ggY291bGQgYmUgdG8gbm90IGFsbG93IHBhcmFsbGVsaXNtIHdoZW4gdGhl IHNjaGVtYSBvZiB0YWJsZXMgaXMKKyAqIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBwdWJsaXNoZXIg YW5kIHN1YnNjcmliZXIgYnV0IHRoYXQgd291bGQgYmUgdG9vCisgKiByZXN0cmljdGl2ZSBhbmQg d291bGQgcmVxdWlyZSB0aGUgcHVibGlzaGVyIHRvIHNlbmQgbXVjaCBtb3JlIGluZm9ybWF0aW9u CisgKiB0aGFuIGl0IGlzIGN1cnJlbnRseSBzZW5kaW5nLgorICoKKyAqIENvbnNpZGVyIGEgY2Fz ZSB3aGVyZSB0aGUgc3Vic2NyaWJlZCB0YWJsZSBkb2VzIG5vdCBoYXZlIGEgdW5pcXVlIGtleSBv biB0aGUKKyAqIHB1Ymxpc2hlciBhbmQgaGFzIGEgdW5pcXVlIGtleSBvbiB0aGUgc3Vic2NyaWJl ci4KKyAqCisgKiAxKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFu ZCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgKFBBKSBpcyBleGVjdXRpbmcgVFgtMSBhbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKyAq IChMQSkgaXMgZXhlY3V0aW5nIFRYLTIgY29uY3VycmVudGx5IG9uIHRoZSBzdWJzY3JpYmVyLiBO b3csIExBIGlzIHdhaXRpbmcKKyAqIGZvciBQQSBiZWNhdXNlIG9mIHRoZSB1bmlxdWUga2V5IG9m IHRoZSBzdWJzY3JpYmVkIHRhYmxlIHdoaWxlIFBBIGlzIHdhaXRpbmcKKyAqIGZvciBMQSB0byBz ZW5kIHRoZSBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzIG9yIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21t YW5kCisgKiBtZXNzYWdlLgorICoKKyAqIEluIG9yZGVyIGZvciBsbWdyIHRvIGRldGVjdCB0aGlz LCB3ZSBoYXZlIExBIGFjcXVpcmUgYSBzZXNzaW9uIGxvY2sgb24gdGhlCisgKiByZW1vdGUgdHJh bnNhY3Rpb24gKGJ5IHBhX2xvY2tfc3RyZWFtKCkpIGFuZCBoYXZlIFBBIHdhaXQgb24gdGhlIGxv Y2sgYmVmb3JlCisgKiB0cnlpbmcgdG8gcmVjZWl2ZSB0aGUgbmV4dCBzdHJlYW0gb2YgY2hhbmdl cy4gU3BlY2lmaWNhbGx5LCBMQSB3aWxsIGFjcXVpcmUKKyAqIHRoZSBsb2NrIGJlZm9yZSBzZW5k aW5nIHRoZSBTVFJFQU1fU1RPUCBhbmQgd2lsbCByZWxlYXNlIGl0IGlmIGFscmVhZHkKKyAqIGFj cXVpcmVkIGJlZm9yZSBzZW5kaW5nIHRoZSBTVFJFQU1fU1RBUlQsIFNUUkVBTV9BQk9SVCAoZm9y IHRvcGxldmVsCisgKiB0cmFuc2FjdGlvbiksIFNUUkVBTV9QUkVQQVJFLCBhbmQgU1RSRUFNX0NP TU1JVC4gVGhlIFBBIHdpbGwgYWNxdWlyZSB0aGUKKyAqIGxvY2sgYWZ0ZXIgcHJvY2Vzc2luZyBT VFJFQU1fU1RPUCBhbmQgU1RSRUFNX0FCT1JUIChmb3Igc3VidHJhbnNhY3Rpb24pIGFuZAorICog dGhlbiByZWxlYXNlIHRoZSBsb2NrIGltbWVkaWF0ZWx5IGFmdGVyIGFjcXVpcmluZyBpdC4KKyAq CisgKiBUaGUgbG9jayBncmFwaCBmb3IgdGhlIGFib3ZlIGV4YW1wbGUgd2lsbCBsb29rIGFzIGZv bGxvd3M6CisgKiBMQSAod2FpdGluZyB0byBhY3F1aXJlIHRoZSBsb2NrIG9uIHRoZSB1bmlxdWUg aW5kZXgpIC0+IFBBICh3YWl0aW5nIHRvCisgKiBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jaykgLT4g TEEKKyAqCisgKiBUaGlzIHdheSwgd2hlbiBQQSBpcyB3YWl0aW5nIGZvciBMQSBmb3IgdGhlIG5l eHQgc3RyZWFtIG9mIGNoYW5nZXMsIHdlIGNhbgorICogaGF2ZSBhIHdhaXQtZWRnZSBmcm9tIFBB IHRvIExBIGluIGxtZ3IsIHdoaWNoIHdpbGwgbWFrZSB1cyBkZXRlY3QgdGhlCisgKiBkZWFkbG9j ayBiZXR3ZWVuIExBIGFuZCBQQS4KKyAqCisgKiAyKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKgorICogVGhpcyBz Y2VuYXJpbyBpcyBzaW1pbGFyIHRvIHRoZSBmaXJzdCBjYXNlIGJ1dCBUWC0xIGFuZCBUWC0yIGFy ZSBleGVjdXRlZCBieQorICogdHdvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKFBBLTEgYW5kIFBB LTIgcmVzcGVjdGl2ZWx5KS4gSW4gdGhpcyBzY2VuYXJpbywKKyAqIFBBLTIgaXMgd2FpdGluZyBm b3IgUEEtMSB0byBjb21wbGV0ZSBpdHMgdHJhbnNhY3Rpb24gd2hpbGUgUEEtMSBpcyB3YWl0aW5n CisgKiBmb3Igc3Vic2VxdWVudCBpbnB1dCBmcm9tIExBLiBBbHNvLCBMQSBpcyB3YWl0aW5nIGZv ciBQQS0yIHRvIGNvbXBsZXRlIGl0cworICogdHJhbnNhY3Rpb24gaW4gb3JkZXIgdG8gcHJlc2Vy dmUgdGhlIGNvbW1pdCBvcmRlci4gVGhlcmUgaXMgYSBkZWFkbG9jayBhbW9uZworICogdGhlIHRo cmVlIHByb2Nlc3Nlcy4KKyAqCisgKiBJbiBvcmRlciBmb3IgbG1nciB0byBkZXRlY3QgdGhpcywg d2UgaGF2ZSBQQSBhY3F1aXJlIGEgc2Vzc2lvbiBsb2NrICh0aGlzIGlzCisgKiBhIGRpZmZlcmVu dCBsb2NrIHRoYW4gcmVmZXJyZWQgaW4gcHJldmlvdXMgY2FzZSwgc2VlCisgKiBwYV9sb2NrX3Ry YW5zYWN0aW9uKCkpIG9uIHRoZSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIGFuZCBoYXZlIExB IHdhaXQgb24KKyAqIHRoZSBsb2NrIGJlZm9yZSBwcm9jZWVkaW5nIGluIHRoZSB0cmFuc2FjdGlv biBmaW5pc2ggY29tbWFuZHMuIFNwZWNpZmljYWxseSwKKyAqIFBBIHdpbGwgYWNxdWlyZSB0aGlz IGxvY2sgaW4gU2hhcmUgbW9kZSBiZWZvcmUgZXhlY3V0aW5nIHRoZSBmaXJzdCBtZXNzYWdlCisg KiBvZiB0aGUgdHJhbnNhY3Rpb24gYW5kIHJlbGVhc2UgaXQgYXQgdGhlIHhhY3QgZW5kLiBMQSB3 aWxsIGFjcXVpcmUgdGhpcyBsb2NrCisgKiBpbiBBY2Nlc3NFeGNsdXNpdmUgbW9kZSBhdCB0cmFu c2FjdGlvbiBmaW5pc2ggY29tbWFuZHMgKFNUUkVBTV9DT01NSVQgYW5kCisgKiBTVFJFQU1fUFJF UEFSRSkgYW5kIHJlbGVhc2UgaXQgaW1tZWRpYXRlbHkuCisgKgorICogVGhlIGxvY2sgZ3JhcGgg Zm9yIHRoZSBhYm92ZSBleGFtcGxlIHdpbGwgbG9vayBhcyBmb2xsb3dzOgorICogTEEgKHdhaXRp bmcgdG8gYWNxdWlyZSB0aGUgdHJhbnNhY3Rpb24gbG9jaykgLT4gUEEtMiAod2FpdGluZyB0byBh Y3F1aXJlIHRoZQorICogbG9jayBkdWUgdG8gdW5pcXVlIGluZGV4IGNvbnN0cmFpbnQpIC0+IFBB LTEgKHdhaXRpbmcgdG8gYWNxdWlyZSB0aGUgc3RyZWFtCisgKiBsb2NrKSAtPiBMQQorICoKKyAq IFRoaXMgd2F5IHdoZW4gTEEgaXMgd2FpdGluZyB0byBmaW5pc2ggdGhlIHRyYW5zYWN0aW9uIGVu ZCBjb21tYW5kIHRvIHByZXNlcnZlCisgKiB0aGUgY29tbWl0IG9yZGVyLCB3ZSB3aWxsIGJlIGFi bGUgdG8gZGV0ZWN0IGRlYWRsb2NrLCBpZiBhbnkuCisgKgorICogT25lIG1pZ2h0IHRoaW5rIHdl IGNhbiB1c2UgWGFjdExvY2tUYWJsZVdhaXQoKSwgYnV0IFhhY3RMb2NrVGFibGVXYWl0KCkKKyAq IGNvbnNpZGVycyBQUkVQQVJFRCBUUkFOU0FDVElPTiBhcyBzdGlsbCBpbiBwcm9ncmVzcyB3aGlj aCBtZWFucyB0aGUgbG9jaworICogd29uJ3QgYmUgcmVsZWFzZWQgZXZlbiBhZnRlciB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGhhcyBwcmVwYXJlZCB0aGUKKyAqIHRyYW5zYWN0aW9uLgorICoK KyAqIDMpIERlYWRsb2NrIHdoZW4gdGhlIHNobV9tcSBidWZmZXIgaXMgZnVsbAorICoKKyAqIElu IHRoZSBwcmV2aW91cyBzY2VuYXJpbyAoaWUuIFBBLTEgYW5kIFBBLTIgYXJlIGV4ZWN1dGluZyB0 cmFuc2FjdGlvbnMKKyAqIGNvbmN1cnJlbnRseSksIGlmIHRoZSBzaG1fbXEgYnVmZmVyIGJldHdl ZW4gTEEgYW5kIFBBLTIgaXMgZnVsbCwgTEEgaGFzIHRvCisgKiB3YWl0IHRvIHNlbmQgbWVzc2Fn ZXMsIGFuZCB0aGlzIHdhaXQgZG9lc24ndCBhcHBlYXIgaW4gbG1nci4KKyAqCisgKiBUbyBhdm9p ZCB0aGlzIHdhaXQsIHdlIHVzZSBhIG5vbi1ibG9ja2luZyB3cml0ZSBhbmQgd2FpdCB3aXRoIGEg dGltZW91dC4gSWYKKyAqIHRoZSB0aW1lb3V0IGlzIGV4Y2VlZGVkLCB0aGUgTEEgd2lsbCBzZXJp YWxpemUgYWxsIHRoZSBwZW5kaW5nIG1lc3NhZ2VzIHRvCisgKiBhIGZpbGUgYW5kIGluZGljYXRl IFBBLTIgdGhhdCBpdCBuZWVkcyB0byByZWFkIHRoYXQgZmlsZSBmb3IgdGhlIHJlbWFpbmluZwor ICogbWVzc2FnZXMuIFRoZW4gTEEgd2lsbCBzdGFydCB3YWl0aW5nIGZvciBjb21taXQgYXMgaW4g dGhlIHByZXZpb3VzIGNhc2UKKyAqIHdoaWNoIHdpbGwgZGV0ZWN0IGRlYWRsb2NrIGlmIGFueS4g U2VlIHBhX3NlbmRfZGF0YSgpIGFuZAorICogZW51bSBUcmFuc0FwcGx5QWN0aW9uLgorICoKKyAq IDQpIExvY2sgdHlwZXMKKyAqCisgKiBCb3RoIHRoZSBzdHJlYW0gbG9jayBhbmQgdGhlIHRyYW5z YWN0aW9uIGxvY2sgbWVudGlvbmVkIGFib3ZlIGFyZQorICogc2Vzc2lvbi1sZXZlbCBsb2NrcyBi ZWNhdXNlIGJvdGggbG9ja3MgY291bGQgYmUgYWNxdWlyZWQgb3V0c2lkZSB0aGUKKyAqIHRyYW5z YWN0aW9uLCBhbmQgdGhlIHN0cmVhbSBsb2NrIGluIHRoZSBsZWFkZXIgbmVlZHMgdG8gcGVyc2lz dCBhY3Jvc3MKKyAqIHRyYW5zYWN0aW9uIGJvdW5kYXJpZXMgaS5lLiB1bnRpbCB0aGUgZW5kIG9m IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisj aW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisjaW5j bHVkZSAibGlicHEvcHFtcS5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInBvc3Rt YXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVy LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2luY2x1ZGUgInJl cGxpY2F0aW9uL29yaWdpbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9sbWdyLmgi CisjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisj aW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgor CisjZGVmaW5lIFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDIDB4Nzg3Y2EwNjcKKworLyoKKyAq IERTTSBrZXlzIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxs ZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0 IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdlCisgKiBjYW4gdXNlIHNt YWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQJCTEK KyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX01RCQkJMgorI2RlZmluZSBQQVJBTExFTF9BUFBM WV9LRVlfRVJST1JfUVVFVUUJMworCisvKiBRdWV1ZSBzaXplIG9mIERTTSwgMTYgTUIgZm9yIG5v dy4gKi8KKyNkZWZpbmUgRFNNX1FVRVVFX1NJWkUJKDE2ICogMTAyNCAqIDEwMjQpCisKKy8qCisg KiBFcnJvciBxdWV1ZSBzaXplIG9mIERTTS4gSXQgaXMgZGVzaXJhYmxlIHRvIG1ha2UgaXQgbGFy Z2UgZW5vdWdoIHRoYXQgYQorICogdHlwaWNhbCBFcnJvclJlc3BvbnNlIGNhbiBiZSBzZW50IHdp dGhvdXQgYmxvY2tpbmcuICBUaGF0IHdheSwgYSB3b3JrZXIgdGhhdAorICogZXJyb3JzIG91dCBj YW4gd3JpdGUgdGhlIHdob2xlIG1lc3NhZ2UgaW50byB0aGUgcXVldWUgYW5kIHRlcm1pbmF0ZSB3 aXRob3V0CisgKiB3YWl0aW5nIGZvciB0aGUgdXNlciBiYWNrZW5kLgorICovCisjZGVmaW5lIERT TV9FUlJPUl9RVUVVRV9TSVpFCQkJKDE2ICogMTAyNCkKKworLyoKKyAqIFRoZXJlIGFyZSB0aHJl ZSBmaWVsZHMgaW4gZWFjaCBtZXNzYWdlIHJlY2VpdmVkIGJ5IHRoZSBwYXJhbGxlbCBhcHBseQor ICogd29ya2VyOiBzdGFydF9sc24sIGVuZF9sc24gYW5kIHNlbmRfdGltZS4gQmVjYXVzZSB3ZSBo YXZlIHVwZGF0ZWQgdGhlc2UKKyAqIHN0YXRpc3RpY3MgaW4gdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIsIHdlIGNhbiBpZ25vcmUgdGhlc2UgZmllbGRzIGluIHRoZQorICogcGFyYWxsZWwgYXBwbHkg d29ya2VyIChzZWUgZnVuY3Rpb24gTG9naWNhbFJlcEFwcGx5TG9vcCkuCisgKi8KKyNkZWZpbmUg U0laRV9TVEFUU19NRVNTQUdFICgyICogc2l6ZW9mKFhMb2dSZWNQdHIpICsgc2l6ZW9mKFRpbWVz dGFtcFR6KSkKKworLyoKKyAqIFRoZSB0eXBlIG9mIHNlc3Npb24tbGV2ZWwgbG9jayBvbiBhIHRy YW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQgb24gYSBsb2dpY2FsCisgKiByZXBsaWNhdGlvbiBzdWJz Y3JpYmVyLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNCTAKKyNkZWZp bmUgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNUCTEKKworLyoKKyAqIEhhc2ggdGFibGUgZW50cnkg dG8gbWFwIHhpZCB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlLgorICovCit0eXBl ZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhp ZDsJCQkvKiBIYXNoIGtleSAtLSBtdXN0IGJlIGZpcnN0ICovCisJUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvOworfSBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnk7CisKKy8qCisgKiBBIGhh c2ggdGFibGUgdXNlZCB0byBjYWNoZSB0aGUgc3RhdGUgb2Ygc3RyZWFtaW5nIHRyYW5zYWN0aW9u cyBiZWluZyBhcHBsaWVkCisgKiBieSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqLwor c3RhdGljIEhUQUIgKlBhcmFsbGVsQXBwbHlUeG5IYXNoID0gTlVMTDsKKworLyoKKyogQSBsaXN0 IChwb29sKSBvZiBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gVGhlIGluZm9ybWF0aW9u IGZvcgorKiB0aGUgbmV3IHdvcmtlciBpcyBhZGRlZCB0byB0aGUgbGlzdCBhZnRlciBzdWNjZXNz ZnVsbHkgbGF1bmNoaW5nIGl0LiBUaGUKKyogbGlzdCBlbnRyeSBpcyByZW1vdmVkIGlmIHRoZXJl IGFyZSBhbHJlYWR5IGVub3VnaCB3b3JrZXJzIGluIHRoZSB3b3JrZXIKKyogcG9vbCBlaXRoZXIg YXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24gb3Igd2hpbGUgdHJ5aW5nIHRvIGZpbmQgYSBm cmVlCisqIHdvcmtlciBmb3IgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLiBGb3IgbW9yZSBpbmZv cm1hdGlvbiBhYm91dCB0aGUgd29ya2VyCisqIHBvb2wsIHNlZSBjb21tZW50cyBhdG9wIHRoaXMg ZmlsZS4KKyAqLworc3RhdGljIExpc3QgKlBhcmFsbGVsQXBwbHlXb3JrZXJQb29sID0gTklMOwor CisvKgorICogSW5mb3JtYXRpb24gc2hhcmVkIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtlciBh bmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVk ICpNeVBhcmFsbGVsU2hhcmVkID0gTlVMTDsKKworLyoKKyAqIElzIHRoZXJlIGEgbWVzc2FnZSBz ZW50IGJ5IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgdGhlIGxlYWRlciBhcHBseQorICog d29ya2VyIG5lZWRzIHRvIHJlY2VpdmU/CisgKi8KK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBQYXJh bGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKKworLyoKKyAqIENhY2hlIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGFwcGx5aW5nIHRoZQor ICogY3VycmVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEl0IGlzIHVzZWQgdG8gc2F2ZSB0aGUg Y29zdCBvZiBzZWFyY2hpbmcgdGhlCisgKiBoYXNoIHRhYmxlIHdoZW4gYXBwbHlpbmcgdGhlIGNo YW5nZXMgYmV0d2VlbiBTVFJFQU1fU1RBUlQgYW5kIFNUUkVBTV9TVE9QLgorICovCitzdGF0aWMg UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOworCisv KiBBIGxpc3QgdG8gbWFpbnRhaW4gc3VidHJhbnNhY3Rpb25zLCBpZiBhbnkuICovCitzdGF0aWMg TGlzdCAqc3VieGFjdGxpc3QgPSBOSUw7CisKK3N0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2lu Zm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKK3N0YXRpYyBQYXJhbGxlbFRyYW5z U3RhdGUgcGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJl ZCk7CitzdGF0aWMgUGFydGlhbEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lk KTsKKworLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiBpdCBpcyBPSyB0byBzdGFydCBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlciwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAorcGFfY2Fu X3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKQoreworCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxp ZCh4aWQpKTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29y a2VyIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgbm90CisJICogdXNpbmcgcGFyYWxsZWwgc3RyZWFt aW5nIG1vZGUsIG9yIGlmIHRoZSBwdWJsaXNoZXIgZG9lcyBub3Qgc3VwcG9ydAorCSAqIHBhcmFs bGVsIGFwcGx5LgorCSAqLworCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBs eSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogT25seSBsZWFkZXIgYXBwbHkgd29ya2VycyBjYW4g c3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoIWFtX2xlYWRlcl9hcHBseV93 b3JrZXIoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBw YXJhbGxlbCB3b3JrZXIgaWYgdXNlciBoYXMgc2V0IHNraXBsc24gYXMgaXQncworCSAqIHBvc3Np YmxlIHRoYXQgdGhleSB3YW50IHRvIHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9y CisJICogc3RyZWFtaW5nIHRyYW5zYWN0aW9ucywgd2UgbmVlZCB0byBzZXJpYWxpemUgdGhlIHRy YW5zYWN0aW9uIHRvIGEgZmlsZQorCSAqIHNvIHRoYXQgd2UgY2FuIGdldCB0aGUgbGFzdCBMU04g b2YgdGhlIHRyYW5zYWN0aW9uIHRvIGp1ZGdlIHdoZXRoZXIgdG8KKwkgKiBza2lwIGJlZm9yZSBz dGFydGluZyB0byBhcHBseSB0aGUgY2hhbmdlLgorCSAqLworCWlmICghWExvZ1JlY1B0cklzSW52 YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbikpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJ ICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCB1c2lu ZyBhIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIg dG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYQorCSAqIHJlbGF0aW9uIHRoYXQgaXMgbm90IGluIHRo ZSBSRUFEWSBzdGF0ZSAoc2VlCisJICogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMg d2Ugd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQKKwkgKiB0aW1lLiBTbywgd2Ug ZG9uJ3Qgc3RhcnQgdGhlIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW4gdGhpcyBjYXNlLgor CSAqLworCWlmICghQWxsVGFibGVzeW5jc1JlYWR5KCkpCisJCXJldHVybiBmYWxzZTsKKworCXJl dHVybiB0cnVlOworfQorCisvKgorICogU2V0IHVwIGEgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNl Z21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEgY29udHJvbCByZWdpb24gdGhhdCBjb250YWlucyBh IGZpeGVkLXNpemUgd29ya2VyIGluZm8KKyAqIChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSwg YSBtZXNzYWdlIHF1ZXVlLCBhbmQgYW4gZXJyb3IgcXVldWUuCisgKgorICogUmV0dXJucyB0cnVl IG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCisgKi8KK3N0YXRpYyBib29sCitwYV9zZXR1 cF9kc20oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCXNobV90b2NfZXN0aW1h dG9yIGU7CisJU2l6ZQkJc2Vnc2l6ZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAg KnRvYzsKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJc2htX21xCSAgICpt cTsKKwlTaXplCQlxdWV1ZV9zaXplID0gRFNNX1FVRVVFX1NJWkU7CisJU2l6ZQkJZXJyb3JfcXVl dWVfc2l6ZSA9IERTTV9FUlJPUl9RVUVVRV9TSVpFOworCisJLyoKKwkgKiBFc3RpbWF0ZSBob3cg bXVjaCBzaGFyZWQgbWVtb3J5IHdlIG5lZWQuCisJICoKKwkgKiBCZWNhdXNlIHRoZSBUT0MgbWFj aGluZXJ5IG1heSBjaG9vc2UgdG8gaW5zZXJ0IHBhZGRpbmcgb2Ygb2RkbHktc2l6ZWQKKwkgKiBy ZXF1ZXN0cywgd2UgbXVzdCBlc3RpbWF0ZSBlYWNoIGNodW5rIHNlcGFyYXRlbHkuCisJICoKKwkg KiBXZSBuZWVkIG9uZSBrZXkgdG8gcmVnaXN0ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBoZWFkZXIs IGFuZCB0d28gb3RoZXIKKwkgKiBrZXlzIHRvIHRyYWNrIHRoZSBsb2NhdGlvbnMgb2YgdGhlIG1l c3NhZ2UgcXVldWUgYW5kIHRoZSBlcnJvciBtZXNzYWdlCisJICogcXVldWUuCisJICovCisJc2ht X3RvY19pbml0aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygm ZSwgc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRl X2NodW5rKCZlLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBlcnJv cl9xdWV1ZV9zaXplKTsKKworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmZSwgMyk7CisJc2Vnc2l6 ZSA9IHNobV90b2NfZXN0aW1hdGUoJmUpOworCisJLyogQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5 IHNlZ21lbnQgYW5kIGVzdGFibGlzaCBhIHRhYmxlIG9mIGNvbnRlbnRzLiAqLworCXNlZyA9IGRz bV9jcmVhdGUoc2htX3RvY19lc3RpbWF0ZSgmZSksIDApOworCWlmICghc2VnKQorCQlyZXR1cm4g ZmFsc2U7CisKKwl0b2MgPSBzaG1fdG9jX2NyZWF0ZShQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJ QywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcpLAorCQkJCQkJIHNlZ3NpemUpOworCisJLyogU2V0 IHVwIHRoZSBoZWFkZXIgcmVnaW9uLiAqLworCXNoYXJlZCA9IHNobV90b2NfYWxsb2NhdGUodG9j LCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCkpOworCVNwaW5Mb2NrSW5pdCgmc2hh cmVkLT5tdXRleCk7CisKKwlzaGFyZWQtPnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktO T1dOOworCXBnX2F0b21pY19pbml0X3UzMigmKHNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQp LCAwKTsKKwlzaGFyZWQtPmxhc3RfY29tbWl0X2VuZCA9IEludmFsaWRYTG9nUmVjUHRyOworCXNo YXJlZC0+ZmlsZXNldF9zdGF0ZSA9IEZTX0VNUFRZOworCisJc2htX3RvY19pbnNlcnQodG9jLCBQ QVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBzaGFyZWQpOworCisJLyogU2V0IHVwIG1lc3NhZ2Ug cXVldWUgZm9yIHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1fbXFfY3JlYXRlKHNobV90b2NfYWxs b2NhdGUodG9jLCBxdWV1ZV9zaXplKSwgcXVldWVfc2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9j LCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIG1xKTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQ cm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJd2luZm8tPm1xX2hhbmRsZSA9IHNo bV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBTZXQgdXAgZXJyb3IgcXVldWUgZm9y IHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1fbXFfY3JlYXRlKHNobV90b2NfYWxsb2NhdGUodG9j LCBlcnJvcl9xdWV1ZV9zaXplKSwKKwkJCQkJICAgZXJyb3JfcXVldWVfc2l6ZSk7CisJc2htX3Rv Y19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUsIG1xKTsKKwlzaG1f bXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCisJLyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8K Kwl3aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsK KworCS8qIFJldHVybiByZXN1bHRzIHRvIGNhbGxlci4gKi8KKwl3aW5mby0+ZHNtX3NlZyA9IHNl ZzsKKwl3aW5mby0+c2hhcmVkID0gc2hhcmVkOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisg KiBUcnkgdG8gZ2V0IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZyb20gdGhlIHBvb2wuIElmIG5v bmUgaXMgYXZhaWxhYmxlIHRoZW4KKyAqIHN0YXJ0IGEgbmV3IG9uZS4KKyAqLworc3RhdGljIFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICoKK3BhX2xhdW5jaF9wYXJhbGxlbF93b3JrZXIodm9pZCkK K3sKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJYm9vbAkJbGF1bmNoZWQ7CisJUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCUxpc3QJICAgKmFjdGl2ZV93b3JrZXJzID0gbGlz dF9jb3B5KFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKTsKKwlMaXN0Q2VsbCAgICpsYzsKKworCS8q IFRyeSB0byBnZXQgYW4gYXZhaWxhYmxlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmcm9tIHRoZSB3 b3JrZXIgcG9vbC4gKi8KKwlmb3JlYWNoKGxjLCBhY3RpdmVfd29ya2VycykKKwl7CisJCXdpbmZv ID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICog V2UgZmlyc3QgdHJ5IHRvIGZyZWUgdGhlIHdvcmtlciB0byBpbXByb3ZlIG91ciBjaGFuY2VzIG9m IGZpbmRpbmcKKwkJICogb25lIHRoYXQgaXMgbm90IGluIHVzZS4gTm9ybWFsbHksIHdlIGZyZWUg dGhlIHdvcmtlciBhZnRlciBlbnN1cmluZworCQkgKiB0aGF0IHRoZSB0cmFuc2FjdGlvbiBpcyBj b21taXR0ZWQgYnkgdGhlIHBhcmFsbGVsIHdvcmtlciBidXQgZm9yCisJCSAqIHJvbGxiYWNrcywg d2UgZG9uJ3Qgd2FpdCBmb3IgdGhlIHRyYW5zYWN0aW9uIHRvIGZpbmlzaCBzbyBjYW4ndAorCQkg KiBmcmVlIHRoZSB3b3JrZXIgaW5mb3JtYXRpb24gaW1tZWRpYXRlbHkuCisJCSAqLworCQlpZiAo cGFfZnJlZV93b3JrZXIod2luZm8pKQorCQkJY29udGludWU7CisKKwkJaWYgKCF3aW5mby0+aW5f dXNlKQorCQkJcmV0dXJuIHdpbmZvOworCX0KKworCS8qCisJICogU3RhcnQgYSBuZXcgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLgorCSAqCisJICogVGhlIHdvcmtlciBpbmZvIGNhbiBiZSB1c2VkIGZv ciB0aGUgbGlmZXRpbWUgb2YgdGhlIHdvcmtlciBwcm9jZXNzLCBzbworCSAqIGNyZWF0ZSBpdCBp biBhIHBlcm1hbmVudCBjb250ZXh0LgorCSAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCXdpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICopIHBhbGxvYzAoc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvKSk7CisKKwkvKiBT ZXR1cCBzaGFyZWQgbWVtb3J5LiAqLworCWlmICghcGFfc2V0dXBfZHNtKHdpbmZvKSkKKwl7CisJ CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwkJcGZyZWUod2luZm8pOworCQly ZXR1cm4gTlVMTDsKKwl9CisKKwlsYXVuY2hlZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChN eUxvZ2ljYWxSZXBXb3JrZXItPmRiaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwK KwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnVzZXJpZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdt ZW50X2hhbmRsZSh3aW5mby0+ZHNtX3NlZykpOworCisJaWYgKGxhdW5jaGVkKQorCXsKKwkJUGFy YWxsZWxBcHBseVdvcmtlclBvb2wgPSBsYXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLCB3 aW5mbyk7CisJfQorCWVsc2UKKwl7CisJCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCQl3 aW5mbyA9IE5VTEw7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwor CisJcmV0dXJuIHdpbmZvOworfQorCisvKgorICogQWxsb2NhdGUgYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgdGhhdCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgeGlkLgorICoKKyAqIFdl IGZpcnN0IHRyeSB0byBnZXQgYW4gYXZhaWxhYmxlIHdvcmtlciBmcm9tIHRoZSBwb29sLCBpZiBh bnkgYW5kIHRoZW4gdHJ5CisgKiB0byBsYXVuY2ggYSBuZXcgd29ya2VyLiBPbiBzdWNjZXNzZnVs IGFsbG9jYXRpb24sIHJlbWVtYmVyIHRoZSB3b3JrZXIKKyAqIGluZm9ybWF0aW9uIGluIHRoZSBo YXNoIHRhYmxlIHNvIHRoYXQgd2UgY2FuIGdldCBpdCBsYXRlciBmb3IgcHJvY2Vzc2luZyB0aGUK KyAqIHN0cmVhbWluZyBjaGFuZ2VzLgorICovCit2b2lkCitwYV9hbGxvY2F0ZV93b3JrZXIoVHJh bnNhY3Rpb25JZCB4aWQpCit7CisJYm9vbAkJZm91bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvID0gTlVMTDsKKwlQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJ aWYgKCFwYV9jYW5fc3RhcnQoeGlkKSkKKwkJcmV0dXJuOworCisJLyogRmlyc3QgdGltZSB0aHJv dWdoLCBpbml0aWFsaXplIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBzdGF0ZSBoYXNodGFibGUuICov CisJaWYgKCFQYXJhbGxlbEFwcGx5VHhuSGFzaCkKKwl7CisJCUhBU0hDVEwJCWN0bDsKKworCQlN ZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOworCQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFu c2FjdGlvbklkKTsKKwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2Vy RW50cnkpOworCQljdGwuaGN4dCA9IEFwcGx5Q29udGV4dDsKKworCQlQYXJhbGxlbEFwcGx5VHhu SGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgaGFzaCIsCisJCQkJCQkJCQkJICAgMTYsICZjdGwsCisJCQkJCQkJCQkJICAgSEFTSF9F TEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJfQorCisJLyoKKwkgKiBJdCBpcyBn b29kIHRvIGNoZWNrIGZvciBhbnkgY2hhbmdlIGluIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVy IHRvCisJICogYXZvaWQgdGhlIGNhc2Ugd2hlcmUgZm9yIGEgdmVyeSBsb25nIHRpbWUgdGhlIGNo YW5nZSBkb2Vzbid0IGdldAorCSAqIHJlZmxlY3RlZC4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhl cmUgaXMgYSBjb25zdGFudCBmbG93IG9mIHN0cmVhbWluZworCSAqIHRyYW5zYWN0aW9ucyB0aGF0 IGFyZSBoYW5kbGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisJICovCisJbWF5YmVfcmVy ZWFkX3N1YnNjcmlwdGlvbigpOworCisJd2luZm8gPSBwYV9sYXVuY2hfcGFyYWxsZWxfd29ya2Vy KCk7CisJaWYgKCF3aW5mbykKKwkJcmV0dXJuOworCisJLyogQ3JlYXRlIGFuIGVudHJ5IGZvciB0 aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5ID0gaGFzaF9zZWFyY2goUGFyYWxs ZWxBcHBseVR4bkhhc2gsICZ4aWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKGZvdW5kKQor CQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCS8qIFVwZGF0ZSB0aGUg dHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gaW4gc2hhcmVkIG1lbW9yeS4gKi8KKwlTcGluTG9ja0Fj cXVpcmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKwl3aW5mby0+c2hhcmVkLT54YWN0X3N0YXRl ID0gUEFSQUxMRUxfVFJBTlNfVU5LTk9XTjsKKwl3aW5mby0+c2hhcmVkLT54aWQgPSB4aWQ7CisJ U3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwl3aW5mby0+aW5fdXNl ID0gdHJ1ZTsKKwl3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSBmYWxzZTsKKwllbnRyeS0+d2lu Zm8gPSB3aW5mbzsKKwllbnRyeS0+eGlkID0geGlkOworfQorCisvKgorICogRmluZCB0aGUgYXNz aWduZWQgd29ya2VyIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24sIGlmIGFueS4KKyAqLworUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQp Cit7CisJYm9vbAkJZm91bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5ICplbnRyeTsKKwor CWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAo IVBhcmFsbGVsQXBwbHlUeG5IYXNoKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJldHVybiB0aGUg Y2FjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAoc3RyZWFtX2Fw cGx5X3dvcmtlcikKKwkJcmV0dXJuIHN0cmVhbV9hcHBseV93b3JrZXI7CisKKwkvKiBGaW5kIGFu IGVudHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5ID0gaGFzaF9z ZWFyY2goUGFyYWxsZWxBcHBseVR4bkhhc2gsICZ4aWQsIEhBU0hfRklORCwgJmZvdW5kKTsKKwlp ZiAoZm91bmQpCisJeworCQkvKiBUaGUgd29ya2VyIG11c3Qgbm90IGhhdmUgZXhpdGVkLiAgKi8K KwkJQXNzZXJ0KGVudHJ5LT53aW5mby0+aW5fdXNlKTsKKwkJcmV0dXJuIGVudHJ5LT53aW5mbzsK Kwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIE1ha2VzIHRoZSB3b3JrZXIgYXZhaWxh YmxlIGZvciByZXVzZS4KKyAqCisgKiBUaGlzIHJlbW92ZXMgdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBlbnRyeSBmcm9tIHRoZSBoYXNoIHRhYmxlIHNvIHRoYXQgaXQKKyAqIGNhbid0IGJlIHVz ZWQuIElmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbCwgaXQgc3RvcHMgdGhl IHdvcmtlcgorICogYW5kIGZyZWVzIHRoZSBjb3JyZXNwb25kaW5nIGluZm8uIE90aGVyd2lzZSBp dCBqdXN0IG1hcmtzIHRoZSB3b3JrZXIgYXMKKyAqIGF2YWlsYWJsZSBmb3IgcmV1c2UuCisgKgor ICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdvcmtlciBwb29sLCBzZWUgY29tbWVu dHMgYXRvcCB0aGlzIGZpbGUuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSB3b3JrZXIgaXMg c3RvcHBlZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitib29sCitwYV9mcmVlX3dvcmtlcihQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJQXNzZXJ0KCFhbV9wYXJhbGxlbF9hcHBs eV93b3JrZXIoKSk7CisKKwkvKiBXb3JrZXIgaXMgYWxyZWFkeSBhdmFpbGFibGUgZm9yIHJldXNl LiAqLworCWlmICghd2luZm8tPmluX3VzZSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBE b24ndCBmcmVlIHRoZSB3b3JrZXIgaWYgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSB3b3JrZXIgaXMg c3RpbGwgaW4KKwkgKiBwcm9ncmVzcy4gVGhpcyBjb3VsZCBoYXBwZW4gYXMgd2UgZG9uJ3Qgd2Fp dCBmb3IgdGhlIGFwcGx5IG9mIHJvbGxiYWNrCisJICogdG8gZmluaXNoLgorCSAqLworCWlmIChw YV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hF RCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKCFoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5VHhu SGFzaCwgJndpbmZvLT5zaGFyZWQtPnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwpKQorCQllbG9nKEVS Uk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCS8qCisJICogU3RvcCB0aGUgd29ya2Vy IGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4KKwkgKgorCSAqIFhYWCBB ZGRpdGlvbmFsbHksIHdlIGFsc28gc3RvcCB0aGUgd29ya2VyIGlmIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyCisJICogc2VyaWFsaXplIHBhcnQgb2YgdGhlIHRyYW5zYWN0aW9uIGRhdGEgZHVlIHRv IGEgc2VuZCB0aW1lb3V0LiBUaGlzIGlzCisJICogYmVjYXVzZSB0aGUgbWVzc2FnZSBjb3VsZCBi ZSBwYXJ0aWFsbHkgd3JpdHRlbiB0byB0aGUgcXVldWUgYW5kIHRoZXJlCisJICogaXMgbm8gd2F5 IHRvIGNsZWFuIHRoZSBxdWV1ZSBvdGhlciB0aGFuIHJlc2VuZGluZyB0aGUgbWVzc2FnZSB1bnRp bCBpdAorCSAqIHN1Y2NlZWRzLiBJbnN0ZWFkIG9mIHRyeWluZyB0byBzZW5kIHRoZSBkYXRhIHdo aWNoIGFueXdheSB3b3VsZCBoYXZlCisJICogYmVlbiBzZXJpYWxpemVkIGFuZCB0aGVuIGxldHRp bmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkZWFsIHdpdGgKKwkgKiB0aGUgc3B1cmlvdXMg bWVzc2FnZSwgd2Ugc3RvcCB0aGUgd29ya2VyLgorCSAqLworCWlmICh3aW5mby0+c2VyaWFsaXpl X2NoYW5nZXMgfHwKKwkJbGlzdF9sZW5ndGgoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpID4KKwkJ KG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyKSkKKwl7CisJ CWludAkJCXNsb3Rfbm87CisJCXVpbnQxNgkJZ2VuZXJhdGlvbjsKKworCQlTcGluTG9ja0FjcXVp cmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKKwkJZ2VuZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQt PmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisJCXNsb3Rfbm8gPSB3aW5mby0+c2hhcmVk LT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworCQlTcGluTG9ja1JlbGVhc2UoJndpbmZvLT5z aGFyZWQtPm11dGV4KTsKKworCQlsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKHNsb3Rfbm8sIGdl bmVyYXRpb24pOworCisJCXBhX2ZyZWVfd29ya2VyX2luZm8od2luZm8pOworCisJCXJldHVybiB0 cnVlOworCX0KKworCXdpbmZvLT5pbl91c2UgPSBmYWxzZTsKKwl3aW5mby0+c2VyaWFsaXplX2No YW5nZXMgPSBmYWxzZTsKKworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIEZyZWUgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbiBhbmQgdW5saW5rIHRoZSBmaWxlcyB3aXRo CisgKiBzZXJpYWxpemVkIGNoYW5nZXMgaWYgYW55LgorICovCitzdGF0aWMgdm9pZAorcGFfZnJl ZV93b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJQXNzZXJ0 KHdpbmZvKTsKKworCWlmICh3aW5mby0+bXFfaGFuZGxlKQorCQlzaG1fbXFfZGV0YWNoKHdpbmZv LT5tcV9oYW5kbGUpOworCisJaWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpCisJCXNobV9tcV9k ZXRhY2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7CisKKwkvKiBVbmxpbmsgdGhlIGZpbGVzIHdp dGggc2VyaWFsaXplZCBjaGFuZ2VzLiAqLworCWlmICh3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMp CisJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHdpbmZv LT5zaGFyZWQtPnhpZCk7CisKKwlpZiAod2luZm8tPmRzbV9zZWcpCisJCWRzbV9kZXRhY2god2lu Zm8tPmRzbV9zZWcpOworCisJLyogUmVtb3ZlIGZyb20gdGhlIHdvcmtlciBwb29sLiAqLworCVBh cmFsbGVsQXBwbHlXb3JrZXJQb29sID0gbGlzdF9kZWxldGVfcHRyKFBhcmFsbGVsQXBwbHlXb3Jr ZXJQb29sLCB3aW5mbyk7CisKKwlwZnJlZSh3aW5mbyk7Cit9CisKKy8qCisgKiBEZXRhY2ggZnJv bSB0aGUgZXJyb3JfbXFfaGFuZGxlIGZvciBlYWNoIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAq Lwordm9pZAorcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lkKQoreworCUxpc3RDZWxsICAgKmxj OworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpCisJeworCQlQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZp cnN0KGxjKTsKKworCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpOworCQl3 aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gTlVMTDsKKwl9Cit9CisKKy8qCisgKiBDaGVjayBpZiB0 aGVyZSBhcmUgYW55IHBlbmRpbmcgc3Bvb2xlZCBtZXNzYWdlcy4KKyAqLworc3RhdGljIGJvb2wK K3BhX2hhc19zcG9vbGVkX21lc3NhZ2VfcGVuZGluZygpCit7CisJUGFydGlhbEZpbGVTZXRTdGF0 ZSBmaWxlc2V0X3N0YXRlOworCisJZmlsZXNldF9zdGF0ZSA9IHBhX2dldF9maWxlc2V0X3N0YXRl KCk7CisKKwlyZXR1cm4gKGZpbGVzZXRfc3RhdGUgIT0gRlNfRU1QVFkpOworfQorCisvKgorICog UmVwbGF5IHRoZSBzcG9vbGVkIG1lc3NhZ2VzIG9uY2UgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg aGFzIGZpbmlzaGVkCisgKiBzZXJpYWxpemluZyBjaGFuZ2VzIHRvIHRoZSBmaWxlLgorICovCitz dGF0aWMgdm9pZAorcGFfc3Bvb2xlZF9tZXNzYWdlcyh2b2lkKQoreworCVBhcnRpYWxGaWxlU2V0 U3RhdGUgZmlsZXNldF9zdGF0ZTsKKworCWZpbGVzZXRfc3RhdGUgPSBwYV9nZXRfZmlsZXNldF9z dGF0ZSgpOworCisJLyoKKwkgKiBJZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBpcyBidXN5IHNl cmlhbGl6aW5nIHRoZSBwYXJ0aWFsIGNoYW5nZXMgdGhlbgorCSAqIGFjcXVpcmUgdGhlIHN0cmVh bSBsb2NrIG5vdyBhbmQgd2FpdCBmb3IgdGhlIGxlYWRlciB3b3JrZXIgdG8gZmluaXNoCisJICog c2VyaWFsaXppbmcgdGhlIGNoYW5nZXMuIE90aGVyd2lzZSwgdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciB3b24ndCBnZXQKKwkgKiBhIGNoYW5jZSB0byByZWNlaXZlIGEgU1RSRUFNX1NUT1AgKGFu ZCBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jaykgdW50aWwKKwkgKiB0aGUgbGVhZGVyIGhhZCBzZXJp YWxpemVkIGFsbCBjaGFuZ2VzIHdoaWNoIGNhbiBsZWFkIHRvIHVuZGV0ZWN0ZWQKKwkgKiBkZWFk bG9jay4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGUgZmlsZXNldCBzdGF0ZSBjYW4gYmUgRlNfU0VS SUFMSVpFX0RPTkUgb25jZSB0aGUgbGVhZGVyCisJICogd29ya2VyIGhhcyBmaW5pc2hlZCBzZXJp YWxpemluZyB0aGUgY2hhbmdlcy4KKwkgKi8KKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19TRVJJ QUxJWkVfSU5fUFJPR1JFU1MpCisJeworCQlwYV9sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVk LT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCXBhX3VubG9ja19zdHJlYW0oTXlQYXJhbGxlbFNo YXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCWZpbGVzZXRfc3RhdGUgPSBwYV9nZXRf ZmlsZXNldF9zdGF0ZSgpOworCX0KKworCS8qCisJICogV2UgY2Fubm90IHJlYWQgdGhlIGZpbGUg aW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxlYWRlciBoYXMgc2VyaWFsaXplZCBhbGwKKwkgKiBjaGFu Z2VzIHRvIHRoZSBmaWxlIGJlY2F1c2UgdGhlcmUgbWF5IHN0aWxsIGJlIG1lc3NhZ2VzIGluIHRo ZSBtZW1vcnkKKwkgKiBxdWV1ZS4gV2Ugd2lsbCBhcHBseSBhbGwgc3Bvb2xlZCBtZXNzYWdlcyB0 aGUgbmV4dCB0aW1lIHdlIGNhbGwgdGhpcworCSAqIGZ1bmN0aW9uIGFuZCB0aGF0IHdpbGwgZW5z dXJlIHRoZXJlIGFyZSBubyBtZXNzYWdlcyBsZWZ0IGluIHRoZSBtZW1vcnkKKwkgKiBxdWV1ZS4K KwkgKi8KKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19TRVJJQUxJWkVfRE9ORSkKKwl7CisJCXBh X3NldF9maWxlc2V0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIEZTX1JFQURZKTsKKwl9CisJZWxz ZSBpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19SRUFEWSkKKwl7CisJCWFwcGx5X3Nwb29sZWRfbWVz c2FnZXMoJk15UGFyYWxsZWxTaGFyZWQtPmZpbGVzZXQsCisJCQkJCQkJICAgTXlQYXJhbGxlbFNo YXJlZC0+eGlkLAorCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyKTsKKwkJcGFfc2V0X2ZpbGVz ZXRfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgRlNfRU1QVFkpOworCX0KK30KKworLyoKKyAqIElu dGVycnVwdCBoYW5kbGVyIGZvciBtYWluIGxvb3Agb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor ICovCitzdGF0aWMgdm9pZAorUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKHZvaWQpCit7 CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCWlmIChTaHV0ZG93blJlcXVlc3RQZW5kaW5n KQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBw YXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGZpbmlzaGVk IiwKKwkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCisJCXByb2NfZXhpdCgwKTsKKwl9 CisKKwlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwl7CisJCUNvbmZpZ1JlbG9hZFBlbmRpbmcg PSBmYWxzZTsKKwkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJfQorfQorCisvKiBQ YXJhbGxlbCBhcHBseSB3b3JrZXIgbWFpbiBsb29wLiAqLworc3RhdGljIHZvaWQKK0xvZ2ljYWxQ YXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICptcWgpCit7CisJc2htX21xX3Jlc3VsdCBz aG1xX3JlczsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKwlNZW1vcnlDb250 ZXh0IG9sZGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCisJLyoKKwkgKiBJbml0IHRoZSBB cHBseU1lc3NhZ2VDb250ZXh0IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggcmVwbGljYXRp b24KKwkgKiBwcm90b2NvbCBtZXNzYWdlLgorCSAqLworCUFwcGx5TWVzc2FnZUNvbnRleHQgPSBB bGxvY1NldENvbnRleHRDcmVhdGUoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJIkFwcGx5TWVz c2FnZUNvbnRleHQiLAorCQkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkv KgorCSAqIFB1c2ggYXBwbHkgZXJyb3IgY29udGV4dCBjYWxsYmFjay4gRmllbGRzIHdpbGwgYmUg ZmlsbGVkIHdoaWxlIGFwcGx5aW5nCisJICogYSBjaGFuZ2UuCisJICovCisJZXJyY2FsbGJhY2su Y2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKKwllcnJjYWxsYmFjay5wcmV2aW91cyA9 IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFj azsKKworCWZvciAoOzspCisJeworCQl2b2lkCSAgICpkYXRhOworCQlTaXplCQlsZW47CisKKwkJ UHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKCk7CisKKwkJLyogRW5zdXJlIHdlIGFyZSBy ZWFkaW5nIHRoZSBkYXRhIGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlNZW1vcnlDb250 ZXh0U3dpdGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBzaG1fbXFf cmVjZWl2ZShtcWgsICZsZW4sICZkYXRhLCB0cnVlKTsKKworCQlpZiAoc2htcV9yZXMgPT0gU0hN X01RX1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIHM7CisJCQlpbnQJCQljOworCisJ CQlpZiAobGVuID09IDApCisJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgbWVzc2FnZSBsZW5ndGgi KTsKKworCQkJcy5jdXJzb3IgPSAwOworCQkJcy5tYXhsZW4gPSAtMTsKKwkJCXMuZGF0YSA9IChj aGFyICopIGRhdGE7CisJCQlzLmxlbiA9IGxlbjsKKworCQkJLyoKKwkJCSAqIFRoZSBmaXJzdCBi eXRlIG9mIG1lc3NhZ2VzIHNlbnQgZnJvbSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvCisJCQkgKiBw YXJhbGxlbCBhcHBseSB3b3JrZXJzIGNhbiBvbmx5IGJlICd3Jy4KKwkJCSAqLworCQkJYyA9IHBx X2dldG1zZ2J5dGUoJnMpOworCQkJaWYgKGMgIT0gJ3cnKQorCQkJCWVsb2coRVJST1IsICJ1bmV4 cGVjdGVkIG1lc3NhZ2UgXCIlY1wiIiwgYyk7CisKKwkJCS8qCisJCQkgKiBJZ25vcmUgc3RhdGlz dGljcyBmaWVsZHMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0aGUgbGVhZGVyCisJCQkgKiBh cHBseSB3b3JrZXIuCisJCQkgKgorCQkJICogWFhYIFdlIGNhbiBhdm9pZCBzZW5kaW5nIHRoZSBz dGF0aXN0aWNzIGZpZWxkcyBmcm9tIHRoZSBsZWFkZXIKKwkJCSAqIGFwcGx5IHdvcmtlciBidXQg Zm9yIHRoYXQsIGl0IG5lZWRzIHRvIHJlYnVpbGQgdGhlIGVudGlyZQorCQkJICogbWVzc2FnZSBi eSByZW1vdmluZyB0aGVzZSBmaWVsZHMgd2hpY2ggY291bGQgYmUgbW9yZSB3b3JrIHRoYW4KKwkJ CSAqIHNpbXBseSBpZ25vcmluZyB0aGVzZSBmaWVsZHMgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlci4KKwkJCSAqLworCQkJcy5jdXJzb3IgKz0gU0laRV9TVEFUU19NRVNTQUdFOworCisJCQlh cHBseV9kaXNwYXRjaCgmcyk7CisJCX0KKwkJZWxzZSBpZiAoc2htcV9yZXMgPT0gU0hNX01RX1dP VUxEX0JMT0NLKQorCQl7CisJCQkvKiBSZXBsYXkgdGhlIGNoYW5nZXMgZnJvbSB0aGUgZmlsZSwg aWYgYW55LiAqLworCQkJaWYgKHBhX2hhc19zcG9vbGVkX21lc3NhZ2VfcGVuZGluZygpKQorCQkJ eworCQkJCXBhX3Nwb29sZWRfbWVzc2FnZXMoKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlp bnQJCQlyYzsKKworCQkJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4gKi8KKwkJCQlyYyA9IFdhaXRM YXRjaChNeUxhdGNoLAorCQkJCQkJCSAgIFdMX0xBVENIX1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9F WElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAgIDEwMDBMLAorCQkJCQkJCSAgIFdBSVRfRVZFTlRf TE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOKTsKKworCQkJCWlmIChyYyAmIFdMX0xBVENIX1NF VCkKKwkJCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJ CUFzc2VydChzaG1xX3JlcyA9PSBTSE1fTVFfREVUQUNIRUQpOworCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRF KSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0 aW9uIGFwcGx5IHdvcmtlciIpKSk7CisJCX0KKworCQlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlN ZXNzYWdlQ29udGV4dCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCX0KKwor CS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjay4gKi8KKwllcnJvcl9jb250ZXh0X3N0YWNr ID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0 KTsKK30KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0cmllcyB0 byByZWFkIGZyb20gb3VyIGVycm9yIHF1ZXVlIG9uZSBtb3JlCisgKiB0aW1lLiBUaGlzIGd1YXJk cyBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJlIHdlIGV4aXQgdW5jbGVhbmx5IHdpdGhvdXQgc2VuZGlu ZworICogYW4gRXJyb3JSZXNwb25zZSwgZm9yIGV4YW1wbGUgYmVjYXVzZSBzb21lIGNvZGUgY2Fs bHMgcHJvY19leGl0IGRpcmVjdGx5LgorICovCitzdGF0aWMgdm9pZAorcGFfc2h1dGRvd24oaW50 IGNvZGUsIERhdHVtIGFyZykKK3sKKwlTZW5kUHJvY1NpZ25hbChNeUxvZ2ljYWxSZXBXb3JrZXIt PmFwcGx5X2xlYWRlcl9waWQsCisJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdF LAorCQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJZHNtX2RldGFjaCgoZHNtX3NlZ21lbnQg KikgRGF0dW1HZXRQb2ludGVyKGFyZykpOworfQorCisvKgorICogUGFyYWxsZWwgYXBwbHkgd29y a2VyIGVudHJ5IHBvaW50LgorICovCit2b2lkCitQYXJhbGxlbEFwcGx5V29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZykKK3sKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQ7CisJZHNt X2hhbmRsZQloYW5kbGU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJ c2htX21xCSAgICptcTsKKwlzaG1fbXFfaGFuZGxlICptcWg7CisJc2htX21xX2hhbmRsZSAqZXJy b3JfbXFoOworCVJlcE9yaWdpbklkIG9yaWdpbmlkOworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0 dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisK KwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcuICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxI YW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdJTlQsIFNpZ25hbEhhbmRsZXJG b3JTaHV0ZG93blJlcXVlc3QpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3Vu ZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZHluYW1p YyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSwgYW5kCisJICog ZmluZCBpdHMgdGFibGUgb2YgY29udGVudHMuCisJICoKKwkgKiBMaWtlIHBhcmFsbGVsIHF1ZXJ5 LCB3ZSBkb24ndCBuZWVkIHJlc291cmNlIG93bmVyIGJ5IHRoaXMgdGltZS4gU2VlCisJICogUGFy YWxsZWxXb3JrZXJNYWluLgorCSAqLworCW1lbWNweSgmaGFuZGxlLCBNeUJnd29ya2VyRW50cnkt PmJnd19leHRyYSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwlzZWcgPSBkc21fYXR0YWNoKGhhbmRs ZSk7CisJaWYgKCFzZWcpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRv IG1hcCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwl0b2MgPSBzaG1fdG9j X2F0dGFjaChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhz ZWcpKTsKKwlpZiAoIXRvYykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJiYWQgbWFn aWMgbnVtYmVyIGluIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKworCWJlZm9y ZV9zaG1lbV9leGl0KHBhX3NodXRkb3duLCBQb2ludGVyR2V0RGF0dW0oc2VnKSk7CisKKwkvKiBM b29rIHVwIHRoZSBzaGFyZWQgaW5mb3JtYXRpb24uICovCisJc2hhcmVkID0gc2htX3RvY19sb29r dXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBmYWxzZSk7CisJTXlQYXJhbGxlbFNo YXJlZCA9IHNoYXJlZDsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBtZXNzYWdlIHF1ZXVlLgor CSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIGZh bHNlKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCW1xaCA9IHNobV9tcV9h dHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKgorCSAqIFByaW1hcnkgaW5pdGlhbGl6YXRpb24g aXMgY29tcGxldGUuIE5vdywgd2UgY2FuIGF0dGFjaCB0byBvdXIgc2xvdC4KKwkgKiBUaGlzIGlz IHRvIGVuc3VyZSB0aGF0IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGRvZXMgbm90IHdyaXRlIGRh dGEgdG8KKwkgKiB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkgcXVldWUuCisJICovCisJbG9naWNh bHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQ YXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCU15UGFyYWxsZWxTaGFyZWQtPmxvZ2ljYWxyZXBfd29y a2VyX2dlbmVyYXRpb24gPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmdlbmVyYXRpb247CisJTXlQYXJh bGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubyA9IHdvcmtlcl9zbG90OworCVNw aW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJLyoKKwkgKiBBdHRh Y2ggdG8gdGhlIGVycm9yIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQ QVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3NlbmRl cihtcSwgTXlQcm9jKTsKKwllcnJvcl9tcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwp OworCisJcHFfcmVkaXJlY3RfdG9fc2htX21xKHNlZywgZXJyb3JfbXFoKTsKKwlwcV9zZXRfcGFy YWxsZWxfbGVhZGVyKE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkJ CSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRf dGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxS ZXBXb3JrZXItPnJlcGx5X3RpbWUgPSAwOworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CisK KwkvKiBTZXR1cCByZXBsaWNhdGlvbiBvcmlnaW4gdHJhY2tpbmcuICovCisJU3RhcnRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKwlSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE15U3Vi c2NyaXB0aW9uLT5vaWQsIEludmFsaWRPaWQsCisJCQkJCQkJCQkgICBvcmlnaW5uYW1lLCBzaXpl b2Yob3JpZ2lubmFtZSkpOworCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5h bWUsIGZhbHNlKTsKKworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkb2Vzbid0 IG5lZWQgdG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0aW9uCisJICogb3JpZ2luIHdoaWNoIHdh cyBhbHJlYWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIgcHJvY2Vzcy4KKwkgKi8KKwlyZXBsb3Jp Z2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIE15TG9naWNhbFJlcFdvcmtlci0+YXBwbHlfbGVh ZGVyX3BpZCk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Igc3lz Y2FjaGUgc28gdGhhdCB3ZSBrbm93IHdoZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUg c3Vic2NyaXB0aW9uIHJlbGF0aW9uIHN0YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNo ZUNhbGxiYWNrKFNVQlNDUklQVElPTlJFTE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5bmNp bmdfdGFibGVfc3RhdGVzLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwlzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9vcmlnaW4ob3JpZ2lubmFtZSk7CisKKwlMb2dpY2FsUGFyYWxsZWxBcHBseUxv b3AobXFoKTsKKworCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtdXN0IG5vdCBn ZXQgaGVyZSBiZWNhdXNlIHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB3aWxsIG9ubHkg c3RvcCB3aGVuIGl0IHJlY2VpdmVzIGEgU0lHVEVSTSBvciBTSUdJTlQgZnJvbSB0aGUKKwkgKiBs ZWFkZXIsIGRldGVjdHMgYSBjaGFuZ2UgaW4gc3Vic2NyaXB0aW9uIGluZm9ybWF0aW9uLCBvciB3 aGVuIHRoZXJlCisJICogdGhlcmUgaXMgYW4gZXJyb3IuIE5vbmUgb2YgdGhlc2UgY2FzZXMgd2ls bCBhbGxvdyB0aGUgY29kZSB0byByZWFjaAorCSAqIGhlcmUuCisJICovCisJQXNzZXJ0KGZhbHNl KTsKK30KKworLyoKKyAqIEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5n IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG1lc3NhZ2UuCisgKgorICogTm90ZTogdGhpcyBpcyBj YWxsZWQgd2l0aGluIGEgc2lnbmFsIGhhbmRsZXIhIEFsbCB3ZSBjYW4gZG8gaXMgc2V0IGEgZmxh ZworICogdGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkgdG8g aW52b2tlCisgKiBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKS4KKyAqLwordm9pZAorSGFu ZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9pZCkKK3sKKwlJbnRlcnJ1cHRQZW5k aW5nID0gdHJ1ZTsKKwlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcgPSB0cnVlOworCVNldExh dGNoKE15TGF0Y2gpOworfQorCisvKgorICogSGFuZGxlIGEgc2luZ2xlIHByb3RvY29sIG1lc3Nh Z2UgcmVjZWl2ZWQgZnJvbSBhIHNpbmdsZSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyLgorICov CitzdGF0aWMgdm9pZAorSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2UoUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvLCBTdHJpbmdJbmZvIG1zZykKK3sKKwljaGFyCQltc2d0eXBlOworCisJ bXNndHlwZSA9IHBxX2dldG1zZ2J5dGUobXNnKTsKKworCXN3aXRjaCAobXNndHlwZSkKKwl7CisJ CWNhc2UgJ0UnOgkJCQkvKiBFcnJvclJlc3BvbnNlICovCisJCQl7CisJCQkJRXJyb3JEYXRhCWVk YXRhOworCisJCQkJLyogUGFyc2UgRXJyb3JSZXNwb25zZS4gKi8KKwkJCQlwcV9wYXJzZV9lcnJv cm5vdGljZShtc2csICZlZGF0YSk7CisKKwkJCQkvKgorCQkJCSAqIElmIGRlc2lyZWQsIGFkZCBh IGNvbnRleHQgbGluZSB0byBzaG93IHRoYXQgdGhpcyBpcyBhCisJCQkJICogbWVzc2FnZSBwcm9w YWdhdGVkIGZyb20gYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIE90aGVyd2lzZSwKKwkJCQkgKiBp dCBjYW4gc29tZXRpbWVzIGJlIGNvbmZ1c2luZyB0byB1bmRlcnN0YW5kIHdoYXQgYWN0dWFsbHkK KwkJCQkgKiBoYXBwZW5lZC4KKwkJCQkgKi8KKwkJCQlpZiAoZWRhdGEuY29udGV4dCkKKwkJCQkJ ZWRhdGEuY29udGV4dCA9IHBzcHJpbnRmKCIlc1xuJXMiLCBlZGF0YS5jb250ZXh0LAorCQkJCQkJ CQkJCQkgXygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSk7CisJ CQkJZWxzZQorCQkJCQllZGF0YS5jb250ZXh0ID0gcHN0cmR1cChfKCJsb2dpY2FsIHJlcGxpY2F0 aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKworCQkJCS8qCisJCQkJICogQ29udGV4dCBi ZXlvbmQgdGhhdCBzaG91bGQgdXNlIHRoZSBlcnJvciBjb250ZXh0IGNhbGxiYWNrcworCQkJCSAq IHRoYXQgd2VyZSBpbiBlZmZlY3QgaW4gTG9naWNhbFJlcEFwcGx5TG9vcCgpLgorCQkJCSAqLwor CQkJCWVycm9yX2NvbnRleHRfc3RhY2sgPSBhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrOworCisJ CQkJLyoKKwkJCQkgKiBUaGUgYWN0dWFsIGVycm9yIG11c3QgaGF2ZSBiZWVuIHJlcG9ydGVkIGJ5 IHRoZSBwYXJhbGxlbAorCQkJCSAqIGFwcGx5IHdvcmtlci4KKwkJCQkgKi8KKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBleGl0ZWQgZHVlIHRvIGVycm9yIiksCisJCQkJCQkgZXJyY29udGV4dCgiJXMi LCBlZGF0YS5jb250ZXh0KSkpOworCQkJfQorCisJCQkvKgorCQkJICogRG9uJ3QgbmVlZCB0byBk byBhbnl0aGluZyBhYm91dCBOb3RpY2VSZXNwb25zZSBhbmQKKwkJCSAqIE5vdGlmeVJlc3BvbnNl IGFzIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBkb2Vzbid0IG5lZWQKKwkJCSAqIHRv IHNlbmQgbWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KKwkJCSAqLworCQljYXNlICdOJzoKKwkJY2Fz ZSAnQSc6CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBtZXNzYWdlIHR5cGUgcmVjZWl2ZWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFs bGVsIGFwcGx5IHdvcmtlcjogJWMgKG1lc3NhZ2UgbGVuZ3RoICVkIGJ5dGVzKSIsCisJCQkJIG1z Z3R5cGUsIG1zZy0+bGVuKTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgYW55IHF1ZXVlZCBwcm90 b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8K K3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQoreworCUxpc3RDZWxsICAg KmxjOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCXN0YXRpYyBNZW1vcnlDb250ZXh0 IGhwYW1fY29udGV4dCA9IE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaXMgaW52b2tlZCBmcm9tIFBy b2Nlc3NJbnRlcnJ1cHRzKCksIGFuZCBzaW5jZSBzb21lIG9mIHRoZQorCSAqIGZ1bmN0aW9ucyBp dCBjYWxscyBjb250YWluIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIHRoZXJlIGlzIGEgcG90ZW50 aWFsCisJICogZm9yIHJlY3Vyc2l2ZSBjYWxscyBpZiBtb3JlIHNpZ25hbHMgYXJlIHJlY2VpdmVk IHdoaWxlIHRoaXMgcnVucy4gSXQncworCSAqIHVuY2xlYXIgdGhhdCByZWN1cnNpdmUgZW50cnkg d291bGQgYmUgc2FmZSwgYW5kIGl0IGRvZXNuJ3Qgc2VlbSB1c2VmdWwKKwkgKiBldmVuIGlmIGl0 IGlzIHNhZmUsIHNvIGxldCdzIGJsb2NrIGludGVycnVwdHMgdW50aWwgZG9uZS4KKwkgKi8KKwlI T0xEX0lOVEVSUlVQVFMoKTsKKworCS8qCisJICogTW9yZW92ZXIsIEN1cnJlbnRNZW1vcnlDb250 ZXh0IG1pZ2h0IGJlIHBvaW50aW5nIGFsbW9zdCBhbnl3aGVyZS4gV2UKKwkgKiBkb24ndCB3YW50 IHRvIHJpc2sgbGVha2luZyBkYXRhIGludG8gbG9uZy1saXZlZCBjb250ZXh0cywgc28gbGV0J3Mg ZG8KKwkgKiBvdXIgd29yayBoZXJlIGluIGEgcHJpdmF0ZSBjb250ZXh0IHRoYXQgd2UgY2FuIHJl c2V0IG9uIGVhY2ggdXNlLgorCSAqLworCWlmICghaHBhbV9jb250ZXh0KQkJCS8qIGZpcnN0IHRp bWUgdGhyb3VnaD8gKi8KKwkJaHBhbV9jb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRv cE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCSAiSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2Vz IiwKKwkJCQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCWVsc2UKKwkJTWVtb3J5 Q29udGV4dFJlc2V0KGhwYW1fY29udGV4dCk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGhwYW1fY29udGV4dCk7CisKKwlQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcg PSBmYWxzZTsKKworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKQorCXsKKwkJ c2htX21xX3Jlc3VsdCByZXM7CisJCVNpemUJCW5ieXRlczsKKwkJdm9pZAkgICAqZGF0YTsKKwkJ UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogVGhlIGxlYWRlciB3aWxsIGRldGFjaCBmcm9t IHRoZSBlcnJvciBxdWV1ZSBhbmQgc2V0IGl0IHRvIE5VTEwKKwkJICogYmVmb3JlIHByZXBhcmlu ZyB0byBzdG9wIGFsbCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBzbyB3ZSBkb24ndAorCQkgKiBu ZWVkIHRvIGhhbmRsZSBlcnJvciBtZXNzYWdlcyBhbnltb3JlLiBTZWUKKwkJICogbG9naWNhbHJl cF93b3JrZXJfZGV0YWNoLgorCQkgKi8KKwkJaWYgKCF3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKQor CQkJY29udGludWU7CisKKwkJcmVzID0gc2htX21xX3JlY2VpdmUod2luZm8tPmVycm9yX21xX2hh bmRsZSwgJm5ieXRlcywgJmRhdGEsIHRydWUpOworCisJCWlmIChyZXMgPT0gU0hNX01RX1dPVUxE X0JMT0NLKQorCQkJY29udGludWU7CisJCWVsc2UgaWYgKHJlcyA9PSBTSE1fTVFfU1VDQ0VTUykK KwkJeworCQkJU3RyaW5nSW5mb0RhdGEgbXNnOworCisJCQlpbml0U3RyaW5nSW5mbygmbXNnKTsK KwkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJm1zZywgZGF0YSwgbmJ5dGVzKTsKKwkJCUhhbmRs ZVBhcmFsbGVsQXBwbHlNZXNzYWdlKHdpbmZvLCAmbXNnKTsKKwkJCXBmcmVlKG1zZy5kYXRhKTsK KwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25u ZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIp KSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCisJLyogTWln aHQgYXMgd2VsbCBjbGVhciB0aGUgY29udGV4dCBvbiBvdXIgd2F5IG91dCAqLworCU1lbW9yeUNv bnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJUkVTVU1FX0lOVEVSUlVQVFMoKTsKK30KKwor LyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgdmlhIHNoYXJlZC1tZW1vcnkKKyAqIHF1ZXVlLgorICoKKyAqIFJldHVybiBmYWxzZSBpZiB0 aGUgYXR0ZW1wdCB0byBzZW5kIGRhdGEgdmlhIHNoYXJlZCBtZW1vcnkgdGltZXMgb3V0LCB0cnVl CisgKiBvdGhlcndpc2UuCisgKi8KK2Jvb2wKK3BhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRhKQoreworCWludAkJ CXJjOworCXNobV9tcV9yZXN1bHQgcmVzdWx0OworCVRpbWVzdGFtcFR6IHN0YXJ0VGltZSA9IDA7 CisKKwlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKwlBc3NlcnQoIXdpbmZvLT5zZXJp YWxpemVfY2hhbmdlcyk7CisKKyNkZWZpbmUgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMgMTAw MAorI2RlZmluZSBTSE1fU0VORF9USU1FT1VUX01TCQkoMTAwMDAgLSBTSE1fU0VORF9SRVRSWV9J TlRFUlZBTF9NUykKKworCWZvciAoOzspCisJeworCQlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3aW5m by0+bXFfaGFuZGxlLCBuYnl0ZXMsIGRhdGEsIHRydWUsIHRydWUpOworCisJCWlmIChyZXN1bHQg PT0gU0hNX01RX1NVQ0NFU1MpCisJCQlyZXR1cm4gdHJ1ZTsKKwkJZWxzZSBpZiAocmVzdWx0ID09 IFNITV9NUV9ERVRBQ0hFRCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjb3Vs ZCBub3Qgc2VuZCBkYXRhIHRvIHNoYXJlZC1tZW1vcnkgcXVldWUiKSkpOworCisJCUFzc2VydChy ZXN1bHQgPT0gU0hNX01RX1dPVUxEX0JMT0NLKTsKKworCQkvKiBXYWl0IGJlZm9yZSByZXRyeWlu Zy4gKi8KKwkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJICAgV0xfTEFUQ0hfU0VUIHwg V0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCSAgIFNITV9TRU5EX1JFVFJZ X0lOVEVSVkFMX01TLAorCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlf U1RBVEVfQ0hBTkdFKTsKKworCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCXsKKwkJCVJlc2V0 TGF0Y2goTXlMYXRjaCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisKKwkJaWYg KHN0YXJ0VGltZSA9PSAwKQorCQkJc3RhcnRUaW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwor CQllbHNlIGlmIChUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVkcyhzdGFydFRpbWUsIEdldEN1cnJl bnRUaW1lc3RhbXAoKSwKKwkJCQkJCQkJCQkJU0hNX1NFTkRfVElNRU9VVF9NUykpCisJCXsKKwkJ CWVyZXBvcnQoTE9HLAorCQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdv cmtlciB3aWxsIHNlcmlhbGl6ZSB0aGUgcmVtYWluaW5nIGNoYW5nZXMgb2YgcmVtb3RlIHRyYW5z YWN0aW9uICV1IHRvIGEgZmlsZSIsCisJCQkJCQkJd2luZm8tPnNoYXJlZC0+eGlkKSkpOworCQkJ cmV0dXJuIGZhbHNlOworCQl9CisJfQorfQorCisvKgorICogU3dpdGNoIHRvIFBBUlRJQUxfU0VS SUFMSVpFIG1vZGUgZm9yIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIC0tIHRoaXMgbWVhbnMKKyAq IHRoYXQgdGhlIGN1cnJlbnQgZGF0YSBhbmQgYW55IHN1YnNlcXVlbnQgZGF0YSBmb3IgdGhpcyB0 cmFuc2FjdGlvbiB3aWxsIGJlCisgKiBzZXJpYWxpemVkIHRvIGEgZmlsZS4gVGhpcyBpcyBkb25l IHRvIHByZXZlbnQgcG9zc2libGUgZGVhZGxvY2tzIHdpdGgKKyAqIGFub3RoZXIgcGFyYWxsZWwg YXBwbHkgd29ya2VyIChyZWZlciB0byB0aGUgY29tbWVudHMgYXRvcCB0aGlzIGZpbGUpLgorICov Cit2b2lkCitwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUoUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvLAorCQkJCQkJCSAgIGJvb2wgc3RyZWFtX2xvY2tlZCkKK3sKKwkvKgorCSAq IFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY291bGQgYmUgc3R1Y2sgZm9yIHNvbWUgcmVhc29u IChzYXkgd2FpdGluZworCSAqIG9uIHNvbWUgbG9jayBieSBvdGhlciBiYWNrZW5kKSwgc28gc3Rv cCB0cnlpbmcgdG8gc2VuZCBkYXRhIGRpcmVjdGx5IHRvCisJICogaXQgYW5kIHN0YXJ0IHNlcmlh bGl6aW5nIGRhdGEgdG8gdGhlIGZpbGUgaW5zdGVhZC4KKwkgKi8KKwl3aW5mby0+c2VyaWFsaXpl X2NoYW5nZXMgPSB0cnVlOworCisJLyogSW5pdGlhbGl6ZSB0aGUgc3RyZWFtIGZpbGVzZXQuICov CisJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHdpbmZvLT5zaGFyZWQtPnhpZCwgdHJ1ZSk7CisKKwkv KgorCSAqIEFjcXVpcmVzIHRoZSBzdHJlYW0gbG9jayBpZiBub3QgYWxyZWFkeSB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIgd2lsbCB3YWl0IGZvciB0aGUg bGVhZGVyIHRvIHJlbGVhc2UgdGhlIHN0cmVhbSBsb2NrIHVudGlsCisJICogdGhlIGVuZCBvZiB0 aGUgdHJhbnNhY3Rpb24uCisJICovCisJaWYgKCFzdHJlYW1fbG9ja2VkKQorCQlwYV9sb2NrX3N0 cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJcGFfc2V0 X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTKTsK K30KKworLyoKKyAqIFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcidzIHRyYW5z YWN0aW9uIHN0YXRlIGhhcyByZWFjaGVkIG9yCisgKiBleGNlZWRlZCB0aGUgZ2l2ZW4geGFjdF9z dGF0ZS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3dhaXRfZm9yX3hhY3Rfc3RhdGUoUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvLAorCQkJCQkgICBQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9z dGF0ZSkKK3sKKwlmb3IgKDs7KQorCXsKKwkJLyoKKwkJICogU3RvcCBpZiB0aGUgdHJhbnNhY3Rp b24gc3RhdGUgaGFzIHJlYWNoZWQgb3IgZXhjZWVkZWQgdGhlIGdpdmVuCisJCSAqIHhhY3Rfc3Rh dGUuCisJCSAqLworCQlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgPj0geGFj dF9zdGF0ZSkKKwkJCWJyZWFrOworCisJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQko dm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9V VCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCQkgMTBMLAorCQkJCQkJIFdBSVRfRVZFTlRf TE9HSUNBTF9QQVJBTExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRoZSBs YXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJCS8q IEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICov CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICogV2FpdCB1bnRpbCB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJ3MgdHJhbnNhY3Rpb24gZmluaXNoZXMuCisgKi8KK3N0 YXRpYyB2b2lkCitwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm8pCit7CisJLyoKKwkgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgc2V0IHRoZSBzdGF0ZSB0bworCSAqIFBBUkFMTEVMX1RSQU5TX1NUQVJURUQgd2hpY2ggbWVh bnMgaXQgaGFzIGFjcXVpcmVkIHRoZSB0cmFuc2FjdGlvbgorCSAqIGxvY2suIFRoaXMgaXMgdG8g cHJldmVudCBsZWFkZXIgYXBwbHkgd29ya2VyIGZyb20gYWNxdWlyaW5nIHRoZQorCSAqIHRyYW5z YWN0aW9uIGxvY2sgZWFybGllciB0aGFuIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICov CisJcGFfd2FpdF9mb3JfeGFjdF9zdGF0ZSh3aW5mbywgUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCk7 CisKKwkvKgorCSAqIFdhaXQgZm9yIHRoZSB0cmFuc2FjdGlvbiBsb2NrIHRvIGJlIHJlbGVhc2Vk LiBUaGlzIGlzIHJlcXVpcmVkIHRvCisJICogZGV0ZWN0IGRlYWRsb2NrIGFtb25nIGxlYWRlciBh bmQgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gUmVmZXIgdG8gdGhlCisJICogY29tbWVudHMgYXRv cCB0aGlzIGZpbGUuCisJICovCisJcGFfbG9ja190cmFuc2FjdGlvbih3aW5mby0+c2hhcmVkLT54 aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFy ZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhlIHN0YXRl IGJlY29tZXMgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQgaW4gY2FzZSB0aGUgcGFyYWxsZWwKKwkg KiBhcHBseSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMgY2F1c2luZyB0aGUg bG9jayB0byBiZQorCSAqIHJlbGVhc2VkLgorCSAqLworCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3 aW5mby0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRF KSwKKwkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRp b24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpKTsKK30KKworLyoKKyAqIFNldCB0aGUgdHJhbnNh Y3Rpb24gc3RhdGUgZm9yIGEgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2b2lk CitwYV9zZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAor CQkJCSAgUGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3RhdGUpCit7CisJU3BpbkxvY2tBY3F1aXJl KCZ3c2hhcmVkLT5tdXRleCk7CisJd3NoYXJlZC0+eGFjdF9zdGF0ZSA9IHhhY3Rfc3RhdGU7CisJ U3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIHRy YW5zYWN0aW9uIHN0YXRlIGZvciBhIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwor c3RhdGljIFBhcmFsbGVsVHJhbnNTdGF0ZQorcGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBs eVdvcmtlclNoYXJlZCAqd3NoYXJlZCkKK3sKKwlQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0 ZTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXhhY3Rfc3RhdGUgPSB3 c2hhcmVkLT54YWN0X3N0YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOwor CisJcmV0dXJuIHhhY3Rfc3RhdGU7Cit9CisKKy8qCisgKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGluZm9ybWF0aW9uLgorICovCit2b2lkCitwYV9zZXRfc3RyZWFtX2FwcGx5X3dv cmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJc3RyZWFtX2FwcGx5X3dv cmtlciA9IHdpbmZvOworfQorCisvKgorICogRm9ybSBhIHVuaXF1ZSBzYXZlcG9pbnQgbmFtZSBm b3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgZGlmZmVyZW50 IHN1YnNjcmlwdGlvbnMgZm9yIHB1YmxpY2F0aW9ucyBvbiBkaWZmZXJlbnQgbm9kZXMgY2FuCisg KiByZWNlaXZlIHNhbWUgcmVtb3RlIHhpZCwgc28gd2UgbmVlZCB0byB1c2Ugc3Vic2NyaXB0aW9u IGlkIGFsb25nIHdpdGggaXQuCisgKgorICogUmV0dXJuIHRoZSBuYW1lIGluIHRoZSBzdXBwbGll ZCBidWZmZXIuCisgKi8KK3N0YXRpYyB2b2lkCitwYV9zYXZlcG9pbnRfbmFtZShPaWQgc3Vib2lk LCBUcmFuc2FjdGlvbklkIHhpZCwgY2hhciAqc3BuYW1lLCBTaXplIHN6c3ApCit7CisJc25wcmlu dGYoc3BuYW1lLCBzenNwLCAicGdfc3BfJXVfJXUiLCBzdWJvaWQsIHhpZCk7Cit9CisKKy8qCisg KiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgaWYgbmVlZGVkLgorICoKKyAqIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuIGZpZ3Vy ZSBvdXQgaWYgYSBuZXcgc3VidHJhbnNhY3Rpb24gd2FzCisgKiBzdGFydGVkIGJ5IGNoZWNraW5n IGlmIHRoZSBuZXcgY2hhbmdlIGFycml2ZWQgd2l0aCBhIGRpZmZlcmVudCB4aWQuIEluIHRoYXQK KyAqIGNhc2UgZGVmaW5lIGEgbmFtZWQgc2F2ZXBvaW50LCBzbyB0aGF0IHdlIGFyZSBhYmxlIHRv IHJvbGxiYWNrIHRvIGl0CisgKiBpZiByZXF1aXJlZC4KKyAqLwordm9pZAorcGFfc3RhcnRfc3Vi dHJhbnMoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rpb25JZCB0b3BfeGlkKQor eworCWlmIChjdXJyZW50X3hpZCAhPSB0b3BfeGlkICYmCisJCSFsaXN0X21lbWJlcl94aWQoc3Vi eGFjdGxpc3QsIGN1cnJlbnRfeGlkKSkKKwl7CisJCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQlj aGFyCQlzcG5hbWVbTkFNRURBVEFMRU5dOworCisJCXBhX3NhdmVwb2ludF9uYW1lKE15U3Vic2Ny aXB0aW9uLT5vaWQsIGN1cnJlbnRfeGlkLAorCQkJCQkJICBzcG5hbWUsIHNpemVvZihzcG5hbWUp KTsKKworCQllbG9nKERFQlVHMSwgImRlZmluaW5nIHNhdmVwb2ludCAlcyBpbiBsb2dpY2FsIHJl cGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIsIHNwbmFtZSk7CisKKwkJLyogV2UgbXVz dCBiZSBpbiB0cmFuc2FjdGlvbiBibG9jayB0byBkZWZpbmUgdGhlIFNBVkVQT0lOVC4gKi8KKwkJ aWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJeworCQkJaWYgKCFJc1RyYW5zYWN0aW9uU3Rh dGUoKSkKKwkJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlCZWdpblRyYW5zYWN0 aW9uQmxvY2soKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKKwkJRGVm aW5lU2F2ZXBvaW50KHNwbmFtZSk7CisKKwkJLyoKKwkJICogQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kIGlzIG5lZWRlZCB0byBzdGFydCBhIHN1YnRyYW5zYWN0aW9uIGFmdGVyCisJCSAqIGlzc3Vp bmcgYSBTQVZFUE9JTlQgaW5zaWRlIGEgdHJhbnNhY3Rpb24gYmxvY2sgKHNlZQorCQkgKiBTdGFy dFN1YlRyYW5zYWN0aW9uKCkpLgorCQkgKi8KKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisKKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29udGV4 dCk7CisJCXN1YnhhY3RsaXN0ID0gbGFwcGVuZF94aWQoc3VieGFjdGxpc3QsIGN1cnJlbnRfeGlk KTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorfQorCisvKiBSZXNldCB0 aGUgbGlzdCB0aGF0IG1haW50YWlucyBzdWJ0cmFuc2FjdGlvbnMuICovCit2b2lkCitwYV9yZXNl dF9zdWJ0cmFucyh2b2lkKQoreworCS8qCisJICogV2UgZG9uJ3QgbmVlZCB0byBmcmVlIHRoaXMg ZXhwbGljaXRseSBhcyB0aGUgYWxsb2NhdGVkIG1lbW9yeSB3aWxsIGJlCisJICogZnJlZWQgYXQg dGhlIHRyYW5zYWN0aW9uIGVuZC4KKwkgKi8KKwlzdWJ4YWN0bGlzdCA9IE5JTDsKK30KKworLyoK KyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMg YXBwbGllZCBpbiBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX3N0 cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKQoreworCVRy YW5zYWN0aW9uSWQgeGlkID0gYWJvcnRfZGF0YS0+eGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlk ID0gYWJvcnRfZGF0YS0+c3VieGlkOworCisJLyoKKwkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNv IHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QgcG9zaXRpb24KKwkgKiBpbiBj YXNlIG9mIGNyYXNoLgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gYWJv cnRfZGF0YS0+YWJvcnRfbHNuOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1w ID0gYWJvcnRfZGF0YS0+YWJvcnRfdGltZTsKKworCS8qCisJICogSWYgdGhlIHR3byBYSURzIGFy ZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCisJICog anVzdCBmcmVlIHRoZSBzdWJ4YWN0bGlzdC4KKwkgKi8KKwlpZiAoc3VieGlkID09IHhpZCkKKwl7 CisJCS8qCisJCSAqIFJlbGVhc2UgdGhlIGxvY2sgYXMgd2UgbWlnaHQgYmUgcHJvY2Vzc2luZyBh biBlbXB0eSBzdHJlYW1pbmcKKwkJICogdHJhbnNhY3Rpb24gaW4gd2hpY2ggY2FzZSB0aGUgbG9j ayB3b24ndCBiZSByZWxlYXNlZCBkdXJpbmcKKwkJICogdHJhbnNhY3Rpb24gcm9sbGJhY2suCisJ CSAqLworCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsK KworCQlBYm9ydEN1cnJlbnRUcmFuc2FjdGlvbigpOworCisJCWlmIChJc1RyYW5zYWN0aW9uQmxv Y2soKSkKKwkJeworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCisJCXBhX3Jlc2V0X3N1YnRyYW5zKCk7CisKKwkJcGdz dGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKworCQlwYV9zZXRfeGFjdF9z dGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisJfQorCWVs c2UKKwl7CisJCS8qIE9LLCBzbyBpdCdzIGEgc3VieGFjdC4gUm9sbGJhY2sgdG8gdGhlIHNhdmVw b2ludC4gKi8KKwkJaW50CQkJaTsKKwkJY2hhcgkJc3BuYW1lW05BTUVEQVRBTEVOXTsKKworCQlw YV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBzdWJ4aWQsIHNwbmFtZSwgc2l6 ZW9mKHNwbmFtZSkpOworCisJCWVsb2coREVCVUcxLCAicm9sbGluZyBiYWNrIHRvIHNhdmVwb2lu dCAlcyBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIsIHNwbmFt ZSk7CisKKwkJLyoKKwkJICogU2VhcmNoIHRoZSBzdWJ4YWN0bGlzdCwgZGV0ZXJtaW5lIHRoZSBv ZmZzZXQgdHJhY2tlZCBmb3IgdGhlCisJCSAqIHN1YnhhY3QsIGFuZCB0cnVuY2F0ZSB0aGUgbGlz dC4KKwkJICoKKwkJICogTm90ZSB0aGF0IGZvciBhbiBlbXB0eSBzdWItdHJhbnNhY3Rpb24gd2Ug d29uJ3QgZmluZCB0aGUgc3VieGlkCisJCSAqIGhlcmUuCisJCSAqLworCQlmb3IgKGkgPSBsaXN0 X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJeworCQkJVHJhbnNhY3Rp b25JZCB4aWRfdG1wID0gbGZpcnN0X3hpZChsaXN0X250aF9jZWxsKHN1YnhhY3RsaXN0LCBpKSk7 CisKKwkJCWlmICh4aWRfdG1wID09IHN1YnhpZCkKKwkJCXsKKwkJCQlSb2xsYmFja1RvU2F2ZXBv aW50KHNwbmFtZSk7CisJCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkJc3VieGFj dGxpc3QgPSBsaXN0X3RydW5jYXRlKHN1YnhhY3RsaXN0LCBpKTsKKwkJCQlicmVhazsKKwkJCX0K KwkJfQorCX0KK30KKworLyoKKyAqIFNldCB0aGUgZmlsZXNldCBzdGF0ZSBmb3IgYSBwYXJ0aWN1 bGFyIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gVGhlIGZpbGVzZXQKKyAqIHdpbGwgYmUgc2V0IG9u Y2UgdGhlIGxlYWRlciB3b3JrZXIgc2VyaWFsaXplZCBhbGwgY2hhbmdlcyB0byB0aGUgZmlsZQor ICogc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8K K3ZvaWQKK3BhX3NldF9maWxlc2V0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndz aGFyZWQsCisJCQkJCSBQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGUpCit7CisJU3Bp bkxvY2tBY3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJd3NoYXJlZC0+ZmlsZXNldF9zdGF0ZSA9 IGZpbGVzZXRfc3RhdGU7CisKKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19TRVJJQUxJWkVfRE9O RSkKKwl7CisJCUFzc2VydChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpOworCQlBc3NlcnQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisJCXdzaGFyZWQtPmZpbGVzZXQgPSAq TXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldDsKKwl9CisKKwlTcGluTG9ja1JlbGVh c2UoJndzaGFyZWQtPm11dGV4KTsKK30KKworLyoKKyAqIEdldCB0aGUgZmlsZXNldCBzdGF0ZSBm b3IgdGhlIGN1cnJlbnQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCitzdGF0aWMgUGFydGlh bEZpbGVTZXRTdGF0ZQorcGFfZ2V0X2ZpbGVzZXRfc3RhdGUodm9pZCkKK3sKKwlQYXJ0aWFsRmls ZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisKKwlBc3NlcnQoYW1fcGFyYWxsZWxfYXBwbHlfd29y a2VyKCkpOworCisJU3BpbkxvY2tBY3F1aXJlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisJ ZmlsZXNldF9zdGF0ZSA9IE15UGFyYWxsZWxTaGFyZWQtPmZpbGVzZXRfc3RhdGU7CisJU3Bpbkxv Y2tSZWxlYXNlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisKKwlyZXR1cm4gZmlsZXNldF9z dGF0ZTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbnMgdG8gYWNxdWlyZSBhbmQgcmVsZWFz ZSBhIGxvY2sgZm9yIGVhY2ggc3RyZWFtIGJsb2NrLgorICoKKyAqIFNldCBsb2NrdGFnX2ZpZWxk NCB0byBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVBTSB0byBpbmRpY2F0ZSB0aGF0IGl0J3MgYQor ICogc3RyZWFtIGxvY2suCisgKgorICogUmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AgdGhpcyBm aWxlIHRvIHNlZSBob3cgdGhlIHN0cmVhbSBsb2NrIGlzIHVzZWQuCisgKi8KK3ZvaWQKK3BhX2xv Y2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMb2Nr QXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlk LAorCQkJCQkJCQkgICBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVBTSwgbG9ja21vZGUpOworfQor Cit2b2lkCitwYV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2Nr bW9kZSkKK3sKKwlVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBX b3JrZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCQkgUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0s IGxvY2ttb2RlKTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5jdGlvbnMgdG8gYWNxdWlyZSBhbmQg cmVsZWFzZSBhIGxvY2sgZm9yIGVhY2ggbG9jYWwgdHJhbnNhY3Rpb24KKyAqIGFwcGx5LgorICoK KyAqIFNldCBsb2NrdGFnX2ZpZWxkNCB0byBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QgdG8gaW5k aWNhdGUgdGhhdCBpdCdzIGEKKyAqIHRyYW5zYWN0aW9uIGxvY2suCisgKgorICogTm90ZSB0aGF0 IGFsbCB0aGUgY2FsbGVycyBtdXN0IHBhc3MgYSByZW1vdGUgdHJhbnNhY3Rpb24gSUQgaW5zdGVh ZCBvZiBhCisgKiBsb2NhbCB0cmFuc2FjdGlvbiBJRCBhcyB4aWQuIFRoaXMgaXMgYmVjYXVzZSB0 aGUgbG9jYWwgdHJhbnNhY3Rpb24gSUQgd2lsbAorICogb25seSBiZSBhc3NpZ25lZCB3aGlsZSBh cHBseWluZyB0aGUgZmlyc3QgY2hhbmdlIGluIHRoZSBwYXJhbGxlbCBhcHBseSBidXQKKyAqIGl0 J3MgcG9zc2libGUgdGhhdCB0aGUgZmlyc3QgY2hhbmdlIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaXMgYmxvY2tlZAorICogYnkgYSBjb25jdXJyZW50bHkgZXhlY3V0aW5nIHRyYW5zYWN0 aW9uIGluIGFub3RoZXIgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBXZQorICogY2FuIG9ubHkgY29t bXVuaWNhdGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIGlkIHRvIHRoZSBsZWFkZXIgYWZ0ZXIgYXBw bHlpbmcKKyAqIHRoZSBmaXJzdCBjaGFuZ2Ugc28gaXQgd29uJ3QgYmUgYWJsZSB0byB3YWl0IGFm dGVyIHNlbmRpbmcgdGhlIHhhY3QgZmluaXNoCisgKiBjb21tYW5kIHVzaW5nIHRoaXMgbG9jay4K KyAqCisgKiBSZWZlciB0byB0aGUgY29tbWVudHMgYXRvcCB0aGlzIGZpbGUgdG8gc2VlIGhvdyB0 aGUgdHJhbnNhY3Rpb24gbG9jayBpcworICogdXNlZC4KKyAqLwordm9pZAorcGFfbG9ja190cmFu c2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJTG9ja0Fw cGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCwK KwkJCQkJCQkJICAgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNULCBsb2NrbW9kZSk7Cit9CisKK3Zv aWQKK3BhX3VubG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9j a21vZGUpCit7CisJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVw V29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkJIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVCwg bG9ja21vZGUpOworfQorCisvKgorICogRGVjcmVtZW50IHRoZSBudW1iZXIgb2YgcGVuZGluZyBz dHJlYW1pbmcgYmxvY2tzIGFuZCB3YWl0IG9uIHRoZSBzdHJlYW0gbG9jaworICogaWYgdGhlcmUg aXMgbm8gcGVuZGluZyBibG9jayBhdmFpbGFibGUuCisgKi8KK3ZvaWQKK3BhX2RlY3JfYW5kX3dh aXRfc3RyZWFtX2Jsb2NrKHZvaWQpCit7CisJQXNzZXJ0KGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtl cigpKTsKKworCS8qCisJICogSXQgaXMgb25seSBwb3NzaWJsZSB0byBub3QgaGF2ZSBhbnkgcGVu ZGluZyBzdHJlYW0gY2h1bmtzIHdoZW4gd2UgYXJlCisJICogYXBwbHlpbmcgc3Bvb2xlZCBtZXNz YWdlcy4KKwkgKi8KKwlpZiAocGdfYXRvbWljX3JlYWRfdTMyKCZNeVBhcmFsbGVsU2hhcmVkLT5w ZW5kaW5nX3N0cmVhbV9jb3VudCkgPT0gMCkKKwl7CisJCWlmIChwYV9oYXNfc3Bvb2xlZF9tZXNz YWdlX3BlbmRpbmcoKSkKKwkJCXJldHVybjsKKworCQllbG9nKEVSUk9SLCAiaW52YWxpZCBwZW5k aW5nIHN0cmVhbWluZyBjaHVuayAwIik7CisJfQorCisJaWYgKHBnX2F0b21pY19zdWJfZmV0Y2hf dTMyKCZNeVBhcmFsbGVsU2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCwgMSkgPT0gMCkKKwl7 CisJCXBhX2xvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNzU2hhcmVMb2Nr KTsKKwkJcGFfdW5sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc1NoYXJl TG9jayk7CisJfQorfQorCisvKgorICogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KKyAqLwordm9pZAorcGFfeGFj dF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBYTG9nUmVjUHRyIHJlbW90 ZV9sc24pCit7CisJQXNzZXJ0KGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSk7CisKKwkvKgorCSAq IFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkgd29y a2VyIGNhbgorCSAqIGNvbnRpbnVlIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCisJICov CisJcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxv Y2spOworCisJLyoKKwkgKiBXYWl0IGZvciB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMg bmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWls dXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCSAqIGRlYWRsb2Nrcy4K KwkgKi8KKwlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CisKKwlzdG9yZV9mbHVzaF9w b3NpdGlvbihyZW1vdGVfbHNuLCB3aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQpOworCSh2 b2lkKSBwYV9mcmVlX3dvcmtlcih3aW5mbyk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZWNvZGUuYwppbmRleCAyY2MwYWM5ZWIwLi4zM2ZkYmRjNjczIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTgyMiwxMCArODIyLDExIEBAIERlY29k ZUFib3J0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVm LAogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJUmVv cmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJCQkJ CQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5k UmVjUHRyLCBhYm9ydF90aW1lKTsKIAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJl b3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJBYm9y dChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAgIGFi b3J0X3RpbWUpOwogCX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCA3MzU5NGM2OThhLi43 NTlmOTY0ZmJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xh dW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5j CkBAIC01NSw2ICs1NSw3IEBACiAvKiBHVUMgdmFyaWFibGVzICovCiBpbnQJCQltYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNDsKIGludAkJCW1heF9zeW5jX3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbiA9IDI7CitpbnQJCQltYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uID0gMjsKIAogTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyID0g TlVMTDsKIApAQCAtNzQsNiArNzUsNyBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX2xhdW5jaGVy X29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29y a2VyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBf d29ya2VyX2RldGFjaCh2b2lkKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFu dXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKK3N0YXRpYyBpbnQJbG9naWNhbHJlcF9wYV93 b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKIAogc3RhdGljIGJvb2wgb25fY29tbWl0X2xhdW5jaGVy X3dha2V1cCA9IGZhbHNlOwogCkBAIC0xNTIsOCArMTU0LDEwIEBAIGdldF9zdWJzY3JpcHRpb25f bGlzdCh2b2lkKQogICoKICAqIFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIGNsZWFuaW5nIHVwIHRo ZSBzaGFyZWQgbWVtb3J5IGluIGNhc2UgdGhlIHdvcmtlcgogICogZmFpbHMgdG8gYXR0YWNoLgor ICoKKyAqIFJldHVybiB3aGV0aGVyIHRoZSBhdHRhY2ggd2FzIHN1Y2Nlc3NmdWwuCiAgKi8KLXN0 YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExv Z2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCQkJCQkgICB1aW50MTYgZ2VuZXJhdGlvbiwKIAkJ CQkJCQkgICBCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCkBAIC0xNjksMTEgKzE3Mywx MSBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29y a2VyLAogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7 CiAKLQkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkOyBubyBuZWVkIHRvIGRv IGFueXRoaW5nLiAqLworCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQuIFJl dHVybiBmYWxzZSBpZiBkaWVkLiAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+ cHJvYykKIAkJewogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCQly ZXR1cm47CisJCQlyZXR1cm4gd29ya2VyLT5pbl91c2U7CiAJCX0KIAogCQlMV0xvY2tSZWxlYXNl KExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKQEAgLTE4OCw3ICsxOTIsNyBAQCBXYWl0Rm9yUmVwbGlj YXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJaWYgKGdlbmVy YXRpb24gPT0gd29ya2VyLT5nZW5lcmF0aW9uKQogCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2NsZWFu dXAod29ya2VyKTsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJ cmV0dXJuOworCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKIAkJLyoKQEAgLTIxMCw2ICsyMTQsOCBA QCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2Vy LAogLyoKICAqIFdhbGtzIHRoZSB3b3JrZXJzIGFycmF5IGFuZCBzZWFyY2hlcyBmb3Igb25lIHRo YXQgbWF0Y2hlcyBnaXZlbgogICogc3Vic2NyaXB0aW9uIGlkIGFuZCByZWxpZC4KKyAqCisgKiBX ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIHRhYmxl IHN5bmMgd29ya2VyLgogICovCiBMb2dpY2FsUmVwV29ya2VyICoKIGxvZ2ljYWxyZXBfd29ya2Vy X2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQpAQCAtMjI0LDYg KzIzMCwxMCBAQCBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBi b29sIG9ubHlfcnVubmluZykKIAl7CiAJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJl cEN0eC0+d29ya2Vyc1tpXTsKIAorCQkvKiBTa2lwIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuICov CisJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQljb250aW51ZTsKKwogCQlpZiAo dy0+aW5fdXNlICYmIHctPnN1YmlkID09IHN1YmlkICYmIHctPnJlbGlkID09IHJlbGlkICYmCiAJ CQkoIW9ubHlfcnVubmluZyB8fCB3LT5wcm9jKSkKIAkJewpAQCAtMjYwLDExICsyNzAsMTMgQEAg bG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZykKIH0K IAogLyoKLSAqIFN0YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUu CisgKiBTdGFydCBuZXcgbG9naWNhbCByZXBsaWNhdGlvbiBiYWNrZ3JvdW5kIHdvcmtlciwgaWYg cG9zc2libGUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1 cmUuCiAgKi8KLXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwg T2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJCQkJIE9pZCBy ZWxpZCkKKwkJCQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSkKIHsKIAlC YWNrZ3JvdW5kV29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3dfaGFuZGxl OwpAQCAtMjczLDcgKzI4NSwxMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQs IE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlpbnQJCQlzbG90 ID0gMDsKIAlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWludAkJCW5zeW5jd29y a2VyczsKKwlpbnQJCQlucGFyYWxsZWxhcHBseXdvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93Owor CWJvb2wJCWlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciA9IChzdWJ3b3JrZXJfZHNtICE9IERTTV9I QU5ETEVfSU5WQUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2sgLSB0YWJsZXN5bmMgd29ya2VyIGNh bm5vdCBiZSBhIHN1YndvcmtlciAqLworCUFzc2VydCghKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtl ciAmJiBPaWRJc1ZhbGlkKHJlbGlkKSkpOwogCiAJZXJlcG9ydChERUJVRzEsCiAJCQkoZXJybXNn X2ludGVybmFsKCJzdGFydGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2Ny aXB0aW9uIFwiJXNcIiIsCkBAIC0zNTEsNyArMzY4LDIwIEBAIHJldHJ5OgogCWlmIChPaWRJc1Zh bGlkKHJlbGlkKSAmJiBuc3luY3dvcmtlcnMgPj0gbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2Ny aXB0aW9uKQogCXsKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJl dHVybjsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCW5wYXJhbGxlbGFwcGx5d29ya2VycyA9IGxv Z2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KHN1YmlkKTsKKworCS8qCisJICogUmV0dXJuIGZhbHNl IGlmIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyByZWFjaGVkIHRoZSBsaW1p dAorCSAqIHBlciBzdWJzY3JpcHRpb24uCisJICovCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dv cmtlciAmJgorCQlucGFyYWxsZWxhcHBseXdvcmtlcnMgPj0gbWF4X3BhcmFsbGVsX2FwcGx5X3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKKwl7CisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdv cmtlckxvY2spOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyoKQEAgLTM2NSw3ICszOTUsNyBA QCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVE RUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBzbG90 cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzLiIpKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwog CX0KIAogCS8qIFByZXBhcmUgdGhlIHdvcmtlciBzbG90LiAqLwpAQCAtMzgwLDYgKzQxMCw4IEBA IHJldHJ5OgogCXdvcmtlci0+cmVsc3RhdGUgPSBTVUJSRUxfU1RBVEVfVU5LTk9XTjsKIAl3b3Jr ZXItPnJlbHN0YXRlX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCXdvcmtlci0+c3RyZWFtX2Zp bGVzZXQgPSBOVUxMOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9IGlzX3BhcmFsbGVsX2Fw cGx5X3dvcmtlciA/IE15UHJvY1BpZCA6IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9h cHBseSA9IGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcjsKIAl3b3JrZXItPmxhc3RfbHNuID0gSW52 YWxpZFhMb2dSZWNQdHI7CiAJVElNRVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3NlbmRfdGlt ZSk7CiAJVElNRVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3JlY3ZfdGltZSk7CkBAIC0zOTcs MTkgKzQyOSwzNCBAQCByZXRyeToKIAkJQkdXT1JLRVJfQkFDS0VORF9EQVRBQkFTRV9DT05ORUNU SU9OOwogCWJndy5iZ3dfc3RhcnRfdGltZSA9IEJnV29ya2VyU3RhcnRfUmVjb3ZlcnlGaW5pc2hl ZDsKIAlzbnByaW50ZihiZ3cuYmd3X2xpYnJhcnlfbmFtZSwgQkdXX01BWExFTiwgInBvc3RncmVz Iik7Ci0Jc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiQXBwbHlX b3JrZXJNYWluIik7CisKKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQlzbnByaW50 ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJQYXJhbGxlbEFwcGx5V29ya2Vy TWFpbiIpOworCWVsc2UKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFY TEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKIAlpZiAoT2lkSXNWYWxpZChyZWxpZCkpCiAJCXNu cHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgc3luYyAldSIsIHN1YmlkLCByZWxpZCk7CisJ ZWxzZSBpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X25h bWUsIEJHV19NQVhMRU4sCisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwogCWVsc2UKIAkJc25wcmludGYo Ymd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAotCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3Jr ZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKLQlzbnByaW50ZihiZ3cuYmd3X3R5cGUs IEJHV19NQVhMRU4sICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciIpOworCQkJCSAibG9naWNh bCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsK KworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfdHlw ZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgd29ya2VyIik7CisJ ZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciIpOwogCiAJYmd3LmJnd19yZXN0YXJ0X3RpbWUgPSBCR1dfTkVWRVJfUkVT VEFSVDsKIAliZ3cuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7CiAJYmd3LmJnd19tYWluX2Fy ZyA9IEludDMyR2V0RGF0dW0oc2xvdCk7CiAKKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2Vy KQorCQltZW1jcHkoYmd3LmJnd19leHRyYSwgJnN1Yndvcmtlcl9kc20sIHNpemVvZihkc21faGFu ZGxlKSk7CisKIAlpZiAoIVJlZ2lzdGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJmJndywgJmJn d19oYW5kbGUpKQogCXsKIAkJLyogRmFpbGVkIHRvIHN0YXJ0IHdvcmtlciwgc28gY2xlYW4gdXAg dGhlIHdvcmtlciBzbG90LiAqLwpAQCAtNDIyLDMzICs0NjksMjMgQEAgcmV0cnk6CiAJCQkJKGVy cmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNn KCJvdXQgb2YgYmFja2dyb3VuZCB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1p Z2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X3dvcmtlcl9wcm9jZXNzZXMuIikpKTsKLQkJcmV0dXJu OworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogTm93IHdhaXQgdW50aWwgaXQgYXR0YWNoZXMu ICovCi0JV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwg Ymd3X2hhbmRsZSk7CisJcmV0dXJuIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3Jr ZXIsIGdlbmVyYXRpb24sIGJnd19oYW5kbGUpOwogfQogCiAvKgotICogU3RvcCB0aGUgbG9naWNh bCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YmlkL3JlbGlkLCBpZiBhbnksIGFuZCB3YWl0IHVu dGlsCi0gKiBpdCBkZXRhY2hlcyBmcm9tIHRoZSBzbG90LgorICogSW50ZXJuYWwgZnVuY3Rpb24g dG8gc3RvcCB0aGUgd29ya2VyIGFuZCB3YWl0IHVudGlsIGl0IGRldGFjaGVzIGZyb20gdGhlCisg KiBzbG90LgogICovCi12b2lkCi1sb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lk IHJlbGlkKQorc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9n aWNhbFJlcFdvcmtlciAqd29ya2VyLCBpbnQgc2lnbm8pCiB7Ci0JTG9naWNhbFJlcFdvcmtlciAq d29ya2VyOwogCXVpbnQxNgkJZ2VuZXJhdGlvbjsKIAotCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJl cFdvcmtlckxvY2ssIExXX1NIQVJFRCk7Ci0KLQl3b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9m aW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOwotCi0JLyogTm8gd29ya2VyLCBub3RoaW5nIHRvIGRv LiAqLwotCWlmICghd29ya2VyKQotCXsKLQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7Ci0JCXJldHVybjsKLQl9CisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lSW5Nb2RlKExvZ2lj YWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpKTsKIAogCS8qCiAJICogUmVtZW1iZXIgd2hpY2gg Z2VuZXJhdGlvbiB3YXMgb3VyIHdvcmtlciBzbyB3ZSBjYW4gY2hlY2sgaWYgd2hhdCB3ZSBzZWUK QEAgLTQ4NiwxMCArNTIzLDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9p ZCByZWxpZCkKIAkJICogZGlmZmVyZW50LCBtZWFuaW5nIHRoYXQgYSBkaWZmZXJlbnQgd29ya2Vy IGhhcyB0YWtlbiB0aGUgc2xvdC4KIAkJICovCiAJCWlmICghd29ya2VyLT5pbl91c2UgfHwgd29y a2VyLT5nZW5lcmF0aW9uICE9IGdlbmVyYXRpb24pCi0JCXsKLQkJCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOwogCQkJcmV0dXJuOwotCQl9CiAKIAkJLyogV29ya2VyIGhhcyBh c3NpZ25lZCBwcm9jLCBzbyBpdCBoYXMgc3RhcnRlZC4gKi8KIAkJaWYgKHdvcmtlci0+cHJvYykK QEAgLTQ5Nyw3ICs1MzEsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lk IHJlbGlkKQogCX0KIAogCS8qIE5vdyB0ZXJtaW5hdGUgdGhlIHdvcmtlciAuLi4gKi8KLQlraWxs KHdvcmtlci0+cHJvYy0+cGlkLCBTSUdURVJNKTsKKwlraWxsKHdvcmtlci0+cHJvYy0+cGlkLCBz aWdubyk7CiAKIAkvKiAuLi4gYW5kIHdhaXQgZm9yIGl0IHRvIGRpZS4gKi8KIAlmb3IgKDs7KQpA QCAtNTIzLDYgKzU1Nyw1MyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lk IHJlbGlkKQogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJF RCk7CiAJfQorfQorCisvKgorICogU3RvcCB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIg Zm9yIHN1YmlkL3JlbGlkLCBpZiBhbnkuCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0 b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCit7CisJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwor CisJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCXdv cmtlciA9IGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoc3ViaWQsIHJlbGlkLCBmYWxzZSk7CisKKwlp ZiAod29ya2VyKQorCXsKKwkJQXNzZXJ0KCFpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSk7 CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyLCBTSUdURVJNKTsKKwl9 CisKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKK30KKworLyoKKyAqIFN0 b3AgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNvcnJlc3Bv bmRpbmcgdG8gdGhlCisgKiBpbnB1dCBzbG90IG51bWJlci4KKyAqCisgKiBOb2RlIHRoYXQgdGhl IGZ1bmN0aW9uIHNlbmRzIFNJR0lOVCBpbnN0ZWFkIG9mIFNJR1RFUk0gdG8gdGhlIHBhcmFsbGVs IGFwcGx5CisgKiB3b3JrZXIgc28gdGhhdCB0aGUgd29ya2VyIGV4aXRzIGNsZWFubHkuCisgKi8K K3ZvaWQKK2xvZ2ljYWxyZXBfcGFfd29ya2VyX3N0b3AoaW50IHNsb3Rfbm8sIHVpbnQxNiBnZW5l cmF0aW9uKQoreworCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcjsKKworCUFzc2VydChzbG90X25v ID49IDAgJiYgc2xvdF9ubyA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMpOworCisJ TFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCXdvcmtl ciA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW3Nsb3Rfbm9dOworCUFzc2VydChpc1BhcmFsbGVs QXBwbHlXb3JrZXIod29ya2VyKSk7CisKKwkvKgorCSAqIE9ubHkgc3RvcCB0aGUgd29ya2VyIGlm IHRoZSBnZW5lcmF0aW9uIG1hdGNoZXMgYW5kIHRoZSB3b3JrZXIgaXMgYWxpdmUuCisJICovCisJ aWYgKHdvcmtlci0+Z2VuZXJhdGlvbiA9PSBnZW5lcmF0aW9uICYmIHdvcmtlci0+cHJvYykKKwkJ bG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIsIFNJR0lOVCk7CiAKIAlMV0xv Y2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIH0KQEAgLTU5NSwxMSArNjc2LDQwIEBA IGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCkKIH0KIAogLyoKLSAqIERldGFjaCB0 aGUgd29ya2VyIChjbGVhbnMgdXAgdGhlIHdvcmtlciBpbmZvKS4KKyAqIFN0b3AgdGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMgaWYgYW55LCBhbmQgZGV0YWNoIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyCisgKiAoY2xlYW5zIHVwIHRoZSB3b3JrZXIgaW5mbykuCiAgKi8KIHN0YXRpYyB2b2lkCiBs b2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCkKIHsKKwkvKiBTdG9wIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXJzLiAqLworCWlmIChhbV9sZWFkZXJfYXBwbHlfd29ya2VyKCkpCisJeworCQlM aXN0CSAgICp3b3JrZXJzOworCQlMaXN0Q2VsbCAgICpsYzsKKworCQkvKgorCQkgKiBEZXRhY2gg ZnJvbSB0aGUgZXJyb3JfbXFfaGFuZGxlIGZvciBhbGwgcGFyYWxsZWwgYXBwbHkgd29ya2Vycwor CQkgKiBiZWZvcmUgdGVybWluYXRpbmcgdGhlbS4gVGhpcyBwcmV2ZW50cyB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciBmcm9tCisJCSAqIHJlY2VpdmluZyB0aGUgd29ya2VyIHRlcm1pbmF0aW9uIG1l c3NhZ2UgYW5kIHNlbmRpbmcgaXQgdG8gbG9ncworCQkgKiB3aGVuIHRoZSBzYW1lIGlzIGFscmVh ZHkgZG9uZSBieSB0aGUgcGFyYWxsZWwgd29ya2VyLgorCQkgKi8KKwkJcGFfZGV0YWNoX2FsbF9l cnJvcl9tcSgpOworCisJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NI QVJFRCk7CisKKwkJd29ya2VycyA9IGxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHRydWUpOworCQlmb3JlYWNoKGxjLCB3b3JrZXJzKQorCQl7CisJCQlM b2dpY2FsUmVwV29ya2VyICp3ID0gKExvZ2ljYWxSZXBXb3JrZXIgKikgbGZpcnN0KGxjKTsKKwor CQkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCQlsb2dpY2FscmVwX3dvcmtlcl9z dG9wX2ludGVybmFsKHcsIFNJR1RFUk0pOworCQl9CisKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2Fs UmVwV29ya2VyTG9jayk7CisJfQorCiAJLyogQmxvY2sgY29uY3VycmVudCBhY2Nlc3MuICovCiAJ TFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfRVhDTFVTSVZFKTsKIApAQCAt NjIyLDYgKzczMiw4IEBAIGxvZ2ljYWxyZXBfd29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtl ciAqd29ya2VyKQogCXdvcmtlci0+dXNlcmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnN1Ymlk ID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnJlbGlkID0gSW52YWxpZE9pZDsKKwl3b3JrZXItPmFw cGx5X2xlYWRlcl9waWQgPSBJbnZhbGlkUGlkOworCXdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBm YWxzZTsKIH0KIAogLyoKQEAgLTY1Myw2ICs3NjUsMTMgQEAgbG9naWNhbHJlcF93b3JrZXJfb25l eGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCiAJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFt X2ZpbGVzZXQgIT0gTlVMTCkKIAkJRmlsZVNldERlbGV0ZUFsbChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN0cmVhbV9maWxlc2V0KTsKIAorCS8qCisJICogU2Vzc2lvbiBsZXZlbCBsb2NrcyBtYXkgYmUg YWNxdWlyZWQgb3V0c2lkZSBvZiBhIHRyYW5zYWN0aW9uIGluCisJICogcGFyYWxsZWwgYXBwbHkg bW9kZSBhbmQgd2lsbCBub3QgYmUgcmVsZWFzZWQgd2hlbiB0aGUgd29ya2VyCisJICogdGVybWlu YXRlcywgc28gbWFudWFsbHkgcmVsZWFzZSBhbGwgbG9ja3MgYmVmb3JlIHRoZSB3b3JrZXIgZXhp dHMuCisJICovCisJTG9ja1JlbGVhc2VBbGwoREVGQVVMVF9MT0NLTUVUSE9ELCB0cnVlKTsKKwog CUFwcGx5TGF1bmNoZXJXYWtldXAoKTsKIH0KIApAQCAtNjgwLDYgKzc5OSwzMyBAQCBsb2dpY2Fs cmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIAlyZXR1cm4gcmVzOwogfQogCisvKgor ICogQ291bnQgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIChidXQgbm90IG5lY2Vzc2FyaWx5IHJ1 bm5pbmcpIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAq Lworc3RhdGljIGludAorbG9naWNhbHJlcF9wYV93b3JrZXJfY291bnQoT2lkIHN1YmlkKQorewor CWludAkJCWk7CisJaW50CQkJcmVzID0gMDsKKworCUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dp Y2FsUmVwV29ya2VyTG9jaykpOworCisJLyoKKwkgKiBTY2FuIGFsbCBhdHRhY2hlZCBwYXJhbGxl bCBhcHBseSB3b3JrZXJzLCBvbmx5IGNvdW50aW5nIHRob3NlIHdoaWNoCisJICogaGF2ZSB0aGUg Z2l2ZW4gc3Vic2NyaXB0aW9uIGlkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzOyBpKyspCisJeworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0g JkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07CisKKwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYm IGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCXJlcysrOworCX0KKworCXJldHVybiByZXM7 Cit9CisKIC8qCiAgKiBBcHBseUxhdW5jaGVyU2htZW1TaXplCiAgKgkJQ29tcHV0ZSBzcGFjZSBu ZWVkZWQgZm9yIHJlcGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJlZCBtZW1vcnkKQEAgLTg2OSw3ICsx MDE1LDcgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCXdhaXRfdGlt ZSA9IHdhbF9yZXRyaWV2ZV9yZXRyeV9pbnRlcnZhbDsKIAogCQkJCQlsb2dpY2FscmVwX3dvcmtl cl9sYXVuY2goc3ViLT5kYmlkLCBzdWItPm9pZCwgc3ViLT5uYW1lLAotCQkJCQkJCQkJCQkgc3Vi LT5vd25lciwgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lk LCBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCX0KIAkJCX0KIApAQCAtOTUyLDYgKzEwOTgsMTAg QEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWlmIChPaWRJ c1ZhbGlkKHN1YmlkKSAmJiB3b3JrZXIuc3ViaWQgIT0gc3ViaWQpCiAJCQljb250aW51ZTsKIAor CQkvKiBTa2lwIGlmIHRoaXMgaXMgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKi8KKwkJaWYgKGlz UGFyYWxsZWxBcHBseVdvcmtlcigmd29ya2VyKSkKKwkJCWNvbnRpbnVlOworCiAJCXdvcmtlcl9w aWQgPSB3b3JrZXIucHJvYy0+cGlkOwogCiAJCXZhbHVlc1swXSA9IE9iamVjdElkR2V0RGF0dW0o d29ya2VyLnN1YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1 aWxkCmluZGV4IDFiOWYwNzJlZGMuLmI3OGJmYmExMGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9tZXNvbi5idWlsZApAQCAtMSw2ICsxLDcgQEAKICMgQ29weXJpZ2h0IChj KSAyMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogCiBiYWNrZW5kX3Nv dXJjZXMgKz0gZmlsZXMoCisgICdhcHBseXBhcmFsbGVsd29ya2VyLmMnLAogICAnZGVjb2RlLmMn LAogICAnbGF1bmNoZXIuYycsCiAgICdsb2dpY2FsLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggZjEzNGU0NDg3OC4uOGIwODM3ODY2NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBAIC0xMDc1LDEyICsxMDc1LDIwIEBA IFJlcGxpY2F0aW9uT3JpZ2luRXhpdENsZWFudXAoaW50IGNvZGUsIERhdHVtIGFyZykKICAqIGFy cmF5IGRvZXNuJ3QgaGF2ZSB0byBiZSBzZWFyY2hlZCB3aGVuIGNhbGxpbmcKICAqIHJlcGxvcmln aW5fc2Vzc2lvbl9hZHZhbmNlKCkuCiAgKgotICogT2J2aW91c2x5IG9ubHkgb25lIHN1Y2ggY2Fj aGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50Ci0gKiBjYWNo ZWQgdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWluIGFmdGVyIHRoZSBwcmV2aW91cyB2YWx1ZSBp cyB0b3JuIGRvd24KLSAqIHdpdGggcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCkuCisgKiBOb3Jt YWxseSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNzIHNv IHRoZSBjYWNoZWQKKyAqIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBhZnRlciB0aGUgcHJl dmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duIHdpdGgKKyAqIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNl dCgpLiBGb3IgdGhpcyBub3JtYWwgY2FzZSBwYXNzIGFjcXVpcmVkX2J5ID0gMAorICogKG1lYW5p bmcgdGhlIHNsb3QgaXMgbm90IGFsbG93ZWQgdG8gYmUgYWxyZWFkeSBhY3F1aXJlZCBieSBhbm90 aGVyIHByb2Nlc3MpLgorICoKKyAqIEhvd2V2ZXIsIHNvbWV0aW1lcyBtdWx0aXBsZSBwcm9jZXNz ZXMgY2FuIHNhZmVseSByZS11c2UgdGhlIHNhbWUgb3JpZ2luIHNsb3QKKyAqIChmb3IgZXhhbXBs ZSwgbXVsdGlwbGUgcGFyYWxsZWwgYXBwbHkgcHJvY2Vzc2VzIGNhbiBzYWZlbHkgdXNlIHRoZSBz YW1lCisgKiBvcmlnaW4sIHByb3ZpZGVkIHRoZXkgbWFpbnRhaW4gY29tbWl0IG9yZGVyIGJ5IGFs bG93aW5nIG9ubHkgb25lIHByb2Nlc3MgdG8KKyAqIGNvbW1pdCBhdCBhIHRpbWUpLiBGb3IgdGhp cyBjYXNlIHRoZSBmaXJzdCBwcm9jZXNzIG11c3QgcGFzcyBhY3F1aXJlZF9ieSA9CisgKiAwLCBh bmQgdGhlbiB0aGUgb3RoZXIgcHJvY2Vzc2VzIHNoYXJpbmcgdGhhdCBzYW1lIG9yaWdpbiBjYW4g cGFzcworICogYWNxdWlyZWRfYnkgPSBQSUQgb2YgdGhlIGZpcnN0IHByb2Nlc3MuCiAgKi8KIHZv aWQKLXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQorcmVwbG9yaWdp bl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGludCBhY3F1aXJlZF9ieSkKIHsKIAlz dGF0aWMgYm9vbCByZWdpc3RlcmVkX2NsZWFudXA7CiAJaW50CQkJaTsKQEAgLTExMjIsNyArMTEz MCw3IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQogCQlpZiAo Y3Vyc3RhdGUtPnJvaWRlbnQgIT0gbm9kZSkKIAkJCWNvbnRpbnVlOwogCi0JCWVsc2UgaWYgKGN1 cnN0YXRlLT5hY3F1aXJlZF9ieSAhPSAwKQorCQllbHNlIGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRf YnkgIT0gMCAmJiBhY3F1aXJlZF9ieSA9PSAwKQogCQl7CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9JTl9VU0UpLApAQCAtMTE1Myw3ICsxMTYxLDExIEBA IHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQogCiAJQXNzZXJ0KHNl c3Npb25fcmVwbGljYXRpb25fc3RhdGUtPnJvaWRlbnQgIT0gSW52YWxpZFJlcE9yaWdpbklkKTsK IAotCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOwor CWlmIChhY3F1aXJlZF9ieSA9PSAwKQorCQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5hY3F1 aXJlZF9ieSA9IE15UHJvY1BpZDsKKwllbHNlIGlmIChzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRl LT5hY3F1aXJlZF9ieSAhPSBhY3F1aXJlZF9ieSkKKwkJZWxvZyhFUlJPUiwgImNvdWxkIG5vdCBm aW5kIHJlcGxpY2F0aW9uIHN0YXRlIHNsb3QgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiB3aXRoIE9J RCAldSB3aGljaCB3YXMgYWNxdWlyZWQgYnkgJWQiLAorCQkJIG5vZGUsIGFjcXVpcmVkX2J5KTsK IAogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25PcmlnaW5Mb2NrKTsKIApAQCAtMTMzNyw3ICsx MzQ5LDcgQEAgcGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25fc2V0dXAoUEdfRlVOQ1RJT05f QVJHUykKIAogCW5hbWUgPSB0ZXh0X3RvX2NzdHJpbmcoKHRleHQgKikgRGF0dW1HZXRQb2ludGVy KFBHX0dFVEFSR19EQVRVTSgwKSkpOwogCW9yaWdpbiA9IHJlcGxvcmlnaW5fYnlfbmFtZShuYW1l LCBmYWxzZSk7Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbik7CisJcmVwbG9yaWdp bl9zZXNzaW9uX3NldHVwKG9yaWdpbiwgMCk7CiAKIAlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu ID0gb3JpZ2luOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXgg ZjVmMmJjMjRkOC4uNzIzYmE0NjY5YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cHJvdG8uYwpAQCAtMTE2NCwxMCArMTE2NCwxNCBAQCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Nv bW1pdChTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAv KgogICogV3JpdGUgU1RSRUFNIEFCT1JUIHRvIHRoZSBvdXRwdXQgc3RyZWFtLiBOb3RlIHRoYXQg eGlkIGFuZCBzdWJ4aWQgd2lsbCBiZQogICogc2FtZSBmb3IgdGhlIHRvcC1sZXZlbCB0cmFuc2Fj dGlvbiBhYm9ydC4KKyAqCisgKiBJZiB3cml0ZV9hYm9ydF9pbmZvIGlzIHRydWUsIHNlbmQgdGhl IGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAg Ki8KIHZvaWQKIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBU cmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKQorCQkJCQkJ CSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQsIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCSAg VGltZXN0YW1wVHogYWJvcnRfdGltZSwgYm9vbCB3cml0ZV9hYm9ydF9pbmZvKQogewogCXBxX3Nl bmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCk7CiAKQEAgLTExNzYsMTkg KzExODAsNDAgQEAgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBvdXQs IFRyYW5zYWN0aW9uSWQgeGlkLAogCS8qIHRyYW5zYWN0aW9uIElEICovCiAJcHFfc2VuZGludDMy KG91dCwgeGlkKTsKIAlwcV9zZW5kaW50MzIob3V0LCBzdWJ4aWQpOworCisJaWYgKHdyaXRlX2Fi b3J0X2luZm8pCisJeworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9ydF9sc24pOworCQlwcV9zZW5k aW50NjQob3V0LCBhYm9ydF90aW1lKTsKKwl9CiB9CiAKIC8qCiAgKiBSZWFkIFNUUkVBTSBBQk9S VCBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtLgorICoKKyAqIElmIHJlYWRfYWJvcnRfaW5mbyBpcyB0 cnVlLCByZWFkIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3 aXNlIGRvbid0LgogICovCiB2b2lkCi1sb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmlu Z0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3Vi eGlkKQorbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJCQkJ CSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCSBib29sIHJl YWRfYWJvcnRfaW5mbykKIHsKLQlBc3NlcnQoeGlkICYmIHN1YnhpZCk7CisJQXNzZXJ0KGFib3J0 X2RhdGEpOworCisJYWJvcnRfZGF0YS0+eGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlhYm9y dF9kYXRhLT5zdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwogCi0JKnhpZCA9IHBxX2dldG1z Z2ludChpbiwgNCk7Ci0JKnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJaWYgKHJlYWRf YWJvcnRfaW5mbykKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IHBxX2dldG1zZ2ludDY0 KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwl9 CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7 CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSAwOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggOTIyMDRiZDlj ZC4uYmVjODkzZGEwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9yZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9y ZW9yZGVyYnVmZmVyLmMKQEAgLTI4NzMsNyArMjg3Myw4IEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQ cmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAgKiBkaXNrLgog ICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0 aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVm ZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCSAgIFRpbWVz dGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yODg0 LDYgKzI4ODUsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5z YWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVy bjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9y IHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBh Ym9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAl7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA5NGU4MTNhYzUzLi5lZjBmZTEz YzE0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAg LTE0LDcgKzE0LDcgQEAKICAqCSAgVGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24gaXMg ZG9uZSBzZXBhcmF0ZWx5IGZvciBlYWNoIHRhYmxlLAogICoJICBpbiBhIHNlcGFyYXRlIGFwcGx5 IHdvcmtlciB0aGF0IG9ubHkgZmV0Y2hlcyB0aGUgaW5pdGlhbCBzbmFwc2hvdCBkYXRhCiAgKgkg IGZyb20gdGhlIHB1Ymxpc2hlciBhbmQgdGhlbiBzeW5jaHJvbml6ZXMgdGhlIHBvc2l0aW9uIGlu IHRoZSBzdHJlYW0gd2l0aAotICoJICB0aGUgbWFpbiBhcHBseSB3b3JrZXIuCisgKgkgIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyLgogICoKICAqCSAgVGhlcmUgYXJlIHNldmVyYWwgcmVhc29ucyBm b3IgZG9pbmcgdGhlIHN5bmNocm9uaXphdGlvbiB0aGlzIHdheToKICAqCSAgIC0gSXQgYWxsb3dz IHVzIHRvIHBhcmFsbGVsaXplIHRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0aW9uCkBAIC0x NTMsNyArMTUzLDcgQEAgZmluaXNoX3N5bmNfd29ya2VyKHZvaWQpCiAJCQkJCWdldF9yZWxfbmFt ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAotCS8qIEZpbmQgdGhlIG1haW4gYXBwbHkgd29ya2VyIGFuZCBzaWduYWwgaXQuICov CisJLyogRmluZCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgc2lnbmFsIGl0LiAqLwogCWxv Z2ljYWxyZXBfd29ya2VyX3dha2V1cChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBJbnZhbGlk T2lkKTsKIAogCS8qIFN0b3AgZ3JhY2VmdWxseSAqLwpAQCAtNjA5LDcgKzYwOSw4IEBAIHByb2Nl c3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiAJCQkJ CQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlv bi0+bmFtZSwKIAkJCQkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKLQkJCQkJ CQkJCQkJCSByc3RhdGUtPnJlbGlkKTsKKwkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkLAorCQkJ CQkJCQkJCQkJIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJCQloZW50cnktPmxhc3Rfc3RhcnRf dGltZSA9IG5vdzsKIAkJCQkJfQogCQkJCX0KQEAgLTYzMCw2ICs2MzEsMTQgQEAgcHJvY2Vzc19z eW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHZvaWQKIHBy b2Nlc3Nfc3luY2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHsKKwkvKgorCSAq IFNraXAgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYmVjYXVzZSB0aGV5IG9ubHkgb3BlcmF0 ZSBvbiB0YWJsZXMKKwkgKiB0aGF0IGFyZSBpbiBhIFJFQURZIHN0YXRlLiBTZWUgcGFfY2FuX3N0 YXJ0KCkgYW5kCisJICogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCgpLgorCSAqLworCWlm IChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxl c3luY193b3JrZXIoKSkKIAkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50 X2xzbik7CiAJZWxzZQpAQCAtMTI0Nyw3ICsxMjU2LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0 YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAogCS8qCiAJICogSGVyZSB3ZSB1c2Ug dGhlIHNsb3QgbmFtZSBpbnN0ZWFkIG9mIHRoZSBzdWJzY3JpcHRpb24gbmFtZSBhcyB0aGUKLQkg KiBhcHBsaWNhdGlvbl9uYW1lLCBzbyB0aGF0IGl0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBtYWlu IGFwcGx5IHdvcmtlciwKKwkgKiBhcHBsaWNhdGlvbl9uYW1lLCBzbyB0aGF0IGl0IGlzIGRpZmZl cmVudCBmcm9tIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLAogCSAqIHNvIHRoYXQgc3luY2hyb25v dXMgcmVwbGljYXRpb24gY2FuIGRpc3Rpbmd1aXNoIHRoZW0uCiAJICovCiAJTG9nUmVwV29ya2Vy V2FsUmN2Q29ubiA9CkBAIC0xMjk1LDcgKzEzMDQsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3Rh cnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkgKiB0aW1lIHRoaXMgdGFibGVzeW5j IHdhcyBsYXVuY2hlZC4KIAkJICovCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9y aWdpbm5hbWUsIGZhbHNlKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsK KwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9yaWdpbl9z ZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQkqb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdp bl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAKQEAgLTE0MDYsNyArMTQxNSw3IEBAIExv Z2ljYWxSZXBTeW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCQkJ CQkgICB0cnVlIC8qIGdvIGJhY2t3YXJkICovICwgdHJ1ZSAvKiBXQUwgbG9nICovICk7CiAJCVVu bG9ja1JlbGF0aW9uT2lkKFJlcGxpY2F0aW9uT3JpZ2luUmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7CiAKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9y aWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbiA9IG9yaWdpbmlkOwogCX0KIAllbHNlCkBAIC0xNDYxLDggKzE0NzAsOCBAQCBjb3B5X3Rh YmxlX2RvbmU6CiAJU3BpbkxvY2tSZWxlYXNlKCZNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbG11dGV4 KTsKIAogCS8qCi0JICogRmluYWxseSwgd2FpdCB1bnRpbCB0aGUgbWFpbiBhcHBseSB3b3JrZXIg dGVsbHMgdXMgdG8gY2F0Y2ggdXAgYW5kIHRoZW4KLQkgKiByZXR1cm4gdG8gbGV0IExvZ2ljYWxS ZXBBcHBseUxvb3AgZG8gaXQuCisJICogRmluYWxseSwgd2FpdCB1bnRpbCB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciB0ZWxscyB1cyB0byBjYXRjaCB1cCBhbmQKKwkgKiB0aGVuIHJldHVybiB0byBs ZXQgTG9naWNhbFJlcEFwcGx5TG9vcCBkbyBpdC4KIAkgKi8KIAl3YWl0X2Zvcl93b3JrZXJfc3Rh dGVfY2hhbmdlKFNVQlJFTF9TVEFURV9DQVRDSFVQKTsKIAlyZXR1cm4gc2xvdG5hbWU7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA5Njc3MmU0ZDczLi5mOWVm YzE4ZWY3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIy LDggKzIyLDEyIEBACiAgKiBTVFJFQU1FRCBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0t LS0tLS0tLQogICogU3RyZWFtZWQgdHJhbnNhY3Rpb25zIChsYXJnZSB0cmFuc2FjdGlvbnMgZXhj ZWVkaW5nIGEgbWVtb3J5IGxpbWl0IG9uIHRoZQotICogdXBzdHJlYW0pIGFyZSBub3QgYXBwbGll ZCBpbW1lZGlhdGVseSwgYnV0IGluc3RlYWQsIHRoZSBkYXRhIGlzIHdyaXR0ZW4KLSAqIHRvIHRl bXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29t bWl0IGFycml2ZXMuCisgKiB1cHN0cmVhbSkgYXJlIGFwcGxpZWQgdXNpbmcgb25lIG9mIHR3byBh cHByb2FjaGVzOgorICoKKyAqIDEpIFdyaXRlIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbHkg d2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMKKyAqCisgKiBUaGlzIGFwcHJvYWNoIGlzIHVz ZWQgd2hlbiB0aGUgdXNlciBoYXMgc2V0IHRoZSBzdWJzY3JpcHRpb24ncyBzdHJlYW1pbmcKKyAq IG9wdGlvbiBhcyBvbi4KICAqCiAgKiBVbmxpa2UgdGhlIHJlZ3VsYXIgKG5vbi1zdHJlYW1lZCkg Y2FzZSwgaGFuZGxpbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGhhcwogICogdG8gaGFuZGxlIGFi b3J0cyBvZiBib3RoIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiBhbmQgc3VidHJhbnNhY3Rpb25z LiBUaGlzCkBAIC01MCw2ICs1NCwxMiBAQAogICogdGhlIGZpbGUgd2UgZGVzaXJlZCBhY3Jvc3Mg bXVsdGlwbGUgc3RyZWFtLW9wZW4gY2FsbHMgZm9yIHRoZSBzYW1lCiAgKiB0cmFuc2FjdGlvbi4K ICAqCisgKiAyKSBQYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorICoKKyAqIFRoaXMgYXBwcm9hY2gg aXMgdXNlZCB3aGVuIHRoZSB1c2VyIGhhcyBzZXQgdGhlIHN1YnNjcmlwdGlvbidzIHN0cmVhbWlu ZworICogb3B0aW9uIGFzIHBhcmFsbGVsLiBTZWUgbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMgZm9yIGluZm9ybWF0aW9uIGFib3V0CisgKiB0aGlzIGFwcHJvYWNoLgorICoKICAqIFRXT19Q SEFTRSBUUkFOU0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFR3byBwaGFz ZSB0cmFuc2FjdGlvbnMgYXJlIHJlcGxheWVkIGF0IHByZXBhcmUgYW5kIHRoZW4gY29tbWl0dGVk IG9yCkBAIC0xNTAsNiArMTYwLDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9leGVjUGFydGl0aW9u LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmgiCiAjaW5jbHVkZSAiZnVu Y2FwaS5oIgorI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAjaW5jbHVkZSAibGlicHEvcHFmb3Jt YXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNpZ25hbC5oIgogI2luY2x1ZGUgIm1iL3BnX3djaGFy LmgiCkBAIC0yMzMsNyArMjQ0LDUyIEBAIHR5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFj a0FyZwogCWNoYXIJICAgKm9yaWdpbl9uYW1lOwogfSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7CiAK LXN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0K Ky8qCisgKiBXaGF0IGFjdGlvbiB0byB0YWtlIGZvciB0aGUgdHJhbnNhY3Rpb24uCisgKgorICog VFJBTlNfTEVBREVSX0FQUExZOgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4g dGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMgb2YgdGhlCisgKiB0cmFuc2FjdGlv biBhcmUgYXBwbGllZCBkaXJlY3RseSBieSB0aGUgd29ya2VyLgorICoKKyAqIFRSQU5TX0xFQURF Ul9TRVJJQUxJWkU6CisgKiBUaGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciBvciB0YWJsZSBzeW5jCisgKiB3b3JrZXIuIENoYW5nZXMgYXJlIHdy aXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQgd2hlbiB0aGUKKyAqIGZp bmFsIGNvbW1pdCBhcnJpdmVzLgorICoKKyAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVM OgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgYW5kIG5lZWQgdG8gc2VuZAorICogdGhlIGNoYW5nZXMgdG8gdGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KKyAqCisgKiBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisgKiBU aGlzIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBh bmQgaGF2ZSBzZW50IHNvbWUKKyAqIGNoYW5nZXMgZGlyZWN0bHkgdG8gdGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFuZ2VzIGFyZQorICogc2VyaWFsaXplZCB0 byBhIGZpbGUsIGR1ZSB0byB0aW1lb3V0IHdoaWxlIHNlbmRpbmcgZGF0YS4gVGhlIHBhcmFsbGVs IGFwcGx5CisgKiB3b3JrZXIgd2lsbCBhcHBseSB0aGVzZSBzZXJpYWxpemVkIGNoYW5nZXMgd2hl biB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisgKgorICogV2UgY2FuJ3QgdXNlIFRSQU5TX0xF QURFUl9TRVJJQUxJWkUgZm9yIHRoaXMgY2FzZSBiZWNhdXNlLCBpbiBhZGRpdGlvbiB0bworICog c2VyaWFsaXppbmcgY2hhbmdlcywgdGhlIGxlYWRlciB3b3JrZXIgYWxzbyBuZWVkcyB0byBzZXJp YWxpemUgdGhlCisgKiBTVFJFQU1fWFhYIG1lc3NhZ2UgdG8gYSBmaWxlLCBhbmQgd2FpdCBmb3Ig dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0bworICogZmluaXNoIHRoZSB0cmFuc2FjdGlvbiB3 aGVuIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kLiBTbworICogdGhp cyBuZXcgYWN0aW9uIHdhcyBpbnRyb2R1Y2VkIHRvIGtlZXAgdGhlIGNvZGUgYW5kIGxvZ2ljIGNs ZWFyLgorICoKKyAqIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorICogVGhpcyBhY3Rpb24gbWVhbnMg dGhhdCB3ZSBhcmUgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhbmQgY2hhbmdlcyBvZgor ICogdGhlIHRyYW5zYWN0aW9uIGFyZSBhcHBsaWVkIGRpcmVjdGx5IGJ5IHRoZSB3b3JrZXIuCisg Ki8KK3R5cGVkZWYgZW51bQoreworCS8qIFRoZSBhY3Rpb24gZm9yIG5vbi1zdHJlYW1pbmcgdHJh bnNhY3Rpb25zLiAqLworCVRSQU5TX0xFQURFUl9BUFBMWSwKKworCS8qIEFjdGlvbnMgZm9yIHN0 cmVhbWluZyB0cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVSX1NFUklBTElaRSwKKwlUUkFO U19MRUFERVJfU0VORF9UT19QQVJBTExFTCwKKwlUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJ WkUsCisJVFJBTlNfUEFSQUxMRUxfQVBQTFkKK30gVHJhbnNBcHBseUFjdGlvbjsKKworLyogZXJy Y29udGV4dCB0cmFja2VyICovCitBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2Fs bGJhY2tfYXJnID0KIHsKIAkuY29tbWFuZCA9IDAsCiAJLnJlbCA9IE5VTEwsCkBAIC0yNDMsNyAr Mjk5LDkgQEAgc3RhdGljIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFj a19hcmcgPQogCS5vcmlnaW5fbmFtZSA9IE5VTEwsCiB9OwogCi1zdGF0aWMgTWVtb3J5Q29udGV4 dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKK0Vycm9yQ29udGV4dENhbGxiYWNrICphcHBs eV9lcnJvcl9jb250ZXh0X3N0YWNrID0gTlVMTDsKKworTWVtb3J5Q29udGV4dCBBcHBseU1lc3Nh Z2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0ID0gTlVMTDsKIAog LyogcGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zICovCkBAIC0y NjIsMTcgKzMyMCwyNiBAQCBzdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZh bHNlOwogCiBzdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0 aW9uSWQ7CiAKKy8qCisgKiBUaGUgbnVtYmVyIG9mIGNoYW5nZXMgYXBwbGllZCBieSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgZHVyaW5nIG9uZSBzdHJlYW1pbmcKKyAqIGJsb2NrLgorICovCitzdGF0 aWMgdWludDMyIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyA9IDA7CisKIC8qCiAgKiBXZSBlbmFi bGUgc2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VSVCwgVVBEQVRF LCBldGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0cmFuc2FjdGlv bidzIGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ugd2Ugc3RhcnQg c2tpcHBpbmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lwIGFsbCBjaGFu Z2VzIG9mCiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRpb24gaXMgdXBk YXRlZCBhbmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdlZCBvciByZXNl dCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzLCB3ZQot ICogZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdl IGRlY2lkZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0 aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVhbWluZyA9IG9u KSwKKyAqIHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBz aW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlpbmcgdGhlIGNo YW5nZXMgd2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tpcGxzbiBpcwog ICogY2xlYXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5zYWN0aW9uIG9y IGFwcGx5aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIgcHJldmVudHMg dGhlIG1pc3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVpbmcgbGVmdC4K KyAqIGJlaW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3RyZWFtaW5nIHRy YW5zYWN0aW9ucyB3aGVuIHVzaW5nCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGJlY2F1c2Ug d2UgY2Fubm90IGdldCB0aGUgZmluaXNoIExTTiBiZWZvcmUgYXBwbHlpbmcKKyAqIHRoZSBjaGFu Z2VzLiBTbywgd2UgZG9uJ3Qgc3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdoZW4gZmluaXNo IExTTiBpcyBzZXQKKyAqIGJ5IHRoZSB1c2VyLgogICovCiBzdGF0aWMgWExvZ1JlY1B0ciBza2lw X3hhY3RfZmluaXNoX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogI2RlZmluZSBpc19za2lwcGlu Z19jaGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9nUmVjUHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5p c2hfbHNuKSkpCkBAIC0zMTIsMjMgKzM3OSwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYW51 cF9zdWJ4YWN0X2luZm8odm9pZCk7CiAvKgogICogU2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSBj aGFuZ2VzIGZvciBhIHRvcGxldmVsIHRyYW5zYWN0aW9uLgogICovCi1zdGF0aWMgdm9pZCBzdHJl YW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKTsKIHN0YXRpYyB2 b2lkIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJ CQkgYm9vbCBmaXJzdF9zZWdtZW50KTsKIHN0YXRpYyB2b2lkIHN0cmVhbV93cml0ZV9jaGFuZ2Uo Y2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcyk7CitzdGF0aWMgdm9pZCBzdHJlYW1fb3Blbl9hbmRf d3JpdGVfY2hhbmdlKFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBz KTsKIHN0YXRpYyB2b2lkIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBz ZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0 UmVwbHkpOwogCi1zdGF0aWMgdm9pZCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJl bW90ZV9sc24pOwotCi1zdGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQp OwotCiBzdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKIAotLyog cHJvdG90eXBlIG5lZWRlZCBiZWNhdXNlIG9mIHN0cmVhbV9jb21taXQgKi8KLXN0YXRpYyB2b2lk IGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7Ci0KIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRs ZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0 YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRh ICplZGF0YSwKIAkJCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKQEAgLTM1MiwxOSAr NDEyLDMyIEBAIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhl Y3V0aW9uRGF0YSAqZWRhdGEsCiAvKiBDb21wdXRlIEdJRCBmb3IgdHdvX3BoYXNlIHRyYW5zYWN0 aW9ucyAqLwogc3RhdGljIHZvaWQgVHdvUGhhc2VUcmFuc2FjdGlvbkdpZChPaWQgc3ViaWQsIFRy YW5zYWN0aW9uSWQgeGlkLCBjaGFyICpnaWQsIGludCBzemdpZCk7CiAKLS8qIENvbW1vbiBzdHJl YW1pbmcgZnVuY3Rpb24gdG8gYXBwbHkgYWxsIHRoZSBzcG9vbGVkIG1lc3NhZ2VzICovCi1zdGF0 aWMgdm9pZCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVj UHRyIGxzbik7Ci0KIC8qIEZ1bmN0aW9ucyBmb3Igc2tpcHBpbmcgY2hhbmdlcyAqLwogc3RhdGlj IHZvaWQgbWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhYTG9nUmVjUHRyIGZpbmlzaF9sc24p Owogc3RhdGljIHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwogc3RhdGljIHZvaWQg Y2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiAKIC8q IEZ1bmN0aW9ucyBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lkIGFwcGx5 X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwog c3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsK IAorc3RhdGljIFRyYW5zQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihU cmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBseVdvcmtlckluZm8g Kip3aW5mbyk7CisKKy8qCisgKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGxvZ2ljYWwgcmVwbGlj YXRpb24gd29ya2VyLgorICovCitzdGF0aWMgY29uc3QgY2hhciAqCitnZXRfd29ya2VyX25hbWUo dm9pZCkKK3sKKwlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQorCQlyZXR1cm4gXygibG9naWNh bCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2VyIik7CisJZWxzZSBpZiAo YW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybiBfKCJsb2dpY2FsIHJlcGxpY2F0 aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpOworCWVsc2UKKwkJcmV0dXJuIF8oImxvZ2ljYWwg cmVwbGljYXRpb24gYXBwbHkgd29ya2VyIik7Cit9CisKIC8qCiAgKiBGb3JtIHRoZSBvcmlnaW4g bmFtZSBmb3IgdGhlIHN1YnNjcmlwdGlvbi4KICAqCkBAIC0zOTQsMTkgKzQ2Nyw0MyBAQCBSZXBs aWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKICAq CiAgKiBUaGlzIGlzIG1haW5seSBuZWVkZWQgZm9yIGluaXRpYWwgcmVsYXRpb24gZGF0YSBzeW5j IGFzIHRoYXQgcnVucyBpbgogICogc2VwYXJhdGUgd29ya2VyIHByb2Nlc3MgcnVubmluZyBpbiBw YXJhbGxlbCBhbmQgd2UgbmVlZCBzb21lIHdheSB0byBza2lwCi0gKiBjaGFuZ2VzIGNvbWluZyB0 byB0aGUgbWFpbiBhcHBseSB3b3JrZXIgZHVyaW5nIHRoZSBzeW5jIG9mIGEgdGFibGUuCisgKiBj aGFuZ2VzIGNvbWluZyB0byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBkdXJpbmcgdGhlIHN5bmMg b2YgYSB0YWJsZS4KICAqCiAgKiBOb3RlIHdlIG5lZWQgdG8gZG8gc21hbGxlciBvciBlcXVhbHMg Y29tcGFyaXNvbiBmb3IgU1lOQ0RPTkUgc3RhdGUgYmVjYXVzZQogICogaXQgbWlnaHQgaG9sZCBw b3NpdGlvbiBvZiBlbmQgb2YgaW5pdGlhbCBzbG90IGNvbnNpc3RlbnQgcG9pbnQgV0FMCiAgKiBy ZWNvcmQgKyAxIChpZSBzdGFydCBvZiBuZXh0IHJlY29yZCkgYW5kIG5leHQgcmVjb3JkIGNhbiBi ZSBDT01NSVQgb2YKICAqIHRyYW5zYWN0aW9uIHdlIGFyZSBub3cgcHJvY2Vzc2luZyAod2hpY2gg aXMgd2hhdCB3ZSBzZXQgcmVtb3RlX2ZpbmFsX2xzbgogICogdG8gaW4gYXBwbHlfaGFuZGxlX2Jl Z2luKS4KKyAqCisgKiBOb3RlIHRoYXQgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBh cmUgYmVpbmcgYXBwbGllZCBpbiB0aGUgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlciwgd2UgZGlz YWxsb3cgYXBwbHlpbmcgY2hhbmdlcyBpZiB0aGUgdGFyZ2V0IHRhYmxlIGluIHRoZQorICogc3Vi c2NyaXB0aW9uIGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUsIGJlY2F1c2Ugd2UgY2Fubm90IGRl Y2lkZSB3aGV0aGVyIHRvCisgKiBhcHBseSB0aGUgY2hhbmdlIGFzIHdlIHdvbid0IGtub3cgcmVt b3RlX2ZpbmFsX2xzbiBieSB0aGF0IHRpbWUuCisgKgorICogV2UgYWxyZWFkeSBjaGVja2VkIHRo aXMgaW4gcGFfY2FuX3N0YXJ0KCkgYmVmb3JlIGFzc2lnbmluZyB0aGUKKyAqIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiB0byB0aGUgcGFyYWxsZWwgd29ya2VyLCBidXQgaXQgYWxzbyBuZWVkcyB0byBi ZQorICogY2hlY2tlZCBoZXJlIGJlY2F1c2UgaWYgdGhlIHVzZXIgZXhlY3V0ZXMgQUxURVIgU1VC U0NSSVBUSU9OIC4uLiBSRUZSRVNICisgKiBQVUJMSUNBVElPTiBpbiBwYXJhbGxlbCwgdGhlIG5l dyB0YWJsZSBjYW4gYmUgYWRkZWQgdG8gcGdfc3Vic2NyaXB0aW9uX3JlbAorICogd2hpbGUgYXBw bHlpbmcgdGhpcyB0cmFuc2FjdGlvbi4KICAqLwogc3RhdGljIGJvb2wKIHNob3VsZF9hcHBseV9j aGFuZ2VzX2Zvcl9yZWwoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiB7CiAJaWYgKGFtX3Rh Ymxlc3luY193b3JrZXIoKSkKIAkJcmV0dXJuIE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQgPT0g cmVsLT5sb2NhbHJlbG9pZDsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkK Kwl7CisJCS8qIFdlIGRvbid0IHN5bmNocm9uaXplIHJlbCdzIHRoYXQgYXJlIGluIHVua25vd24g c3RhdGUuICovCisJCWlmIChyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9SRUFEWSAmJgorCQkJ cmVsLT5zdGF0ZSAhPSBTVUJSRUxfU1RBVEVfVU5LTk9XTikKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAor CQkJCQkgZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBm b3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AiLAorCQkJCQkJCU15U3Vic2NyaXB0aW9u LT5uYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ2Fubm90IGhhbmRsZSBzdHJlYW1lZCByZXBsaWNh dGlvbiB0cmFuc2FjdGlvbnMgdXNpbmcgcGFyYWxsZWwgYXBwbHkgd29ya2VycyB1bnRpbCBhbGwg dGFibGVzIGhhdmUgYmVlbiBzeW5jaHJvbml6ZWQuIikpKTsKKworCQlyZXR1cm4gcmVsLT5zdGF0 ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFk7CisJfQogCWVsc2UKIAkJcmV0dXJuIChyZWwtPnN0YXRl ID09IFNVQlJFTF9TVEFURV9SRUFEWSB8fAogCQkJCShyZWwtPnN0YXRlID09IFNVQlJFTF9TVEFU RV9TWU5DRE9ORSAmJgpAQCAtNDUyLDQzICs1NDksMTEwIEBAIGVuZF9yZXBsaWNhdGlvbl9zdGVw KHZvaWQpCiB9CiAKIC8qCi0gKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zLgorICogSGFu ZGxlIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBmb3IgYm90aCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciBhbmQgdGhlCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgogICoKLSAqIElmIGluIHN0cmVh bWluZyBtb2RlIChyZWNlaXZpbmcgYSBibG9jayBvZiBzdHJlYW1lZCB0cmFuc2FjdGlvbiksIHdl Ci0gKiBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVs IHRyYW5zYWN0aW9uLgorICogSW4gdGhlIHN0cmVhbWluZyBjYXNlIChyZWNlaXZpbmcgYSBibG9j ayBvZiB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24pLCBmb3IKKyAqIHNlcmlhbGl6ZSBtb2RlLCBz aW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUgcHJvcGVyIHRvcGxldmVsCisgKiB0 cmFuc2FjdGlvbiwgYW5kIGZvciBwYXJhbGxlbCBtb2RlLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciB3aWxsIHNlbmQgdGhlCisgKiBjaGFuZ2VzIHRvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYW5k IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBkZWZpbmUKKyAqIHNhdmVwb2ludHMgaWYg bmVlZGVkLiAoTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19UWVBF CisgKiBtZXNzYWdlcyB3aWxsIGJlIGFwcGxpZWQgYnkgYm90aCBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBwYXJhbGxlbCBhcHBseQorICogd29ya2VycykuCiAgKgotICogUmV0dXJucyB0cnVlIGZv ciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMsIGZhbHNlIG90aGVyd2lzZSAocmVndWxhciBtb2RlKS4K KyAqIFJldHVybnMgdHJ1ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zICh3aGVuIHRoZSBjaGFu Z2UgaXMgZWl0aGVyIHNlcmlhbGl6ZWQKKyAqIHRvIGZpbGUgb3Igc2VudCB0byBwYXJhbGxlbCBh cHBseSB3b3JrZXIpLCBmYWxzZSBvdGhlcndpc2UgKHJlZ3VsYXIgbW9kZSBvcgorICogbmVlZHMg dG8gYmUgcHJvY2Vzc2VkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlcikuCisgKgorICogRXhjZXB0 aW9uOiBJZiB0aGUgbWVzc2FnZSBiZWluZyBwcm9jZXNzZWQgaXMgTE9HSUNBTF9SRVBfTVNHX1JF TEFUSU9OCisgKiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSwgcmV0dXJuIGZhbHNlIGV2ZW4gaWYg dGhlIG1lc3NhZ2UgbmVlZHMgdG8gYmUgc2VudAorICogdG8gYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCiAgKi8KIHN0YXRpYyBib29sCiBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNh bFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7 CisJVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisJU3RyaW5nSW5mb0RhdGEg b3JpZ2luYWxfbXNnOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2Fj dGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwogCiAJLyogbm90IGluIHN0cmVhbWluZyBtb2RlICov Ci0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoYXBwbHlfYWN0aW9uID09IFRS QU5TX0xFQURFUl9BUFBMWSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNzZXJ0KHN0cmVhbV9mZCAh PSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3RyZWFtX3hpZCkpOwogCisJ LyoKKwkgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG5lZWRzIHRoZSB4aWQgaW4gdGhpcyBt ZXNzYWdlIHRvIGRlY2lkZQorCSAqIHdoZXRoZXIgdG8gZGVmaW5lIGEgc2F2ZXBvaW50LCBzbyBz YXZlIHRoZSBvcmlnaW5hbCBtZXNzYWdlIHRoYXQgaGFzCisJICogbm90IG1vdmVkIHRoZSBjdXJz b3IgYWZ0ZXIgdGhlIHhpZC4gV2Ugd2lsbCBzZXJpYWxpemUgdGhpcyBtZXNzYWdlIHRvIGEKKwkg KiBmaWxlIGluIFBBUlRJQUxfU0VSSUFMSVpFIG1vZGUuCisJICovCisJb3JpZ2luYWxfbXNnID0g KnM7CisKIAkvKgogCSAqIFdlIHNob3VsZCBoYXZlIHJlY2VpdmVkIFhJRCBvZiB0aGUgc3VieGFj dCBhcyB0aGUgZmlyc3QgcGFydCBvZiB0aGUKIAkgKiBtZXNzYWdlLCBzbyBleHRyYWN0IGl0Lgog CSAqLwotCXhpZCA9IHBxX2dldG1zZ2ludChzLCA0KTsKKwljdXJyZW50X3hpZCA9IHBxX2dldG1z Z2ludChzLCA0KTsKIAotCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwlpZiAoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKGN1cnJlbnRfeGlkKSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5h bCgiaW52YWxpZCB0cmFuc2FjdGlvbiBJRCBpbiBzdHJlYW1lZCByZXBsaWNhdGlvbiB0cmFuc2Fj dGlvbiIpKSk7CiAKLQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRvIHRoZSBhcnJheSAodW5sZXNz IGFscmVhZHkgdGhlcmUpLiAqLwotCXN1YnhhY3RfaW5mb19hZGQoeGlkKTsKKwlzd2l0Y2ggKGFw cGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKwkJCUFzc2Vy dChzdHJlYW1fZmQpOwogCi0JLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxl ICovCi0Jc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCQkJLyogQWRkIHRoZSBuZXcg c3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KKwkJCXN1Ynhh Y3RfaW5mb19hZGQoY3VycmVudF94aWQpOworCisJCQkvKiBXcml0ZSB0aGUgY2hhbmdlIHRvIHRo ZSBjdXJyZW50IGZpbGUgKi8KKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwkJ CXJldHVybiB0cnVlOworCisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJ CQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogWFhYIFRoZSBwdWJsaXNoZXIgc2lkZSBk b2Vzbid0IGFsd2F5cyBzZW5kIHJlbGF0aW9uL3R5cGUgdXBkYXRlCisJCQkgKiBtZXNzYWdlcyBh ZnRlciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBzbyBhbHNvIHVwZGF0ZSB0aGUKKwkJCSAq IHJlbGF0aW9uL3R5cGUgaW4gbGVhZGVyIGFwcGx5IHdvcmtlci4gU2VlIGZ1bmN0aW9uCisJCQkg KiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlLgorCQkJICovCisJCQlpZiAocGFfc2VuZF9kYXRhKHdp bmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJCXJldHVybiAoYWN0aW9uICE9IExPR0lDQUxfUkVQ X01TR19SRUxBVElPTiAmJgorCQkJCQkJYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19UWVBFKTsK KworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNo YW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRv IHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxp emUod2luZm8sIGZhbHNlKTsKIAotCXJldHVybiB0cnVlOworCQkJLyogZmFsbCB0aHJvdWdoICov CisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJc3RyZWFtX3dyaXRl X2NoYW5nZShhY3Rpb24sICZvcmlnaW5hbF9tc2cpOworCisJCQkvKiBTYW1lIHJlYXNvbiBhcyBU UkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCBjYXNlLiAqLworCQkJcmV0dXJuIChhY3Rpb24g IT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OICYmCisJCQkJCWFjdGlvbiAhPSBMT0dJQ0FMX1JF UF9NU0dfVFlQRSk7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCXBhcmFsbGVs X3N0cmVhbV9uY2hhbmdlcyArPSAxOworCisJCQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEg c3VieGFjdCBpZiBuZWVkZWQuICovCisJCQlwYV9zdGFydF9zdWJ0cmFucyhjdXJyZW50X3hpZCwg c3RyZWFtX3hpZCk7CisJCQlyZXR1cm4gZmFsc2U7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChm YWxzZSk7CisJCQlyZXR1cm4gZmFsc2U7CQkvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8K Kwl9CiB9CiAKIC8qCkBAIC05MjYsOCArMTA5MCwxMSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZV9p bnRlcm5hbChMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJICogQmVn aW5UcmFuc2FjdGlvbkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBiYWxhbmNlIHRoZSBFbmRUcmFuc2Fj dGlvbkJsb2NrCiAJICogY2FsbGVkIHdpdGhpbiB0aGUgUHJlcGFyZVRyYW5zYWN0aW9uQmxvY2sg YmVsb3cuCiAJICovCi0JQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7Ci0JQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7IC8qIENvbXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICov CisJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwl7CisJCUJlZ2luVHJhbnNhY3Rpb25CbG9j aygpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBwcmVj ZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KKwl9CiAKIAkvKgogCSAqIFVwZGF0ZSBvcmlnaW4gc3Rh dGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgpAQCAt OTc0LDcgKzExNDEsNyBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAot CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwlzdG9yZV9mbHVz aF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCiAJ aW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKQEAgLTk5Niw2ICsxMTYzLDEyIEBAIGFw cGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBhIENPTU1J VCBQUkVQQVJFRCBvZiBhIHByZXZpb3VzbHkgUFJFUEFSRUQgdHJhbnNhY3Rpb24uCisgKgorICog Tm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3 YXMgcHJlcGFyZWQgaW4gYQorICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBJbiB0aGF0IGNhc2Us IHdlIGhhdmUgYWxyZWFkeSB3YWl0ZWQgZm9yIHRoZSBwcmVwYXJlCisgKiB0byBmaW5pc2ggaW4g YXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKCkgd2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZQor ICogb3BlcmF0aW9ucyBpbiB0aGF0IHRyYW5zYWN0aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1 YnNjcmliZXIsIHNvIG5vCisgKiBjb25jdXJyZW50IHRyYW5zYWN0aW9uIGNhbiBjYXVzZSBkZWFk bG9jayBvciB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5IGlzc3Vlcy4KICAqLwogc3RhdGljIHZvaWQK IGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAtMTAyNSw3ICsx MTk4LDcgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAot CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwlzdG9yZV9mbHVz aF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCWlu X3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRo YXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTEwMzksNiArMTIx MiwxMiBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoK ICAqIEhhbmRsZSBhIFJPTExCQUNLIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJFRCBU UkFOU0FDVElPTi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUg aWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBh cmUKKyAqIHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3 aWxsIGVuc3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2 ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8KKyAqIGNvbmN1cnJlbnQgdHJhbnNh Y3Rpb24gY2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kgaXNzdWVz LgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmlu Z0luZm8gcykKQEAgLTEwODAsNyArMTI1OSw3IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVw YXJlZChTdHJpbmdJbmZvIHMpCiAKIAlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0Jc3Rv cmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuKTsKKwlzdG9y ZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24sIFhhY3RMYXN0 Q29tbWl0RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAogCS8qIFByb2Nl c3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICov CkBAIC0xMDkyLDE1ICsxMjcxLDE2IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChT dHJpbmdJbmZvIHMpCiAKIC8qCiAgKiBIYW5kbGUgU1RSRUFNIFBSRVBBUkUuCi0gKgotICogTG9n aWMgaXMgaW4gdHdvIHBhcnRzOgotICogMS4gUmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRp b25zCi0gKiAyLiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZAogICovCiBzdGF0aWMg dm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIHsKIAlMb2dp Y2FsUmVwUHJlcGFyZWRUeG5EYXRhIHByZXBhcmVfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkvKiBTYXZl IHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZvRGF0YSBv cmlnaW5hbF9tc2cgPSAqczsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJl cG9ydChFUlJPUiwKQEAgLTExMTYsMjQgKzEyOTYsOTYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9w cmVwYXJlKFN0cmluZ0luZm8gcykKIAlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX3ByZXBhcmUocywg JnByZXBhcmVfZGF0YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChwcmVwYXJlX2Rh dGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNl aXZlZCBwcmVwYXJlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHByZXBhcmVfZGF0YS54 aWQpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24ocHJlcGFy ZV9kYXRhLnhpZCwgJndpbmZvKTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0 aW9ucy4gKi8KLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBh cmVfZGF0YS5wcmVwYXJlX2xzbik7CisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNl IFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBw cmVwYXJlZC4gKi8KLQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRh KTsKKwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBm aWxlLCBzbyByZXBsYXkgYWxsIHRoZQorCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICov CisJCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2Zp bGVzZXQsCisJCQkJCQkJCSAgIHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJl X2xzbik7CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCS8qIE1hcmsgdGhlIHRy YW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJu YWwoJnByZXBhcmVfZGF0YSk7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJl X2RhdGEuZW5kX2xzbik7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5k X2xzbiwgWGFjdExhc3RDb21taXRFbmQpOwogCi0JaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFs c2U7CisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJLyogVW5saW5rIHRo ZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJ c3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9k YXRhLnhpZCk7CisJCQlicmVhazsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxp emVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJY2FzZSBUUkFO U19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCWlmIChw YV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkpCisJCQl7CisJCQkJLyogRmluaXNo IHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwkJCQlwYV94YWN0X2Zp bmlzaCh3aW5mbywgcHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQkJCWJyZWFrOworCQkJfQorCisJ CQkvKgorCQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGlsZSBzZW5kaW5nIHRoaXMgY2hhbmdl IHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2UgbmVlZCB0byBzd2l0Y2ggdG8gc2Vy aWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3 aW5mbywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURF Ul9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCXN0cmVhbV9vcGVu X2FuZF93cml0ZV9jaGFuZ2UocHJlcGFyZV9kYXRhLnhpZCwKKwkJCQkJCQkJCQkgTE9HSUNBTF9S RVBfTVNHX1NUUkVBTV9QUkVQQVJFLAorCQkJCQkJCQkJCSAmb3JpZ2luYWxfbXNnKTsKKworCQkJ cGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VSSUFMSVpFX0RPTkUpOwor CisJCQkvKiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAqLwor CQkJcGFfeGFjdF9maW5pc2god2luZm8sIHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJCWJyZWFr OworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisKKwkJCS8qCisJCQkgKiBJZiB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5nIHNwb29sZWQgbWVzc2FnZXMgdGhlbgor CQkJICogY2xvc2UgdGhlIGZpbGUgYmVmb3JlIHByZXBhcmluZy4KKwkJCSAqLworCQkJaWYgKHN0 cmVhbV9mZCkKKwkJCQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCisJCQliZWdpbl9yZXBsaWNhdGlv bl9zdGVwKCk7CisKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLwor CQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisKKwkJCWVu ZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CisJCQlNeVBhcmFsbGVsU2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQgPSBYYWN0TGFzdENvbW1pdEVu ZDsKKworCQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgUEFSQUxMRUxfVFJB TlNfRklOSVNIRUQpOworCQkJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKE15UGFyYWxsZWxTaGFyZWQt PnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCXBhX3Jlc2V0X3N1YnRyYW5zKCk7CisK KwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIFBSRVBBUkUg Y29tbWFuZCIpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJ CQlicmVhazsKKwl9CisKKwlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCiAJLyogUHJvY2Vz cyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8K IAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKQEAgLTExNzAs NiArMTQyMiw0NyBAQCBhcHBseV9oYW5kbGVfb3JpZ2luKFN0cmluZ0luZm8gcykKIAkJCQkgZXJy bXNnX2ludGVybmFsKCJPUklHSU4gbWVzc2FnZSBzZW50IG91dCBvZiBvcmRlciIpKSk7CiB9CiAK Ky8qCisgKiBJbml0aWFsaXplIGZpbGVzZXQgKGlmIG5vdCBhbHJlYWR5IGRvbmUpLgorICoKKyAq IENyZWF0ZSBhIG5ldyBmaWxlIHdoZW4gZmlyc3Rfc2VnbWVudCBpcyB0cnVlLCBvdGhlcndpc2Ug b3BlbiB0aGUgZXhpc3RpbmcKKyAqIGZpbGUuCisgKi8KK3ZvaWQKK3N0cmVhbV9zdGFydF9pbnRl cm5hbChUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KQoreworCWJlZ2luX3Jl cGxpY2F0aW9uX3N0ZXAoKTsKKworCS8qCisJICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3Ry ZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQorCSAqIHVzZWQgZm9y IHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJt YW5lbnQKKwkgKiBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJl YW1pbmcgbWVzc2FnZSBmcm9tIGFueQorCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBm b3IgdGhpcyBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4KKwkgKiBOb3csIHdlIGNv dWxkIGNyZWF0ZSBhIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBi dXQKKwkgKiB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4K KwkgKi8KKwlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpCisJeworCQlN ZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8o QXBwbHlDb250ZXh0KTsKKworCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0g cGFsbG9jKHNpemVvZihGaWxlU2V0KSk7CisJCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdvcmtl ci0+c3RyZWFtX2ZpbGVzZXQpOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwor CX0KKworCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJ c3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsIGZpcnN0X3Nl Z21lbnQpOworCisJLyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhp c3Rpbmcgc3VieGFjdCBmaWxlLiAqLworCWlmICghZmlyc3Rfc2VnbWVudCkKKwkJc3VieGFjdF9p bmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKKworCWVuZF9yZXBsaWNh dGlvbl9zdGVwKCk7Cit9CisKIC8qCiAgKiBIYW5kbGUgU1RSRUFNIFNUQVJUIG1lc3NhZ2UuCiAg Ki8KQEAgLTExNzcsMjEgKzE0NzAsMTcgQEAgc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJl YW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogewogCWJvb2wJCWZpcnN0X3NlZ21lbnQ7CisJUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9u OworCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3Ry aW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9W SU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImR1cGxpY2F0ZSBTVFJFQU0gU1RBUlQg bWVzc2FnZSIpKSk7CiAKLQkvKgotCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0 YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkCi0JICogb24gdGhlIHN0cmVh bSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4gd2hpY2ggY2FzZSBpdAot CSAqIHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4g V2UgbmVlZCB0aGUKLQkgKiB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsIHVz ZWQgZm9yIHNlcmlhbGl6aW5nIHRoZQotCSAqIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGlu Zm8uCi0JICovCi0JYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwotCiAJLyogbm90aWZ5IGhhbmRs ZSBtZXRob2RzIHdlJ3JlIHByb2Nlc3NpbmcgYSByZW1vdGUgdHJhbnNhY3Rpb24gKi8KIAlpbl9z dHJlYW1lZF90cmFuc2FjdGlvbiA9IHRydWU7CiAKQEAgLTEyMDUsOTYgKzE0OTQsMjM3IEBAIGFw 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 Y2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkJLyoKKwkJCQkgKiBJbmNyZW1lbnQgdGhlIG51bWJl ciBvZiBzdHJlYW1pbmcgYmxvY2tzIHdhaXRpbmcgdG8gYmUKKwkJCQkgKiBwcm9jZXNzZWQgYnkg cGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJCSAqLworCQkJCXBnX2F0b21pY19hZGRfZmV0Y2hf dTMyKCZ3aW5mby0+c2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCwgMSk7CiAKLQkvKiBvcGVu IHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5fZmls ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsK KwkJCQkvKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciB0aGlzIHRyYW5zYWN0 aW9uLiAqLworCQkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKHdpbmZvKTsKKwkJCQlicmVh azsKKwkJCX0KIAotCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4 aXN0aW5nIHN1YnhhY3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFjdF9p bmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQkvKgor CQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGlsZSBzZW5kaW5nIHRoaXMgY2hhbmdlIHRvIHBh cmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2UgbmVlZCB0byBzd2l0Y2ggdG8gc2VyaWFsaXpl IG1vZGUuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywg IWZpcnN0X3NlZ21lbnQpOwogCi0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5H LCBOVUxMKTsKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJU SUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CiAKLQllbmRfcmVwbGljYXRpb25fc3Rl cCgpOworCQkJLyoKKwkJCSAqIE9wZW4gdGhlIHNwb29sIGZpbGUgdW5sZXNzIGl0IHdhcyBhbHJl YWR5IG9wZW5lZCB3aGVuIHN3aXRjaGluZworCQkJICogdG8gc2VyaWFsaXplIG1vZGUuIFRoZSB0 cmFuc2FjdGlvbiBzdGFydGVkIGluCisJCQkgKiBzdHJlYW1fc3RhcnRfaW50ZXJuYWwgd2lsbCBi ZSBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wLgorCQkJICovCisJCQlpZiAoYXBwbHlfYWN0 aW9uICE9IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKQorCQkJCXN0cmVhbV9zdGFydF9p bnRlcm5hbChzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKworCQkJc3RyZWFtX3dyaXRlX2No YW5nZShMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUQVJULCAmb3JpZ2luYWxfbXNnKTsKKworCQkJ LyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhpcyB0cmFuc2FjdGlvbi4g Ki8KKwkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKHdpbmZvKTsKKwkJCWJyZWFrOworCisJ CWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisJCQlpZiAoZmlyc3Rfc2VnbWVudCkKKwkJCXsK KwkJCQkvKiBIb2xkIHRoZSBsb2NrIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLiAq LworCQkJCXBhX2xvY2tfdHJhbnNhY3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NF eGNsdXNpdmVMb2NrKTsKKwkJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQ QVJBTExFTF9UUkFOU19TVEFSVEVEKTsKKwkJCX0KKworCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFu Z2VzID0gMDsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJ YnJlYWs7CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5HLCBOVUxM KTsKIH0KIAogLyoKLSAqIEhhbmRsZSBTVFJFQU0gU1RPUCBtZXNzYWdlLgorICogVXBkYXRlIHRo ZSBpbmZvcm1hdGlvbiBhYm91dCBzdWJ4YWN0cyBhbmQgY2xvc2UgdGhlIGZpbGUuCisgKgorICog VGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHN0cmVhbV9zdGFydF9pbnRl cm5hbCBmdW5jdGlvbiBoYXMKKyAqIGJlZW4gY2FsbGVkLgogICovCi1zdGF0aWMgdm9pZAotYXBw bHlfaGFuZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKK3ZvaWQKK3N0cmVhbV9zdG9wX2lu dGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkKQogewotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24pCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9M QVRJT04pLAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBTVE9QIG1lc3NhZ2Ugd2l0aG91 dCBTVFJFQU0gU1RBUlQiKSkpOwotCiAJLyoKLQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlh bGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91dAotCSAqIHN1Ynhh Y3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisJICogU2VyaWFsaXplIGluZm9ybWF0 aW9uIGFib3V0IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24sIHRoZW4KKwkg KiBjbG9zZSB0aGUgc3RyZWFtIG1lc3NhZ2VzIHNwb29sIGZpbGUuCiAJICovCi0Jc3VieGFjdF9p bmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCXN1Ynhh Y3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCXN0cmVhbV9j bG9zZV9maWxlKCk7CiAKLQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3Rh dGUgKi8KIAlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOwogCiAJLyogQ29tbWl0IHRoZSBw ZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAK LQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwotCiAJLyogUmVzZXQgcGVyLXN0cmVh bSBjb250ZXh0ICovCiAJTWVtb3J5Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0 KTsKLQotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7Ci0JcmVzZXRf YXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIGFi b3J0IG1lc3NhZ2UuCisgKiBIYW5kbGUgU1RSRUFNIFNUT1AgbWVzc2FnZS4KICAqLwogc3RhdGlj IHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQorYXBwbHlfaGFu ZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKLQlU cmFuc2FjdGlvbklkIHN1YnhpZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJ VHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCisJaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwK IAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19p bnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7CisJ CQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBT VEFSVCIpKSk7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9u KHN0cmVhbV94aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNh c2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKKwkJCXN0cmVhbV9zdG9wX2ludGVybmFsKHN0cmVh bV94aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExF TDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBMb2NrIGJlZm9yZSBzZW5kaW5n IHRoZSBTVFJFQU1fU1RPUCBtZXNzYWdlIHNvIHRoYXQgdGhlIGxlYWRlcgorCQkJICogY2FuIGhv bGQgdGhlIGxvY2sgZmlyc3QgYW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCB3YWl0 CisJCQkgKiBmb3IgbGVhZGVyIHRvIHJlbGVhc2UgdGhlIGxvY2suIFNlZSBMb2NraW5nIENvbnNp ZGVyYXRpb25zIGF0b3AKKwkJCSAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYy4KKwkJCSAqLworCQkJ cGFfbG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsK KworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJ CQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihOVUxMKTsKKwkJCQlicmVhazsKKwkJCX0KKwor CQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5n ZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNl cmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUo d2luZm8sIHRydWUpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFE RVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKExPR0lDQUxfUkVQ X01TR19TVFJFQU1fU1RPUCwgcyk7CisJCQlzdHJlYW1fc3RvcF9pbnRlcm5hbChzdHJlYW1feGlk KTsKKwkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKE5VTEwpOworCQkJYnJlYWs7CisKKwkJ Y2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCWVsb2coREVCVUcxLCAiYXBwbGllZCAldSBj aGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsiLAorCQkJCSBwYXJhbGxlbF9zdHJlYW1fbmNo YW5nZXMpOwogCi0JbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmeGlkLCAmc3VieGlk KTsKKwkJCS8qCisJCQkgKiBCeSB0aGUgdGltZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgcHJv Y2Vzc2luZyB0aGUgY2hhbmdlcyBpbgorCQkJICogdGhlIGN1cnJlbnQgc3RyZWFtaW5nIGJsb2Nr LCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBtYXkgaGF2ZQorCQkJICogc2VudCBtdWx0aXBsZSBz dHJlYW1pbmcgYmxvY2tzLiBUaGlzIGNhbiBsZWFkIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3 b3JrZXIgc3RhcnQgd2FpdGluZyBldmVuIHdoZW4gdGhlcmUgYXJlIG1vcmUgY2h1bmsgb2Ygc3Ry ZWFtcworCQkJICogaW4gdGhlIHF1ZXVlLiBTbywgdHJ5IHRvIGxvY2sgb25seSBpZiB0aGVyZSBp cyBubyBtZXNzYWdlIGxlZnQKKwkJCSAqIGluIHRoZSBxdWV1ZS4gU2VlIExvY2tpbmcgQ29uc2lk ZXJhdGlvbnMgYXRvcAorCQkJICogYXBwbHlwYXJhbGxlbHdvcmtlci5jLgorCQkJICoKKwkJCSAq IE5vdGUgdGhhdCBoZXJlIHdlIGhhdmUgYSByYWNlIGNvbmRpdGlvbiB3aGVyZSB3ZSBjYW4gc3Rh cnQKKwkJCSAqIHdhaXRpbmcgZXZlbiB3aGVuIHRoZXJlIGFyZSBwZW5kaW5nIHN0cmVhbWluZyBj aHVua3MuIFRoaXMgY2FuCisJCQkgKiBoYXBwZW4gaWYgdGhlIGxlYWRlciBzZW5kcyBhbm90aGVy IHN0cmVhbWluZyBibG9jayBhbmQgYWNxdWlyZXMKKwkJCSAqIHRoZSBzdHJlYW0gbG9jayBhZ2Fp biBhZnRlciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNoZWNrcworCQkJICogdGhhdCB0aGVy ZSBpcyBubyBwZW5kaW5nIHN0cmVhbWluZyBibG9jayBhbmQgYmVmb3JlIGl0IGFjdHVhbGx5CisJ CQkgKiBzdGFydHMgd2FpdGluZyBvbiBhIGxvY2suIFdlIGNhbiBoYW5kbGUgdGhpcyBjYXNlIGJ5 IG5vdAorCQkJICogYWxsb3dpbmcgdGhlIGxlYWRlciB0byBpbmNyZW1lbnQgdGhlIHN0cmVhbSBi bG9jayBjb3VudCBkdXJpbmcKKwkJCSAqIHRoZSB0aW1lIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBh Y3F1aXJlcyB0aGUgbG9jayBidXQgaXQgaXMgbm90CisJCQkgKiBjbGVhciB3aGV0aGVyIHRoYXQg aXMgd29ydGggdGhlIGNvbXBsZXhpdHkuCisJCQkgKgorCQkJICogTm93LCBpZiB0aGlzIG1pc3Nl ZCBjaHVuayBjb250YWlucyByb2xsYmFjayB0byBzYXZlcG9pbnQsIHRoZW4KKwkJCSAqIHRoZXJl IGlzIGEgcmlzayBvZiBkZWFkbG9jayB3aGljaCBwcm9iYWJseSBzaG91bGRuJ3QgaGFwcGVuCisJ CQkgKiBhZnRlciByZXN0YXJ0LgorCQkJICovCisJCQlwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9i bG9jaygpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQli cmVhazsKKwl9CisKKwlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJLyoKKwkg KiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNvdWxkIGJlIGluIGEgdHJhbnNhY3Rpb24gaW4g d2hpY2ggY2FzZSB3ZQorCSAqIG5lZWQgdG8gcmVwb3J0IHRoZSBzdGF0ZSBhcyBTVEFURV9JRExF SU5UUkFOU0FDVElPTi4KKwkgKi8KKwlpZiAoSXNUcmFuc2FjdGlvbk9yVHJhbnNhY3Rpb25CbG9j aygpKQorCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9OLCBO VUxMKTsKKwllbHNlCisJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7 CisKKwlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKK30KIAorLyoKKyAqIEhhbmRs ZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMgc2VyaWFsaXpl ZCB0byBmaWxlLgorICovCitzdGF0aWMgdm9pZAorc3RyZWFtX2Fib3J0X2ludGVybmFsKFRyYW5z YWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKK3sKIAkvKgogCSAqIElmIHRoZSB0 d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0 LCBzbwogCSAqIGp1c3QgZGVsZXRlIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgaW5mby4KIAkg Ki8KIAlpZiAoeGlkID09IHN1YnhpZCkKLQl7Ci0JCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hh Y3QoeGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7Ci0JfQogCWVsc2UKIAl7CiAJCS8qCkBAIC0xMzE4 LDggKzE3NDgsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJ Ym9vbAkJZm91bmQgPSBmYWxzZTsKIAkJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOwogCi0JCXNldF9h cHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7Ci0KIAkJ c3ViaWR4ID0gLTE7CiAJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJc3VieGFjdF9pbmZv X3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKQEAgLTEzNDQsNDcgKzE3NzIs MjI0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJY2xlYW51 cF9zdWJ4YWN0X2luZm8oKTsKIAkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCQlDb21taXRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKLQkJCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygp OwogCQkJcmV0dXJuOwogCQl9CiAKLQkJLyogb3BlbiB0aGUgY2hhbmdlcyBmaWxlICovCi0JCWNo YW5nZXNfZmlsZW5hbWUocGF0aCwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKLQkJ ZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNl dCwgcGF0aCwKLQkJCQkJCQkJT19SRFdSLCBmYWxzZSk7CisJCS8qIG9wZW4gdGhlIGNoYW5nZXMg ZmlsZSAqLworCQljaGFuZ2VzX2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQsIHhpZCk7CisJCWZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KE15TG9naWNhbFJlcFdvcmtlci0+ c3RyZWFtX2ZpbGVzZXQsIHBhdGgsCisJCQkJCQkJCU9fUkRXUiwgZmFsc2UpOworCisJCS8qIE9L LCB0cnVuY2F0ZSB0aGUgZmlsZSBhdCB0aGUgcmlnaHQgb2Zmc2V0ICovCisJCUJ1ZkZpbGVUcnVu Y2F0ZUZpbGVTZXQoZmQsIHN1YnhhY3RfZGF0YS5zdWJ4YWN0c1tzdWJpZHhdLmZpbGVubywKKwkJ CQkJCQkgICBzdWJ4YWN0X2RhdGEuc3VieGFjdHNbc3ViaWR4XS5vZmZzZXQpOworCQlCdWZGaWxl Q2xvc2UoZmQpOworCisJCS8qIGRpc2NhcmQgdGhlIHN1YnhhY3RzIGFkZGVkIGxhdGVyICovCisJ CXN1YnhhY3RfZGF0YS5uc3VieGFjdHMgPSBzdWJpZHg7CisKKwkJLyogd3JpdGUgdGhlIHVwZGF0 ZWQgc3VieGFjdCBsaXN0ICovCisJCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQpOworCisJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCX0KK30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQg bWVzc2FnZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBzKQoreworCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlk OworCUxvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgYWJvcnRfZGF0YTsKKwlQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwkv KiBTYXZlIHRoZSBtZXNzYWdlIGJlZm9yZSBpdCBpcyBjb25zdW1lZC4gKi8KKwlTdHJpbmdJbmZv RGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKKwlib29sCQl0b3BsZXZlbF94YWN0OworCisJaWYgKGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0g QUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKworCS8qIFdlIHJlY2VpdmUg YWJvcnQgaW5mb3JtYXRpb24gb25seSB3aGVuIHdlIGNhbiBhcHBseSBpbiBwYXJhbGxlbC4gKi8K Kwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZhYm9ydF9kYXRhLAorCQkJCQkJCQkg TXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSk7CisKKwl4aWQgPSBhYm9ydF9kYXRh LnhpZDsKKwlzdWJ4aWQgPSBhYm9ydF9kYXRhLnN1YnhpZDsKKwl0b3BsZXZlbF94YWN0ID0gKHhp ZCA9PSBzdWJ4aWQpOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdWJ4aWQsIGFi b3J0X2RhdGEuYWJvcnRfbHNuKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9h cHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9hY3Rpb24pCisJewor CQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisKKwkJCS8qCisJCQkgKiBXZSBhcmUgaW4g dGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbgorCQkJ ICogc2VyaWFsaXplZCB0byBmaWxlLgorCQkJICovCisJCQlzdHJlYW1fYWJvcnRfaW50ZXJuYWwo eGlkLCBzdWJ4aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19Q QVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBGb3IgdGhlIGNhc2Ug b2YgYWJvcnRpbmcgdGhlIHN1YnRyYW5zYWN0aW9uLCB3ZSBpbmNyZW1lbnQgdGhlCisJCQkgKiBu dW1iZXIgb2Ygc3RyZWFtaW5nIGJsb2NrcyBhbmQgdGFrZSB0aGUgbG9jayBhZ2FpbiBiZWZvcmUK KwkJCSAqIHNlbmRpbmcgdGhlIFNUUkVBTV9BQk9SVCB0byBlbnN1cmUgdGhhdCB0aGUgcGFyYWxs ZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3aWxsIHdhaXQgb24gdGhlIGxvY2sgZm9yIHRoZSBuZXh0 IHNldCBvZiBjaGFuZ2VzIGFmdGVyCisJCQkgKiBwcm9jZXNzaW5nIHRoZSBTVFJFQU1fQUJPUlQg bWVzc2FnZSBpZiBpdCBpcyBub3QgYWxyZWFkeQorCQkJICogd2FpdGluZyBmb3IgU1RSRUFNX1NU T1AgbWVzc2FnZS4KKwkJCSAqCisJCQkgKiBJdCBpcyBpbXBvcnRhbnQgdG8gcGVyZm9ybSB0aGlz IGxvY2tpbmcgYmVmb3JlIHNlbmRpbmcgdGhlCisJCQkgKiBTVFJFQU1fQUJPUlQgbWVzc2FnZSBz byB0aGF0IHRoZSBsZWFkZXIgY2FuIGhvbGQgdGhlIGxvY2sgZmlyc3QKKwkJCSAqIGFuZCB0aGUg cGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgd2FpdCBmb3IgdGhlIGxlYWRlciB0bworCQkJICog cmVsZWFzZSB0aGUgbG9jay4gVGhpcyBpcyB0aGUgc2FtZSBhcyB3aGF0IHdlIGRvIGluCisJCQkg KiBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AuIFNlZSBMb2NraW5nIENvbnNpZGVyYXRpb25zIGF0 b3AKKwkJCSAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYy4KKwkJCSAqLworCQkJaWYgKCF0b3BsZXZl bF94YWN0KQorCQkJeworCQkJCXBhX3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVM b2NrKTsKKwkJCQlwZ19hdG9taWNfYWRkX2ZldGNoX3UzMigmd2luZm8tPnNoYXJlZC0+cGVuZGlu Z19zdHJlYW1fY291bnQsIDEpOworCQkJCXBhX2xvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVz aXZlTG9jayk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBVbmxpa2UgU1RSRUFNX0NPTU1JVCBhbmQg U1RSRUFNX1BSRVBBUkUsIHdlIGRvbid0IHdhaXQgZm9yIHRoZQorCQkJICogcGFyYWxsZWwgYXBw bHkgd29ya2VyIHRvIGZpbmlzaCBhcyB0aGF0IGlzIG5vdCByZXF1aXJlZCB0bworCQkJICogbWFp bnRhaW4gdGhlIGNvbW1pdCBvcmRlciBhbmQgd29uJ3QgaGF2ZSB0aGUgcmlzayBvZiBmYWlsdXJl cworCQkJICogZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQgZGVhZGxvY2tzLgor CQkJICovCisJCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJ eworCQkJCWlmICh0b3BsZXZlbF94YWN0KQorCQkJCXsKKwkJCQkJcGFfdW5sb2NrX3N0cmVhbSh4 aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJCQkodm9pZCkgcGFfZnJlZV93b3JrZXIod2lu Zm8pOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3Np YmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJ ICogd29ya2VyIHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJ CQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2luZm8sIHRydWUpOworCisJCQkvKiBm YWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJ CQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1p Z2h0IGhhdmUgYXBwbGllZCBzb21lIGNoYW5nZXMsIHNvIHdyaXRlCisJCQkgKiB0aGUgU1RSRUFN X0FCT1JUIG1lc3NhZ2Ugc28gdGhhdCBpdCBjYW4gcm9sbGJhY2sgdGhlCisJCQkgKiBzdWJ0cmFu c2FjdGlvbiBpZiBuZWVkZWQuCisJCQkgKi8KKwkJCXN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFu Z2UoeGlkLCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JULAorCQkJCQkJCQkJCSAmb3JpZ2lu YWxfbXNnKTsKKworCQkJaWYgKHRvcGxldmVsX3hhY3QpCisJCQl7CisJCQkJcGFfc2V0X2ZpbGVz ZXRfc3RhdGUod2luZm8tPnNoYXJlZCwgRlNfU0VSSUFMSVpFX0RPTkUpOworCQkJCXBhX3VubG9j a19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCQkodm9pZCkgcGFfZnJlZV93 b3JrZXIod2luZm8pOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9B UFBMWToKKworCQkJLyoKKwkJCSAqIElmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgYXBw bHlpbmcgc3Bvb2xlZCBtZXNzYWdlcyB0aGVuCisJCQkgKiBjbG9zZSB0aGUgZmlsZSBiZWZvcmUg YWJvcnRpbmcuCisJCQkgKi8KKwkJCWlmICh0b3BsZXZlbF94YWN0ICYmIHN0cmVhbV9mZCkKKwkJ CQlzdHJlYW1fY2xvc2VfZmlsZSgpOworCisJCQlwYV9zdHJlYW1fYWJvcnQoJmFib3J0X2RhdGEp OworCisJCQkvKgorCQkJICogV2UgbmVlZCB0byB3YWl0IGFmdGVyIHByb2Nlc3Npbmcgcm9sbGJh Y2sgdG8gc2F2ZXBvaW50IGZvciB0aGUKKwkJCSAqIG5leHQgc2V0IG9mIGNoYW5nZXMuCisJCQkg KgorCQkJICogV2UgaGF2ZSBhIHJhY2UgY29uZGl0aW9uIGhlcmUgZHVlIHRvIHdoaWNoIHdlIGNh biBzdGFydCB3YWl0aW5nCisJCQkgKiBoZXJlIHdoZW4gdGhlcmUgYXJlIG1vcmUgY2h1bmsgb2Yg c3RyZWFtcyBpbiB0aGUgcXVldWUuIFNlZQorCQkJICogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdG9w LgorCQkJICovCisJCQlpZiAoIXRvcGxldmVsX3hhY3QpCisJCQkJcGFfZGVjcl9hbmRfd2FpdF9z dHJlYW1fYmxvY2soKTsKKworCQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRo ZSBTVFJFQU0gQUJPUlQgY29tbWFuZCIpOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCUFz c2VydChmYWxzZSk7CisJCQlicmVhazsKKwl9CisKKwlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0 X2luZm8oKTsKK30KKworLyoKKyAqIEVuc3VyZSB0aGF0IHRoZSBwYXNzZWQgbG9jYXRpb24gaXMg ZmlsZXNldCdzIGVuZC4KKyAqLworc3RhdGljIHZvaWQKK2Vuc3VyZV9sYXN0X21lc3NhZ2UoRmls ZVNldCAqc3RyZWFtX2ZpbGVzZXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgZmlsZW5vLAorCQkJ CQlvZmZfdCBvZmZzZXQpCit7CisJY2hhcgkJcGF0aFtNQVhQR1BBVEhdOworCUJ1ZkZpbGUgICAg KmZkOworCWludAkJCWxhc3RfZmlsZW5vOworCW9mZl90CQlsYXN0X29mZnNldDsKIAotCQkvKiBP SywgdHJ1bmNhdGUgdGhlIGZpbGUgYXQgdGhlIHJpZ2h0IG9mZnNldCAqLwotCQlCdWZGaWxlVHJ1 bmNhdGVGaWxlU2V0KGZkLCBzdWJ4YWN0X2RhdGEuc3VieGFjdHNbc3ViaWR4XS5maWxlbm8sCi0J CQkJCQkJICAgc3VieGFjdF9kYXRhLnN1YnhhY3RzW3N1YmlkeF0ub2Zmc2V0KTsKLQkJQnVmRmls ZUNsb3NlKGZkKTsKKwlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKIAotCQkvKiBkaXNj YXJkIHRoZSBzdWJ4YWN0cyBhZGRlZCBsYXRlciAqLwotCQlzdWJ4YWN0X2RhdGEubnN1YnhhY3Rz ID0gc3ViaWR4OworCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAotCQkvKiB3cml0ZSB0aGUg dXBkYXRlZCBzdWJ4YWN0IGxpc3QgKi8KLQkJc3VieGFjdF9pbmZvX3dyaXRlKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCk7CisJY2hhbmdlc19maWxlbmFtZShwYXRoLCBNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCB4aWQpOwogCi0JCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0JCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCX0KKwlmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChz dHJlYW1fZmlsZXNldCwgcGF0aCwgT19SRE9OTFksIGZhbHNlKTsKIAotCXJlc2V0X2FwcGx5X2Vy cm9yX2NvbnRleHRfaW5mbygpOworCUJ1ZkZpbGVTZWVrKGZkLCAwLCAwLCBTRUVLX0VORCk7CisJ QnVmRmlsZVRlbGwoZmQsICZsYXN0X2ZpbGVubywgJmxhc3Rfb2Zmc2V0KTsKKworCUJ1ZkZpbGVD bG9zZShmZCk7CisKKwllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCisJaWYgKGxhc3RfZmlsZW5v ICE9IGZpbGVubyB8fCBsYXN0X29mZnNldCAhPSBvZmZzZXQpCisJCWVsb2coRVJST1IsICJ1bmV4 cGVjdGVkIG1lc3NhZ2UgbGVmdCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24ncyBjaGFuZ2VzIGZp bGUgXCIlc1wiIiwKKwkJCSBwYXRoKTsKIH0KIAogLyoKICAqIENvbW1vbiBzcG9vbGZpbGUgcHJv Y2Vzc2luZy4KICAqLwotc3RhdGljIHZvaWQKLWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNh Y3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQordm9pZAorYXBwbHlfc3Bvb2xlZF9tZXNzYWdl cyhGaWxlU2V0ICpzdHJlYW1fZmlsZXNldCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCSAgIFhM b2dSZWNQdHIgbHNuKQogewogCVN0cmluZ0luZm9EYXRhIHMyOwogCWludAkJCW5jaGFuZ2VzOwog CWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAljaGFyCSAgICpidWZmZXIgPSBOVUxMOwogCU1lbW9y eUNvbnRleHQgb2xkY3h0OwotCUJ1ZkZpbGUgICAgKmZkOworCVJlc291cmNlT3duZXIgb2xkb3du ZXI7CisJaW50CQkJZmlsZW5vOworCW9mZl90CQlvZmZzZXQ7CiAKLQltYXliZV9zdGFydF9za2lw cGluZ19jaGFuZ2VzKGxzbik7CisJaWYgKCFhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJ bWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhsc24pOwogCiAJLyogTWFrZSBzdXJlIHdlIGhh dmUgYW4gb3BlbiB0cmFuc2FjdGlvbiAqLwogCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKQEAg LTE0MDAsOCArMjAwNSwxNiBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQg eGlkLCBYTG9nUmVjUHRyIGxzbikKIAljaGFuZ2VzX2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCk7CiAJZWxvZyhERUJVRzEsICJyZXBsYXlpbmcgY2hhbmdlcyBm cm9tIGZpbGUgXCIlc1wiIiwgcGF0aCk7CiAKLQlmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChNeUxv Z2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCBwYXRoLCBPX1JET05MWSwKLQkJCQkJCQlm YWxzZSk7CisJLyoKKwkgKiBNYWtlIHN1cmUgdGhlIGZpbGUgaXMgb3duZWQgYnkgdGhlIHRvcGxl dmVsIHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlCisJICogZmlsZSB3aWxsIG5vdCBiZSBhY2NpZGVu dGFsbHkgY2xvc2VkIHdoZW4gYWJvcnRpbmcgYSBzdWJ0cmFuc2FjdGlvbi4KKwkgKi8KKwlvbGRv d25lciA9IEN1cnJlbnRSZXNvdXJjZU93bmVyOworCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gVG9w VHJhbnNhY3Rpb25SZXNvdXJjZU93bmVyOworCisJc3RyZWFtX2ZkID0gQnVmRmlsZU9wZW5GaWxl U2V0KHN0cmVhbV9maWxlc2V0LCBwYXRoLCBPX1JET05MWSwgZmFsc2UpOworCisJQ3VycmVudFJl c291cmNlT3duZXIgPSBvbGRvd25lcjsKIAogCWJ1ZmZlciA9IHBhbGxvYyhCTENLU1opOwogCWlu aXRTdHJpbmdJbmZvKCZzMik7CkBAIC0xNDMyLDcgKzIwNDUsNyBAQCBhcHBseV9zcG9vbGVkX21l c3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKIAogCQkvKiByZWFkIGxlbmd0aCBvZiB0aGUgb24tZGlzayByZWNvcmQgKi8K LQkJbmJ5dGVzID0gQnVmRmlsZVJlYWQoZmQsICZsZW4sIHNpemVvZihsZW4pKTsKKwkJbmJ5dGVz ID0gQnVmRmlsZVJlYWQoc3RyZWFtX2ZkLCAmbGVuLCBzaXplb2YobGVuKSk7CiAKIAkJLyogaGF2 ZSB3ZSByZWFjaGVkIGVuZCBvZiB0aGUgZmlsZT8gKi8KIAkJaWYgKG5ieXRlcyA9PSAwKQpAQCAt MTQ1MywxMiArMjA2NiwxNCBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQg eGlkLCBYTG9nUmVjUHRyIGxzbikKIAkJYnVmZmVyID0gcmVwYWxsb2MoYnVmZmVyLCBsZW4pOwog CiAJCS8qIGFuZCBmaW5hbGx5IHJlYWQgdGhlIGRhdGEgaW50byB0aGUgYnVmZmVyICovCi0JCWlm IChCdWZGaWxlUmVhZChmZCwgYnVmZmVyLCBsZW4pICE9IGxlbikKKwkJaWYgKEJ1ZkZpbGVSZWFk KHN0cmVhbV9mZCwgYnVmZmVyLCBsZW4pICE9IGxlbikKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJybXNnKCJjb3VsZCBub3QgcmVh ZCBmcm9tIHN0cmVhbWluZyB0cmFuc2FjdGlvbidzIGNoYW5nZXMgZmlsZSBcIiVzXCI6ICVtIiwK IAkJCQkJCQlwYXRoKSkpOwogCisJCUJ1ZkZpbGVUZWxsKHN0cmVhbV9mZCwgJmZpbGVubywgJm9m ZnNldCk7CisKIAkJLyogY29weSB0aGUgYnVmZmVyIHRvIHRoZSBzdHJpbmdpbmZvIGFuZCBjYWxs IGFwcGx5X2Rpc3BhdGNoICovCiAJCXJlc2V0U3RyaW5nSW5mbygmczIpOwogCQlhcHBlbmRCaW5h cnlTdHJpbmdJbmZvKCZzMiwgYnVmZmVyLCBsZW4pOwpAQCAtMTQ3NCwxNSArMjA4OSwyNCBAQCBh cHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikK IAogCQluY2hhbmdlcysrOwogCisJCS8qCisJCSAqIEl0IGlzIHBvc3NpYmxlIHRoZSBmaWxlIGhh cyBiZWVuIGNsb3NlZCBiZWNhdXNlIHdlIGhhdmUgcHJvY2Vzc2VkCisJCSAqIHRoZSB0cmFuc2Fj dGlvbiBlbmQgbWVzc2FnZSBsaWtlIHN0cmVhbV9jb21taXQgaW4gd2hpY2ggY2FzZSB0aGF0CisJ CSAqIG11c3QgYmUgdGhlIGxhc3QgbWVzc2FnZS4KKwkJICovCisJCWlmICghc3RyZWFtX2ZkKQor CQl7CisJCQllbnN1cmVfbGFzdF9tZXNzYWdlKHN0cmVhbV9maWxlc2V0LCB4aWQsIGZpbGVubywg b2Zmc2V0KTsKKwkJCWJyZWFrOworCQl9CisKIAkJaWYgKG5jaGFuZ2VzICUgMTAwMCA9PSAwKQog CQkJZWxvZyhERUJVRzEsICJyZXBsYXllZCAlZCBjaGFuZ2VzIGZyb20gZmlsZSBcIiVzXCIiLAog CQkJCSBuY2hhbmdlcywgcGF0aCk7CiAJfQogCi0JQnVmRmlsZUNsb3NlKGZkKTsKLQotCXBmcmVl KGJ1ZmZlcik7Ci0JcGZyZWUoczIuZGF0YSk7CisJaWYgKHN0cmVhbV9mZCkKKwkJc3RyZWFtX2Ns b3NlX2ZpbGUoKTsKIAogCWVsb2coREVCVUcxLCAicmVwbGF5ZWQgJWQgKGFsbCkgY2hhbmdlcyBm cm9tIGZpbGUgXCIlc1wiIiwKIAkJIG5jaGFuZ2VzLCBwYXRoKTsKQEAgLTE0OTgsNiArMjEyMiwx MSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiB7CiAJVHJhbnNh Y3Rpb25JZCB4aWQ7CiAJTG9naWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CisJUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9u OworCisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3Ry aW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xNTA3LDE0ICsyMTM2LDc5IEBAIGFwcGx5X2hh bmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAl4aWQgPSBsb2dpY2FscmVwX3JlYWRf c3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0 X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVj ZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CisJYXBwbHlf YWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CiAKLQlh cHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJc3dp dGNoIChhcHBseV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAK LQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisJCQkvKgorCQkJ ICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5 IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bv b2xlZF9tZXNzYWdlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCB4aWQsCisJ CQkJCQkJCSAgIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOworCisJCQlhcHBseV9oYW5kbGVfY29t bWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0 aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0cmVhbV9jbGVh bnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCQlicmVhazsKKwor CQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsK KworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKKwkJCXsKKwkJ CQkvKiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAqLworCQkJ CXBhX3hhY3RfZmluaXNoKHdpbmZvLCBjb21taXRfZGF0YS5lbmRfbHNuKTsKKwkJCQlicmVhazsK KwkJCX0KKworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQgd2hpbGUgc2VuZGluZyB0 aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdlIG5lZWQgdG8gc3dp dGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlwYV9zd2l0Y2hfdG9fcGFydGlhbF9z ZXJpYWxpemUod2luZm8sIHRydWUpOworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBU UkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOwogCi0JLyog dW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZv ICovCi0Jc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlk KTsKKwkJCXN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoeGlkLCBMT0dJQ0FMX1JFUF9NU0df U1RSRUFNX0NPTU1JVCwKKwkJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCXBhX3NldF9m aWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKKworCQkJLyog RmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwkJCXBhX3hh Y3RfZmluaXNoKHdpbmZvLCBjb21taXRfZGF0YS5lbmRfbHNuKTsKKwkJCWJyZWFrOworCisJCWNh c2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIGlzIGFwcGx5aW5nIHNwb29sZWQgbWVzc2FnZXMgdGhlbgorCQkJICogY2xv c2UgdGhlIGZpbGUgYmVmb3JlIGNvbW1pdHRpbmcuCisJCQkgKi8KKwkJCWlmIChzdHJlYW1fZmQp CisJCQkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKworCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRl cm5hbCgmY29tbWl0X2RhdGEpOworCisJCQlNeVBhcmFsbGVsU2hhcmVkLT5sYXN0X2NvbW1pdF9l bmQgPSBYYWN0TGFzdENvbW1pdEVuZDsKKworCQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxl bFNoYXJlZCwgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCQkJcGFfdW5sb2NrX3RyYW5zYWN0 aW9uKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJCXBhX3Jlc2V0X3N1YnRyYW5zKCk7 CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIENPTU1J VCBjb21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsK KwkJCWJyZWFrOworCX0KIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBz eW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21t aXRfZGF0YS5lbmRfbHNuKTsKQEAgLTE1NTgsOSArMjI1MiwxNiBAQCBhcHBseV9oYW5kbGVfY29t bWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIAkJcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBjb21taXRfZGF0YS0+Y29tbWl0dGltZTsK IAogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlpZiAoSXNUcmFuc2FjdGlvbkJs b2NrKCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFsc2UpOworCQkJQ29tbWl0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKwogCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwog Ci0JCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLT5lbmRfbHNuKTsKKwkJc3RvcmVf Zmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEtPmVuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsK IAl9CiAJZWxzZQogCXsKQEAgLTI1MTEsNyArMzIxMiw3IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0 ZShTdHJpbmdJbmZvIHMpCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNz YWdlIGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChT dHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0 ZShzKTsKQEAgLTI2NzUsMTcgKzMzNzYsMjQgQEAgZ2V0X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQ dHIgKndyaXRlLCBYTG9nUmVjUHRyICpmbHVzaCwKIC8qCiAgKiBTdG9yZSBjdXJyZW50IHJlbW90 ZS9sb2NhbCBsc24gcGFpciBpbiB0aGUgdHJhY2tpbmcgbGlzdC4KICAqLwotc3RhdGljIHZvaWQK LXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKK3ZvaWQKK3N0b3Jl X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgWExvZ1JlY1B0ciBsb2NhbF9s c24pCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKgorCSAqIFNraXAgZm9yIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMsIGJlY2F1c2UgdGhlIGxzbl9tYXBwaW5nIGlzIG1haW50YWlu ZWQKKwkgKiBieSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlpZiAoYW1fcGFyYWxs ZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKwogCS8qIE5lZWQgdG8gZG8gdGhpcyBpbiBw ZXJtYW5lbnQgY29udGV4dCAqLwogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQp OwogCiAJLyogVHJhY2sgY29tbWl0IGxzbiAgKi8KIAlmbHVzaHBvcyA9IChGbHVzaFBvc2l0aW9u ICopIHBhbGxvYyhzaXplb2YoRmx1c2hQb3NpdGlvbikpOwotCWZsdXNocG9zLT5sb2NhbF9lbmQg PSBYYWN0TGFzdENvbW1pdEVuZDsKKwlmbHVzaHBvcy0+bG9jYWxfZW5kID0gbG9jYWxfbHNuOwog CWZsdXNocG9zLT5yZW1vdGVfZW5kID0gcmVtb3RlX2xzbjsKIAogCWRsaXN0X3B1c2hfdGFpbCgm bHNuX21hcHBpbmcsICZmbHVzaHBvcy0+bm9kZSk7CkBAIC0yNzQ0LDYgKzM0NTIsNyBAQCBMb2dp Y2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAllcnJjYWxsYmFjay5j YWxsYmFjayA9IGFwcGx5X2Vycm9yX2NhbGxiYWNrOwogCWVycmNhbGxiYWNrLnByZXZpb3VzID0g ZXJyb3JfY29udGV4dF9zdGFjazsKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNr OworCWFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCiAJ LyogVGhpcyBvdXRlciBsb29wIGl0ZXJhdGVzIG9uY2UgcGVyIHdhaXQuICovCiAJZm9yICg7OykK QEAgLTI5NTgsNiArMzY2Nyw3IEBAIExvZ2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0 X3JlY2VpdmVkKQogCiAJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCiAJZXJyb3Jf Y29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworCWFwcGx5X2Vycm9yX2NvbnRl eHRfc3RhY2sgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCiAJLyogQWxsIGRvbmUgKi8KIAl3YWxy Y3ZfZW5kc3RyZWFtaW5nKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sICZ0bGkpOwpAQCAtMzA1Niw5 ICszNzY2LDMxIEBAIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNl LCBib29sIHJlcXVlc3RSZXBseSkKIH0KIAogLyoKLSAqIFJlcmVhZCBzdWJzY3JpcHRpb24gaW5m byBpZiBuZWVkZWQuIE1vc3QgY2hhbmdlcyB3aWxsIGJlIGV4aXQuCisgKiBFeGl0IHJvdXRpbmUg Zm9yIGFwcGx5IHdvcmtlcnMgZHVlIHRvIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgY2hhbmdlcy4K ICAqLwogc3RhdGljIHZvaWQKK2FwcGx5X3dvcmtlcl9leGl0KHZvaWQpCit7CisJaWYgKGFtX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJLyoKKwkJICogRG9uJ3Qgc3RvcCB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGFzIHRoZSBsZWFkZXIgd2lsbCBkZXRlY3QgdGhlCisJCSAqIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgY2hhbmdlIGFuZCByZXN0YXJ0IGxvZ2ljYWwgcmVwbGljYXRp b24gbGF0ZXIKKwkJICogYW55d2F5LiBUaGlzIGFsc28gcHJldmVudHMgdGhlIGxlYWRlciBmcm9t IHJlcG9ydGluZyBlcnJvcnMgd2hlbgorCQkgKiB0cnlpbmcgdG8gY29tbXVuaWNhdGUgd2l0aCBh IHN0b3BwZWQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3aGljaAorCQkgKiB3b3VsZCBhY2NpZGVu dGFsbHkgZGlzYWJsZSBzdWJzY3JpcHRpb25zIGlmIGRpc2FibGVfb25fZXJyb3Igd2FzCisJCSAq IHNldC4KKwkJICovCisJCXJldHVybjsKKwl9CisKKwlwcm9jX2V4aXQoMCk7Cit9CisKKy8qCisg KiBSZXJlYWQgc3Vic2NyaXB0aW9uIGluZm8gaWYgbmVlZGVkLiBNb3N0IGNoYW5nZXMgd2lsbCBi ZSBleGl0LgorICovCit2b2lkCiBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiB7CiAJ TWVtb3J5Q29udGV4dCBvbGRjdHg7CkBAIC0zMDg4LDkgKzM4MjAsOSBAQCBtYXliZV9yZXJlYWRf c3Vic2NyaXB0aW9uKHZvaWQpCiAJaWYgKCFuZXdzdWIpCiAJewogCQllcmVwb3J0KExPRywKLQkJ CQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0 aW9uIFwiJXNcIiB3aWxsICIKLQkJCQkJCSJzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3 YXMgcmVtb3ZlZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNs YXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIg Ki8KKwkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVj YXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFt ZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCQlwcm9jX2V4aXQoMCk7CiAJfQpAQCAt MzA5OSwxMSArMzgzMSwxMSBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJaWYg KCFuZXdzdWItPmVuYWJsZWQpCiAJewogCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxs ICIKLQkJCQkJCSJzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQiLAot CQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVz IGlzIHRoZSBuYW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1z ZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2UgdGhlIHN1YnNj cmlwdGlvbiB3YXMgZGlzYWJsZWQiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2Ny aXB0aW9uLT5uYW1lKSkpOwogCi0JCXByb2NfZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2V4aXQo KTsKIAl9CiAKIAkvKiAhc2xvdG5hbWUgc2hvdWxkIG5ldmVyIGhhcHBlbiB3aGVuIGVuYWJsZWQg aXMgdHJ1ZS4gKi8KQEAgLTMxMTQsNyArMzg0NiwxMCBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0 aW9uKHZvaWQpCiAKIAkvKgogCSAqIEV4aXQgaWYgYW55IHBhcmFtZXRlciB0aGF0IGFmZmVjdHMg dGhlIHJlbW90ZSBjb25uZWN0aW9uIHdhcyBjaGFuZ2VkLgotCSAqIFRoZSBsYXVuY2hlciB3aWxs IHN0YXJ0IGEgbmV3IHdvcmtlci4KKwkgKiBUaGUgbGF1bmNoZXIgd2lsbCBzdGFydCBhIG5ldyB3 b3JrZXIgYnV0IG5vdGUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgd29uJ3Qg cmVzdGFydCBpZiB0aGUgc3RyZWFtaW5nIG9wdGlvbidzIHZhbHVlIGlzIGNoYW5nZWQgZnJvbQor CSAqICdwYXJhbGxlbCcgdG8gYW55IG90aGVyIHZhbHVlIG9yIHRoZSBzZXJ2ZXIgZGVjaWRlcyBu b3QgdG8gc3RyZWFtIHRoZQorCSAqIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uLgogCSAqLwogCWlm IChzdHJjbXAobmV3c3ViLT5jb25uaW5mbywgTXlTdWJzY3JpcHRpb24tPmNvbm5pbmZvKSAhPSAw IHx8CiAJCXN0cmNtcChuZXdzdWItPm5hbWUsIE15U3Vic2NyaXB0aW9uLT5uYW1lKSAhPSAwIHx8 CkBAIC0zMTI1LDExICszODYwLDE3IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkK IAkJbmV3c3ViLT5vd25lciAhPSBNeVN1YnNjcmlwdGlvbi0+b3duZXIgfHwKIAkJIWVxdWFsKG5l d3N1Yi0+cHVibGljYXRpb25zLCBNeVN1YnNjcmlwdGlvbi0+cHVibGljYXRpb25zKSkKIAl7Ci0J CWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29y a2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIG9mIGEgcGFy YW1ldGVyIGNoYW5nZSIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJaWYgKGFt X3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQkJZXJlcG9ydChMT0csCisJCQkJCShlcnJtc2co ImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRp b24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCisJCQkJ CQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCWVsc2UKKwkJCWVyZXBvcnQoTE9HLAorCQkJ LyogdHJhbnNsYXRvcjogZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlv biB3b3JrZXIgKi8KKwkJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2ls bCByZXN0YXJ0IGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKKwkJCQkJCQlnZXRfd29y a2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJvY19leGl0KDApOwor CQlhcHBseV93b3JrZXJfZXhpdCgpOwogCX0KIAogCS8qIENoZWNrIGZvciBvdGhlciBjaGFuZ2Vz IHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB0b28uICovCkBAIC0zMzgxLDcgKzQxMjIsNyBAQCBj aGFuZ2VzX2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQp CiAgKiB0b3BsZXZlbCB0cmFuc2FjdGlvbi4gRWFjaCBzdWJzY3JpcHRpb24gaGFzIGEgc2VwYXJh dGUgc2V0IG9mIGZpbGVzCiAgKiBmb3IgYW55IHRvcGxldmVsIHRyYW5zYWN0aW9uLgogICovCi1z dGF0aWMgdm9pZAordm9pZAogc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2Fj dGlvbklkIHhpZCkKIHsKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CkBAIC0zNDA0LDkgKzQxNDUs NiBAQCBzdHJlYW1fY2xlYW51cF9maWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQog ICogYnkgc3RyZWFtX3hpZCAoZ2xvYmFsIHZhcmlhYmxlKS4gSWYgaXQncyB0aGUgZmlyc3QgY2h1 bmsgb2Ygc3RyZWFtZWQKICAqIGNoYW5nZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb24sIGNyZWF0ZSB0 aGUgYnVmZmlsZSwgb3RoZXJ3aXNlIG9wZW4gdGhlCiAgKiBwcmV2aW91c2x5IGNyZWF0ZWQgZmls ZS4KLSAqCi0gKiBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEg InN0cmVhbWluZyIgYmxvY2ssIGkuZS4KLSAqIGJldHdlZW4gc3RyZWFtX3N0YXJ0L3N0cmVhbV9z dG9wIG1lc3NhZ2VzIGZyb20gdGhlIHVwc3RyZWFtLgogICovCiBzdGF0aWMgdm9pZAogc3RyZWFt X29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21l bnQpCkBAIC0zNDE0LDcgKzQxNTIsNiBAQCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJh bnNhY3Rpb25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKIAljaGFyCQlwYXRoW01BWFBHUEFU SF07CiAJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CiAKLQlBc3NlcnQoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pOwogCUFzc2VydChPaWRJc1ZhbGlkKHN1YmlkKSk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9u SWRJc1ZhbGlkKHhpZCkpOwogCUFzc2VydChzdHJlYW1fZmQgPT0gTlVMTCk7CkBAIC0zNDUzLDE1 ICs0MTkwLDEwIEBAIHN0cmVhbV9vcGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhp ZCwgYm9vbCBmaXJzdF9zZWdtZW50KQogLyoKICAqIHN0cmVhbV9jbG9zZV9maWxlCiAgKgkgIENs b3NlIHRoZSBjdXJyZW50bHkgb3BlbiBmaWxlIHdpdGggc3RyZWFtZWQgY2hhbmdlcy4KLSAqCi0g KiBUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGEgc3RyZWFtaW5nIGJsb2Nr LCBpLmUuIGF0IHN0cmVhbV9zdG9wCi0gKiBtZXNzYWdlIGZyb20gdGhlIHVwc3RyZWFtLgogICov CiBzdGF0aWMgdm9pZAogc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCkKIHsKLQlBc3NlcnQoaW5fc3Ry ZWFtZWRfdHJhbnNhY3Rpb24pOwotCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1f eGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAogCUJ1ZkZpbGVDbG9zZShzdHJl YW1fZmQpOwpAQCAtMzQ4Myw4ICs0MjE1LDYgQEAgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFj dGlvbiwgU3RyaW5nSW5mbyBzKQogewogCWludAkJCWxlbjsKIAotCUFzc2VydChpbl9zdHJlYW1l ZF90cmFuc2FjdGlvbik7Ci0JQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQp KTsKIAlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCiAJLyogdG90YWwgb24tZGlzayBzaXpl LCBpbmNsdWRpbmcgdGhlIGFjdGlvbiB0eXBlIGNoYXJhY3RlciAqLwpAQCAtMzUwMiw2ICs0MjMy LDI2IEBAIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAlC dWZGaWxlV3JpdGUoc3RyZWFtX2ZkLCAmcy0+ZGF0YVtzLT5jdXJzb3JdLCBsZW4pOwogfQogCisv KgorICogc3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZQorICoJICBTZXJpYWxpemUgYSBtZXNz YWdlIHRvIGEgZmlsZSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLgorICoKKyAqIFRoaXMgZnVu Y3Rpb24gaXMgc2ltaWxhciB0byBzdHJlYW1fd3JpdGVfY2hhbmdlIGV4Y2VwdCB0aGF0IGl0IHdp bGwgb3BlbiB0aGUKKyAqIHRhcmdldCBmaWxlIGlmIG5vdCBhbHJlYWR5IGJlZm9yZSB3cml0aW5n IHRoZSBtZXNzYWdlIGFuZCBjbG9zZSB0aGUgZmlsZSBhdAorICogdGhlIGVuZC4KKyAqLworc3Rh dGljIHZvaWQKK3N0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UoVHJhbnNhY3Rpb25JZCB4aWQs IGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCit7CisJQXNzZXJ0KCFpbl9zdHJlYW1lZF90cmFu c2FjdGlvbik7CisKKwlpZiAoIXN0cmVhbV9mZCkKKwkJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHhp ZCwgZmFsc2UpOworCisJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCXN0cmVhbV9z dG9wX2ludGVybmFsKHhpZCk7Cit9CisKIC8qCiAgKiBDbGVhbnVwIHRoZSBtZW1vcnkgZm9yIHN1 YnhhY3RzIGFuZCByZXNldCB0aGUgcmVsYXRlZCB2YXJpYWJsZXMuCiAgKi8KQEAgLTM2MTMsMzcg KzQzNjMsMTYgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRwb3MpCiAJUEdf RU5EX1RSWSgpOwogfQogCi0vKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRy eSBwb2ludCAqLworLyoKKyAqIENvbW1vbiBpbml0aWFsaXphdGlvbiBmb3IgbGVhZGVyIGFwcGx5 IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIEluaXRpYWxpemUgdGhl IGRhdGFiYXNlIGNvbm5lY3Rpb24sIGluLW1lbW9yeSBzdWJzY3JpcHRpb24gYW5kIG5lY2Vzc2Fy eQorICogY29uZmlnIG9wdGlvbnMuCisgKi8KIHZvaWQKLUFwcGx5V29ya2VyTWFpbihEYXR1bSBt YWluX2FyZykKK0luaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKQogewotCWludAkJCXdvcmtlcl9z bG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7Ci0J Y2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07Ci0JWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRw b3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKLQljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKLQlX YWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7Ci0JaW50CQkJc2VydmVyX3ZlcnNpb247Ci0KLQkv KiBBdHRhY2ggdG8gc2xvdCAqLwotCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xv dCk7Ci0KLQkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNp Z25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7Ci0J QmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7Ci0KLQkvKgotCSAqIFdlIGRvbid0IGN1 cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2Vzcywg YnV0Ci0JICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJj ZU93bmVyIGhlcmUuCi0JICovCi0KLQkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZh bHVlICovCi0JTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJl cFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3Rp bWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0KLQkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZp YyBmdW5jdGlvbnMgKi8KLQlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAK IAkvKiBSdW4gYXMgcmVwbGljYSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJvbGUuICovCiAJU2V0Q29u ZmlnT3B0aW9uKCJzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUiLCAicmVwbGljYSIsCkBAIC0zNjcx LDkgKzQ0MDAsMTAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCWlmICghTXlT dWJzY3JpcHRpb24pCiAJewogCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJl cGxpY2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1IHdpbGwgbm90ICIKLQkJ CQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQgZHVyaW5nIHN0 YXJ0dXAiLAotCQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwkJLyogdHJhbnNs YXRvcjogJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJ CQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uICV1IHdpbGwgbm90IHN0YXJ0IGJlY2F1c2Ug dGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQlnZXRf d29ya2VyX25hbWUoKSwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwogCQlwcm9jX2V4 aXQoMCk7CiAJfQogCkBAIC0zNjgzLDExICs0NDEzLDExIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1 bSBtYWluX2FyZykKIAlpZiAoIU15U3Vic2NyaXB0aW9uLT5lbmFibGVkKQogCXsKIAkJZXJlcG9y dChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBub3QgIgotCQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhl IHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQgZHVyaW5nIHN0YXJ0dXAiLAotCQkJCQkJTXlTdWJz Y3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1l IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1 YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBub3Qgc3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9u IHdhcyBkaXNhYmxlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwg TXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3Jr ZXJfZXhpdCgpOwogCX0KIAogCS8qIFNldHVwIHN5bmNocm9ub3VzIGNvbW1pdCBhY2NvcmRpbmcg dG8gdGhlIHVzZXIncyB3aXNoZXMgKi8KQEAgLTM3MDIsMTMgKzQ0MzIsNDkgQEAgQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKQogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCWVy ZXBvcnQoTE9HLAogCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luY2hy b25pemF0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiwgdGFibGUgXCIlc1wiIGhh cyBzdGFydGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLCBnZXRfcmVsX25hbWUoTXlM b2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwK KwkJCQkJCWdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsKIAllbHNl CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkg d29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJCU15U3Vi c2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFt ZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBz dWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgp LCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworfQorCisvKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAq Lwordm9pZAorQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCWludAkJCXdvcmtl cl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1F REFUQUxFTl07CisJWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1JlY1B0 cjsKKwljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKKwlXYWxSY3ZTdHJlYW1PcHRpb25zIG9w dGlvbnM7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisKKwkvKiBBdHRhY2ggdG8gc2xvdCAqLwor CWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwkvKiBTZXR1cCBzaWdu YWwgaGFuZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdS ZWxvYWQpOworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxv Y2tTaWduYWxzKCk7CisKKwkvKgorCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBSZXNv dXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0CisJICogaWYgd2UgZGlkLCB3 ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCisJICovCisK KwkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCisJTXlMb2dpY2FsUmVw V29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3Rp bWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGltZXN0 YW1wKCk7CisKKwkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwlsb2Fk X2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CisKKwlJbml0aWFsaXplQXBwbHlXb3Jr ZXIoKTsKIAogCS8qIENvbm5lY3QgdG8gdGhlIG9yaWdpbiBhbmQgc3RhcnQgdGhlIHJlcGxpY2F0 aW9uLiAqLwogCWVsb2coREVCVUcxLCAiY29ubmVjdGluZyB0byBwdWJsaXNoZXIgdXNpbmcgY29u bmVjdGlvbiBzdHJpbmcgXCIlc1wiIiwKQEAgLTM3MTgsMjAgKzQ0ODQsMTUgQEAgQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKQogCXsKIAkJc3RhcnRfdGFibGVfc3luYygmb3JpZ2luX3N0 YXJ0cG9zLCAmbXlzbG90bmFtZSk7CiAKLQkJLyoKLQkJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBu YW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dAotCQkgKiBtZXNzYWdl LgotCQkgKi8KIAkJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChNeVN1YnNjcmlw dGlvbi0+b2lkLAogCQkJCQkJCQkJCSAgIE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQsCiAJCQkJ CQkJCQkJICAgb3JpZ2lubmFtZSwKIAkJCQkJCQkJCQkgICBzaXplb2Yob3JpZ2lubmFtZSkpOwot CQlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3Ry ZHVwKEFwcGx5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKwkJc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5hbWUpOwogCX0KIAllbHNlCiAJewot CQkvKiBUaGlzIGlzIG1haW4gYXBwbHkgd29ya2VyICovCisJCS8qIFRoaXMgaXMgdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIgKi8KIAkJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CiAJCVRpbWVMaW5lSUQJ c3RhcnRwb2ludFRMSTsKIAkJY2hhcgkgICAqZXJyOwpAQCAtMzc1NSw3ICs0NTE2LDcgQEAgQXBw bHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlf bmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKIAkJaWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkKIAkJ CW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7Ci0JCXJlcGxvcmlnaW5f c2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmln aW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJb3Jp Z2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtMzc3MywxMiArNDUzNCw3IEBAIEFwcGx5 V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJICovCiAJCSh2b2lkKSB3YWxyY3ZfaWRlbnRp Znlfc3lzdGVtKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sICZzdGFydHBvaW50VExJKTsKIAotCQkv KgotCQkgKiBBbGxvY2F0ZSB0aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZv ciBlcnJvciBjb250ZXh0Ci0JCSAqIG1lc3NhZ2UuCi0JCSAqLwotCQlhcHBseV9lcnJvcl9jYWxs YmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwK LQkJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfb3JpZ2luKG9yaWdpbm5hbWUpOwogCX0KIAogCS8qCkBAIC0zNzk2LDEzICs0NTUyLDM2IEBA IEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92ZXJzaW9uID0gd2Fs cmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwogCW9wdGlvbnMucHJv dG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8g TE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJf dmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVN IDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1f VkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNOwogCiAJb3B0aW9u cy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1Ymxp Y2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRpb24t PmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3JpcHRp b24tPnN0cmVhbTsKKworCS8qCisJICogQXNzaWduIHRoZSBhcHByb3ByaWF0ZSBvcHRpb24gdmFs dWUgZm9yIHN0cmVhbWluZyBvcHRpb24gYWNjb3JkaW5nIHRvCisJICogdGhlICdzdHJlYW1pbmcn IG1vZGUgYW5kIHRoZSBwdWJsaXNoZXIncyBhYmlsaXR5IHRvIHN1cHBvcnQgdGhhdCBtb2RlLgor CSAqLworCWlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAgJiYKKwkJTXlTdWJzY3JpcHRpb24t PnN0cmVhbSA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCkKKwl7CisJCW9wdGlvbnMucHJv dG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gInBhcmFsbGVsIjsKKwkJTXlMb2dpY2FsUmVwV29y a2VyLT5wYXJhbGxlbF9hcHBseSA9IHRydWU7CisJfQorCWVsc2UgaWYgKHNlcnZlcl92ZXJzaW9u ID49IDE0MDAwMCAmJgorCQkJIE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gTE9HSUNBTFJFUF9T VFJFQU1fT0ZGKQorCXsKKwkJb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSAi b24iOworCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7CisJfQor CWVsc2UKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gTlVMTDsK KwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOworCX0KKwogCW9w dGlvbnMucHJvdG8ubG9naWNhbC50d29waGFzZSA9IGZhbHNlOwogCW9wdGlvbnMucHJvdG8ubG9n aWNhbC5vcmlnaW4gPSBwc3RyZHVwKE15U3Vic2NyaXB0aW9uLT5vcmlnaW4pOwogCkBAIC0zODk5 LDYgKzQ2NzgsMTUgQEAgSXNMb2dpY2FsV29ya2VyKHZvaWQpCiAJcmV0dXJuIE15TG9naWNhbFJl cFdvcmtlciAhPSBOVUxMOwogfQogCisvKgorICogSXMgY3VycmVudCBwcm9jZXNzIGEgbG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXI/CisgKi8KK2Jvb2wKK0lzTG9naWNh bFBhcmFsbGVsQXBwbHlXb3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gSXNMb2dpY2FsV29ya2VyKCkg JiYgYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCk7Cit9CisKIC8qCiAgKiBTdGFydCBza2lwcGlu ZyBjaGFuZ2VzIG9mIHRoZSB0cmFuc2FjdGlvbiBpZiB0aGUgZ2l2ZW4gTFNOIG1hdGNoZXMgdGhl CiAgKiBMU04gc3BlY2lmaWVkIGJ5IHN1YnNjcmlwdGlvbidzIHNraXBsc24uCkBAIC0zOTYxLDcg KzQ3NDksNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hf bHNuKQogCVhMb2dSZWNQdHIJbXlza2lwbHNuID0gTXlTdWJzY3JpcHRpb24tPnNraXBsc247CiAJ Ym9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOwogCi0JaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZh bGlkKG15c2tpcGxzbikpKQorCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBs c24pKSB8fCBhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKIAkJcmV0dXJuOwogCiAJaWYgKCFJ c1RyYW5zYWN0aW9uU3RhdGUoKSkKQEAgLTQwMzMsNyArNDgyMSw3IEBAIGNsZWFyX3N1YnNjcmlw dGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiB9CiAKIC8qIEVycm9yIGNhbGxi YWNrIHRvIGdpdmUgbW9yZSBjb250ZXh0IGluZm8gYWJvdXQgdGhlIGNoYW5nZSBiZWluZyBhcHBs aWVkICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KQogewogCUFwcGx5RXJyb3JDYWxsYmFja0FyZyAqZXJyYXJnID0gJmFwcGx5X2Vycm9yX2NhbGxi YWNrX2FyZzsKQEAgLTQwNjEsMjMgKzQ4NDksNDcgQEAgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9p ZCAqYXJnKQogCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCiAJCQkJCSAgIExTTl9GT1JNQVRf QVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKIAl9Ci0JZWxzZSBpZiAoZXJyYXJnLT5yZW1vdGVf YXR0bnVtIDwgMCkKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVw bGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVw bGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmlu aXNoZWQgYXQgJVgvJVgiLAotCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJICAgbG9n aWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLm5zcG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxu YW1lLAotCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1Mo ZXJyYXJnLT5maW5pc2hfbHNuKSk7CiAJZWxzZQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJl bW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5 cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVt biBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBl cnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFy Zy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJ CSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+ cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCi0JCQkJICAgZXJyYXJn LT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24p KTsKKwl7CisJCWlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0gPCAwKQorCQl7CisJCQlpZiAoWExv Z1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQoInBy b2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5n IG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVz LiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwK KwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJ CQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQpOworCQkJ ZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0 aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVk IGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dp Y2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5y ZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1B VF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKFhM b2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJw cm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmlu ZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIl cy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJn LT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+ Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJ CQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBl cnJhcmctPnJlbW90ZV94aWQpOworCQkJZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3Npbmcg cmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2Ug dHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29s dW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAorCQkJCQkJ ICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBl KGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5h bWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBl cnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJ CQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJy YXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwl9CiB9CiAKIC8qIFNldCB0cmFuc2FjdGlvbiBpbmZv cm1hdGlvbiBvZiBhcHBseSBlcnJvciBjYWxsYmFjayAqLwpAQCAtNDA5NywzICs0OTA5LDUyIEBA IHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKQogCWFwcGx5X2Vycm9yX2NhbGxi YWNrX2FyZy5yZW1vdGVfYXR0bnVtID0gLTE7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFj dChJbnZhbGlkVHJhbnNhY3Rpb25JZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQorCisvKgorICog QWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGluIGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3Ig Y29udGV4dCBtZXNzYWdlLgorICovCit2b2lkCitzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9vcmln aW4oY2hhciAqb3JpZ2lubmFtZSkKK3sKKwlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2lu X25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkJ CSAgIG9yaWdpbm5hbWUpOworfQorCisvKgorICogUmV0dXJuIHRoZSBhY3Rpb24gdG8gYmUgdGFr ZW4gZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gKndpbmZvIGlzCisgKiBhc3NpZ25lZCB0byB0 aGUgZGVzdGluYXRpb24gcGFyYWxsZWwgd29ya2VyIGluZm8gd2hlbiB0aGUgZ2l2ZW4KKyAqIHRy YW5zYWN0aW9uIGlzIGJlaW5nIHByb2Nlc3NlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KKyAqLworc3RhdGljIFRyYW5zQXBwbHlBY3Rpb24KK2dldF90cmFuc2FjdGlvbl9hcHBseV9h Y3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8p Cit7CisJKndpbmZvID0gTlVMTDsKKworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkK Kwl7CisJCXJldHVybiBUUkFOU19QQVJBTExFTF9BUFBMWTsKKwl9CisJZWxzZSBpZiAoaW5fcmVt b3RlX3RyYW5zYWN0aW9uKQorCXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9BUFBMWTsKKwl9CisK KwkvKgorCSAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMgdHJhbnNhY3Rpb24gdXNp bmcgYSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlci4KKwkgKi8KKwkqd2luZm8gPSBwYV9maW5k X3dvcmtlcih4aWQpOworCisJaWYgKCEqd2luZm8pCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVS X1NFUklBTElaRTsKKwl9CisJZWxzZSBpZiAoKCp3aW5mbyktPnNlcmlhbGl6ZV9jaGFuZ2VzKQor CXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRTsKKwl9CisJZWxzZQor CXsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOworCX0KK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCmluZGV4IGNhNDZmYmEzYWYu LjQwYzQ0YmI3ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRw dXQuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb25f cmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJj b21tYW5kcy9kZWZyZW0uaCIKKyNpbmNsdWRlICJjb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgi CiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJmbWdyLmgiCiAjaW5j bHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0yOTAsNyArMjkxLDcgQEAgcGFyc2Vfb3V0cHV0 X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRhICpkYXRhKQogCWJvb2wJCW9y aWdpbl9vcHRpb25fZ2l2ZW4gPSBmYWxzZTsKIAogCWRhdGEtPmJpbmFyeSA9IGZhbHNlOwotCWRh dGEtPnN0cmVhbWluZyA9IGZhbHNlOworCWRhdGEtPnN0cmVhbWluZyA9IExPR0lDQUxSRVBfU1RS RUFNX09GRjsKIAlkYXRhLT5tZXNzYWdlcyA9IGZhbHNlOwogCWRhdGEtPnR3b19waGFzZSA9IGZh bHNlOwogCkBAIC0zNjksNyArMzcwLDcgQEAgcGFyc2Vfb3V0cHV0X3BhcmFtZXRlcnMoTGlzdCAq b3B0aW9ucywgUEdPdXRwdXREYXRhICpkYXRhKQogCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcg b3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOwogCQkJc3RyZWFtaW5nX2dpdmVuID0gdHJ1ZTsKIAot CQkJZGF0YS0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVhbihkZWZlbCk7CisJCQlkYXRhLT5zdHJl YW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVsKTsKIAkJfQogCQllbHNlIGlmIChzdHJj bXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAwKQogCQl7CkBAIC00NjEsMTMgKzQ2 MiwyMCBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgT3V0 cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCQkgKiB3ZSBvbmx5IGFsbG93IGl0IHdpdGggc3VmZmlj aWVudCB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCwgYW5kIHdoZW4KIAkJICogdGhlIG91dHB1dCBw bHVnaW4gc3VwcG9ydHMgaXQuCiAJCSAqLwotCQlpZiAoIWRhdGEtPnN0cmVhbWluZykKKwkJaWYg KGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9PRkYpCiAJCQljdHgtPnN0cmVh bWluZyA9IGZhbHNlOwotCQllbHNlIGlmIChkYXRhLT5wcm90b2NvbF92ZXJzaW9uIDwgTE9HSUNB TFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0pCisJCWVsc2UgaWYgKGRhdGEtPnN0cmVhbWlu ZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9PTiAmJgorCQkJCSBkYXRhLT5wcm90b2NvbF92ZXJzaW9u IDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0pCiAJCQllcmVwb3J0KEVSUk9S LAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkJ IGVycm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQgZG9lcyBub3Qgc3VwcG9ydCBzdHJl YW1pbmcsIG5lZWQgJWQgb3IgaGlnaGVyIiwKIAkJCQkJCQlkYXRhLT5wcm90b2NvbF92ZXJzaW9u LCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkpKTsKKwkJZWxzZSBpZiAoZGF0 YS0+c3RyZWFtaW5nID09IExPR0lDQUxSRVBfU1RSRUFNX1BBUkFMTEVMICYmCisJCQkJIGRhdGEt PnByb3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJT SU9OX05VTSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJ RF9QQVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJyZXF1ZXN0ZWQgcHJvdG9fdmVyc2lv bj0lZCBkb2VzIG5vdCBzdXBwb3J0IHBhcmFsbGVsIHN0cmVhbWluZywgbmVlZCAlZCBvciBoaWdo ZXIiLAorCQkJCQkJCWRhdGEtPnByb3RvY29sX3ZlcnNpb24sIExPR0lDQUxSRVBfUFJPVE9fU1RS RUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNKSkpOwogCQllbHNlIGlmICghY3R4LT5zdHJlYW1pbmcp CiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1F VEVSX1ZBTFVFKSwKQEAgLTE4NDEsNiArMTg0OSw4IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChz dHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkgIFhMb2dSZWNQdHIgYWJv cnRfbHNuKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4bjsKKwlQR091dHB1dERhdGEgKmRh dGEgPSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCWJvb2wJ CXdyaXRlX2Fib3J0X2luZm8gPSAoZGF0YS0+c3RyZWFtaW5nID09IExPR0lDQUxSRVBfU1RSRUFN X1BBUkFMTEVMKTsKIAogCS8qCiAJICogVGhlIGFib3J0IHNob3VsZCBoYXBwZW4gb3V0c2lkZSBz dHJlYW1pbmcgYmxvY2ssIGV2ZW4gZm9yIHN0cmVhbWVkCkBAIC0xODU0LDcgKzE4NjQsOSBAQCBw Z291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwK IAlBc3NlcnQocmJ0eG5faXNfc3RyZWFtZWQodG9wdHhuKSk7CiAKIAlPdXRwdXRQbHVnaW5QcmVw YXJlV3JpdGUoY3R4LCB0cnVlKTsKLQlsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChjdHgt Pm91dCwgdG9wdHhuLT54aWQsIHR4bi0+eGlkKTsKKwlsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9h Ym9ydChjdHgtPm91dCwgdG9wdHhuLT54aWQsIHR4bi0+eGlkLCBhYm9ydF9sc24sCisJCQkJCQkJ CSAgdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSwgd3JpdGVfYWJvcnRfaW5mbyk7CisKIAlPdXRw dXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19jYWNoZSh0b3B0 eG4tPnhpZCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y3NpZ25hbC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCmluZGV4IDc3 Njc2NTdmMjcuLjdjMDA5ZDUyNWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMK QEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNp bmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv aXBjLmgiCkBAIC02NTcsNiArNjU4LDkgQEAgcHJvY3NpZ25hbF9zaWd1c3IxX2hhbmRsZXIoU0lH TkFMX0FSR1MpCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVY VCkpCiAJCUhhbmRsZUxvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQoKTsKIAorCWlmIChDaGVja1By b2NTaWduYWwoUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFKSkKKwkJSGFuZGxlUGFyYWxs ZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQoKTsKKwogCWlmIChDaGVja1Byb2NTaWduYWwoUFJPQ1NJ R19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSkpCiAJCVJlY292ZXJ5Q29uZmxpY3RJbnRlcnJ1 cHQoUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG1nci5jCmluZGV4IDEwNDMwNjhiYWMuLjJmMTcxZjU1MjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xt Z3IuYwpAQCAtMTExNyw2ICsxMTE3LDQ1IEBAIFVubG9ja1NoYXJlZE9iamVjdEZvclNlc3Npb24o T2lkIGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogCUxvY2tSZWxlYXNlKCZ0 YWcsIGxvY2ttb2RlLCB0cnVlKTsKIH0KIAorLyoKKyAqCQlMb2NrQXBwbHlUcmFuc2FjdGlvbkZv clNlc3Npb24KKyAqCisgKiBPYnRhaW4gYSBzZXNzaW9uLWxldmVsIGxvY2sgb24gYSB0cmFuc2Fj dGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9naWNhbAorICogcmVwbGljYXRpb24gc3Vic2NyaWJl ci4gU2VlIExvY2tSZWxhdGlvbklkRm9yU2Vzc2lvbiBmb3Igbm90ZXMgYWJvdXQKKyAqIHNlc3Np b24tbGV2ZWwgbG9ja3MuCisgKi8KK3ZvaWQKK0xvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lv bihPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlkLAorCQkJCQkJCSAg IExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9MT0NLVEFHX0FQ UExZX1RSQU5TQUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFiYXNlSWQsCisJCQkJCQkJCSAg c3Vib2lkLAorCQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmppZCk7CisKKwkodm9pZCkgTG9j a0FjcXVpcmUoJnRhZywgbG9ja21vZGUsIHRydWUsIGZhbHNlKTsKK30KKworLyoKKyAqCQlVbmxv Y2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbgorICovCit2b2lkCitVbmxvY2tBcHBseVRyYW5z YWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9i amlkLAorCQkJCQkJCQkgTE9DS01PREUgbG9ja21vZGUpCit7CisJTE9DS1RBRwkJdGFnOworCisJ U0VUX0xPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04odGFnLAorCQkJCQkJCQkgIE15RGF0YWJhc2VJ ZCwKKwkJCQkJCQkJICBzdWJvaWQsCisJCQkJCQkJCSAgeGlkLAorCQkJCQkJCQkgIG9iamlkKTsK KworCUxvY2tSZWxlYXNlKCZ0YWcsIGxvY2ttb2RlLCB0cnVlKTsKK30KIAogLyoKICAqIEFwcGVu ZCBhIGRlc2NyaXB0aW9uIG9mIGEgbG9ja2FibGUgb2JqZWN0IHRvIGJ1Zi4KQEAgLTEyMDIsNiAr MTI0MSwxMyBAQCBEZXNjcmliZUxvY2tUYWcoU3RyaW5nSW5mbyBidWYsIGNvbnN0IExPQ0tUQUcg KnRhZykKIAkJCQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkMywKIAkJCQkJCQkgdGFnLT5sb2NrdGFn X2ZpZWxkNCk7CiAJCQlicmVhazsKKwkJY2FzZSBMT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OOgor CQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsCisJCQkJCQkJIF8oInJlbW90ZSB0cmFuc2FjdGlvbiAl dSBvZiBzdWJzY3JpcHRpb24gJXUgb2YgZGF0YWJhc2UgJXUiKSwKKwkJCQkJCQkgdGFnLT5sb2Nr dGFnX2ZpZWxkMywKKwkJCQkJCQkgdGFnLT5sb2NrdGFnX2ZpZWxkMiwKKwkJCQkJCQkgdGFnLT5s b2NrdGFnX2ZpZWxkMSk7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWFwcGVuZFN0cmluZ0lu Zm8oYnVmLAogCQkJCQkJCSBfKCJ1bnJlY29nbml6ZWQgbG9ja3RhZyB0eXBlICVkIiksCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKaW5kZXggMDFkMjY0YjVhYi4uZDUyOTVjNDVmYSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpA QCAtMzM5MSw2ICszMzkxLDkgQEAgUHJvY2Vzc0ludGVycnVwdHModm9pZCkKIAogCWlmIChMb2dN ZW1vcnlDb250ZXh0UGVuZGluZykKIAkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJbnRlcnJ1cHQo KTsKKworCWlmIChQYXJhbGxlbEFwcGx5TWVzc2FnZVBlbmRpbmcpCisJCUhhbmRsZVBhcmFsbGVs QXBwbHlNZXNzYWdlcygpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudC5jCmluZGV4IGIyYWJkNzVkZGIuLjFmYWI0NWU3NDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTIzMCw2ICsyMzAsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRf YWN0aXZpdHkoV2FpdEV2ZW50QWN0aXZpdHkgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxf TEFVTkNIRVJfTUFJTjoKIAkJCWV2ZW50X25hbWUgPSAiTG9naWNhbExhdW5jaGVyTWFpbiI7CiAJ CQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfTUFJTjoK KwkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFBhcmFsbGVsQXBwbHlNYWluIjsKKwkJCWJyZWFrOwog CQljYXNlIFdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTToKIAkJCWV2ZW50X25hbWUgPSAi UmVjb3ZlcnlXYWxTdHJlYW0iOwogCQkJYnJlYWs7CkBAIC0zODgsNiArMzkxLDkgQEAgcGdzdGF0 X2dldF93YWl0X2lwYyhXYWl0RXZlbnRJUEMgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0hBU0hfR1JP V19CVUNLRVRTX1JFSU5TRVJUOgogCQkJZXZlbnRfbmFtZSA9ICJIYXNoR3Jvd0J1Y2tldHNSZWlu c2VydCI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQ TFlfU1RBVEVfQ0hBTkdFOgorCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsUGFyYWxsZWxBcHBseVN0 YXRlQ2hhbmdlIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RB VEE6CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxTeW5jRGF0YSI7CiAJCQlicmVhazsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9sb2NrZnVuY3MuYwppbmRleCBmOWIzMjRlZmVjLi4zYmYwNDgzMWYzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L2xvY2tmdW5jcy5jCkBAIC0zNywxMCArMzcsMTEgQEAgY29uc3QgY2hhciAqY29u c3QgTG9ja1RhZ1R5cGVOYW1lc1tdID0gewogCSJzcGVjdG9rZW4iLAogCSJvYmplY3QiLAogCSJ1 c2VybG9jayIsCi0JImFkdmlzb3J5IgorCSJhZHZpc29yeSIsCisJImFwcGx5dHJhbnNhY3Rpb24i CiB9OwogCi1TdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKExvY2tUYWdUeXBlTmFtZXMpID09IChM T0NLVEFHX0FEVklTT1JZICsgMSksCitTdGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKExvY2tUYWdU eXBlTmFtZXMpID09IChMT0NLVEFHX0xBU1RfVFlQRSArIDEpLAogCQkJCSAiYXJyYXkgbGVuZ3Ro IG1pc21hdGNoIik7CiAKIC8qIFRoaXMgbXVzdCBtYXRjaCBlbnVtIFByZWRpY2F0ZUxvY2tUYXJn ZXRUeXBlIChwcmVkaWNhdGVfaW50ZXJuYWxzLmgpICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3Rh Ymxlcy5jCmluZGV4IGEzN2M5Zjk4NDQuLjYyYjdmNTdlNjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jCkBAIC0zMDAyLDYgKzMwMDIsMTggQEAgc3RydWN0IGNvbmZpZ19pbnQgQ29u ZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7Im1h eF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24iLAorCQkJUEdDX1NJR0hV UCwKKwkJCVJFUExJQ0FUSU9OX1NVQlNDUklCRVJTLAorCQkJZ2V0dGV4dF9ub29wKCJNYXhpbXVt IG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHBlciBzdWJzY3JpcHRpb24uIiksCisJ CQlOVUxMLAorCQl9LAorCQkmbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlw dGlvbiwKKwkJMiwgMCwgTUFYX1BBUkFMTEVMX1dPUktFUl9MSU1JVCwKKwkJTlVMTCwgTlVMTCwg TlVMTAorCX0sCisKIAl7CiAJCXsibG9nX3JvdGF0aW9uX2FnZSIsIFBHQ19TSUdIVVAsIExPR0dJ TkdfV0hFUkUsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHdh aXQgYmVmb3JlIGZvcmNpbmcgIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlCmluZGV4IDVhZmRlYjA0ZGUuLmMyYWRhOTIwNTQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM1OSw2ICszNTksNyBA QAogI21heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhf d29ya2VyX3Byb2Nlc3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhf c3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzCisjbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtl cnMKIAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA0NGQ5NTdjMDM4 Li5mNDU0YjMxYzU4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBi L3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1MzMsNyArNDUzMyw3IEBAIGdldFN1YnNj cmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAw MDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7CiAJ ZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJlYW0s XG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1YnN0cmVhbSxc biIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ2NzAsOCArNDY3MCwxMCBAQCBkdW1wU3Vic2NyaXB0aW9u KEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN0 cmNtcChzdWJpbmZvLT5zdWJiaW5hcnksICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksICIsIGJpbmFyeSA9IHRydWUiKTsKIAotCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vi c3RyZWFtLCAiZiIpICE9IDApCisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0Iikg PT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IG9uIik7 CisJZWxzZSBpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInAiKSA9PSAwKQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gcGFyYWxsZWwiKTsKIAogCWlm IChzdHJjbXAoc3ViaW5mby0+c3VidHdvcGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVkKSAh PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgdHdvX3BoYXNlID0gb24iKTsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2Ny aWJlLmMKaW5kZXggZGYxNjYzNjVlOC4uMjY1YjI4ZDkwYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTY1MDIsMTEg KzY1MDIsMjQgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJv b2wgdmVyYm9zZSkKIAl7CiAJCS8qIEJpbmFyeSBtb2RlIGFuZCBzdHJlYW1pbmcgYXJlIG9ubHkg c3VwcG9ydGVkIGluIHYxNCBhbmQgaGlnaGVyICovCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE0 MDAwMCkKKwkJewogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkgICIsIHN1YmJp bmFyeSBBUyBcIiVzXCJcbiIKLQkJCQkJCQkgICIsIHN1YnN0cmVhbSBBUyBcIiVzXCJcbiIsCi0J CQkJCQkJICBnZXR0ZXh0X25vb3AoIkJpbmFyeSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJT dHJlYW1pbmciKSk7CisJCQkJCQkJICAiLCBzdWJiaW5hcnkgQVMgXCIlc1wiXG4iLAorCQkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJCaW5hcnkiKSk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE2 MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICIsIChDQVNFIHN1 YnN0cmVhbVxuIgorCQkJCQkJCQkgICIgICAgV0hFTiAnZicgVEhFTiAnb2ZmJ1xuIgorCQkJCQkJ CQkgICIgICAgV0hFTiAndCcgVEhFTiAnb24nXG4iCisJCQkJCQkJCSAgIiAgICBXSEVOICdwJyBU SEVOICdwYXJhbGxlbCdcbiIKKwkJCQkJCQkJICAiICAgRU5EKSBBUyBcIiVzXCJcbiIsCisJCQkJ CQkJCSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJCQllbHNlCisJCQkJYXBwZW5kUFFF eHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCBzdWJzdHJlYW0gQVMgXCIlc1wiXG4iLAorCQkJ CQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikpOworCQl9CiAKIAkJLyogVHdvX3BoYXNl IGFuZCBkaXNhYmxlX29uX2Vycm9yIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB2MTUgYW5kIGhpZ2hl ciAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uaAppbmRleCA3Yjk4NzE0ZjMwLi41YjllNWEzOTlhIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTgwLDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19zdWJz Y3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9O IEJLSV9ST1cKIAlib29sCQlzdWJiaW5hcnk7CQkvKiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRpb24g d2FudHMgdGhlCiAJCQkJCQkJCSAqIHB1Ymxpc2hlciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5ICov CiAKLQlib29sCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25z LiAqLworCWNoYXIJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv bnMuIFNlZQorCQkJCQkJCQkgKiBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAogCWNoYXIJ CXN1YnR3b3BoYXNlc3RhdGU7CS8qIFN0cmVhbSB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAK QEAgLTEyNCw3ICsxMjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQll bmFibGVkOwkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZCAqLwog CWJvb2wJCWJpbmFyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyBk YXRhIGluCiAJCQkJCQkJCSAqIGJpbmFyeSBmb3JtYXQgKi8KLQlib29sCQlzdHJlYW07CQkJLyog QWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdHJl YW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJ CQkJICogU2VlIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCWNoYXIJCXR3b3BoYXNlc3Rh dGU7CS8qIEFsbG93IHN0cmVhbWluZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJ ZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUK IAkJCQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAt MTM3LDYgKzEzOSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAkJCQkJCQkJICog c3BlY2lmaWVkIG9yaWdpbiAqLwogfSBTdWJzY3JpcHRpb247CiAKKy8qIERpc2FsbG93IHN0cmVh bWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisjZGVmaW5lIExPR0lDQUxSRVBfU1RS RUFNX09GRiAnZicKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMg YXJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQKKyAqIGFwcGxpZWQgb25seSBhZnRl ciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHVwc3RyZWFtLgorICovCisjZGVmaW5l IExPR0lDQUxSRVBfU1RSRUFNX09OICd0JworCisvKgorICogU3RyZWFtaW5nIGluLXByb2dyZXNz IHRyYW5zYWN0aW9ucyBhcmUgYXBwbGllZCBpbW1lZGlhdGVseSB2aWEgYSBwYXJhbGxlbAorICog YXBwbHkgd29ya2VyLgorICovCisjZGVmaW5lIExPR0lDQUxSRVBfU1RSRUFNX1BBUkFMTEVMICdw JworCiBleHRlcm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29s IG1pc3Npbmdfb2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24g KnN1Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmggYi9zcmMvaW5j bHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKaW5kZXggMmNiZTdkN2I2NS4uNzc5NDc0 ZjU2NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5o CisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaApAQCAtMjYsNCAr MjYsNiBAQCBleHRlcm4gdm9pZCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10 ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJTdWJz Y3JpcHRpb25Pd25lcihjb25zdCBjaGFyICpuYW1lLCBPaWQgbmV3T3duZXJJZCk7CiBleHRlcm4g dm9pZCBBbHRlclN1YnNjcmlwdGlvbk93bmVyX29pZChPaWQgc3ViaWQsIE9pZCBuZXdPd25lcklk KTsKIAorZXh0ZXJuIGNoYXIgZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpOworCiAj ZW5kaWYJCQkJCQkJLyogU1VCU0NSSVBUSU9OQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGYxZTI4MjFlMjUuLmQ1MTNlZjUzM2EgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCkBAIC0xNCw2ICsxNCw3IEBA CiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy czsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uOwogCiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyUmVnaXN0ZXIodm9p ZCk7CiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZyk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IDFlYjdkZGE1MjkuLjRmYTJiZDM3 ZGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCisr KyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCkBAIC0zMiwxMiArMzIs MTcgQEAKICAqCiAgKiBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIGlzIHRo ZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24gd2l0aAogICogc3VwcG9ydCBmb3IgdHdvLXBoYXNl IGNvbW1pdCBkZWNvZGluZyAoYXQgcHJlcGFyZSB0aW1lKS4gSW50cm9kdWNlZCBpbiBQRzE1Lgor ICoKKyAqIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIGlzIHRo ZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24KKyAqIHdoZXJlIHdlIHN1cHBvcnQgYXBwbHlpbmcg bGFyZ2Ugc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBpbiBwYXJhbGxlbC4KKyAqIEludHJvZHVjZWQg aW4gUEcxNi4KICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01JTl9WRVJTSU9OX05VTSAx CiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FM UkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSAyCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9f VFdPUEhBU0VfVkVSU0lPTl9OVU0gMwotI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJT SU9OX05VTSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNCisjZGVmaW5lIExP R0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDQKKyNkZWZpbmUgTE9H SUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFS QUxMRUxfVkVSU0lPTl9OVU0KIAogLyoKICAqIExvZ2ljYWwgbWVzc2FnZSB0eXBlcwpAQCAtMTc1 LDYgKzE4MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4 bkRhdGEKIAljaGFyCQlnaWRbR0lEU0laRV07CiB9IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVk VHhuRGF0YTsKIAorLyoKKyAqIFRyYW5zYWN0aW9uIHByb3RvY29sIGluZm9ybWF0aW9uIGZvciBz dHJlYW0gYWJvcnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERh dGEKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlYTG9n UmVjUHRyCWFib3J0X2xzbjsKKwlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOworfSBMb2dpY2FsUmVw U3RyZWFtQWJvcnREYXRhOworCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX2JlZ2luKFN0 cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwogZXh0ZXJuIHZvaWQgbG9naWNh bHJlcF9yZWFkX2JlZ2luKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCSAgTG9naWNhbFJlcEJlZ2lu RGF0YSAqYmVnaW5fZGF0YSk7CkBAIC0yNDYsOSArMjYyLDEzIEBAIGV4dGVybiB2b2lkIGxvZ2lj YWxyZXBfd3JpdGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuCiBleHRlcm4gVHJhbnNhY3Rpb25JZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1p dChTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkJCQkJICAgTG9naWNhbFJlcENvbW1pdERhdGEgKmNv bW1pdF9kYXRhKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0 cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkJCQkgIFRyYW5zYWN0aW9u SWQgc3VieGlkKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCQkJCSBUcmFuc2FjdGlvbklk ICpzdWJ4aWQpOworCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQsCisJCQkJCQkJCQkJ ICBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJCQkJCQkJCQkgIFRpbWVzdGFtcFR6IGFib3J0X3Rp bWUsCisJCQkJCQkJCQkJICBib29sIHdyaXRlX2Fib3J0X2luZm8pOworZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJCQkJCQkJCSBMb2dp Y2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCQkJCSBib29sIHJlYWRf YWJvcnRfaW5mbyk7CiBleHRlcm4gY2hhciAqbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoTG9naWNh bFJlcE1zZ1R5cGUgYWN0aW9uKTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lDQUxfUFJPVE9fSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4IGNkMWI2ZThhZmMu LmRjNjhjZDg5YzggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3 b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAg LTEyLDggKzEyLDE2IEBACiAjaWZuZGVmIExPR0lDQUxXT1JLRVJfSAogI2RlZmluZSBMT0dJQ0FM V09SS0VSX0gKIAorI2luY2x1ZGUgPHNpZ25hbC5oPgorCitleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZzsKKwogZXh0ZXJu IHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKK2V4dGVybiB2b2lkIFBhcmFs bGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0ZXJuIGJvb2wgSXNMb2dp Y2FsV29ya2VyKHZvaWQpOworZXh0ZXJuIGJvb2wgSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtl cih2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0 KHZvaWQpOworZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQpOwog CiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFdPUktFUl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdp bi5oCmluZGV4IDJhNTBkMTBiNTIuLmM3YjFhZGZmZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL29yaWdpbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdp bi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fZ2V0X3By b2dyZXNzKFJlcE9yaWdpbklkIG5vZGUsIGJvb2wgZmx1c2gpOwogCiBleHRlcm4gdm9pZCByZXBs b3JpZ2luX3Nlc3Npb25fYWR2YW5jZShYTG9nUmVjUHRyIHJlbW90ZV9jb21taXQsCiAJCQkJCQkJ CQkgICBYTG9nUmVjUHRyIGxvY2FsX2NvbW1pdCk7Ci1leHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nl c3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSk7CitleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nl c3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KTsKIGV4dGVybiB2 b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCh2b2lkKTsKIGV4dGVybiBYTG9nUmVjUHRyIHJl cGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoYm9vbCBmbHVzaCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9wZ291dHB1dC5oCmluZGV4IDAyMDI3NTUwZTIuLjNjMzBkYTgyMDUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vcGdvdXRwdXQuaApAQCAtMjYsNyArMjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBQR091 dHB1dERhdGEKIAlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsKIAlMaXN0CSAgICpwdWJsaWNh dGlvbnM7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1p bmc7CiAJYm9vbAkJbWVzc2FnZXM7CiAJYm9vbAkJdHdvX3BoYXNlOwogCWNoYXIJICAgKm9yaWdp bjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCBiMjdhNDM2MThh Li5kNjdiZGJmYjc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVy YnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBA IC0zMTYsNiArMzE2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclRYTgogCXsKIAkJ VGltZXN0YW1wVHogY29tbWl0X3RpbWU7CiAJCVRpbWVzdGFtcFR6IHByZXBhcmVfdGltZTsKKwkJ VGltZXN0YW1wVHogYWJvcnRfdGltZTsKIAl9CQkJeGFjdF90aW1lOwogCiAJLyoKQEAgLTY3OCw3 ICs2NzksOCBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNzaWduQ2hpbGQoUmVvcmRlckJ1 ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNv bW1pdENoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJ CSBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBjb21taXRfbHNuLAogCQkJCQkJCQkJ IFhMb2dSZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVv cmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CitleHRl cm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1l KTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwg VHJhbnNhY3Rpb25JZCBvbGRlc3RSdW5uaW5nWGlkKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZm ZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbik7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVySW52YWxpZGF0ZShSZW9yZGVyQnVmZmVy ICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93YWxyZWNlaXZlci5oCmluZGV4IDkzMzlmMjkzMDMuLjBjOGJiZGRhYmUgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHR5cGVkZWYg c3RydWN0CiAJCQl1aW50MzIJCXByb3RvX3ZlcnNpb247CS8qIExvZ2ljYWwgcHJvdG9jb2wgdmVy c2lvbiAqLwogCQkJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7CS8qIFN0cmluZyBsaXN0IG9m IHB1YmxpY2F0aW9ucyAqLwogCQkJYm9vbAkJYmluYXJ5OyAvKiBBc2sgcHVibGlzaGVyIHRvIHVz ZSBiaW5hcnkgKi8KLQkJCWJvb2wJCXN0cmVhbWluZzsJLyogU3RyZWFtaW5nIG9mIGxhcmdlIHRy YW5zYWN0aW9ucyAqLworCQkJY2hhcgkgICAqc3RyZWFtaW5nX3N0cjsJLyogU3RyZWFtaW5nIG9m IGxhcmdlIHRyYW5zYWN0aW9ucyAqLwogCQkJYm9vbAkJdHdvcGhhc2U7CS8qIFN0cmVhbWluZyBv ZiB0d28tcGhhc2UgdHJhbnNhY3Rpb25zIGF0CiAJCQkJCQkJCQkgKiBwcmVwYXJlIHRpbWUgKi8K IAkJCWNoYXIJICAgKm9yaWdpbjsgLyogT25seSBwdWJsaXNoIGRhdGEgb3JpZ2luYXRpbmcgZnJv bSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggMmI3 MTE0ZmY2ZC4uZjcwMDY2YWRjMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgKQEAgLTE3LDggKzE3LDEzIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJkYXRhdHlw ZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNh dGlvbi9sb2dpY2FscmVsYXRpb24uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZmZpbGUuaCIKICNp bmNsdWRlICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKKyNp bmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX3RvYy5oIgog I2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogCiAKQEAgLTUzLDEzICs1OCwyNCBAQCB0eXBlZGVm IHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAKIAkvKgogCSAqIFVzZWQgdG8gY3JlYXRlIHRoZSBj aGFuZ2VzIGFuZCBzdWJ4YWN0IGZpbGVzIGZvciB0aGUgc3RyZWFtaW5nCi0JICogdHJhbnNhY3Rp b25zLiAgVXBvbiB0aGUgYXJyaXZhbCBvZiB0aGUgZmlyc3Qgc3RyZWFtaW5nIHRyYW5zYWN0aW9u LCB0aGUKLQkgKiBmaWxlc2V0IHdpbGwgYmUgaW5pdGlhbGl6ZWQsIGFuZCBpdCB3aWxsIGJlIGRl bGV0ZWQgd2hlbiB0aGUgd29ya2VyCi0JICogZXhpdHMuICBVbmRlciB0aGlzLCBzZXBhcmF0ZSBi dWZmaWxlcyB3b3VsZCBiZSBjcmVhdGVkIGZvciBlYWNoCi0JICogdHJhbnNhY3Rpb24gd2hpY2gg d2lsbCBiZSBkZWxldGVkIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBmaW5pc2hlZC4KKwkgKiB0 cmFuc2FjdGlvbnMuICBVcG9uIHRoZSBhcnJpdmFsIG9mIHRoZSBmaXJzdCBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gb3IKKwkgKiB3aGVuIHRoZSBmaXJzdC10aW1lIGxlYWRlciBhcHBseSB3b3JrZXIg dGltZXMgb3V0IHdoaWxlIHNlbmRpbmcgY2hhbmdlcworCSAqIHRvIHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIsIHRoZSBmaWxlc2V0IHdpbGwgYmUgaW5pdGlhbGl6ZWQsIGFuZCBpdAorCSAqIHdp bGwgYmUgZGVsZXRlZCB3aGVuIHRoZSB3b3JrZXIgZXhpdHMuICBVbmRlciB0aGlzLCBzZXBhcmF0 ZSBidWZmaWxlcworCSAqIHdvdWxkIGJlIGNyZWF0ZWQgZm9yIGVhY2ggdHJhbnNhY3Rpb24gd2hp Y2ggd2lsbCBiZSBkZWxldGVkIGFmdGVyIHRoZQorCSAqIHRyYW5zYWN0aW9uIGlzIGZpbmlzaGVk LgogCSAqLwogCUZpbGVTZXQgICAgKnN0cmVhbV9maWxlc2V0OwogCisJLyoKKwkgKiBQSUQgb2Yg bGVhZGVyIGFwcGx5IHdvcmtlciBpZiB0aGlzIHNsb3QgaXMgdXNlZCBmb3IgYSBwYXJhbGxlbCBh cHBseQorCSAqIHdvcmtlciwgSW52YWxpZFBpZCBvdGhlcndpc2UuCisJICovCisJcGlkX3QJCWFw cGx5X2xlYWRlcl9waWQ7CisKKwkvKiBJbmRpY2F0ZXMgd2hldGhlciBhcHBseSBjYW4gYmUgcGVy Zm9ybWVkIGluIHBhcmFsbGVsLiAqLworCWJvb2wJCXBhcmFsbGVsX2FwcGx5OworCiAJLyogU3Rh dHMuICovCiAJWExvZ1JlY1B0cglsYXN0X2xzbjsKIAlUaW1lc3RhbXBUeiBsYXN0X3NlbmRfdGlt ZTsKQEAgLTY4LDkgKzg0LDEzMyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJ VGltZXN0YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsKIAorLyoKKyAqIFN0 YXRlIG9mIHRoZSB0cmFuc2FjdGlvbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKgorICog VGhlIGVudW0gdmFsdWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdHJhbnNhY3Rp b24gc3RhdGUKKyAqIHRyYW5zaXRpb25zLgorICovCit0eXBlZGVmIGVudW0gUGFyYWxsZWxUcmFu c1N0YXRlCit7CisJUEFSQUxMRUxfVFJBTlNfVU5LTk9XTiwKKwlQQVJBTExFTF9UUkFOU19TVEFS VEVELAorCVBBUkFMTEVMX1RSQU5TX0ZJTklTSEVECit9IFBhcmFsbGVsVHJhbnNTdGF0ZTsKKwor LyoKKyAqIFN0YXRlIG9mIGZpbGVzZXQgdXNlZCB0byBjb21tdW5pY2F0ZSBjaGFuZ2VzIGZyb20g bGVhZGVyIHRvIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKgorICogRlNfRU1QVFkgaW5k aWNhdGVzIGFuIGluaXRpYWwgc3RhdGUgd2hlcmUgdGhlIGxlYWRlciBkb2Vzbid0IG5lZWQgdG8g dXNlCisgKiB0aGUgZmlsZSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuCisgKgorICogRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTIGluZGljYXRlcyB0aGF0IHRo ZSBsZWFkZXIgaXMgc2VyaWFsaXppbmcgY2hhbmdlcworICogdG8gdGhlIGZpbGUuCisgKgorICog RlNfU0VSSUFMSVpFX0RPTkUgaW5kaWNhdGVzIHRoYXQgdGhlIGxlYWRlciBoYXMgc2VyaWFsaXpl ZCBhbGwgY2hhbmdlcyB0bworICogdGhlIGZpbGUuCisgKgorICogRlNfUkVBRFkgaW5kaWNhdGVz IHRoYXQgaXQgaXMgbm93IG9rIGZvciBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0bworICogcmVh ZCB0aGUgZmlsZS4KKyAqLwordHlwZWRlZiBlbnVtIFBhcnRpYWxGaWxlU2V0U3RhdGUKK3sKKwlG U19FTVBUWSwKKwlGU19TRVJJQUxJWkVfSU5fUFJPR1JFU1MsCisJRlNfU0VSSUFMSVpFX0RPTkUs CisJRlNfUkVBRFkKK30gUGFydGlhbEZpbGVTZXRTdGF0ZTsKKworLyoKKyAqIFN0cnVjdCBmb3Ig c2hhcmluZyBpbmZvcm1hdGlvbiBiZXR3ZWVuIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFs bGVsCisgKiBhcHBseSB3b3JrZXJzLgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5 V29ya2VyU2hhcmVkCit7CisJc2xvY2tfdAkJbXV0ZXg7CisKKwlUcmFuc2FjdGlvbklkIHhpZDsK KworCS8qCisJICogU3RhdGUgdXNlZCB0byBlbnN1cmUgY29tbWl0IG9yZGVyaW5nLgorCSAqCisJ ICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHNldCBpdCB0byBQQVJBTExFTF9UUkFO U19GSU5JU0hFRCBhZnRlcgorCSAqIGhhbmRsaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29t bWFuZHMgd2hpbGUgdGhlIGFwcGx5IGxlYWRlciB3aWxsCisJICogd2FpdCBmb3IgaXQgdG8gYmVj b21lIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEIGJlZm9yZSBwcm9jZWVkaW5nIGluCisJICogdHJh bnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIChlLmcuIFNUUkVBTV9DT01NSVQvU1RSRUFNX1BSRVBB UkUpLgorCSAqLworCVBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlOworCisJLyogSW5mb3Jt YXRpb24gZnJvbSB0aGUgY29ycmVzcG9uZGluZyBMb2dpY2FsUmVwV29ya2VyIHNsb3QuICovCisJ dWludDE2CQlsb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOworCWludAkJCWxvZ2ljYWxyZXBf d29ya2VyX3Nsb3Rfbm87CisKKwkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVyIHRoZXJlIGFyZSBw ZW5kaW5nIHN0cmVhbWluZyBibG9ja3MgaW4gdGhlIHF1ZXVlLiBUaGUKKwkgKiBwYXJhbGxlbCBh cHBseSB3b3JrZXIgd2lsbCBjaGVjayBpdCBiZWZvcmUgc3RhcnRpbmcgdG8gd2FpdC4KKwkgKi8K KwlwZ19hdG9taWNfdWludDMyCXBlbmRpbmdfc3RyZWFtX2NvdW50OworCisJLyoKKwkgKiBYYWN0 TGFzdENvbW1pdEVuZCBmcm9tIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFRoaXMgaXMgcmVx dWlyZWQgYnkKKwkgKiB0aGUgbGVhZGVyIHdvcmtlciBzbyBpdCBjYW4gdXBkYXRlIHRoZSBsc25f bWFwcGluZ3MuCisJICovCisJWExvZ1JlY1B0cglsYXN0X2NvbW1pdF9lbmQ7CisKKwkvKgorCSAq IEFmdGVyIGVudGVyaW5nIFBBUlRJQUxfU0VSSUFMSVpFIG1vZGUsIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIHdpbGwKKwkgKiBzZXJpYWxpemUgY2hhbmdlcyB0byB0aGUgZmlsZSwgYW5kIHNoYXJl IHRoZSBmaWxlc2V0IHdpdGggdGhlIHBhcmFsbGVsCisJICogYXBwbHkgd29ya2VyIHdoZW4gcHJv Y2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQuIFRoZW4gdGhlCisJICogcGFy YWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgYXBwbHkgYWxsIHRoZSBzcG9vbGVkIG1lc3NhZ2VzLgor CSAqCisJICogRmlsZVNldCBpcyB1c2VkIGhlcmUgaW5zdGVhZCBvZiBTaGFyZWRGaWxlU2V0IGJl Y2F1c2Ugd2UgbmVlZCBpdCB0bworCSAqIHN1cnZpdmUgYWZ0ZXIgcmVsZWFzaW5nIHRoZSBzaGFy ZWQgbWVtb3J5IHNvIHRoYXQgdGhlIGxlYWRlciBhcHBseQorCSAqIHdvcmtlciBjYW4gcmUtdXNl IHRoZSBzYW1lIGZpbGVzZXQgZm9yIHRoZSBuZXh0IHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkg Ki8KKwlQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisJRmlsZVNldAkJZmlsZXNl dDsKK30gUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZDsKKworLyoKKyAqIEluZm9ybWF0aW9uIHdo aWNoIGlzIHVzZWQgdG8gbWFuYWdlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK3R5 cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCit7CisJc2htX21xX2hhbmRsZSAq bXFfaGFuZGxlOworCisJLyoKKwkgKiBUaGUgcXVldWUgdXNlZCB0byB0cmFuc2ZlciBlcnJvciBt ZXNzYWdlcyBmcm9tIHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB0byB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlci4KKwkgKi8KKwlzaG1fbXFfaGFuZGxlICplcnJvcl9tcV9oYW5kbGU7CisK Kwlkc21fc2VnbWVudCAqZHNtX3NlZzsKKworCS8qCisJICogSW5kaWNhdGVzIHdoZXRoZXIgdGhl IGxlYWRlciBhcHBseSB3b3JrZXIgbmVlZHMgdG8gc2VyaWFsaXplIHRoZQorCSAqIHJlbWFpbmlu ZyBjaGFuZ2VzIHRvIGEgZmlsZSBkdWUgdG8gdGltZW91dCB3aGVuIGF0dGVtcHRpbmcgdG8gc2Vu ZCBkYXRhCisJICogdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9y eS4KKwkgKi8KKwlib29sCQlzZXJpYWxpemVfY2hhbmdlczsKKworCS8qCisJICogVHJ1ZSBpZiB0 aGUgd29ya2VyIGlzIGJlaW5nIHVzZWQgdG8gcHJvY2VzcyBhIHBhcmFsbGVsIGFwcGx5CisJICog dHJhbnNhY3Rpb24uIEZhbHNlIGluZGljYXRlcyB0aGlzIHdvcmtlciBpcyBhdmFpbGFibGUgZm9y IHJlLXVzZS4KKwkgKi8KKwlib29sCQlpbl91c2U7CisKKwlQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkICpzaGFyZWQ7Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvOworCiAvKiBNYWluIG1lbW9y eSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2VyIGxpZmV0 aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0Owog CitleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0Owor CitleHRlcm4gUEdETExJTVBPUlQgRXJyb3JDb250ZXh0Q2FsbGJhY2sgKmFwcGx5X2Vycm9yX2Nv bnRleHRfc3RhY2s7CisKK2V4dGVybiBQR0RMTElNUE9SVCBQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkICpNeVBhcmFsbGVsU2hhcmVkOworCiAvKiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8K IGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3QgV2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJX YWxSY3ZDb25uOwogCkBAIC04NCw5ICsyMjQsMTEgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93 b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2VyICpsb2dpY2Fs cmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkJYm9vbCBv bmx5X3J1bm5pbmcpOwogZXh0ZXJuIExpc3QgKmxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE9pZCBz dWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJf bGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCi0JCQkJCQkJ CQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGxvZ2ljYWxyZXBfd29ya2Vy X2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAorCQkJCQkJ CQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCSBkc21faGFuZGxlIHN1Yndvcmtl cl9kc20pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9p ZCByZWxpZCk7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKGludCBzbG90 X25vLCB1aW50MTYgZ2VuZXJhdGlvbik7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93 YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3Jr ZXJfd2FrZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCkBAIC0xMDMsMTAgKzI0 NSw3OSBAQCBleHRlcm4gdm9pZCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3Vy cmVudF9sc24pOwogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhE YXR1bSBhcmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAor ZXh0ZXJuIHZvaWQgc3RyZWFtX3N0YXJ0X2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBib29s IGZpcnN0X3NlZ21lbnQpOworZXh0ZXJuIHZvaWQgc3RyZWFtX3N0b3BfaW50ZXJuYWwoVHJhbnNh Y3Rpb25JZCB4aWQpOworCisvKiBDb21tb24gc3RyZWFtaW5nIGZ1bmN0aW9uIHRvIGFwcGx5IGFs bCB0aGUgc3Bvb2xlZCBtZXNzYWdlcyAqLworZXh0ZXJuIHZvaWQgYXBwbHlfc3Bvb2xlZF9tZXNz YWdlcyhGaWxlU2V0ICpzdHJlYW1fZmlsZXNldCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJ CSAgIFhMb2dSZWNQdHIgbHNuKTsKKworZXh0ZXJuIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5n SW5mbyBzKTsKKworZXh0ZXJuIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsK KworZXh0ZXJuIHZvaWQgc3RyZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlv bklkIHhpZCk7CisKK2V4dGVybiB2b2lkIEluaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKTsKKwor ZXh0ZXJuIHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBY TG9nUmVjUHRyIGxvY2FsX2xzbik7CisKKy8qIEZ1bmN0aW9uIGZvciBhcHBseSBlcnJvciBjYWxs YmFjayAqLworZXh0ZXJuIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKK2V4 dGVybiB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1l KTsKKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlvbnMgKi8K K2V4dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRl cm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQg eGlkKTsKK2V4dGVybiBib29sIHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp3aW5mbyk7CitleHRlcm4gdm9pZCBwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpOworCitl eHRlcm4gYm9vbCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBT aXplIG5ieXRlcywKKwkJCQkJCSBjb25zdCB2b2lkICpkYXRhKTsKK2V4dGVybiB2b2lkIHBhX3N3 aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8s CisJCQkJCQkJCQkJICAgYm9vbCBzdHJlYW1fbG9ja2VkKTsKKworZXh0ZXJuIHZvaWQgcGFfc2V0 X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJCQkg IFBhcmFsbGVsVHJhbnNTdGF0ZSBpbl94YWN0KTsKK2V4dGVybiB2b2lkIHBhX3NldF9zdHJlYW1f YXBwbHlfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CisKK2V4dGVybiB2 b2lkIHBhX3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsCisJCQkJCQkJ ICBUcmFuc2FjdGlvbklkIHRvcF94aWQpOworZXh0ZXJuIHZvaWQgcGFfcmVzZXRfc3VidHJhbnMo dm9pZCk7CitleHRlcm4gdm9pZCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0 RGF0YSAqYWJvcnRfZGF0YSk7CitleHRlcm4gdm9pZCBwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJh bGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCQkgUGFydGlhbEZpbGVTZXRT dGF0ZSBmaWxlc2V0X3N0YXRlKTsKKworZXh0ZXJuIHZvaWQgcGFfbG9ja19zdHJlYW0oVHJhbnNh Y3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIHBhX3VubG9ja19z dHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKKworZXh0ZXJuIHZv aWQgcGFfbG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21v ZGUpOworZXh0ZXJuIHZvaWQgcGFfdW5sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlk LCBMT0NLTU9ERSBsb2NrbW9kZSk7CisKK2V4dGVybiB2b2lkIHBhX2RlY3JfYW5kX3dhaXRfc3Ry ZWFtX2Jsb2NrKHZvaWQpOworCitleHRlcm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8sCisJCQkJCQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24pOwor CisjZGVmaW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpICgod29ya2VyKS0+YXBwbHlf bGVhZGVyX3BpZCAhPSBJbnZhbGlkUGlkKQorCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxl c3luY193b3JrZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lkSXNWYWxpZChNeUxvZ2ljYWxSZXBXb3Jr ZXItPnJlbGlkKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCithbV9sZWFkZXJfYXBwbHlfd29y a2VyKHZvaWQpCit7CisJcmV0dXJuICghYW1fdGFibGVzeW5jX3dvcmtlcigpICYmCisJCQkhaXNQ YXJhbGxlbEFwcGx5V29ya2VyKE15TG9naWNhbFJlcFdvcmtlcikpOworfQorCitzdGF0aWMgaW5s aW5lIGJvb2wKK2FtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcih2b2lkKQoreworCXJldHVybiBpc1Bh cmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKTsKK30KKwogI2VuZGlmCQkJCQkJ CS8qIFdPUktFUl9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdl L2xtZ3IuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCmluZGV4IGJlMWQyYzk5YTkuLjVh M2JkMDNiYTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCisrKyBiL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCkBAIC0xMDcsNiArMTA3LDExIEBAIGV4dGVybiB2b2lk IExvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQsIHVpbnQx NiBvYmpzdWJpZCwKIGV4dGVybiB2b2lkIFVubG9ja1NoYXJlZE9iamVjdEZvclNlc3Npb24oT2lk IGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogCQkJCQkJCQkJCSBMT0NLTU9E RSBsb2NrbW9kZSk7CiAKK2V4dGVybiB2b2lkIExvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lv bihPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9iamlkLAorCQkJCQkJCQkJ CSAgIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIFVubG9ja0FwcGx5VHJhbnNhY3Rp b25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQs CisJCQkJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSk7CisKIC8qIERlc2NyaWJlIGEgbG9ja3Rh ZyBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KIGV4dGVybiB2b2lkIERlc2NyaWJlTG9ja1RhZyhTdHJp bmdJbmZvIGJ1ZiwgY29uc3QgTE9DS1RBRyAqdGFnKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvc3RvcmFnZS9sb2NrLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaAppbmRleCBlNGUx NDk1YjI0Li43NzY2MTIzYTdiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2su aAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaApAQCAtMTQ5LDEwICsxNDksMTIgQEAg dHlwZWRlZiBlbnVtIExvY2tUYWdUeXBlCiAJTE9DS1RBR19TUEVDVUxBVElWRV9UT0tFTiwJLyog c3BlY3VsYXRpdmUgaW5zZXJ0aW9uIFhpZCBhbmQgdG9rZW4gKi8KIAlMT0NLVEFHX09CSkVDVCwJ CQkJLyogbm9uLXJlbGF0aW9uIGRhdGFiYXNlIG9iamVjdCAqLwogCUxPQ0tUQUdfVVNFUkxPQ0ss CQkJLyogcmVzZXJ2ZWQgZm9yIG9sZCBjb250cmliL3VzZXJsb2NrIGNvZGUgKi8KLQlMT0NLVEFH X0FEVklTT1JZCQkJLyogYWR2aXNvcnkgdXNlciBsb2NrcyAqLworCUxPQ0tUQUdfQURWSVNPUlks CQkJLyogYWR2aXNvcnkgdXNlciBsb2NrcyAqLworCUxPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04J LyogdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKwkJCQkJCQkJICogcmVw bGljYXRpb24gc3Vic2NyaWJlciAqLwogfSBMb2NrVGFnVHlwZTsKIAotI2RlZmluZSBMT0NLVEFH X0xBU1RfVFlQRQlMT0NLVEFHX0FEVklTT1JZCisjZGVmaW5lIExPQ0tUQUdfTEFTVF9UWVBFCUxP Q0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04KIAogZXh0ZXJuIFBHRExMSU1QT1JUIGNvbnN0IGNoYXIg KmNvbnN0IExvY2tUYWdUeXBlTmFtZXNbXTsKIApAQCAtMjc4LDYgKzI4MCwxNyBAQCB0eXBlZGVm IHN0cnVjdCBMT0NLVEFHCiAJIChsb2NrdGFnKS5sb2NrdGFnX3R5cGUgPSBMT0NLVEFHX0FEVklT T1JZLCBcCiAJIChsb2NrdGFnKS5sb2NrdGFnX2xvY2ttZXRob2RpZCA9IFVTRVJfTE9DS01FVEhP RCkKIAorLyoKKyAqIElEIGluZm8gZm9yIGEgcmVtb3RlIHRyYW5zYWN0aW9uIG9uIGEgbG9naWNh bCByZXBsaWNhdGlvbiBzdWJzY3JpYmVyIGlzOiBEQgorICogT0lEICsgU1VCU0NSSVBUSU9OIE9J RCArIFRSQU5TQUNUSU9OIElEICsgT0JKSUQKKyAqLworI2RlZmluZSBTRVRfTE9DS1RBR19BUFBM WV9UUkFOU0FDVElPTihsb2NrdGFnLGRib2lkLHN1Ym9pZCx4aWQsb2JqaWQpIFwKKwkoKGxvY2t0 YWcpLmxvY2t0YWdfZmllbGQxID0gKGRib2lkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVs ZDIgPSAoc3Vib2lkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVsZDMgPSAoeGlkKSwgXAor CSAobG9ja3RhZykubG9ja3RhZ19maWVsZDQgPSAob2JqaWQpLCBcCisJIChsb2NrdGFnKS5sb2Nr dGFnX3R5cGUgPSBMT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OLCBcCisJIChsb2NrdGFnKS5sb2Nr dGFnX2xvY2ttZXRob2RpZCA9IERFRkFVTFRfTE9DS01FVEhPRCkKIAogLyoKICAqIFBlci1sb2Nr ZWQtb2JqZWN0IGxvY2sgaW5mb3JtYXRpb246CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4 IGVlNjM2OTAwZjMuLjkzYTUxZjQyNTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv cHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0z NSw2ICszNSw3IEBAIHR5cGVkZWYgZW51bQogCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcs CS8qIGFzayB3YWxzZW5kZXJzIHRvIHByZXBhcmUgZm9yIHNodXRkb3duICAqLwogCVBST0NTSUdf QkFSUklFUiwJCQkvKiBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQgICovCiAJUFJPQ1NJR19MT0df TUVNT1JZX0NPTlRFWFQsIC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRz ICovCisJUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLCAvKiBNZXNzYWdlIGZyb20gcGFy YWxsZWwgYXBwbHkgd29ya2VycyAqLwogCiAJLyogUmVjb3ZlcnkgY29uZmxpY3QgcmVhc29ucyAq LwogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50 LmgKaW5kZXggMGIyMTAwYmU0YS4uNzYzZmJlYWRmYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApA QCAtNDIsNiArNDIsNyBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX0NIRUNLUE9JTlRFUl9N QUlOLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9NQUlOLAogCVdBSVRfRVZFTlRfTE9HSUNB TF9MQVVOQ0hFUl9NQUlOLAorCVdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlO LAogCVdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTSwKIAlXQUlUX0VWRU5UX1NZU0xPR0dF Ul9NQUlOLAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4sCkBAIC0xMDUsNiArMTA2LDcg QEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19BTExPQ0FURSwK IAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0VMRUNULAogCVdBSVRfRVZFTlRfSEFTSF9H Uk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZ X1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBLAogCVdBSVRfRVZF TlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX01RX0lOVEVSTkFMLApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IGMxM2QyMThk Y2YuLjFlZDZmNGMzOWMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vi c2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQKQEAgLTExNyw3ICsxMTcsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24s IHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBub25lICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAK IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55KTsK QEAgLTEyNSw3ICsxMjUsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBT RVQgKG9yaWdpbiA9IGFueSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2Ygc3Vic2NyaXB0aW9ucwogICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAg fCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3Nf dGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViMzsKQEAgLTEzOCw3ICsxMzgsNyBAQCBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJp bmcgc3ludGF4OiBtaXNzaW5nICI9IiBhZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5h bWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJT04gdGVzdHB1YjIs IHRlc3RwdWIzIFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQIChsc24gPSAnMC8xMjM0NScpOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgZiAg ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0 NQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKICgxIHJvdykKIAogLS0gb2sg LSB3aXRoIGxzbiA9IE5PTkUKQEAgLTE3MCw3ICsxNzAsNyBAQCBFUlJPUjogIGludmFsaWQgV0FM IGxvY2F0aW9uIChMU04pOiAwLzAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0 cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwg U3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAg TFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRl c3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0MiB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0 aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAogKDEg cm93KQogCiBCRUdJTjsKQEAgLTIwNSw3ICsyMDUsNyBAQCBISU5UOiAgQXZhaWxhYmxlIHZhbHVl czogbG9jYWwsIHJlbW90ZV93cml0ZSwgcmVtb3RlX2FwcGx5LCBvbiwgb2ZmLgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAg ICAgTmFtZSAgICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAg ICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAg fCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAw LzAKKyByZWdyZXNzX3Rlc3RzdWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBsb2NhbCAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIC0tIHJl bmFtZSBiYWNrIHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxlCkBAIC0yNDIsNyArMjQyLDcgQEAgSElO VDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhl IHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlz dCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3 by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMg Y29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IGYgICAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IHQgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3Rz dWIgU0VUIChiaW5hcnkgPSBmYWxzZSk7CkBAIC0yNTEsMTMgKzI1MSwxMyBAQCBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFt ZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRp b24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAg ICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9Q IFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7Ci0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3Qg YmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFs bGVsJwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5l Y3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gZm9vKTsKLUVSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVz IGEgQm9vbGVhbiB2YWx1ZQorRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZh bHVlIG9yICJwYXJhbGxlbCIKIC0tIG5vdyBpdCB3b3JrcwogQ1JFQVRFIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQ VUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gdHJ1 ZSk7CiBXQVJOSU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5l Y3RlZApAQCAtMjY2LDcgKzI2NiwxNSBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24s IHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5h bWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0 aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24g ZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAg ICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdy ZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgZCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKygxIHJvdykKKworQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVs KTsKK1xkUnMrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucworICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwpAQCAtMjc1 LDcgKzI4Myw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90 X25hbWUgPSBOT05FKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBz dWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFz ZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0 IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25f dXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAg ICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAg ICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 IHwgMC8wCiAoMSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNhdGlvbiBhbHJlYWR5IGV4aXN0cwpA QCAtMjkzLDcgKzMwMSw3IEBAIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIxIiBpcyBhbHJl YWR5IGluIHN1YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3ViIgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJs aWNhdGlvbiAgICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8 IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAg ICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAg ICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAog LS0gZmFpbCAtIHB1YmxpY2F0aW9uIHVzZWQgbW9yZSB0aGVuIG9uY2UKQEAgLTMxMSw3ICszMTks NyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIERST1AgUFVCTElDQVRJT04g dGVzdHB1YjEsIHRlc3RwdWIyIFdJVEggKHJlZgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAg T3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFt aW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5j aHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAK IC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNz X3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAg ICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBv ZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyBy ZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0 ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViOwpAQCAtMzUwLDcgKzM1OCw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNh dGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAg ICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVi bGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5p bmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQot IHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwg e3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAg ICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdy ZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2Ny aXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAg fCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAg ICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQog CiAtLWZhaWwgLSBhbHRlciBvZiB0d29fcGhhc2Ugb3B0aW9uIG5vdCBzdXBwb3J0ZWQuCkBAIC0z NjIsNyArMzcwLDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0 cmVhbWluZyA9IHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9m IHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBo YXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21t aXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAgIHwgcCAg ICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAg ICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgb24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpAQCAtMzc1LDcgKzM4Myw3IEBAIEhJTlQ6ICBUbyBpbml0 aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlv biBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBF bmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29t bWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAg ICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAg ICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8 IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBvbiAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xv dF9uYW1lID0gTk9ORSk7CkBAIC0zOTEsNyArMzk5LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJl cGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3Qs IGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25z CiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQg fCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBE aXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19z dWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAg ICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2Zm ICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSBy b3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChkaXNhYmxlX29u X2Vycm9yID0gdHJ1ZSk7CkBAIC0zOTksNyArNDA3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAg ICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8 IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9y IHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAg ICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0g ICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAg ICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25v dGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCmluZGV4IGVhZWFkZThjY2UuLjc5OTFhYmZlOGYg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbApAQCAtMTY3LDcgKzE2Nyw3IEBA IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05F KTsKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwogCi0tLSBmYWlsIC0gc3Ry ZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xl YW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09O TkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHVi IFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gZm9vKTsKIAogLS0gbm93IGl0IHdv cmtzCkBAIC0xNzUsNiArMTc1LDEwIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiAKIFxkUnMr CiAKK0FMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBw YXJhbGxlbCk7CisKK1xkUnMrCisKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg U0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5k ZXggNTBkODZjYjAxYi4uMjNiYWZlYzVmNyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAg LTE0NzMsNiArMTQ3Myw3IEBAIExvZ2ljYWxSZXBSZWxJZAogTG9naWNhbFJlcFJlbE1hcEVudHJ5 CiBMb2dpY2FsUmVwUmVsYXRpb24KIExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQor TG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YQogTG9naWNhbFJlcFR1cGxlRGF0YQogTG9naWNhbFJl cFR5cAogTG9naWNhbFJlcFdvcmtlcgpAQCAtMTg3Niw2ICsxODc3LDkgQEAgUGFnZVhMb2dSZWNQ dHIKIFBhZ2V0YWJsZUVudHJ5CiBQYWlycwogUGFyYWxsZWxBcHBlbmRTdGF0ZQorUGFyYWxsZWxB cHBseVdvcmtlckVudHJ5CitQYXJhbGxlbEFwcGx5V29ya2VySW5mbworUGFyYWxsZWxBcHBseVdv cmtlclNoYXJlZAogUGFyYWxsZWxCaXRtYXBIZWFwU3RhdGUKIFBhcmFsbGVsQmxvY2tUYWJsZVNj YW5EZXNjCiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyCkBAIC0xODk1LDYgKzE4OTksNyBA QCBQYXJhbGxlbFNsb3RSZXN1bHRIYW5kbGVyCiBQYXJhbGxlbFN0YXRlCiBQYXJhbGxlbFRhYmxl U2NhbkRlc2MKIFBhcmFsbGVsVGFibGVTY2FuRGVzY0RhdGEKK1BhcmFsbGVsVHJhbnNTdGF0ZQog UGFyYWxsZWxWYWN1dW1TdGF0ZQogUGFyYWxsZWxXb3JrZXJDb250ZXh0CiBQYXJhbGxlbFdvcmtl ckluZm8KQEAgLTE5MjQsNiArMTkyOSw3IEBAIFBhcnNlclN0YXRlCiBQYXJ0Q2xhdXNlSW5mbwog UGFydENsYXVzZU1hdGNoU3RhdHVzCiBQYXJ0Q2xhdXNlVGFyZ2V0CitQYXJ0aWFsRmlsZVNldFN0 YXRlCiBQYXJ0aXRpb25Cb3VuZEluZm8KIFBhcnRpdGlvbkJvdW5kSW5mb0RhdGEKIFBhcnRpdGlv bkJvdW5kU3BlYwpAQCAtMjc3NCw2ICsyNzgwLDcgQEAgVG9jRW50cnkKIFRva2VuQXV4RGF0YQog VG9rZW5pemVkQXV0aExpbmUKIFRyYWNrSXRlbQorVHJhbnNBcHBseUFjdGlvbgogVHJhbnNJbnZh bGlkYXRpb25JbmZvCiBUcmFuc1N0YXRlCiBUcmFuc2FjdGlvbklkCi0tIAoyLjIzLjAud2luZG93 cy4xCgo= --_007_OS3PR01MB6275B61076717E4CE9E079D19EED9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v68-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v68-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v68-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=63703; creation-date="Tue, 27 Dec 2022 04:52:39 GMT"; modification-date="Tue, 27 Dec 2022 04:53:59 GMT" Content-Transfer-Encoding: base64 RnJvbSBlOGFkNzgwMzc1NDBiYjBmOTA0MTk3YmVhZDc4NzEwNDNjZDAyZGQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2Njgg Mi82XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBz b21lIFRBUCB0ZXN0cyB1c2luZyB0aGUgU1VCU0NSSVBUSU9OICJzdHJlYW1pbmciIHBhcmFtZXRl ciwgc28gdGhleQpub3cgdGVzdCBib3RoICdvbicgYW5kICdwYXJhbGxlbCcgdmFsdWVzLgotLS0K IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICB8IDI3MyArKysr KysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8IDEz MCArKystLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwg ICA0ICsKIC4uLi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgICAgICAgICB8IDIy MCArKysrKy0tLQogLi4uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCAgICAgICAg IHwgICA0ICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAgICB8 IDM4MSArKysrKysrLS0tLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVh bS5wbCAgICAgfCA1MjMgKysrKysrKysrKy0tLS0tLS0tCiA3IGZpbGVzIGNoYW5nZWQsIDEwMTMg aW5zZXJ0aW9ucygrKSwgNTIyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVf c3RyZWFtLnBsCmluZGV4IGNiYWEzMjdlNDQuLjZmYWEzMDgzMzMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtOCw2ICs4LDEyOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCisjIENoZWNrIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMgZmluaXNoZWQg YXBwbHlpbmcgdGhlIHN0cmVhbWluZworIyB0cmFuc2FjdGlvbi4KK3N1YiBjaGVja19wYXJhbGxl bF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAk dHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJv Y2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQor CisjIENvbW1vbiB0ZXN0IHN0ZXBzIGZvciBib3RoIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVh bWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87 CisKKwkjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcg dGhlIDY0a0IgbGltaXQuCisJbXkgJGluICA9ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICRv ZmZzZXQgPSAwOworCisJbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCisJbXkgJGggPSAkbm9kZV9wdWJsaXNo ZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAorCQlv bl9lcnJvcl9zdG9wID0+IDApOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkkaW4g Lj0gcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJfTsKKwkkaC0+cHVtcF9uYjsKKworCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAw MSwgOTk5OSkgcyhpKTsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAwMDsKKwlD T01NSVQ7CisJfSk7CisKKwkkaW4gLj0gcXsKKwlDT01NSVQ7CisJXHEKKwl9OworCSRoLT5maW5p c2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWlsLCBzbyBpZ25vcmUgdGhlbSBo ZXJlCisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMg VGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJp bmFyeSA9IG9uKSIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u CisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0Lgor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVy LCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1bHQgPQorCSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwg cXEoNjY2N3w2NjY3fDY2NjcpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJyk7CisKKwkjIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9mIHRoZSBleHRyYSBj b2x1bW5zIG9uIHRoZSBzdWJzY3JpYmVyLAorCSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNr IHRoYXQgc3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAorCSMgdmFsdWVzLiBUaGlzIGlz IHRvIGVuc3VyZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQorCSMgcHJv cGVybHkgYWZ0ZXIgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gn Ojp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCisJKTsKKworCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQn KTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0 MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFx KDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5 IGNoYW5nZWQgZGF0YScpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlz aGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTI2LDE3ICsxNDgs MjcgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyAoMSwgJ2ZvbycpLCAoMiwgJ2JhcicpIik7CiAKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWJfMiAoYSBpbnQpIik7CisKICMgU2V0 dXAgc3RydWN0dXJlIG9uIHN1YnNjcmliZXIKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50IHByaW1hcnkga2V5LCBi IHRleHQsIGMgdGltZXN0YW1wdHogREVGQVVMVCBub3coKSwgZCBiaWdpbnQgREVGQVVMVCA5OTkp IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUg VEFCTEUgdGVzdF90YWJfMiAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiXzIo YSkiKTsKKwogIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCiBteSAkcHVibGlzaGVyX2Nvbm5z dHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7CiAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDUkVBVEUgUFVCTElDQVRJT04g dGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKKwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9w dWIgRk9SIFRBQkxFIHRlc3RfdGFiLCB0ZXN0X3RhYl8yIik7CiAKIG15ICRhcHBuYW1lID0gJ3Rh cF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQ VElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9u YW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIK ICk7CkBAIC00OSw2ICsxODEsNDIgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFx KDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsK IAordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CispOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIg U1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBv ZmYpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFw cGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAg KQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0 YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKKyMgV2UgbmVlZCB0byBjaGVjayBE RUJVRyBsb2dzIHRvIGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzCisj IGFwcGxpZWQgdGhlIHRyYW5zYWN0aW9uLiBTbywgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4K KyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21p bl9tZXNzYWdlcyA9IGRlYnVnMSIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisjIFJ1 biBhIHF1ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCAxfSk7CisK K3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5h bWUsIDEpOworCisjIFRlc3QgdGhhdCB0aGUgZGVhZGxvY2sgaXMgZGV0ZWN0ZWQgYW1vbmcgbGVh ZGVyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLgorCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImRlYWRsb2NrX3RpbWVvdXQgPSAxbXMiKTsKKyRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUgdGhh dCB0aGUgcmVsb2FkIGhhcyB0YWtlbiBlZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgMX0pOworCiAjIEludGVybGVhdmUgYSBwYWlyIG9mIHRy YW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCiBteSAkaW4gID0gJyc7 CiBteSAkb3V0ID0gJyc7CkBAIC01OCw3MyArMjI2LDkwIEBAIG15ICR0aW1lciA9IElQQzo6UnVu Ojp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKIG15 ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwg XCRvdXQsICR0aW1lciwKIAlvbl9lcnJvcl9zdG9wID0+IDApOwogCisjIENvbmZpcm0gaWYgYSBk ZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFyYWxsZWwg YXBwbHkKKyMgd29ya2VyIGNhbiBiZSBkZXRlY3RlZC4KKworbXkgJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKICRpbiAuPSBxewogQkVHSU47Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUw MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworSU5TRVJUIElO VE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkp OwogfTsKICRoLT5wdW1wX25iOwogCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAwMDsKLUNPTU1JVDsKLX0pOworIyBFbnN1cmUgdGhhdCB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4ZWN1dGVzIHRoZSBpbnNlcnQgY29tbWFuZCBiZWZv cmUgdGhlCisjIGxlYWRlciB3b3JrZXIuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co CisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGFwcGxpZWQgWzAtOV0rIGNoYW5nZXMgaW4gdGhl IHN0cmVhbWluZyBjaHVuay8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIHZhbHVlcygxKSIpOwogCiAk aW4gLj0gcXsKIENPTU1JVDsKIFxxCiB9OwotJGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0 aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9yZSB0aGVtIGhlcmUKKyRoLT5maW5pc2g7CiAKKyRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZGVh ZGxvY2sgZGV0ZWN0ZWQvLAorCSRvZmZzZXQpOworCisjIEluIG9yZGVyIGZvciB0aGUgdHdvIHRy YW5zYWN0aW9ucyB0byBiZSBjb21wbGV0ZWQgbm9ybWFsbHkgd2l0aG91dCBjYXVzaW5nCisjIGNv bmZsaWN0cyBkdWUgdG8gdGhlIHVuaXF1ZSBpbmRleCwgd2UgdGVtcG9yYXJpbHkgZHJvcCBpdC4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhf dGFiIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBw bGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksICdjaGVj ayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh Yl8yIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CiAKLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJp bmFyeSBtb2RlCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0 X3RhYl8yIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQ VElPTiB0YXBfc3ViIFNFVCAoYmluYXJ5ID0gb24pIik7CisJIkNSRUFURSBVTklRVUUgSU5ERVgg aWR4X3RhYiBvbiB0ZXN0X3RhYl8yKGEpIik7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAw KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0p OworIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0d28gcGFyYWxsZWwgYXBwbHkgd29y a2VycyBjYW4gYmUgZGV0ZWN0ZWQuCiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwogCi0kcmVzdWx0ID0KLSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDY2Njd8NjY2N3w2NjY3KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZh dWx0cycpOworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNU IGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsK KworIyBFbnN1cmUgdGhhdCB0aGUgZmlyc3QgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4ZWN1dGVz IHRoZSBpbnNlcnQgY29tbWFuZAorIyBiZWZvcmUgdGhlIHNlY29uZCBvbmUuCiskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGFwcGxpZWQg WzAtOV0rIGNoYW5nZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVuay8sCisJJG9mZnNldCk7CiAKLSMg Q2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNj cmliZXIsCi0jIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0 YWlucyB0aGUgZXhwZWN0ZWQKLSMgdmFsdWVzLiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IG5vbi1z dHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQotIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbi4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gnOjp0aW1lc3RhbXB0eiArIDk4NzY1NDMy MSAqIGludGVydmFsICcxcyciCi0pOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRleHQpIik7CisJIklOU0VS VCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKSIpOwogCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkZWFk bG9jayBkZXRlY3RlZC8sCisJJG9mZnNldCk7CisKKyMgSW4gb3JkZXIgZm9yIHRoZSB0d28gdHJh bnNhY3Rpb25zIHRvIGJlIGNvbXBsZXRlZCBub3JtYWxseSB3aXRob3V0IGNhdXNpbmcKKyMgY29u ZmxpY3RzIGR1ZSB0byB0aGUgdW5pcXVlIGluZGV4LCB3ZSB0ZW1wb3JhcmlseSBkcm9wIGl0Lgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90 YWIiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBs aWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMp ID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVz dWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbGx5IGNoYW5nZWQgZGF0YScpOworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOwor aXMoJHJlc3VsdCwgcXEoMTAwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0 ZXIgZHJvcHBpbmcgaW5kZXgnKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1 Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9z dHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3Vi eGFjdC5wbAppbmRleCBkYjI5ZjA4OWEwLi43ZTM3NGY2ODdiIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBAIC04LDYgKzgsNzMgQEAgdXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1 c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIg aGFzIGZpbmlzaGVkIGFwcGx5aW5nIHRoZSBzdHJlYW1pbmcKKyMgdHJhbnNhY3Rpb24uCitzdWIg Y2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRp c19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/ IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRvZmZz ZXQpOworCX0KK30KKworIyBDb21tb24gdGVzdCBzdGVwcyBmb3IgYm90aCB0aGUgc3RyZWFtaW5n PW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sK KwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3Bh cmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIENoZWNrIHRoZSBzdWJzY3Jp YmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzLCA1KSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNB VkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDYsIDgpIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOSwgMTEpIHMoaSk7CisJ VVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTIsIDE0KSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1LCAxNykgcyhpKTsKKwlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkg JHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIi KTsKKwlpcygkcmVzdWx0LCBxcSgxMnwxMnwxMiksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWlu IGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hl ciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9w dWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiAr MTA0LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFt ZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGlj YXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcg PSBvbikiCiApOwpAQCAtNDksNDEgKzEyMCwzNCBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJl c3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2Ny aWJlcicpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lO VCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNiwgOCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShi KSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDksIDExKSBzKGkpOwotVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTIsIDE0KSBz KGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzNDsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMTUsIDE3KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEyfDEyfDEyKSwKLQknY2hlY2sgZGF0YSB3YXMg Y29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcg PSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5 IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKworIyBXZSBuZWVkIHRv IGNoZWNrIERFQlVHIGxvZ3MgdG8gZW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBoYXMKKyMgYXBwbGllZCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBidW1wIHVwIHRoZSBsb2cgdmVy Ym9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics ICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7 CisKKyMgUnVuIGEgcXVlcnkgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlbG9hZCBoYXMgdGFrZW4g ZWZmZWN0LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHF7U0VMRUNU IDF9KTsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNo ZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJl YW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKaW5k ZXggODY2ZjE1MTJlNC4uYjQxMDFlOTc5ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3 X3N0cmVhbV9kZGwucGwKQEAgLTIsNiArMiwxMCBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAy MiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKIAogIyBUZXN0IHN0cmVhbWlu ZyBvZiBsYXJnZSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgc3VidHJhbnNhY3Rpb25zCisjCisj IFRoaXMgZmlsZSBpcyBtYWlubHkgdG8gdGVzdCB0aGUgRERML0RNTCBpbnRlcmFjdGlvbiBvZiBw dWJsaXNoZXIgc2lkZSBhbmQKKyMgZG9lc24ndCBjb3ZlciBzb21lIGV4dHJhIGNvZGUsIHNvIHdl IGRvbid0IGFkZCBhIHBhcmFsbGVsIHZlcnNpb24gZm9yIHRoaXMKKyMgZmlsZS4KIHVzZSBzdHJp Y3Q7CiB1c2Ugd2FybmluZ3M7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5w bCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbApp bmRleCAxNDU4YzNhMGZjLi4yNDQyODEzMWY3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTI0IEBAIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyIGhhcyBmaW5pc2hlZCBhcHBseWluZyB0aGUgc3RyZWFtaW5nCisjIHRyYW5zYWN0aW9uLgor c3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0 LCAkaXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJ CSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkk b2Zmc2V0KTsKKwl9Cit9CisKKyMgQ29tbW9uIHRlc3Qgc3RlcHMgZm9yIGJvdGggdGhlIHN0cmVh bWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5n Cit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRp c19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBDaGVjayB0aGUgc3Vi c2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXIt PmxvZ2ZpbGU7CisKKwkjIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJP TExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsK KwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0LCBtZDUoNDo6 dGV4dCkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDUs IG1kNSg1Ojp0ZXh0KSk7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoNiwgbWQ1KDY6OnRleHQpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDcsIG1kNSg3Ojp0ZXh0KSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg4LCBtZDUoODo6dGV4dCkpOworCVNBVkVQT0lOVCBz NDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDksIG1kNSg5Ojp0ZXh0KSk7CisJU0FW RVBPSU5UIHM1OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTAsIG1kNSgxMDo6dGV4 dCkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9m ZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNnwwKSwKKwkJJ2NoZWNr IHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDaGVjayB0aGUg c3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmli ZXItPmxvZ2ZpbGU7CisKKwkjIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciBy ZWNlaXZpbmcgb3V0IG9mIG9yZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDExLCBtZDUoMTE6OnRleHQpKTsKKwlTQVZFUE9JTlQg czE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxMiwgbWQ1KDEyOjp0ZXh0KSk7CisJ U0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTMsIG1kNSgxMzo6 dGV4dCkpOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE0 LCBtZDUoMTQ6OnRleHQpKTsKKwlSRUxFQVNFIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoMTUsIG1kNSgxNTo6dGV4dCkpOworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9 KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs LCAnQ09NTUlUJyk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7CisJaXMoJHJlc3VsdCwgcXEoN3wwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2lu dCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJIyBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5n IHJvbGxiYWNrCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxNiwgbWQ1KDE2Ojp0ZXh0 KSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTcsIG1k NSgxNzo6dGV4dCkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDE4LCBtZDUoMTg6OnRleHQpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2co JG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQUJPUlQnKTsKKworCSRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSg3fDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisK KwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUg cHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0 cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzYsNiArMTU0LDEwIEBAICRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZP UiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAn b24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05O RUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVC TElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDgsODEgKzE3 MCwzMyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRl c3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBj b3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdpdGggRERM LCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6 dGV4dCkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0LCBt ZDUoNDo6dGV4dCkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVT ICg1LCBtZDUoNTo6dGV4dCkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg2LCBtZDUoNjo6dGV4dCkpOwotUk9MTEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDcsIG1kNSg3Ojp0ZXh0KSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOCwgbWQ1KDg6OnRleHQpKTsKLVNBVkVQT0lOVCBzNDsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOSwgbWQ1KDk6OnRleHQpKTsKLVNBVkVQT0lO VCBzNTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTAsIG1kNSgxMDo6dGV4dCkpOwot Q09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVz dWx0LCBxcSg2fDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3Rl ZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMn Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJF IGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIK ICk7CiAKLSMgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBv dXQgb2Ygb3JkZXIgc3VidHJhbnNhY3Rpb24KLSMgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBWQUxVRVMgKDExLCBtZDUoMTE6OnRleHQpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoMTIsIG1kNSgxMjo6dGV4dCkpOwotU0FWRVBPSU5UIHMyOwotSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgxMywgbWQ1KDEzOjp0ZXh0KSk7Ci1TQVZFUE9JTlQg czM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE0LCBtZDUoMTQ6OnRleHQpKTsKLVJF TEVBU0UgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE1LCBtZDUoMTU6OnRleHQp KTsKLVJPTExCQUNLIFRPIHMxOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9N IHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg3fDApLAotCSdjaGVjayByb2xsYmFjayB0byBz YXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgc3RyZWFtZWQgdHJh bnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgxNiwgbWQ1KDE2Ojp0ZXh0KSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDE3LCBtZDUoMTc6OnRleHQpKTsKLVNBVkVQT0lOVCBzMjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMTgsIG1kNSgxODo6dGV4dCkpOwotUk9MTEJB Q0s7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK LQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQs IHFxKDd8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJ UFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxp c2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRw aWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFw cG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVk IG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNV QlNDUklQVElPTiI7CisKKyMgV2UgbmVlZCB0byBjaGVjayBERUJVRyBsb2dzIHRvIGVuc3VyZSB0 aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzCisjIGFwcGxpZWQgdGhlIHRyYW5zYWN0 aW9uLiBTbywgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKyRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIp OworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisjIFJ1biBhIHF1ZXJ5IHRvIG1ha2Ugc3Vy ZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCAxfSk7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5kZXgg YzY3MTljMWFmOC4uOTA1ZDI1MTZiYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC0zLDYgKzMsMTAgQEAK IAogIyBUZXN0IHN0cmVhbWluZyBvZiB0cmFuc2FjdGlvbiB3aXRoIHN1YnRyYW5zYWN0aW9ucywg RERMcywgRE1McywgYW5kCiAjIHJvbGxiYWNrcworIworIyBUaGlzIGZpbGUgaXMgbWFpbmx5IHRv IHRlc3QgdGhlIERETC9ETUwgaW50ZXJhY3Rpb24gb2YgcHVibGlzaGVyIHNpZGUgYW5kCisjIGRv ZXNuJ3QgY292ZXIgc29tZSBleHRyYSBjb2RlLCBzbyB3ZSBkb24ndCBhZGQgYSBwYXJhbGxlbCB2 ZXJzaW9uIGZvciB0aGlzCisjIGZpbGUuCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDdhNzk3ZjM3YmEuLmQ2Njc4ZDY5ZGMgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBs CisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCkBA IC0xMSw2ICsxMSwyMTMgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGF0IHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzIGZpbmlzaGVkIGFwcGx5aW5nIHRoZSBzdHJlYW1p bmcKKyMgdHJhbnNhY3Rpb24uCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRzdHJlYW1pbmdfbW9kZSwgJHR5cGUpID0gQF87CisKKwlp ZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJv Y2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQor CisjIENvbW1vbiB0ZXN0IHN0ZXBzIGZvciBib3RoIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVh bWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9B LCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAkc3RyZWFtaW5nX21v ZGUpID0KKwkgIEBfOworCisJbXkgJG9mZnNldF9CID0gMDsKKwlteSAkb2Zmc2V0X0MgPSAwOwor CisJbXkgJG9sZHBpZF9CID0gJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJ CVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Iik7CisJbXkgJG9s ZHBpZF9DID0gJG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCVNFTEVDVCBw aWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAn JGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Iik7CisKKwkjIFNldHVwIGxvZ2lj YWwgcmVwbGljYXRpb24gc3RyZWFtaW5nIG1vZGUKKworCSRub2RlX0ItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9CCisJCVNFVCAoc3Ry ZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKTsiKTsKKwkkbm9kZV9DLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsICIKKwkJQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQworCQlTRVQgKHN0cmVh bWluZyA9ICRzdHJlYW1pbmdfbW9kZSkiKTsKKworCSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMgdG8g ZmluaXNoIGluaXRpYWxpemF0aW9uCisKKwkkbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkn cG9zdGdyZXMnLCAiCisJCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0 ZSA9ICdzdHJlYW1pbmcnOyIKKwkpIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IGFwcGx5IHRvIHJlc3RhcnQiOworCSRub2RlX0ItPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0 Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0MgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBw bHkgdG8gcmVzdGFydCI7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBU ZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gRGF0YSBpcyBzdHJlYW1l ZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgor CSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0 ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0X0IgPSAtcyAkbm9k ZV9CLT5sb2dmaWxlOworCSRvZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2ZpbGU7CisKKwkjIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSMgVGhlbiAyUEMgUFJFUEFSRQorCSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l X0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5nX21vZGUsICdQUkVQQVJF Jyk7CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0MsICRvZmZzZXRfQywgJHN0cmVhbWluZ19t b2RlLCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlcihzKQorCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1 YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygk cmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycp OworCisJIyAyUEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01N SVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZV9DKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNj cmliZXIocykKKwkkcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7 CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAy UEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZl IGxvY2FsIGRlZmF1bHRzJworCSk7CisJJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3Mg aW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJh IGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBjaGVjayB0aGUgdHJhbnNh Y3Rpb24gc3RhdGUgaXMgZW5kZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5v ZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24g c3Vic2NyaWJlciBDJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBU ZXN0IDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5ULgorCSMg MC4gQ2xlYW51cCBmcm9tIHByZXZpb3VzIHRlc3QgbGVhdmluZyBvbmx5IDIgcm93cy4KKwkjIDEu IEluc2VydCBvbmUgbW9yZSByb3cuCisJIyAyLiBSZWNvcmQgYSBTQVZFUE9JTlQuCisJIyAzLiBE YXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQT0lO VCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5zZXJ0cy4KKwkjIDUuIFRoZW4gQ09NTUlUIFBSRVBB UkVELgorCSMKKwkjIEV4cGVjdCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBs ZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAxKS4KKwkjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEg ZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfQS0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsi KTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXRf QiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7CisJJG9mZnNldF9DID0gLXMgJG5vZGVfQy0+bG9nZmls ZTsKKworCSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQK Kwkkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJQkVHSU47CisJCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OSwgJ2Zvb2JhcicpOworCQlTQVZFUE9JTlQgc3Bf aW5uZXI7CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOworCQlST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7CisJCVBS RVBBUkUgVFJBTlNBQ1RJT04gJ291dGVyJzsKKwkJIik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qyk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5n X21vZGUsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7CisK KwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQ UkVQQVJFRCAnb3V0ZXInOyIpOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVj ayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgZW5kZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQg PQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0 aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJl ZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9u IHN1YnNjcmliZXIgQycpOworCisJIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1YnNj cmliZXIocykuCisJIyBBbGwgdGhlIHN0cmVhbWVkIGRhdGEgKHByaW9yIHRvIHRoZSBTQVZFUE9J TlQpIHNob3VsZCBiZSByb2xsZWQgYmFjay4KKwkjICg5OTk5LCAnZm9vYmFyJykgc2hvdWxkIGJl IGNvbW1pdHRlZC4KKwkkcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7CisJ aXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3Jp YmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7CisJaXMoJHJlc3VsdCwgcXEoMyksICdS b3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0g JG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICdSb3dz IGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKKwkkcmVzdWx0ID0KKwkg ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWI7Iik7CisJaXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2Vu dCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVf QS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4g MjsiKTsKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0It PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKICMgU2V0dXAgYSBjYXNjYWRlIG9mIHB1Yi9zdWIgbm9kZXMuCiAjIG5vZGVf QSAtPiBub2RlX0IgLT4gbm9kZV9DCkBAIC0yNjAsMTYwICs0NjcsMjYgQEAgaXMoJHJlc3VsdCwg cXEoMjEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CiAj IDJQQyArIFNUUkVBTUlORyBURVNUUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotbXkgJG9s ZHBpZF9CID0gJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFw cG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Iik7Ci1teSAkb2xkcGlkX0MgPSAkbm9k ZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0 X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLQotIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIChz dHJlYW1pbmcgPSBvbikKLQotJG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlB TFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9CCi0JU0VUIChzdHJlYW1pbmcgPSBvbik7Iik7Ci0k bm9kZV9DLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0 YXBfc3ViX0MKLQlTRVQgKHN0cmVhbWluZyA9IG9uKSIpOwotCi0jIFdhaXQgZm9yIHN1YnNjcmli ZXJzIHRvIGZpbmlzaCBpbml0aWFsaXphdGlvbgotCi0kbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGls KAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0kbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0 Z3JlcycsICIKLQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIKLSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkg dG8gcmVzdGFydCI7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAy UEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBh IDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4 cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNv bW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBJbnNlcnQsIHVwZGF0 ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgVGhl biAyUEMgUFJFUEFSRQotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVH SU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsK LQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRl IGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyAy UEMgQ09NTUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJF RCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcihzKQotJHJl c3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBx cSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVk IG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycK LSk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBj b21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRl ZmF1bHRzJwotKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgZW5kZWQgb24g c3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRy ZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNL IFRPIFNBVkVQT0lOVC4KLSMgMC4gQ2xlYW51cCBmcm9tIHByZXZpb3VzIHRlc3QgbGVhdmluZyBv bmx5IDIgcm93cy4KLSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KLSMgMi4gUmVjb3JkIGEgU0FW RVBPSU5ULgotIyAzLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMgNC4gRG8gcm9sbGJh Y2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgotIyA1LiBUaGVu IENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBp cyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVw IDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUg dGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCi0k bm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOwotCi0jIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FW RVBPSU5UCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUJFR0lOOwotCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OSwgJ2Zvb2JhcicpOwotCVNBVkVQT0lOVCBz cF9pbm5lcjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7Ci0JUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lubmVyOwotCVBSRVBB UkUgVFJBTlNBQ1RJT04gJ291dGVyJzsKLQkiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0K LSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykK LSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFu c2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyAyUEMgQ09NTUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnb3V0ZXInOyIpOwotCi0kbm9kZV9BLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9DKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgZW5kZWQgb24gc3Vi c2NyaWJlcgotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgw KSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0g ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdf cHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVu ZGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQg c3Vic2NyaWJlcihzKS4KLSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUgU0FW RVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCi0jICg5OTk5LCAnZm9vYmFyJykgc2hvdWxk IGJlIGNvbW1pdHRlZC4KLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3Jp YmVyIEInKTsKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOwotaXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNv bW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPSAkbm9kZV9D LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIg d2hlcmUgYiA9ICdmb29iYXInOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRl ZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKLSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOwotaXMo JHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVy IEMnKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1l X0MsICdvbicpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjIFdlIG5lZWQgdG8gY2hlY2sgREVCVUcgbG9ncyB0byBlbnN1 cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGhhcworIyBhcHBsaWVkIHRoZSB0cmFu c2FjdGlvbi4gU28sIGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCiskbm9kZV9CLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKyRu b2RlX0ItPnJlbG9hZDsKKyRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAi bG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworJG5vZGVfQy0+cmVsb2FkOworCisjIFJ1biBh IHF1ZXJ5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZWxvYWQgaGFzIHRha2VuIGVmZmVjdC4KKyRu b2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxe1NFTEVDVCAxfSk7Ciskbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgMX0pOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9B LCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxsZWwnKTsK IAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFu dXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJl YW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmlu ZGV4IGExOTExMjliOWQuLmQ1NmYyYjdjM2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtOCw2ICs4LDI4NyBAQCB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0 OjpNb3JlOwogCisjIENoZWNrIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMgZmlu aXNoZWQgYXBwbHlpbmcgdGhlIHN0cmVhbWluZworIyB0cmFuc2FjdGlvbi4KK3N1YiBjaGVja19w YXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFs bGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNo ZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJ fQorfQorCisjIENvbW1vbiB0ZXN0IHN0ZXBzIGZvciBib3RoIHRoZSBzdHJlYW1pbmc9b24gYW5k IHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwp ID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRh IGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQg cHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2Ny aWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGNoZWNrIHRoYXQgMlBDIGdl dHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IHNvbWUgcm93cy4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVk X3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRl ZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01NSVQgUFJF UEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoNHw0fDQpLAorCQknUm93cyBp bnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRh YmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vi c2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gRG8gcm9s bGJhY2sgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9u bHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUg cmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJz Y3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+ bG9nZmlsZTsKKworCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4K Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47 CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNSkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEs MykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tf cGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BS RVBBUkUnKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0 ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3Jp YmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJl cGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3Jp YmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOworCWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFy ZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MnCisJKTsKKwor CSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFx KDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFS RUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgorCSMgMS4gaW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBzb21lIHJvd3MuCisJIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJl Zm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjIDMuIEFmdGVyIHNlcnZl cnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJ IworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFm dGVyIHRoZSBjb21taXQuCisJIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBk byBjcmFzaC9yZXN0YXJ0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ CSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7CisJCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRp YXRlJyk7CisJJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKworCSRub2RlX3B1 Ymxpc2hlci0+c3RhcnQ7CisJJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKwljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFS RScpOworCisJIyBjb21taXQgcG9zdCB0aGUgcmVzdGFydAorCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFi JzsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ IyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDR8NHw0KSwKKwkJ J1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBl eHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQg YmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRv IDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBp cyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUg d2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sgUFJF UEFSRUQuCisJIworCSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25s eSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUgb3JpZ2luYWwgMiArIGluc2VydGVk IDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0 ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93 IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBUaGVu IGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgorCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBz KGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUg VFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVf c3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnUFJFUEFSRScpOworCisJIyBjaGVj ayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgx KSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0 IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNh Y3Rpb24pCisJIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2Nr cyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhdGUgcHJpbWFyeSBrZXkK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8g dGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlv biBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyLAorCSMgYnV0IHRoZSBleHRyYSBJTlNF UlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCisJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQs IHFxKDN8M3wzKSwKKwkJJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXInKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwor CWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVy Jyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0 ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBp cyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmli ZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIEEgc2luZ2xlIHJv dyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KKwkjIDQuIFRoZW4g ZG8gYSBDT01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IDJQQyBkYXRhICsgdGhlIGV4dHJh IHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAz MzM1KS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxl dGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5v dyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhl biBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNSkg cyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJF IFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJ JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2Vy dCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5z YWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9j a3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5 CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRP IHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rp b24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDV8 NXw1KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91dHNpZGUgaW5zZXJ0 KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWlu IGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94 YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVwCiAjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszMjksMTAgQEAgJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIg Rk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2Rl ICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1 YgpAQCAtNjQsMjM2ICszNDksMzggQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5ID0KICRub2RlX3N1YnNj cmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3BoYXNlX3F1ZXJ5KQogICBv ciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIGVuYWJsZSB0 d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ2hlY2sgaW5p dGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9N IHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEg d2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMgMS4gRGF0YSBp cyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBjb21taXQgcHJl cGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIg c2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot Ci0jIGNoZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMoaSk7Ci0JVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQg c3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAwKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDR8NHw0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg aGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiCiApOwotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1 bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9M TEJBQ0sgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hp Y2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1 c2luZyAyUEMuCi0jIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSBy b2xscyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZv ciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBU aGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUpIHMo aSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK LQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFO U0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4g cHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJl ZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlJPTExCQUNLIFBSRVBBUkVEICd0 ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0 X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBh cmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzJyk7Ci0KLSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwg J3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRoYXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBk ZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCi0jIDEuIGluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgc29tZSByb3dzLgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUg MlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVz dGFydGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0 IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21t aXQuCi0jIE5vdGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3Rh cnQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkp OwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0J REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgn aW1tZWRpYXRlJyk7Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9k ZV9wdWJsaXNoZXItPnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAKLSMgY29tbWl0 IHBvc3QgdGhlIHJlc3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2 aXNpYmxlCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDR8NHw0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2 ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2Nh bCBkZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8g SU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQuCi0j IDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQg b24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMuIEEg c2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KLSMg NC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhlIDJQQyBkYXRh IHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJlcgotIyAodGhl IG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJl IHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0 ZSBhbmQgZGVsZXRlIHNvbWUgcm93cy4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1KSBzKGkpOwotCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJl cGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9u IHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsK LQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhl IDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xk cyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHBy aW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJh bnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElO U0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwg cXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91dHNpZGUgaW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2Ny aWJlcicpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBS RVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQg YmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4g RGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMg ZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQ UkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQQyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhl IHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0 IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQot IyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgc29tZSByb3dzLgotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUp IHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBU UkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxl bCkiKTsKIAotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUg b2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGls bCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFy YXJlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKyRub2Rl X3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9 ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAg IlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5n aW5nIFNVQlNDUklQVElPTiI7CiAKLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQg J3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKyMgV2UgbmVlZCB0byBjaGVjayBERUJVRyBsb2dzIHRv IGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaGFzCisjIGFwcGxpZWQgdGhl IHRyYW5zYWN0aW9uLiBTbywgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKyRub2RlX3N1YnNj cmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9 IGRlYnVnMSIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwogCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUg dGhhdCB0aGUgcmVsb2FkIGhhcyB0YWtlbiBlZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXtTRUxFQ1QgMX0pOwogCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNXw1fDUpLAotCSdS b3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21t aXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZh dWx0cycKLSk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7 Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAxKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwg dGhlIGNsZWFudXAKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_007_OS3PR01MB6275B61076717E4CE9E079D19EED9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v68-0003-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v68-0003-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v68-0003-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=12660; creation-date="Tue, 27 Dec 2022 04:52:40 GMT"; modification-date="Tue, 27 Dec 2022 04:54:00 GMT" Content-Transfer-Encoding: base64 RnJvbSBhYmNjN2JjYWJmODcyNjhjY2U3ZDI2NDU5OWQ5MTgwOGI0ODhkYTYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBXZWQsIDE0IERlYyAyMDIyIDIwOjM4OjUwICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjggMy82XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJp YWxpemluZyBtZXNzYWdlcyB0byBkaXNrCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAg ICAgICAgICAgICAgICAgICAgICB8ICAzMiArKysrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMgfCAgMTIgKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgICAgICB8ICAgOSArKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNf dGFibGVzLmMgICAgICAgICAgIHwgIDE0ICsrCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCAgICAgfCAgIDQgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0 cmVhbS5wbCAgICAgICAgIHwgMTQwICsrKysrKysrKysrKysrKysrLQogNiBmaWxlcyBjaGFuZ2Vk LCAyMDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggZjQ3NmNj NGY0NS4uMzhmODY2Y2RiNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMTE2NTEsNiArMTE2NTEsMzggQEAgTE9H OiAgQ2xlYW5VcExvY2s6IGRlbGV0aW5nOiBsb2NrKDB4YjdhY2Q4NDQpIGlkKDI0Njg4LDI0Njk2 LDAsMCwwLDEpCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAg ICA8dmFybGlzdGVudHJ5IGlkPSJndWMtc3RyZWFtLXNlcmlhbGl6ZS10aHJlc2hvbGQiIHhyZWZs YWJlbD0ic3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQiPgorICAgICAgPHRlcm0+PHZhcm5hbWU+ c3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQ8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBl PikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+c3RyZWFtX3Nl cmlhbGl6ZV90aHJlc2hvbGQ8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmlt YXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIEZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0 byBzZXJpYWxpemUgbWVzc2FnZXMgdG8gZmlsZXMgYWZ0ZXIKKyAgICAgICAgc2VuZGluZyBzcGVj aWZpZWQgYW1vdW50IG9mIHN0cmVhbWluZyBjaHVua3MgdG8gdGhlIHBhcmFsbGVsIGFwcGx5Cisg ICAgICAgIHdvcmtlci4gU2V0dGluZyB0aGlzIHRvIHplcm8gc2VyaWFsaXplIGFsbCBtZXNzYWdl cy4gQSB2YWx1ZSBvZgorICAgICAgICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4gKHRoZSBkZWZhdWx0 KSBkaXNhYmxlcyB0aGlzIGZlYXR1cmUuIFRoaXMgaXMKKyAgICAgICAgaW50ZW5kZWQgdG8gdGVz dCBzZXJpYWxpemF0aW9uIHRvIGZpbGVzIHdpdGgKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5n ID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgor ICAgICAgICBXaGVuIGxvZ2ljYWwgcmVwbGljYXRpb24gc3Vic2NyaXB0aW9uIDxsaXRlcmFsPnN0 cmVhbWluZzwvbGl0ZXJhbD4KKyAgICAgICAgcGFyYW1ldGVyIGlzIHNldCB0byA8bGl0ZXJhbD5w YXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgICAgICAgIHNlbmRz IG1lc3NhZ2VzIHRvIHBhcmFsbGVsIHdvcmtlcnMgd2l0aCBhIHRpbWVvdXQuIEJ5IGRlZmF1bHQs IHRoZQorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VyaWFsaXplIHRoZSByZW1h aW5pbmcgbWVzc2FnZXMgdG8gZmlsZXMgaWYKKyAgICAgICAgdGhlIHRpbWVvdXQgaXMgZXhjZWVk ZWQuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byBhbnkgdmFsdWUgb3RoZXIgdGhhbgorICAgICAg ICA8bGl0ZXJhbD4tMTwvbGl0ZXJhbD4sIHNlcmlhbGl6ZSB0byBmaWxlcyBldmVuIHdpdGhvdXQg dGltZW91dC4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhpcyBw YXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZSA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25m PC9maWxlbmFtZT4KKyAgICAgICAgZmlsZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQgbGluZS4K KyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4K KwogICAgIDwvdmFyaWFibGVsaXN0PgogICA8L3NlY3QxPgogICA8c2VjdDEgaWQ9InJ1bnRpbWUt Y29uZmlnLXNob3J0Ij4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggZTJiNzdkMzg4NS4uOWIxZGFkMWMyNiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29y a2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVs d29ya2VyLmMKQEAgLTI1Miw2ICsyNTIsOSBAQCBzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKnN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOwogLyogQSBsaXN0IHRvIG1haW50YWluIHN1 YnRyYW5zYWN0aW9ucywgaWYgYW55LiAqLwogc3RhdGljIExpc3QgKnN1YnhhY3RsaXN0ID0gTklM OwogCisvKiBHVUMgdmFyaWFibGUgKi8KK2ludAkJCXN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xk ID0gLTE7CisKIHN0YXRpYyB2b2lkIHBhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvKTsKIHN0YXRpYyBQYXJhbGxlbFRyYW5zU3RhdGUgcGFfZ2V0X3hhY3Rf c3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCk7CiBzdGF0aWMgUGFydGlh bEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0ZSh2b2lkKTsKQEAgLTExNjQsNiArMTE2 NywxNSBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXpl IG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKIAlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgp KTsKIAlBc3NlcnQoIXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyk7CiAKKwkvKiBGb3JjZSB0byBz ZXJpYWxpemUgbWVzc2FnZXMgaWYgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgaXMgcmVhY2hl ZC4gKi8KKwlpZiAoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgIT0gLTEgJiYKKwkJKHN0cmVh bV9zZXJpYWxpemVfdGhyZXNob2xkID09IDAgfHwKKwkJIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNo b2xkIDwgcGFyYWxsZWxfc3RyZWFtX25jaHVua3MpKQorCXsKKwkJcGFyYWxsZWxfc3RyZWFtX25j aHVua3MgPSAwOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAjZGVmaW5lIFNITV9TRU5EX1JFVFJZ X0lOVEVSVkFMX01TIDEwMDAKICNkZWZpbmUgU0hNX1NFTkRfVElNRU9VVF9NUwkJKDEwMDAwIC0g U0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMpCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCmluZGV4IGY5ZWZjMThlZjcuLjQzMjBiYmU4MTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzI2LDYgKzMyNiwxMiBAQCBzdGF0aWMg VHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAgKi8KIHN0 YXRpYyB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKIAorLyoKKyAqIFRoZSBu dW1iZXIgb2Ygc3RyZWFtaW5nIGNodW5rcyBzZW50IGJ5IGxlYWRlciBhcHBseSB3b3JrZXIgZHVy aW5nIG9uZQorICogc3RyZWFtZWQgdHJhbnNhY3Rpb24uIFRoaXMgaXMgb25seSB1c2VkIHdoZW4g c3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgPiAwLgorICovCit1aW50MzIJCXBhcmFsbGVsX3N0 cmVhbV9uY2h1bmtzID0gMDsKKwogLyoKICAqIFdlIGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBt b2RpZmljYXRpb24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZvcgogICogdGhlIHN1 YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVz IHRoZSBzdWJza2lwbHNuLgpAQCAtMTUxOCw2ICsxNTI0LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9zdGFydChTdHJpbmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxM RUw6CiAJCQlBc3NlcnQod2luZm8pOwogCisJCQlpZiAoc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hv bGQgPiAwKQorCQkJCXBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzKys7CisKIAkJCS8qCiAJCQkgKiBP bmNlIHdlIHN0YXJ0IHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLCB0aGUgcGFyYWxsZWwgYXBwbHkK IAkJCSAqIHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8gcmVsZWFzZSB0aGUgc3Ry ZWFtIGxvY2sKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggNjJiN2Y1N2U2My4u MzVlN2JmYmJhNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKQEAgLTYxLDYgKzYx LDcgQEAKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9zbG90LmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vc3luY3JlcC5oIgor I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sYXJnZV9vYmplY3QuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3BnX3NobWVtLmgiCkBAIC0zMDE0LDYgKzMwMTUsMTkgQEAgc3RydWN0IGNvbmZp Z19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJ eworCQl7InN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIiwgUEdDX1NJR0hVUCwgREVWRUxPUEVS X09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkZvcmNlcyB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ciB0byBzZXJpYWxpemUgbWVzc2FnZXMgIgorCQkJCQkJICJ0byBmaWxlcyBhZnRlciBzZW5kaW5n IHNwZWNpZmllZCBhbW91bnQgb2Ygc3RyZWFtaW5nICIKKwkJCQkJCSAiY2h1bmtzIGluIHN0cmVh bWluZyBwYXJhbGxlbCBtb2RlLiIpLAorCQkJZ2V0dGV4dF9ub29wKCJBIHZhbHVlIG9mIC0xIGRp c2FibGVzIHRoaXMgZmVhdHVyZS4iKSwKKwkJCUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZz dHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCwKKwkJLTEsIC0xLCBJTlRfTUFYLAorCQlOVUxMLCBO VUxMLCBOVUxMCisJfSwKKwogCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwg TE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUg dG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oCmluZGV4IGY3MDA2NmFkYzIuLmQwY2UzNjNiYTcgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yMjAsNiArMjIwLDEwIEBAIGV4dGVybiBQ R0RMTElNUE9SVCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXI7CiAKIGV4dGVy biBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90cmFuc2FjdGlvbjsKIAorZXh0ZXJuIFBHRExM SU1QT1JUIGludCBzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZDsKKworZXh0ZXJuIFBHRExMSU1Q T1JUIHVpbnQzMiBwYXJhbGxlbF9zdHJlYW1fbmNodW5rczsKKwogZXh0ZXJuIHZvaWQgbG9naWNh bHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2VyICps b2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkJ Ym9vbCBvbmx5X3J1bm5pbmcpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5k ZXggNmZhYTMwODMzMy4uMjdkZjE1NDRlNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3Ry ZWFtLnBsCkBAIC0xMzMsMTMgKzEzMywyMCBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKICMgQ3JlYXRl IHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19z dHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKLSRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCi0JJ2xvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Cisk bm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK21h eF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAxMAorbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9 IDY0a0IKKykpOwogJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKIAogIyBDcmVhdGUgc3Vic2NyaWJl ciBub2RlCiBteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdzdWJzY3JpYmVyJyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5pbml0KGFsbG93c19zdHJlYW1p bmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKAorCSdwb3N0 Z3Jlc3FsLmNvbmYnLCBxcSgKK21heF9wcmVwYXJlZF90cmFuc2FjdGlvbnMgPSAxMAorKSk7CiAk bm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAogIyBDcmVhdGUgc29tZSBwcmVleGlzdGluZyBjb250 ZW50IG9uIHB1Ymxpc2hlcgpAQCAtMTcwLDcgKzE3Nyw3IEBAIG15ICRhcHBuYW1lID0gJ3RhcF9z dWInOwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29u bnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEgg KHN0cmVhbWluZyA9IG9uKSIKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJ T04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNB VElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uLCB0d29fcGhhc2UgPSBvbikiCiApOwog CiAjIFdhaXQgZm9yIGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKQEAgLTMxMSw2ICszMTgs MTMzIEBAICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKIGlzKCRyZXN1bHQsIHFxKDEw MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4 Jyk7CiAKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFi XzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMg VGVzdCBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrCisKKyMgU2V0IHN0cmVhbV9zZXJpYWxp emVfdGhyZXNob2xkIHRvIHplcm8sIHNvIHRoZSBtZXNzYWdlcyB3aWxsIGJlIHNlcmlhbGl6ZWQg dG8gZGlzay4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSdBTFRF UiBTWVNURU0gU0VUIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID0gMDsnKTsKKyRub2RlX3N1 YnNjcmliZXItPnJlbG9hZDsKKworIyBSdW4gYSBxdWVyeSB0byBtYWtlIHN1cmUgdGhhdCB0aGUg cmVsb2FkIGhhcyB0YWtlbiBlZmZlY3QuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgcXtTRUxFQ1QgMX0pOworCisjIFNlcmlhbGl6ZSB0aGUgQ09NTUlUIHRyYW5zYWN0 aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0g LXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIpOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdl cyBhcmUgc2VyaWFsaXplZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9E RUJVRzogKCBbQS1aMC05XSs6KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVh bWVkIGNoYW5nZXMvLAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVk IG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1 bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYnkgc2VyaWFsaXpp bmcgbWVzc2FnZXMgdG8gZGlzaycpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBl bnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVO Q0FURSBUQUJMRSB0ZXN0X3RhYl8yIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisjIFNlcmlhbGl6ZSB0aGUgUFJFUEFSRSB0cmFuc2FjdGlvbi4KKyMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3hhY3QnOworCX0pOworCisjIEVuc3VyZSB0aGF0IHRoZSBtZXNzYWdlcyBhcmUgc2VyaWFsaXpl ZC4KKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05 XSs6KT8gb3BlbmluZyBmaWxlICIuKlwuY2hhbmdlcyIgZm9yIHN0cmVhbWVkIGNoYW5nZXMvLAor CSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vi c2NyaWJlcgorJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKK2lzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisj IENoZWNrIHRoYXQgMlBDIGdldHMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNPTU1JVCBQUkVQQVJFRCAneGFjdCc7Iik7 CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorJHJlc3VsdCA9 CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CisK KyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiXzIiKTsK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgU2VyaWFs aXplIHRoZSBBQk9SVCB0b3AtdHJhbnNhY3Rpb24uCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwor Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxeworCUJFR0lOOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTAwMCkgcyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2Fn ZXMgYXJlIHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv REVCVUc6ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJl YW1lZCBjaGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQg b24gc3Vic2NyaWJlcgorJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfMiIpOworaXMoJHJlc3Vs dCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBt ZXNzYWdlcyB0byBkaXNrJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmly b25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRF IFRBQkxFIHRlc3RfdGFiXzIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKyMgU2VyaWFsaXplIHRoZSBBQk9SVCBzdWItdHJhbnNhY3Rpb24uCisjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9z dGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgc3A7CisJSU5TRVJU IElOVE8gdGVzdF90YWJfMiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAw MCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzcDsKKwlDT01NSVQ7CisJfSk7CisKKyMgRW5zdXJlIHRo YXQgdGhlIG1lc3NhZ2VzIGFyZSBzZXJpYWxpemVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBvcGVuaW5nIGZpbGUgIi4qXC5jaGFu Z2VzIiBmb3Igc3RyZWFtZWQgY2hhbmdlcy8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCBvbmx5IHN1Yi10 cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIuCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl8yIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKKwogJG5vZGVfc3Vi c2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIAotLSAKMi4yMy4wLndpbmRv d3MuMQoK --_007_OS3PR01MB6275B61076717E4CE9E079D19EED9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v68-0004-Stop-extra-worker-if-GUC-was-changed.patch" Content-Description: v68-0004-Stop-extra-worker-if-GUC-was-changed.patch Content-Disposition: attachment; filename="v68-0004-Stop-extra-worker-if-GUC-was-changed.patch"; size=4728; creation-date="Tue, 27 Dec 2022 04:52:42 GMT"; modification-date="Tue, 27 Dec 2022 04:54:00 GMT" Content-Transfer-Encoding: base64 RnJvbSA1N2Q3NTIwZmM4NWY3NTRlNzM3NzMyNWI2ODFjOWM0MTg3YjUyNWRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGVybG9ja2NwcCA8c2hlcmxvY2tjcHBAZm94bWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgRGVjIDIwMjIgMjA6NDM6MjEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY2 OCA0LzZdIFN0b3AgZXh0cmEgd29ya2VyIGlmIEdVQyB3YXMgY2hhbmdlZAoKSWYgdGhlIG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gaXMgY2hhbmdlZCB0byBhCmxv d2VyIHZhbHVlLCB0cnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgdG8ga2VlcCB0 aGUgbnVtYmVyIG9mCndvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uCi0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgNzQgKysrKysrKysrKysrKysrKy0tLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDcgKysKIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAxICsKIDMgZmlsZXMgY2hh bmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA5 YjFkYWQxYzI2Li4xYzhkZDM5ZTgxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtNTQ4LDYgKzU0OCwyNSBAQCBw YV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyoK KyAqIFN0b3AgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhbmQgZnJlZSB0aGUgY29y cmVzcG9uZGluZyBpbmZvLgorICovCitzdGF0aWMgdm9pZAorcGFfc3RvcF93b3JrZXIoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCWludAkJCXNsb3Rfbm87CisJdWludDE2CQln ZW5lcmF0aW9uOworCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJ Z2VuZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247 CisJc2xvdF9ubyA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87CisJ U3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwlsb2dpY2FscmVwX3Bh X3dvcmtlcl9zdG9wKHNsb3Rfbm8sIGdlbmVyYXRpb24pOworCisJcGFfZnJlZV93b3JrZXJfaW5m byh3aW5mbyk7Cit9CisKIC8qCiAgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBmb3IgcmV1 c2UuCiAgKgpAQCAtNTk1LDE4ICs2MTQsNyBAQCBwYV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8pCiAJCWxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29s KSA+CiAJCShtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikp CiAJewotCQlpbnQJCQlzbG90X25vOwotCQl1aW50MTYJCWdlbmVyYXRpb247Ci0KLQkJU3Bpbkxv Y2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7Ci0JCWdlbmVyYXRpb24gPSB3aW5mby0+ c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOwotCQlzbG90X25vID0gd2luZm8t PnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9ubzsKLQkJU3BpbkxvY2tSZWxlYXNlKCZ3 aW5mby0+c2hhcmVkLT5tdXRleCk7Ci0KLQkJbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChzbG90 X25vLCBnZW5lcmF0aW9uKTsKLQotCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKLQorCQlw YV9zdG9wX3dvcmtlcih3aW5mbyk7CiAJCXJldHVybiB0cnVlOwogCX0KIApAQCAtNjE2LDYgKzYy NCw0OCBAQCBwYV9mcmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCiAJ cmV0dXJuIGZhbHNlOwogfQogCisvKgorICogVHJ5IHRvIHN0b3AgcGFyYWxsZWwgYXBwbHkgd29y a2VycyB0aGF0IGFyZSBub3QgaW4gdXNlIHRvIGtlZXAgdGhlIG51bWJlciBvZgorICogd29ya2Vy cyBsb3dlciB0aGFuIGhhbGYgb2YgdGhlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24uCisgKi8KK3ZvaWQKK3BhX3N0b3BfaWRsZV93b3JrZXJzKHZvaWQpCit7CisJ TGlzdAkgICAqYWN0aXZlX3dvcmtlcnM7CisJTGlzdENlbGwgICAqbGM7CisJaW50CQkJbWF4X2Fw cGx5d29ya2VycyA9IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g LyAyOworCisJaWYgKGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA8PSBtYXhf YXBwbHl3b3JrZXJzKQorCQlyZXR1cm47CisKKwlhY3RpdmVfd29ya2VycyA9IGxpc3RfY29weShQ YXJhbGxlbEFwcGx5V29ya2VyUG9vbCk7CisKKwlmb3JlYWNoKGxjLCBhY3RpdmVfd29ya2VycykK Kwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFRyeSB0byBmcmVlIGFuZCBzdG9w IHRoZSB3b3JrZXIgdGhhdCBpcyBpbiB1c2UuIE5vcm1hbGx5LCB3ZSBmcmVlCisJCSAqIHRoZSB3 b3JrZXIgYWZ0ZXIgZW5zdXJpbmcgdGhhdCB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIGJ5 IHRoZQorCQkgKiBwYXJhbGxlbCB3b3JrZXIgYnV0IGZvciByb2xsYmFja3MsIHdlIGRvbid0IHdh aXQgZm9yIHRoZQorCQkgKiB0cmFuc2FjdGlvbiB0byBmaW5pc2ggc28gY2FuJ3QgZnJlZSB0aGUg d29ya2VyIGluZm9ybWF0aW9uCisJCSAqIGltbWVkaWF0ZWx5LgorCQkgKi8KKwkJaWYgKHdpbmZv LT5pbl91c2UpCisJCQlwYV9mcmVlX3dvcmtlcih3aW5mbyk7CisKKwkJLyogRGlyZWN0bHkgc3Rv cCB0aGUgd29ya2VyIGlmIG5vdCBpbiB1c2UuICovCisJCWVsc2UKKwkJCXBhX3N0b3Bfd29ya2Vy KHdpbmZvKTsKKworCQkvKiBSZWNoZWNrIHRoZSBudW1iZXIgb2Ygd29ya2Vycy4gKi8KKwkJaWYg KGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA8PSBtYXhfYXBwbHl3b3JrZXJz KQorCQkJYnJlYWs7CisJfQorCisJbGlzdF9mcmVlKGFjdGl2ZV93b3JrZXJzKTsKK30KKwogLyoK ICAqIEZyZWUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbiBhbmQgdW5saW5r IHRoZSBmaWxlcyB3aXRoCiAgKiBzZXJpYWxpemVkIGNoYW5nZXMgaWYgYW55LgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNDMyMGJiZTgxMS4uZWYzMmZhMGQ3 MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zNjE0LDYg KzM2MTQsMTMgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2ZWQp CiAJCXsKIAkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJCVByb2Nlc3NDb25maWdG aWxlKFBHQ19TSUdIVVApOworCisJCQkvKgorCQkJICogVHJ5IHRvIHN0b3AgZnJlZSB3b3JrZXJz IGluIHRoZSBwb29sIGluIGNhc2UgdGhlCisJCQkgKiBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uIGlzIGNoYW5nZWQgdG8gYQorCQkJICogbG93ZXIgdmFsdWUuCisJ CQkgKi8KKwkJCXBhX3N0b3BfaWRsZV93b3JrZXJzKCk7CiAJCX0KIAogCQlpZiAocmMgJiBXTF9U SU1FT1VUKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCBk MGNlMzYzYmE3Li44Yjc1YTAwNmQ1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaApAQCAtMjc0LDYgKzI3NCw3IEBAIGV4dGVybiB2b2lkIHNldF9hcHBseV9lcnJv cl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1lKTsKIGV4dGVybiB2b2lkIHBhX2FsbG9j YXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKIGV4dGVybiBib29sIHBh X2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CitleHRlcm4gdm9p ZCBwYV9zdG9wX2lkbGVfd29ya2Vycyh2b2lkKTsKIGV4dGVybiB2b2lkIHBhX2RldGFjaF9hbGxf ZXJyb3JfbXEodm9pZCk7CiAKIGV4dGVybiBib29sIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_007_OS3PR01MB6275B61076717E4CE9E079D19EED9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v68-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v68-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v68-0005-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=21716; creation-date="Tue, 27 Dec 2022 04:52:43 GMT"; modification-date="Tue, 27 Dec 2022 04:54:01 GMT" Content-Transfer-Encoding: base64 RnJvbSBmMjZkMjIxZmE2ZjZjN2Y0MDZlYmE4ZmJiNjQ2MDM3MDVkNGI5ZjRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjggNS82XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku CgpOb3RlOiBTaW5jZSB3ZSBhZGQgYSBuZXcgZmllbGQgJ3N1YnJldHJ5JyB0byBjYXRhbG9nICdw Z19zdWJzY3JpcHRpb24nIGhhcyBiZWVuCmV4cGFuZGVkLCB3ZSBuZWVkIGJ1bXAgY2F0YWxvZyB2 ZXJzaW9uLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAg ICB8ICAxMCArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAg fCAgMTEgKy0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8 ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgIDEg KwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIHwgIDMwICsr Kwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgMTgyICsr KysrKysrKysrKystLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAg ICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oICAg ICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgg ICAgIHwgICAyICsKIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAg ICB8ICA1NyArKysrKysKIDEyIGZpbGVzIGNoYW5nZWQsIDI1NyBpbnNlcnRpb25zKCspLCA1NiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGMxZTQwNDgwNTQuLmQ5MTgzMjdlYzIgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCkBAIC03OTQ4LDYgKzc5NDgsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFj ZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+ JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3VicmV0cnk8L3N0cnVjdGZpZWxkPiA8 dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVHJ1 ZSBpZiBwcmV2aW91cyBjaGFuZ2UgZmFpbGVkIHRvIGJlIGFwcGxpZWQgd2hpbGUgdGhlcmUgd2Vy ZSBhbnkKKyAgICAgICBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgbmVjZXNzaXRhdGlu ZyBhIHJldHJ5LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxy b3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJjb25uaW5mbzwvc3Ry dWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9n aWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbAppbmRleCA1NGY0OGJlODdmLi5jYjRmNWM2ZjE5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwKQEAgLTE1MDQsMTIgKzE1MDQsMTEgQEAgQ09OVEVYVDogIHByb2Nlc3Np bmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAi SU5TRVIKIAogICA8cGFyYT4KICAgIFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKLSAgIGZhaWxlZCB0cmFuc2Fj dGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2Fy eSB0bwotICAgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJh bD4gb3IgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiBhbmQKLSAgIGNhdXNlIHRoZSBzYW1lIGNvbmZs aWN0cyBhZ2FpbiBzbyB0aGUgZmluaXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdp bGwKLSAgIGJlIHdyaXR0ZW4gdG8gdGhlIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmlu aXNoIExTTiwgcGxlYXNlIHJlZmVyIHRvIDxsaW5rCi0gICBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJz Y3JpcHRpb24iPjxjb21tYW5kPkFMVEVSIFNVQlNDUklQVElPTiAuLi4KLSAgIFNLSVA8L2NvbW1h bmQ+PC9saW5rPi4KKyAgIGZhaWxlZCB0cmFuc2FjdGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIElu IHRoYXQgY2FzZSwgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbgorICAgd2lsbCBiZSByZXRyaWVkIGlu IDxsaXRlcmFsPnN0cmVhbWluZyA9IG9uPC9saXRlcmFsPiBtb2RlLiBJZiBpdCBmYWlscworICAg YWdhaW4sIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbCBiZSB3 cml0dGVuIHRvIHRoZQorICAgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNO LCBwbGVhc2UgcmVmZXIgdG8KKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlv biI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBTS0lQPC9jb21tYW5kPjwvbGluaz4u CiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlw dGlvbi5zZ21sCmluZGV4IGYxNzNhMDkwMzcuLjY0ZDU4MDJhZGQgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNTEsNiArMjUxLDExIEBAIENSRUFURSBT VUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9u YW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3Rl IHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyBpbiBhCiAgICAgICAgICAgcGFyYWxsZWwgYXBwbHkg d29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uCiAgICAgICAg ICAgbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9nLgorICAgICAgICAgIFdo ZW4gYXBwbHlpbmcgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucywgaWYgYSBkZWFkbG9jayBpcyBkZXRl Y3RlZCwgdGhlCisgICAgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgZXhpdCB3aXRo IGFuIGVycm9yLiBUaGUKKyAgICAgICAgICA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4gbW9k ZSBpcyBkaXNyZWdhcmRlZCB3aGVuIHJldHJ5aW5nOworICAgICAgICAgIGluc3RlYWQgdGhlIHRy YW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCB1c2luZyA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4KKyAg ICAgICAgICBtb2RlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19z dWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5k ZXggYTUwNmZjM2VjOC4uNzIzYjE0MWM3NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5jCkBAIC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wg bWlzc2luZ19vaykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0tPnN1YnN0cmVhbTsKIAlzdWItPnR3 b3BoYXNlc3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0YXRlOwogCXN1Yi0+ZGlzYWJsZW9u ZXJyID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1Yi0+cmV0cnkgPSBzdWJmb3JtLT5z dWJyZXRyeTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRy KFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCAy ZDgxMDRiMDkwLi5jMmM3ZDhhOGI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CkBAIC0xMzAxLDcgKzEzMDEsNyBAQCBSRVZPS0UgQUxMIE9OIHBnX3JlcGxpY2F0aW9uX29yaWdp bl9zdGF0dXMgRlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX3N1YnNjcmlwdGlvbiBGUk9N IHB1YmxpYzsKIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJza2lwbHNuLCBzdWJuYW1l LCBzdWJvd25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3ViYmluYXJ5LCBzdWJzdHJl YW0sIHN1YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKLSAgICAgICAgICAgICAgc3Vi c2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAg ICAgICAgICAgICBzdWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1Ymxp Y2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CiAK IENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggOTM4MmU2MTllOS4uMmJhMjY1ODYyOCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjM1LDYgKzYzNSw3IEBA IENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlv blN0bXQgKnN0bXQsCiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgog CQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMu ZGlzYWJsZW9uZXJyKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAx XSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YmNvbm5pbmZvIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKIAlpZiAo b3B0cy5zbG90X25hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDFjOGRkMzllODEuLjkxN2I5OWYyNjIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCkBAIC0yOTksNiArMjk5LDE3IEBAIHBhX2Nhbl9zdGFydChUcmFuc2FjdGlvbklk IHhpZCkKIAlpZiAoIUFsbFRhYmxlc3luY3NSZWFkeSgpKQogCQlyZXR1cm4gZmFsc2U7CiAKKwkv KgorCSAqIERvbid0IHVzZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNh dXNlIGl0IGlzIHBvc3NpYmxlCisJICogdGhhdCBhIGRlYWRsb2NrIHdhcyBkZXRlY3RlZCB0aGUg bGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFwcGx5IGEKKwkgKiB0cmFuc2FjdGlvbiB1c2luZyBhIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KKwkgKi8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5KQor CXsKKwkJZWxvZyhERUJVRzEsICJwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBub3QgdXNlZCBm b3IgcmV0cmllcyIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCiAJcmV0dXJuIHRydWU7CiB9CiAK QEAgLTE2OTIsMyArMTcwMywyMiBAQCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8sIFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAlzdG9yZV9mbHVzaF9wb3NpdGlv bihyZW1vdGVfbHNuLCB3aW5mby0+c2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQpOwogCSh2b2lkKSBw YV9mcmVlX3dvcmtlcih3aW5mbyk7CiB9CisKKy8qIENoZWNrIGlmIGFueSBhY3RpdmUgcGFyYWxs ZWwgYXBwbHkgd29ya2Vycy4gKi8KK2Jvb2wKK3BhX2hhdmVfYWN0aXZlX3dvcmtlcih2b2lkKQor eworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgUGFyYWxsZWxBcHBseVdvcmtlclBv b2wpCisJeworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqdG1wX3dpbmZvOworCisJCXRtcF93 aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCWlmICh0 bXBfd2luZm8tPmluX3VzZSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsK K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGVmMzJmYTBk NzAuLjY3YjM2MWNjZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YwpAQCAtMzkzLDcgKzM5Myw3IEBAIHN0YXRpYyB2b2lkIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQp OwogCiBzdGF0aWMgdm9pZCBzZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBm b3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpOwogCi1zdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0 aW9uQW5kRXhpdCh2b2lkKTsKK3N0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25PbkVycm9y KHZvaWQpOwogCiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2lj YWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVf aW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00MzAsNiArNDMw LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2 b2lkKTsKIHN0YXRpYyBUcmFuc0FwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rp b24oVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICoqd2luZm8pOwogCitzdGF0aWMgdm9pZCBzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wg cmV0cnkpOworCiAvKgogICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBsb2dpY2FsIHJlcGxpY2F0 aW9uIHdvcmtlci4KICAqLwpAQCAtMTA0NSw2ICsxMDQ3LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1p dChTdHJpbmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5 bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1p dF9kYXRhLmVuZF9sc24pOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1 YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRF X0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQpAQCAt MTE1MSw2ICsxMTU2LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJ aW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxh Zy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55 IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJv Y2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEyMDcsNiAr MTIxNSw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuLCBYYWN0TGFzdENvbW1pdEVu ZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nl c3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICov CiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEy NjgsNiArMTI3OSw5IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZv IHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNu LCBYYWN0TGFzdENvbW1pdEVuZCk7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAK KwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZh bHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6 ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19kYXRh LnJvbGxiYWNrX2VuZF9sc24pOwogCkBAIC0xMzkxLDYgKzE0MDUsOSBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJfQogCisJLyogUmVzZXQg dGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlw Z3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQg YXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KQEAgLTE5NDYsNiArMTk2Mywx MCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCWJyZWFrOwog CX0KIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCWlmICh0b3BsZXZlbF94YWN0KQor CQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCXJlc2V0X2FwcGx5X2Vycm9yX2Nv bnRleHRfaW5mbygpOwogfQogCkBAIC0yMjIyLDYgKzIyNDMsOSBAQCBhcHBseV9oYW5kbGVfc3Ry ZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJl IGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFi bGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICov CisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAlwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KCk7CkBAIC00MzIzLDIwICs0MzQ3LDI4IEBAIHN0YXJ0X3RhYmxlX3N5bmMoWExvZ1JlY1B0ciAq b3JpZ2luX3N0YXJ0cG9zLCBjaGFyICoqbXlzbG90bmFtZSkKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7 CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhl IGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJS VVBUUygpOworCisJCUVtaXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rp b24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKwor CQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlv biAqLworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+ b2lkLCBmYWxzZSk7CisKIAkJaWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlE aXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBS ZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbi4gQWJv cnQKLQkJCSAqIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3Nh Z2UgaXMgc2VudCBpbiBhbgotCQkJICogaWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRP ZkFueVRyYW5zYWN0aW9uKCk7Ci0JCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihN eVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJv cigpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4g Ki8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKKworCQlwcm9jX2V4aXQoMCk7CiAJ fQogCVBHX0VORF9UUlkoKTsKIApAQCAtNDM2MSwyMCArNDM5MywyNyBAQCBzdGFydF9hcHBseShY TG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJ CSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0 YXRlIHRvIGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOwor CisJCUVtaXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJ Rmx1c2hFcnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBv cnQgdGhlIHdvcmtlciBmYWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcyAqLworCQlwZ3N0YXRf cmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJ CSAhYW1fdGFibGVzeW5jX3dvcmtlcigpKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2Fi bGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewot CQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFu Z2VzLiBBYm9ydCB0aGUKLQkJCSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3Rh dHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlB Ym9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9u X2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCQkJ RGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsKLQkJfQor CQkvKiBTZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1 ZSk7CiAJfQogCVBHX0VORF9UUlkoKTsKIH0KQEAgLTQ2NTAsMzkgKzQ2ODksMjAgQEAgQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogfQogCiAvKgotICogQWZ0ZXIgZXJyb3IgcmVjb3Zl cnksIGRpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbgotICogYW5k IGV4aXQgY2xlYW5seS4KKyAqIERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFu c2FjdGlvbi4KICAqLwogc3RhdGljIHZvaWQKLURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZv aWQpCitEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcih2b2lkKQogewotCS8qCi0JICogRW1pdCB0 aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4g aWRsZQotCSAqIHN0YXRlCi0JICovCi0JSE9MRF9JTlRFUlJVUFRTKCk7Ci0KLQlFbWl0RXJyb3JS ZXBvcnQoKTsKLQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQlGbHVzaEVycm9yU3RhdGUo KTsKLQotCVJFU1VNRV9JTlRFUlJVUFRTKCk7Ci0KLQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWls ZWQgZHVyaW5nIGVpdGhlciB0YWJsZSBzeW5jaHJvbml6YXRpb24gb3IgYXBwbHkgKi8KLQlwZ3N0 YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAot CQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOwotCiAJLyogRGlzYWJsZSB0aGUgc3Vi c2NyaXB0aW9uICovCiAJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAlEaXNhYmxlU3Vic2Ny aXB0aW9uKE15U3Vic2NyaXB0aW9uLT5vaWQpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCi0JLyogTm90aWZ5IHRoZSBzdWJzY3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGV4 aXQgKi8KKwkvKiBOb3RpZnkgdGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCAqLwog CWVyZXBvcnQoTE9HLAogCQkJZXJybXNnKCJzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBiZWVuIGRp c2FibGVkIGJlY2F1c2Ugb2YgYW4gZXJyb3IiLAogCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1l KSk7Ci0KLQlwcm9jX2V4aXQoMCk7CiB9CiAKIC8qCkBAIC00OTc0LDMgKzQ5OTQsNzEgQEAgZ2V0 X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKip3aW5mbykKIAkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFM TEVMOwogCX0KIH0KKworLyoKKyAqIFNldCBzdWJyZXRyeSBvZiBwZ19zdWJzY3JpcHRpb24gY2F0 YWxvZy4KKyAqCisgKiBJZiByZXRyeSBpcyB0cnVlLCBzdWJzY3JpYmVyIGlzIGFib3V0IHRvIGV4 aXQgd2l0aCBhbiBlcnJvci4gT3RoZXJ3aXNlLCBpdAorICogbWVhbnMgdGhhdCB0aGUgdHJhbnNh Y3Rpb24gd2FzIGFwcGxpZWQgc3VjY2Vzc2Z1bGx5LgorICovCitzdGF0aWMgdm9pZAorc2V0X3N1 YnNjcmlwdGlvbl9yZXRyeShib29sIHJldHJ5KQoreworCVJlbGF0aW9uCXJlbDsKKwlIZWFwVHVw bGUJdHVwOworCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKKwlib29sCQludWxsc1tOYXR0c19w Z19zdWJzY3JpcHRpb25dOworCWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07 CisJRGF0dW0JCXZhbHVlc1tOYXR0c19wZ19zdWJzY3JpcHRpb25dOworCisJLyogRmFzdCBwYXRo IC0gaWYgbm8gc3RhdGUgY2hhbmdlIHRoZW4gbm90aGluZyB0byBkbyAqLworCWlmIChNeVN1YnNj cmlwdGlvbi0+cmV0cnkgPT0gcmV0cnkpCisJCXJldHVybjsKKworCS8qIEZhc3QgcGF0aCAtIHNr aXAgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlf d29ya2VyKCkpCisJCXJldHVybjsKKworCS8qIEZhc3QgcGF0aCAtIHNraXAgc2V0IHJldHJ5IGlm IG5vIGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCisJaWYgKHJldHJ5ICYmICFwYV9o YXZlX2FjdGl2ZV93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJaWYgKCFJc1RyYW5zYWN0aW9uU3Rh dGUoKSkKKwl7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCXN0YXJ0ZWRfdHggPSB0 cnVlOworCX0KKworCS8qIExvb2sgdXAgdGhlIHN1YnNjcmlwdGlvbiBpbiB0aGUgY2F0YWxvZyAq LworCXJlbCA9IHRhYmxlX29wZW4oU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7CisJdHVwID0gU2VhcmNoU3lzQ2FjaGVDb3B5MShTVUJTQ1JJUFRJT05PSUQsCisJCQkJ CQkJICBPYmplY3RJZEdldERhdHVtKE15U3Vic2NyaXB0aW9uLT5vaWQpKTsKKworCWlmICghSGVh cFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAic3Vic2NyaXB0aW9uIFwiJXNcIiBk b2VzIG5vdCBleGlzdCIsIE15U3Vic2NyaXB0aW9uLT5uYW1lKTsKKworCUxvY2tTaGFyZWRPYmpl Y3QoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgTXlTdWJzY3JpcHRpb24tPm9pZCwgMCwKKwkJCQkJ IEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBGb3JtIGEgbmV3IHR1cGxlLiAqLworCW1lbXNldCh2 YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2Yo bnVsbHMpKTsKKwltZW1zZXQocmVwbGFjZXMsIGZhbHNlLCBzaXplb2YocmVwbGFjZXMpKTsKKwor CS8qIFNldCBzdWJyZXRyeSAqLworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRy eSAtIDFdID0gQm9vbEdldERhdHVtKHJldHJ5KTsKKwlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlw dGlvbl9zdWJyZXRyeSAtIDFdID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1 cCwgUmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzLAorCQkJCQkJCXJlcGxhY2Vz KTsKKworCS8qIFVwZGF0ZSB0aGUgY2F0YWxvZy4gKi8KKwlDYXRhbG9nVHVwbGVVcGRhdGUocmVs LCAmdHVwLT50X3NlbGYsIHR1cCk7CisKKwkvKiBDbGVhbnVwLiAqLworCWhlYXBfZnJlZXR1cGxl KHR1cCk7CisJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZjQ1NGIzMWM1 OC4uNDlmODM1ZWVkYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NTYwLDggKzQ1NjAsOSBAQCBnZXRTdWJz Y3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAogCS8q Ci0JICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxz biBpbiB0aGUgZHVtcCBhcwotCSAqIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVl IG1heSBubyBsb25nZXIgYmUgcmVsZXZhbnQuCisJICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMu IFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBhbmQgc3VicmV0cnkgaW4KKwkgKiB0aGUgZHVt cCBhcyBhZnRlciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJl CisJICogcmVsZXZhbnQuCiAJICovCiAJaV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJs ZW9pZCIpOwogCWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggNWI5ZTVhMzk5YS4uZDNiMTU4ZjBjMCAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04OCw2ICs4OCwxMSBAQCBDQVRBTE9HKHBn X3N1YnNjcmlwdGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVM QVRJT04gQktJX1JPVwogCWJvb2wJCXN1YmRpc2FibGVvbmVycjsJLyogVHJ1ZSBpZiBhIHdvcmtl ciBlcnJvciBzaG91bGQgY2F1c2UgdGhlCiAJCQkJCQkJCQkgKiBzdWJzY3JpcHRpb24gdG8gYmUg ZGlzYWJsZWQgKi8KIAorCWJvb2wJCXN1YnJldHJ5IEJLSV9ERUZBVUxUKGYpOwkvKiBUcnVlIGlm IHByZXZpb3VzIGNoYW5nZSBmYWlsZWQKKwkJCQkJCQkJCQkJICogdG8gYmUgYXBwbGllZCB3aGls ZSB0aGVyZSB3ZXJlCisJCQkJCQkJCQkJCSAqIGFueSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkKKwkJ CQkJCQkJCQkJICogd29ya2VycyAqLworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJp YWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAkvKiBDb25uZWN0aW9uIHN0cmluZyB0 byB0aGUgcHVibGlzaGVyICovCiAJdGV4dAkJc3ViY29ubmluZm8gQktJX0ZPUkNFX05PVF9OVUxM OwpAQCAtMTMxLDYgKzEzNiw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJ CWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gc2hvdWxkIGJl CiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYgYSB3b3JrZXIgZXJyb3IKIAkJ CQkJCQkJICogb2NjdXJzICovCisJYm9vbAkJcmV0cnk7CQkJLyogSW5kaWNhdGVzIGlmIHByZXZp b3VzIGNoYW5nZSBmYWlsZWQgdG8gYmUKKwkJCQkJCQkJICogYXBwbGllZCB1c2luZyBhIHBhcmFs bGVsIGFwcGx5IHdvcmtlciAqLwogCWNoYXIJICAgKmNvbm5pbmZvOwkJLyogQ29ubmVjdGlvbiBz dHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCWNoYXIJICAgKnNsb3RuYW1lOwkJLyogTmFtZSBv ZiB0aGUgcmVwbGljYXRpb24gc2xvdCAqLwogCWNoYXIJICAgKnN5bmNjb21taXQ7CQkvKiBTeW5j aHJvbm91cyBjb21taXQgc2V0dGluZyBmb3Igd29ya2VyICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDhiNzVhMDA2ZDUuLjgxYzQzMzE4NGYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0zMDQsNiArMzA0LDgg QEAgZXh0ZXJuIHZvaWQgcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxvY2sodm9pZCk7CiBleHRl cm4gdm9pZCBwYV94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCiAJ CQkJCQkgICBYTG9nUmVjUHRyIHJlbW90ZV9sc24pOwogCitleHRlcm4gYm9vbCBwYV9oYXZlX2Fj dGl2ZV93b3JrZXIodm9pZCk7CisKICNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtl cikgKCh3b3JrZXIpLT5hcHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCiAKIHN0YXRpYyBp bmxpbmUgYm9vbApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVh bS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggMjdkZjE1 NDRlNi4uZTQ2YjliODNiYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1 X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBA IC03NCw4ICs3NCwxNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJJ2NoZWNrIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwogCiAJIyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4g YmluYXJ5IG1vZGUKKwlteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFw cGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKwkp OwogCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKwkkbm9kZV9wdWJsaXNoZXIt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSAgKQorCSAgb3IgZGllCisJICAiVGltZWQg b3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VC U0NSSVBUSU9OIjsKIAogCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgog CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwpAQCAtNDQ1LDYgKzQ1Myw1 NSBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl8yIik7CiBpcygkcmVzdWx0LCBxcSg1MDAw KSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2Vz IHRvIGRpc2snKTsKIAorIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUg dGVzdF90YWJfMiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRlc3QgcmUtYXBwbHkgYSBmYWlsZWQgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSBsZWFkZXIgYXBwbHkKKyMgd29ya2VyIGFuZCBh cHBseSBzdWJzZXF1ZW50IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgcGFyYWxsZWwg YXBwbHkKKyMgd29ya2VyIGFmdGVyIHRoaXMgcmV0cnkgc3VjY2VlZHMuCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBVTklRVUUgSU5ERVggaWR4X3RhYiBvbiB0ZXN0X3RhYl8yKGEpIik7CisKKyMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIFNFTEVDVCBpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYl8yIHZhbHVl cygxKTsKK0NPTU1JVDt9KTsKKworIyBDaGVjayBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGlzIG5vdCBzdGFydGVkIGJlY2F1c2UgdGhlIGFib3ZlCisjIHRyYW5zYWN0aW9uIGZhaWxlZCB0 byBiZSBhcHBsaWVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVH OiAoIFtBLVowLTldKzopPyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBub3QgdXNlZCBmb3Ig cmV0cmllcy8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBz dWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFt aW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiXzIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKKworIyBBZnRlciBzdWNjZXNz ZnVsbHkgcmV0cnlpbmcgdG8gYXBwbHkgYSBmYWlsZWQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBh cHBseQorIyB0aGUgZm9sbG93aW5nIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIklOU0VSVCBJTlRPIHRlc3RfdGFiXzIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NTAwMSwgMTAwMDApIHMoaSkiKTsKKworY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsIDEsICdDT01NSVQnKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJf MiIpOworaXMoJHJlc3VsdCwgcXEoMTAwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIgdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcicpOworCiAkbm9kZV9zdWJzY3JpYmVy LT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_007_OS3PR01MB6275B61076717E4CE9E079D19EED9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v68-0006-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v68-0006-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v68-0006-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=9720; creation-date="Tue, 27 Dec 2022 04:52:44 GMT"; modification-date="Tue, 27 Dec 2022 04:54:01 GMT" Content-Transfer-Encoding: base64 RnJvbSAyZjUxZGIwZjIwM2I2OWIxZmMyM2JkZDVkZTE2ZWM4MzFmNzI1ZTY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djY4IDYvNl0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgfCAgMyArLQog ZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgIHwgMjYgKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgfCAg MSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgfCAzMiArKysr KysrKysrKystLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAg ICAgICAgfCAgNiArKy0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAg ICAgfCAgMyArLQogNiBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCBjYjRmNWM2ZjE5 Li42MjU0Mzg4YjA0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE2 OTEsNyArMTY5MSw4IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBs aWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBzdWJzY3JpcHRpb24u ICBBIGRpc2FibGVkIHN1YnNjcmlwdGlvbiBvciBhIGNyYXNoZWQgc3Vic2NyaXB0aW9uIHdpbGwg aGF2ZQogICAgemVybyByb3dzIGluIHRoaXMgdmlldy4gIElmIHRoZSBpbml0aWFsIGRhdGEgc3lu Y2hyb25pemF0aW9uIG9mIGFueQogICAgdGFibGUgaXMgaW4gcHJvZ3Jlc3MsIHRoZXJlIHdpbGwg YmUgYWRkaXRpb25hbCB3b3JrZXJzIGZvciB0aGUgdGFibGVzCi0gICBiZWluZyBzeW5jaHJvbml6 ZWQuCisgICBiZWluZyBzeW5jaHJvbml6ZWQuIE1vcmVvdmVyLCBpZiB0aGUgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIGlzIGFwcGxpZWQgaW4KKyAgIHBhcmFsbGVsLCB0aGVyZSB3aWxsIGJlIGFkZGl0 aW9uYWwgd29ya2Vycy4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmlu ZGV4IGVhZmVlYWRmNDcuLjJhNTE4MWY0OGEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtMzE4OSwx MyArMzE4OSwyNCBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQgRlJP TSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPjwvZW50 cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxv Z190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxz dHJ1Y3RmaWVsZD5hcHBseV9sZWFkZXJfcGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50ZWdlcjwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFByb2Nlc3MgSUQgb2Yg dGhlIGxlYWRlciBhcHBseSB3b3JrZXIsIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAg ICAgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGxlYWRlciBhcHBs eSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNocm9uaXphdGlvbiB3b3JrZXIuCisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAg ICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgog ICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgT0lEIG9mIHRoZSByZWxhdGlvbiB0 aGF0IHRoZSB3b3JrZXIgaXMgc3luY2hyb25pemluZzsgbnVsbCBmb3IgdGhlCi0gICAgICAgbWFp biBhcHBseSB3b3JrZXIKKyAgICAgICBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBAIC0z MjA1LDcgKzMyMTYsNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRfZXZlbnQg RlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9wYXJhPgog ICAgICAgPHBhcmE+CiAgICAgICAgTGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVjZWl2 ZWQsIHRoZSBpbml0aWFsIHZhbHVlIG9mCi0gICAgICAgdGhpcyBmaWVsZCBiZWluZyAwCisgICAg ICAgdGhpcyBmaWVsZCBiZWluZyAwOyBudWxsIGZvciB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy CiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMTQsNyArMzIyNSw4 IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRf YWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNn X3NlbmRfdGltZTwvc3RydWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwv dHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFNlbmQgdGltZSBvZiBs YXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFNlbmQg dGltZSBvZiBsYXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVs bCBmb3IgdGhlCisgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9l bnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyMjMsNyArMzIzNSw4IEBAIFNFTEVDVCBwaWQsIHdh aXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2Fp dF9ldmVudCBpCiAgICAgICAgPHN0cnVjdGZpZWxkPmxhc3RfbXNnX3JlY2VpcHRfdGltZTwvc3Ry dWN0ZmllbGQ+IDx0eXBlPnRpbWVzdGFtcCB3aXRoIHRpbWUgem9uZTwvdHlwZT4KICAgICAgIDwv cGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFJlY2VpcHQgdGltZSBvZiBsYXN0IG1lc3NhZ2Ug cmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcgorICAgICAgIFJlY2VpcHQgdGltZSBvZiBs YXN0IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBvcmlnaW4gV0FMIHNlbmRlcjsgbnVsbCBmb3IKKyAg ICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAg ICAgPC9yb3c+CiAKQEAgLTMyMzIsNyArMzI0NSw4IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRf dHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBp CiAgICAgICAgPHN0cnVjdGZpZWxkPmxhdGVzdF9lbmRfbHNuPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ cGdfbHNuPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgTGFzdCB3 cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0ZWQgdG8gb3JpZ2luIFdBTCBzZW5kZXIKKyAg ICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FM IHNlbmRlcjsgbnVsbCBmb3IKKyAgICAgICB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAgLTMyNDIsNyArMzI1Niw3IEBAIFNF TEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZp dHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAg ICBUaW1lIG9mIGxhc3Qgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdp biBXQUwKLSAgICAgICBzZW5kZXIKKyAgICAgICBzZW5kZXI7IG51bGwgZm9yIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICA8 L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs IGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGMyYzdkOGE4Yjcu LmYyODI1NzA1ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0OSw2 ICs5NDksNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAg ICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAgICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAg IHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBz dC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxh c3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYwppbmRleCA3NTlmOTY0ZmJkLi5hZWRhNWNkMTIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC0xMDcyLDcgKzEwNzIsNyBAQCBJc0xvZ2ljYWxM YXVuY2hlcih2b2lkKQogRGF0dW0KIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElP Tl9BUkdTKQogewotI2RlZmluZSBQR19TVEFUX0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVm aW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FS R0lTTlVMTCgwKSA/IEludmFsaWRPaWQgOiBQR19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJ UmV0dXJuU2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRp bmZvOwpAQCAtMTA5OCwxMCArMTA5OCw2IEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19G VU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9 IHN1YmlkKQogCQkJY29udGludWU7CiAKLQkJLyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwg YXBwbHkgd29ya2VyICovCi0JCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCi0J CQljb250aW51ZTsKLQogCQl3b3JrZXJfcGlkID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1 ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdvcmtlci5zdWJpZCk7CkBAIC0xMTEwLDI2ICsxMTA2 LDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdTKQogCQllbHNl CiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZhbHVlc1syXSA9IEludDMyR2V0RGF0dW0od29ya2Vy X3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCisKKwkJ aWYgKHdvcmtlci5hcHBseV9sZWFkZXJfcGlkID09IEludmFsaWRQaWQpCiAJCQludWxsc1szXSA9 IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1szXSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xz bik7Ci0JCWlmICh3b3JrZXIubGFzdF9zZW5kX3RpbWUgPT0gMCkKKwkJCXZhbHVlc1szXSA9IElu dDMyR2V0RGF0dW0od29ya2VyLmFwcGx5X2xlYWRlcl9waWQpOworCisJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKHdvcmtlci5sYXN0X2xzbikpCiAJCQludWxsc1s0XSA9IHRydWU7CiAJCWVsc2UK LQkJCXZhbHVlc1s0XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1l KTsKLQkJaWYgKHdvcmtlci5sYXN0X3JlY3ZfdGltZSA9PSAwKQorCQkJdmFsdWVzWzRdID0gTFNO R2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKKwkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9 PSAwKQogCQkJbnVsbHNbNV0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNV0gPSBUaW1lc3Rh bXBUekdldERhdHVtKHdvcmtlci5sYXN0X3JlY3ZfdGltZSk7Ci0JCWlmIChYTG9nUmVjUHRySXNJ bnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQorCQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXRE YXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUpOworCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1l ID09IDApCiAJCQludWxsc1s2XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s2XSA9IExTTkdl dERhdHVtKHdvcmtlci5yZXBseV9sc24pOwotCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkK KwkJCXZhbHVlc1s2XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1l KTsKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLnJlcGx5X2xzbikpCiAJCQludWxs c1s3XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s3XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0o d29ya2VyLnJlcGx5X3RpbWUpOworCQkJdmFsdWVzWzddID0gTFNOR2V0RGF0dW0od29ya2VyLnJl cGx5X2xzbik7CisJCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQorCQkJbnVsbHNbOF0gPSB0 cnVlOworCQllbHNlCisJCQl2YWx1ZXNbOF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5y ZXBseV90aW1lKTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwg cnNpbmZvLT5zZXREZXNjLAogCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CmluZGV4IDcwNTZjOTUzNzEuLjAzMjdiNTdhODUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdApAQCAtNTQyNiw5ICs1NDI2LDkgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vi c2NyaXB0aW9uJywgcHJvcm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3Jl dHNldCA9PiAndCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBw cm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJn dHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0 eixwZ19sc24sdGltZXN0YW1wdHp9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxv LG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZl ZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5k X2xzbixsYXRlc3RfZW5kX3RpbWV9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9p ZCxpbnQ0LGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3Rh bXB0en0nLAorICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJv YXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQsYXBwbHlfbGVhZGVyX3BpZCxyZWNl aXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3Rf ZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zdWJz Y3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAyNicsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJy ZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFtZSA9PiAncGdfYmFja2VuZF9waWQnLCBwcm92b2xh dGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxl cy5vdXQKaW5kZXggZmI5ZjkzNmQ0My4uN2U2ZWE2MGY5ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKQEAgLTIwOTQsNiArMjA5NCw3IEBAIHBnX3N0YXRfc3NsfCBTRUxFQ1Qgcy5w aWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwKICAgICBz dS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAgICBzdC5hcHBseV9sZWFkZXJfcGlkLAogICAgIHN0 LnJlbGlkLAogICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICBzdC5sYXN0X21zZ19zZW5kX3RpbWUs CkBAIC0yMTAxLDcgKzIxMDIsNyBAQCBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9p ZCBBUyBzdWJpZCwKICAgICBzdC5sYXRlc3RfZW5kX2xzbiwKICAgICBzdC5sYXRlc3RfZW5kX3Rp bWUKICAgIEZST00gKHBnX3N1YnNjcmlwdGlvbiBzdQotICAgICBMRUZUIEpPSU4gcGdfc3RhdF9n ZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkgc3Qoc3ViaWQsIHJlbGlkLCBwaWQsIHJlY2VpdmVk X2xzbiwgbGFzdF9tc2dfc2VuZF90aW1lLCBsYXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9l bmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUpIE9OICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CisgICAg IExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwg cmVsaWQsIHBpZCwgYXBwbHlfbGVhZGVyX3BpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5k X3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRf dGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0 YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAgICAgcy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9y X2NvdW50LAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_007_OS3PR01MB6275B61076717E4CE9E079D19EED9OS3PR01MB6275jpnp_--