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 1nwheO-0007eq-3D for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Jun 2022 10:01:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nwheM-0005Bo-Ne for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Jun 2022 10:01:54 +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 1nwheL-0005Be-SD for pgsql-hackers@lists.postgresql.org; Thu, 02 Jun 2022 10:01:54 +0000 Received: from esa12.fujitsucc.c3s2.iphmx.com ([216.71.156.125]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nwheE-0006Jm-5h for pgsql-hackers@lists.postgresql.org; Thu, 02 Jun 2022 10:01:53 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1654164106; x=1685700106; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=ai4BhchdOTR3COkcGCP1jvSikDcx7d411v6t+LkWSRc=; b=KYdeIZWwhYO3H28tsgUeTLsC7b3nrNvOKHCin7ajjWIiHdMAor6o81gF 3mAcf56Wbi4tY/w3wlE6Rg0k7Qt1fYe03zIaRrVp4p1qfCXhwtG1E1tbK gu5yPIvTv5Y58hM4A00i2JMsXNf77WB/waGx3HVzh8Tjr1Ki5uPA9SDdx sYdFQL2fGvn+YmfOKm0EEiDhaz1GPh0gOusmuBtJqxNX+LdDNUUvqnu0d EM3RSbpu+Wf0OlTliFyk+hCBzYyNraI01bqwdfD8+iM6n78eAjlvzBGeI DidtEQqzHAaJArKXLmlFT/J52ENsZ7ctyycpT7zk3IaThrMszzwWEfWfr Q==; X-IronPort-AV: E=McAfee;i="6400,9594,10365"; a="57359566" X-IronPort-AV: E=Sophos;i="5.91,270,1647270000"; d="scan'208,223";a="57359566" 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; 02 Jun 2022 19:01:42 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L+jwjJM22ikklQ4mlJLMt6dppq69/k3vqLlxk1tWC7CKG++NaoaDv6eAIAlUwvi6/HhjLiqaCq5/egdRD2zyYiozIn8S7iU8+pcUgO61eWfmO0GAgiwAd+01RkwmkcJk7xLc6qFqtqj4cA9vIAs0rzsGilDrERQIRXzc2zRY2kc/1ZTOeZdIiw7+nKh8IrfmqnAEMwCPbF3QflyZ156ttu4YIr3nOH0OhDTERqGRruDoRNha+q4dUO31Rb2T83QOr+ORCXQzfWLCkBnt9cN1YL9DFkQkJf7pQzsvKRRnoUYji3Tw8vn7ZRSCDo1/GkLnCocv0V5xOQYmtFsma8l73w== 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=LITlAv/A2HTzDy0ehU2tWxoie7GcXObcOxV0aipC0IQ=; b=SrTnJmYT/pToXydB+GVf2uZKQVqETkQBaiIxRIKEEdFzOtHcWpx0N8UtvHiYiv0mMaKWhsXdEGNr3OJ2zsPnh9fYohBNq6g5fG9XOcQiELxYgR9QFKH617dZoYzA11YO8kNlvlSYZJ+PXrOKURQ7TOkgsksBnfhA3WTRzes2WYvF/OWsTsZnJp8hcgCyINRZNVjz67RpKDwortue3+0h/9FJ7kXc4wfmu7R6Sgd47NeQ9+P9BfGknFoz+tJ6oNnMytHV1HAqo1JBN3fihAAlEUtMdUKSsIDAS8wG9tSHL+v6DxHX2QuBloBRfwP1Tz2xG5RUFYl4lD/PvN3WpHOMJw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LITlAv/A2HTzDy0ehU2tWxoie7GcXObcOxV0aipC0IQ=; b=Ui12K9Zr0tfqd9sRBkf2XinYnCjEDAm5zAYnf+19HWmVfhyKM3WZRubV+R2EFesxWziI29f7bbUp+9tZIQUb/QHclvBH9FY1w3A7bJqtbqM1bV7rgkPz9Ndg0sMJJYKSUe3vLWjjQiY9tHpejzVnCZsj+LHQ6bG5BSEbKaELpUs= Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by TYCPR01MB8690.jpnprd01.prod.outlook.com (2603:1096:400:18b::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.13; Thu, 2 Jun 2022 10:01:38 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::5d40:5c2d:b875:f813%9]) with mapi id 15.20.5314.012; Thu, 2 Jun 2022 10:01:38 +0000 From: "wangw.fnst@fujitsu.com" To: Amit Kapila , Masahiko Sawada CC: Peter Smith , "shiy.fnst@fujitsu.com" , "houzj.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: AQHYSXX4/KZEbPJKjUy7J1pJS8eGYazlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0A== Date: Thu, 2 Jun 2022 10:01:37 +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: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 97f44449-d464-4606-bf95-08da447ee27d x-ms-traffictypediagnostic: TYCPR01MB8690:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TTWBYfpoyT45hY8YVJaQ0O7pJKlLRi3henVrW2v1xHuE7hxWc9GTcH0UOuz0eHPeAtiOCMLKJ/NBcbLCrul84+lYVthyzcPWXmKrPSki4kbMgr/aKjtG9BBawcIPGwtsM3XMdNFmwyN9EFM/NqtCC1ObOm10y7x01vDSm57Za8TEYc/QtRkKVANZh8Oj8hDVO6K8O7mueSHE3Zj5Nd2/X9OT/cWgDqQsXY7ZkmkkOT987r6hnH9G78xq+e0r6zNJ24LAw2AAEhqTZ/zlOz3nJY+METa8xuutQGsFpBwYMACqEKg1iILbIXFCSgdQuSBTTOurHl1FFT7qfte/qi7lY1+diadt4xUKqR6QSjSGUwTbLJ1IEzuuTT8/JYXEk34+Tm789DAs94UzCM+Bhh0SZ8Yq2+TMtrnm/TR443ylzEgTSo/GoWhkBzC14l/+oxMzaf2m1nKx1wBwrGIv11VF4qk5ver8SRBrFcq88lqHlpzb5BDmyWKqb42XcBIBovWfix/2wCx/RCKbT2GJ5F399/byzosaPeo8iJgcSq4GfP/J+JjVsTHdkxaGLRGZeZH33lmpfeDpLROGBYBq4xz9Bp3P2m5shf4wV9TPzP7IsU/QeYCENMpqq+tPnwvC7SkfNGwDgZnr+wDAO2Zkv447WEDgKX34WFihobxUqeMP5BpFobpxztjdQPdqjQkrEKuRb9u+QrVjMxA5Ox3tvDecPCcHRHUPsxTU6CF0y0oGtKr4GyxfWKSdL2Kv7piNJstKDuNQWQ3jYRcxNJiOzb93QP0SV+O0U3dRqjDW+mkYAw/nua+KK2/eKv9GhfCkk7ytATbEVUOfd5hpoq1sxwWpqg== 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:(13230001)(4636009)(366004)(4326008)(5660300002)(85182001)(2906002)(76116006)(55016003)(7696005)(66476007)(66946007)(66556008)(64756008)(66446008)(54906003)(110136005)(316002)(8676002)(71200400001)(45080400002)(508600001)(966005)(6506007)(53546011)(33656002)(9686003)(26005)(99936003)(38100700002)(82960400001)(86362001)(38070700005)(122000001)(83380400001)(52536014)(8936002)(186003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZG0rTE4wQUE0NTF2VkJaZTl4L1dCMi8xUFlWdGJCbUxzT2RYOEVvb3l6b28z?= =?utf-8?B?NVpwMHF5VDhBdXBpc0dZeW9ieVJZTGFOMG1yajdHS20wL2VnTi95K0cwaWFR?= =?utf-8?B?V0FRTlJPS3lkOFVkNUJ2YzlJeHRtdHUvcjVQZjlQNGkxTHdPcTZSbnpXVCsx?= =?utf-8?B?bVRBTitvWFl4RDJiQkJYZEVsRkhSaUQ0UUtTVnVWL3hEV1FwVnA1emF5YWRh?= =?utf-8?B?Wks5dzBrb2lZQWJzSndHbVpWc093dVkwRysvZGVoQVZrT2JaME9nQjlmZ0lM?= =?utf-8?B?Skk3ZnZ0ckdoNVhlT0hxT3BRS3N1WVpxZEljbW01S210bkNFOWgxMTFscG5F?= =?utf-8?B?WGt6R2FYdzdFa3BKMHpNZ2o1WkhmL21aS0s4cXdWT2xiQ2tqbzdiQWQzM0Yr?= =?utf-8?B?eDBSWGF4WTN6ajF6N204Rm9RNi9PN3MwZzcrUEhTOXBEcDgxS3k5UGk5SkZl?= =?utf-8?B?RXIzOHZJRkpzVVdOcGNrZ3dQWUdHRlY4NWJTdVVxcjVLVWNvQ0lPU0swcDV1?= =?utf-8?B?S0hOOWpmRFo4ZGtBV0ZvY0VENWxDNUJDMk9ESUdhaWs2cW1oSldPWUY4V3ZY?= =?utf-8?B?cVNPQ1lXaXhjWVpCY0EwT2hNQk1oV2ZRSG9adXdUWUVhRzBZMENOM0ZTRFhp?= =?utf-8?B?M1c2bmNSU0s2SUJ6cEhaR2FlVnZFdnRqdE5jdndhai9MeUZ2R0lDbjRCZ0Mx?= =?utf-8?B?OVloWjZTak90NjlYdm1Dbkh0aGs5SHd6cHZtZUFESUFPMDdUNDNoQUZGKzF1?= =?utf-8?B?UVhZS2kxYWdsNEtkU1RReEMxcHpVSE11YVF2MVdWU2gxRmRYQjRBTk9QcWo5?= =?utf-8?B?ODc2cXc1OXhYcDk5WEVmTUppcE5oODhaSTBqT0ZId1BUQzlTRWpVVG1BMkJO?= =?utf-8?B?N2ZLaGFKTmRtTmJjWlBBTHRYNElhdW1SRVlkQUpDVWV5SHZSMnU5TE0ybmhG?= =?utf-8?B?dXVKaTJvUG4vRXl5Yk5Xd2pWNWw0ODJYbnZrdGJhbDNnU3NHMDlLTjVmY3pj?= =?utf-8?B?ckJMVW50QTNwelBjRXRNL0pveHVJQ0hmV0hhV01vZmRaL2IyWTB3VVhqbWxF?= =?utf-8?B?Y0daYmQrYjFKb2FaejA0ZmwzR3ZzOUtlbEM3NUZ5Z3hDNm9yRkxYNjZWS2Ev?= =?utf-8?B?ZmZXSHhjVmdBTUR6VDZGL2FsUllHUzI5M044VU9xYytLeDVYTTAxRXRqTUhK?= =?utf-8?B?YnJIamQrVUJxdk1qeWh1Tk45YkdubjE5aDNNdXV6ajZGc1FqTW85dkhwc0NW?= =?utf-8?B?R2ZDZHpxV05Tdm5hVlRzWWZLOXJpaDVyalJmYlhpdE9PQjBYeFZ0SE5oMEsv?= =?utf-8?B?cHQ5REVsYkpGeHV3aFFrSjF1N3VMRHZ3dXlZcmYvcnlXTGJXekhIVVQvLytC?= =?utf-8?B?OVZuTDJUTS9hakI0aFFCWFBGMWQyMHpmSWVpdEZTbkRQcDU0cXJYZ2JrSzZ4?= =?utf-8?B?Q05NTjdQOUxISDMzYzAxdzV3VWx2aHdOQ1NsUFlrTDhreFQ3ZjlmZVpEbll1?= =?utf-8?B?Q0JRMFJsOS9MMXlvR0JMZkhyYVQ5bjIxRkRHV3NjMDR4Z0ZLbjdRMGJzVVc4?= =?utf-8?B?cE0yUW4vUEtMU1poYzJWcloxckZ0OEZDb2NPanNjbGd4bHNPbzRKaEd6RkdN?= =?utf-8?B?b2dzWkpDOFZLa2h0N0R0Tko1T1F1MTQ0bFBPLzNrVUNNWTRwYTF4UlVvRC9S?= =?utf-8?B?dmlTM0UwR0lTclRFTE5NMjhlSEh3V08yRUVabFBNeUg1TjloNkZrVFdtejhS?= =?utf-8?B?ck9BalY2ZjdOdEowRzdFRXdmbHZMdlhVTDM2MVFyWFJWTG1kR0RRVGdmODZk?= =?utf-8?B?OG5XUk5LWjZ3WTUzKzY3WGVCS251bFpJOUtTeFFuRWkrSTBYMHdiaUI3OHFw?= =?utf-8?B?SjV3VTJ4UlRXcmpYS0hDMmdYV0tFZmQ2czlsS3pXVHkxaXVPeWZLME9ubVUx?= =?utf-8?B?N0cyRlN3ZXNqSDY1WnNKcEVIU2xoZkF3akFmNVJFYzJyR2RSK3RwV2pjSnR2?= =?utf-8?B?WGVqS2d1ZzlYN0lPQXo2MHJ1RkFVdFdqMzVyalZPWkpOSVlBMnI1aURiRVlX?= =?utf-8?B?cDlsVDY1QTNQOXpESk1kUnZlOVJhcXNUaW5RZnpOakg4Mm1FenQ0OEdBWi9y?= =?utf-8?B?OXNJWEJBMHJSc1k5OGJQMGpOc09tM3gzYkxYOXJ4ODIwdXdKVzI4YWk2dURS?= =?utf-8?B?SmFhamtkb1NHYmRSc0p1Vjl5dUlHcFA2QjZkSjR6RjhjcVk5blR3N2M4K2VR?= =?utf-8?B?MTIvL1d4VjcrTlNMVHIvdU1WUWpCMEI5bGkzeDV0VWpHR3IvenlOaWJ6R1Bn?= =?utf-8?B?QlhYVDNhSEp0Vkw2TWp1d096MHVhMFRNcDRPS01FZnhNdnAzRjB1dz09?= Content-Type: multipart/mixed; boundary="_005_OS3PR01MB62758A881FF3240171B7B21B9EDE9OS3PR01MB6275jpnp_" 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: 97f44449-d464-4606-bf95-08da447ee27d X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Jun 2022 10:01:38.2181 (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: 0KULZ7ZkepjlMqHTMY00Njufnyu0RcL4AYV2AD0vAInaaYOOIF2jq6K3ZUJ1uZOl3qxKDkq31spxSW9RFBbxPg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB8690 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_OS3PR01MB62758A881FF3240171B7B21B9EDE9OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gV2VkLCBKdW4gMSwgMjAyMiAxOjE5IFBNIEFtaXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2QGdt YWlsLmNvbT4gd3JvdGU6DQo+IE9uIFdlZCwgSnVuIDEsIDIwMjIgYXQgNzozMCBBTSBNYXNhaGlr byBTYXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4NCj4gd3JvdGU6DQo+ID4NCj4gPiBPbiBU dWUsIE1heSAzMSwgMjAyMiBhdCA1OjUzIFBNIEFtaXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2QGdt YWlsLmNvbT4NCj4gd3JvdGU6DQo+ID4gPg0KPiA+ID4gT24gTW9uLCBNYXkgMzAsIDIwMjIgYXQg NTowOCBQTSBBbWl0IEthcGlsYSA8YW1pdC5rYXBpbGExNkBnbWFpbC5jb20+DQo+IHdyb3RlOg0K PiA+ID4gPg0KPiA+ID4gPiBPbiBNb24sIE1heSAzMCwgMjAyMiBhdCAyOjIyIFBNIHdhbmd3LmZu c3RAZnVqaXRzdS5jb20NCj4gPiA+ID4gPHdhbmd3LmZuc3RAZnVqaXRzdS5jb20+IHdyb3RlOg0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gQXR0YWNoIHRoZSBuZXcgcGF0Y2hlcyhvbmx5IGNoYW5nZWQg MDAwMSBhbmQgMDAwMikNCj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4NCj4gPiA+IFRoaXMgcGF0 Y2ggYWxsb3dzIHRoZSBzYW1lIHJlcGxpY2F0aW9uIG9yaWdpbiB0byBiZSB1c2VkIGJ5IHRoZSBt YWluDQo+ID4gPiBhcHBseSB3b3JrZXIgYW5kIHRoZSBiZ3dvcmtlciB0aGF0IHVzZXMgaXQgdG8g YXBwbHkgc3RyZWFtaW5nDQo+ID4gPiB0cmFuc2FjdGlvbnMuIFNlZSB0aGUgY2hhbmdlcyBbMV0g aW4gdGhlIHBhdGNoLiBJIGFtIG5vdCBjb21wbGV0ZWx5DQo+ID4gPiBzdXJlIHdoZXRoZXIgdGhh dCBpcyBhIGdvb2QgaWRlYSBldmVuIHRob3VnaCBJIGNvdWxkIG5vdCBzcG90IG9yIHRoaW5rDQo+ ID4gPiBvZiBwcm9ibGVtcyB0aGF0IGNhbid0IGJlIGZpeGVkIGluIHlvdXIgcGF0Y2guIEkgc2Vl IHRoYXQgY3VycmVudGx5DQo+ID4gPiBib3RoIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgYmd3 b3JrZXIgd2lsbCBhc3NpZ24gTXlQcm9jUGlkIHRvIHRoZQ0KPiA+ID4gYXNzaWduZWQgb3JpZ2lu IHNsb3QsIHRoaXMgY2FuIGNyZWF0ZSB0aGUgcHJvYmxlbSBiZWNhdXNlDQo+ID4gPiBSZXBsaWNh dGlvbk9yaWdpbkV4aXRDbGVhbnVwKCkgY2FuIGNsZWFuIGl0IHVwIGV2ZW4gdGhvdWdoIHRoZSBt YWluDQo+ID4gPiBhcHBseSB3b3JrZXIgb3IgYW5vdGhlciBiZ3dvcmtlciBpcyBzdGlsbCB1c2lu ZyB0aGF0IG9yaWdpbiBzbG90Lg0KPiA+DQo+ID4gR29vZCBwb2ludC4NCj4gPg0KPiA+ID4gTm93 LA0KPiA+ID4gb25lIHdheSB0byBmaXggaXMgdGhhdCB3ZSBhc3NpZ24gb25seSB0aGUgbWFpbiBh cHBseSB3b3JrZXIncw0KPiA+ID4gTXlQcm9jUGlkIHRvIHNlc3Npb25fcmVwbGljYXRpb25fc3Rh dGUtPmFjcXVpcmVkX2J5LiBJIGhhdmUgdHJpZWQgdG8NCj4gPiA+IHRoaW5rIGFib3V0IHRoZSBj b25jdXJyZW5jeSBpc3N1ZXMgYXMgbXVsdGlwbGUgd29ya2VycyBjb3VsZCBub3cgcG9pbnQNCj4g PiA+IHRvIHRoZSBzYW1lIHJlcGxpY2F0aW9uIG9yaWdpbiBzdGF0ZS4gSSB0aGluayBpdCBpcyBz YWZlIGJlY2F1c2UgdGhlDQo+ID4gPiBwYXRjaCBtYWludGFpbnMgdGhlIGNvbW1pdCBvcmRlciBi eSBhbGxvd2luZyBvbmx5IG9uZSBwcm9jZXNzIHRvDQo+ID4gPiBjb21taXQgYXQgYSB0aW1lLCBz byBubyB0d28gd29ya2VycyB3aWxsIGJlIG9wZXJhdGluZyBvbiB0aGUgc2FtZQ0KPiA+ID4gb3Jp Z2luIGF0IHRoZSBzYW1lIHRpbWUuIEV2ZW4sIHRob3VnaCB0aGVyZSBpcyBubyBjYXNlIHdoZXJl IHRoZSBwYXRjaA0KPiA+ID4gd2lsbCB0cnkgdG8gYWR2YW5jZSB0aGUgc2Vzc2lvbidzIG9yaWdp biBjb25jdXJyZW50bHksIGl0IGFwcGVhcnMgc2FmZQ0KPiA+ID4gdG8gZG8gc28gYXMgd2UgY2hh bmdlL2FkdmFuY2UgdGhlIHNlc3Npb25fb3JpZ2luIExTTnMgdW5kZXINCj4gPiA+IHJlcGxpY2F0 ZV9zdGF0ZSBMV0xvY2suDQo+ID4NCj4gPiBSaWdodC4gVGhhdCB3YXksIHRoZSBjbGVhbnVwIGlz IGRvbmUgb25seSBieSB0aGUgbWFpbiBhcHBseSB3b3JrZXIuDQo+ID4gUHJvYmFibHkgdGhlIGJn d29ya2VyIGNhbiBjaGVjayBpZiB0aGUgb3JpZ2luIGlzIGFscmVhZHkgYWNxdWlyZWQgYnkNCj4g PiBpdHMgKGxlYWRlcikgbWFpbiBhcHBseSB3b3JrZXIgcHJvY2VzcyBmb3Igc2FmZXR5Lg0KPiA+ DQo+IA0KPiBZZWFoLCB0aGF0IG1ha2VzIHNlbnNlLg0KPiANCj4gPiA+DQo+ID4gPiBBbm90aGVy IGlkZWEgY291bGQgYmUgdGhhdCB3ZSBhbGxvdyBtdWx0aXBsZSByZXBsaWNhdGlvbiBvcmlnaW5z IChvbmUNCj4gPiA+IGZvciBlYWNoIGJnd29ya2VyIGFuZCBvbmUgZm9yIHRoZSBtYWluIGFwcGx5 IHdvcmtlcikgZm9yIHRoZSBhcHBseQ0KPiA+ID4gd29ya2VycyBjb3JyZXNwb25kaW5nIHRvIGEg c3Vic2NyaXB0aW9uLiBUaGVuIG9uIHJlc3RhcnQsIHdlIGNhbiBmaW5kDQo+ID4gPiB0aGUgaGln aGVzdCBMU04gYW1vbmcgYWxsIHRoZSBvcmlnaW5zIGZvciBhIHN1YnNjcmlwdGlvbi4gVGhpcyBz aG91bGQNCj4gPiA+IHdvcmsgcHJpbWFyaWx5IGJlY2F1c2Ugd2Ugd2lsbCBtYWludGFpbiB0aGUg Y29tbWl0IG9yZGVyLiBOb3csIGZvcg0KPiA+ID4gdGhpcyB0byB3b3JrIHdlIG5lZWQgdG8gc29t ZWhvdyBtYXAgYWxsIHRoZSBvcmlnaW5zIGZvciBhIHN1YnNjcmlwdGlvbg0KPiA+ID4gYW5kIG9u ZSBwb3NzaWJpbGl0eSBpcyB0aGF0IHdlIGhhdmUgYSBzdWJzY3JpcHRpb24gaWQgaW4gZWFjaCBv ZiB0aGUNCj4gPiA+IG9yaWdpbiBuYW1lcy4gQ3VycmVudGx5IHdlIHVzZSAoInBnXyV1IiwgTXlT dWJzY3JpcHRpb24tPm9pZCkgYXMNCj4gPiA+IG9yaWdpbl9uYW1lLiBXZSBjYW4gcHJvYmFibHkg YXBwZW5kIHNvbWUgdW5pcXVlIGlkZW50aWZpZXIgbnVtYmVyIGZvcg0KPiA+ID4gZWFjaCB3b3Jr ZXIgdG8gYWxsb3cgZWFjaCBvcmlnaW4gdG8gaGF2ZSBhIHN1YnNjcmlwdGlvbiBpZC4gV2UgbmVl ZCB0bw0KPiA+ID4gZHJvcCBhbGwgb3JpZ2lucyBmb3IgYSBwYXJ0aWN1bGFyIHN1YnNjcmlwdGlv biBvbiBEUk9QIFNVQlNDUklQVElPTi4gSQ0KPiA+ID4gdGhpbmsgaGF2aW5nIG11bHRpcGxlIG9y aWdpbnMgZm9yIHRoZSBzYW1lIHN1YnNjcmlwdGlvbiB3aWxsIGhhdmUgc29tZQ0KPiA+ID4gYWRk aXRpb25hbCB3b3JrIHdoZW4gd2UgdHJ5IHRvIGZpbHRlciBjaGFuZ2VzIGJhc2VkIG9uIG9yaWdp bi4NCj4gPg0KPiA+IEl0IGFsc28gc2VlbXMgdG8gd29yayBidXQgbmVlZCBhZGRpdGlvbmFsIHdv cmsgYW5kIHJlc291cmNlLg0KPiA+DQo+ID4gPiBUaGUgYWR2YW50YWdlIG9mIHRoZSBmaXJzdCBp ZGVhIGlzIHRoYXQgaXQgd29uJ3QgaW5jcmVhc2UgdGhlIG5lZWQgdG8NCj4gPiA+IGhhdmUgbW9y ZSBvcmlnaW5zIHBlciBzdWJzY3JpcHRpb24gYnV0IGl0IGlzIHF1aXRlIHBvc3NpYmxlIHRoYXQg SSBhbQ0KPiA+ID4gbWlzc2luZyBzb21ldGhpbmcgYW5kIHRoZXJlIGFyZSBwcm9ibGVtcyBkdWUg dG8gd2hpY2ggd2UgY2FuJ3QgdXNlDQo+ID4gPiB0aGF0IGFwcHJvYWNoLg0KPiA+DQo+ID4gSSBw cmVmZXIgdGhlIGZpcnN0IGlkZWEgYXMgaXQncyBzaW1wbGVyIHRoYW4gdGhlIHNlY29uZCBvbmUu IEkgZG9uJ3QNCj4gPiBzZWUgYW55IGNvbmN1cnJlbmN5IHByb2JsZW0gc28gZmFyIHVubGVzcyBJ J20gbm90IG1pc3Npbmcgc29tZXRoaW5nLg0KPiA+DQo+IA0KPiBUaGFua3MgZm9yIGV2YWx1YXRp bmcgaXQgYW5kIHNoYXJpbmcgeW91ciBvcGluaW9uLg0KVGhhbmtzIGZvciB5b3VyIGNvbW1lbnRz IGFuZCBvcGluaW9ucy4NCg0KSSBmaXhlZCB0aGlzIHByb2JsZW0gYnkgZm9sbG93aW5nIHRoZSBm aXJzdCBzdWdnZXN0aW9uLiBJIGFsc28gYWRkZWQgdGhlDQpyZWxldmFudCBjaGVja3MgYW5kIGNo YW5nZWQgdGhlIHJlbGV2YW50IGNvbW1lbnRzLg0KDQpUaGFua3MgZm9yIFNoaSBZdSB0byBhZGQg c29tZSB0ZXN0cyBhcyBzdWdnZXN0ZWQgYnkgT3N1bWktc2FuIGluIFsxXS4jNCBhbmQNCmltcHJv dmUgdGhlIDAwMDIgcGF0Y2ggYnkgYWRkaW5nIHNvbWUgY2hlY2tzIHRvIHNlZSBpZiB0aGUgYXBw bHkgYmFja2dyb3VuZA0Kd29ya2VyIHN0YXJ0cy4NCg0KQXR0YWNoIHRoZSBuZXcgcGF0Y2hlcy4N CjEuIEFkZCBzb21lIGRlc2NyaXB0aW9ucyByZWxhdGVkIHRvICJhcHBseSIgbW9kZSB0byBsb2dp Y2FsLXJlcGxpY2F0aW9uLnNnbWwNCmFuZCBjcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwuKHN1Z2dl c3RlZCBieSBPc3VtaS1zYW4gaW4gWzFdLiMxLCM0KQ0KMi4gRml4IHRoZSBwcm9ibGVtIHRoYXQg dmFsdWVzIGluIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIGFyZSBub3QgdXBkYXRlZA0KcHJv cGVybHkuIChzdWdnZXN0ZWQgYnkgT3N1bWktc2FuIGluIFsxXS4jMikNCjMuIEltcHJvdmUgdGhl IGNvZGUgZm9ybWF0dGluZyBvZiB0aGUgcGF0Y2hlcy4gKHN1Z2dlc3RlZCBieSBPc3VtaS1zYW4g aW4gWzFdLiMzKQ0KNC4gQWRkIHNvbWUgdGVzdHMgaW4gMDAwMyBwYXRjaC4gQW5kIGltcHJvdmUg c29tZSB0ZXN0cyBieSBhZGRpbmcgc29tZSBjaGVja3MNCnRvIHNlZSBpZiB0aGUgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgc3RhcnRzIGluIDAwMDIgcGF0Y2guIChzdWdnZXN0ZWQgYnkNCk9zdW1p LXNhbiBpbiBbMV0uIzQgYW5kIFNoaSBZdSkNCjUuIEltcHJvdmUgdGhlIGxvZyBtZXNzYWdlLiAo c3VnZ2VzdGVkIGJ5IEFtaXQtc2FuIGluIFsyXS4jMSkNCjYuIFNlcGFyYXRlIHRoZSBuZXcgbG9n aWMgcmVsYXRlZCB0byBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB0byBuZXcgZmlsZQ0KYXBwbHli Z3dyb2tlci5jLiAoc3VnZ2VzdGVkIGJ5IEFtaXQtc2FuIGluIFsyXS4jMikNCjcuIEltcHJvdmUg ZnVuY3Rpb24gaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uLiAoc3VnZ2VzdGVkIGJ5IEFtaXQt c2FuIGluWzJdLiMzKQ0KOC4gSW1wcm92ZSBzb21lIGNvbW1lbnRzLiAoc3VnZ2VzdGVkIGJ5IEFt aXQtc2FuIGluIFsyXS4jNCwjNiBhbmQgbWUpDQo5LiBGaXggdGhlIHByb2JsZW0gdGhhdCB0aGUg c3RydWN0dXJlIG1lbWJlciAiYWNxdWlyZWRfYnkiIGlzIGluY29ycmVjdGx5IHNldA0Kd2hlbiBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlciB0cmllcyB0byBnZXQgcmVwbGljYXRpb24gb3JpZ2luLg0K KHN1Z2dlc3RlZCBieSBBbWl0LXNhbiBpbiBbM10pDQoNClsxXSAtIGh0dHBzOi8vd3d3LnBvc3Rn cmVzcWwub3JnL21lc3NhZ2UtaWQvVFlDUFIwMU1CODM3MzVBRUUzODM3MDI1NEVENDk1QjA2RURE QTklNDBUWUNQUjAxTUI4MzczLmpwbnByZDAxLnByb2Qub3V0bG9vay5jb20NClsyXSAtIGh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FBNGVLMUp0MDhTWWJSdF8tcmJTV05n JTNEWDktbTglMkJSZFA1UG9zZm5RZ3lGLXo4Ymt4USU0MG1haWwuZ21haWwuY29tDQpbM10gLSBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBQTRlSzElMkJaNmFocFRRSzJL emt2UTFrTi11clZTOS1OX1JETTExTVMlMkJidHFhQjhCcHclNDBtYWlsLmdtYWlsLmNvbQ0KDQpS ZWdhcmRzLA0KV2FuZyB3ZWkNCg== --_005_OS3PR01MB62758A881FF3240171B7B21B9EDE9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v8-0001-Perform-streaming-logical-transactions-by-backgro.patch" Content-Description: v8-0001-Perform-streaming-logical-transactions-by-backgro.patch Content-Disposition: attachment; filename="v8-0001-Perform-streaming-logical-transactions-by-backgro.patch"; size=83388; creation-date="Thu, 02 Jun 2022 09:54:00 GMT"; modification-date="Thu, 02 Jun 2022 10:01:34 GMT" Content-Transfer-Encoding: base64 RnJvbSAzZTczMjIyMzJjNTI0ODU3NWExMWQ1MWRjYzhjN2E3Yzg3NjAwNmM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY4IDEvNF0gUGVyZm9ybSBzdHJlYW1pbmcgbG9naWNhbCB0cmFuc2FjdGlvbnMgYnkgYmFja2dy b3VuZAogd29ya2VycwoKQ3VycmVudGx5LCBmb3IgbGFyZ2UgdHJhbnNhY3Rpb25zLCB0aGUgcHVi bGlzaGVyIHNlbmRzIHRoZSBkYXRhIGluIG11bHRpcGxlCnN0cmVhbXMgKGNoYW5nZXMgZGl2aWRl ZCBpbnRvIGNodW5rcyBkZXBlbmRpbmcgdXBvbiBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtKSwK YW5kIHRoZW4gb24gdGhlIHN1YnNjcmliZXItc2lkZSwgdGhlIGFwcGx5IHdvcmtlciB3cml0ZXMg dGhlIGNoYW5nZXMgaW50bwp0ZW1wb3JhcnkgZmlsZXMgYW5kIG9uY2UgaXQgcmVjZWl2ZXMgdGhl IGNvbW1pdCwgaXQgcmVhZHMgZnJvbSB0aGUgZmlsZSBhbmQKYXBwbGllcyB0aGUgZW50aXJlIHRy YW5zYWN0aW9uLiBUbyBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiBzdWNoCnRyYW5zYWN0aW9u cywgd2UgY2FuIGluc3RlYWQgYWxsb3cgdGhlbSB0byBiZSBhcHBsaWVkIHZpYSBiYWNrZ3JvdW5k IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIgKGlmIGF2YWlsYWJsZSkgYXMKc29vbiBhcyB0aGUgeGFjdCdzIGZpcnN0IHN0 cmVhbSBpcyByZWNlaXZlZCBhbmQgdGhlIG1haW4gYXBwbHkgd29ya2VyIHdpbGwgc2VuZApjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIHdpbGwKZGlyZWN0bHkgYXBwbHkgdGhlIGNoYW5nZSBpbnN0ZWFkIG9mIHdy aXRpbmcgaXQgdG8gdGVtcG9yYXJ5IGZpbGVzLiBXZSBrZWVwCnRoaXMgd29ya2VyIGFzc2lnbmVk IHRpbGwgdGhlIHRyYW5zYWN0aW9uIGNvbW1pdCBpcyByZWNlaXZlZCBhbmQgYWxzbyB3YWl0IGZv cgp0aGUgd29ya2VyIHRvIGZpbmlzaCBhdCBjb21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBv cmRlcmluZyBhbmQgYXZvaWRzCndyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbSBmaWxlIGluIG1v c3QgY2FzZXMuIFdlIHN0aWxsIG5lZWQgdG8gc3BpbGwgaWYgdGhlcmUKaXMgbm8gd29ya2VyIGF2 YWlsYWJsZS4gV2UgYWxzbyBuZWVkIHRvIGFsbG93IHN0cmVhbV9zdG9wIHRvIGNvbXBsZXRlIGJ5 IHRoZQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB0byBhdm9pZCBkZWFkbG9ja3MgYmVjYXVzZSBU LTEncyBjdXJyZW50IHN0cmVhbSBvZgpjaGFuZ2VzIGNhbiB1cGRhdGUgcm93cyBpbiBjb25mbGlj dGluZyBvcmRlciB3aXRoIFQtMidzIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMuCgpUaGlzIHBhdGNo IGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcnIG9wdGlvbiBzbyB0aGF0 IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFu c2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCndvcmtlciBvciBzcGlsbCB0aGUgY2hhbmdl IHRvIGRpc2suIFVzZXIgY2FuIHNldCB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0bwonb24vb2ZmJywg J2FwcGx5Jy4gRm9yIG5vdywgJ2FwcGx5JyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwgYmUgYXBw bGllZCB2aWEgYQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhdmFpbGFibGUuICdvbicgbWVh bnMgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB3aWxsCmJlIHNwaWxsZWQgdG8gZGlzay4KLS0t CiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0K IGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAgNyArCiBk b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgfCAgMjQgKy0KIHNy Yy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICA2NiArLQogc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAgIHwgICAzICsKIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICB8ICAgMyArLQogLi4uL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jICAgICAgIHwgNzQzICsrKysrKysrKysr KysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jICAgIHwg IDg3ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jICAgICAgfCAg MjYgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAx MCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwgNjI2 ICsrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5j ICAgICAgIHwgICAzICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAg ICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAg ICAgIHwgIDE3ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggICAgICAgICAgICAg IHwgICAyICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAg fCAxMDAgKystCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0ICAgIHwg ICAyICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAg IDQgKwogMjAgZmlsZXMgY2hhbmdlZCwgMTU0NiBpbnNlcnRpb25zKCspLCAxOTUgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseWJnd3Jva2VyLmMKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBi L2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGMwMGM5M2RkN2IuLjVjYjM5YjE4YmQg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sCkBAIC03ODczLDExICs3ODczLDE1IEBAIFNDUkFNLVNIQS0yNTYkPHJl cGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2Vh YmxlPiZsCiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Ci0gICAgICAgPHN0cnVjdGZpZWxk PnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICAgPHN0cnVj dGZpZWxkPnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5cGU+CiAgICAgICA8 L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBJZiB0cnVlLCB0aGUgc3Vic2NyaXB0aW9uIHdp bGwgYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzCi0gICAgICAgdHJhbnNhY3Rpb25zCisg ICAgICAgQ29udHJvbHMgaG93IHRvIGhhbmRsZSB0aGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNz IHRyYW5zYWN0aW9uczoKKyAgICAgICA8bGl0ZXJhbD5mPC9saXRlcmFsPiA9IGRpc2FsbG93IHN0 cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMsCisgICAgICAgPGxpdGVyYWw+dDwv bGl0ZXJhbD4gPSBzcGlsbCB0aGUgY2hhbmdlcyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMg dG8KKyAgICAgICBkaXNrIGFuZCBhcHBseSBhdCBvbmNlIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBp cyBjb21taXR0ZWQgb24gdGhlCisgICAgICAgcHVibGlzaGVyLAorICAgICAgIDxsaXRlcmFsPmE8 L2xpdGVyYWw+ID0gYXBwbHkgY2hhbmdlcyBkaXJlY3RseSB1c2luZyBhIGJhY2tncm91bmQgd29y a2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IDE0NWVhNzFkNjEuLmNjYTZjOTdkNzkgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtOTQ4LDYgKzk0OCwxMyBAQCBDT05URVhU OiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5 NSIgZHVyaW5nICJJTlNFUgogICAgbWlnaHQgbm90IHZpb2xhdGUgYW55IGNvbnN0cmFpbnQuICBU aGlzIGNhbiBlYXNpbHkgbWFrZSB0aGUgc3Vic2NyaWJlcgogICAgaW5jb25zaXN0ZW50LgogICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBTZXR0aW5nIHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFs PmFwcGx5PC9saXRlcmFsPiBjb3VsZCBleHBvcnQgaW52YWxpZCBMU04KKyAgIGFzIGZpbmlzaCBM U04gb2YgZmFpbGVkIHRyYW5zYWN0aW9uLiBDaGFuZ2luZyB0aGUgc3RyZWFtaW5nIG1vZGUgYW5k IG1ha2luZworICAgdGhlIHNhbWUgY29uZmxpY3Qgd3JpdGVzIHRoZSBmaW5pc2ggTFNOIG9mIHRo ZSBmYWlsZWQgdHJhbnNhY3Rpb24gaW4gdGhlCisgICBzZXJ2ZXIgbG9nIGlmIHJlcXVpcmVkLgor ICA8L3BhcmE+CiAgPC9zZWN0MT4KIAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1y ZXN0cmljdGlvbnMiPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2Ny aXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApp bmRleCAzNWIzOWMyOGRhLi5kNGNhYWUwMjIyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9z dWJzY3JpcHRpb24uc2dtbApAQCAtMjE3LDEzICsyMTcsMjkgQEAgQ1JFQVRFIFNVQlNDUklQVElP TiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxh Y2VhYmwKICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgIDx2YXJsaXN0ZW50cnk+Ci0g ICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmJvb2xlYW48 L3R5cGU+KTwvdGVybT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFs PiAoPHR5cGU+ZW51bTwvdHlwZT4pPC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAg ICA8cGFyYT4KICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciB0byBlbmFibGUgc3RyZWFtaW5n IG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlw dGlvbi4gIEJ5IGRlZmF1bHQsIGFsbCB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBhcmUgZnVsbHkg ZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBvbmx5IHRoZW4gc2VudCB0byB0aGUKLSAgICAg ICAgICBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisgICAgICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0 aW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiwKKyAgICAg ICAgICBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIg YW5kIG9ubHkgdGhlbgorICAgICAgICAgIHNlbnQgdG8gdGhlIHN1YnNjcmliZXIgYXMgYSB3aG9s ZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0 IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGNoYW5nZXMgb2YgdHJhbnNhY3Rpb24gYXJl CisgICAgICAgICAgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBh dCBvbmNlIGFmdGVyIHRoZQorICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0 aGUgcHVibGlzaGVyLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+YXBwbHk8L2xpdGVyYWw+IGluY29taW5nCisgICAgICAg ICAgY2hhbmdlcyBhcmUgZGlyZWN0bHkgYXBwbGllZCB2aWEgb25lIG9mIHRoZSBiYWNrZ3JvdW5k IHdvcmtlcnMsIGlmCisgICAgICAgICAgYXZhaWxhYmxlLiBJZiBubyBiYWNrZ3JvdW5kIHdvcmtl ciBpcyBmcmVlIHRvIGhhbmRsZSBzdHJlYW1pbmcKKyAgICAgICAgICB0cmFuc2FjdGlvbiB0aGVu IHRoZSBjaGFuZ2VzIGFyZSB3cml0dGVuIHRvIGEgZmlsZSBhbmQgYXBwbGllZCBhZnRlcgorICAg ICAgICAgIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJv ciBoYXBwZW5zIHdoZW4KKyAgICAgICAgICBhcHBseWluZyBjaGFuZ2VzIGluIGEgYmFja2dyb3Vu ZCB3b3JrZXIsIGl0IG1pZ2h0IG5vdCByZXBvcnQgdGhlCisgICAgICAgICAgZmluaXNoIExTTiBv ZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uIGluIHRoZSBzZXJ2ZXIgbG9nLgogICAgICAgICAgPC9w YXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDgzZTZlYWU4NTUuLjQwODBiYmE5 ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTgzLDcgKzgz LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWJvb2wJCWNvcHlfZGF0YTsKIAlib29sCQly ZWZyZXNoOwogCWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFt aW5nOwogCWJvb2wJCXR3b3BoYXNlOwogCWJvb2wJCWRpc2FibGVvbmVycjsKIAlYTG9nUmVjUHRy CWxzbjsKQEAgLTk1LDYgKzk1LDYyIEBAIHN0YXRpYyBMaXN0ICptZXJnZV9wdWJsaWNhdGlvbnMo TGlzdCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9vbCBhZGRwdWIsCiBzdGF0aWMg dm9pZCBSZXBvcnRTbG90Q29ubmVjdGlvbkVycm9yKExpc3QgKnJzdGF0ZXMsIE9pZCBzdWJpZCwg Y2hhciAqc2xvdG5hbWUsIGNoYXIgKmVycik7CiAKIAorLyoKKyAqIEV4dHJhY3QgdGhlIHN0cmVh bWluZyBtb2RlIHZhbHVlIGZyb20gYSBEZWZFbGVtLiAgVGhpcyBpcyBsaWtlCisgKiBkZWZHZXRC b29sZWFuKCkgYnV0IGFsc28gYWNjZXB0cyB0aGUgc3BlY2lhbCB2YWx1ZSBvZiAiYXBwbHkiLgor ICovCitzdGF0aWMgY2hhcgorZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpCit7CisJ LyoKKwkgKiBJZiBubyBwYXJhbWV0ZXIgZ2l2ZW4sIGFzc3VtZSAidHJ1ZSIgaXMgbWVhbnQuCisJ ICovCisJaWYgKGRlZi0+YXJnID09IE5VTEwpCisJCXJldHVybiBTVUJTVFJFQU1fT047CisKKwkv KgorCSAqIEFsbG93IDAsIDEsICJ0cnVlIiwgImZhbHNlIiwgIm9uIiwgIm9mZiIgb3IgImFwcGx5 Ii4KKwkgKi8KKwlzd2l0Y2ggKG5vZGVUYWcoZGVmLT5hcmcpKQorCXsKKwkJY2FzZSBUX0ludGVn ZXI6CisJCQlzd2l0Y2ggKGludFZhbChkZWYtPmFyZykpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJ CQlyZXR1cm4gU1VCU1RSRUFNX09GRjsKKwkJCQljYXNlIDE6CisJCQkJCXJldHVybiBTVUJTVFJF QU1fT047CisJCQkJZGVmYXVsdDoKKwkJCQkJLyogb3RoZXJ3aXNlLCBlcnJvciBvdXQgYmVsb3cg Ki8KKwkJCQkJYnJlYWs7CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXsKKwkJCQlj aGFyCSAgICpzdmFsID0gZGVmR2V0U3RyaW5nKGRlZik7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBz ZXQgb2Ygc3RyaW5ncyBhY2NlcHRlZCBoZXJlIHNob3VsZCBtYXRjaCB1cCB3aXRoIHRoZQorCQkJ CSAqIGdyYW1tYXIncyBvcHRfYm9vbGVhbl9vcl9zdHJpbmcgcHJvZHVjdGlvbi4KKwkJCQkgKi8K KwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiZmFsc2UiKSA9PSAwIHx8CisJCQkJCXBnX3N0 cmNhc2VjbXAoc3ZhbCwgIm9mZiIpID09IDApCisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOwor CQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJ0cnVlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJj YXNlY21wKHN2YWwsICJvbiIpID09IDApCisJCQkJCXJldHVybiBTVUJTVFJFQU1fT047CisJCQkJ aWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImFwcGx5IikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNU UkVBTV9BUFBMWTsKKwkJCX0KKwkJCWJyZWFrOworCX0KKwllcmVwb3J0KEVSUk9SLAorCQkJKGVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJIGVycm1zZygiJXMgcmVxdWlyZXMgYSBC b29sZWFuIHZhbHVlIG9yIFwiYXBwbHlcIiIsCisJCQkJCWRlZi0+ZGVmbmFtZSkpKTsKKwlyZXR1 cm4gU1VCU1RSRUFNX09GRjsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KK30KKwogLyoKICAq IENvbW1vbiBvcHRpb24gcGFyc2luZyBmdW5jdGlvbiBmb3IgQ1JFQVRFIGFuZCBBTFRFUiBTVUJT Q1JJUFRJT04gY29tbWFuZHMuCiAgKgpAQCAtMTMyLDcgKzE4OCw3IEBAIHBhcnNlX3N1YnNjcmlw dGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCWlm IChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0JJTkFSWSkpCiAJCW9wdHMtPmJpbmFyeSA9 IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCi0J CW9wdHMtPnN0cmVhbWluZyA9IGZhbHNlOworCQlvcHRzLT5zdHJlYW1pbmcgPSBTVUJTVFJFQU1f T0ZGOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1RXT1BIQVNFX0NPTU1JVCkp CiAJCW9wdHMtPnR3b3BoYXNlID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBT VUJPUFRfRElTQUJMRV9PTl9FUlIpKQpAQCAtMjMzLDcgKzI4OSw3IEBAIHBhcnNlX3N1YnNjcmlw dGlvbl9vcHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCQkJ CWVycm9yQ29uZmxpY3RpbmdEZWZFbGVtKGRlZmVsLCBwc3RhdGUpOwogCiAJCQlvcHRzLT5zcGVj aWZpZWRfb3B0cyB8PSBTVUJPUFRfU1RSRUFNSU5HOwotCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVm R2V0Qm9vbGVhbihkZWZlbCk7CisJCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdN b2RlKGRlZmVsKTsKIAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29f cGhhc2UiKSA9PSAwKQogCQl7CkBAIC02MDEsNyArNjU3LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9u KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vib3duZXIgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0o b3duZXIpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJlbmFibGVkIC0gMV0gPSBC b29sR2V0RGF0dW0ob3B0cy5lbmFibGVkKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3ViYmluYXJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5iaW5hcnkpOwotCXZhbHVlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLnN0cmVh bWluZyk7CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQ2hh ckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3VidHdvcGhhc2VzdGF0ZSAtIDFdID0KIAkJQ2hhckdldERhdHVtKG9wdHMudHdvcGhhc2UgPwog CQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKQEAgLTEwNjAsNyArMTEx Niw3IEBAIEFsdGVyU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTdWJzY3Jp cHRpb25TdG10ICpzdG10LAogCQkJCWlmIChJc1NldChvcHRzLnNwZWNpZmllZF9vcHRzLCBTVUJP UFRfU1RSRUFNSU5HKSkKIAkJCQl7CiAJCQkJCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJzdHJlYW0gLSAxXSA9Ci0JCQkJCQlCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCQkJ CQkJQ2hhckdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKIAkJCQkJcmVwbGFjZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSB0cnVlOwogCQkJCX0KIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9iZ3dvcmtlci5jCmluZGV4IDQwNjAxYWVmZDkuLjQwY2NiODk5M2MgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMKQEAgLTEyOCw2ICsxMjgsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0CiAJ fSwKIAl7CiAJCSJBcHBseVdvcmtlck1haW4iLCBBcHBseVdvcmtlck1haW4KKwl9LAorCXsKKwkJ IkFwcGx5Qmd3b3JrZXJNYWluIiwgQXBwbHlCZ3dvcmtlck1haW4KIAl9CiB9OwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQppbmRleCBjNGUyZmRlYjcxLi5hMjRhNDE5 NjllIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxl CisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKQEAgLTI2LDYg KzI2LDcgQEAgT0JKUyA9IFwKIAlyZW9yZGVyYnVmZmVyLm8gXAogCXNuYXBidWlsZC5vIFwKIAl0 YWJsZXN5bmMubyBcCi0Jd29ya2VyLm8KKwl3b3JrZXIubyBcCisJYXBwbHliZ3dyb2tlci5vCiAK IGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9jb21tb24ubWsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOWZjYzYwMDIyNwotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCkBAIC0wLDAgKzEs NzQzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGFwcGx5Ymd3cm9rZXIuYworICogICAgIFN1 cHBvcnQgcm91dGluZXMgZm9yIGFwcGx5aW5nIHhhY3QgYnkgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYworICoKKyAqIFRoaXMgZmlsZSBjb250 YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBzdXBwb3J0IHNldHRpbmcgdXAsIHVz aW5nLAorICogYW5kIHRlYXJpbmcgZG93biBhIEFwcGx5Qmd3b3JrZXJTdGF0ZS4KKyAqIFJlZmVy IHRvIHRoZSBjb21tZW50cyBpbiBmaWxlIGhlYWRlciBvZiBsb2dpY2FsL3dvcmtlci5jIHRvIHNl ZSBtb3JlCisgKiBpbmZvcm1hdGlvbnMgYWJvdXQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisg KgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgorI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCisjaW5j bHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24v b3JpZ2luLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2lu Y2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKyNpbmNs dWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisjZGVmaW5lIFBHX0xPR0lDQUxfQVBQTFlfU0hNX01B R0lDIDB4NzlmYjI0NDcgLy8gVE9ETyBDb25zaWRlciBjaGFuZ2UKKworLyoKKyAqIERTTSBrZXlz IGZvciBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gIFVubGlrZSBvdGhlciBwYXJhbGxlbCBleGVj dXRpb24gY29kZSwKKyAqIHNpbmNlIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgRFNNIGtl eXMgY29uZmxpY3Rpbmcgd2l0aCBwbGFuX25vZGVfaWQgd2UKKyAqIGNhbiB1c2Ugc21hbGwgaW50 ZWdlcnMuCisgKi8KKyNkZWZpbmUgQVBQTFlfQkdXT1JLRVJfS0VZX1NIQVJFRAkxCisjZGVmaW5l IEFQUExZX0JHV09SS0VSX0tFWV9NUQkJMgorCisvKgorICogZW50cnkgZm9yIGEgaGFzaCB0YWJs ZSB3ZSB1c2UgdG8gbWFwIGZyb20geGlkIHRvIG91ciBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgor ICogc3RhdGUuCisgKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5Qmd3b3JrZXJFbnRyeQoreworCVRy YW5zYWN0aW9uSWQgeGlkOworCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlOworfSBBcHBseUJn d29ya2VyRW50cnk7CisKKy8qIEFwcGx5IGJhY2tncm91bmQgd29ya2VycyBoYXNoIHRhYmxlIChp bml0aWFsaXplZCBvbiBmaXJzdCB1c2UpICovCitzdGF0aWMgSFRBQiAqQXBwbHlXb3JrZXJzSGFz aCA9IE5VTEw7CitzdGF0aWMgTGlzdCAqQXBwbHlXb3JrZXJzRnJlZUxpc3QgPSBOSUw7CitzdGF0 aWMgTGlzdCAqQXBwbHlXb3JrZXJzTGlzdCA9IE5JTDsKKworLyoKKyAqIEZpZWxkcyB0byByZWNv cmQgdGhlIHNoYXJlIGluZm9ybWF0aW9ucyBiZXR3ZWVuIG1haW4gYXBwbHkgd29ya2VyIGFuZCBh cHBseQorICogYmFja2dyb3VuZCB3b3JrZXIuCisgKi8KK3ZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJT aGFyZWQgKk15UGFyYWxsZWxTdGF0ZSA9IE5VTEw7CisKK0xpc3QJICAgKnN1YnhhY3RsaXN0ID0g TklMOworCisvKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBzZXR1cCAqLworc3RhdGljIEFwcGx5 Qmd3b3JrZXJTdGF0ZSAqYXBwbHlfYmd3b3JrZXJfc2V0dXAodm9pZCk7CitzdGF0aWMgdm9pZCBh cHBseV9iZ3dvcmtlcl9zZXR1cF9kc20oQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpOworCisv KgorICogTG9vayB1cCB3b3JrZXIgaW5zaWRlIEFwcGx5V29ya2Vyc0hhc2ggZm9yIHJlcXVlc3Rl ZCB4aWQuCisgKgorICogSWYgc3RhcnQgZmxhZyBpcyB0cnVlLCB0cnkgdG8gc3RhcnQgYSBuZXcg d29ya2VyIGlmIG5vdCBmb3VuZCBpbiBoYXNoIHRhYmxlLgorICovCitBcHBseUJnd29ya2VyU3Rh dGUgKgorYXBwbHlfYmd3b3JrZXJfZmluZF9vcl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCwgYm9v bCBzdGFydCkKK3sKKwlib29sCQlmb3VuZDsKKwlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZTsK KwlBcHBseUJnd29ya2VyRW50cnkgKmVudHJ5ID0gTlVMTDsKKworCWlmICghVHJhbnNhY3Rpb25J ZElzVmFsaWQoeGlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKgorCSAqIFdlIGRvbid0IHN0YXJ0 IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciBpZiB3ZSBhcmUgbm90IGluIHN0cmVhbWluZyBhcHBseQor CSAqIG1vZGUuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFN X0FQUExZKQorCQlyZXR1cm4gTlVMTDsKKworCS8qCisJICogV2UgZG9uJ3Qgc3RhcnQgbmV3IGJh Y2tncm91bmQgd29ya2VyIGlmIHVzZXIgaGFzIHNldCBza2lwbHNuIGFzIGl0J3MKKwkgKiBwb3Nz aWJsZSB0aGF0IHVzZXIgd2FudCB0byBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uIEZv cgorCSAqIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgd2UgbmVlZCB0byBzcGlsbCB0aGUgdHJhbnNh Y3Rpb24gdG8gZGlzayBzbyB0aGF0CisJICogd2UgY2FuIGdldCB0aGUgbGFzdCBMU04gb2YgdGhl IHRyYW5zYWN0aW9uIHRvIGp1ZGdlIHdoZXRoZXIgdG8gc2tpcAorCSAqIGJlZm9yZSBzdGFydGlu ZyB0byBhcHBseSB0aGUgY2hhbmdlLgorCSAqLworCWlmIChzdGFydCAmJiAhWExvZ1JlY1B0cklz SW52YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbikpCisJCXJldHVybiBOVUxMOworCisJLyoK KwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGlu IGFwcGx5IGJhY2tncm91bmQKKwkgKiB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0 byBhcHBseSB0aGUgY2hhbmdlIGZvciBhIHJlbGF0aW9uCisJICogdGhhdCBpcyBub3QgaW4gdGhl IFJFQURZIHN0YXRlIChzZWUgc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2UKKwkg KiB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLiBTbywgd2UgZG9uJ3Qg c3RhcnQgbmV3IGFwcGx5CisJICogYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorCSAq LworCWlmIChzdGFydCAmJiAhQWxsVGFibGVzeW5jc1JlYWR5KCkpCisJCXJldHVybiBOVUxMOwor CisJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplIGFwcGx5IHdvcmtlcnMgaGFzaHRh YmxlICovCisJaWYgKEFwcGx5V29ya2Vyc0hhc2ggPT0gTlVMTCkKKwl7CisJCUhBU0hDVEwJCWN0 bDsKKworCQlNZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOworCQljdGwua2V5c2l6ZSA9IHNp emVvZihUcmFuc2FjdGlvbklkKTsKKwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihBcHBseUJnd29y a2VyRW50cnkpOworCQljdGwuaGN4dCA9IEFwcGx5Q29udGV4dDsKKworCQlBcHBseVdvcmtlcnNI YXNoID0gaGFzaF9jcmVhdGUoImxvZ2ljYWwgYXBwbHkgd29ya2VycyBoYXNoIiwgOCwgJmN0bCwK KwkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0K KworCS8qCisJICogRmluZCBlbnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAqLwor CWVudHJ5ID0gaGFzaF9zZWFyY2goQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgc3RhcnQgPyBIQVNI X0VOVEVSIDogSEFTSF9GSU5ELAorCQkJCQkJJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJeworCQll bnRyeS0+d3N0YXRlLT5wc3RhdGUtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0JVU1k7CisJCXJl dHVybiBlbnRyeS0+d3N0YXRlOworCX0KKwllbHNlIGlmICghc3RhcnQpCisJCXJldHVybiBOVUxM OworCisJLyoKKwkgKiBOb3csIHdlIHRyeSB0byBnZXQgYSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl ci4gSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lCisJICogd29ya2VyIGluIHRoZSBpZGxlIGxpc3Qs IHRoZW4gdGFrZSBvbmUuIE90aGVyd2lzZSwgd2UgdHJ5IHRvIHN0YXJ0IGEKKwkgKiBuZXcgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIuCisJICovCisJaWYgKGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vy c0ZyZWVMaXN0KSA+IDApCisJeworCQl3c3RhdGUgPSAoQXBwbHlCZ3dvcmtlclN0YXRlICopIGxs YXN0KEFwcGx5V29ya2Vyc0ZyZWVMaXN0KTsKKwkJQXBwbHlXb3JrZXJzRnJlZUxpc3QgPSBsaXN0 X2RlbGV0ZV9sYXN0KEFwcGx5V29ya2Vyc0ZyZWVMaXN0KTsKKwl9CisJZWxzZQorCXsKKwkJd3N0 YXRlID0gYXBwbHlfYmd3b3JrZXJfc2V0dXAoKTsKKworCQlpZiAod3N0YXRlID09IE5VTEwpCisJ CXsKKwkJCS8qCisJCQkgKiBJZiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgY2Fubm90IGJl IGxhdW5jaGVkLCByZW1vdmUgZW50cnkKKwkJCSAqIGluIGhhc2ggdGFibGUuCisJCQkgKi8KKwkJ CWhhc2hfc2VhcmNoKEFwcGx5V29ya2Vyc0hhc2gsICZ4aWQsIEhBU0hfUkVNT1ZFLCAmZm91bmQp OworCQkJcmV0dXJuIE5VTEw7CisJCX0KKwl9CisKKwkvKiBGaWxsIHVwIHRoZSBoYXNoIGVudHJ5 ICovCisJd3N0YXRlLT5wc3RhdGUtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0JVU1k7CisJd3N0 YXRlLT5wc3RhdGUtPnN0cmVhbV94aWQgPSB4aWQ7CisJZW50cnktPndzdGF0ZSA9IHdzdGF0ZTsK KwllbnRyeS0+eGlkID0geGlkOworCisJcmV0dXJuIHdzdGF0ZTsKK30KKworLyoKKyAqIEFkZCB0 aGUgd29ya2VyIHRvIHRoZSBmcmVlIGxpc3QgYW5kIHJlbW92ZSB0aGUgZW50cnkgZnJvbSBoYXNo IHRhYmxlLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9mcmVlKEFwcGx5Qmd3b3JrZXJTdGF0 ZSAqd3N0YXRlKQoreworCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCVRyYW5zYWN0aW9uSWQgeGlk ID0gd3N0YXRlLT5wc3RhdGUtPnN0cmVhbV94aWQ7CisKKwlBc3NlcnQod3N0YXRlLT5wc3RhdGUt PnN0YXR1cyA9PSBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisKKwlvbGRjdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCWhhc2hfc2VhcmNoKEFwcGx5V29ya2Vy c0hhc2gsICZ4aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKTsKKworCWVsb2coREVCVUcxLCAiYWRkaW5n IGZpbmlzaGVkIGFwcGx5IHdvcmtlciAjJXUgZm9yIHhpZCAldSB0byB0aGUgaWRsZSBsaXN0IiwK KwkJIHdzdGF0ZS0+cHN0YXRlLT5uLCB3c3RhdGUtPnBzdGF0ZS0+c3RyZWFtX3hpZCk7CisKKwlB cHBseVdvcmtlcnNGcmVlTGlzdCA9IGxhcHBlbmQoQXBwbHlXb3JrZXJzRnJlZUxpc3QsIHdzdGF0 ZSk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKK30KKworLyogQXBwbHkgQmFj a2dyb3VuZCBXb3JrZXIgbWFpbiBsb29wICovCitzdGF0aWMgdm9pZAorTG9naWNhbEFwcGx5Qmd3 TG9vcChzaG1fbXFfaGFuZGxlICptcWgsIHZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFyZWQgKnBz dCkKK3sKKwlzaG1fbXFfcmVzdWx0IHNobXFfcmVzOworCVBHUFJPQwkgICAqcmVnaXN0cmFudDsK KwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKwlYTG9nUmVjUHRyCWxhc3RfcmVj ZWl2ZWQgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKworCXJlZ2lzdHJhbnQgPSBCYWNrZW5kUGlkR2V0 UHJvYyhNeUJnd29ya2VyRW50cnktPmJnd19ub3RpZnlfcGlkKTsKKwlTZXRMYXRjaCgmcmVnaXN0 cmFudC0+cHJvY0xhdGNoKTsKKworCS8qCisJICogUHVzaCBhcHBseSBlcnJvciBjb250ZXh0IGNh bGxiYWNrLiBGaWVsZHMgd2lsbCBiZSBmaWxsZWQgZHVyaW5nCisJICogYXBwbHlpbmcgYSBjaGFu Z2UuCisJICovCisJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsK KwllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29u dGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKworCWZvciAoOzspCisJeworCQl2b2lkCSAgICpk YXRhOworCQlTaXplCQlsZW47CisJCWludAkJCWM7CisJCVN0cmluZ0luZm9EYXRhIHM7CisJCU1l bW9yeUNvbnRleHQgb2xkY3R4OworCQlYTG9nUmVjUHRyCXN0YXJ0X2xzbjsKKwkJWExvZ1JlY1B0 cgllbmRfbHNuOworCQlUaW1lc3RhbXBUeiBzZW5kX3RpbWU7CisKKwkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKKworCQkvKiBFbnN1cmUgd2UgYXJlIHJlYWRpbmcgdGhlIGRhdGEgaW50byBvdXIg bWVtb3J5IGNvbnRleHQuICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBs eU1lc3NhZ2VDb250ZXh0KTsKKworCQlzaG1xX3JlcyA9IHNobV9tcV9yZWNlaXZlKG1xaCwgJmxl biwgJmRhdGEsIGZhbHNlKTsKKworCQlpZiAoc2htcV9yZXMgIT0gU0hNX01RX1NVQ0NFU1MpCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJF UkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBt YWluIGFwcGx5IHdvcmtlciIpKSk7CisKKwkJaWYgKGxlbiA9PSAwKQorCQkJYnJlYWs7CisKKwkJ cy5jdXJzb3IgPSAwOworCQlzLm1heGxlbiA9IC0xOworCQlzLmRhdGEgPSAoY2hhciAqKSBkYXRh OworCQlzLmxlbiA9IGxlbjsKKworCQkvKgorCQkgKiBXZSB1c2UgZmlyc3QgYnl0ZSBvZiBtZXNz YWdlIGZvciBhZGRpdGlvbmFsIGNvbW11bmljYXRpb24gYmV0d2VlbgorCQkgKiBtYWluIExvZ2lj YWwgcmVwbGljYXRpb24gd29ya2VyIGFuZCBhcHBseSBiZ3dvcmtlcnMsIHNvIGlmIGl0CisJCSAq IGRpZmZlcnMgZnJvbSAndycsIHRoZW4gcHJvY2VzcyBpdCBmaXJzdC4KKwkJICovCisJCWMgPSBw cV9nZXRtc2dieXRlKCZzKTsKKwkJc3dpdGNoIChjKQorCQl7CisJCQkJLyogRW5kIG1lc3NhZ2Ug b2Ygc3RyZWFtaW5nIGNodW5rICovCisJCQljYXNlIExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RP UDoKKwkJCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBlbmRlZCBwcm9jZXNzaW5nIHN0 cmVhbWluZyBjaHVuaywiCisJCQkJCSAid2FpdGluZyBvbiBzaG1fbXFfcmVjZWl2ZSIsIHBzdC0+ bik7CisKKwkJCQlhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX1JFQURZ KTsKKworCQkJCVNldExhdGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gpOworCisJCQkJaW5fc3Ry ZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNU QVRFX0lETEUsIE5VTEwpOworCQkJCWNvbnRpbnVlOworCQkJY2FzZSAndyc6CisJCQkJYnJlYWs7 CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJbQXBwbHkgQkdXICMldV0gdW5leHBlY3Rl ZCBtZXNzYWdlIFwiJWNcIiIsCisJCQkJCSBwc3QtPm4sIGMpOworCQkJCWJyZWFrOworCQl9CisK KwkJc3RhcnRfbHNuID0gcHFfZ2V0bXNnaW50NjQoJnMpOworCQllbmRfbHNuID0gcHFfZ2V0bXNn aW50NjQoJnMpOworCQlzZW5kX3RpbWUgPSBwcV9nZXRtc2dpbnQ2NCgmcyk7CisKKwkJaWYgKGxh c3RfcmVjZWl2ZWQgPCBzdGFydF9sc24pCisJCQlsYXN0X3JlY2VpdmVkID0gc3RhcnRfbHNuOwor CisJCWlmIChsYXN0X3JlY2VpdmVkIDwgZW5kX2xzbikKKwkJCWxhc3RfcmVjZWl2ZWQgPSBlbmRf bHNuOworCisJCS8qCisJCSAqIFRPIElNUFJPVkU6IERvIHdlIG5lZWQgdG8gZGlzcGxheSB0aGUg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIncworCQkgKiBpbmZvcm1hdGlvbiBpbiBwZ19zdGF0X3Jl cGxpY2F0aW9uID8KKwkJICovCisJCVVwZGF0ZVdvcmtlclN0YXRzKGxhc3RfcmVjZWl2ZWQsIHNl bmRfdGltZSwgZmFsc2UpOworCisJCWFwcGx5X2Rpc3BhdGNoKCZzKTsKKworCQlpZiAoQ29uZmln UmVsb2FkUGVuZGluZykKKwkJeworCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOworCQkJ UHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCX0KKworCQlNZW1vcnlDb250ZXh0U3dp dGNoVG8ob2xkY3R4KTsKKwkJTWVtb3J5Q29udGV4dFJlc2V0KEFwcGx5TWVzc2FnZUNvbnRleHQp OworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BNZW1vcnlDb250ZXh0KTsKKwlNZW1v cnlDb250ZXh0UmVzZXQoQXBwbHlDb250ZXh0KTsKKworCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4 dCBzdGFjayAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsK KworCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGV4aXRpbmciLCBwc3QtPm4pOworCisJ LyogU2lnbmFsIG1haW4gcHJvY2VzcyB0aGF0IHdlIGFyZSBkb25lLiAqLworCVNldExhdGNoKCZy ZWdpc3RyYW50LT5wcm9jTGF0Y2gpOworfQorCisvKgorICogU2V0IHRoZSBleGl0IHN0YXR1cyBz byB0aGF0IHRoZSBtYWluIGFwcGx5IHdvcmtlciBjYW4gcmVhbGl6ZSB3ZSBoYXZlCisgKiBzaHV0 ZG93bi4KKyAqLworc3RhdGljIHZvaWQKK0FwcGx5Qmd3U2h1dGRvd24oaW50IGNvZGUsIERhdHVt IGFyZykKK3sKKwlTcGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTdGF0ZS0+bXV0ZXgpOworCU15 UGFyYWxsZWxTdGF0ZS0+c3RhdHVzID0gQVBQTFlfQkdXT1JLRVJfRVhJVDsKKwlTcGluTG9ja1Jl bGVhc2UoJk15UGFyYWxsZWxTdGF0ZS0+bXV0ZXgpOworCisJZHNtX2RldGFjaCgoZHNtX3NlZ21l bnQgKikgRGF0dW1HZXRQb2ludGVyKGFyZykpOworfQorCisvKgorICogQXBwbHkgQmFja2dyb3Vu ZCBXb3JrZXIgZW50cnkgcG9pbnQKKyAqLwordm9pZAorQXBwbHlCZ3dvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpCit7CisJdm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAqcHN0OworCisJZHNt X2hhbmRsZQloYW5kbGU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7CisJ c2htX21xCSAgICptcTsKKwlzaG1fbXFfaGFuZGxlICptcWg7CisJTWVtb3J5Q29udGV4dCBvbGRj b250ZXh0OworCVJlcE9yaWdpbklkIG9yaWdpbmlkOworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0 dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisK KwkvKiBBdHRhY2ggdG8gc2xvdCAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJf c2xvdCk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wTWVtb3J5Q29udGV4dCk7CisKKwkv KiBMb2FkIHRoZSBzdWJzY3JpcHRpb24gaW50byBwZXJzaXN0ZW50IG1lbW9yeSBjb250ZXh0LiAq LworCUFwcGx5Q29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0 LAorCQkJCQkJCQkJCSAiQXBwbHlDb250ZXh0IiwKKwkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVM VF9TSVpFUyk7CisKKwkvKgorCSAqIEluaXQgdGhlIEFwcGx5TWVzc2FnZUNvbnRleHQgd2hpY2gg d2UgY2xlYW4gdXAgYWZ0ZXIgZWFjaCByZXBsaWNhdGlvbgorCSAqIHByb3RvY29sIG1lc3NhZ2Uu CisJICovCisJQXBwbHlNZXNzYWdlQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShBcHBs eUNvbnRleHQsCisJCQkJCQkJCQkJCQkiQXBwbHlNZXNzYWdlQ29udGV4dCIsCisJCQkJCQkJCQkJ CQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZyAq LworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJcHFz aWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsK KworCS8qCisJICogQ29ubmVjdCB0byB0aGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQu CisJICoKKwkgKiBUaGUgYmFja2VuZCB0aGF0IHJlZ2lzdGVyZWQgdGhpcyB3b3JrZXIgcGFzc2Vk IHVzIHRoZSBJRCBvZiBhIHNoYXJlZAorCSAqIG1lbW9yeSBzZWdtZW50IHRvIHdoaWNoIHdlIG11 c3QgYXR0YWNoIGZvciBmdXJ0aGVyIGluc3RydWN0aW9ucy4gIEluCisJICogb3JkZXIgdG8gYXR0 YWNoIHRvIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSwgd2UgbmVlZCBhIHJlc291cmNlIG93bmVyLgor CSAqIE9uY2Ugd2UndmUgbWFwcGVkIHRoZSBzZWdtZW50IGluIG91ciBhZGRyZXNzIHNwYWNlLCBh dHRhY2ggdG8gdGhlIHRhYmxlCisJICogb2YgY29udGVudHMgc28gd2UgY2FuIGxvY2F0ZSB0aGUg dmFyaW91cyBkYXRhIHN0cnVjdHVyZXMgd2UnbGwgbmVlZCB0bworCSAqIGZpbmQgd2l0aGluIHRo ZSBzZWdtZW50LgorCSAqLworCUN1cnJlbnRSZXNvdXJjZU93bmVyID0gUmVzb3VyY2VPd25lckNy ZWF0ZShOVUxMLCAiTG9naWNhbCBhcHBseSB3b3JrZXIiKTsKKwltZW1jcHkoJmhhbmRsZSwgTXlC Z3dvcmtlckVudHJ5LT5iZ3dfZXh0cmEsIHNpemVvZihkc21faGFuZGxlKSk7CisJc2VnID0gZHNt X2F0dGFjaChoYW5kbGUpOworCWlmIChzZWcgPT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJ CQkgZXJybXNnKCJ1bmFibGUgdG8gbWFwIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50Iikp KTsKKwl0b2MgPSBzaG1fdG9jX2F0dGFjaChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNt X3NlZ21lbnRfYWRkcmVzcyhzZWcpKTsKKwlpZiAodG9jID09IE5VTEwpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFU RSksCisJCQkJIGVycm1zZygiYmFkIG1hZ2ljIG51bWJlciBpbiBkeW5hbWljIHNoYXJlZCBtZW1v cnkgc2VnbWVudCIpKSk7CisKKwliZWZvcmVfc2htZW1fZXhpdChBcHBseUJnd1NodXRkb3duLCBQ b2ludGVyR2V0RGF0dW0oc2VnKSk7CisKKwkvKiBMb29rIHVwIHRoZSBwYXJhbGxlbCBzdGF0ZS4g Ki8KKwlwc3QgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIEFQUExZX0JHV09SS0VSX0tFWV9TSEFSRUQs IGZhbHNlKTsKKwlNeVBhcmFsbGVsU3RhdGUgPSBwc3Q7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0 aGUgbWVzc2FnZSBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgQVBQTFlf QkdXT1JLRVJfS0VZX01RLCBmYWxzZSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9j KTsKKwltcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogQ29ubmVjdCB0 byBvdXIgZGF0YWJhc2UuICovCisJQmFja2dyb3VuZFdvcmtlckluaXRpYWxpemVDb25uZWN0aW9u QnlPaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAorCQkJCQkJCQkJCQkgIE15TG9naWNhbFJl cFdvcmtlci0+dXNlcmlkLAorCQkJCQkJCQkJCQkgIDApOworCisJLyoKKwkgKiBTZXQgdGhlIGNs aWVudCBlbmNvZGluZyB0byB0aGUgZGF0YWJhc2UgZW5jb2RpbmcsIHNpbmNlIHRoYXQgaXMgd2hh dAorCSAqIHRoZSBsZWFkZXIgd2lsbCBleHBlY3QuCisJICovCisJU2V0Q2xpZW50RW5jb2Rpbmco R2V0RGF0YWJhc2VFbmNvZGluZygpKTsKKworCXN0cmVhbV94aWQgPSBwc3QtPnN0cmVhbV94aWQ7 CisKKwlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250 ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCU15U3Vic2NyaXB0aW9uID0gR2V0U3Vic2Ny aXB0aW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHRydWUpOworCWlmICghTXlTdWJzY3Jp cHRpb24pCisJeworCQllcmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0 aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1IHdpbGwgbm90ICIKKwkJCQkJCSJz dGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAi LAorCQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwkJcHJvY19leGl0KDApOwor CX0KKworCU15U3Vic2NyaXB0aW9uVmFsaWQgPSB0cnVlOworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjb250ZXh0KTsKKworCS8qIFNldHVwIHN5bmNocm9ub3VzIGNvbW1pdCBhY2NvcmRpbmcg dG8gdGhlIHVzZXIncyB3aXNoZXMgKi8KKwlTZXRDb25maWdPcHRpb24oInN5bmNocm9ub3VzX2Nv bW1pdCIsIE15U3Vic2NyaXB0aW9uLT5zeW5jY29tbWl0LAorCQkJCQlQR0NfQkFDS0VORCwgUEdD X1NfT1ZFUlJJREUpOworCisJLyogS2VlcCB1cyBpbmZvcm1lZCBhYm91dCBzdWJzY3JpcHRpb24g Y2hhbmdlcy4gKi8KKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhTVUJTQ1JJUFRJT05P SUQsCisJCQkJCQkJCSAgc3Vic2NyaXB0aW9uX2NoYW5nZV9jYiwKKwkJCQkJCQkJICAoRGF0dW0p IDApOworCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBTZXR1cCByZXBsaWNh dGlvbiBvcmlnaW4gdHJhY2tpbmcuICovCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlz bnByaW50ZihvcmlnaW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSksICJwZ18ldSIsIE15U3Vic2Ny aXB0aW9uLT5vaWQpOworCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUs IHRydWUpOworCWlmICghT2lkSXNWYWxpZChvcmlnaW5pZCkpCisJCW9yaWdpbmlkID0gcmVwbG9y aWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7CisKKwkvKgorCSAqIFRoZSBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciBkb2Vzbid0IG5lZWQgdG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0aW9uCisJICog b3JpZ2luIHdoaWNoIHdhcyBhbHJlYWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIgcHJvY2Vzcy4K KwkgKi8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIGZhbHNlKTsKKwlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3JpZ2luaWQ7CisJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVk IGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQKKwkgKiBtZXNzYWdlLgorCSAqLworCWFwcGx5X2Vy cm9yX2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAoQXBwbHlD b250ZXh0LAorCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisKKwkvKgorCSAqIEluZGlj YXRlIHRoYXQgd2UncmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHJlYWR5IHRvIGJlZ2luIHRoZSBt YWluIHBhcnQKKwkgKiBvZiB0aGUgYXBwbHkgb3BlcmF0aW9uLgorCSAqLworCWFwcGx5X2Jnd29y a2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfQVRUQUNIRUQpOworCisJZWxvZyhERUJVRzEs ICJbQXBwbHkgQkdXICMldV0gc3RhcnRlZCIsIHBzdC0+bik7CisKKwlMb2dpY2FsQXBwbHlCZ3dM b29wKG1xaCwgcHN0KTsKKworCS8qCisJICogV2UncmUgZG9uZS4gIEV4cGxpY2l0bHkgZGV0YWNo IHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgc28gdGhhdCB3ZQorCSAqIGRvbid0IGdldCBhIHJl c291cmNlIGxlYWsgd2FybmluZyBhdCBjb21taXQgdGltZS4gIFRoaXMgd2lsbCBmaXJlIGFueQor CSAqIG9uX2RzbV9kZXRhY2ggY2FsbGJhY2tzIHdlJ3ZlIHJlZ2lzdGVyZWQsIGFzIHdlbGwuICBP bmNlIHRoYXQncyBkb25lLAorCSAqIHdlIGNhbiBnbyBhaGVhZCBhbmQgZXhpdC4KKwkgKi8KKwlk c21fZGV0YWNoKHNlZyk7CisJcHJvY19leGl0KDApOworfQorCisvKgorICogU2V0IHVwIGEgZHlu YW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEgY29udHJvbCBy ZWdpb24gdGhhdCBjb250YWlucyBhIEFwcGx5Qmd3b3JrZXJTaGFyZWQsCisgKiBwbHVzIG9uZSBy ZWdpb24gcGVyIG1lc3NhZ2UgcXVldWUuIFRoZXJlIGFyZSBhcyBtYW55IG1lc3NhZ2UgcXVldWVz IGFzCisgKiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9i Z3dvcmtlcl9zZXR1cF9kc20oQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpCit7CisJc2htX3Rv Y19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2ht X3RvYyAgICAqdG9jOworCUFwcGx5Qmd3b3JrZXJTaGFyZWQgKnBzdDsKKwlzaG1fbXEJICAgKm1x OworCWludDY0CQlxdWV1ZV9zaXplID0gMTYwMDAwMDAwOyAvKiAxNiBNQiBmb3Igbm93ICovCisK KwkvKgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgor CSAqIEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGlu ZyBvZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1 bmsgc2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUg bG9jYXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHdlIG5lZWQKKwkgKiBhbm90aGVyIGtleSB0byB0 cmFjayB0aGUgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJc2htX3RvY19p bml0aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6 ZW9mKEFwcGx5Qmd3b3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCAo U2l6ZSkgcXVldWVfc2l6ZSk7CisKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDEgKyAxKTsK KwlzZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhlIHNoYXJl ZCBtZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMuICovCisJ c2VnID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJdG9jID0gc2htX3Rv Y19jcmVhdGUoUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Mo c2VnKSwKKwkJCQkJCSBzZWdzaXplKTsKKworCS8qIFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4g Ki8KKwlwc3QgPSBzaG1fdG9jX2FsbG9jYXRlKHRvYywgc2l6ZW9mKEFwcGx5Qmd3b3JrZXJTaGFy ZWQpKTsKKwlTcGluTG9ja0luaXQoJnBzdC0+bXV0ZXgpOworCXBzdC0+c3RhdHVzID0gQVBQTFlf QkdXT1JLRVJfQlVTWTsKKwlwc3QtPnN0cmVhbV94aWQgPSBzdHJlYW1feGlkOworCXBzdC0+biA9 IGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0xpc3QpICsgMTsKKworCXNobV90b2NfaW5zZXJ0KHRv YywgQVBQTFlfQkdXT1JLRVJfS0VZX1NIQVJFRCwgcHN0KTsKKworCS8qIFNldCB1cCBvbmUgbWVz c2FnZSBxdWV1ZSBwZXIgd29ya2VyLCBwbHVzIG9uZS4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUo c2htX3RvY19hbGxvY2F0ZSh0b2MsIChTaXplKSBxdWV1ZV9zaXplKSwKKwkJCQkJICAgKFNpemUp IHF1ZXVlX3NpemUpOworCXNobV90b2NfaW5zZXJ0KHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZX01R LCBtcSk7CisJc2htX21xX3NldF9zZW5kZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhl IHF1ZXVlcy4gKi8KKwl3c3RhdGUtPm1xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywg TlVMTCk7CisKKwkvKiBSZXR1cm4gcmVzdWx0cyB0byBjYWxsZXIuICovCisJd3N0YXRlLT5kc21f c2VnID0gc2VnOworCXdzdGF0ZS0+cHN0YXRlID0gcHN0OworfQorCisvKgorICogU3RhcnQgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIgcHJvY2VzcyBhbmQgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBm b3IgaXQuCisgKi8KK3N0YXRpYyBBcHBseUJnd29ya2VyU3RhdGUgKgorYXBwbHlfYmd3b3JrZXJf c2V0dXAodm9pZCkKK3sKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJYm9vbAkJbGF1bmNo ZWQ7CisJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGU7CisKKwllbG9nKERFQlVHMSwgInNldHRp bmcgdXAgYXBwbHkgd29ya2VyICMldSIsIGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0xpc3QpICsg MSk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7 CisKKwl3c3RhdGUgPSAoQXBwbHlCZ3dvcmtlclN0YXRlICopIHBhbGxvYzAoc2l6ZW9mKEFwcGx5 Qmd3b3JrZXJTdGF0ZSkpOworCisJLyogU2V0dXAgc2hhcmVkIG1lbW9yeSAqLworCWFwcGx5X2Jn d29ya2VyX3NldHVwX2RzbSh3c3RhdGUpOworCisJbGF1bmNoZWQgPSBsb2dpY2FscmVwX3dvcmtl cl9sYXVuY2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAorCQkJCQkJCQkJCU15U3Vic2NyaXB0 aW9uLT5vaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsCisJCQkJCQkJCQkJTXlM b2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJ CQlkc21fc2VnbWVudF9oYW5kbGUod3N0YXRlLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQp CisJeworCQkvKiBXYWl0IGZvciB3b3JrZXIgdG8gYXR0YWNoLiAqLworCQlhcHBseV9iZ3dvcmtl cl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VSX0FUVEFDSEVEKTsKKworCQlBcHBseVdv cmtlcnNMaXN0ID0gbGFwcGVuZChBcHBseVdvcmtlcnNMaXN0LCB3c3RhdGUpOworCX0KKwllbHNl CisJeworCQlwZnJlZSh3c3RhdGUpOworCQl3c3RhdGUgPSBOVUxMOworCX0KKworCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiB3c3RhdGU7Cit9CisKKy8qCisg KiBTZW5kIHRoZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIg dmlhIHNoYXJlZC1tZW1vcnkgcXVldWUuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3NlbmRf ZGF0YShBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSwgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQg KmRhdGEpCit7CisJc2htX21xX3Jlc3VsdCByZXN1bHQ7CisKKwlyZXN1bHQgPSBzaG1fbXFfc2Vu ZCh3c3RhdGUtPm1xX2hhbmRsZSwgbmJ5dGVzLCBkYXRhLCBmYWxzZSwgdHJ1ZSk7CisKKwlpZiAo cmVzdWx0ICE9IFNITV9NUV9TVUNDRVNTKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2co ImNvdWxkIG5vdCBzZW5kIHR1cGxlcyB0byBzaGFyZWQtbWVtb3J5IHF1ZXVlIikpKTsKK30KKwor LyoKKyAqIFdhaXQgdW50aWwgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBy ZWFjaGVzIHRoZQorICogJ3dhaXRfZm9yX3N0YXR1cycKKyAqLwordm9pZAorYXBwbHlfYmd3b3Jr ZXJfd2FpdF9mb3IoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUsCisJCQkJCQlBcHBseUJnd29y a2VyU3RhdHVzIHdhaXRfZm9yX3N0YXR1cykKK3sKKwlmb3IgKDs7KQorCXsKKwkJY2hhcgkJc3Rh dHVzOworCisJCVNwaW5Mb2NrQWNxdWlyZSgmd3N0YXRlLT5wc3RhdGUtPm11dGV4KTsKKwkJc3Rh dHVzID0gd3N0YXRlLT5wc3RhdGUtPnN0YXR1czsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3c3RhdGUt PnBzdGF0ZS0+bXV0ZXgpOworCisJCS8qIERvbmUgaWYgYWxyZWFkeSBpbiBjb3JyZWN0IHN0YXR1 cy4gKi8KKwkJaWYgKHN0YXR1cyA9PSB3YWl0X2Zvcl9zdGF0dXMpCisJCQlicmVhazsKKworCQkv KiBJZiBhbnkgd29ya2VycyAob3IgdGhlIHBvc3RtYXN0ZXIpIGhhdmUgZGllZCwgd2UgaGF2ZSBm YWlsZWQuICovCisJCWlmIChzdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfRVhJVCkKKwkJCWVyZXBv cnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJiYWNrZ3JvdW5kIHdvcmtlciAldSBmYWlsZWQgdG8g YXBwbHkgdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJCXdzdGF0ZS0+cHN0YXRlLT5uLCB3c3RhdGUt PnBzdGF0ZS0+c3RyZWFtX3hpZCkpKTsKKworCQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8K KwkJV2FpdExhdGNoKE15TGF0Y2gsIFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs IDAsCisJCQkJICBXQUlUX0VWRU5UX0xPR0lDQUxfQVBQTFlfV09SS0VSX1NUQVRFX0NIQU5HRSk7 CisKKwkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCisJCVJlc2V0TGF0 Y2goTXlMYXRjaCk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxl IHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwl9Cit9CisK Ky8qCisgKiBDaGVjayB0aGUgc3RhdHVzIG9mIHdvcmtlcnMgYW5kIHJlcG9ydCBhbiBlcnJvciBp ZiBhbnkgYXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyIGhhcyBleGl0ZWQgdW5leHBlY3RlZGx5 LgorICoKKyAqIEV4aXQgaWYgYW55IHJlbGF0aW9uIGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUg YW5kIGlmIGFueSB3b3JrZXIgaXMgaGFuZGxpbmcKKyAqIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rp b24gYXQgdGhlIHNhbWUgdGltZS4gQmVjYXVzZSBmb3Igc3RyZWFtaW5nCisgKiB0cmFuc2FjdGlv bnMgdGhhdCBpcyBiZWluZyBhcHBsaWVkIGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB3ZSBj YW5ub3QKKyAqIGRlY2lkZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRp b24gdGhhdCBpcyBub3QgaW4gdGhlIFJFQURZCisgKiBzdGF0ZSAoc2VlIHNob3VsZF9hcHBseV9j aGFuZ2VzX2Zvcl9yZWwpIGFzIHdlIHdvbid0IGtub3cgcmVtb3RlX2ZpbmFsX2xzbgorICogYnkg dGhhdCB0aW1lLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXModm9pZCkK K3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpIHx8IE15U3Vi c2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX0FQUExZKQorCQlyZXR1cm47CisKKwlmb3Jl YWNoKGxjLCBBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3Rh dGUgPSAoQXBwbHlCZ3dvcmtlclN0YXRlICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogV2Ug ZG9uJ3QgbG9jayBoZXJlIGFzIGluIHRoZSB3b3JzdCBjYXNlIHdlIHdpbGwganVzdCBkZXRlY3Qg dGhlCisJCSAqIGZhaWx1cmUgb2Ygd29ya2VyIGEgYml0IGxhdGVyLgorCQkgKi8KKwkJaWYgKHdz dGF0ZS0+cHN0YXRlLT5zdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfRVhJVCkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVf U1RBVEUpLAorCQkJCQkgZXJybXNnKCJiYWNrZ3JvdW5kIHdvcmtlciAldSBleGl0ZWQgdW5leHBl Y3RlZGx5IiwKKwkJCQkJCQl3c3RhdGUtPnBzdGF0ZS0+bikpKTsKKwl9CisKKwlpZiAobGlzdF9s ZW5ndGgoQXBwbHlXb3JrZXJzRnJlZUxpc3QpICE9IGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0xp c3QpICYmCisJCSFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwl7CisJCWVyZXBvcnQoTE9HLAorCQkJ CShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VycyBmb3Igc3Vic2NyaXB0 aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQiLAorCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAor CQkJCSBlcnJkZXRhaWwoIkNhbm5vdCBoYW5kbGUgc3RyZWFtZWQgcmVwbGljYXRpb24gdHJhbnNh Y3Rpb24gYnkgYXBwbHkgIgorCQkJCQkJICAgImJnd29ya2VycyB1bnRpbCBhbGwgdGFibGVzIGFy ZSBzeW5jaHJvbml6ZWQiKSkpOworCisJCXByb2NfZXhpdCgwKTsKKwl9Cit9CisKKy8qIFNldCB0 aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgc3RhdHVzICovCit2b2lkCithcHBseV9iZ3dvcmtl cl9zZXRfc3RhdHVzKEFwcGx5Qmd3b3JrZXJTdGF0dXMgc3RhdHVzKQoreworCWlmICghYW1fYXBw bHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOworCisJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMl dV0gc2V0IHN0YXR1cyB0byAlZCIsIE15UGFyYWxsZWxTdGF0ZS0+biwgc3RhdHVzKTsKKworCVNw aW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFN0YXRlLT5tdXRleCk7CisJTXlQYXJhbGxlbFN0YXRl LT5zdGF0dXMgPSBzdGF0dXM7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU3RhdGUtPm11 dGV4KTsKK30KKworLyoKKyAqIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGluIGFw cGx5IGJhY2tncm91bmQgd29ya2VyIGlmIG5lZWRlZC4KKyAqCisgKiBJbnNpZGUgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgd2UgY2FuIGZpZ3VyZSBvdXQgdGhhdCBuZXcgc3VidHJhbnNhY3Rpb24g d2FzCisgKiBzdGFydGVkIGlmIG5ldyBjaGFuZ2UgYXJyaXZlZCB3aXRoIGRpZmZlcmVudCB4aWQu IEluIHRoYXQgY2FzZSB3ZSBjYW4gZGVmaW5lCisgKiBuYW1lZCBzYXZlcG9pbnQsIHNvIHRoYXQg d2Ugd2VyZSBhYmxlIHRvIGNvbW1pdC9yb2xsYmFjayBpdCBzZXBhcmF0ZWx5CisgKiBsYXRlci4K KyAqIFNwZWNpYWwgY2FzZSBpcyBpZiB0aGUgZmlyc3QgY2hhbmdlIGNvbWVzIGZyb20gc3VidHJh bnNhY3Rpb24sIHRoZW4KKyAqIHdlIGNoZWNrIHRoYXQgY3VycmVudF94aWQgZGlmZmVycyBmcm9t IHN0cmVhbV94aWQuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQo VHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCkKK3sKKwlpZiAoY3VycmVudF94aWQgIT0gc3RyZWFt X3hpZCAmJgorCQkhbGlzdF9tZW1iZXJfaW50KHN1YnhhY3RsaXN0LCAoaW50KSBjdXJyZW50X3hp ZCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJc3BuYW1lW01BWFBHUEFU SF07CisKKwkJc25wcmludGYoc3BuYW1lLCBNQVhQR1BBVEgsICJzYXZlcG9pbnRfZm9yX3hpZF8l dSIsIGN1cnJlbnRfeGlkKTsKKworCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBkZWZp bmluZyBzYXZlcG9pbnQgJXMiLAorCQkJIE15UGFyYWxsZWxTdGF0ZS0+biwgc3BuYW1lKTsKKwor CQlEZWZpbmVTYXZlcG9pbnQoc3BuYW1lKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisKKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJCXN1 YnhhY3RsaXN0ID0gbGFwcGVuZF9pbnQoc3VieGFjdGxpc3QsIChpbnQpIGN1cnJlbnRfeGlkKTsK KwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCmluZGV4IGJkNWY3OGNmOWEuLmU4MTA4NzVkZGQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTczLDYg KzczLDcgQEAgc3RhdGljIHZvaWQgbG9naWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUs IERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNv ZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9p ZCk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3Jr ZXIgKndvcmtlcik7CitzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFs KExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CiAKIHN0YXRpYyBib29sIG9uX2NvbW1pdF9sYXVu Y2hlcl93YWtldXAgPSBmYWxzZTsKIApAQCAtMjIzLDYgKzIyNCwxMCBAQCBsb2dpY2FscmVwX3dv cmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKIAl7CiAJ CUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKIAorCQkv KiBXZSBvbmx5IG5lZWQgbWFpbiBhcHBseSB3b3JrZXIgb3IgdGFibGUgc3luYyB3b3JrZXIgaGVy ZSAqLworCQlpZiAody0+c3Vid29ya2VyKQorCQkJY29udGludWU7CisKIAkJaWYgKHctPmluX3Vz ZSAmJiB3LT5zdWJpZCA9PSBzdWJpZCAmJiB3LT5yZWxpZCA9PSByZWxpZCAmJgogCQkJKCFvbmx5 X3J1bm5pbmcgfHwgdy0+cHJvYykpCiAJCXsKQEAgLTI1OSwxMSArMjY0LDExIEBAIGxvZ2ljYWxy ZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiB9CiAKIC8qCi0g KiBTdGFydCBuZXcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgorICogU3Rh cnQgbmV3IGJhY2tncm91bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KICAqLwotdm9pZAorYm9vbAog bG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIg KnN1Ym5hbWUsIE9pZCB1c2VyaWQsCi0JCQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9pZCByZWxp ZCwgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIgYmd3Owog CUJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd19oYW5kbGU7CkBAIC0yNzMsNiArMjc4LDEwIEBA IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFy ICpzdWJuYW1lLCBPaWQgdXNlcmlkLAogCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9IE5VTEw7 CiAJaW50CQkJbnN5bmN3b3JrZXJzOwogCVRpbWVzdGFtcFR6IG5vdzsKKwlib29sCQlpc19zdWJ3 b3JrZXIgPSAoc3Vid29ya2VyX2RzbSAhPSBEU01fSEFORExFX0lOVkFMSUQpOworCisJLyogV2Ug ZG9uJ3Qgc3VwcG9ydCB0YWJsZSBzeW5jIGluIHN1YndvcmtlciAqLworCUFzc2VydCghKGlzX3N1 YndvcmtlciAmJiBPaWRJc1ZhbGlkKHJlbGlkKSkpOwogCiAJZXJlcG9ydChERUJVRzEsCiAJCQko ZXJybXNnX2ludGVybmFsKCJzdGFydGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Ig c3Vic2NyaXB0aW9uIFwiJXNcIiIsCkBAIC0zNTAsNyArMzU5LDcgQEAgcmV0cnk6CiAJaWYgKE9p ZElzVmFsaWQocmVsaWQpICYmIG5zeW5jd29ya2VycyA+PSBtYXhfc3luY193b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24pCiAJewogCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsK LQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyoKQEAgLTM2NCw3ICszNzMsNyBA QCByZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVE RUQpLAogCQkJCSBlcnJtc2coIm91dCBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBzbG90 cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzLiIpKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwog CX0KIAogCS8qIFByZXBhcmUgdGhlIHdvcmtlciBzbG90LiAqLwpAQCAtMzc5LDYgKzM4OCw3IEBA IHJldHJ5OgogCXdvcmtlci0+cmVsc3RhdGUgPSBTVUJSRUxfU1RBVEVfVU5LTk9XTjsKIAl3b3Jr ZXItPnJlbHN0YXRlX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCXdvcmtlci0+c3RyZWFtX2Zp bGVzZXQgPSBOVUxMOworCXdvcmtlci0+c3Vid29ya2VyID0gaXNfc3Vid29ya2VyOwogCXdvcmtl ci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3Jr ZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVj dl90aW1lKTsKQEAgLTM5NiwxOSArNDA2LDMwIEBAIHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5E X0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJnd19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFy dF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRmKGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1df TUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJH V19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKworCWlmICghaXNfc3Vid29ya2VyKQorCQlz bnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1h aW4iKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExF TiwgIkFwcGx5Qmd3b3JrZXJNYWluIik7CisKIAlpZiAoT2lkSXNWYWxpZChyZWxpZCkpCiAJCXNu cHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgc3luYyAldSIsIHN1YmlkLCByZWxpZCk7Ci0J ZWxzZQorCWVsc2UgaWYgKCFpc19zdWJ3b3JrZXIpCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwg QkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3Jp cHRpb24gJXUiLCBzdWJpZCk7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19N QVhMRU4sCisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIGJhY2tncm91bmQgYXBwbHkgd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gJXUgIiwgc3ViaWQpOwogCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwg QkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CiAKIAliZ3cuYmd3X3Jl c3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJUOwogCWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15 UHJvY1BpZDsKIAliZ3cuYmd3X21haW5fYXJnID0gSW50MzJHZXREYXR1bShzbG90KTsKIAorCWlm IChpc19zdWJ3b3JrZXIpCisJCW1lbWNweShiZ3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwg c2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwogCWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdv cmtlcigmYmd3LCAmYmd3X2hhbmRsZSkpCiAJewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2Vy LCBzbyBjbGVhbiB1cCB0aGUgd29ya2VyIHNsb3QuICovCkBAIC00MjEsMTEgKzQ0MiwxMyBAQCBy ZXRyeToKIAkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQp LAogCQkJCSBlcnJtc2coIm91dCBvZiBiYWNrZ3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBl cnJoaW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4i KSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRp bCBpdCBhdHRhY2hlcy4gKi8KIAlXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2Vy LCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKKworCXJldHVybiB0cnVlOwogfQogCiAvKgpAQCAt NDM2LDcgKzQ1OSw2IEBAIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBP aWQgcmVsaWQpCiB7CiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwotCXVpbnQxNgkJZ2VuZXJh dGlvbjsKIAogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7 CiAKQEAgLTQ0OSw2ICs0NzEsMjIgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQs IE9pZCByZWxpZCkKIAkJcmV0dXJuOwogCX0KIAorCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50 ZXJuYWwod29ya2VyKTsKKworCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwor fQorCisvKgorICogV29ya2hvcnNlIGZvciBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKCkgYW5kIGxv Z2ljYWxyZXBfd29ya2VyX2RldGFjaCgpLiBTdG9wCisgKiB0aGUgd29ya2VyIGFuZCB3YWl0IGZv ciBpdCB0byBkaWUuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2lu dGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKK3sKKwl1aW50MTYJCWdlbmVyYXRpb247 CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2spKTsKKwogCS8q CiAJICogUmVtZW1iZXIgd2hpY2ggZ2VuZXJhdGlvbiB3YXMgb3VyIHdvcmtlciBzbyB3ZSBjYW4g Y2hlY2sgaWYgd2hhdCB3ZSBzZWUKIAkgKiBpcyBzdGlsbCB0aGUgc2FtZSBvbmUuCkBAIC00ODUs MTAgKzUyMyw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQp CiAJCSAqIGRpZmZlcmVudCwgbWVhbmluZyB0aGF0IGEgZGlmZmVyZW50IHdvcmtlciBoYXMgdGFr ZW4gdGhlIHNsb3QuCiAJCSAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8IHdvcmtlci0+Z2Vu ZXJhdGlvbiAhPSBnZW5lcmF0aW9uKQotCQl7Ci0JCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBX b3JrZXJMb2NrKTsKIAkJCXJldHVybjsKLQkJfQogCiAJCS8qIFdvcmtlciBoYXMgYXNzaWduZWQg cHJvYywgc28gaXQgaGFzIHN0YXJ0ZWQuICovCiAJCWlmICh3b3JrZXItPnByb2MpCkBAIC01MjIs OCArNTU3LDYgQEAgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkK IAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCX0K LQotCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogfQogCiAvKgpAQCAtNTk5 LDYgKzYzMiwyOSBAQCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpCiBzdGF0aWMg dm9pZAogbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpCiB7CisJLyoKKwkgKiBJZiB3ZSBh cmUgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBzdG9wIGFsbCB0aGUgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXJzCisJICogd2Ugc3RhcnRlZCBiZWZvcmUuCisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBX b3JrZXItPnN1YndvcmtlcikKKwl7CisJCUxpc3QJICAgKndvcmtlcnM7CisJCUxpc3RDZWxsICAg KmxjOworCisJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7 CisKKwkJd29ya2VycyA9IGxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE15TG9naWNhbFJlcFdvcmtl ci0+c3ViaWQsIHRydWUpOworCQlmb3JlYWNoKGxjLCB3b3JrZXJzKQorCQl7CisJCQlMb2dpY2Fs UmVwV29ya2VyICp3ID0gKExvZ2ljYWxSZXBXb3JrZXIgKikgbGZpcnN0KGxjKTsKKworCQkJaWYg KHctPnN1YndvcmtlcikKKwkJCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHcpOwor CQl9CisKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisJfQorCiAJLyog QmxvY2sgY29uY3VycmVudCBhY2Nlc3MuICovCiAJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29y a2VyTG9jaywgTFdfRVhDTFVTSVZFKTsKIApAQCAtNjIxLDYgKzY3Nyw3IEBAIGxvZ2ljYWxyZXBf d29ya2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKQogCXdvcmtlci0+dXNlcmlk ID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnN1YmlkID0gSW52YWxpZE9pZDsKIAl3b3JrZXItPnJl bGlkID0gSW52YWxpZE9pZDsKKwl3b3JrZXItPnN1YndvcmtlciA9IGZhbHNlOwogfQogCiAvKgpA QCAtODY4LDcgKzkyNSw3IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQkJ CQl3YWl0X3RpbWUgPSB3YWxfcmV0cmlldmVfcmV0cnlfaW50ZXJ2YWw7CiAKIAkJCQkJbG9naWNh bHJlcF93b3JrZXJfbGF1bmNoKHN1Yi0+ZGJpZCwgc3ViLT5vaWQsIHN1Yi0+bmFtZSwKLQkJCQkJ CQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQpOworCQkJCQkJCQkJCQkgc3ViLT5vd25lciwg SW52YWxpZE9pZCwgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQl9CiAJCQl9CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IDIxOTM3YWIyZDMuLjkyNzMwMTFi MGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwpAQCAtMTA2Mywx MiArMTA2MywyMSBAQCBSZXBsaWNhdGlvbk9yaWdpbkV4aXRDbGVhbnVwKGludCBjb2RlLCBEYXR1 bSBhcmcpCiAgKiBhcnJheSBkb2Vzbid0IGhhdmUgdG8gYmUgc2VhcmNoZWQgd2hlbiBjYWxsaW5n CiAgKiByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZSgpLgogICoKLSAqIE9idmlvdXNseSBvbmx5 IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNzIGFuZCB0aGUgY3Vy cmVudAorICogTm9ybWFsbHkgb25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBleGlzdCBw ZXIgcHJvY2VzcyBhbmQgdGhlIGN1cnJlbnQKICAqIGNhY2hlZCB2YWx1ZSBjYW4gb25seSBiZSBz ZXQgYWdhaW4gYWZ0ZXIgdGhlIHByZXZpb3VzIHZhbHVlIGlzIHRvcm4gZG93bgogICogd2l0aCBy ZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKS4KKyAqCisgKiBIb3dldmVyLCBJZiBtdXN0X2FjcXVp cmUgaXMgZmFsc2UsIHdlIGFsbG93IHByb2Nlc3MgdG8gZ2V0IHRoZSBzbG90IHdoaWNoIGlzCisg KiBhbHJlYWR5IGFjcXVpcmVkIGJ5IG90aGVyIHByb2Nlc3MuIEl0J3Mgc2FmZSBiZWNhdXNlIDEp IFRoZSBvbmx5IGNhbGxlcgorICogKGFwcGx5IGJhY2tncm91bmQgd29ya2Vycykgd2lsbCBtYWlu dGFpbiB0aGUgY29tbWl0IG9yZGVyIGJ5IGFsbG93aW5nIG9ubHkKKyAqIG9uZSBwcm9jZXNzIHRv IGNvbW1pdCBhdCBhIHRpbWUsIHNvIG5vIHR3byB3b3JrZXJzIHdpbGwgYmUgb3BlcmF0aW5nIG9u IHRoZQorICogc2FtZSBvcmlnaW4gYXQgdGhlIHNhbWUgdGltZSAoc2VlIGNvbW1lbnRzIGluIGxv Z2ljYWwvd29ya2VyLmMpLiAyKSBFdmVuCisgKiB0aG91Z2ggd2UgdHJ5IHRvIGFkdmFuY2UgdGhl IHNlc3Npb24ncyBvcmlnaW4gY29uY3VycmVudGx5LCBpdCdzIHNhZmUgdG8gZG8KKyAqIHNvIGFz IHdlIGNoYW5nZS9hZHZhbmNlIHRoZSBzZXNzaW9uX29yaWdpbiBMU05zIHVuZGVyIHJlcGxpY2F0 ZV9zdGF0ZQorICogTFdMb2NrLgogICovCiB2b2lkCi1yZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAo UmVwT3JpZ2luSWQgbm9kZSkKK3JlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBu b2RlLCBib29sIG11c3RfYWNxdWlyZSkKIHsKIAlzdGF0aWMgYm9vbCByZWdpc3RlcmVkX2NsZWFu dXA7CiAJaW50CQkJaTsKQEAgLTExMTAsNyArMTExOSw3IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9z ZXR1cChSZXBPcmlnaW5JZCBub2RlKQogCQlpZiAoY3Vyc3RhdGUtPnJvaWRlbnQgIT0gbm9kZSkK IAkJCWNvbnRpbnVlOwogCi0JCWVsc2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAhPSAwKQor CQllbHNlIGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCAmJiBtdXN0X2FjcXVpcmUpCiAJ CXsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VT RSksCkBAIC0xMTQxLDcgKzExNTAsMTQgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9y aWdpbklkIG5vZGUpCiAKIAlBc3NlcnQoc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+cm9pZGVu dCAhPSBJbnZhbGlkUmVwT3JpZ2luSWQpOwogCi0Jc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+ YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJaWYgKG11c3RfYWNxdWlyZSkKKwkJc2Vzc2lvbl9y ZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJZWxzZSBpZiAoc2Vz c2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPT0gMCkKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAor CQkJCSBlcnJtc2coImNvdWxkIG5vdCBmaW5kIGNvcnJlY3QgcmVwbGljYXRpb24gc3RhdGUgc2xv dCBmb3IgcmVwbGljYXRpb24gb3JpZ2luIHdpdGggT0lEICV1IGZvciBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciIsCisJCQkJCQlub2RlKSwKKwkJCQkgZXJyaGludCgiVGhlcmUgaXMgbm8gcmVwbGlj YXRpb24gc3RhdGUgc2xvdCBzZXQgYnkgaXRzIG1haW4gYXBwbHkgd29ya2VyLiIpKSk7CiAKIAlM V0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uT3JpZ2luTG9jayk7CiAKQEAgLTEzMjEsNyArMTMzNyw3 IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9uX3NldHVwKFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAluYW1lID0gdGV4dF90b19jc3RyaW5nKCh0ZXh0ICopIERhdHVtR2V0UG9pbnRlcihQR19H RVRBUkdfREFUVU0oMCkpKTsKIAlvcmlnaW4gPSByZXBsb3JpZ2luX2J5X25hbWUobmFtZSwgZmFs c2UpOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4pOworCXJlcGxvcmlnaW5fc2Vz c2lvbl9zZXR1cChvcmlnaW4sIHRydWUpOwogCiAJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9 IG9yaWdpbjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK aW5kZXggNjcwYzZmY2FkYS4uOGZmYmE3ZTJlNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC01NjgsNyArNTY4LDggQEAgcHJvY2Vzc19zeW5jaW5n X3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIAkJCQkJCQkJCQkJCSBN eVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5uYW1lLAog CQkJCQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAotCQkJCQkJCQkJCQkJIHJz dGF0ZS0+cmVsaWQpOworCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQsCisJCQkJCQkJCQkJCQkg RFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQkJCWhlbnRyeS0+bGFzdF9zdGFydF90aW1lID0gbm93 OwogCQkJCQl9CiAJCQkJfQpAQCAtNTg5LDYgKzU5MCw5IEBAIHByb2Nlc3Nfc3luY2luZ190YWJs ZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB2b2lkCiBwcm9jZXNzX3N5bmNp bmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB7CisJaWYgKE15TG9naWNhbFJlcFdv cmtlci0+c3Vid29ya2VyKQorCQlyZXR1cm47CisKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigp KQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9zeW5jKGN1cnJlbnRfbHNuKTsKIAllbHNl CkBAIC0xMjczLDcgKzEyNzcsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0 ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkgKiB0aW1lIHRoaXMgdGFibGVzeW5jIHdhcyBsYXVuY2hl ZC4KIAkJICovCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZh bHNlKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdp bl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCB0cnVlKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbiA9IG9yaWdpbmlkOwogCQkqb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9u X2dldF9wcm9ncmVzcyhmYWxzZSk7CiAKQEAgLTEzODQsNyArMTM4OCw3IEBAIExvZ2ljYWxSZXBT eW5jVGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCQkJCQkgICB0cnVl IC8qIGdvIGJhY2t3YXJkICovICwgdHJ1ZSAvKiBXQUwgbG9nICovICk7CiAJCVVubG9ja1JlbGF0 aW9uT2lkKFJlcGxpY2F0aW9uT3JpZ2luUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CiAK LQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNz aW9uX3NldHVwKG9yaWdpbmlkLCB0cnVlKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9 IG9yaWdpbmlkOwogCX0KIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwppbmRleCBmYzIxMGE5ZTdiLi4yMGM3ODY1Mjc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTIyLDggKzIyLDI1IEBACiAgKiBTVFJFQU1FRCBUUkFO U0FDVElPTlMKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogU3RyZWFtZWQgdHJhbnNhY3Rp b25zIChsYXJnZSB0cmFuc2FjdGlvbnMgZXhjZWVkaW5nIGEgbWVtb3J5IGxpbWl0IG9uIHRoZQot ICogdXBzdHJlYW0pIGFyZSBub3QgYXBwbGllZCBpbW1lZGlhdGVseSwgYnV0IGluc3RlYWQsIHRo ZSBkYXRhIGlzIHdyaXR0ZW4KLSAqIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVk IGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisgKiB1cHN0cmVhbSkgYXJl IGFwcGxpZWQgdmlhIG9uZSBvZiB0d28gYXBwcm9hY2hlcy4KKyAqCisgKiAxKSBTZXBhcmF0ZSBi YWNrZ3JvdW5kIHdvcmtlcnMKKyAqCisgKiBBc3NpZ24gYSBuZXcgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgKGlmIGF2YWlsYWJsZSkgYXMgc29vbiBhcyB0aGUgeGFjdCdzCisgKiBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQgY2hhbmdl cyB0byB0aGlzCisgKiBuZXcgd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LiBXZSBrZWVwIHRoaXMg d29ya2VyIGFzc2lnbmVkIHRpbGwgdGhlCisgKiB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2 ZWQgYW5kIGFsc28gd2FpdCBmb3IgdGhlIHdvcmtlciB0byBmaW5pc2ggYXQKKyAqIGNvbW1pdC4g VGhpcyBwcmVzZXJ2ZXMgY29tbWl0IG9yZGVyaW5nIGFuZCBhdm9pZHMgd3JpdGluZyB0byBhbmQg cmVhZGluZworICogZnJvbSBmaWxlIGluIG1vc3QgY2FzZXMuIFdlIHN0aWxsIG5lZWQgdG8gc3Bp bGwgaWYgdGhlcmUgaXMgbm8gd29ya2VyCisgKiBhdmFpbGFibGUuIFdlIGFsc28gbmVlZCB0byBh bGxvdyBzdHJlYW1fc3RvcCB0byBjb21wbGV0ZSBieSB0aGUgYmFja2dyb3VuZAorICogd29ya2Vy IHRvIGF2b2lkIGRlYWRsb2NrcyBiZWNhdXNlIFQtMSdzIGN1cnJlbnQgc3RyZWFtIG9mIGNoYW5n ZXMgY2FuIHVwZGF0ZQorICogcm93cyBpbiBjb25mbGljdGluZyBvcmRlciB3aXRoIFQtMidzIG5l eHQgc3RyZWFtIG9mIGNoYW5nZXMuCisgKgorICogMikgV3JpdGUgdG8gdGVtcG9yYXJ5IGZpbGVz IGFuZCBhcHBseSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcworICoKKyAqIElmIG5vIHdv cmtlciBpcyBhdmFpbGFibGUgdG8gaGFuZGxlIHN0cmVhbWVkIHRyYW5zYWN0aW9uLCB0aGUgZGF0 YSBpcworICogd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBv bmNlIHdoZW4gdGhlIGZpbmFsIGNvbW1pdAorICogYXJyaXZlcy4KICAqCiAgKiBVbmxpa2UgdGhl IHJlZ3VsYXIgKG5vbi1zdHJlYW1lZCkgY2FzZSwgaGFuZGxpbmcgc3RyZWFtZWQgdHJhbnNhY3Rp b25zIGhhcwogICogdG8gaGFuZGxlIGFib3J0cyBvZiBib3RoIHRoZSB0b3BsZXZlbCB0cmFuc2Fj dGlvbiBhbmQgc3VidHJhbnNhY3Rpb25zLiBUaGlzCkBAIC0yMTksMjAgKzIzNiw3IEBAIHR5cGVk ZWYgc3RydWN0IEFwcGx5RXhlY3V0aW9uRGF0YQogCVBhcnRpdGlvblR1cGxlUm91dGluZyAqcHJv dXRlOwkvKiBwYXJ0aXRpb24gcm91dGluZyBpbmZvICovCiB9IEFwcGx5RXhlY3V0aW9uRGF0YTsK IAotLyogU3RydWN0IGZvciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGlu Zm9ybWF0aW9uICovCi10eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKLXsKLQlM b2dpY2FsUmVwTXNnVHlwZSBjb21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KLQlMb2dpY2FsUmVw UmVsTWFwRW50cnkgKnJlbDsKLQotCS8qIFJlbW90ZSBub2RlIGluZm9ybWF0aW9uICovCi0JaW50 CQkJcmVtb3RlX2F0dG51bTsJLyogLTEgaWYgaW52YWxpZCAqLwotCVRyYW5zYWN0aW9uSWQgcmVt b3RlX3hpZDsKLQlYTG9nUmVjUHRyCWZpbmlzaF9sc247Ci0JY2hhcgkgICAqb3JpZ2luX25hbWU7 Ci19IEFwcGx5RXJyb3JDYWxsYmFja0FyZzsKLQotc3RhdGljIEFwcGx5RXJyb3JDYWxsYmFja0Fy ZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQorQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5 X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiB7CiAJLmNvbW1hbmQgPSAwLAogCS5yZWwgPSBOVUxMLApA QCAtMjQyLDcgKzI0Niw3IEBAIHN0YXRpYyBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJy b3JfY2FsbGJhY2tfYXJnID0KIAkub3JpZ2luX25hbWUgPSBOVUxMLAogfTsKIAotc3RhdGljIE1l bW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5VTEw7CitNZW1vcnlDb250ZXh0IEFw cGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOwogTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQgPSBO VUxMOwogCiAvKiBwZXIgc3RyZWFtIGNvbnRleHQgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMg Ki8KQEAgLTI1MSwyNyArMjU1LDM4IEBAIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxTdHJl YW1pbmdDb250ZXh0ID0gTlVMTDsKIFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2 Q29ubiA9IE5VTEw7CiAKIFN1YnNjcmlwdGlvbiAqTXlTdWJzY3JpcHRpb24gPSBOVUxMOwotc3Rh dGljIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOworYm9vbAkJTXlTdWJzY3JpcHRp b25WYWxpZCA9IGZhbHNlOwogCiBib29sCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsK IHN0YXRpYyBYTG9nUmVjUHRyIHJlbW90ZV9maW5hbF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsK IAogLyogZmllbGRzIHZhbGlkIG9ubHkgd2hlbiBwcm9jZXNzaW5nIHN0cmVhbWVkIHRyYW5zYWN0 aW9uICovCi1zdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworYm9v bAkJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAotc3RhdGljIFRyYW5zYWN0aW9u SWQgc3RyZWFtX3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworVHJhbnNhY3Rpb25JZCBzdHJl YW1feGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CitzdGF0aWMgQXBwbHlCZ3dvcmtlclN0YXRl ICpzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKKworLyogY2hlY2sgaWYgd2UgYXJlIGFwcGx5 aW5nIHRoZSB0cmFuc2FjdGlvbiBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciAqLworI2RlZmlu ZSBhcHBseV9iZ3dvcmtlcl9hY3RpdmUoKSAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYgc3Ry ZWFtX2FwcGx5X3dvcmtlciAhPSBOVUxMKQorCisvKgorICogVGhlIG51bWJlciBvZiBjaGFuZ2Vz IGR1cmluZyBvbmUgc3RyZWFtaW5nIGJsb2NrIChvbmx5IGZvciBhcHBseSBiYWNrZ3JvdW5kCisg KiB3b3JrZXJzKQorICovCitzdGF0aWMgdWludDMyIG5jaGFuZ2VzID0gMDsKIAogLyoKICAqIFdl IGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyAoSU5TRVJULCBV UERBVEUsIGV0Yy4pIGZvcgogICogdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5z YWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVzIHRoZSBzdWJza2lwbHNuLgogICogT25jZSB3ZSBz dGFydCBza2lwcGluZyBjaGFuZ2VzLCB3ZSBkb24ndCBzdG9wIGl0IHVudGlsIHdlIHNraXAgYWxs IGNoYW5nZXMgb2YKICAqIHRoZSB0cmFuc2FjdGlvbiBldmVuIGlmIHBnX3N1YnNjcmlwdGlvbiBp cyB1cGRhdGVkIGFuZCBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbgotICogZ2V0cyBjaGFuZ2VkIG9y IHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMs IHdlCi0gKiBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2lu Y2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CisgKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVy aW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcyAoc3RyZWFtaW5n ID0gb24pLAorICogd2UgZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFu Z2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAogICogdG8gc2tpcCBhcHBseWluZyB0 aGUgY2hhbmdlcyB3aGVuIHN0YXJ0aW5nIHRvIGFwcGx5IGNoYW5nZXMuIFRoZSBzdWJza2lwbHNu IGlzCiAgKiBjbGVhcmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBza2lwcGluZyB0aGUgdHJhbnNhY3Rp b24gb3IgYXBwbHlpbmcgbm9uLWVtcHR5CiAgKiB0cmFuc2FjdGlvbi4gVGhlIGxhdHRlciBwcmV2 ZW50cyB0aGUgbWlzdGFrZW5seSBzcGVjaWZpZWQgc3Vic2tpcGxzbiBmcm9tCi0gKiBiZWluZyBs ZWZ0LgorICogYmVpbmcgbGVmdC4gTm90ZSB0aGF0IHdlIGNhbm5vdCBza2lwIHRoZSBzdHJlYW1p bmcgdHJhbnNhY3Rpb24gaW4gYXBwbHkgbW9kZSwKKyAqIGJlY2F1c2Ugd2UgY2Fubm90IGdldCB0 aGUgZmluaXNoIExTTiBiZWZvcmUgYXBwbHlpbmcgdGhlIGNoYW5nZXMuCiAgKi8KIHN0YXRpYyBY TG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVm aW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQo c2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAgLTMyNCw5ICszMzksNiBAQCBzdGF0aWMgdm9pZCBt YXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBEaXNhYmxlU3Vi c2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKIAotLyogcHJvdG90eXBlIG5lZWRlZCBiZWNhdXNlIG9m IHN0cmVhbV9jb21taXQgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8g cyk7Ci0KIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJl cENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNl cnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAkJCQkJCQkJCQkgUmVzdWx0 UmVsSW5mbyAqcmVsaW5mbywKQEAgLTM1OSw3ICszNzEsNiBAQCBzdGF0aWMgdm9pZCBzdG9wX3Nr aXBwaW5nX2NoYW5nZXModm9pZCk7CiBzdGF0aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tp cF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBl cnJvciBjYWxsYmFjayAqLwotc3RhdGljIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAq YXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRy YW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogCkBAIC00MjYsNDEgKzQzNyw3NiBA QCBlbmRfcmVwbGljYXRpb25fc3RlcCh2b2lkKQogfQogCiAvKgotICogSGFuZGxlIHN0cmVhbWVk IHRyYW5zYWN0aW9ucy4KKyAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgZm9yIGJvdGgg bWFpbiBhcHBseSB3b3JrZXIgYW5kIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlci4KICAqCi0g KiBJZiBpbiBzdHJlYW1pbmcgbW9kZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJh bnNhY3Rpb24pLCB3ZQotICogc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHBy b3BlciB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKyAqIEluIHN0cmVhbWluZyBjYXNlIChyZWNlaXZp bmcgYSBibG9jayBvZiBzdHJlYW1lZCB0cmFuc2FjdGlvbiksIGZvcgorICogU1VCU1RSRUFNX09O IG1vZGUsIHdlIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9w bGV2ZWwKKyAqIHRyYW5zYWN0aW9uLCBhbmQgZm9yIFNVQlNUUkVBTV9BUFBMWSBtb2RlLCB3ZSBz ZW5kIHRoZSBjaGFuZ2VzIHRvIGJhY2tncm91bmQKKyAqIGFwcGx5IHdvcmtlciAoTE9HSUNBTF9S RVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19UWVBFIGNoYW5nZXMgd2lsbAorICog YWxzbyBiZSBhcHBsaWVkIGluIG1haW4gYXBwbHkgd29ya2VyKS4KICAqCi0gKiBSZXR1cm5zIHRy dWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1v ZGUpLgorICogRm9yIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbnMsIHJldHVybnMgZmFsc2U7Cisg KiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIHRydWUgaWYgaW4gbWFpbiBhcHBs eSB3b3JrZXIgKGV4Y2VwdCB3ZQorICogYXBwbHkgc3RyZWFtZWQgdHJhbnNhY3Rpb24gaW4gImFw cGx5IiBtb2RlIGFuZCBhZGRyZXNzCisgKiBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gb3IgTE9H SUNBTF9SRVBfTVNHX1RZUEUgY2hhbmdlcyksIGZhbHNlIG90aGVyd2lzZS4KICAqLwogc3RhdGlj IGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rp b24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklk IGN1cnJlbnRfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKIAkvKiBub3QgaW4gc3RyZWFt aW5nIG1vZGUgKi8KLQlpZiAoIWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCWlmICghKGluX3N0 cmVhbWVkX3RyYW5zYWN0aW9uIHx8IGFtX2FwcGx5X2Jnd29ya2VyKCkpKQogCQlyZXR1cm4gZmFs c2U7CiAKLQlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwpOwogCUFzc2VydChUcmFuc2FjdGlvbklk SXNWYWxpZChzdHJlYW1feGlkKSk7CiAKIAkvKgogCSAqIFdlIHNob3VsZCBoYXZlIHJlY2VpdmVk IFhJRCBvZiB0aGUgc3VieGFjdCBhcyB0aGUgZmlyc3QgcGFydCBvZiB0aGUKIAkgKiBtZXNzYWdl LCBzbyBleHRyYWN0IGl0LgogCSAqLwotCXhpZCA9IHBxX2dldG1zZ2ludChzLCA0KTsKKwljdXJy ZW50X3hpZCA9IHBxX2dldG1zZ2ludChzLCA0KTsKIAotCWlmICghVHJhbnNhY3Rpb25JZElzVmFs aWQoeGlkKSkKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKGN1cnJlbnRfeGlkKSkKIAkJZXJl cG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJ CQkJIGVycm1zZ19pbnRlcm5hbCgiaW52YWxpZCB0cmFuc2FjdGlvbiBJRCBpbiBzdHJlYW1lZCBy ZXBsaWNhdGlvbiB0cmFuc2FjdGlvbiIpKSk7CiAKLQkvKiBBZGQgdGhlIG5ldyBzdWJ4YWN0IHRv IHRoZSBhcnJheSAodW5sZXNzIGFscmVhZHkgdGhlcmUpLiAqLwotCXN1YnhhY3RfaW5mb19hZGQo eGlkKTsKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8qIGRlZmluZSBhIHNhdmVw b2ludCBmb3IgYSBzdWJ4YWN0IGlmIG5lZWRlZC4gKi8KKwkJYXBwbHlfYmd3b3JrZXJfc3VieGFj dF9pbmZvX2FkZChjdXJyZW50X3hpZCk7CisKKwkJcmV0dXJuIGZhbHNlOworCX0KKwllbHNlIGlm IChhcHBseV9iZ3dvcmtlcl9hY3RpdmUoKSkKKwl7CisJCS8qCisJCSAqIElmIHdlIGRlY2lkZWQg dG8gYXBwbHkgdGhlIGNoYW5nZXMgb2YgdGhpcyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseQorCQkg KiBiYWNrZ3JvdW5kIHdvcmtlciwgcGFzcyB0aGUgZGF0YSB0byB0aGUgd29ya2VyLgorCQkgKi8K KwkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIHMtPmxlbiwg cy0+ZGF0YSk7CisJCW5jaGFuZ2VzICs9IDE7CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRo ZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCS8q CisJCSAqIFhYWCBUaGUgcHVibGlzaGVyIHNpZGUgZG9lc24ndCBhbHdheXMgc2VuZCByZWxhdGlv bi90eXBlIHVwZGF0ZQorCQkgKiBtZXNzYWdlcyBhZnRlciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uLCBzbyBhbHNvIHVwZGF0ZSB0aGUKKwkJICogcmVsYXRpb24vdHlwZSBpbiBtYWluIGFwcGx5 IHdvcmtlciBoZXJlLiBTZWUgZnVuY3Rpb24KKwkJICogY2xlYW51cF9yZWxfc3luY19jYWNoZS4K KwkJICovCisJCWlmIChhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIHx8CisJCQlh Y3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpCisJCQlyZXR1cm4gZmFsc2U7CisJfQorCWVs c2UKKwl7CisJCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxy ZWFkeSB0aGVyZSkuICovCisJCXN1YnhhY3RfaW5mb19hZGQoY3VycmVudF94aWQpOworCisJCS8q IHdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLworCQlzdHJlYW1fd3JpdGVf Y2hhbmdlKGFjdGlvbiwgcyk7CisJfQogCiAJcmV0dXJuIHRydWU7CiB9CkBAIC04NDQsNiArODkw LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAKIAlhcHBseV9oYW5kbGVf Y29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9m IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVj a19zdGF0dXMoKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5j aHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRf ZGF0YS5lbmRfbHNuKTsKIApAQCAtODk4LDcgKzk0Nyw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJl X2ludGVybmFsKExvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkgKiBC ZWdpblRyYW5zYWN0aW9uQmxvY2sgaXMgbmVjZXNzYXJ5IHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5z YWN0aW9uQmxvY2sKIAkgKiBjYWxsZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9j ayBiZWxvdy4KIAkgKi8KLQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwlpZiAoIUlzVHJhbnNh Y3Rpb25CbG9jaygpKQorCQlCZWdpblRyYW5zYWN0aW9uQmxvY2soKTsKKwogCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOyAvKiBDb21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5k LiAqLwogCiAJLyoKQEAgLTk1MCw2ICsxMDAxLDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3Ry aW5nSW5mbyBzKQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBDaGVj ayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBs eV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0 IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5n X3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEwNjQsMTAgKzExMTgsNiBAQCBh cHBseV9oYW5kbGVfcm9sbGJhY2tfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFu ZGxlIFNUUkVBTSBQUkVQQVJFLgotICoKLSAqIExvZ2ljIGlzIGluIHR3byBwYXJ0czoKLSAqIDEu IFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucwotICogMi4gTWFyayB0aGUgdHJhbnNh Y3Rpb24gYXMgcHJlcGFyZWQKICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1f cHJlcGFyZShTdHJpbmdJbmZvIHMpCkBAIC0xMDg4LDI0ICsxMTM4LDcwIEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9w cmVwYXJlKHMsICZwcmVwYXJlX2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qo cHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVC VUcxLCAicmVjZWl2ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVw YXJlX2RhdGEueGlkKTsKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8qIE1hcmsg dGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9p bnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3Bl cmF0aW9ucy4gKi8KLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHBy ZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwog Ci0JLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCi0JYXBwbHlfaGFuZGxl X3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisJCXBnc3RhdF9yZXBvcnRfc3RhdChm YWxzZSk7CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJbGlzdF9mcmVlKHN1Ynhh Y3RsaXN0KTsKKwkJc3VieGFjdGxpc3QgPSBOSUw7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFs c2UpOworCQlhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJTklTSEVE KTsKKwl9CisJZWxzZQorCXsKKwkJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUgPSBhcHBseV9i Z3dvcmtlcl9maW5kX29yX3N0YXJ0KHByZXBhcmVfZGF0YS54aWQsIGZhbHNlKTsKIAotCXN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJZWxvZyhERUJVRzEsICJy ZWNlaXZlZCBwcmVwYXJlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsCisJCQkgcHJlcGFy ZV9kYXRhLnhpZCk7CisKKwkJLyoKKwkJICogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIu IENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMKKwkJICogdHJhbnNhY3Rpb24gaW4gYSBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKwkJICovCisJCWlmICh3c3RhdGUpCisJCXsKKwkJCWFw cGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCWFw cGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0ZSwgQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOwor CQkJYXBwbHlfYmd3b3JrZXJfZnJlZSh3c3RhdGUpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQo ZmFsc2UpOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOwor CQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29y a2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4KKwkJCSAqIHNlcmlhbGl6ZWQgdG8gZmls ZSwgcmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zLgorCQkJICovCisJCQlhcHBseV9z cG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xz bik7CisKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBw bHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisKKwkJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCisJ CQlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisKKwkJCWluX3Jl bW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJCQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGgg c2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51 cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJ fQorCX0KIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCXN0cmVhbV9hcHBseV93 b3JrZXIgPSBOVUxMOwogCi0JLyogdW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hh bmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOworCS8qIENoZWNrIHRoZSBzdGF0 dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLworCWFwcGx5X2Jnd29ya2Vy X2NoZWNrX3N0YXR1cygpOwogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5n IHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHBy ZXBhcmVfZGF0YS5lbmRfbHNuKTsKQEAgLTExNTUsMTUgKzEyNTEsNiBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09M X1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFS VCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0g c3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3Ry ZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0 Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2Vz LiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwg dXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3Qg aW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0KIAkvKiBub3RpZnkgaGFu ZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2FjdGlvbiAqLwogCWlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIApAQCAtMTE3NywzNiArMTI2NCw5MiBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAogCXNldF9hcHBseV9lcnJv cl9jb250ZXh0X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCisJaWYgKGFt X2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKgorCQkgKiBNYWtlIHN1cmUgdGhlIGhhbmRsZSBh cHBseV9kaXNwYXRjaCBtZXRob2RzIGFyZSBhd2FyZSB3ZSdyZSBpbiBhCisJCSAqIHJlbW90ZSB0 cmFuc2FjdGlvbi4KKwkJICovCisJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IHRydWU7CisKKwkJ LyogSWYgd2UgYXJlIGluIGEgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGJlZ2luIHRoZSB0cmFu c2FjdGlvbiAqLworCQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOworCQltYXliZV9yZXJl YWRfc3Vic2NyaXB0aW9uKCk7CisKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJQmVn aW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJ CXJldHVybjsKKwl9CisKIAkvKgotCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9m aWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKLQkgKiB1c2VkIGZvciB0aGUg ZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50 Ci0JICogY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5n IG1lc3NhZ2UgZnJvbSBhbnkKLQkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRo aXMgYW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCi0JICogTm93LCB3ZSBjb3VsZCBj cmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0Ci0J ICogdGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJICog VGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuIENoZWNrIGlmIHRoZXJlIGlzIGFueSBmcmVl IGFwcGx5CisJICogYmFja2dyb3VuZCB3b3JrZXIgd2UgY2FuIHVzZSB0byBwcm9jZXNzIHRoaXMg dHJhbnNhY3Rpb24uCiAJICovCi0JaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQgPT0gTlVMTCkKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gYXBwbHlfYmd3b3JrZXJfZmluZF9v cl9zdGFydChzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKworCWlmIChzdHJlYW1fYXBwbHlf d29ya2VyKQogCXsKLQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCS8qCisJCSAqIElmIHdlIGhh dmUgZm91bmQgYSBmcmVlIHdvcmtlciBvciBpZiB3ZSBhcmUgYWxyZWFkeSBhcHBseWluZyB0aGlz CisJCSAqIHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB0aGVuIHdl IHBhc3MgdGhlIGRhdGEgdG8KKwkJICogdGhhdCB3b3JrZXIuCisJCSAqLworCQlpZiAoZmlyc3Rf c2VnbWVudCkKKwkJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShzdHJlYW1fYXBwbHlfd29ya2Vy LCBzLT5sZW4sIHMtPmRhdGEpOwogCi0JCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhB cHBseUNvbnRleHQpOworCQluY2hhbmdlcyA9IDA7CisJCWVsb2coREVCVUcxLCAic3RhcnRpbmcg c3RyZWFtaW5nIG9mIHhpZCAldSIsIHN0cmVhbV94aWQpOworCX0KIAotCQlNeUxvZ2ljYWxSZXBX b3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxlU2V0KSk7Ci0JCUZpbGVT ZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCS8qCisJICogSWYg bm8gd29ya2VyIGlzIGF2YWlsYWJsZSBmb3IgdGhlIGZpcnN0IHN0cmVhbSBzdGFydCwgd2Ugc3Rh cnQgdG8KKwkgKiBzZXJpYWxpemUgYWxsIHRoZSBjaGFuZ2VzIG9mIHRoZSB0cmFuc2FjdGlvbi4K KwkgKi8KKwllbHNlCisJeworCQkvKgorCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVh bSBzdGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlCisJCSAqIGNvbW1pdHRlZCBvbiB0aGUg c3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbgorCQkgKiB3aGlj aCBjYXNlIGl0IHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNz YWdlcy4KKwkJICogV2UgbmVlZCB0aGUgdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZm aWxlLCB1c2VkIGZvcgorCQkgKiBzZXJpYWxpemluZyB0aGUgc3RyZWFtaW5nIGRhdGEgYW5kIHN1 YnhhY3QgaW5mby4KKwkJICovCisJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAotCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKLQl9CisJCS8qCisJCSAqIEluaXRpYWxpemUgdGhl IHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwKKwkJ ICogYmUgdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0 ZSBpdCBpbiBhCisJCSAqIHBlcm1hbmVudCBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUg dmVyeSBmaXJzdCBzdHJlYW1pbmcKKwkJICogbWVzc2FnZSBmcm9tIGFueSB0cmFuc2FjdGlvbiBh bmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90aGVyCisJCSAqIHN0cmVhbWluZyB0cmFuc2Fj dGlvbnMuIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQKKwkJICog b2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dCB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBpdCB3 aWxsIGV2ZXIKKwkJICogYmUgdXNlZC4KKwkJICovCisJCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXIt PnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJCXsKKwkJCU1lbW9yeUNvbnRleHQgb2xkY3R4Owog Ci0JLyogb3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiAqLwotCXN0cmVh bV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rf c2VnbWVudCk7CisJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0 KTsKIAotCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5n IHN1YnhhY3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFjdF9pbmZvX3Jl YWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQlNeUxvZ2ljYWxS ZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxlU2V0KSk7CisJCQlG aWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKIAotCXBnc3Rh dF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CisJCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY3R4KTsKKwkJfQogCi0JZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJLyog b3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiAqLworCQlzdHJlYW1fb3Bl bl9maWxlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21l bnQpOworCisJCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0 aW5nIHN1YnhhY3QgZmlsZSAqLworCQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQlzdWJ4YWN0X2lu Zm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKworCQllbmRf cmVwbGljYXRpb25fc3RlcCgpOworCX0KKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVf UlVOTklORywgTlVMTCk7CiB9CiAKIC8qCkBAIC0xMjIwLDQ0ICsxMzYzLDQ3IEBAIGFwcGx5X2hh bmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9U T0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBTVE9QIG1lc3Nh Z2Ugd2l0aG91dCBTVFJFQU0gU1RBUlQiKSkpOwogCi0JLyoKLQkgKiBDbG9zZSB0aGUgZmlsZSB3 aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91dAot CSAqIHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCi0JICovCi0Jc3VieGFj dF9pbmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwotCXN0 cmVhbV9jbG9zZV9maWxlKCk7CisJaWYgKGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgpKQorCXsKKwkJ Y2hhcgkJYWN0aW9uID0gTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVE9QOwogCi0JLyogV2UgbXVz dCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCi0JQXNzZXJ0KElzVHJhbnNhY3Rp b25TdGF0ZSgpKTsKKwkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3Jr ZXIsIDEsICZhY3Rpb24pOworCQlhcHBseV9iZ3dvcmtlcl93YWl0X2ZvcihzdHJlYW1fYXBwbHlf d29ya2VyLCBBUFBMWV9CR1dPUktFUl9SRUFEWSk7CiAKLQkvKiBDb21taXQgdGhlIHBlci1zdHJl YW0gdHJhbnNhY3Rpb24gKi8KLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJZWxvZyhE RUJVRzEsICJzdG9wcGVkIHN0cmVhbWluZyBvZiB4aWQgJXUsICV1IGNoYW5nZXMgc3RyZWFtZWQi LCBzdHJlYW1feGlkLCBuY2hhbmdlcyk7CisJfQorCWVsc2UKKwl7CisJCS8qCisJCSAqIENsb3Nl IHRoZSBmaWxlIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0 aW9uCisJCSAqIGFib3V0IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisJ CSAqLworCQlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3Ry ZWFtX3hpZCk7CisJCXN0cmVhbV9jbG9zZV9maWxlKCk7CiAKLQlpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbiA9IGZhbHNlOworCQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3Rh dGUgKi8KKwkJQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKworCQkvKiBDb21taXQgdGhl IHBlci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CiAKLQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KLQlNZW1vcnlDb250ZXh0UmVzZXQo TG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQg Ki8KKwkJTWVtb3J5Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKKwl9CisK Kwlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCXN0cmVhbV9hcHBseV93b3JrZXIg PSBOVUxMOwogCiAJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKIAly ZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KIAogLyoKLSAqIEhhbmRsZSBTVFJF QU0gYWJvcnQgbWVzc2FnZS4KKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRo ZSB0cmFuc2FjdGlvbiB3YXMgc3BpbGxlZCB0byBkaXNrLgogICovCiBzdGF0aWMgdm9pZAotYXBw bHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCitzZXJpYWxpemVfc3RyZWFtX2Fi b3J0KFRyYW5zYWN0aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHN1YnhpZCkKIHsKLQlUcmFuc2Fj dGlvbklkIHhpZDsKLQlUcmFuc2FjdGlvbklkIHN1YnhpZDsKLQotCWlmIChpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbikKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RP Q09MX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3Nh Z2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7Ci0KLQlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fi b3J0KHMsICZ4aWQsICZzdWJ4aWQpOwotCiAJLyoKIAkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRo ZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KIAkgKiBqdXN0 IGRlbGV0ZSB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGluZm8uCkBAIC0xMzM5LDggKzE0ODUs MTE4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQllbmRfcmVw bGljYXRpb25fc3RlcCgpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAl9Cit9CiAK LQlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKKy8qCisgKiBIYW5kbGUgU1RSRUFN IEFCT1JUIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fi b3J0KFN0cmluZ0luZm8gcykKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklk IHN1YnhpZDsKKworCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJZXJlcG9ydChFUlJP UiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJIGVycm1z Z19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7 CisKKwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZ4aWQsICZzdWJ4aWQpOworCisJ aWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQllbG9nKERFQlVHMSwgIltBcHBseSBCR1cg IyV1XSBhYm9ydGluZyBjdXJyZW50IHRyYW5zYWN0aW9uIHhpZD0ldSwgc3VieGlkPSV1IiwKKwkJ CSBNeVBhcmFsbGVsU3RhdGUtPm4sIEdldEN1cnJlbnRUcmFuc2FjdGlvbklkSWZBbnkoKSwKKwkJ CSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25JZCgpKTsKKworCQkvKgorCQkgKiBJZiB0aGUgdHdv IFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwK KwkJICogc28ganVzdCBmcmVlIHRoZSBzdWJ4YWN0bGlzdC4KKwkJICovCisJCWlmIChzdWJ4aWQg PT0geGlkKQorCQl7CisJCQlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1YnhpZCwgSW52 YWxpZFhMb2dSZWNQdHIpOworCisJCQlBYm9ydEN1cnJlbnRUcmFuc2FjdGlvbigpOworCisJCQlF bmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCisJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJbGlzdF9mcmVlKHN1 YnhhY3RsaXN0KTsKKwkJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCQlhcHBseV9iZ3dvcmtlcl9z ZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwkJfQorCQllbHNlCisJCXsKKwkJ CS8qCisJCQkgKiBPSywgc28gaXQncyBhIHN1YnhhY3QuIFJvbGxiYWNrIHRvIHRoZSBzYXZlcG9p bnQuCisJCQkgKgorCQkJICogV2UgYWxzbyBuZWVkIHRvIHJlYWQgdGhlIHN1YnhhY3RsaXN0LCBk ZXRlcm1pbmUgdGhlIG9mZnNldAorCQkJICogdHJhY2tlZCBmb3IgdGhlIHN1YnhhY3QsIGFuZCB0 cnVuY2F0ZSB0aGUgbGlzdC4KKwkJCSAqLworCQkJaW50CQkJaTsKKwkJCWJvb2wJCWZvdW5kID0g ZmFsc2U7CisJCQljaGFyCQlzcG5hbWVbTUFYUEdQQVRIXTsKKworCQkJc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfeGFjdChzdWJ4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKKwkJCXNucHJpbnRmKHNw bmFtZSwgTUFYUEdQQVRILCAic2F2ZXBvaW50X2Zvcl94aWRfJXUiLCBzdWJ4aWQpOworCisJCQll bG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSByb2xsaW5nIGJhY2sgdG8gc2F2ZXBvaW50ICVz IiwKKwkJCQkgTXlQYXJhbGxlbFN0YXRlLT5uLCBzcG5hbWUpOworCisJCQlmb3IgKGkgPSBsaXN0 X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAxOyBpID49IDA7IGktLSkKKwkJCXsKKwkJCQl4aWQgPSAo VHJhbnNhY3Rpb25JZCkgbGlzdF9udGhfaW50KHN1YnhhY3RsaXN0LCBpKTsKKwkJCQlpZiAoeGlk ID09IHN1YnhpZCkKKwkJCQl7CisJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJ fQorCQkJfQorCisJCQlpZiAoZm91bmQpCisJCQl7CisJCQkJUm9sbGJhY2tUb1NhdmVwb2ludChz cG5hbWUpOworCQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQkJCXN1YnhhY3RsaXN0 ID0gbGlzdF90cnVuY2F0ZShzdWJ4YWN0bGlzdCwgaSArIDEpOworCQkJfQorCisJCQlhcHBseV9i Z3dvcmtlcl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX1JFQURZKTsKKwkJfQorCisJCXJlc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOworCX0KKwllbHNlCisJeworCQlBcHBseUJnd29y a2VyU3RhdGUgKndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmRfb3Jfc3RhcnQoeGlkLCBmYWxz ZSk7CisKKwkJLyoKKwkJICogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuIENoZWNrIGlm IHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMKKwkJICogdHJhbnNhY3Rpb24gaW4gYSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4KKwkJICovCisJCWlmICh3c3RhdGUpCisJCXsKKwkJCWFwcGx5X2Jnd29y a2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCWlmIChzdWJ4aWQg PT0geGlkKQorCQkJeworCQkJCWFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0ZSwgQVBQTFlf QkdXT1JLRVJfRklOSVNIRUQpOworCQkJCWFwcGx5X2Jnd29ya2VyX2ZyZWUod3N0YXRlKTsKKwkJ CX0KKwkJCWVsc2UKKwkJCQlhcHBseV9iZ3dvcmtlcl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JH V09SS0VSX1JFQURZKTsKKwkJfQorCisJCS8qCisJCSAqIFdlIGFyZSBpbiBtYWluIGFwcGx5IHdv cmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQKKwkJICogdG8gZmls ZS4KKwkJICovCisJCWVsc2UKKwkJCXNlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQp OworCX0KIH0KIAogLyoKQEAgLTE0NjIsNDAgKzE3MTgsNiBAQCBhcHBseV9zcG9vbGVkX21lc3Nh Z2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlyZXR1cm47CiB9CiAKLS8q Ci0gKiBIYW5kbGUgU1RSRUFNIENPTU1JVCBtZXNzYWdlLgotICovCi1zdGF0aWMgdm9pZAotYXBw bHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQotewotCVRyYW5zYWN0aW9uSWQg eGlkOwotCUxvZ2ljYWxSZXBDb21taXREYXRhIGNvbW1pdF9kYXRhOwotCi0JaWYgKGluX3N0cmVh bWVkX3RyYW5zYWN0aW9uKQotCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVf UFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQ09NTUlU IG1lc3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7Ci0KLQl4aWQgPSBsb2dpY2FscmVwX3Jl YWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEpOwotCXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKLQotCWVsb2coREVCVUcxLCAi cmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7Ci0KLQlh cHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7Ci0KLQlh cHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7Ci0KLQkvKiB1bmxpbmsg dGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlz dHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwotCi0J LyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJh bGxlbC4gKi8KLQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwot Ci0JcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKLQotCXJlc2V0X2Fw cGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwotfQotCiAvKgogICogSGVscGVyIGZ1bmN0aW9uIGZv ciBhcHBseV9oYW5kbGVfY29tbWl0IGFuZCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdC4KICAq LwpAQCAtMjQ0NSwxMSArMjY2NywxMDUgQEAgYXBwbHlfaGFuZGxlX3RydW5jYXRlKFN0cmluZ0lu Zm8gcykKIAllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogfQogCisvKgorICogSGFuZGxlIFNUUkVB TSBDT01NSVQgbWVzc2FnZS4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1f Y29tbWl0KFN0cmluZ0luZm8gcykKK3sKKwlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0 YTsKKwlUcmFuc2FjdGlvbklkIHhpZDsKKworCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElP TiksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIENPTU1JVCBtZXNzYWdlIHdpdGhvdXQg U1RSRUFNIFNUT1AiKSkpOworCisJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQo cywgJmNvbW1pdF9kYXRhKTsKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29t bWl0X2RhdGEuY29tbWl0X2xzbik7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJ CS8qCisJCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5n IGZyb20gY29ycmVjdAorCQkgKiBwb3NpdGlvbiBpbiBjYXNlIG9mIGNyYXNoLgorCQkgKi8KKwkJ cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBjb21taXRfZGF0YS5lbmRfbHNuOworCQly ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLmNvbW1pdHRp bWU7CisKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCUVuZFRyYW5zYWN0aW9uQmxv Y2soZmFsc2UpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlpbl9yZW1vdGVf dHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCisJ CWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCWFwcGx5 X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCX0KKwllbHNl CisJeworCQkvKgorCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlci4gQ2hlY2sgaWYg d2UgYXJlIHByb2Nlc3NpbmcgdGhpcworCQkgKiB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4KKwkJICovCisJCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gYXBw bHlfYmd3b3JrZXJfZmluZF9vcl9zdGFydCh4aWQsIGZhbHNlKTsKKworCQllbG9nKERFQlVHMSwg InJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCisJ CWlmICh3c3RhdGUpCisJCXsKKwkJCS8qIFNlbmQgY29tbWl0IG1lc3NhZ2UgKi8KKwkJCWFwcGx5 X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qIFdh aXQgZm9yIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHRvIGZpbmlzaCAqLworCQkJYXBwbHlfYmd3 b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisKKwkJCXBn c3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRf ZGF0YS5lbmRfbHNuKTsKKwkJCXN0b3Bfc2tpcHBpbmdfY2hhbmdlcygpOworCisJCQlhcHBseV9i Z3dvcmtlcl9mcmVlKHdzdGF0ZSk7CisKKwkJCS8qCisJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaXMg ZWl0aGVyIG5vbi1lbXB0eSBvciBza2lwcGVkLCBzbyB3ZSBjbGVhciB0aGUKKwkJCSAqIHN1YnNr aXBsc24uCisJCQkgKi8KKwkJCWNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihjb21taXRfZGF0 YS5jb21taXRfbHNuKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBUaGlzIGlzIHRo ZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuCisJCQkgKiBz ZXJpYWxpemVkIHRvIGZpbGUsIHJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJ CSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9s c24pOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisK KwkJCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1Ynhh Y3QgaW5mbyAqLworCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgeGlkKTsKKwkJfQorCX0KKworCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLworCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygp OworCisJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBp biBwYXJhbGxlbC4gKi8KKwlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9s c24pOworCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsKKworCXJl c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOworfQogCiAvKgogICogTG9naWNhbCByZXBs aWNhdGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2 b2lkCiBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUg YWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShzKTsKQEAgLTI2MTgsNiArMjkzNCwxMCBAQCBzdG9yZV9m bHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiB7CiAJRmx1c2hQb3NpdGlvbiAq Zmx1c2hwb3M7CiAKKwkvKiBXZSBvbmx5IG5lZWQgdG8gY29sbGVjdCB0aGUgTFNOIGluIG1haW4g YXBwbHkgd29ya2VyICovCisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKwog CS8qIE5lZWQgdG8gZG8gdGhpcyBpbiBwZXJtYW5lbnQgY29udGV4dCAqLwogCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCkBAIC0yNjMyLDcgKzI5NTIsNyBAQCBzdG9yZV9m bHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAKIAogLyogVXBkYXRlIHN0YXRp c3RpY3Mgb2YgdGhlIHdvcmtlci4gKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBVcGRhdGVXb3JrZXJT dGF0cyhYTG9nUmVjUHRyIGxhc3RfbHNuLCBUaW1lc3RhbXBUeiBzZW5kX3RpbWUsIGJvb2wgcmVw bHkpCiB7CiAJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X2xzbiA9IGxhc3RfbHNuOwpAQCAtMjc5 NCw2ICszMTE0LDkgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2 ZWQpCiAJCQlBY2NlcHRJbnZhbGlkYXRpb25NZXNzYWdlcygpOwogCQkJbWF5YmVfcmVyZWFkX3N1 YnNjcmlwdGlvbigpOwogCisJCQkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91 bmQgd29ya2VyIGlmIGFueS4gKi8KKwkJCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwor CiAJCQkvKiBQcm9jZXNzIGFueSB0YWJsZSBzeW5jaHJvbml6YXRpb24gY2hhbmdlcy4gKi8KIAkJ CXByb2Nlc3Nfc3luY2luZ190YWJsZXMobGFzdF9yZWNlaXZlZCk7CiAJCX0KQEAgLTMwOTUsNyAr MzQxOCw3IEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIC8qCiAgKiBDYWxsYmFj ayBmcm9tIHN1YnNjcmlwdGlvbiBzeXNjYWNoZSBpbnZhbGlkYXRpb24uCiAgKi8KLXN0YXRpYyB2 b2lkCit2b2lkCiBzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQs IHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwpAQCAt MzY5MSw3ICs0MDE0LDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvcmln aW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKIAkJaWYgKCFPaWRJ c1ZhbGlkKG9yaWdpbmlkKSkKIAkJCW9yaWdpbmlkID0gcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lu bmFtZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgdHJ1ZSk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9v cmlnaW4gPSBvcmlnaW5pZDsKIAkJb3JpZ2luX3N0YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9u X2dldF9wcm9ncmVzcyhmYWxzZSk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAt MzczOCw3ICs0MDYxLDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJb3B0 aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1 YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRp b24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3Jp cHRpb24tPnN0cmVhbTsKKwlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gKE15U3Vi c2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX09GRik7CiAJb3B0aW9ucy5wcm90by5sb2dp Y2FsLnR3b3BoYXNlID0gZmFsc2U7CiAKIAlpZiAoIWFtX3RhYmxlc3luY193b3JrZXIoKSkKQEAg LTM4OTYsNyArNDIxOSw4IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRy IGZpbmlzaF9sc24pCiAJWExvZ1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tp cGxzbjsKIAlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQ dHJJc0ludmFsaWQobXlza2lwbHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlk KG15c2tpcGxzbikpIHx8CisJCWFtX2FwcGx5X2Jnd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlm ICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBAIC0zOTY4LDcgKzQyOTIsNyBAQCBjbGVhcl9zdWJz Y3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBj YWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcg YXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQg KmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9j YWxsYmFja19hcmc7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKaW5kZXgg ODdjMTViOWM2Zi4uYmE3ODFlNmYwOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYwpAQCAtMzg4LDYgKzM4OCw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50 SVBDIHcpCiAJCWNhc2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJ CWV2ZW50X25hbWUgPSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNh c2UgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1dPUktFUl9TVEFURV9DSEFOR0U6CisJCQlldmVu dF9uYW1lID0gIkxvZ2ljYWxBcHBseVdvcmtlclN0YXRlQ2hhbmdlIjsKKwkJCWJyZWFrOwogCQlj YXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEE6CiAJCQlldmVudF9uYW1lID0gIkxvZ2lj YWxTeW5jRGF0YSI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDdjYzljNzJlNDkuLjZmOGIz MGFiYjAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDQ1MCw3ICs0NDUwLDcgQEAgZ2V0U3Vic2NyaXB0aW9u cyhBcmNoaXZlICpmb3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE0MDAwMCkKIAkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgcy5zdWJzdHJlYW0sXG4iKTsKIAllbHNlCi0J CWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YnN0cmVhbSxcbiIpOwor CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiAnZicgQVMgc3Vic3RyZWFtLFxuIik7CiAK IAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LApAQCAtNDU4MCw4ICs0NTgwLDEwIEBAIGR1bXBTdWJzY3JpcHRpb24oQXJjaGl2 ZSAqZm91dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlpZiAoc3RyY21wKHN1 YmluZm8tPnN1YmJpbmFyeSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIiwgYmluYXJ5ID0gdHJ1ZSIpOwogCi0JaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0s ICJmIikgIT0gMCkKKwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInQiKSA9PSAwKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gb24iKTsKKwllbHNl IGlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAiYSIpID09IDApCisJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBhcHBseSIpOwogCiAJaWYgKHN0cmNtcChz dWJpbmZvLT5zdWJ0d29waGFzZXN0YXRlLCB0d29fcGhhc2VfZGlzYWJsZWQpICE9IDApCiAJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB0d29fcGhhc2UgPSBvbiIpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggZDEyNjBmNTkwYy4uOWIzOTRhNDVmZSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC02OCw3ICs2OCw4IEBAIENBVEFM T0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJF RF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViYmluYXJ5OwkJLyogVHJ1ZSBpZiB0aGUgc3Vi c2NyaXB0aW9uIHdhbnRzIHRoZQogCQkJCQkJCQkgKiBwdWJsaXNoZXIgdG8gc2VuZCBkYXRhIGlu IGJpbmFyeSAqLwogCi0JYm9vbAkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRy YW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3Mg dHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgU1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICov CiAKIAljaGFyCQlzdWJ0d29waGFzZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBoYXNlIHRyYW5zYWN0 aW9ucyAqLwogCkBAIC0xMDksNyArMTEwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9u CiAJYm9vbAkJZW5hYmxlZDsJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIGlzIGVu YWJsZWQgKi8KIAlib29sCQliaW5hcnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRp b24gd2FudHMgZGF0YSBpbgogCQkJCQkJCQkgKiBiaW5hcnkgZm9ybWF0ICovCi0JYm9vbAkJc3Ry ZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisJ Y2hhcgkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv bnMuICovCiAJY2hhcgkJdHdvcGhhc2VzdGF0ZTsJLyogQWxsb3cgc3RyZWFtaW5nIHR3by1waGFz ZSB0cmFuc2FjdGlvbnMgKi8KIAlib29sCQlkaXNhYmxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0 aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJCQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2Fi bGVkIGlmIGEgd29ya2VyIGVycm9yCkBAIC0xMjAsNiArMTIxLDE4IEBAIHR5cGVkZWYgc3RydWN0 IFN1YnNjcmlwdGlvbgogCUxpc3QJICAgKnB1YmxpY2F0aW9uczsJLyogTGlzdCBvZiBwdWJsaWNh dGlvbiBuYW1lcyB0byBzdWJzY3JpYmUgdG8gKi8KIH0gU3Vic2NyaXB0aW9uOwogCisvKiBEaXNh bGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zICovCisjZGVmaW5lIFNVQlNU UkVBTV9PRkYJJ2YnCisKKy8qCisgKiBTdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVu IHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIGFwcGxpZWQgb25seQorICogYWZ0ZXIgdGhlIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1f T04JJ3QnCisKKy8qIFN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYXJlIGFwcGxpZWQgaW1tZWRpYXRl bHkgdmlhIGEgYmFja2dyb3VuZCB3b3JrZXIgKi8KKyNkZWZpbmUgU1VCU1RSRUFNX0FQUExZCSdh JworCiBleHRlcm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29s IG1pc3Npbmdfb2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24g KnN1Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKaW5kZXggY2QxYjZlOGFmYy4uNmExYWY3 ZjEzYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTMsNiAr MTMsNyBAQAogI2RlZmluZSBMT0dJQ0FMV09SS0VSX0gKIAogZXh0ZXJuIHZvaWQgQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKTsKK2V4dGVybiB2b2lkIEFwcGx5Qmd3b3JrZXJNYWluKERh dHVtIG1haW5fYXJnKTsKIAogZXh0ZXJuIGJvb2wgSXNMb2dpY2FsV29ya2VyKHZvaWQpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL29yaWdpbi5oCmluZGV4IDJkMWI1ZTVjMjguLmM3Mzg5YjQwYTcgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCisrKyBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL29yaWdpbi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4dGVybiBYTG9nUmVjUHRy IHJlcGxvcmlnaW5fZ2V0X3Byb2dyZXNzKFJlcE9yaWdpbklkIG5vZGUsIGJvb2wgZmx1c2gpOwog CiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShYTG9nUmVjUHRyIHJlbW90 ZV9jb21taXQsCiAJCQkJCQkJCQkgICBYTG9nUmVjUHRyIGxvY2FsX2NvbW1pdCk7Ci1leHRlcm4g dm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSk7CitleHRlcm4g dm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgYm9vbCBtdXN0 X2FjcXVpcmUpOwogZXh0ZXJuIHZvaWQgcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KHZvaWQpOwog ZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhib29sIGZs dXNoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA5 MDE4NDVhYmMyLi5lMmQyMTQ0NGMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaApAQCAtMTcsOCArMTcsMTEgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImRhdGF0 eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5o IgogI2luY2x1ZGUgInN0b3JhZ2UvZmlsZXNldC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5o IgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fdG9j LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAKIApAQCAtNjAsNiArNjMsOSBAQCB0eXBl ZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJICovCiAJRmlsZVNldCAgICAqc3RyZWFtX2Zp bGVzZXQ7CiAKKwkvKiBJbmRpY2F0ZXMgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGFuIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyLiAqLworCWJvb2wJCXN1YndvcmtlcjsKKwogCS8qIFN0YXRzLiAq LwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3RpbWU7CkBA IC02OCw5ICs3NCw2NyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJVGltZXN0 YW1wVHogcmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsKIAorLyogU3RydWN0IGZvciBz YXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0aW9uICovCit0eXBl ZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKK3sKKwlMb2dpY2FsUmVwTXNnVHlwZSBj b21tYW5kOwkvKiAwIGlmIGludmFsaWQgKi8KKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbDsK KworCS8qIFJlbW90ZSBub2RlIGluZm9ybWF0aW9uICovCisJaW50CQkJcmVtb3RlX2F0dG51bTsJ LyogLTEgaWYgaW52YWxpZCAqLworCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKKwlYTG9nUmVj UHRyCWZpbmlzaF9sc247CisJY2hhcgkgICAqb3JpZ2luX25hbWU7Cit9IEFwcGx5RXJyb3JDYWxs YmFja0FyZzsKKworLyoKKyAqIFN0YXR1cyBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisg Ki8KK3R5cGVkZWYgZW51bSBBcHBseUJnd29ya2VyU3RhdHVzCit7CisJQVBQTFlfQkdXT1JLRVJf QVRUQUNIRUQgPSAwLAorCUFQUExZX0JHV09SS0VSX1JFQURZLAorCUFQUExZX0JHV09SS0VSX0JV U1ksCisJQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQsCisJQVBQTFlfQkdXT1JLRVJfRVhJVAorfSBB cHBseUJnd29ya2VyU3RhdHVzOworCisvKgorICogU2hhcmVkIGluZm9ybWF0aW9uIGFtb25nIGFw cGx5IHdvcmtlcnMuCisgKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5Qmd3b3JrZXJTaGFyZWQKK3sK KwlzbG9ja190CW11dGV4OworCisJLyogU3RhdHVzIGZvciBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl ci4gKi8KKwlBcHBseUJnd29ya2VyU3RhdHVzCXN0YXR1czsKKworCVRyYW5zYWN0aW9uSWQJc3Ry ZWFtX3hpZDsKKwl1aW50MzIJbjsJLyogaWQgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8K K30gQXBwbHlCZ3dvcmtlclNoYXJlZDsKKworLyoKKyAqIFN0cnVjdCBmb3IgbWFpbnRhaW5pbmcg YW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisgKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5Qmd3 b3JrZXJTdGF0ZQoreworCXNobV9tcV9oYW5kbGUJCQkqbXFfaGFuZGxlOworCWRzbV9zZWdtZW50 CQkJCSpkc21fc2VnOworCUFwcGx5Qmd3b3JrZXJTaGFyZWQgdm9sYXRpbGUJKnBzdGF0ZTsKK30g QXBwbHlCZ3dvcmtlclN0YXRlOworCiAvKiBNYWluIG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3 b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2VyIGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExM SU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0OwogCitleHRlcm4gUEdETExJTVBPUlQg TWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0OworCitleHRlcm4gUEdETExJTVBPUlQg QXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZzsKKworZXh0ZXJu IFBHRExMSU1QT1JUIGJvb2wgTXlTdWJzY3JpcHRpb25WYWxpZDsKKworZXh0ZXJuIFBHRExMSU1Q T1JUIHZvbGF0aWxlIEFwcGx5Qmd3b3JrZXJTaGFyZWQgKk15UGFyYWxsZWxTdGF0ZTsKK2V4dGVy biBQR0RMTElNUE9SVCBMaXN0ICpzdWJ4YWN0bGlzdDsKKwogLyogbGlicHFyZWNlaXZlciBjb25u ZWN0aW9uICovCiBleHRlcm4gUEdETExJTVBPUlQgc3RydWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9n UmVwV29ya2VyV2FsUmN2Q29ubjsKIApAQCAtNzksMTMgKzE0MywxNiBAQCBleHRlcm4gUEdETExJ TVBPUlQgU3Vic2NyaXB0aW9uICpNeVN1YnNjcmlwdGlvbjsKIGV4dGVybiBQR0RMTElNUE9SVCBM b2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXI7CiAKIGV4dGVybiBQR0RMTElNUE9S VCBib29sIGluX3JlbW90ZV90cmFuc2FjdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIFRyYW5zYWN0aW9uSWQg c3RyZWFtX3hpZDsKIAogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBz bG90KTsKIGV4dGVybiBMb2dpY2FsUmVwV29ya2VyICpsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9p ZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkJYm9vbCBvbmx5X3J1bm5pbmcpOwogZXh0 ZXJuIExpc3QgKmxvZ2ljYWxyZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1 bm5pbmcpOwotZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBP aWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCi0JCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lk IHJlbGlkKTsKK2V4dGVybiBib29sIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwg T2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAorCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9p ZCByZWxpZCwKKwkJCQkJCQkJCSBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20pOwogZXh0ZXJuIHZv aWQgbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CiBleHRlcm4g dm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIpOwpAQCAtMTAzLDEwICsxNzAsMzkgQEAgZXh0ZXJuIHZvaWQgcHJvY2Vzc19zeW5jaW5n X3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVf c3luY2luZ190YWJsZV9zdGF0ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkJ dWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIFVwZGF0ZVdvcmtlclN0YXRzKFhMb2dS ZWNQdHIgbGFzdF9sc24sIFRpbWVzdGFtcFR6IHNlbmRfdGltZSwKKwkJCQkJCQkgIGJvb2wgcmVw bHkpOworCisvKiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwor ZXh0ZXJuIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKKworLyogRnVuY3Rpb24g Zm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCitleHRlcm4gdm9pZCBhcHBseV9lcnJvcl9jYWxs YmFjayh2b2lkICphcmcpOworCitleHRlcm4gdm9pZCBzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERh dHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOworCisvKiBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICovCitleHRlcm4gQXBwbHlCZ3dv cmtlclN0YXRlICphcHBseV9iZ3dvcmtlcl9maW5kX29yX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlk LAorCQkJCQkJCQkJCQkJCQlib29sIHN0YXJ0KTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2Vy X3dhaXRfZm9yKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlLAorCQkJCQkJCQkJQXBwbHlCZ3dv cmtlclN0YXR1cyB3YWl0X2Zvcl9zdGF0dXMpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJf c2VuZF9kYXRhKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlLCBTaXplIG5ieXRlcywKKwkJCQkJ CQkJCSBjb25zdCB2b2lkICpkYXRhKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX2ZyZWUo QXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJf Y2hlY2tfc3RhdHVzKHZvaWQpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1 cyhBcHBseUJnd29ya2VyU3RhdHVzIHN0YXR1cyk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtl cl9zdWJ4YWN0X2luZm9fYWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpOworCiBzdGF0aWMg aW5saW5lIGJvb2wKIGFtX3RhYmxlc3luY193b3JrZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lkSXNW YWxpZChNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKTsKIH0KIAorc3RhdGljIGlubGluZSBib29s CithbV9hcHBseV9iZ3dvcmtlcih2b2lkKQoreworCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YndvcmtlcjsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFdPUktFUl9JTlRFUk5BTF9IICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91 dGlscy93YWl0X2V2ZW50LmgKaW5kZXggYjU3OGUyZWM3NS4uYzJkMmExMTRkNyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxz L3dhaXRfZXZlbnQuaApAQCAtMTA1LDYgKzEwNSw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZF TlRfSEFTSF9HUk9XX0JVQ0tFVFNfQUxMT0NBVEUsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVD S0VUU19FTEVDVCwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJULAorCVdB SVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9XT1JLRVJfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRf TE9HSUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdF LAogCVdBSVRfRVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1 YnNjcmlwdGlvbi5vdXQKaW5kZXggN2ZjZmFkMTU5MS4uZjc2OTgzNWFmMCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTk3LDcgKzE5Nyw3IEBAIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsK IERST1AgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIC0tIGZhaWwgLSBzdHJlYW1pbmcg bXVzdCBiZSBib29sZWFuCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05O RUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIg V0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1p bmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBh IEJvb2xlYW4gdmFsdWUgb3IgImFwcGx5IgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1p bmcgPSB0cnVlKTsKIFdBUk5JTkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdp bGwgaGF2ZSB0byBydW4gQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9O IHRvIHN1YnNjcmliZSB0aGUgdGFibGVzCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDRm Yjc0NjkzMGEuLjEyOTQwZDZmNGYgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTYs NiArMTE2LDEwIEBAIEFwcGVuZAogQXBwZW5kUGF0aAogQXBwZW5kUmVsSW5mbwogQXBwZW5kU3Rh dGUKK0FwcGx5Qmd3b3JrZXJFbnRyeQorQXBwbHlCZ3dvcmtlclNoYXJlZAorQXBwbHlCZ3dvcmtl clN0YXRlCitBcHBseUJnd29ya2VyU3RhdHVzCiBBcHBseUVycm9yQ2FsbGJhY2tBcmcKIEFwcGx5 RXhlY3V0aW9uRGF0YQogQXBwbHlTdWJYYWN0RGF0YQotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_005_OS3PR01MB62758A881FF3240171B7B21B9EDE9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v8-0002-Test-streaming-apply-option-in-tap-test.patch" Content-Description: v8-0002-Test-streaming-apply-option-in-tap-test.patch Content-Disposition: attachment; filename="v8-0002-Test-streaming-apply-option-in-tap-test.patch"; size=70532; creation-date="Thu, 02 Jun 2022 09:54:00 GMT"; modification-date="Thu, 02 Jun 2022 10:01:36 GMT" Content-Transfer-Encoding: base64 RnJvbSA1ZDQ5YTNiYzBhOWRjMGNlYTg4NjY4Y2M4NGMxNmQ0ZjgzNDFlNDc0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2OCAy LzRdIFRlc3Qgc3RyZWFtaW5nIGFwcGx5IG9wdGlvbiBpbiB0YXAgdGVzdAoKQ2hhbmdlIGFsbCBU QVAgdGVzdHMgdXNpbmcgdGhlIFNVQlNDUklQVElPTiAic3RyZWFtaW5nIiBvcHRpb24sIHNvIHRo ZXkKbm93IHRlc3QgYm90aCAnb24nIGFuZCAnYXBwbHknIHZhbHVlcy4KLS0tCiBzcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsICAgICAgICAgfCAxOTkgKysrKy0tLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsIHwgMTE5ICsrKy0tCiBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCAgICAgfCAxODggKysrKy0tLQog Li4uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsICAgICAgICAgICAgIHwgMTk1ICsrKyst LS0KIC4uLi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgICAgICAgICB8IDExMCAr KystCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzNjMg KysrKysrKy0tLS0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwg ICAgIHwgNDk4ICsrKysrKysrKystLS0tLS0tLQogNyBmaWxlcyBjaGFuZ2VkLCAxMDM1IGluc2Vy dGlvbnMoKyksIDYzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVh bS5wbAppbmRleCA2NTYxYjE4OWRlLi5iM2Q4NGIxYzdjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNV9zdHJlYW0ucGwKQEAgLTgsNiArOCwxMTYgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAor IyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVk IHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90 aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5CisjIGNhc2VzLgorc3Vi IHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2Yg dHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0g Jyc7CisJbXkgJG91dCA9ICcnOworCisJbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCisJbXkgJGggPSAkbm9k ZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRp bWVyLAorCQlvbl9lcnJvcl9zdG9wID0+IDApOworCisJIyBDaGVjayB0aGF0IGEgYmFja2dyb3Vu ZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIG9wdGlvbiBpcworCSMgc3BlY2lmaWVkIGFz ICJhcHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzCisJ IyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2Rl X3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkaW4gLj0gcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDMsIDUwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ fTsKKwkkaC0+cHVtcF9uYjsKKworCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9n X21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwor CX0KKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJF R0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBhID4gNTAwMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkaW4gLj0gcXsKKwlDT01NSVQ7CisJ XHEKKwl9OworCSRoLT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWls LCBzbyBpZ25vcmUgdGhlbSBoZXJlCisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMg VGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJp bmFyeSA9IG9uKSIpOworCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOwor CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0 ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycpOworCisJIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0 aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKKwkjIHVwZGF0ZSBwdWJsaXNoZXIs IGFuZCBjaGVjayB0aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKKwkjIHZhbHVl cy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhh dmUKKwkjIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBj ID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgorCSk7 CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9j aCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKKwkp OworCWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0 IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAk bm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hl cicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwn KTsKQEAgLTM3LDYgKzE0NywxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsK IAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9j b25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lU SCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTU0LDgyICsxNjgsMjUgQEAgbXkgJHJlc3VsdCA9 CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29w aWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlv bnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgotbXkgJGluICA9ICcnOwotbXkgJG91 dCA9ICcnOwotCi1teSAkdGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6VGVz dDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7Ci0KLW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5i YWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKLQlvbl9lcnJv cl9zdG9wID0+IDApOwotCi0kaW4gLj0gcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLX07Ci0kaC0+cHVtcF9uYjsK LQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkpOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+ IDUwMDA7Ci1DT01NSVQ7Ci19KTsKLQotJGluIC49IHF7Ci1DT01NSVQ7Ci1ccQotfTsKLSRoLT5m aW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWlsLCBzbyBpZ25vcmUgdGhl bSBoZXJlCi0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJyk7Ci0KLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFy eSBtb2RlCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIg U1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKLQotIyBJbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNTAwMSwgMTAwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksICdjaGVj ayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5 JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiCispOwogCi0jIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9m IHRoZSBleHRyYSBjb2x1bW5zIG9uIHRoZSBzdWJzY3JpYmVyLAotIyB1cGRhdGUgcHVibGlzaGVy LCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCi0jIHZhbHVl cy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhh dmUKLSMgcHJvcGVybHkgYWZ0ZXIgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCiAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0g J2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgotKTsKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQo c3RyZWFtaW5nID0gYXBwbHksIGJpbmFyeSA9IG9mZikiKTsKIAotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91 bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3Jl cGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9 ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5n IGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIgotKTsKLWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2 NjY3KSwKLQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsbHkgY2hhbmdlZCBkYXRh Jyk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+ c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3Vi eGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApp bmRleCBmMjdmMTY5NGYyLi5iNWI2ZGMzNzlmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBAIC04LDYgKzgsNzIgQEAgdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6 TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFy ZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBi ZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFwcGx5CisjIGNh c2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMgQ2hlY2sgdGhhdCBh IGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKwkjIHNw ZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBt ZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZl cmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBJbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoICAg IDMsICA1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ U0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAg MTUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZF UE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLCAgMjAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAyNTAw KSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCUNPTU1JVDsK Kwl9KTsKKworCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdl cyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0K KwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRy ZXN1bHQsIHFxKDE2Njd8MTY2N3wxNjY3KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBz dWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0g UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxp c2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMDMs MTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0g J3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVz aW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlND UklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlv bl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9u KSIKICk7CkBAIC01NCw0MSArMTI0LDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0 LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVy Jyk7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQg NjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoICAgIDMsICA1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsICAxMDAwKSBzKGkp OwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMjsKLUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikg V0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykg PSAwOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLCAgMjAwMCkgcyhpKTsKLVVQREFURSB0 ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEs IDI1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlU OwotfSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCi0JJ2NoZWNrIGRhdGEg d2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdhcHBseScKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBhcHBseSkiKTsKKwor JG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBw aWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRp ZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIg Y2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0 b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3 X3N0cmVhbV9kZGwucGwKaW5kZXggMGJjZTYzYjcxNi4uN2U1ZGMxOGNkMiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAgLTgsNiArOCwxMTEgQEAgdXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1 c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBz IHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIG9wdGlvbgorIyBzbyB0aGUgc2FtZSBj b2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPWFw cGx5CisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19hcHBseSkgPSBAXzsKKworCSMgYSBz bWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJ IyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIG9w dGlvbiBpcworCSMgc3BlY2lmaWVkIGFzICJhcHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRo ZSBERUJVRzEgbG9nIG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1w IHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJz Y3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3Nh Z2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIGxh cmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUsIDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsK KwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBzKGkpOworCUNP TU1JVDsKKwl9KTsKKworCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKwor CSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAx LCAyKjIwMDEpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FW RVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6 OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9 CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoMjAwMnwxOTk5fDEwMDJ8MSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2Fj dGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3JtZWQKKwkjIGFm dGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3Ig dGVzdF90YWIgc28gdGhhdAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFzIHRvIHNlbmQgdGhl IHNjaGVtYSBhZ2Fpbi4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVz JywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsK KwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNPTU1JVDsKKwl9KTsK KworCSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBp cyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEgYWdhaW4gdG8gcmVm bGVjdCB0aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRlc3QuCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCpp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpLCBjb3VudChmKSBGUk9NIHRlc3Rf dGFiIgorCSk7CisJaXMoJHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKKwkJJ2No ZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQg bm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBk YXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBE Uk9QIENPTFVNTiBjLCBEUk9QIENPTFVNTiBkLCBEUk9QIENPTFVNTiBlLCBEUk9QIENPTFVNTiBm OworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9 CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5p bml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE0MiwxMCBAQCAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJ T04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1 Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9O IHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9 JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsK QEAgLTU0LDc2ICsxNjMsMjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8 MHwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAot IyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwotfSk7Ci0KLSMgbGFy Z2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAx MDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNBVkVQ T0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1p LCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKLUNPTU1JVDsKLX0p OwotCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERN TAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAx LCAyKjIwMDEpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQ T0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRl eHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwordGVzdF9zdHJlYW1p bmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQot ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnYXBwbHknCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxp Y2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAK LSMgQSBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwuIE9uZSBv ZiB0aGUgRERMIGlzIHBlcmZvcm1lZAotIyBhZnRlciBETUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52 YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9yIHRlc3RfdGFiIHNvIHRoYXQKLSMgdGhlIG5leHQg dHJhbnNhY3Rpb24gaGFzIHRvIHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMjAwMyw1MDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBm IElOVDsKLUNPTU1JVDsKLX0pOwotCi0jIEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3b24ndCBn ZXQgc3RyZWFtZWQuIFRoaXMgaXMganVzdCB0byBlbnN1cmUgdGhhdCB3ZQotIyBzZW5kIHRoZSBz Y2hlbWEgYWdhaW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZp b3VzIHRlc3QuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewot QkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwg MippLCAtMyppLCA0KmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1MDA1KSBzKGkpOwotQ09N TUlUOwotfSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IGFwcGx5KSIpOwogCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfcHVibGlzaGVy LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0 IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NS SVBUSU9OIjsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSks IGNvdW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1 fDMwMDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3Ro IHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCi0pOwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAK ICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKaW5k ZXggNzE1NTQ0MmU3Ni4uNzFmOGMxZGQwNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbApAQCAtOCw2ICs4LDExMyBAQCB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK IHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3Rl cHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0aW9uCisjIHNvIHRoZSBzYW1l IGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9 YXBwbHkKKyMgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX2FwcGx5KSA9IEBfOworCisJIyBD aGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIG9wdGlv biBpcworCSMgc3BlY2lmaWVkIGFzICJhcHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBE RUJVRzEgbG9nIG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVw IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3Jp YmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2Vz ID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIGxhcmdl IChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLDUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7CisJU0FWRVBPSU5U IHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMyOworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMjAwMSwyNTAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwzMDAw KSBzKGkpOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMwMDEsMzUwMCkgcyhpKTsKKwlTQVZF UE9JTlQgczU7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzNTAxLDQwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJ aWYgKCRpc19hcHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9c W0FwcGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2Fybmlu ZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyMDAwfDApLAorCQknY2hl Y2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGxhcmdlIChz dHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3Jk ZXIKKwkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0NTAwKSBzKGkp OworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQg czI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NzAwMSw3NTAwKSBzKGkpOworCVJFTEVBU0UgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7 CisJUk9MTEJBQ0sgVE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDApLAorCQknY2hlY2sgcm9s bGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBs YXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9s bGJhY2sKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg5MDAxLDk1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkg cyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3Rf dGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZs ZWN0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNo ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVf cHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2LDYg KzE0MywxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVB VEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5h bWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxp Y2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5n ID0gb24pIgogKTsKQEAgLTUzLDgxICsxNjQsMjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwg J2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJn ZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzLDUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1T QVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTUwMSwyMDAwKSBzKGkpOwotUk9MTEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUw MCkgcyhpKTsKLVJPTExCQUNLIFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7Ci1TQVZF UE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMwMDEsMzUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMzUwMSw0MDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotJHJlc3VsdCA9Ci0gICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNrIHJv bGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJh IGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCiApOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBz dWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKLSMgc3VidHJhbnNhY3Rpb24gUk9MTEJB Q0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1 NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg2MDAxLDY1MDApIHMoaSk7Ci1TQVZF UE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKLVJFTEVBU0UgczI7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDgwMDEsODUwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMxOwotQ09NTUlUOwotfSk7Ci0KLSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VU KHN0cmVhbWluZyA9IGFwcGx5KSIpOwogCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0 ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8g c2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhp KTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKLVJPTExCQUNLOwot fSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAg b3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZs ZWN0ZWQgb24gc3Vic2NyaWJlcicpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7 CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAppbmRleCBkYmQwZmNhNGQxLi5k MGNkODY5NDMwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFt X3N1YnhhY3RfZGRsX2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9z dHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKQEAgLTksNiArOSw2OSBAQCB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0 OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2gg YXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0aW9uCisjIHNvIHRoZSBzYW1lIGNvZGUgY2Fu IGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9YXBwbHkKKyMg Y2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX2FwcGx5KSA9IEBfOworCisJIyBDaGVjayB0aGF0 IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIG9wdGlvbiBpcworCSMg c3BlY2lmaWVkIGFzICJhcHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cg dmVyYm9zaXR5LgorCWlmICgkaXNfYXBwbHkpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcx Iik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUw MCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNBVkVQ T0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVz KDEwMDEsMTUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5U OworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhp KTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCVJPTExCQUNLIFRPIHMx OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJaWYgKCRp c19hcHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5 IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwor CQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxMDAwfDUwMCksCisJCSdjaGVjayBy b2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUg dGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBEUk9QIENPTFVNTiBjOworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9w dWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwog JG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAg LTM3LDYgKzEwMCwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkg JGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJD UkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3Ry IGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3Ry ZWFtaW5nID0gb24pIgogKTsKQEAgLTU0LDM1ICsxMjEsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEo MnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAot IyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNL cwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLDUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJ TlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUFMVEVSIFRB QkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZSBJTlQ7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkg cyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7Ci1ST0xMQkFDSyBUTyBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDAp LAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3Jp YmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdh cHBseScKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0g JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1p bmcgPSBhcHBseSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5 IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1p bmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRu b2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdm MzdiYS4uYjUyYWY3NGUzNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIy X3R3b3BoYXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3 b3BoYXNlX2Nhc2NhZGUucGwKQEAgLTExLDYgKzExLDIwOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJl bGF0ZWQgdG8gInN0cmVhbWluZyIgb3B0aW9uCisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1 biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9YXBwbHkKKyMgY2FzZXMu CitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywg JGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJHN0cmVhbWluZ19tb2RlKSA9CisJICBAXzsKKworCW15 ICRvbGRwaWRfQiA9ICRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxF Q1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1l ID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCW15ICRvbGRwaWRf QyA9ICRub2RlX0ItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCisJIyBTZXR1cCBsb2dpY2FsIHJl cGxpY2F0aW9uIHN0cmVhbWluZyBtb2RlCisKKwkkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsICIKKwkJQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgorCQlTRVQgKHN0cmVhbWlu ZyA9ICRzdHJlYW1pbmdfbW9kZSk7Iik7CisJJG5vZGVfQy0+c2FmZV9wc3FsKAorCQkncG9zdGdy ZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKKwkJU0VUIChzdHJlYW1pbmcg PSAkc3RyZWFtaW5nX21vZGUpIik7CisKKwkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlz aCBpbml0aWFsaXphdGlvbgorCisJJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3Rn cmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IjsKKwkkbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMn LCAiCisJCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgor CQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJl YW1pbmcnOyIKKwkpIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRv IHJlc3RhcnQiOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAy UEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMg YSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJ IyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVyIHRo ZSBjb21taXQuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0 aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIG9wdGlvbiBpcwor CSMgc3BlY2lmaWVkIGFzICJhcHBseSIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEg bG9nIG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBs b2cgdmVyYm9zaXR5LgorCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ2FwcGx5JykKKwl7CisJCSRu b2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9 IGRlYnVnMSIpOworCQkkbm9kZV9CLT5yZWxvYWQ7CisKKwkJJG5vZGVfQy0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2Rl X0MtPnJlbG9hZDsKKwl9CisKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSMgVGhlbiAyUEMgUFJFUEFSRQorCSRub2Rl X0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywg NTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQ UkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwlpZiAoJHN0cmVh bWluZ19tb2RlIGVxICdhcHBseScpCisJeworCQkkbm9kZV9CLT53YWl0X2Zvcl9sb2cocXIvXFtB cHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9C LT5yZWxvYWQ7CisKKwkJJG5vZGVfQy0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtc XSBzdGFydGVkLywgMCk7CisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQy0+cmVsb2FkOworCX0K KworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0 YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwlteSAkcmVzdWx0ID0KKwkgICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9B LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRl ZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5z ZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNv bHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMs IGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgY2hlY2sg dGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQ T0lOVC4KKwkjIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJv d3MuCisJIyAxLiBJbnNlcnQgb25lIG1vcmUgcm93LgorCSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5U LgorCSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyA0LiBEbyByb2xsYmFjayB0 byBTQVZFUE9JTlQgcHJpb3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCisJIyA1LiBUaGVuIENP TU1JVCBQUkVQQVJFRC4KKwkjCisJIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlz IGFib3J0ZWQgbGVhdmluZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAg MSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQor CSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7CisKKwkjIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8g U0FWRVBPSU5UCisJJG5vZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUJFR0lO OworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKKwkJU0FW RVBPSU5UIHNwX2lubmVyOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lu bmVyOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7CisJCSIpOworCisJJG5vZGVfQS0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQg b24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyAy UEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFS RUQgJ291dGVyJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7 CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhl IHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0KKwkg ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVy KHMpLgorCSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBPSU5UKSBz aG91bGQgYmUgcm9sbGVkIGJhY2suCisJIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBiZSBjb21t aXR0ZWQuCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBC Jyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBj b21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9ICRub2Rl X0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisJJHJlc3VsdCA9CisJICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi OyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24g c3Vic2NyaWJlciBDJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX0EtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7 CisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiAjIFNldHVwIGEgY2FzY2FkZSBvZiBwdWIvc3ViIG5vZGVzLgogIyBub2RlX0EgLT4g bm9kZV9CIC0+IG5vZGVfQwpAQCAtMjYwLDE2MCArNDYyLDE1IEBAIGlzKCRyZXN1bHQsIHFxKDIx KSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOwogIyAyUEMg KyBTVFJFQU1JTkcgVEVTVFMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLW15ICRvbGRwaWRf QiA9ICRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l X0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwotbXkgJG9sZHBpZF9DID0gJG5vZGVfQi0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7Iik7Ci0KLSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiAoc3RyZWFt aW5nID0gb24pCi0KLSRub2RlX0ItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIg U1VCU0NSSVBUSU9OIHRhcF9zdWJfQgotCVNFVCAoc3RyZWFtaW5nID0gb24pOyIpOwotJG5vZGVf Qy0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9DCi0JU0VUIChzdHJlYW1pbmcgPSBvbikiKTsKLQotIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0 byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KLQotJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKLQkn cG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxp Y2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUg PSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFw cGx5IHRvIHJlc3RhcnQiOwotJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKLQkncG9zdGdyZXMn LCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0MgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0J V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQiOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBS RVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMg dHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3Qg YWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVyIHRoZSBjb21taXQu Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0jIFRoZW4gMlBD IFBSRVBBUkUKLSRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwot CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikg V0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRu b2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lX0MpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5h bWVfQiwgJGFwcG5hbWVfQywgJ29uJyk7CiAKLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRl 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 IEMnKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ2FwcGx5JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0Is ICRhcHBuYW1lX0MsICdhcHBseScpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy M190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggZDg0NzVkMjVhNC4uZjU1YzVjOTVlNyAxMDA2NDQK LS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC04LDYg KzgsMjY2IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBj b21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIiBvcHRpb24K KyMgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24g YW5kIHN0cmVhbWluZz1hcHBseQorIyBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfYXBwbHkp ID0gQF87CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQ UkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQ QyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgorCSMKKwkjIEV4 cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUg Y29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhh dCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRpb24gaXMKKwkj IHNwZWNpZmllZCBhcyAiYXBwbHkiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxv ZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9n IHZlcmJvc2l0eS4KKwlpZiAoJGlzX2FwcGx5KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVn MSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBjaGVjayB0aGF0IDJQ QyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJaWYgKCRpc19h cHBseSkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJH VyAjXGQrXF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRl ZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01NSVQgUFJF UEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAor CQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5k IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFDSyBQUkVQQVJFRC4K KwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMg My4gRG8gcm9sbGJhY2sgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBs ZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3Mg KHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIFRoZW4g aW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0Ig bGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ CUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90 YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJz Y3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJl c3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisK KwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFi JzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCisJJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDJ8MnwyKSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQg YmFjaywgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MnCisJKTsKKworCSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisJIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVj b2RlZCBwcm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgorCSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJIyAyLiBUaGVu IHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4K KwkjIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlv biBpcyBjb21taXR0ZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCisJIyBOb3RlOiBib3RoIHB1Ymxpc2hl ciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0YXJ0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMn LCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJl cGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwor CSRub2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7CisKKwkkbm9kZV9wdWJsaXNoZXIt PnN0YXJ0OworCSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisJIyBjb21taXQgcG9zdCB0aGUg cmVzdGFydAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01N SVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxl CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkg MlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRh aW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBS RVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAy UEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhl IFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sgUFJFUEFSRUQuCisJIworCSMgRXhw ZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1 YnNjcmliZXIKKwkjICh0aGUgb3JpZ2luYWwgMiArIGluc2VydGVkIDEpLgorCSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQg Zm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsK KworCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0 YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXInKTsKKworCSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRz aWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCisJIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9u IHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEg c2VwYXJhdGUgcHJpbWFyeSBrZXkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7 CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRf dGFiJzsiKTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyLAor CSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBs aWNhdGVkCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0 X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwKKwkJJ2NoZWNrIHRoZSBvdXRzaWRlIGlu c2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg YWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJF UEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSBy ZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQ Qy4KKwkjIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUg UFJFUEFSRS4KKwkjIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0 IDJQQyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUg MzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwg YmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIFRoZW4gaW5zZXJ0 LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQu CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lO OworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30p OworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVy CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIElu c2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRy YW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cg bG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkg a2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJ TlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNh Y3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0 IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFx KDMzMzV8MzMzNXwzMzM1KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIChhcyB3ZWxsIGFzIG91 dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNl dHVwCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszMDgsMTAgQEAg JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9z dWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0 cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJ UFRJT04gdGFwX3N1YgpAQCAtNzAsMjM2ICszMzQsMzAgQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5ID0K ICRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3BoYXNl X3F1ZXJ5KQogICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVy IHRvIGVuYWJsZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK ICMgQ2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBp bml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4K LSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBk byBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9u IHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotCi0jIGNoZWNrIHRoYXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRo ZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90 YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwot Ci0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2Ny aWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQ QyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBx cSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVk IG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMn Ci0pOwotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAot CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJB Q0sgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2gg YXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2lu ZyAyUEMuCi0jIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xs cyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAy IHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVu IGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlC RUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30p OwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNo ZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgot JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEp LCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFu c2FjdGlvbiBnZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0 cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIp LAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0 aGUgb3JpZ2luYWwgMiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vi c2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRo YXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3Rh cnQuCi0jIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVk IHRoZSA2NGtCIGxpbWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBD IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFy dGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFs bCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQu Ci0jIE5vdGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQu Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0J REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgn aW1tZWRpYXRlJyk7Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9k ZV9wdWJsaXNoZXItPnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29tbWl0 IHBvc3QgdGhlIHJlc3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIGNoZWNrIGluc2Vy dHMgYXJlIHZpc2libGUKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnYXBwbHknCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJl YW1pbmcnOyIKICk7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5T RVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQuCi0jIDEu IFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMuIEEgc2lu Z2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4KLSMgNC4g VGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhlIDJQQyBkYXRhIHJv bGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJlcgotIyAodGhlIG9y aWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK LQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJl cGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBS RVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0 aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlz IHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3Jk IChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhl IDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMg aW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5 LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVz dF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJz Y3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMgc3RpbGwg d2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91dHNpZGUg aW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBh Ym9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQgUFJFUEFS RUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxp Y2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0j IDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFS RS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQQyBkYXRh ICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0ICsgaW5z ZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZp cnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRl ZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxl dGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDAp IHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBU UkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3 ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3RlOiB0aGUgMlBDIHRy YW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQg aXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29i YXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IGFwcGx5KSIpOwogCi0jIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEo MzMzNXwzMzM1fDMzMzUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRz aWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVl cnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3Rh dF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2Fp dGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwog Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBjbGVhbnVw Ci0tIAoyLjIzLjAud2luZG93cy4xCgo= --_005_OS3PR01MB62758A881FF3240171B7B21B9EDE9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v8-0003-Add-some-checks-before-using-apply-background-wor.patch" Content-Description: v8-0003-Add-some-checks-before-using-apply-background-wor.patch Content-Disposition: attachment; filename="v8-0003-Add-some-checks-before-using-apply-background-wor.patch"; size=27574; creation-date="Thu, 02 Jun 2022 09:54:00 GMT"; modification-date="Thu, 02 Jun 2022 10:01:36 GMT" Content-Transfer-Encoding: base64 RnJvbSA0ZjA1MDU5NTVkNjAzYTUzN2RjYWQ5ZTM5OTQ0OWNlNmU4ZjEyNmQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VGh1LCAyIEp1biAyMDIyIDE3OjAzOjAyICswODAwClN1YmplY3Q6IFtQQVRDSCB2OCAzLzRdIEFk ZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKIHRvIGFw cGx5IGNoYW5nZXMuCgpJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjaGVja3MgYXJlIHZpb2xhdGVk LCBhbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkLgoxLiBUaGUgdW5pcXVlIGNvbHVtbnMgYmV0d2Vl biBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgYXJlIGRpZmZlcmVuY2UuCjIuIFRoZXJlIGlzIGFu eSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIHByZXNlbnQgaW4gZXhwcmVzc2lvbiBpbiBzdWJzY3Jp YmVyJ3MKcmVsYXRpb24uIENoZWNrIGZyb20gdGhlIGZvbGxvd2luZyAzIGl0ZW1zOgogICAgYS4g VGhlIGZ1bmN0aW9uIGluIHRyaWdnZXJzOwogICAgYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhw cmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsKICAgIGMuIENvbnN0cmFpbnQgZXhwcmVz c2lvbnMuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAg IHwgICA0ICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYyAgICAgICB8 ICA0NiArKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAg fCAgNjIgKysrKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMg ICAgfCAxODMgKysrKysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC90YWJsZXN5bmMuYyAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMgICAgICB8ICAgNiArCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5j ICAgICAgICAgICAgfCAgMTcgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90 by5oICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRp b24uaCAgICAgfCAgMTUgKysKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oICAgICAgICAgICAg ICAgICAgfCAgIDIgKwogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBs ICAgIHwgICA3ICsKIC4uLi9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsICAg ICB8IDIwNiArKysrKysrKysrKysrKysrKysKIDEzIGZpbGVzIGNoYW5nZWQsIDU0NiBpbnNlcnRp b25zKCspLCA1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IGQ0Y2FhZTAyMjIuLjhkZTFhMjNjZTQgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNDAsNiArMjQwLDEwIEBA IENSRUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNj cmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgdGhlIHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hlbgogICAgICAgICAgIGFw cGx5aW5nIGNoYW5nZXMgaW4gYSBiYWNrZ3JvdW5kIHdvcmtlciwgaXQgbWlnaHQgbm90IHJlcG9y dCB0aGUKICAgICAgICAgICBmaW5pc2ggTFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24gaW4g dGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgVG8gcnVuIGluIHRoaXMgbW9kZSwgdGhlcmUgYXJl IGZvbGxvd2luZyB0d28gcmVxdWlyZW1lbnRzLiBUaGUgZmlyc3QKKyAgICAgICAgICBpcyB0aGF0 IHRoZSB1bmlxdWUgY29sdW1uIHNob3VsZCBiZSB0aGUgc2FtZSBiZXR3ZWVuIHB1Ymxpc2hlciBh bmQKKyAgICAgICAgICBzdWJzY3JpYmVyOyB0aGUgc2Vjb25kIGlzIHRoYXQgdGhlcmUgc2hvdWxk IG5vdCBiZSBhbnkgbm9uLWltbXV0YWJsZQorICAgICAgICAgIGZ1bmN0aW9uIGluIHN1YnNjcmli ZXItc2lkZSByZXBsaWNhdGVkIHRhYmxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xp c3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYwppbmRleCA5ZmNjNjAwMjI3Li40MTg0MzQzZjZj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9r ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIu YwpAQCAtNzQxLDMgKzc0MSw0OSBAQCBhcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKFRy YW5zYWN0aW9uSWQgY3VycmVudF94aWQpCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgp OwogCX0KIH0KKworLyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gdGhpcyBsb2dpY2FsIHJlcGxp Y2F0aW9uIHJlbGF0aW9uIGNhbiBiZSBhcHBsaWVkIGJ5CisgKiBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlci4KKyAqCisgKiBBbHRob3VnaCB3ZSBtYWludGFpbnMgdGhlIGNvbW1pdCBvcmRlciBieSBh bGxvd2luZyBvbmx5IG9uZSBwcm9jZXNzIHRvCisgKiBjb21taXQgYXQgYSB0aW1lLCBvdXIgYWNj ZXNzIG9yZGVyIHRvIHRoZSByZWxhdGlvbiBoYXMgY2hhbmdlZC4KKyAqIFRoaXMgY291bGQgY2F1 c2UgdW5leHBlY3RlZCBwcm9ibGVtcyBpZiB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcmVwbGlj YXRlZAorICogdGFibGUgaXMgaW5jb25zaXN0ZW50IHdpdGggdGhlIHB1Ymxpc2hlci1zaWRlIG9y IGNvbnRhaW5zIG5vbi1pbW11dGFibGUKKyAqIGZ1bmN0aW9ucyB3aGVuIGFwcGx5aW5nIHRyYW5z YWN0aW9ucyBpbiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisgKi8KK3ZvaWQKK2FwcGx5 X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQorewor CS8qIENoZWNrIG9ubHkgd2UgYXJlIGluIGFwcGx5IGJnd29ya2VyLiAqLworCWlmICghYW1fYXBw bHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOworCisJLyoKKwkgKiBGSVhNRTogQ2hlY2tzIG9uIHBh cnRpdGlvbmVkIHRhYmxlcyBhcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuIEFkZGluZworCSAq IHRoaXMgY2hlY2sgcmVxdWlyZXMgYWRkaXRpb25hbCBmaXhlcyBmb3Igb3RoZXIgaXNzdWVzLiBJ IHdpbGwgYWRkIHRoaXMKKwkgKiBsYXRlciwgYWZ0ZXIgdGhlIHJlbGF0ZWQgaXNzdWVzIGFyZSBm aXhlZC4KKwkgKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVybjsKKworCS8qCisJICogSWYgYW55IHVuaXF1 ZSBpbmRleCBleGlzdCwgY2hlY2sgdGhhdCB0aGV5IGFyZSBzYW1lIGFzIHJlbW90ZXJlbC4KKwkg Ki8KKwlpZiAoIXJlbC0+c2FtZXVuaXF1ZSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY2Fubm90IHJl cGxpY2F0ZSByZWxhdGlvbiB3aXRoIGRpZmZlcmVudCB1bmlxdWUgaW5kZXgiKSwKKwkJCQkgZXJy aGludCgiUGxlYXNlIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG9wdGlvbiB0byAnb24nIGluc3RlYWQg b2YgJ2FwcGx5Jy4iKSkpOworCisJLyoKKwkgKiBDaGVjayBpZiB0aGVyZSBpcyBhbnkgbm9uLWlt bXV0YWJsZSBmdW5jdGlvbiBwcmVzZW50IGluIGV4cHJlc3Npb24gaW4KKwkgKiB0aGlzIHJlbGF0 aW9uLgorCSAqLworCWlmIChyZWwtPnZvbGF0aWxpdHkgPT0gRlVOQ1RJT05fTk9OSU1NVVRBQkxF KQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBp cyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiIpLAorCQkJCSBlcnJoaW50KCJQ bGVhc2UgY2hhbmdlIHRoZSBzdHJlYW1pbmcgb3B0aW9uIHRvICdvbicgaW5zdGVhZCBvZiAnYXBw bHknLiIpKSk7CisKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRl eCBmZjg1MTNlMmQyLi4yMGQxOGYyYmVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9wcm90by5jCkBAIC0yMyw3ICsyMyw4IEBACiAvKgogICogUHJvdG9jb2wgbWVzc2FnZSBmbGFn cy4KICAqLwotI2RlZmluZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkgMQorI2RlZmlu ZSBMT0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFkJCTB4MDAwMQorI2RlZmluZSBMT0dJQ0FM UkVQX0lTX1VOSVFVRQkJCQkweDAwMDIKIAogI2RlZmluZSBNRVNTQUdFX1RSQU5TQUNUSU9OQUwg KDE8PDApCiAjZGVmaW5lIFRSVU5DQVRFX0NBU0NBREUJCSgxPDwwKQpAQCAtOTMzLDExICs5MzQs NTUgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVs LCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1aW50 MTYJCW5saXZlYXR0cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0bWFw c2V0ICAqaWRhdHRycyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29sCQly ZXBsaWRlbnRmdWxsOwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAorCWlmIChy ZWwtPnJkX3JlbC0+cmVsaGFzaW5kZXgpCisJeworCQlMaXN0CSAgICppbmRleG9pZGxpc3QgPSBS ZWxhdGlvbkdldEluZGV4TGlzdChyZWwpOworCQlMaXN0Q2VsbCAgICppbmRleG9pZHNjYW47CisK KwkJZm9yZWFjaChpbmRleG9pZHNjYW4sIGluZGV4b2lkbGlzdCkKKwkJeworCQkJT2lkCQkJaW5k ZXhvaWQgPSBsZmlyc3Rfb2lkKGluZGV4b2lkc2Nhbik7CisJCQlSZWxhdGlvbglpbmRleFJlbDsK KworCQkJLyogTG9vayB1cCB0aGUgZGVzY3JpcHRpb24gZm9yIGluZGV4ICovCisJCQlpbmRleFJl bCA9IFJlbGF0aW9uSWRHZXRSZWxhdGlvbihpbmRleG9pZCk7CisKKwkJCWlmICghUmVsYXRpb25J c1ZhbGlkKGluZGV4UmVsKSkKKwkJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4gcmVsYXRp b24gd2l0aCBPSUQgJXUiLCBpbmRleG9pZCk7CisKKwkJCWlmIChpbmRleFJlbC0+cmRfaW5kZXgt PmluZGlzdW5pcXVlKQorCQkJeworCQkJCWludAkJCWk7CisKKwkJCQkvKiBBZGQgcmVmZXJlbmNl ZCBhdHRyaWJ1dGVzIHRvIGlkaW5kZXhhdHRycyAqLworCQkJCWZvciAoaSA9IDA7IGkgPCBpbmRl eFJlbC0+cmRfaW5kZXgtPmluZG5hdHRzOyBpKyspCisJCQkJeworCQkJCQlpbnQJCQlhdHRybnVt ID0gaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOworCisJCQkJCS8qCisJCQkJ CSAqIFdlIGRvbid0IGluY2x1ZGUgbm9uLWtleSBjb2x1bW5zIGludG8gaWRpbmRleGF0dHJzCisJ CQkJCSAqIGJpdG1hcHMuIFNlZSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcC4KKwkJCQkJICov CisJCQkJCWlmIChhdHRybnVtICE9IDApCisJCQkJCXsKKwkJCQkJCWlmIChpIDwgaW5kZXhSZWwt PnJkX2luZGV4LT5pbmRua2V5YXR0cyAmJgorCQkJCQkJCSFibXNfaXNfbWVtYmVyKGF0dHJudW0g LSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLCBhdHR1bmlxdWUpKQorCQkJCQkJ CWF0dHVuaXF1ZSA9IGJtc19hZGRfbWVtYmVyKGF0dHVuaXF1ZSwKKwkJCQkJCQkJCQkJCQkgICBh dHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQkJCX0KKwkJ CQl9CisJCQl9CisJCQlSZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsKKwkJfQorCQlsaXN0X2ZyZWUo aW5kZXhvaWRsaXN0KTsKKwl9CisKIAkvKiBzZW5kIG51bWJlciBvZiBsaXZlIGF0dHJpYnV0ZXMg Ki8KIAlmb3IgKGkgPSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzYsNiArMTAy MSwxMCBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiBy ZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAkJCQkJCSAgaWRhdHRycykpCiAJCQlmbGFncyB8PSBM T0dJQ0FMUkVQX0lTX1JFUExJQ0FfSURFTlRJVFk7CiAKKwkJaWYgKGJtc19pc19tZW1iZXIoYXR0 LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAorCQkJCQkJICBh dHR1bmlxdWUpKQorCQkJZmxhZ3MgfD0gTE9HSUNBTFJFUF9JU19VTklRVUU7CisKIAkJcHFfc2Vu ZGJ5dGUob3V0LCBmbGFncyk7CiAKIAkJLyogYXR0cmlidXRlIG5hbWUgKi8KQEAgLTEwMDEsNyAr MTA1MCw4IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVw UmVsYXRpb24gKnJlbCkKIAlpbnQJCQluYXR0czsKIAljaGFyCSAgKiphdHRuYW1lczsKIAlPaWQJ CSAgICphdHR0eXBzOwotCUJpdG1hcHNldCAgKmF0dGtleXMgPSBOVUxMOworCUJpdG1hcHNldCAg KmF0dGtleXMgPSBOVUxMLAorCQkJICAgKmF0dHVuaXF1ZSA9IE5VTEw7CiAKIAluYXR0cyA9IHBx X2dldG1zZ2ludChpbiwgMik7CiAJYXR0bmFtZXMgPSBwYWxsb2MobmF0dHMgKiBzaXplb2YoY2hh ciAqKSk7CkBAIC0xMDEyLDExICsxMDYyLDE0IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJp bmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAl7CiAJCXVpbnQ4CQlmbGFnczsK IAotCQkvKiBDaGVjayBmb3IgcmVwbGljYSBpZGVudGl0eSBjb2x1bW4gKi8KKwkJLyogQ2hlY2sg Zm9yIHJlcGxpY2EgaWRlbnRpdHkgYW5kIHVuaXF1ZSBjb2x1bW4gKi8KIAkJZmxhZ3MgPSBwcV9n ZXRtc2dieXRlKGluKTsKIAkJaWYgKGZsYWdzICYgTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lERU5U SVRZKQogCQkJYXR0a2V5cyA9IGJtc19hZGRfbWVtYmVyKGF0dGtleXMsIGkpOwogCisJCWlmIChm bGFncyAmIExPR0lDQUxSRVBfSVNfVU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1i ZXIoYXR0dW5pcXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlhdHRuYW1lc1tp XSA9IHBzdHJkdXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiArMTA4Myw3IEBA IGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24g KnJlbCkKIAlyZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBzID0gYXR0dHlw czsKIAlyZWwtPmF0dGtleXMgPSBhdHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0gYXR0dW5pcXVl OwogCXJlbC0+bmF0dHMgPSBuYXR0czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZWxhdGlvbi5jCmluZGV4IDgwZmI1NjFhOWEuLjI3MzZiYTFmNGEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsxOSwxOCBAQAog CiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2Uu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1 ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIK ICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKICNpbmNsdWRlICJyZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5k bGVyLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lzY2Fj aGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL3R5cGNh Y2hlLmgiCiAKIAogc3RhdGljIE1lbW9yeUNvbnRleHQgTG9naWNhbFJlcFJlbE1hcENvbnRleHQg PSBOVUxMOwpAQCAtOTEsNiArOTcsMjMgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9j YihEYXR1bSBhcmcsIE9pZCByZWxvaWQpCiAJfQogfQogCisvKgorICogUmVzZXQgdGhlIGZsYWcg dm9sYXRpbGl0eSBvZiBhbGwgZXhpc3RpbmcgZW50cnkgaW4gdGhlIHJlbGF0aW9uIG1hcCBjYWNo ZS4KKyAqLworc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfcmVsbWFwX3Jlc2V0X3ZvbGF0aWxpdHlf Y2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwlIQVNIX1NF UV9TVEFUVVMgaGFzaF9zZXE7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeTsKKworCWlm IChMb2dpY2FsUmVwUmVsTWFwID09IE5VTEwpCisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQo Jmhhc2hfc2VxLCBMb2dpY2FsUmVwUmVsTWFwKTsKKwl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFf c2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJCWVudHJ5LT52b2xhdGlsaXR5ID0gRlVOQ1RJ T05fVU5LTk9XTjsKK30KKwogLyoKICAqIEluaXRpYWxpemUgdGhlIHJlbGF0aW9uIG1hcCBjYWNo ZS4KICAqLwpAQCAtMTE2LDYgKzEzOSw5IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkK IAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0aW9uIGV2ZW50cy4gKi8KIAlDYWNoZVJlZ2lzdGVyUmVs Y2FjaGVDYWxsYmFjayhsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiLAogCQkJCQkJCQkg IChEYXR1bSkgMCk7CisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soUFJPQ09JRCwKKwkJ CQkJCQkJICBsb2dpY2FscmVwX3JlbG1hcF9yZXNldF92b2xhdGlsaXR5X2NiLAorCQkJCQkJCQkg IChEYXR1bSkgMCk7CiB9CiAKIC8qCkBAIC0xNDIsNiArMTY4LDcgQEAgbG9naWNhbHJlcF9yZWxt YXBfZnJlZV9lbnRyeShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogCQlwZnJlZShyZW1v dGVyZWwtPmF0dHR5cHMpOwogCX0KIAlibXNfZnJlZShyZW1vdGVyZWwtPmF0dGtleXMpOworCWJt c19mcmVlKHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAogCWlmIChlbnRyeS0+YXR0cm1hcCkKIAkJ cGZyZWUoZW50cnktPmF0dHJtYXApOwpAQCAtMTkwLDYgKzIxNyw3IEBAIGxvZ2ljYWxyZXBfcmVs bWFwX3VwZGF0ZShMb2dpY2FsUmVwUmVsYXRpb24gKnJlbW90ZXJlbCkKIAl9CiAJZW50cnktPnJl bW90ZXJlbC5yZXBsaWRlbnQgPSByZW1vdGVyZWwtPnJlcGxpZGVudDsKIAllbnRyeS0+cmVtb3Rl cmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOworCWVudHJ5LT5yZW1v dGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHR1bmlxdWUpOwogCU1lbW9y eUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogfQogCkBAIC0zMDcsNyArMzM1LDggQEAgbG9naWNh bHJlcF9yZWxfb3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tNT0RFIGxvY2ttb2Rl KQogCWlmICghZW50cnktPmxvY2FscmVsdmFsaWQpCiAJewogCQlPaWQJCQlyZWxpZDsKLQkJQml0 bWFwc2V0ICAqaWRrZXk7CisJCUJpdG1hcHNldCAgKmlka2V5LAorCQkJCSAgICp1a2V5OwogCQlU dXBsZURlc2MJZGVzYzsKIAkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAJCWludAkJCWk7CkBAIC00 MTUsNiArNDQ0LDE1NyBAQCBsb2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxSZXBSZWxJZCByZW1v dGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJCQl9CiAJCX0KIAorCQkvKgorCQkgKiBDaGVjayB3 aGV0aGVyIHRoZSB1bmlxdWUgaW5kZXggb2YgcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGFyZQor CQkgKiBjb25zaXN0ZW50LgorCQkgKi8KKwkJZW50cnktPnNhbWV1bmlxdWUgPSB0cnVlOworCQl1 a2V5ID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoZW50cnktPmxvY2FscmVsLAorCQkJCQkJ CQkJCSAgSU5ERVhfQVRUUl9CSVRNQVBfS0VZKTsKKworCQlpZiAodWtleSkKKwkJeworCQkJaSA9 IC0xOworCQkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHVrZXksIGkpKSA+PSAwKQorCQkJ eworCQkJCWludAkJCWF0dG51bSA9IGkgKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVt YmVyOworCisJCQkJYXR0bnVtID0gQXR0ck51bWJlckdldEF0dHJPZmZzZXQoYXR0bnVtKTsKKwor CQkJCWlmIChlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCB8fAorCQkJCQkhYm1z X2lzX21lbWJlcihlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dLCByZW1vdGVyZWwtPmF0 dHVuaXF1ZSkpCisJCQkJeworCQkJCQllbnRyeS0+c2FtZXVuaXF1ZSA9IGZhbHNlOworCQkJCQli cmVhazsKKwkJCQl9CisJCQl9CisJCX0KKworCQlpZiAoZW50cnktPnZvbGF0aWxpdHkgPT0gRlVO Q1RJT05fVU5LTk9XTikKKwkJeworCQkJLyoKKwkJCSAqIENoZWNrIGZyb20gdGhlIGZvbGxvd2lu ZyBwb2ludHM6CisJCQkgKgorCQkJICogYS4gVGhlIGZ1bmN0aW9uIGluIHRyaWdnZXJzOworCQkJ ICogYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMgYW5kIGRvbWFpbiBjb25zdHJh aW50czsKKwkJCSAqIGMuIENvbnN0cmFpbnQgZXhwcmVzc2lvbnMuCisJCQkgKi8KKwkJCWJvb2wJ CW5vbmltbXV0YWJsZSA9IGZhbHNlOworCisJCQkvKiBDaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlv bnMuICovCisJCQlpZiAoIW5vbmltbXV0YWJsZSkKKwkJCXsKKwkJCQlpbnQJCQlpOworCisJCQkJ aWYgKGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MgIT0gTlVMTCkKKwkJCQkJZm9yIChpID0gMDsg aSA8IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCisJCQkJCXsK KwkJCQkJCVRyaWdnZXIgICAgKnRyaWcgPSBlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjLT50cmln Z2VycyArIGk7CisKKwkJCQkJCWlmIChmdW5jX3ZvbGF0aWxlKHRyaWctPnRnZm9pZCkgIT0gUFJP Vk9MQVRJTEVfSU1NVVRBQkxFKQorCQkJCQkJeworCQkJCQkJCW5vbmltbXV0YWJsZSA9IHRydWU7 CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCX0KKwkJCX0KKworCQkJLyogQ2hlY2sgdGhl IGNvbHVtbnMuICovCisJCQlpZiAoIW5vbmltbXV0YWJsZSkKKwkJCXsKKwkJCQlUdXBsZURlc2MJ dHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoZW50cnktPmxvY2FscmVsKTsKKwkJCQlpbnQJCQlh dHRudW07CisKKwkJCQlmb3IgKGF0dG51bSA9IDA7IGF0dG51bSA8IHR1cGRlc2MtPm5hdHRzOyBh dHRudW0rKykKKwkJCQl7CisJCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0 dHIodHVwZGVzYywgYXR0bnVtKTsKKworCQkJCQkvKiBicmVhayBpZiB3ZSBzZXQgbm9uaW1tdXRh YmxlIGluIGxhc3QgY2hlY2sgZm9yIGRvbWFpbi4gKi8KKwkJCQkJaWYgKG5vbmltbXV0YWJsZSkK KwkJCQkJCWJyZWFrOworCisJCQkJCS8qIFdlIGRvbid0IG5lZWQgaW5mbyBmb3IgZHJvcHBlZCBv ciBnZW5lcmF0ZWQgYXR0cmlidXRlcyAqLworCQkJCQlpZiAoYXR0LT5hdHRpc2Ryb3BwZWQgfHwg YXR0LT5hdHRnZW5lcmF0ZWQpCisJCQkJCQljb250aW51ZTsKKworCQkJCQkvKgorCQkJCQkgKiBX ZSBkb24ndCBuZWVkIHRvIGNoZWNrIGNvbHVtbnMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoZQorCQkJ CQkgKiBzdWJzY3JpYmVyCisJCQkJCSAqLworCQkJCQlpZiAoZW50cnktPmF0dHJtYXAtPmF0dG51 bXNbYXR0bnVtXSA8IDApCisJCQkJCQljb250aW51ZTsKKworCQkJCQlpZiAoYXR0LT5hdHRoYXNk ZWYpCisJCQkJCXsKKwkJCQkJCU5vZGUJICAgKmRlZmF1bHRleHByOworCisJCQkJCQlkZWZhdWx0 ZXhwciA9IGJ1aWxkX2NvbHVtbl9kZWZhdWx0KGVudHJ5LT5sb2NhbHJlbCwgYXR0bnVtICsgMSk7 CisJCQkJCQlpZiAoY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucyhkZWZhdWx0ZXhwcikpCisJCQkJ CQl7CisJCQkJCQkJbm9uaW1tdXRhYmxlID0gdHJ1ZTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0K KwkJCQkJfQorCisJCQkJCS8qCisJCQkJCSAqIElmIHRoZSBjb2x1bW4gaXMgb2YgYSBET01BSU4g dHlwZSwgZGV0ZXJtaW5lIHdoZXRoZXIKKwkJCQkJICogdGhhdCBkb21haW4gaGFzIGFueSBDSEVD SyBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QKKwkJCQkJICogaW1tdXRhYmxlLgorCQkJCQkgKi8K KwkJCQkJaWYgKGdldF90eXB0eXBlKGF0dC0+YXR0dHlwaWQpID09IFRZUFRZUEVfRE9NQUlOKQor CQkJCQl7CisJCQkJCQlMaXN0CSAgICpkb21haW5fY29uc3RyYWludHM7CisJCQkJCQlMaXN0Q2Vs bCAgICpsYzsKKworCQkJCQkJZG9tYWluX2NvbnN0cmFpbnRzID0gR2V0RG9tYWluQ29uc3RyYWlu dHMoYXR0LT5hdHR0eXBpZCk7CisKKwkJCQkJCWZvcmVhY2gobGMsIGRvbWFpbl9jb25zdHJhaW50 cykKKwkJCQkJCXsKKwkJCQkJCQlEb21haW5Db25zdHJhaW50U3RhdGUgKmNvbiA9IChEb21haW5D b25zdHJhaW50U3RhdGUgKikgbGZpcnN0KGxjKTsKKworCQkJCQkJCWlmIChjb24tPmNoZWNrX2V4 cHIgJiYgY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygoTm9kZSAqKSBjb24tPmNoZWNrX2V4cHIp KQorCQkJCQkJCXsKKwkJCQkJCQkJbm9uaW1tdXRhYmxlID0gdHJ1ZTsKKwkJCQkJCQkJYnJlYWs7 CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQkvKiBDaGVjayB0 aGUgY29uc3RyYWludHMuICovCisJCQlpZiAoIW5vbmltbXV0YWJsZSkKKwkJCXsKKwkJCQlUdXBs ZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoZW50cnktPmxvY2FscmVsKTsKKworCQkJ CWlmICh0dXBkZXNjLT5jb25zdHIpCisJCQkJeworCQkJCQlDb25zdHJDaGVjayAqY2hlY2sgPSB0 dXBkZXNjLT5jb25zdHItPmNoZWNrOworCQkJCQlpbnQJCQlpOworCisJCQkJCS8qCisJCQkJCSAq IERldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IENIRUNLIGNvbnN0cmFpbnRzIHdoaWNoCisJCQkJ CSAqIGNvbnRhaW5zIG5vbi1pbW11dGFibGUgZnVuY3Rpb24uCisJCQkJCSAqLworCQkJCQlmb3Ig KGkgPSAwOyBpIDwgdHVwZGVzYy0+Y29uc3RyLT5udW1fY2hlY2s7IGkrKykKKwkJCQkJeworCQkJ CQkJRXhwcgkgICAqY2hlY2tfZXhwciA9IHN0cmluZ1RvTm9kZShjaGVja1tpXS5jY2Jpbik7CisK KwkJCQkJCWlmIChjb250YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGNoZWNrX2V4cHIp KQorCQkJCQkJeworCQkJCQkJCW5vbmltbXV0YWJsZSA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJ CQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCWlmIChub25pbW11dGFibGUpCisJCQkJ ZW50cnktPnZvbGF0aWxpdHkgPSBGVU5DVElPTl9OT05JTU1VVEFCTEU7CisJCQllbHNlCisJCQkJ ZW50cnktPnZvbGF0aWxpdHkgPSBGVU5DVElPTl9JTU1VVEFCTEU7CisJCX0KKwogCQllbnRyeS0+ bG9jYWxyZWx2YWxpZCA9IHRydWU7CiAJfQogCkBAIC01NzAsNiArNzUwLDcgQEAgbG9naWNhbHJl cF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJvb3QsCiAJfQogCWVudHJ5 LT5yZW1vdGVyZWwucmVwbGlkZW50ID0gcmVtb3RlcmVsLT5yZXBsaWRlbnQ7CiAJZW50cnktPnJl bW90ZXJlbC5hdHRrZXlzID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHRrZXlzKTsKKwllbnRyeS0+ cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAog CWVudHJ5LT5sb2NhbHJlbCA9IHBhcnRyZWw7CiAJZW50cnktPmxvY2FscmVsb2lkID0gcGFydE9p ZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5j LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDhm ZmJhN2UyZTUuLjNjZGJmOGI0NTcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC90YWJsZXN5bmMuYwpAQCAtODg0LDYgKzg4NCw3IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZv KGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsCiAJbHJlbC0+YXR0bmFtZXMgPSBwYWxsb2Mw KE1heFR1cGxlQXR0cmlidXRlTnVtYmVyICogc2l6ZW9mKGNoYXIgKikpOwogCWxyZWwtPmF0dHR5 cHMgPSBwYWxsb2MwKE1heFR1cGxlQXR0cmlidXRlTnVtYmVyICogc2l6ZW9mKE9pZCkpOwogCWxy ZWwtPmF0dGtleXMgPSBOVUxMOworCWxyZWwtPmF0dHVuaXF1ZSA9IE5VTEw7CiAKIAkvKgogCSAq IFN0b3JlIHRoZSBjb2x1bW5zIGFzIGEgbGlzdCBvZiBuYW1lcy4gIElnbm9yZSB0aG9zZSB0aGF0 IGFyZSBub3QKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDIw Yzc4NjUyNzUuLjczNTViMzBiZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYwpAQCAtMTg5Niw2ICsxODk2LDggQEAgYXBwbHlfaGFuZGxlX2luc2VydChTdHJpbmdJ bmZvIHMpCiAJLyogU2V0IHJlbGF0aW9uIGZvciBlcnJvciBjYWxsYmFjayAqLwogCWFwcGx5X2Vy cm9yX2NhbGxiYWNrX2FyZy5yZWwgPSByZWw7CiAKKwlhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9j aGVjayhyZWwpOworCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRh dGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVz dGF0ZTsKQEAgLTIwMzIsNiArMjAzNCw4IEBAIGFwcGx5X2hhbmRsZV91cGRhdGUoU3RyaW5nSW5m byBzKQogCS8qIENoZWNrIGlmIHdlIGNhbiBkbyB0aGUgdXBkYXRlLiAqLwogCWNoZWNrX3JlbGF0 aW9uX3VwZGF0YWJsZShyZWwpOwogCisJYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2socmVs KTsKKwogCS8qIEluaXRpYWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3Jl YXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBA IC0yMjAwLDYgKzIyMDQsOCBAQCBhcHBseV9oYW5kbGVfZGVsZXRlKFN0cmluZ0luZm8gcykKIAkv KiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIGRlbGV0ZS4gKi8KIAljaGVja19yZWxhdGlvbl91cGRh dGFibGUocmVsKTsKIAorCWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkv KiBJbml0aWFsaXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0 YV9mb3JfcmVsYXRpb24ocmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggODA4ZjllYmQwZC4uYjI0ODg5OWQ4MiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0yNTQwLDYgKzI1NDAsMjMgQEAgY29tcGFyZV92YWx1 ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQgYXJnMSwgT2lkIGFyZzIpCiAJ CXJldHVybiAwOwogfQogCisvKgorICogR2V0RG9tYWluQ29uc3RyYWludHMgLS0tIGdldCBEb21h aW5Db25zdHJhaW50U3RhdGUgbGlzdCBvZiBzcGVjaWZpZWQgZG9tYWluIHR5cGUKKyAqLworTGlz dCAqCitHZXREb21haW5Db25zdHJhaW50cyhPaWQgdHlwZV9pZCkKK3sKKwlUeXBlQ2FjaGVFbnRy eSAqdHlwZW50cnk7CisJTGlzdAkJICAgKmNvbnN0cmFpbnRzID0gTklMOworCisJdHlwZW50cnkg PSBsb29rdXBfdHlwZV9jYWNoZSh0eXBlX2lkLCBUWVBFQ0FDSEVfRE9NQUlOX0NPTlNUUl9JTkZP KTsKKworCWlmKHR5cGVudHJ5LT5kb21haW5EYXRhICE9IE5VTEwpCisJCWNvbnN0cmFpbnRzID0g dHlwZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRzOworCisJcmV0dXJuIGNvbnN0cmFpbnRz OworfQorCiAvKgogICogTG9hZCAob3IgcmUtbG9hZCkgdGhlIGVudW1EYXRhIG1lbWJlciBvZiB0 aGUgdHlwY2FjaGUgZW50cnkuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3Rv LmgKaW5kZXggYTc3MWFiOGZmMy4uYTg4NTM1ODIwYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmgKQEAgLTEwOCw2ICsxMDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2Fs UmVwUmVsYXRpb24KIAljaGFyCQlyZXBsaWRlbnQ7CQkvKiByZXBsaWNhIGlkZW50aXR5ICovCiAJ Y2hhcgkJcmVsa2luZDsJCS8qIHJlbW90ZSByZWxhdGlvbiBraW5kICovCiAJQml0bWFwc2V0ICAq YXR0a2V5czsJCS8qIEJpdG1hcCBvZiBrZXkgY29sdW1ucyAqLworCUJpdG1hcHNldCAgKmF0dHVu aXF1ZTsJCS8qIEJpdG1hcCBvZiB1bmlxdWUgY29sdW1ucyAqLwogfSBMb2dpY2FsUmVwUmVsYXRp b247CiAKIC8qIFR5cGUgbWFwcGluZyBpbmZvICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxyZWxhdGlvbi5oCmluZGV4IDdiZjhjZDIyYmQuLjlmNTY4ZTljMDAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0xNSw2ICsxNSwxNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscHJv dG8uaCIKIAorLyoKKyAqCVN0YXRlcyB0byBkZXRlcm1pbmUgdm9sYXRpbGl0eSBvZiB0aGUgZnVu Y3Rpb24gaW4gZXhwcmVzc2lvbnMgaW4gb25lCisgKglyZWxhdGlvbi4KKyAqLwordHlwZWRlZiBl bnVtIFJlbEZ1bmNWb2xhdGlsaXR5Cit7CisJRlVOQ1RJT05fVU5LTk9XTiA9IDAsCS8qIGluaXRp YWxpemluZyAgKi8KKwlGVU5DVElPTl9JTU1VVEFCTEUsCQkvKiBhbGwgZnVuY3Rpb25zIGFyZSBp bW11dGFibGUgZnVuY3Rpb24gKi8KKwlGVU5DVElPTl9OT05JTU1VVEFCTEUJLyogYXQgbGVhc3Qg b25lIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gKi8KK30gUmVsRnVuY1ZvbGF0aWxpdHk7CisKIHR5 cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogewogCUxvZ2ljYWxSZXBSZWxhdGlv biByZW1vdGVyZWw7CS8qIGtleSBpcyByZW1vdGVyZWwucmVtb3RlaWQgKi8KQEAgLTMxLDYgKzQy LDEwIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogCVJlbGF0aW9uCWxv Y2FscmVsOwkJLyogcmVsY2FjaGUgZW50cnkgKE5VTEwgd2hlbiBjbG9zZWQpICovCiAJQXR0ck1h cCAgICAqYXR0cm1hcDsJCS8qIG1hcCBvZiBsb2NhbCBhdHRyaWJ1dGVzIHRvIHJlbW90ZSBvbmVz ICovCiAJYm9vbAkJdXBkYXRhYmxlOwkJLyogQ2FuIGFwcGx5IHVwZGF0ZXMvZGVsZXRlcz8gKi8K Kwlib29sCQlzYW1ldW5pcXVlOwkJLyogSXMgdGhlIHVuaXF1ZSBjb2x1bW4gb2YgbG9jYWwgYW5k IHJlbW90ZQorCQkJCQkJCQkgICBjb25zaXN0ZW50PyAqLworCVJlbEZ1bmNWb2xhdGlsaXR5CXZv bGF0aWxpdHk7CQkvKiBhbGwgZnVuY3Rpb25zIGluIGxvY2FscmVsIGFyZQorCQkJCQkJCQkgICBp bW11dGFibGUgZnVuY3Rpb24/ICovCiAKIAkvKiBTeW5jIHN0YXRlLiAqLwogCWNoYXIJCXN0YXRl OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCBlMmQyMTQ0 NGMwLi4xZGMxYTQ5MWU5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaApAQCAtMTkyLDYgKzE5Miw3IEBAIGV4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX2ZyZWUo QXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpOwogZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJf Y2hlY2tfc3RhdHVzKHZvaWQpOwogZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1 cyhBcHBseUJnd29ya2VyU3RhdHVzIHN0YXR1cyk7CiBleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtl cl9zdWJ4YWN0X2luZm9fYWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQpOworZXh0ZXJuIHZv aWQgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpy ZWwpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxlc3luY193b3JrZXIodm9pZCkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGls cy90eXBjYWNoZS5oCmluZGV4IDQzMWFkN2YxYjMuLmVkN2MyZTdmNDggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2Fj aGUuaApAQCAtMTk5LDYgKzE5OSw4IEBAIGV4dGVybiB1aW50NjQgYXNzaWduX3JlY29yZF90eXBl X2lkZW50aWZpZXIoT2lkIHR5cGVfaWQsIGludDMyIHR5cG1vZCk7CiAKIGV4dGVybiBpbnQJY29t cGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQgYXJnMSwgT2lk IGFyZzIpOwogCitleHRlcm4gTGlzdCAqR2V0RG9tYWluQ29uc3RyYWludHMoT2lkIHR5cGVfaWQp OworCiBleHRlcm4gc2l6ZV90IFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5RXN0aW1hdGUodm9p ZCk7CiAKIGV4dGVybiB2b2lkIFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5SW5pdChTaGFyZWRS ZWNvcmRUeXBtb2RSZWdpc3RyeSAqLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJf dHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCBiNTJhZjc0ZTM1Li44MTc5MWM4ZDNhIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtMzks NiArMzksMTMgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViX0MKIAkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpIik7CiAKKwlpZiAoJHN0 cmVhbWluZ19tb2RlIGVxICdhcHBseScpCisJeworCQkkbm9kZV9DLT5zYWZlX3BzcWwoCisJCQkn cG9zdGdyZXMnLCAiCisJCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIGMgRFJPUCBERUZBVUxU Iik7CisJfQorCiAJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRp b24KIAogCSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwLi43NjRlYTJlZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbApAQCAtMCwwICsxLDIwNiBAQAorIyBDb3B5 cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMg VGVzdCB0aGUgcmVzdHJpY3Rpb25zIG9mIHN0cmVhbWluZyBtb2RlICJhcHBseSIgaW4gbG9naWNh bCByZXBsaWNhdGlvbgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVz dDo6TW9yZTsKKworbXkgJG9mZnNldCA9IDA7CisKKyMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCitt eSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxp c2hlcicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ J2xvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0 YXJ0OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNj cmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworIyBTZXR1cCBzdHJ1Y3R1 cmUgb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIik7 CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHN1YnNjcmliZXIKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50IHByaW1h cnkga2V5LCBiIHZhcmNoYXIpIik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbgorbXkg JHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9 cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JF QVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisKK215ICRhcHBu YW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsICIKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwlDT05ORUNUSU9OICckcHVibGlz aGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwlQVUJMSUNBVElPTiB0YXBf cHViCisJV0lUSCAoc3RyZWFtaW5nID0gYXBwbHksIGNvcHlfZGF0YSA9IGZhbHNlKSIpOworCisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIEl0IGlzIG5v dCBhbGxvd2VkIHRoYXQgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgcHVibGlzaGVyIGFuZCB0aGUg c3Vic2NyaWJlcgorIyBpcyBkaWZmZXJlbnQuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBi YWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZXN0X3RhYl9iX2lkeCBPTiB0 ZXN0X3RhYiAoYikiKTsKKworIyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRz IGlmICJzdHJlYW1pbmciIG9wdGlvbiBpcworIyBzcGVjaWZpZWQgYXMgImFwcGx5Ii4gIFdlIGhh dmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKyMgYWJvdXQgdGhhdCwgc28g dGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKyRub2RlX3N1YnNjcmliZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVn MSIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAw KTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSJs b2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwor Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVw bGljYXRlIHJlbGF0aW9uIHdpdGggZGlmZmVyZW50IHVuaXF1ZSBpbmRleC8sCisJJG9mZnNldCk7 CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29y a3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVgg dGVzdF90YWJfYl9pZHgiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQs IHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcg aW5kZXgnKTsKKworIyBUcmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rp b24gYXJlIG5vdCBhbGxvd2VkIG9uIHRoZQorIyBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBl cnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCiskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRlVOQ1RJT04g dHJpZ2dlcl9mdW5jKCkgUkVUVVJOUyBUUklHR0VSIEFTIFwkXCQKKyAgQkVHSU4KKyAgICBSRVRV Uk4gTlVMTDsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiBp bnNlcnRfdHJpZworQkVGT1JFIElOU0VSVCBPTiB0ZXN0X3RhYgorRk9SIEVBQ0ggUk9XIEVYRUNV VEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygpOworQUxURVIgVEFCTEUgdGVzdF90YWIgRU5BQkxF IFJFUExJQ0EgVFJJR0dFUiBpbnNlcnRfdHJpZzsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3Jp YmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZS T00gdGVzdF90YWIiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VS Uk9SOiAgY2Fubm90IHJlcGxpY2F0ZSByZWxhdGlvbi4gVGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5v bi1pbW11dGFibGUgZnVuY3Rpb24vLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHRyaWdnZXIg b24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWIi KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJl c3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworCisjIEl0IGlz IG5vdCBhbGxvd2VkIHRoYXQgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBjb250YWlu cyBhCisjIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hl Y2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5CisjIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2Fz ZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJM RSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCByYW5kb20oKSIpOworCisjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVy ZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCisJJG9mZnNldCk7CisK KyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVz dF90YWIgQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi Iik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIgYWZ0ZXIgZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisKKyMgSXQgaXMg bm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEg bm9uLWltbXV0YWJsZQorIyBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0 aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZAorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLgor JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIERP TUFJTiB0ZXN0X2RvbWFpbiBBUyBpbnQgQ0hFQ0soVkFMVUUgPiByYW5kb20oKSk7CitBTFRFUiBU QUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYSBUWVBFIHRlc3RfZG9tYWluOworfSk7CisKKyMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVwbGljYXRlIHJlbGF0aW9uLiBUaGVyZSBp cyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi8sCisJJG9mZnNldCk7CisKKyMg RHJvcCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGEgVFlQRSBpbnQiKTsKKworJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00g dGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlciBhZnRlciBkcm9wcGluZyBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uJworKTsK KworIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlu cyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KKyMgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hl Y2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMKKyMgY2Fz ZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVS IFRBQkxFIHRlc3RfdGFiIEFERCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiBjaGVjayAoYSA+IHJh bmRvbSgpKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K KyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOwor Ciskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICBjYW5ub3QgcmVw bGljYXRlIHJlbGF0aW9uLiBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgbm9uLWltbXV0YWJsZSBmdW5j dGlvbi8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3Jp YmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIp OworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVz c2lvbicpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9w OworCitkb25lX3Rlc3RpbmcoKTsKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_005_OS3PR01MB62758A881FF3240171B7B21B9EDE9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v8-0004-Add-a-GUC-max_apply_bgworkers_per_subscription-to.patch" Content-Description: v8-0004-Add-a-GUC-max_apply_bgworkers_per_subscription-to.patch Content-Disposition: attachment; filename="v8-0004-Add-a-GUC-max_apply_bgworkers_per_subscription-to.patch"; size=7027; creation-date="Thu, 02 Jun 2022 09:54:00 GMT"; modification-date="Thu, 02 Jun 2022 10:01:37 GMT" Content-Transfer-Encoding: base64 RnJvbSAwY2YzMDc5MjAwYWJkYmU0MjhjZTU1Yjc5OTdlMjM0NWM4YTQwNDcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxIEp1biAyMDIyIDE5OjU5OjI3ICswODAwClN1YmplY3Q6IFtQQVRDSCB2OCA0LzRdIEFk ZCBhIEdVQyAibWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIiB0bwogY29udHJv bCBwYXJhbGxlbGlzbS4KClRoaXMgR1VDIGNvbnRyb2xzIGhvdyBtYW55IGFwcGx5IGJhY2tncm91 bmQgd29ya2VycyBjYW4gYmUgbGF1bmNoZWQgcGVyCnN1YnNjcmlwdGlvbi4KLS0tCiBkb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgfCAyNSArKysrKysrKysrKysr KysrKysrCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd3Jva2VyLmMgICAgICAgfCAg OSArKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgICAg fCAyNSArKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAg ICAgICAgICAgICAgICAgfCAxMiArKysrKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZSB8ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxsYXVuY2hlci5oICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oICAgICB8ICAxICsKIDcgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbAppbmRleCA1YjdjZTY1MzFkLi5jZTdmNjgyN2YyIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00OTcw LDYgKzQ5NzAsMzEgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3lu YzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgt YXBwbHktYmd3b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X2FwcGx5X2Jn d29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF9hcHBs eV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5 cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tYXhfYXBw bHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFy YW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIGFw cGx5IGJhY2tncm91bmQgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiBUaGlzCisgICAgICAgIHBh cmFtZXRlciBjb250cm9scyB0aGUgYW1vdW50IG9mIHBhcmFsbGVsaXNtIG9mIHRoZSBzdHJlYW1p bmcgb2YKKyAgICAgICAgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGlmIHdlIHNldCBzdWJzY3Jp cHRpb24gb3B0aW9uCisgICAgICAgIDxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gdG8gPGxp dGVyYWw+YXBwbHk8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAg ICAgICAgVGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9v bCBkZWZpbmVkIGJ5CisgICAgICAgIDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dv cmtlcnM8L3Zhcm5hbWU+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAg VGhlIGRlZmF1bHQgdmFsdWUgaXMgMy4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGlu IHRoZQorICAgICAgICA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmlsZSBv ciBvbiB0aGUgc2VydmVyIGNvbW1hbmQKKyAgICAgICAgbGluZS4KKyAgICAgICA8L3BhcmE+Cisg ICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxl bGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5Ymd3cm9rZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHliZ3dyb2tlci5jCmluZGV4IDQxODQzNDNmNmMuLjgyODYxYjBiZmQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dyb2tlci5jCkBAIC0yMSw2 ICsyMSw3IEBACiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIK ICNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIu aCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaCIKQEAgLTU1OCw5ICs1NTksMTcgQEAgYXBwbHlfYmd3b3JrZXJf c2V0dXAodm9pZCkKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CiAJYm9vbAkJbGF1bmNoZWQ7 CiAJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGU7CisJaW50CQkJbmFwcGx5d29ya2VyczsKIAog CWVsb2coREVCVUcxLCAic2V0dGluZyB1cCBhcHBseSB3b3JrZXIgIyV1IiwgbGlzdF9sZW5ndGgo QXBwbHlXb3JrZXJzTGlzdCkgKyAxKTsKIAorCS8qIENoZWNrIElmIHRoZXJlIGFyZSBmcmVlIHdv cmtlciBzbG90KHMpICovCisJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdf U0hBUkVEKTsKKwluYXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9hcHBseV9iYWNrZ3JvdW5kX3dv cmtlcl9jb3VudChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKTsKKwlMV0xvY2tSZWxlYXNlKExv Z2ljYWxSZXBXb3JrZXJMb2NrKTsKKwlpZiAobmFwcGx5d29ya2VycyA+PSBtYXhfYXBwbHlfYmd3 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCisJCXJldHVybiBOVUxMOworCiAJb2xkY29udGV4dCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCiAJd3N0YXRlID0gKEFwcGx5 Qmd3b3JrZXJTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihBcHBseUJnd29ya2VyU3RhdGUpKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCBlODEwODc1ZGRk Li42N2RkNDA1OThjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jCkBAIC01NCw2ICs1NCw3IEBACiAKIGludAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dv cmtlcnMgPSA0OwogaW50CQkJbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsK K2ludAkJCW1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDM7CiAKIExvZ2lj YWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTczNiw2ICs3Mzcs MzAgQEAgbG9naWNhbHJlcF9zeW5jX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpCiAJcmV0dXJuIHJl czsKIH0KIAorLyoKKyAqIENvdW50IHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJlZCAobm90IG5lY2Vz c2FyaWx5IHJ1bm5pbmcpIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlciBmb3IgYSBzdWJzY3Jp cHRpb24uCisgKi8KK2ludAorbG9naWNhbHJlcF9hcHBseV9iYWNrZ3JvdW5kX3dvcmtlcl9jb3Vu dChPaWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlpbnQJCQlyZXMgPSAwOworCisJQXNzZXJ0KExX TG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKKwkvKiBTZWFyY2ggZm9yIGF0 dGFjaGVkIHdvcmtlciBmb3IgYSBnaXZlbiBzdWJzY3JpcHRpb24gaWQuICovCisJZm9yIChpID0g MDsgaSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IGkrKykKKwl7CisJCUxvZ2lj YWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKKworCQlpZiAody0+ c3ViaWQgPT0gc3ViaWQgJiYgdy0+c3Vid29ya2VyKQorCQkJcmVzKys7CisJfQorCisJcmV0dXJu IHJlczsKK30KKwogLyoKICAqIEFwcGx5TGF1bmNoZXJTaG1lbVNpemUKICAqCQlDb21wdXRlIHNw YWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIgc2hhcmVkIG1lbW9yeQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjLmMKaW5kZXggNTVkNDFhZTdkNi4uNTM5ZWMwN2ZmNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j CkBAIC0zMjIwLDYgKzMyMjAsMTggQEAgc3RhdGljIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3Vy ZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJtYXhfYXBw bHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24iLAorCQkJUEdDX1NJR0hVUCwKKwkJCVJFUExJ Q0FUSU9OX1NVQlNDUklCRVJTLAorCQkJZ2V0dGV4dF9ub29wKCJNYXhpbXVtIG51bWJlciBvZiBh cHBseSBiYWNrZ3JhbmQgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiIpLAorCQkJTlVMTCwKKwkJ fSwKKwkJJm1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiwKKwkJMywgMCwgTUFY X0JBQ0tFTkRTLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCXsKIAkJeyJsb2dfcm90YXRp b25fYWdlIiwgUEdDX1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0 cyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggNDhhZDgwY2YyZS4u YjcxMzQwNTQ5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25m LnNhbXBsZQpAQCAtMzYwLDYgKzM2MCw3IEBACiAjbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29y a2VycyA9IDQJIyB0YWtlbiBmcm9tIG1heF93b3JrZXJfcHJvY2Vzc2VzCiAJCQkJCSMgKGNoYW5n ZSByZXF1aXJlcyByZXN0YXJ0KQogI21heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9 IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMKKyNtYXhfYXBw bHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAzCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzCiAKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaAppbmRleCBmMWUyODIxZTI1Li5hYzhl Zjk0MzgxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNo ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaApAQCAt MTQsNiArMTQsNyBAQAogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9sb2dpY2FsX3JlcGxp Y2F0aW9uX3dvcmtlcnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9zeW5jX3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2FwcGx5X2Jnd29y a2Vyc19wZXJfc3Vic2NyaXB0aW9uOwogCiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyUmVnaXN0 ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZyk7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDFkYzFhNDkx ZTkuLjNkYTg1MmZlZDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oCkBAIC0xNTgsNiArMTU4LDcgQEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2Fr ZXVwKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2Vy X3dha2V1cF9wdHIoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKIAogZXh0ZXJuIGludAlsb2dp Y2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CitleHRlcm4gaW50CWxvZ2ljYWxy ZXBfYXBwbHlfYmFja2dyb3VuZF93b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKIAogZXh0ZXJuIHZv aWQgUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yVGFibGVzeW5jKE9pZCBzdWJvaWQsIE9pZCByZWxp ZCwKIAkJCQkJCQkJCQkJICBjaGFyICpvcmlnaW5uYW1lLCBpbnQgc3pvcmduYW1lKTsKLS0gCjIu MjMuMC53aW5kb3dzLjEKCg== --_005_OS3PR01MB62758A881FF3240171B7B21B9EDE9OS3PR01MB6275jpnp_--