Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxyj6-00HJXl-1Z for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Mar 2026 02:46:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vxyj4-00FUQ0-2h for pgsql-hackers@arkaria.postgresql.org; Thu, 05 Mar 2026 02:46:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vxyj4-00FUPk-1J for pgsql-hackers@lists.postgresql.org; Thu, 05 Mar 2026 02:46:11 +0000 Received: from mail-japanwestazlp170110001.outbound.protection.outlook.com ([2a01:111:f403:c407::1] helo=OS0P286CU010.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vxyj1-00000000iZh-3ITH for pgsql-hackers@lists.postgresql.org; Thu, 05 Mar 2026 02:46:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RtX4Iwk5fWlfh4A4LcEfQmhByr2v9A5uGrGVyYsTqebJASjGTXmBBwJVi6A6G022njvoYxJD9ovXIEJI3FqvHGQxFXqBp4qjbDamD8Cb298N1BEUR59pBSCqmTCvd3oa3T5gG/LL5MvKEAo0B4M1zmT7B5lhXZndvcFpc6zHA5csaJ7zf5SPyPhBMhR8ZxRVKxUXl34ACnLteZxbd35k+SVzI42b9Y/mL4pKZCYQmTuktfvk0eDsMTrwAZkGxX+q8frLTgi6vJSdFvxQCrjHhbk1H6EsZ9r9q2erZfDpdIqBihbXQ0DaBafDOdSkRdLBASdIy77Dc6jVD/hb2bOOWA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=8gfGpx14KnuzIlWTh154uskDs1xHcdYm4RKaIjXnisQ=; b=oSgTNKF9P8A3RF5OzlHr9jv0MbmqNHjUVEHc0Mwl+uFxx/eIEB+OJq2po8PMQO2pjrGkG2kmmkZ7SgrZy9BuMUhgu5pWoXM7DfacDSde94cmIDdzBxeMyX7PthvijwnrfFhbINj9BvZeJsSwlsV08SfucPPG648uQoacqjA3/RdfM9vXg8rsh7YBaD/pkyRozKVwOc6eZymLQT7t1LUAVDHXkixbL1euPFueNjh9r61f2KwusWCVZDyG4ZQbTJq6VWU6uBcxtKpRDcSO0XS+e+HXkx/nfGaDWU5awEDyfaJeGpDaSAUoX+srnxQzjQ6UZAl4ub4Ad2nuAS4LXLRPSA== 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.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8gfGpx14KnuzIlWTh154uskDs1xHcdYm4RKaIjXnisQ=; b=BaNDkwyU0Tkf+LIPEuM6ETcalDSnbAZD+zkXhDH/HkcFab3gLFmKH9AakOoJVlPv83YKd09j3TLP27A2bPveVw7uRn1cy+POKx3DWXnquLNIXYM9mvj/0zVxm4rZs7Eso+j10vRy/ZmBVZbQHbA27EvsX1S4B+vg2I7xEke6Z3oJLWyGMs4zjnow4xquzIq3X7iXcnmmhC9s0QO9J5aySZD+Jy8kA2x0A6r+up7KZXkzA5YMxyv6CBL4lPahDnp/Zg+xnDavPeAEux+EOCu7ATPF9/5zydFC/VWeKrNc/12FuqFl3YL8/tzJugoR4epZxvVN4D/DtbkvKuVJvCYK0Q== Received: from TY4PR01MB16907.jpnprd01.prod.outlook.com (2603:1096:405:338::22) by TYCPR01MB7138.jpnprd01.prod.outlook.com (2603:1096:400:c1::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9678.18; Thu, 5 Mar 2026 02:46:00 +0000 Received: from TY4PR01MB16907.jpnprd01.prod.outlook.com ([fe80::bbb7:659c:a6e:927d]) by TY4PR01MB16907.jpnprd01.prod.outlook.com ([fe80::bbb7:659c:a6e:927d%4]) with mapi id 15.20.9678.016; Thu, 5 Mar 2026 02:46:00 +0000 From: "Zhijie Hou (Fujitsu)" To: shveta malik CC: Amit Kapila , Ajin Cherian , "Hayato Kuroda (Fujitsu)" , Ashutosh Sharma , PostgreSQL Hackers Subject: RE: [PATCH] Support automatic sequence replication Thread-Topic: [PATCH] Support automatic sequence replication Thread-Index: AQHclMAEzANLvjhWZU6Kdy4EwfRGq7VwxE4AgALLp4CAAdjUAIAAAIgAgAd6mACAAfU5gIAH/IAAgAEknICAACZ5gIAAMc0AgAMzVQCABBduAIAB47QAgABQMgCABLf1qYABZaZQgAMbtXCAA040gIABEEDA Date: Thu, 5 Mar 2026 02:46:00 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-AS, ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ZDg0NjY3OWUtMjE3MS00OTY5LWFhNWItZjFhMjBmNmMw?= =?utf-8?B?NjAzO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFROKAiztNU0lQ?= =?utf-8?B?X0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRkLTNiMGY0ZmVjZTA1MF9T?= =?utf-8?B?ZXREYXRlPTIwMjYtMDMtMDVUMDI6Mzk6MDBaO01TSVBfTGFiZWxfYTcyOTVj?= =?utf-8?B?YzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX1NpdGVJZD1hMTlmMTIx?= =?utf-8?B?ZC04MWUxLTQ4NTgtYTlkOC03MzZlMjY3ZmQ0Yzc7TVNJUF9MYWJlbF9hNzI5?= =?utf-8?B?NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfVGFnPTEwLCAzLCAw?= =?utf-8?Q?,_1;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TY4PR01MB16907:EE_|TYCPR01MB7138:EE_ x-ms-office365-filtering-correlation-id: 851bd749-f650-4cd9-c430-08de7a61561d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|6049299003|1800799024|366016|1580799027|4053099003|38070700021; x-microsoft-antispam-message-info: fS+CJeafjkeeyBhoNqKrn7o3isOo6jhwIdKGmu7kjKQiGUyU7LG7XM3CTLs07PwtAct33BfpPu6N/LXPPUBLHA+QVavZU9APAgceLR6elGSJMn5iCmQQ8E3E3ggh0bZSz/w6gukG1+wsIkjCPhH4nj1+15BanVnC/QA6IWR2WzaajY3hVTKD7cfg9p+7zWyqpEIGkENg2T3b1l5qtzU9XrBNf8B83eqEZSaFKPKAJ5uqcwWd5i1mYHir2rzIE9L8fn0H3Nnu7PE9VRokfYCTOmMhYNde46K5/GdNCH0frcj0Xe9B0FLYINdGeSFY9cP9KDjuxHksf2pHidneMO09PMHZ+IZf1YyC0/QBpMObvUIanfe6y/ScjuI66FSrdBpMLS8fjz4TLms2t5Nz7n2kxMxgwSjHi9QOO8kzWbUTWKhYsmhQ0rOpbHy0NasQofYAo0yXn7TkNSpmB3nWLsgmrFJWN6yl/Cf9sXuOXyN6oFXnProWI/vN5C/L9jhsV7uX4LtAZWpa1Pd6AKboIzA+BVlj/W9PFZrx0CQF2JKdborpUqD8/d4enKkCq3hPh3RbqsOHH9UII8ggrTqc82N5cCX52dfgyCLwqnzV55NNv0jIJXNyTjqFKcVWDO9459N17DNM1sJ7MYHMNXVRzaqj97E7dQxzhuSdSd6dHo9tzEeWhjhnphpo7C8rbYCLgsPffvtci42LarGObJ/OtE2pPZIlZqx0MXwdZ3N+r/m8u56haZyi0yDYqdiWuKODtgGk3KwWp17JTrnf/O27ExvFKwR17o/7xfrSpRy5ZntPHrMDE/k36TBT3wLqst6lOg1B3GHPaSVEbYj+vmGYLKz/qw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY4PR01MB16907.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(6049299003)(1800799024)(366016)(1580799027)(4053099003)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dDVzQjNGUzNjNElnbVlTLzZNUVdHM29zM1NXR2FIZWhGMUhMZFp6aGNORFU1?= =?utf-8?B?NWFaVkcxS3V2MzR5WGdpTDUrVmg0Rjcvc1RyOFpPSkNwSkx6bVQvTGs3RFFO?= =?utf-8?B?cHF2S1FrdEZ0V25iM0MyWXJHMElvK0VzdWpmb1E5QjEwOStmN0s0NWhGc2JS?= =?utf-8?B?b3hyN1RIL09Fb0w5eW5Ic1VvaHBwMDdseHByTExlYTNPK1B2WUtESzBuT2tY?= =?utf-8?B?Y3NncXFoWElaTmhkTXcxREpiWUovQU9oaGFnb1llVDJwVEFCeXFLSFN0YmxJ?= =?utf-8?B?bFFIMUw0T0NFazVjb2FDRkpEb3hsVFppY0xPVlJFcHNhY2RsYzJveU5SWHlx?= =?utf-8?B?b1oxdUNyeXgwei9OcnFiQ0VKRERhWmhNOU0wS20xUXZIVTkxLzAvTjR0dHRu?= =?utf-8?B?RG5IMXltdGdhQWx1Ymp0cmhkT3A5M1FjK25Rd3p6NFowNm92ZWpPSXdFSlNm?= =?utf-8?B?VEY1c0EwZEpxZ3MrY0x0RlVWZFdIcDdGODkrYkd5YjZPY1NvWUJjSUZZczRJ?= =?utf-8?B?QjgyUHcwTVVYb2srWk5MZjJlTjJPYWl6SHdIM051RTd2dEJxNWtBWG1XU0Yy?= =?utf-8?B?bmNYR2U3MHJsRGZEQysyMkpIYlBtZ1VaZXVZYUhVZ2dPRG5VT0JmT2dSU1lr?= =?utf-8?B?RXVPNHVwenduM1ZROWNTKzVyS1QzUW13Z1lMKzd6V0xOR0lxVlRCTkdsUzA3?= =?utf-8?B?eWcyRm44U2xoL3FuN0NqL2tZOTQrOHhKbXRxS1pwVnZsZFkzNXl0V2FhKzFN?= =?utf-8?B?eEg3WGsvOVF0SHNZZDFpajg1NlpNUFF4Zzcyem85WUVESnpieVJTbVFUS3dR?= =?utf-8?B?UzZXcTJzdUEybHc5YjdQQU05SU9TamxHejd2a0ZvZ3NzNkYyRzNxTWlaUGR5?= =?utf-8?B?VGNkTEhwcUFwRVJCRHJYdUhSUWRsd1dTbWU1VVg5SWZ0NEtJVEhJQnhwcStk?= =?utf-8?B?WEROYUJTMDRXVzU3WUZvVDVQdVpIYlU4L3d0MnpFZ21DVEE4M2ZEMndMR2x0?= =?utf-8?B?QjhrNThHN1duRHlxK1dRWE40WVFFV1hTOTJINTdhc1RtazhadWVEYlI0TVlE?= =?utf-8?B?R0d3V2MxQlhqRnF5cDduM21pOVZVU2c5NHZhU0poNGV0cTNHZW1IcmxpQWQ5?= =?utf-8?B?dkxaOG5MN2FBRlQ3UXJQclVsU21PLzlPcit1ajdSZEZKZUQrUjJiYUtQNCt5?= =?utf-8?B?OExsU2tTTVVIWjgyNTBYaXFBMVFWTnVMWE1RcWVXcWc4M1ZTUEI0V0wxaDU5?= =?utf-8?B?QTlqeTF6OENFdWhPNWpUUFFaVmsrMDZnNkIyZm5OWkxrZ2cwSmJSVGJmTm05?= =?utf-8?B?ZTZ1YytEL20yb3VLVzFNOFd4YmxZWTg0Z3Q1Y2g5K09GNFZvY1JJRUZtQkJ3?= =?utf-8?B?d25vRVpQR0VEMlM5R0hFd3JuNE5BLzh1U0dUOE9zSk9BTHBveVZZZ3NrRStQ?= =?utf-8?B?dEtpS0RrSzJNY3E2U3o2b2h3TFFlVWpVNEpGSWVQQzl3TzBvSVVOLy9TTkNL?= =?utf-8?B?cFhUYnByTDlIZ0duL2tZRUtDL2xvTm5jRytoa25KdGRjaHVSNFgyYitVL0pl?= =?utf-8?B?YWppWFlJalRmNDNzQUpsN2VSWUhlcElDeU44ZU52bUlPOWhzLzZyTmdtUTlO?= =?utf-8?B?QlV6S0MyNmtsNTF4OWdkeVVrSElXWkVEM0RIUmZ4M1VvNU1YUjVtSlpwYWpN?= =?utf-8?B?bVlMdTRBbWtFVU9jUjM1M2ZjMmd3dGx6OXFBNFRublZoNWZTUXFnNXgweU5j?= =?utf-8?B?anRPbVBXUVMrM2E2K1BJNHVwSHI3bDVBblBiblBkbTZFMTNkREcyb0JQbGFS?= =?utf-8?B?TkZTWXlRMjY3WnF0MU11OTVtNXdmYUl6VGE0V3pEaDZ2TjExMWU1YkRtbUU1?= =?utf-8?B?amhZUzNhd0VQcDNmNFgxbnY2ZGRrbHFWZHhTNDJIbTZEVkN2Q3ZVNytPN041?= =?utf-8?B?NksxL0wzVTJQRzYzbkdFemJOZjREc0l6K2IvSlVJRFRzZ0ZDNmwvTTZmdjEv?= =?utf-8?B?b2RHUXVHL2NjYVJ3QlNQOHErK1Y0QndETjNEMGprcW9CWXlUS2xsS3dBUmJp?= =?utf-8?B?NHBybytvcHZRSWROQ0piVGJYUndhaWQ2bDFkVG82eW52L3ZZd1ZRak40UFhL?= =?utf-8?B?OTZ3YVZBZ2VFUm9UOFkreFlueGJNSjdmcXFvSFlqajNmZC9nSHM2UEs5NWk2?= =?utf-8?B?a1RHUm9HWUlUMlF4NHhuV3c2WExEL0d2MGQ1OG1jbURzWkVCWk1jK2dHbmNr?= =?utf-8?B?amRSQTMxYVNZbXhlQWJWelVHYnpibE1UK0NXbVpuOVVzczVxODBvYmdVUDdP?= =?utf-8?B?MW5wYkNkdXBsWEV3cys3cTVLb1lRSFBvbGlDc0xNTXN3aVkxc3Q0Zz09?= Content-Type: multipart/mixed; boundary="_003_TY4PR01MB1690739DE978BCBD12358478E947DATY4PR01MB16907jp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TY4PR01MB16907.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 851bd749-f650-4cd9-c430-08de7a61561d X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Mar 2026 02:46:00.7200 (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: N1a1UFvP8M7UYEfWvqEcZkb7aeLEp9gqdt2V+Q/IpBzBLKNLchkQtOV4L2npUxZd76Kt5XdgVvL/Qzin/oKs3g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB7138 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_003_TY4PR01MB1690739DE978BCBD12358478E947DATY4PR01MB16907jp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gV2VkbmVzZGF5LCBNYXJjaCA0LCAyMDI2IDY6MjUgUE0gc2h2ZXRhIG1hbGlrIDxzaHZldGEu bWFsaWtAZ21haWwuY29tPiB3cm90ZToNCj4gDQo+IE9uIE1vbiwgTWFyIDIsIDIwMjYgYXQgMToy OOKAr1BNIFpoaWppZSBIb3UgKEZ1aml0c3UpIDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPg0KPiB3 cm90ZToNCj4gPg0KPiA+IFJlYmFzZWQgdGhlIHBhdGNoIHRvIHNpbGVuY2UgY29tcGlsZSB3YXJu aW5nIGR1ZSB0byBhIHJlY2VudCBjb21taXQNCj4gPiBhMmM4OTgzNS4NCj4gPg0KPiANCj4gVGhh bmtzIGZvciB0aGUgcGF0Y2guIFBsZWFzZSBmaW5kIGEgZmV3IGNvbW1lbnRzIGZvciAwMDE6DQoN ClRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzLg0KDQo+IA0KPiAxKQ0KPiAgIC8qDQo+ICAgKiBSZWNv cmQgdGhlIHJlbW90ZSBzZXF1ZW5jZSdzIExTTiBpbiBwZ19zdWJzY3JpcHRpb25fcmVsIGFuZCBt YXJrIHRoZQ0KPiAtICogc2VxdWVuY2UgYXMgUkVBRFkuDQo+ICsgKiBzZXF1ZW5jZSBhcyBSRUFE WSBpZiB1cGRhdGluZyBhIHNlcXVlbmNlIHRoYXQgaXMgaW4gSU5JVCBzdGF0ZS4NCj4gICAqLw0K PiAtIFVwZGF0ZVN1YnNjcmlwdGlvblJlbFN0YXRlKE15U3Vic2NyaXB0aW9uLT5vaWQsIHNlcW9p ZCwNCj4gU1VCUkVMX1NUQVRFX1JFQURZLA0KPiAtICAgIHNlcWluZm8tPnBhZ2VfbHNuLCBmYWxz ZSk7DQo+ICsgaWYgKHNlcWluZm8tPnJlbHN0YXRlID09IFNVQlJFTF9TVEFURV9JTklUKQ0KPiAr IFVwZGF0ZVN1YnNjcmlwdGlvblJlbFN0YXRlKE15U3Vic2NyaXB0aW9uLT5vaWQsIHNlcW9pZCwN Cj4gU1VCUkVMX1NUQVRFX1JFQURZLA0KPiArICAgIHNlcWluZm8tPnBhZ2VfbHNuLCBmYWxzZSk7 DQo+IA0KPiBXaGF0IGlmIHBhZ2UtbHNuIGhhcyBjaGFuZ2VkIGFuZCB3ZSBhcmUgaW4gUkVBRFkg c3RhdGUsIGRvbid0IHdlIG5lZWQgdG8NCj4gdXBkYXRlIHRoYXQgaW4gcGdfc3Vic2NyaXB0aW9u X3JlbD8gT3IgaXMgdGhhdCBkb25lIHNvbWV3aGVyZSBlbHNlPw0KDQpUaGUgY2hlY2sgd2FzIGRv bmUgaW4gMDAwMiwgSSBtb3ZlZCBpdCB0byAwMDAxIG5vdy4NCg0KPiANCj4gMikNCj4gKyAqDQo+ ICsgKiBJZiByZWxzdGF0ZSBpcyBTVUJSRUxfU1RBVEVfUkVBRFksIG9ubHkgc3luY2hyb25pemUg c2VxdWVuY2VzIHRoYXQNCj4gKyAqIGhhdmUgZHJpZnRlZCBmcm9tIHRoZWlyIHB1Ymxpc2hlciB2 YWx1ZXMuIE90aGVyd2lzZSwgc3luY2hyb25pemUNCj4gKyAqIGFsbCBzZXF1ZW5jZXMuDQo+ICsg Kg0KPiArICogUmV0dXJucyB0cnVlL2ZhbHNlIGlmIGFueSBzZXF1ZW5jZXMgd2VyZSBhY3R1YWxs eSBjb3BpZWQuDQo+ICAgKi8NCj4gK3N0YXRpYyBib29sDQo+ICtjb3B5X3NlcXVlbmNlcyhXYWxS ZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zKQ0KPiANCj4gVGhlcmUgaXMgbm8gcmVs c3RhdGUsIGNvbW1lbnRzIG5lZWQgY29ycmVjdGlvbi4NCg0KQ2hhbmdlZC4NCg0KPiANCj4gMykN Cj4gQ3VycmVudGx5IHdlIHVzZSBzYW1lIHN0YXRlICdDT1BZU0VRX1NVQ0NFU1MnIGZvciAyIGNh c2VzOiBhbGxvd2VkIHRvDQo+IGNvcHkgKGFzIHJldHVybmVkIGJ5IHZhbGlkYXRlX3NlcXN5bmNf c3RhdGUgYW5kDQo+IGdldF9hbmRfdmFsaWRhdGVfc2VxX2luZm8pIGFuZCBjb3B5LWRvbmUgKGJ5 IGNvcHlfc2VxdWVuY2VzLA0KPiBjb3B5X3NlcXVlbmNlKS4gSXQgaXMgc2xpZ2h0bHkgY29uZnVz aW5nLiBTaGFsbCB3ZSBhZGQgb25lIG1vcmUgc3RhdGUgZm9yDQo+ICdhbGxvd2VkJyBjYXNlLCBj b3VsZCBiZSBDT1BZU0VRX0VMSUdJQkxFIG9yIENPUFlTRVFfUFJPQ0VFRCBvcg0KPiBDT1BZU0VR X0FMTE9XRUQ/IENPUFlTRVFfU1VDQ0VTUyB3YXMgdXNlZCBmb3Igc3VjaCBhIGNhc2UgaW4NCj4g cHJldmlvdXMgc2VxLXN5bmMgY29tbWFuZHMgdG9vIChvbiBIRUFEKSwgYnV0IG5vdyBpdHMgdXNh Z2UgaXMgbW9yZSBpbg0KPiAnYWxsb3dlZCcgY2FzZSBhcyBjb21wYXJlZCB0byBIRUFELCBzbyBw ZXJoYXBzIHdlIGNhbiBjaGFuZ2UgaW4gdGhpcyBwYXRjaC4NCj4gQnV0IEkgd291bGQgbGlrZSB0 byBrbm93IHdoYXQgb3RoZXJzIHRoaW5rIGhlcmUuDQoNCkkgYWdyZWUgdGhhdCBhZGRpbmcgYSBu ZXcgdmFsdWUgY2FuIG1ha2UgdGhlIGNvZGUgZWFzaWVyIHRvIHJlYWQuDQoNCj4gDQo+IA0KPiA0 KQ0KPiArICogUHJlbGltaW5hcnkgY2hlY2sgdG8gZGV0ZXJtaW5lIGlmIGNvcHlpbmcgdGhlIHNl cXVlbmNlIGlzIGFsbG93ZWQuDQo+IA0KPiBIb3cgYWJvdXQgdGhpcyBjb21tZW50Og0KPiBDaGVj ayB3aGV0aGVyIHRoZSB1c2VyIGhhcyByZXF1aXJlZCBwcml2aWxlZ2VzIG9uIHRoZSBzZXF1ZW5j ZSBhbmQgd2hldGhlcg0KPiB0aGUgc2VxdWVuY2UgaGFzIGRyaWZ0ZWQuDQoNCkNoYW5nZWQgYXMg c3VnZ2VzdGVkLg0KDQo+IA0KPiA1KQ0KPiB2YWxpZGF0ZV9zZXFzeW5jX3N0YXRlKCk6DQo+ICsg LyoNCj4gKyAqIFNraXAgc3luY2hyb25pemF0aW9uIGlmIHRoZSBzZXF1ZW5jZSBpcyBhbHJlYWR5 IGluIFJFQURZIHN0YXRlIGFuZA0KPiArICogaGFzIG5vdCBkcmlmdGVkIGZyb20gdGhlIHB1Ymxp c2hlcidzIHZhbHVlLg0KPiArICovDQo+ICsgaWYgKGxvY2FsX2xhc3RfdmFsdWUgPT0gc2VxaW5m by0+bGFzdF92YWx1ZSAmJiBsb2NhbF9pc19jYWxsZWQgPT0NCj4gKyBzZXFpbmZvLT5pc19jYWxs ZWQpIHJldHVybiBDT1BZU0VRX05PX0RSSUZUOw0KPiANCj4gU2luY2Ugd2UgYWxyZWFkeSBoYXZl IGEgY29tbWVudCB3aGVyZSB3ZSBjaGVjayBSRUFEWSBzdGF0ZSBpbiBvdXRlciBpZi0NCj4gYmxv Y2sgYW5kIHNpbmNlIHdlIGFyZSBub3QgY2hlY2tpbmcgUkVBRFkgc3RhdGUgaGVyZSwgcGVyaGFw cyB3ZSBjYW4NCj4gY2hhbmdlIHRoZSBhYm92ZSBjb21tZW50IHRvIHNpbXBseToNCj4gICJTa2lw IHN5bmNocm9uaXphdGlvbiBpZiBpdCBoYXMgbm90IGRyaWZ0ZWQgZnJvbSB0aGUgcHVibGlzaGVy J3MgdmFsdWUuIg0KDQpDaGFuZ2VkLg0KDQpIZXJlIGlzIFYxMCBwYXRjaCBzZXQgd2hpY2ggYWRk cmVzc2VkIGFsbCBjb21tZW50cy4NCg0KSSBhbHNvIGZpeGVkIGEgYnVnIHRoYXQgS3Vyb2RhLVNh biByZXBvcnRlZCBvZmYtbGlzdCwgd2hlcmUgd2Ugd2VyZSBub3QNCnJlc2V0dGluZyB0aGUgU3Ry aW5nSW5mbyB1c2VkIHRvIGJ1aWxkIHRoZSBxdWVyeSBpbiB0aGUgY29weV9zZXF1ZW5jZXMgbG9v cCwNCndoaWNoIGNhdXNlZCB0aGUgYnVpbHQgcXVlcnkgdG8gYmUgaW5jb3JyZWN0Lg0KDQpCZXN0 IFJlZ2FyZHMsDQpIb3UgemoNCg== --_003_TY4PR01MB1690739DE978BCBD12358478E947DATY4PR01MB16907jp_ Content-Type: application/octet-stream; name="v10-0002-Synchronize-sequences-directly-in-REFRESH-SEQUEN.patch" Content-Description: v10-0002-Synchronize-sequences-directly-in-REFRESH-SEQUEN.patch Content-Disposition: attachment; filename="v10-0002-Synchronize-sequences-directly-in-REFRESH-SEQUEN.patch"; size=17659; creation-date="Thu, 05 Mar 2026 02:42:31 GMT"; modification-date="Thu, 05 Mar 2026 02:45:59 GMT" Content-Transfer-Encoding: base64 RnJvbSAyYzcxNGYwZWM5MWNjNDkxYWY5ODUxZjc3ZjYzZDFmM2Q4MTAwYTVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBaaGlqaWUgSG91IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBUaHUsIDUgTWFyIDIwMjYgMTA6NDQ6MTcgKzA4MDAKU3ViamVjdDogW1BBVENIIHYxMCAy LzJdIFN5bmNocm9uaXplIHNlcXVlbmNlcyBkaXJlY3RseSBpbiBSRUZSRVNIIFNFUVVFTkNFUwog Y29tbWFuZAoKVGhlIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMgY29t bWFuZCBjdXJyZW50bHkgc2V0cyBhbGwKc2VxdWVuY2Ugc3RhdGVzIGluIHBnX3N1YnNjcmlwdGlv bl9yZWwgdG8gSU5JVCBhbmQgcmVsaWVzIG9uIHRoZSBzZXF1ZW5jZSBzeW5jCndvcmtlciB0byBw ZXJmb3JtIHRoZSBhY3R1YWwgc3luY2hyb25pemF0aW9uIGFuZCB1cGRhdGUgc3RhdGVzIHRvIFJF QURZLgoKV2l0aCB0aGUgcmVjZW50IGNoYW5nZSBtYWtpbmcgdGhlIHNlcXVlbmNlIHN5bmMgd29y a2VyIGxvbmctbGl2ZWQsIG1vc3QKc2VxdWVuY2VzIGFyZSBub3cgc3luY2hyb25pemVkIGluIHRo ZSBiYWNrZ3JvdW5kLCByZWR1Y2luZyB0aGUgbmVlZCBmb3IKUkVGUkVTSCBTRVFVRU5DRVMuIEhv d2V2ZXIsIHRoZSBjb21tYW5kIHJlbWFpbnMgbmVjZXNzYXJ5IGZvciBzZXF1ZW5jZXMgdGhhdApo YXZlbid0IGJlZW4gc3luY2hyb25pemVkLgoKVGhpcyBjb21taXQgZW5oYW5jZXMgUkVGUkVTSCBT RVFVRU5DRVMgdG8gc3luY2hyb25pemUgc2VxdWVuY2VzIGRpcmVjdGx5IHdpdGhpbgp0aGUgY29t bWFuZCBpdHNlbGYsIGVsaW1pbmF0aW5nIHRoZSBvdmVyaGVhZCBvZiBsYXVuY2hpbmcgYSB3b3Jr ZXIgYW5kIHVwZGF0aW5nCmNhdGFsb2cgZW50cmllcyB1bm5lY2Vzc2FyaWx5LgotLS0KIGRvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAgNiArLQogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgIHwgIDE3ICstCiAuLi4vcmVw bGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyAgICAgICAgfCAxNTggKysrKysrKysrKysr KystLS0tCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggICAgICAgfCAg IDUgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbCAgICAgIHwgIDQ5 ICsrKysrKwogNSBmaWxlcyBjaGFuZ2VkLCAxODggaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBi L2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggYmI1MjNhZjVkMzcu LjMyM2Q1YjdjN2EwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlv bi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE3 ODcsOSArMTc4Nyw5IEBAIFB1YmxpY2F0aW9uczoKIAogICA8cGFyYT4KICAgIEEgPGZpcnN0dGVy bT5zZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gd29ya2VyPC9maXJzdHRlcm0+IHdpbGwgYmUgc3Rh cnRlZAotICAgYWZ0ZXIgZXhlY3V0aW5nIGFueSBvZiB0aGUgYWJvdmUgc3Vic2NyaWJlciBjb21t YW5kcy4gVGhlIHdvcmtlciB3aWxsCi0gICByZW1haW4gcnVubmluZyBmb3IgdGhlIGxpZmUgb2Yg dGhlIHN1YnNjcmlwdGlvbiwgcGVyaW9kaWNhbGx5Ci0gICBzeW5jaHJvbml6aW5nIGFsbCBwdWJs aXNoZWQgc2VxdWVuY2VzLgorICAgYWZ0ZXIgZXhlY3V0aW5nIDxjb21tYW5kPkFMVEVSIFNVQlND UklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTjwvY29tbWFuZD4KKyAgIGNvbW1hbmQuIFRo ZSB3b3JrZXIgd2lsbCByZW1haW4gcnVubmluZyBmb3IgdGhlIGxpZmUgb2YgdGhlIHN1YnNjcmlw dGlvbiwKKyAgIHBlcmlvZGljYWxseSBzeW5jaHJvbml6aW5nIGFsbCBwdWJsaXNoZWQgc2VxdWVu Y2VzLgogICA8L3BhcmE+CiAgIDxwYXJhPgogICAgVGhlIGFiaWxpdHkgdG8gbGF1bmNoIGEgc2Vx dWVuY2Ugc3luY2hyb25pemF0aW9uIHdvcmtlciBpcyBsaW1pdGVkIGJ5IHRoZQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDVlM2MwOTY0ZDM4Li4wYTVhY2ZkYTBm ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtMTI0NSwyNSAr MTI0NSwxMCBAQCBBbHRlclN1YnNjcmlwdGlvbl9yZWZyZXNoX3NlcShTdWJzY3JpcHRpb24gKnN1 YikKIAogCVBHX1RSWSgpOwogCXsKLQkJTGlzdAkgICAqc3VicmVsX3N0YXRlczsKLQogCQljaGVj a19wdWJsaWNhdGlvbnNfb3JpZ2luX3NlcXVlbmNlcyh3cmNvbm4sIHN1Yi0+cHVibGljYXRpb25z LCB0cnVlLAogCQkJCQkJCQkJCQlzdWItPm9yaWdpbiwgTlVMTCwgMCwgc3ViLT5uYW1lKTsKIAot CQkvKiBHZXQgbG9jYWwgc2VxdWVuY2UgbGlzdC4gKi8KLQkJc3VicmVsX3N0YXRlcyA9IEdldFN1 YnNjcmlwdGlvblJlbGF0aW9ucyhzdWItPm9pZCwgZmFsc2UsIHRydWUsIGZhbHNlKTsKLQkJZm9y ZWFjaF9wdHIoU3Vic2NyaXB0aW9uUmVsU3RhdGUsIHN1YnJlbCwgc3VicmVsX3N0YXRlcykKLQkJ ewotCQkJT2lkCQkJcmVsaWQgPSBzdWJyZWwtPnJlbGlkOwotCi0JCQlVcGRhdGVTdWJzY3JpcHRp b25SZWxTdGF0ZShzdWItPm9pZCwgcmVsaWQsIFNVQlJFTF9TVEFURV9JTklULAotCQkJCQkJCQkJ ICAgSW52YWxpZFhMb2dSZWNQdHIsIGZhbHNlKTsKLQkJCWVyZXBvcnQoREVCVUcxLAotCQkJCQll cnJtc2dfaW50ZXJuYWwoInNlcXVlbmNlIFwiJXMuJXNcIiBvZiBzdWJzY3JpcHRpb24gXCIlc1wi IHNldCB0byBJTklUIHN0YXRlIiwKLQkJCQkJCQkJCWdldF9uYW1lc3BhY2VfbmFtZShnZXRfcmVs X25hbWVzcGFjZShyZWxpZCkpLAotCQkJCQkJCQkJZ2V0X3JlbF9uYW1lKHJlbGlkKSwKLQkJCQkJ CQkJCXN1Yi0+bmFtZSkpOwotCQl9CisJCUFsdGVyU3ViU3luY1NlcXVlbmNlcyh3cmNvbm4sIHN1 Yi0+b2lkLCBzdWItPm5hbWUsIHN1Yi0+cnVuYXNvd25lcik7CiAJfQogCVBHX0ZJTkFMTFkoKTsK IAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNl c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYwpp bmRleCBmYjI5MzQ4NzY1Ny4uOGI5MTBhYTFiYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYwpAQCAtMjEwLDcgKzIxMCw3IEBAIGdldF9zZXF1 ZW5jZXNfc3RyaW5nKExpc3QgKnNlcWluZGV4ZXMsIExpc3QgKnNlcWluZm9zLCBTdHJpbmdJbmZv IGJ1ZikKICAqLwogc3RhdGljIHZvaWQKIHJlcG9ydF9zZXF1ZW5jZV9lcnJvcnMoTGlzdCAqbWlz bWF0Y2hlZF9zZXFzX2lkeCwgTGlzdCAqaW5zdWZmcGVybV9zZXFzX2lkeCwKLQkJCQkJICAgTGlz dCAqbWlzc2luZ19zZXFzX2lkeCwgTGlzdCAqc2VxaW5mb3MpCisJCQkJCSAgIExpc3QgKm1pc3Np bmdfc2Vxc19pZHgsIExpc3QgKnNlcWluZm9zLCBjaGFyICpzdWJuYW1lKQogewogCVN0cmluZ0lu Zm8Jc2Vxc3RyOwogCkBAIC0yNTYsNyArMjU2LDcgQEAgcmVwb3J0X3NlcXVlbmNlX2Vycm9ycyhM aXN0ICptaXNtYXRjaGVkX3NlcXNfaWR4LCBMaXN0ICppbnN1ZmZwZXJtX3NlcXNfaWR4LAogCWVy ZXBvcnQoRVJST1IsCiAJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJ VEVfU1RBVEUpLAogCQkJZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHNlcXVlbmNlIHN5bmNo cm9uaXphdGlvbiBmYWlsZWQgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIiLAotCQkJCSAgIE15U3Vi c2NyaXB0aW9uLT5uYW1lKSk7CisJCQkJICAgc3VibmFtZSkpOwogfQogCiAvKgpAQCAtMjg0LDYg KzI4NCw3IEBAIGdldF9hbmRfdmFsaWRhdGVfc2VxX2luZm8oVHVwbGVUYWJsZVNsb3QgKnNsb3Qs IFJlbGF0aW9uICpzZXF1ZW5jZV9yZWwsCiAJSGVhcFR1cGxlCXR1cDsKIAlGb3JtX3BnX3NlcXVl bmNlIGxvY2FsX3NlcTsKIAlMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvX2xvY2FsOwor CUxPQ0tNT0RFCWxvY2ttb2RlOwogCiAJKnNlcWlkeCA9IERhdHVtR2V0SW50MzIoc2xvdF9nZXRh dHRyKHNsb3QsICsrY29sLCAmaXNudWxsKSk7CiAJQXNzZXJ0KCFpc251bGwpOwpAQCAtMzMwLDcg KzMzMSwyMCBAQCBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZvKFR1cGxlVGFibGVTbG90ICpzbG90 LCBSZWxhdGlvbiAqc2VxdWVuY2VfcmVsLAogCiAJc2VxaW5mb19sb2NhbC0+Zm91bmRfb25fcHVi ID0gdHJ1ZTsKIAotCSpzZXF1ZW5jZV9yZWwgPSB0cnlfdGFibGVfb3BlbihzZXFpbmZvX2xvY2Fs LT5sb2NhbHJlbGlkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwkvKgorCSAqIFdlIHRha2UgYSBzdHJv bmdlciBsb2NrIGR1cmluZyBEREwgY29tbWFuZHMgKGN1cnJlbnRseSBvbmx5IEFMVEVSCisJICog U1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFNFUVVFTkNFUykgdG8gcHJldmVudCBjb25jdXJyZW50 IHNlcXVlbmNlc3luYworCSAqIHdvcmtlcnMgZnJvbSB1cGRhdGluZyB0aGUgcGFnZV9sc24gd2hp bGUgdGhlIERETCBpcyBhbHNvIHVwZGF0aW5nIHRoZQorCSAqIHNhbWUgc2VxdWVuY2UuIFRoaXMg ZW5zdXJlcyB3ZSBjYW4gYWx3YXlzIGZldGNoIHRoZSBsYXRlc3QgcGFnZV9sc24gdG8KKwkgKiBk ZXRlcm1pbmUgd2hldGhlciB0aGUgcmVtb3RlIHNlcXVlbmNlIHZhbHVlIHNob3VsZCBiZSBzeW5j aHJvbml6ZWQgKHNlZQorCSAqIHZhbGlkYXRlX3NlcXN5bmNfc3RhdGUpLgorCSAqLworCWlmIChJ c0xvZ2ljYWxXb3JrZXIoKSkKKwkJbG9ja21vZGUgPSBSb3dFeGNsdXNpdmVMb2NrOworCWVsc2UK KwkJbG9ja21vZGUgPSBTaGFyZVJvd0V4Y2x1c2l2ZUxvY2s7CisKKwkqc2VxdWVuY2VfcmVsID0g dHJ5X3RhYmxlX29wZW4oc2VxaW5mb19sb2NhbC0+bG9jYWxyZWxpZCwgbG9ja21vZGUpOwogCiAJ LyogU2VxdWVuY2Ugd2FzIGNvbmN1cnJlbnRseSBkcm9wcGVkPyAqLwogCWlmICghKnNlcXVlbmNl X3JlbCkKQEAgLTM2OSw3ICszODMsOCBAQCBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZvKFR1cGxl VGFibGVTbG90ICpzbG90LCBSZWxhdGlvbiAqc2VxdWVuY2VfcmVsLAogICogd2hldGhlciB0aGUg c2VxdWVuY2UgaGFzIGRyaWZ0ZWQuCiAgKi8KIHN0YXRpYyBDb3B5U2VxUmVzdWx0Ci12YWxpZGF0 ZV9zZXFzeW5jX3N0YXRlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9u IHNlcXVlbmNlX3JlbCkKK3ZhbGlkYXRlX3NlcXN5bmNfc3RhdGUoTG9naWNhbFJlcFNlcXVlbmNl SW5mbyAqc2VxaW5mbywgUmVsYXRpb24gc2VxdWVuY2VfcmVsLAorCQkJCQkgICBYTG9nUmVjUHRy IGxvY2FsX3BhZ2VfbHNuKQogewogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJT2lkCQkJc2Vxb2lk ID0gc2VxaW5mby0+bG9jYWxyZWxpZDsKQEAgLTM4MCw2ICszOTUsMTYgQEAgdmFsaWRhdGVfc2Vx c3luY19zdGF0ZShMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvLCBSZWxhdGlvbiBzZXF1 ZW5jZV9yZWwpCiAJCWludDY0CQlsb2NhbF9sYXN0X3ZhbHVlOwogCQlib29sCQlsb2NhbF9pc19j YWxsZWQ7CiAKKwkJLyoKKwkJICogU2tpcCBzeW5jaHJvbml6YXRpb24gaWYgd2UgYXJlIHByb2Nl c3Npbmcgb3V0ZGF0ZWQgc2VxdWVuY2UgaW5mbworCQkgKiBiYXNlZCBvbiB0aGUgTFNOLiBUaGlz IG9jY3VycyB3aGVuIHRoZSBzZXF1ZW5jZSBoYXMgYmVlbiB1cGRhdGVkIHRvCisJCSAqIG1vcmUg cmVjZW50IGRhdGEgY29uY3VycmVudGx5ICh2aWEgZWl0aGVyIEFMVEVSIFNVQlNDUklQVElPTiAu Li4KKwkJICogUkVGUkVTSCBTRVFVRU5DRVMgb3IgdGhlIHNlcXVlbmNlc3luYyB3b3JrZXIpLgor CQkgKi8KKwkJaWYgKFhMb2dSZWNQdHJJc1ZhbGlkKGxvY2FsX3BhZ2VfbHNuKSAmJgorCQkJbG9j YWxfcGFnZV9sc24gPiBzZXFpbmZvLT5wYWdlX2xzbikKKwkJCXJldHVybiBDT1BZU0VRX05PX0RS SUZUOworCiAJCS8qIEdldCBjdXJyZW50IGxvY2FsIHNlcXVlbmNlIHN0YXRlICovCiAJCUdldFNl cXVlbmNlKHNlcXVlbmNlX3JlbCwgJmxvY2FsX2xhc3RfdmFsdWUsICZsb2NhbF9pc19jYWxsZWQp OwogCkBAIC0zOTAsNiArNDE1LDMyIEBAIHZhbGlkYXRlX3NlcXN5bmNfc3RhdGUoTG9naWNhbFJl cFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgUmVsYXRpb24gc2VxdWVuY2VfcmVsKQogCQlpZiAobG9j YWxfbGFzdF92YWx1ZSA9PSAwKQogCQkJcmV0dXJuIENPUFlTRVFfSU5TVUZGSUNJRU5UX1BFUk07 CiAKKwkJLyoKKwkJICogU2tpcCBzeW5jaHJvbml6YXRpb24gaWYgdGhlIGxvY2FsIHNlcXVlbmNl IHZhbHVlIGlzIGFscmVhZHkgYWhlYWQgb2YKKwkJICogdGhlIHB1Ymxpc2hlcidzIHZhbHVlLgor CQkgKgorCQkgKiBYWFggVGhpcyBvY2N1cnMgbm90IG9ubHkgd2hlbiB0aGUgbG9jYWwgc2VxdWVu Y2UgaGFzIGJlZW4KKwkJICogc3luY2hyb25pemVkIHRvIGEgbmV3ZXIgdmFsdWUgZnJvbSB0aGUg cHVibGlzaGVyICh3aGVyZSBza2lwcGluZyBpcworCQkgKiBuZWNlc3NhcnkgdG8gYXZvaWQgYmFj a3dhcmQgbW92ZW1lbnQpLCBidXQgYWxzbyB3aGVuIHRoZSBsb2NhbAorCQkgKiBzZXF1ZW5jZSBo YXMgYmVlbiBtYW51YWxseSB1cGRhdGVkIGJ5IHRoZSB1c2VyIG9uIHRoZSBzdWJzY3JpYmVyLiBU aGUKKwkJICogbGF0dGVyIGNvdWxkIGJlIGNvbnNpZGVyZWQgYSByZXBsaWNhdGlvbiBjb25mbGlj dCwgYW5kIG92ZXJ3cml0aW5nCisJCSAqIHRoZSB1c2VyJ3MgdXBkYXRlIG1pZ2h0IGJlIGFjY2Vw dGFibGUuIEhvd2V2ZXIsIHNpbmNlIHdlIGNhbm5vdAorCQkgKiBlYXNpbHkgZGlzdGluZ3Vpc2gg YmV0d2VlbiB0aGVzZSB0d28gc2NlbmFyaW9zLCB3ZSBjaG9vc2UgdG8gc2tpcAorCQkgKiBzeW5j aHJvbml6YXRpb24gaW4gYWxsIGNhc2VzIGFuZCBlbWl0IGEgV0FSTklORyB0byBub3RpZnkgdGhl IHVzZXIgdG8KKwkJICogbWFudWFsbHkgcmVzb2x2ZSB0aGUgY29uZmxpY3QuCisJCSAqLworCQlp ZiAobG9jYWxfbGFzdF92YWx1ZSA+IHNlcWluZm8tPmxhc3RfdmFsdWUpCisJCXsKKwkJCWVyZXBv cnQoV0FSTklORywKKwkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkJZXJybXNnKCJza2lwcGVkIHN5bmNocm9uaXppbmcgdGhlIHNlcXVl bmNlIFwiJXMuJXNcIiIsCisJCQkJCQkgICBzZXFpbmZvLT5uc3BuYW1lLCBzZXFpbmZvLT5zZXFu YW1lKSwKKwkJCQkJZXJyZGV0YWlsKCJUaGUgbG9jYWwgbGFzdF92YWx1ZSAlbGxkIGlzIGFoZWFk IG9mIHRoZSBvbmUgb24gcHVibGlzaGVyIiwKKwkJCQkJCQkgIChsb25nIGxvbmcgaW50KSBsb2Nh bF9sYXN0X3ZhbHVlKSk7CisKKwkJCXJldHVybiBDT1BZU0VRX05PX0RSSUZUOworCQl9CisKIAkJ LyoKIAkJICogU2tpcCBzeW5jaHJvbml6YXRpb24gaWYgdGhlIHNlcXVlbmNlIGhhcyBub3QgZHJp ZnRlZCBmcm9tIHRoZQogCQkgKiBwdWJsaXNoZXIncyB2YWx1ZS4KQEAgLTQxNCwxNiArNDY1LDE1 IEBAIHZhbGlkYXRlX3NlcXN5bmNfc3RhdGUoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5m bywgUmVsYXRpb24gc2VxdWVuY2VfcmVsKQogICogc3luY2hyb25pemVkLgogICovCiBzdGF0aWMg Q29weVNlcVJlc3VsdAotY29weV9zZXF1ZW5jZShMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFp bmZvLCBSZWxhdGlvbiBzZXF1ZW5jZV9yZWwpCitjb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1 ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9uIHNlcXVlbmNlX3JlbCwKKwkJCSAgT2lkIHN1Ymlk LCBib29sIHJ1bl9hc19vd25lcikKIHsKIAlVc2VyQ29udGV4dCB1Y3h0OwotCWJvb2wJCXJ1bl9h c19vd25lciA9IE15U3Vic2NyaXB0aW9uLT5ydW5hc293bmVyOwogCU9pZAkJCXNlcW9pZCA9IHNl cWluZm8tPmxvY2FscmVsaWQ7CiAJQ29weVNlcVJlc3VsdCByZXN1bHQ7CiAJWExvZ1JlY1B0cgls b2NhbF9wYWdlX2xzbjsKIAotCSh2b2lkKSBHZXRTdWJzY3JpcHRpb25SZWxTdGF0ZShNeVN1YnNj cmlwdGlvbi0+b2lkLAotCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGlkKHNlcXVlbmNlX3JlbCks CisJKHZvaWQpIEdldFN1YnNjcmlwdGlvblJlbFN0YXRlKHN1YmlkLCBSZWxhdGlvbkdldFJlbGlk KHNlcXVlbmNlX3JlbCksCiAJCQkJCQkJCSAgICZsb2NhbF9wYWdlX2xzbik7CiAKIAkvKgpAQCAt NDMzLDcgKzQ4Myw3IEBAIGNvcHlfc2VxdWVuY2UoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2Vx aW5mbywgUmVsYXRpb24gc2VxdWVuY2VfcmVsKQogCWlmICghcnVuX2FzX293bmVyKQogCQlTd2l0 Y2hUb1VudHJ1c3RlZFVzZXIoc2VxdWVuY2VfcmVsLT5yZF9yZWwtPnJlbG93bmVyLCAmdWN4dCk7 CiAKLQlyZXN1bHQgPSB2YWxpZGF0ZV9zZXFzeW5jX3N0YXRlKHNlcWluZm8sIHNlcXVlbmNlX3Jl bCk7CisJcmVzdWx0ID0gdmFsaWRhdGVfc2Vxc3luY19zdGF0ZShzZXFpbmZvLCBzZXF1ZW5jZV9y ZWwsIGxvY2FsX3BhZ2VfbHNuKTsKIAogCWlmIChyZXN1bHQgIT0gQ09QWVNFUV9BTExPV0VEKQog CXsKQEAgLTQ3OCw3ICs1MjgsOCBAQCBjb3B5X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUlu Zm8gKnNlcWluZm8sIFJlbGF0aW9uIHNlcXVlbmNlX3JlbCkKICAqIFJldHVybnMgdHJ1ZS9mYWxz ZSBpZiBhbnkgc2VxdWVuY2VzIHdlcmUgYWN0dWFsbHkgY29waWVkLgogICovCiBzdGF0aWMgYm9v bAotY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcykK K2NvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgTGlzdCAqc2VxaW5mb3MsIE9p ZCBzdWJpZCwgY2hhciAqc3VibmFtZSwKKwkJCSAgIGJvb2wgcnVuYXNvd25lcikKIHsKIAlpbnQJ CQljdXJfYmF0Y2hfYmFzZV9pbmRleCA9IDA7CiAJaW50CQkJbl9zZXFpbmZvcyA9IGxpc3RfbGVu Z3RoKHNlcWluZm9zKTsKQEAgLTUwNCwxMSArNTU1LDE2IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJl Y2VpdmVyQ29ubiAqY29ubiwgTGlzdCAqc2VxaW5mb3MpCiAJCWludAkJCWJhdGNoX25vX2RyaWZ0 ID0gMDsKIAkJaW50CQkJYmF0Y2hfbWlzc2luZ19jb3VudDsKIAkJUmVsYXRpb24Jc2VxdWVuY2Vf cmVsID0gTlVMTDsKKwkJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOwogCiAJCVdhbFJjdkV4ZWNS ZXN1bHQgKnJlczsKIAkJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAKLQkJU3RhcnRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKwkJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwkJeworCQkJU3RhcnRU cmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCXN0YXJ0ZWRfdHggPSB0cnVlOworCQl9CiAKIAkJZm9y IChpbnQgaWR4ID0gY3VyX2JhdGNoX2Jhc2VfaW5kZXg7IGlkeCA8IG5fc2VxaW5mb3M7IGlkeCsr KQogCQl7CkBAIC02MDQsMTQgKzY2MCwxNSBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNv bm4gKmNvbm4sIExpc3QgKnNlcWluZm9zKQogCQkJICogc2VxdWVuY2VzIGluIFJFQURZIHN0YXRl LCBvbmx5IHN5bmMgaWYgdGhlcmUncyBkcmlmdC4KIAkJCSAqLwogCQkJaWYgKHN5bmNfc3RhdHVz ID09IENPUFlTRVFfQUxMT1dFRCkKLQkJCQlzeW5jX3N0YXR1cyA9IGNvcHlfc2VxdWVuY2Uoc2Vx aW5mbywgc2VxdWVuY2VfcmVsKTsKKwkJCQlzeW5jX3N0YXR1cyA9IGNvcHlfc2VxdWVuY2Uoc2Vx aW5mbywgc2VxdWVuY2VfcmVsLAorCQkJCQkJCQkJCQlzdWJpZCwgcnVuYXNvd25lcik7CiAKIAkJ CXN3aXRjaCAoc3luY19zdGF0dXMpCiAJCQl7CiAJCQkJY2FzZSBDT1BZU0VRX1NVQ0NFU1M6CiAJ CQkJCWVsb2coREVCVUcxLAogCQkJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHN5bmNocm9uaXph dGlvbiBoYXMgdXBkYXRlZCBzZXF1ZW5jZSBcIiVzLiVzXCIgaW4gc3Vic2NyaXB0aW9uIFwiJXNc IiIsCi0JCQkJCQkgc2VxaW5mby0+bnNwbmFtZSwgc2VxaW5mby0+c2VxbmFtZSwgTXlTdWJzY3Jp cHRpb24tPm5hbWUpOworCQkJCQkJIHNlcWluZm8tPm5zcG5hbWUsIHNlcWluZm8tPnNlcW5hbWUs IHN1Ym5hbWUpOwogCQkJCQliYXRjaF9zdWNjZWVkZWRfY291bnQrKzsKIAkJCQkJc2VxdWVuY2Vf Y29waWVkID0gdHJ1ZTsKIAkJCQkJYnJlYWs7CkBAIC02MTksOSArNjc2LDggQEAgY29weV9zZXF1 ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uLCBMaXN0ICpzZXFpbmZvcykKIAkJCQljYXNlIENP UFlTRVFfTUlTTUFUQ0g6CiAKIAkJCQkJLyoKLQkJCQkJICogUmVtZW1iZXIgbWlzbWF0Y2hlZCBz ZXF1ZW5jZXMgaW4gU2VxdWVuY2VTeW5jQ29udGV4dAotCQkJCQkgKiBzaW5jZSB0aGVzZSB3aWxs IGJlIHVzZWQgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzCi0JCQkJCSAqIGNvbW1pdHRlZC4KKwkJ CQkJICogUmVtZW1iZXIgbWlzbWF0Y2hlZCBzZXF1ZW5jZXMgaW4gU2VxdWVuY2VTeW5jQ29udGV4 dCBzaW5jZQorCQkJCQkgKiB0aGVzZSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9u IGlzIGNvbW1pdHRlZC4KIAkJCQkJICovCiAJCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKIAkJCQkJbWlzbWF0Y2hlZF9zZXFzX2lkeCA9IGxh cHBlbmRfaW50KG1pc21hdGNoZWRfc2Vxc19pZHgsCkBAIC02ODksMTMgKzc0NSwxNyBAQCBjb3B5 X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zKQogCiAJCWVs b2coREVCVUcxLAogCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHNlcXVlbmNlIHN5bmNocm9uaXph dGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiAtIGJhdGNoICMlZCA9ICVkIGF0dGVtcHRlZCwg JWQgc3VjY2VlZGVkLCAlZCBtaXNtYXRjaGVkLCAlZCBpbnN1ZmZpY2llbnQgcGVybWlzc2lvbiwg JWQgbWlzc2luZyBmcm9tIHB1Ymxpc2hlciwgJWQgc2tpcHBlZCwgJWQgbm8gZHJpZnQiLAotCQkJ IE15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJIHN1Ym5hbWUsCiAJCQkgKGN1cl9iYXRjaF9iYXNl X2luZGV4IC8gTUFYX1NFUVVFTkNFU19TWU5DX1BFUl9CQVRDSCkgKyAxLAogCQkJIGJhdGNoX3Np emUsIGJhdGNoX3N1Y2NlZWRlZF9jb3VudCwgYmF0Y2hfbWlzbWF0Y2hlZF9jb3VudCwKIAkJCSBi YXRjaF9pbnN1ZmZwZXJtX2NvdW50LCBiYXRjaF9taXNzaW5nX2NvdW50LCBiYXRjaF9za2lwcGVk X2NvdW50LCBiYXRjaF9ub19kcmlmdCk7CiAKLQkJLyogQ29tbWl0IHRoaXMgYmF0Y2gsIGFuZCBw cmVwYXJlIGZvciBuZXh0IGJhdGNoICovCi0JCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CQkvKgorCQkgKiBDb21taXQgdGhpcyBiYXRjaCBpZiBzdGFydGVkIGEgdHJhbnNhY3Rpb24sIGFu ZCBwcmVwYXJlIGZvciBuZXh0CisJCSAqIGJhdGNoLgorCQkgKi8KKwkJaWYgKHN0YXJ0ZWRfdHgp CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAogCQlpZiAoYmF0Y2hfbWlzc2luZ19j b3VudCkKIAkJewpAQCAtNzIwLDcgKzc4MCw3IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVy Q29ubiAqY29ubiwgTGlzdCAqc2VxaW5mb3MpCiAKIAkvKiBSZXBvcnQgbWlzbWF0Y2hlcywgcGVy bWlzc2lvbiBpc3N1ZXMsIG9yIG1pc3Npbmcgc2VxdWVuY2VzICovCiAJcmVwb3J0X3NlcXVlbmNl X2Vycm9ycyhtaXNtYXRjaGVkX3NlcXNfaWR4LCBpbnN1ZmZwZXJtX3NlcXNfaWR4LAotCQkJCQkJ ICAgbWlzc2luZ19zZXFzX2lkeCwgc2VxaW5mb3MpOworCQkJCQkJICAgbWlzc2luZ19zZXFzX2lk eCwgc2VxaW5mb3MsIHN1Ym5hbWUpOwogCiAJcmV0dXJuIHNlcXVlbmNlX2NvcGllZDsKIH0KQEAg LTczMiwyMCArNzkyLDIzIEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwg TGlzdCAqc2VxaW5mb3MpCiAgKiBSZXR1cm5zIHRydWUgaWYgc2VxdWVuY2VzIGhhdmUgYmVlbiB1 cGRhdGVkLgogICovCiBzdGF0aWMgYm9vbAotTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMoV2FsUmVj ZWl2ZXJDb25uICpjb25uKQorTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25u ICpjb25uLCBPaWQgc3ViaWQsIGNoYXIgKnN1Ym5hbWUsCisJCQkJCQlib29sIHJ1bmFzb3duZXIp CiB7CiAJUmVsYXRpb24JcmVsOwogCUhlYXBUdXBsZQl0dXA7CiAJU2NhbktleURhdGEgc2tleVsx XTsKIAlTeXNTY2FuRGVzYyBzY2FuOwotCU9pZAkJCXN1YmlkID0gTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZDsKIAlib29sCQlzZXF1ZW5jZV9jb3BpZWQgPSBmYWxzZTsKIAlMaXN0CSAgICpzZXFp bmZvcyA9IE5JTDsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwlib29sCQlzdGFydGVkX3R4ID0g ZmFsc2U7CiAKLQlBc3NlcnQoU2VxdWVuY2VTeW5jQ29udGV4dCk7Ci0KLQlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJeworCQlTdGFydFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsKKwl9CiAKIAlyZWwgPSB0 YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAK QEAgLTgwNSw3ICs4NjgsOCBAQCBMb2dpY2FsUmVwU3luY1NlcXVlbmNlcyhXYWxSZWNlaXZlckNv bm4gKmNvbm4pCiAJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKIAl0YWJsZV9jbG9zZShyZWwsIEFj Y2Vzc1NoYXJlTG9jayk7CiAKLQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlpZiAoc3Rh cnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKIAkvKgogCSAqIEV4aXQg ZWFybHkgaWYgbm8gY2F0YWxvZyBlbnRyaWVzIGZvdW5kLCBsaWtlbHkgZHVlIHRvIGNvbmN1cnJl bnQgZHJvcHMuCkBAIC04MTQsNyArODc4LDggQEAgTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMoV2Fs UmVjZWl2ZXJDb25uICpjb25uKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBQcm9jZXNzIHNlcXVl bmNlcyAqLwotCXNlcXVlbmNlX2NvcGllZCA9IGNvcHlfc2VxdWVuY2VzKGNvbm4sIHNlcWluZm9z KTsKKwlzZXF1ZW5jZV9jb3BpZWQgPSBjb3B5X3NlcXVlbmNlcyhjb25uLCBzZXFpbmZvcywgc3Vi aWQsIHN1Ym5hbWUsCisJCQkJCQkJCQkgcnVuYXNvd25lcik7CiAKIAlyZXR1cm4gc2VxdWVuY2Vf Y29waWVkOwogfQpAQCAtODg5LDcgKzk1NCwxMCBAQCBzdGFydF9zZXF1ZW5jZV9zeW5jKHZvaWQp CiAJCQkvKgogCQkJICogU3luY2hyb25pemUgYWxsIHNlcXVlbmNlcyAoYm90aCBSRUFEWSBhbmQg SU5JVCBzdGF0ZXMpLgogCQkJICovCi0JCQlzZXF1ZW5jZV9jb3BpZWQgPSBMb2dpY2FsUmVwU3lu Y1NlcXVlbmNlcyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKKwkJCXNlcXVlbmNlX2NvcGllZCA9 IExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sCisJCQkJCQkJ CQkJCQkJICBNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCQkJCSAgTXlTdWJzY3JpcHRp b24tPm5hbWUsCisJCQkJCQkJCQkJCQkJICBNeVN1YnNjcmlwdGlvbi0+cnVuYXNvd25lcik7CiAK IAkJCU1lbW9yeUNvbnRleHRSZXNldChTZXF1ZW5jZVN5bmNDb250ZXh0KTsKIAkJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjdHgpOwpAQCAtOTUxLDMgKzEwMTksMzcgQEAgU2VxdWVuY2VTeW5j V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCUZpbmlzaFN5bmNXb3JrZXIoKTsKIH0KKwor LyoKKyAqIFdyYXBwZXIgZm9yIExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzIHRvIHN5bmNocm9uaXpl IGFsbCBzZXF1ZW5jZXMgb2YgYQorICogc3Vic2NyaXB0aW9uIGZyb20gb3V0c2lkZSB0aGUgc2Vx dWVuY2VzeW5jIHdvcmtlcgorICovCit2b2lkCitBbHRlclN1YlN5bmNTZXF1ZW5jZXMoV2FsUmVj ZWl2ZXJDb25uICpjb25uLCBPaWQgc3ViaWQsIGNoYXIgKnN1Ym5hbWUsCisJCQkJCSAgYm9vbCBy dW5hc293bmVyKQoreworCS8qCisJICogSW5pdCB0aGUgU2VxdWVuY2VTeW5jQ29udGV4dCB3aGlj aCB3ZSBjbGVhbiB1cCBhZnRlciB0aGUgc2VxdWVuY2UKKwkgKiBzeW5jaHJvbml6YXRpb24uCisJ ICovCisJU2VxdWVuY2VTeW5jQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50 TWVtb3J5Q29udGV4dCwKKwkJCQkJCQkJCQkJCSJTZXF1ZW5jZVN5bmNDb250ZXh0IiwKKwkJCQkJ CQkJCQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJUEdfVFJZKCk7CisJeworCQlNZW1v cnlDb250ZXh0CW9sZGN0eDsKKworCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2Vx dWVuY2VTeW5jQ29udGV4dCk7CisKKwkJTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMoY29ubiwgc3Vi aWQsIHN1Ym5hbWUsIHJ1bmFzb3duZXIpOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj dHgpOworCX0KKwlQR19GSU5BTExZKCk7CisJeworCQlNZW1vcnlDb250ZXh0RGVsZXRlKFNlcXVl bmNlU3luY0NvbnRleHQpOworCQlTZXF1ZW5jZVN5bmNDb250ZXh0ID0gTlVMTDsKKwl9CisJUEdf RU5EX1RSWSgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4 IDdkNzQ4YTI4ZGE4Li43M2FmZDc4NTNkMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWx3b3JrZXIuaApAQCAtMTQsNiArMTQsOCBAQAogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKKyNp bmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgorCiBleHRlcm4gUEdETExJTVBPUlQg dm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZzsKIAogZXh0 ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKQEAgLTMxLDQgKzMzLDcg QEAgZXh0ZXJuIHZvaWQgTG9naWNhbFJlcFdvcmtlcnNXYWtldXBBdENvbW1pdChPaWQgc3ViaWQp OwogCiBleHRlcm4gdm9pZCBBdEVPWGFjdF9Mb2dpY2FsUmVwV29ya2Vycyhib29sIGlzQ29tbWl0 KTsKIAorZXh0ZXJuIHZvaWQgQWx0ZXJTdWJTeW5jU2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAq Y29ubiwgT2lkIHN1YmlkLAorCQkJCQkJCQkgIGNoYXIgKnN1Ym5hbWUsIGJvb2wgcnVuYXNvd25l cik7CisKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMV09SS0VSX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsCmluZGV4IDFkODE1MThmZTIyLi45YTYxYjdiZDBjOCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbAorKysg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsCkBAIC0xNzYsNCArMTc2 LDUzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9XQVJOSU5HOiAoIFtB LVowLTldKzopPyBtaXNzaW5nIHNlcXVlbmNlIG9uIHB1Ymxpc2hlciBcKCJwdWJsaWMucmVncmVz c19zNCJcKS8sCiAJJGxvZ19vZmZzZXQpOwogCisjIyMjIyMjIyMjCisjIEFMVEVSIFNVQlNDUklQ VElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMgc3luY2hyb25pemVzIHNlcXVlbmNlcyBvbmxpbmUs CisjIGVsaW1pbmF0aW5nIHRoZSBuZWVkIHRvIGxhdW5jaCBhIHNlcXVlbmNlc3luYyB3b3JrZXIu CisjIyMjIyMjIyMjCisKKyMgUmVkdWNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMg dG8gZGlzYWxsb3cgc2VxdWVuY2Ugd29ya2VyIGZyb20gcnVubmluZworJG5vZGVfc3Vic2NyaWJl ci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJcXEobWF4X2xvZ2ljYWxfcmVwbGlj YXRpb25fd29ya2VycyA9IDApKTsKKyRub2RlX3N1YnNjcmliZXItPnJlc3RhcnQ7CisKKyMgVmVy aWZ5IHRoZXJlIGlzIG5vIGxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIHJ1bm5pbmcK KyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywKKwki U0VMRUNUIGNvdW50KCopIEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSBiYWNrZW5kX3R5cGUg PSAnbG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXInIik7CisKK2lzKCRyZXN1bHQsICcw JywgJ25vIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGlzIHJ1bm5pbmcnKTsKKworIyBJbmNy ZW1lbnQgc2VxdWVuY2Ugb24gcHVibGlzaGVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXFxKFNFTEVDVCBuZXh0dmFsKCdyZWdyZXNzX3MxJyk7KSk7CisKKyMgVGhl IGNvbW1hbmQgc2hvdWxkIGZhaWwgZHVlIHRvIG1pc3Npbmcgc2VxdWVuY2UgKCdyZWdyZXNzX3M0 JykKK215ICgkY21kcmV0LCAkc3Rkb3V0LCAkc3RkZXJyKSA9ICRub2RlX3N1YnNjcmliZXItPnBz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc2VxX3N1YiBSRUZS RVNIIFNFUVVFTkNFUzsiKTsKKworbGlrZSgKKwkkc3RkZXJyLAorCXFyL1dBUk5JTkc6ICBtaXNz aW5nIHNlcXVlbmNlIG9uIHB1Ymxpc2hlciBcKCJwdWJsaWMucmVncmVzc19zNCJcKS8sCisJIm91 dHB1dCB0aGUgd2FucmluZyBmb3IgdGhlIG1pc3Npbmcgc2VxdWVuY2UgcmVncmVzc19zNCIpOwor CitsaWtlKAorCSRzdGRlcnIsCisJcXIvRVJST1I6ICBsb2dpY2FsIHJlcGxpY2F0aW9uIHNlcXVl bmNlIHN5bmNocm9uaXphdGlvbiBmYWlsZWQgZm9yIHN1YnNjcmlwdGlvbiBcInJlZ3Jlc3Nfc2Vx X3N1YlwiLywKKwkidGhlIGNvbW1hbmQgZmFpbGVkIGR1ZSB0byB0aGUgbWlzc2luZyBzZXF1ZW5j ZSByZWdyZXNzX3M0Iik7CisKKyMgUmVmcmVzaCB0aGUgcHVibGljYXRpb24gdG8gcmVtb3ZlIHRo ZSBtaXNzaW5nIHNlcXVlbmNlCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc2VxX3N1YiBSRUZSRVNIIFBVQkxJQ0FU SU9OOyIpOworCisjIFN5bmMgdGhlIHNlcXVlbmNlIHJlZ3Jlc3NfczEKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19z ZXFfc3ViIFJFRlJFU0ggU0VRVUVOQ0VTOyIpOworCisjIEdldCB0aGUgY3VycmVudCBzZXF1ZW5j ZSB2YWx1ZSBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJcXEoU0VMRUNUIGxhc3RfdmFsdWUgRlJPTSByZWdyZXNzX3MxOykp OworCitpcygkcmVzdWx0LCAnMjAxJywgJ3NlcXVlbmNlIHJlZ3Jlc3NfczEgaXMgc3luY2VkIG5v dycpOworCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNTEuMS53aW5kb3dzLjEKCg== --_003_TY4PR01MB1690739DE978BCBD12358478E947DATY4PR01MB16907jp_ Content-Type: application/octet-stream; name="v10-0001-Support-automatic-sequence-replication.patch" Content-Description: v10-0001-Support-automatic-sequence-replication.patch Content-Disposition: attachment; filename="v10-0001-Support-automatic-sequence-replication.patch"; size=43216; creation-date="Thu, 05 Mar 2026 02:42:31 GMT"; modification-date="Thu, 05 Mar 2026 02:46:00 GMT" Content-Transfer-Encoding: base64 RnJvbSA1M2UzZmNiYWU0ZTUzZjNiNTNjZjlkZWZlYTJlOTIwNDE4ZmE2OGVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUdWUsIDI0IEZlYiAyMDI2IDIxOjM3OjAxICsxMTAwClN1YmplY3Q6IFtQQVRDSCB2MTAgMS8y XSBTdXBwb3J0IGF1dG9tYXRpYyBzZXF1ZW5jZSByZXBsaWNhdGlvbi4KCkN1cnJlbnRseSwgc2Vx dWVuY2UgdmFsdWVzIGFyZSBzeW5jaHJvbml6ZWQgZnJvbSBwdWJsaXNoZXIgdG8gc3Vic2NyaWJl ciBvbmx5CndoZW4gdGhlIHVzZXIgbWFudWFsbHkgcnVucyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4u IFJFRlJFU0ggUFVCTElDQVRJT04gKHdoaWNoCmFmZmVjdHMgb25seSBuZXdseSBzdWJzY3JpYmVk IHNlcXVlbmNlcykgb3IgUkVGUkVTSCBTRVFVRU5DRVMuIFRoZSBzZXF1ZW5jZSBzeW5jCndvcmtl ciBleGl0cyBpbW1lZGlhdGVseSBhZnRlciBjb21wbGV0aW5nIGVhY2ggc3luY2hyb25pemF0aW9u IHJvdW5kLgoKVGhlIHByaW1hcnkgdXNlIGNhc2UgZm9yIHNlcXVlbmNlIHJlcGxpY2F0aW9uIGlz IGR1cmluZyB1cGdyYWRlcywgd2hlcmUgaXQncwpyZWNvbW1lbmRlZCB0aGF0IHVzZXJzIGVuc3Vy ZSBzZXF1ZW5jZXMgYXJlIGluIHN5bmMgYnkgcnVubmluZyBSRUZSRVNIIFNFUVVFTkNFUwpiZWZv cmUgZmluaXNoaW5nIHRoZSB1cGdyYWRlLiBIb3dldmVyLCB0aGlzIGNvbW1hbmQgY2FuIGJlIHNs b3cgd2hlbgpzeW5jaHJvbml6aW5nIGEgbGFyZ2UgbnVtYmVyIG9mIHNlcXVlbmNlcywgcG90ZW50 aWFsbHkgaW5jcmVhc2luZyBkb3dudGltZS4KClRvIGFkZHJlc3MgdGhpcywgdGhpcyBjb21taXQg bWFrZXMgdGhlIHNlcXVlbmNlIHN5bmMgd29ya2VyIGxvbmctbGl2ZWQsCmNvbnRpbnVvdXNseSBt b25pdG9yaW5nIHNlcXVlbmNlcyBhbmQgcmVzeW5jaHJvbml6aW5nIHRoZW0gd2hlbiBkcmlmdCBp cwpkZXRlY3RlZC4gVGhlIHdvcmtlciB1c2VzIGFuIGFkYXB0aXZlIHNsZWVwIGludGVydmFsOiBp dCBzdGFydHMgYXQgMiBzZWNvbmRzLApkb3VibGVzIHVwIHRvIGEgbWF4aW11bSBvZiAzMCBzZWNv bmRzIHdoZW4gbm8gZHJpZnQgaXMgb2JzZXJ2ZWQsIGFuZCByZXNldHMgdG8KdGhlIG1pbmltdW0g aW50ZXJ2YWwgb25jZSBkcmlmdCBpcyBmb3VuZC4KCldpdGggdGhpcyBjaGFuZ2UsIG1vc3Qgc2Vx dWVuY2VzIGFyZSBzaWxlbnRseSBzeW5jaHJvbml6ZWQgaW4gdGhlIGJhY2tncm91bmQsCmVsaW1p bmF0aW5nIHRoZSBuZWVkIHRvIHJ1biBSRUZSRVNIIFNFUVVFTkNFUyBmb3IgdGhlIG1ham9yaXR5 IG9mIGNhc2VzLgoKSG93ZXZlciwgZnJlcXVlbnRseSB1cGRhdGVkIHNlcXVlbmNlcyBtYXkgc3Rp bGwgbGFnIGJlaGluZCwgcmVxdWlyaW5nIGEgZmluYWwKUkVGUkVTSCBTRVFVRU5DRVMgYmVmb3Jl IHVwZ3JhZGUgY29tcGxldGlvbi4gVXNlcnMgY2FuIG1vbml0b3IgcHJvZ3Jlc3MgYnkKY2hlY2tp bmcgd2hldGhlciBzZXF1ZW5jZSBzdGF0ZXMgdHJhbnNpdGlvbiBmcm9tIElOSVQgdG8gUkVBRFkg aW4KcGdfc3Vic2NyaXB0aW9uX3JlbC4KClRoZSBSRUZSRVNIIFNFUVVFTkNFUyBjb21tYW5kIGlz IHJldGFpbmVkIGZvciB0aGlzIGZpbmFsIHN5bmNocm9uaXphdGlvbiBzdGVwLAp0aG91Z2ggaXQg Y3VycmVudGx5IHVwZGF0ZXMgYWxsIHNlcXVlbmNlIHN0YXRlcyB0byBJTklULCB3aGljaCBoYXMg cm9vbSBmb3IKaW1wcm92ZW1lbnQuIEEgZnV0dXJlIHBhdGNoIHdpbGwgZW5oYW5jZSB0aGlzIGNv bW1hbmQgdG8gc3luY2hyb25pemUgc2VxdWVuY2VzCmRpcmVjdGx5IHdpdGhvdXQgbGF1bmNoaW5n IGEgd29ya2VyLCByZWR1Y2luZyBjYXRhbG9nIG92ZXJoZWFkLgoKQXV0aG9yOiBBamluIENoZXJp YW4gPGl0c2FqaW5AZ21haWwuY29tPgpBdXRob3I6IFpoaWppZSBIb3UgPGhvdXpqLmZuc3RAZnVq aXRzdS5jb20+ClJldmlld2VkLWJ5OiBTaHZldGEgTWFsaWsgPHNodmV0YS5tYWxpa0BnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBQZXRlciBTbWl0aCA8c21pdGhwYjIyNTBAZ21haWwuY29tPgpSZXZp ZXdlZC1ieTogQXNodXRvc2ggU2hhcm1hIDxhc2h1LmNvZWs4OEBnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBBbWl0IEthcGlsYSA8YW1pdC5rYXBpbGExNkBnbWFpbC5jb20+Ci0tLQogZG9jL3NyYy9z Z21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgICAgIHwgIDIzICstCiBkb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sICAgICAgfCAgIDUgLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvc2VxdWVuY2UuYyAgICAgICAgICAgICAgIHwgIDM5ICsrCiAuLi4vcmVwbGljYXRp b24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyAgICAgICAgfCAzODMgKysrKysrKysrKysrKy0tLS0t CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1dGlscy5jICAgfCAgNDcgKy0t CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgMTEgKwog c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmggICAgIHwgICAxICsKIHNy Yy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAgIDIgKy0KIHNyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbCAgICAgICAgICB8ICAgMiArCiBzcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsICAgICAgfCAgNzkgKy0tLQogMTEgZmls ZXMgY2hhbmdlZCwgMzg5IGluc2VydGlvbnMoKyksIDIwNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21s L2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA1MDI4ZmU5YWYwOS4uYmI1MjNhZjVkMzcg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTc4Nyw4ICsxNzg3LDkg QEAgUHVibGljYXRpb25zOgogCiAgIDxwYXJhPgogICAgQSA8Zmlyc3R0ZXJtPnNlcXVlbmNlIHN5 bmNocm9uaXphdGlvbiB3b3JrZXI8L2ZpcnN0dGVybT4gd2lsbCBiZSBzdGFydGVkCi0gICBhZnRl ciBleGVjdXRpbmcgYW55IG9mIHRoZSBhYm92ZSBzdWJzY3JpYmVyIGNvbW1hbmRzLCBhbmQgd2ls bCBleGl0IG9uY2UgdGhlCi0gICBzZXF1ZW5jZXMgYXJlIHN5bmNocm9uaXplZC4KKyAgIGFmdGVy IGV4ZWN1dGluZyBhbnkgb2YgdGhlIGFib3ZlIHN1YnNjcmliZXIgY29tbWFuZHMuIFRoZSB3b3Jr ZXIgd2lsbAorICAgcmVtYWluIHJ1bm5pbmcgZm9yIHRoZSBsaWZlIG9mIHRoZSBzdWJzY3JpcHRp b24sIHBlcmlvZGljYWxseQorICAgc3luY2hyb25pemluZyBhbGwgcHVibGlzaGVkIHNlcXVlbmNl cy4KICAgPC9wYXJhPgogICA8cGFyYT4KICAgIFRoZSBhYmlsaXR5IHRvIGxhdW5jaCBhIHNlcXVl bmNlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIgaXMgbGltaXRlZCBieSB0aGUKQEAgLTE4MTcsNyAr MTgxOCw3IEBAIFB1YmxpY2F0aW9uczoKICAgPHNlY3QyIGlkPSJzZXF1ZW5jZXMtb3V0LW9mLXN5 bmMiPgogICAgPHRpdGxlPlJlZnJlc2hpbmcgT3V0LW9mLVN5bmMgU2VxdWVuY2VzPC90aXRsZT4K ICAgIDxwYXJhPgotICAgIFN1YnNjcmliZXIgc2VxdWVuY2UgdmFsdWVzIHdpbGwgYmVjb21lIG91 dCBvZiBzeW5jIGFzIHRoZSBwdWJsaXNoZXIKKyAgICBTdWJzY3JpYmVyIHNlcXVlbmNlIHZhbHVl cyBjYW4gYmVjb21lIG91dCBvZiBzeW5jIGFzIHRoZSBwdWJsaXNoZXIKICAgICBhZHZhbmNlcyB0 aGVtLgogICAgPC9wYXJhPgogICAgPHBhcmE+CkBAIC0yMzM1LDE1ICsyMzM2LDEzIEBAIENPTlRF WFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2 Mzk1IiBkdXJpbmcgIklOU0VSCiAKICAgIDxsaXN0aXRlbT4KICAgICA8cGFyYT4KLSAgICAgSW5j cmVtZW50YWwgc2VxdWVuY2UgY2hhbmdlcyBhcmUgbm90IHJlcGxpY2F0ZWQuICBBbHRob3VnaCB0 aGUgZGF0YSBpbgotICAgICBzZXJpYWwgb3IgaWRlbnRpdHkgY29sdW1ucyBiYWNrZWQgYnkgc2Vx dWVuY2VzIHdpbGwgYmUgcmVwbGljYXRlZCBhcyBwYXJ0Ci0gICAgIG9mIHRoZSB0YWJsZSwgdGhl IHNlcXVlbmNlcyB0aGVtc2VsdmVzIGRvIG5vdCByZXBsaWNhdGUgb25nb2luZyBjaGFuZ2VzLgot ICAgICBPbiB0aGUgc3Vic2NyaWJlciwgYSBzZXF1ZW5jZSB3aWxsIHJldGFpbiB0aGUgbGFzdCB2 YWx1ZSBpdCBzeW5jaHJvbml6ZWQKLSAgICAgZnJvbSB0aGUgcHVibGlzaGVyLiBJZiB0aGUgc3Vi c2NyaWJlciBpcyB1c2VkIGFzIGEgcmVhZC1vbmx5IGRhdGFiYXNlLAotICAgICB0aGVuIHRoaXMg c2hvdWxkIHR5cGljYWxseSBub3QgYmUgYSBwcm9ibGVtLiAgSWYsIGhvd2V2ZXIsIHNvbWUga2lu ZCBvZgotICAgICBzd2l0Y2hvdmVyIG9yIGZhaWxvdmVyIHRvIHRoZSBzdWJzY3JpYmVyIGRhdGFi YXNlIGlzIGludGVuZGVkLCB0aGVuIHRoZQotICAgICBzZXF1ZW5jZXMgd291bGQgbmVlZCB0byBi ZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgdmFsdWVzLCBlaXRoZXIgYnkKLSAgICAgZXhlY3V0aW5n IDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVzaC1zZXF1 ZW5jZXMiPgorICAgICBJbmNyZW1lbnRhbCBzZXF1ZW5jZSBjaGFuZ2VzIGFyZSBjb250aW51b3Vz bHkgcmVwbGljYXRlZC4gSWYsIGhvd2V2ZXIsCisgICAgIHNvbWUga2luZCBvZiBzd2l0Y2hvdmVy IG9yIGZhaWxvdmVyIHRvIHRoZSBzdWJzY3JpYmVyIGRhdGFiYXNlIGlzCisgICAgIGludGVuZGVk LCB0aGVuIHRoZSBzZXF1ZW5jZXMgcmVwbGljYXRpb24gY291bGQgYmUgbGFnZ2luZyBiZWhpbmQg YW5kCisgICAgIHRoZSBzZXF1ZW5jZXMgb24gdGhlIHN1YnNjcmliZXIgc2hvdWxkIGJlIGNvbXBh cmVkIHdpdGggdGhhdCBvZiB0aGUKKyAgICAgcHVibGlzaGVyIHRvIG1ha2Ugc3VyZSB0aGF0IHRo ZXkgYXJlIHVwIHRvIGRhdGUsIGlmIG5vdCB0aGV5CisgICAgIG5lZWQgdG8gYmUgdXBkYXRlZCB0 byB0aGUgbGF0ZXN0IHZhbHVlcywgZWl0aGVyIGJ5IGV4ZWN1dGluZworICAgICA8bGluayBsaW5r ZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24tcGFyYW1zLXJlZnJlc2gtc2VxdWVuY2VzIj4KICAg ICAgPGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFNFUVVFTkNFUzwvY29t bWFuZD48L2xpbms+CiAgICAgIG9yIGJ5IGNvcHlpbmcgdGhlIGN1cnJlbnQgZGF0YSBmcm9tIHRo ZSBwdWJsaXNoZXIgKHBlcmhhcHMgdXNpbmcKICAgICAgPGNvbW1hbmQ+cGdfZHVtcDwvY29tbWFu ZD4pIG9yIGJ5IGRldGVybWluaW5nIGEgc3VmZmljaWVudGx5IGhpZ2ggdmFsdWUKZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IDUzMTg5OThlODBjLi41YTdiNGYz YzJjMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0xOTAs MTEgKzE5MCw2IEBAIEFMVEVSIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8CiAgICAgICAgICAgUHJldmlvdXNs eSBzdWJzY3JpYmVkIHRhYmxlcyBhcmUgbm90IGNvcGllZCwgZXZlbiBpZiBhIHRhYmxlJ3Mgcm93 CiAgICAgICAgICAgZmlsdGVyIDxsaXRlcmFsPldIRVJFPC9saXRlcmFsPiBjbGF1c2UgaGFzIHNp bmNlIGJlZW4gbW9kaWZpZWQuCiAgICAgICAgICA8L3BhcmE+Ci0gICAgICAgICA8cGFyYT4KLSAg ICAgICAgICBQcmV2aW91c2x5IHN1YnNjcmliZWQgc2VxdWVuY2VzIGFyZSBub3QgcmUtc3luY2hy b25pemVkLiBUbyBkbyB0aGF0LAotICAgICAgICAgIHVzZSA8bGluayBsaW5rZW5kPSJzcWwtYWx0 ZXJzdWJzY3JpcHRpb24tcGFyYW1zLXJlZnJlc2gtc2VxdWVuY2VzIj4KLSAgICAgICAgICA8Y29t bWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggU0VRVUVOQ0VTPC9jb21tYW5kPjwv bGluaz4uCi0gICAgICAgICA8L3BhcmE+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICBTZWUg PHhyZWYgbGlua2VuZD0ic2VxdWVuY2UtZGVmaW5pdGlvbi1taXNtYXRjaGVzIi8+IGZvciByZWNv bW1lbmRhdGlvbnMgb24gaG93CiAgICAgICAgICAgdG8gaGFuZGxlIGFueSB3YXJuaW5ncyBhYm91 dCBzZXF1ZW5jZSBkZWZpbml0aW9uIGRpZmZlcmVuY2VzIGJldHdlZW4KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1 ZW5jZS5jCmluZGV4IGUxYjgwOGJiYjYwLi42OTJiNmI2ODU3YyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1 ZW5jZS5jCkBAIC05MjksNiArOTI5LDQ1IEBAIGxhc3R2YWwoUEdfRlVOQ1RJT05fQVJHUykKIAlQ R19SRVRVUk5fSU5UNjQocmVzdWx0KTsKIH0KIAorLyoKKyAqIFJlYWQgdGhlIGN1cnJlbnQgc2Vx dWVuY2UgdmFsdWVzIChsYXN0X3ZhbHVlIGFuZCBpc19jYWxsZWQpCisgKgorICogVGhpcyBpcyBh IHJlYWQtb25seSBvcGVyYXRpb24gdXNlZCBieSBsb2dpY2FsIHJlcGxpY2F0aW9uIHNlcXVlbmNl CisgKiBzeW5jaHJvbml6YXRpb24gdG8gZGV0ZWN0IGRyaWZ0LiBUaGUgY2FsbGVyIG11c3QgaG9s ZCBhIGxvY2sgb24gdGhlIHNlcXVlbmNlLgorICoKKyAqIElmIHRoZSBjYWxsZXIgZG9lcyBub3Qg aGF2ZSBzdWZmaWNpZW50IHByaXZpbGVnZXMgdG8gYWNjZXNzIHRoZSBzZXF1ZW5jZSwKKyAqICps YXN0X3ZhbHVlIHdpbGwgYmUgc2V0IHRvIDAuCisgKi8KK3ZvaWQKK0dldFNlcXVlbmNlKFJlbGF0 aW9uIHNlcXJlbCwgaW50NjQgKmxhc3RfdmFsdWUsIGJvb2wgKmlzX2NhbGxlZCkKK3sKKwlCdWZm ZXIJCWJ1ZjsKKwlIZWFwVHVwbGVEYXRhIHNlcXR1cGxlOworCUZvcm1fcGdfc2VxdWVuY2VfZGF0 YSBzZXE7CisJT2lkCQkJcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHNlcXJlbCk7CisKKwkvKiBD b25maXJtIHRoYXQgdGhlIHJlbGF0aW9uIGlzIGEgc2VxdWVuY2UgYW5kIGlzIGxvY2tlZCAqLwor CUFzc2VydChzZXFyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKTsKKwlB c3NlcnQoQ2hlY2tSZWxhdGlvbkxvY2tlZEJ5TWUoc2VxcmVsLCBBY2Nlc3NTaGFyZUxvY2ssIHRy dWUpKTsKKworCWlmIChwZ19jbGFzc19hY2xjaGVjayhyZWxpZCwgR2V0VXNlcklkKCksIEFDTF9T RUxFQ1QpICE9IEFDTENIRUNLX09LKQorCXsKKwkJKmxhc3RfdmFsdWUgPSAwOworCQkqaXNfY2Fs bGVkID0gZmFsc2U7CisJCXJldHVybjsKKwl9CisKKwkvKiBSZWFkIHRoZSBzZXF1ZW5jZSB0dXBs ZSAqLworCXNlcSA9IHJlYWRfc2VxX3R1cGxlKHNlcXJlbCwgJmJ1ZiwgJnNlcXR1cGxlKTsKKwor CS8qIEV4dHJhY3QgdGhlIHZhbHVlcyAqLworCSpsYXN0X3ZhbHVlID0gc2VxLT5sYXN0X3ZhbHVl OworCSppc19jYWxsZWQgPSBzZXEtPmlzX2NhbGxlZDsKKworCS8qIFJlbGVhc2UgYnVmZmVyICov CisJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOworfQorCiAvKgogICogTWFpbiBpbnRlcm5hbCBw cm9jZWR1cmUgdGhhdCBoYW5kbGVzIDIgJiAzIGFyZyBmb3JtcyBvZiBTRVRWQUwuCiAgKgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKaW5kZXggOWM5 MmZkZGQ2MjQuLmZiMjkzNDg3NjU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3NlcXVlbmNlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvc2VxdWVuY2VzeW5jLmMKQEAgLTE5LDEwICsxOSw2IEBACiAgKiBDUkVBVEUgU1VCU0NS SVBUSU9OCiAgKiBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04KICAq Ci0gKiBFeGVjdXRpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kIHJlc2V0cyBhbGwgc2VxdWVuY2Vz IGluIHRoZSBzdWJzY3JpcHRpb24gdG8KLSAqIHN0YXRlIElOSVQsIHRyaWdnZXJpbmcgcmUtc3lu Y2hyb25pemF0aW9uOgotICogQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFNFUVVFTkNF UwotICoKICAqIFRoZSBhcHBseSB3b3JrZXIgcGVyaW9kaWNhbGx5IHNjYW5zIHBnX3N1YnNjcmlw dGlvbl9yZWwgZm9yIHNlcXVlbmNlcyBpbgogICogSU5JVCBzdGF0ZS4gV2hlbiBzdWNoIHNlcXVl bmNlcyBhcmUgZm91bmQsIGl0IHNwYXducyBhIHNlcXVlbmNlc3luYyB3b3JrZXIKICAqIHRvIGhh bmRsZSBzeW5jaHJvbml6YXRpb24uCkBAIC0zNiw4ICszMiwyNCBAQAogICogbG9jYWwgc3Vic2Ny aWJlciwgYW5kIGZpbmFsbHkgbWFya3MgZWFjaCBzZXF1ZW5jZSBhcyBSRUFEWSB1cG9uIHN1Y2Nl c3NmdWwKICAqIHN5bmNocm9uaXphdGlvbi4KICAqCisgKiBUaGUgc2VxdWVuY2VzeW5jIHdvcmtl ciB0aGVuIGZldGNoZXMgYWxsIHNlcXVlbmNlcyB0aGF0IGFyZQorICogaW4gdGhlIFJFQURZIHN0 YXRlLCBxdWVyaWVzIHRoZSBwdWJsaXNoZXIgZm9yIGN1cnJlbnQgc2VxdWVuY2UgdmFsdWVzLCBh bmQKKyAqIHVwZGF0ZXMgYW55IHNlcXVlbmNlcyB0aGF0IGhhdmUgZHJpZnRlZCBhbmQgdGhlbiBn b2VzIHRvIHNsZWVwLiBUaGUgc2xlZXAKKyAqIGludGVydmFsIHN0YXJ0cyBhcyBTRVFTWU5DX01J Tl9TTEVFUF9NUyBhbmQgZG91YmxlcyBhZnRlciBlYWNoIHdha2UgY3ljbGUKKyAqICh1cCB0byBT RVFTWU5DX01BWF9TTEVFUF9NUykuIFdoZW4gZHJpZnQgaXMgZGV0ZWN0ZWQsIHRoZSBpbnRlcnZh bCByZXNldHMgdG8KKyAqIHRoZSBtaW5pbXVtIHRvIGVuc3VyZSB0aW1lbHkgdXBkYXRlcy4KKyAq CisgKiBBZnRlciBDUkVBVEUgU1VCU0NSSVBUSU9OLCBzZXF1ZW5jZXMgYmVnaW4gaW4gdGhlIElO SVQgc3RhdGUuIFNlcXVlbmNlcworICogYWRkZWQgdGhyb3VnaCBBTFRFUiBTVUJTQ1JJUFRJT04u LiBSRUZSRVNIIFBVQkxJQ0FUSU9OIGFsc28gc3RhcnQgaW4gdGhlIElOSVQKKyAqIHN0YXRlLiBB bGwgSU5JVCBzZXF1ZW5jZXMgYXJlIHN5bmNocm9uaXplZCB1bmNvbmRpdGlvbmFsbHksIHRoZW4g dHJhbnNpdGlvbgorICogdG8gdGhlIFJFQURZIHN0YXRlLiBPbmNlIGluIHRoZSBSRUFEWSBzdGF0 ZSwgc2VxdWVuY2VzIGFyZSBjaGVja2VkIGZvciBkcmlmdAorICogZnJvbSB0aGUgcHVibGlzaGVy IGFuZCBzeW5jaHJvbml6ZWQgb25seSB3aGVuIGRyaWZ0IGlzIGRldGVjdGVkLgorICoKICAqIFNl cXVlbmNlIHN0YXRlIHRyYW5zaXRpb25zIGZvbGxvdyB0aGlzIHBhdHRlcm46Ci0gKiAgIElOSVQg LT4gUkVBRFkKKyAqICBJTklUIC0tPiBSRUFEWSAtPi0rCisgKiAgICAgICAgICAgICBeICAgICAg fCAoY2hlY2svc3luY2hyb25pemUpCisgKiAgICAgICAgICAgICB8ICAgICAgfAorICogICAgICAg ICAgICAgKy0tPC0tLSsKICAqCiAgKiBUbyBhdm9pZCBjcmVhdGluZyB0b28gbWFueSB0cmFuc2Fj dGlvbnMsIHVwIHRvIE1BWF9TRVFVRU5DRVNfU1lOQ19QRVJfQkFUQ0gKICAqIHNlcXVlbmNlcyBh cmUgc3luY2hyb25pemVkIHBlciB0cmFuc2FjdGlvbi4gVGhlIGxvY2tzIG9uIHRoZSBzZXF1ZW5j ZQpAQCAtNjAsNiArNzIsNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCiAj aW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNs dWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUg InV0aWxzL2ZtZ3JvaWRzLmgiCkBAIC03NiwyNSArODksMzggQEAKIHR5cGVkZWYgZW51bSBDb3B5 U2VxUmVzdWx0CiB7CiAJQ09QWVNFUV9TVUNDRVNTLAorCUNPUFlTRVFfQUxMT1dFRCwKIAlDT1BZ U0VRX01JU01BVENILAogCUNPUFlTRVFfSU5TVUZGSUNJRU5UX1BFUk0sCi0JQ09QWVNFUV9TS0lQ UEVECisJQ09QWVNFUV9TS0lQUEVELAorCUNPUFlTRVFfTk9fRFJJRlQsCiB9IENvcHlTZXFSZXN1 bHQ7CiAKLXN0YXRpYyBMaXN0ICpzZXFpbmZvcyA9IE5JTDsKKy8qIFNsZWVwIGludGVydmFscyBm b3Igc3luYyAqLworI2RlZmluZSBTRVFTWU5DX01JTl9TTEVFUF9NUyAyMDAwCS8qIDIgc2Vjb25k cyAqLworI2RlZmluZSBTRVFTWU5DX01BWF9TTEVFUF9NUyAzMDAwMAkvKiAzMCBzZWNvbmRzICov CisKK3N0YXRpYyBsb25nIHNsZWVwX21zID0gU0VRU1lOQ19NSU5fU0xFRVBfTVM7CisKK3N0YXRp YyBNZW1vcnlDb250ZXh0IFNlcXVlbmNlU3luY0NvbnRleHQgPSBOVUxMOwogCiAvKgotICogQXBw bHkgd29ya2VyIGRldGVybWluZXMgaWYgc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGlzIG5lZWRl ZC4KKyAqIEFwcGx5IHdvcmtlciBkZXRlcm1pbmVzIHdoZXRoZXIgYSBzZXF1ZW5jZSBzeW5jIHdv cmtlciBpcyBuZWVkZWQuCisgKgorICogQ2hlY2sgaWYgdGhlIHN1YnNjcmlwdGlvbiBpbmNsdWRl cyBzZXF1ZW5jZXMgYW5kIHN0YXJ0IGEgc2VxdWVuY2VzeW5jCisgKiB3b3JrZXIgaWYgb25lIGlz IG5vdCBhbHJlYWR5IHJ1bm5pbmcuIFRoZSBhY3RpdmUgc2VxdWVuY2VzeW5jIHdvcmtlciB3aWxs CisgKiBoYW5kbGUgYWxsIHBlbmRpbmcgc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uLiBJZiBhbnkg c2VxdWVuY2VzIHJlbWFpbgorICogdW5zeW5jaHJvbml6ZWQgYWZ0ZXIgaXQgZXhpdHMsIGEgbmV3 IHdvcmtlciBjYW4gYmUgc3RhcnRlZCBpbiB0aGUgbmV4dAorICogaXRlcmF0aW9uLgogICoKLSAq IFN0YXJ0IGEgc2VxdWVuY2VzeW5jIHdvcmtlciBpZiBvbmUgaXMgbm90IGFscmVhZHkgcnVubmlu Zy4gVGhlIGFjdGl2ZQotICogc2VxdWVuY2VzeW5jIHdvcmtlciB3aWxsIGhhbmRsZSBhbGwgcGVu ZGluZyBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24uIElmIGFueQotICogc2VxdWVuY2VzIHJlbWFp biB1bnN5bmNocm9uaXplZCBhZnRlciBpdCBleGl0cywgYSBuZXcgd29ya2VyIGNhbiBiZSBzdGFy dGVkCi0gKiBpbiB0aGUgbmV4dCBpdGVyYXRpb24uCisgKiBUaGUgcG9pbnRlciB0byB0aGUgc2Vx dWVuY2VzeW5jIHdvcmtlciBpcyBjYWNoZWQgdG8gYXZvaWQgc2Nhbm5pbmcgdGhlCisgKiB3b3Jr ZXJzIGFycmF5IGVhY2ggdGltZSB2aWEgbG9naWNhbHJlcF93b3JrZXJfZmluZCgpLgogICovCiB2 b2lkCi1Qcm9jZXNzU2VxdWVuY2VzRm9yU3luYyh2b2lkKQorTWF5YmVMYXVuY2hTZXF1ZW5jZVN5 bmNXb3JrZXIodm9pZCkKIHsKLQlMb2dpY2FsUmVwV29ya2VyICpzZXF1ZW5jZXN5bmNfd29ya2Vy OworCXN0YXRpYyBMb2dpY2FsUmVwV29ya2VyICpzZXF1ZW5jZXN5bmNfd29ya2VyID0gTlVMTDsK KwogCWludAkJCW5zeW5jd29ya2VyczsKIAlib29sCQloYXNfcGVuZGluZ19zZXF1ZW5jZXM7CiAJ Ym9vbAkJc3RhcnRlZF90eDsKQEAgLTExMiw2ICsxMzgsMTkgQEAgUHJvY2Vzc1NlcXVlbmNlc0Zv clN5bmModm9pZCkKIAogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NI QVJFRCk7CiAKKwkvKgorCSAqIFF1aWNrIGV4aXQgaWYgdGhlIHNlcXVlbmNlIHN5bmMgd29ya2Vy IGZvciB0aGUgY3VycmVudCBzdWJzY3JpcHRpb24gaXMKKwkgKiBhbHJlYWR5IGFsaXZlLgorCSAq LworCWlmIChzZXF1ZW5jZXN5bmNfd29ya2VyICYmCisJCXNlcXVlbmNlc3luY193b3JrZXItPnBy b2MgJiYKKwkJaXNTZXF1ZW5jZVN5bmNXb3JrZXIoc2VxdWVuY2VzeW5jX3dvcmtlcikgJiYKKwkJ c2VxdWVuY2VzeW5jX3dvcmtlci0+c3ViaWQgPT0gTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkK Kwl7CisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCQlyZXR1cm47CisJ fQorCiAJLyogQ2hlY2sgaWYgdGhlcmUgaXMgYSBzZXF1ZW5jZXN5bmMgd29ya2VyIGFscmVhZHkg cnVubmluZz8gKi8KIAlzZXF1ZW5jZXN5bmNfd29ya2VyID0gbG9naWNhbHJlcF93b3JrZXJfZmlu ZChXT1JLRVJUWVBFX1NFUVVFTkNFU1lOQywKIAkJCQkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLApAQCAtMTQ0LDcgKzE4Myw3IEBAIFByb2Nlc3NTZXF1ZW5jZXNGb3JTeW5jKHZv aWQpCiAgKiBmb3IgdGhlIGdpdmVuIGxpc3Qgb2Ygc2VxdWVuY2UgaW5kZXhlcy4KICAqLwogc3Rh dGljIHZvaWQKLWdldF9zZXF1ZW5jZXNfc3RyaW5nKExpc3QgKnNlcWluZGV4ZXMsIFN0cmluZ0lu Zm8gYnVmKQorZ2V0X3NlcXVlbmNlc19zdHJpbmcoTGlzdCAqc2VxaW5kZXhlcywgTGlzdCAqc2Vx aW5mb3MsIFN0cmluZ0luZm8gYnVmKQogewogCXJlc2V0U3RyaW5nSW5mbyhidWYpOwogCWZvcmVh Y2hfaW50KHNlcWlkeCwgc2VxaW5kZXhlcykKQEAgLTE3MSw3ICsyMTAsNyBAQCBnZXRfc2VxdWVu Y2VzX3N0cmluZyhMaXN0ICpzZXFpbmRleGVzLCBTdHJpbmdJbmZvIGJ1ZikKICAqLwogc3RhdGlj IHZvaWQKIHJlcG9ydF9zZXF1ZW5jZV9lcnJvcnMoTGlzdCAqbWlzbWF0Y2hlZF9zZXFzX2lkeCwg TGlzdCAqaW5zdWZmcGVybV9zZXFzX2lkeCwKLQkJCQkJICAgTGlzdCAqbWlzc2luZ19zZXFzX2lk eCkKKwkJCQkJICAgTGlzdCAqbWlzc2luZ19zZXFzX2lkeCwgTGlzdCAqc2VxaW5mb3MpCiB7CiAJ U3RyaW5nSW5mbwlzZXFzdHI7CiAKQEAgLTE4Myw3ICsyMjIsNyBAQCByZXBvcnRfc2VxdWVuY2Vf ZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1fc2Vxc19p ZHgsCiAKIAlpZiAobWlzbWF0Y2hlZF9zZXFzX2lkeCkKIAl7Ci0JCWdldF9zZXF1ZW5jZXNfc3Ry aW5nKG1pc21hdGNoZWRfc2Vxc19pZHgsIHNlcXN0cik7CisJCWdldF9zZXF1ZW5jZXNfc3RyaW5n KG1pc21hdGNoZWRfc2Vxc19pZHgsIHNlcWluZm9zLCBzZXFzdHIpOwogCQllcmVwb3J0KFdBUk5J TkcsCiAJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRF KSwKIAkJCQllcnJtc2dfcGx1cmFsKCJtaXNtYXRjaGVkIG9yIHJlbmFtZWQgc2VxdWVuY2Ugb24g c3Vic2NyaWJlciAoJXMpIiwKQEAgLTE5NCw3ICsyMzMsNyBAQCByZXBvcnRfc2VxdWVuY2VfZXJy b3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1fc2Vxc19pZHgs CiAKIAlpZiAoaW5zdWZmcGVybV9zZXFzX2lkeCkKIAl7Ci0JCWdldF9zZXF1ZW5jZXNfc3RyaW5n KGluc3VmZnBlcm1fc2Vxc19pZHgsIHNlcXN0cik7CisJCWdldF9zZXF1ZW5jZXNfc3RyaW5nKGlu c3VmZnBlcm1fc2Vxc19pZHgsIHNlcWluZm9zLCBzZXFzdHIpOwogCQllcmVwb3J0KFdBUk5JTkcs CiAJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK IAkJCQllcnJtc2dfcGx1cmFsKCJpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyBvbiBzZXF1ZW5jZSAo JXMpIiwKQEAgLTIwNSw3ICsyNDQsNyBAQCByZXBvcnRfc2VxdWVuY2VfZXJyb3JzKExpc3QgKm1p c21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmluc3VmZnBlcm1fc2Vxc19pZHgsCiAKIAlpZiAobWlz c2luZ19zZXFzX2lkeCkKIAl7Ci0JCWdldF9zZXF1ZW5jZXNfc3RyaW5nKG1pc3Npbmdfc2Vxc19p ZHgsIHNlcXN0cik7CisJCWdldF9zZXF1ZW5jZXNfc3RyaW5nKG1pc3Npbmdfc2Vxc19pZHgsIHNl cWluZm9zLCBzZXFzdHIpOwogCQllcmVwb3J0KFdBUk5JTkcsCiAJCQkJZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQllcnJtc2dfcGx1cmFsKCJt aXNzaW5nIHNlcXVlbmNlIG9uIHB1Ymxpc2hlciAoJXMpIiwKQEAgLTIyOSw3ICsyNjgsOCBAQCBy ZXBvcnRfc2VxdWVuY2VfZXJyb3JzKExpc3QgKm1pc21hdGNoZWRfc2Vxc19pZHgsIExpc3QgKmlu c3VmZnBlcm1fc2Vxc19pZHgsCiAgKi8KIHN0YXRpYyBDb3B5U2VxUmVzdWx0CiBnZXRfYW5kX3Zh bGlkYXRlX3NlcV9pbmZvKFR1cGxlVGFibGVTbG90ICpzbG90LCBSZWxhdGlvbiAqc2VxdWVuY2Vf cmVsLAotCQkJCQkJICBMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICoqc2VxaW5mbywgaW50ICpzZXFp ZHgpCisJCQkJCQkgIExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKipzZXFpbmZvLCBpbnQgKnNlcWlk eCwKKwkJCQkJCSAgTGlzdCAqc2VxaW5mb3MpCiB7CiAJYm9vbAkJaXNudWxsOwogCWludAkJCWNv bCA9IDA7CkBAIC0yNDAsNyArMjgwLDcgQEAgZ2V0X2FuZF92YWxpZGF0ZV9zZXFfaW5mbyhUdXBs ZVRhYmxlU2xvdCAqc2xvdCwgUmVsYXRpb24gKnNlcXVlbmNlX3JlbCwKIAlpbnQ2NAkJcmVtb3Rl X21pbjsKIAlpbnQ2NAkJcmVtb3RlX21heDsKIAlib29sCQlyZW1vdGVfY3ljbGU7Ci0JQ29weVNl cVJlc3VsdCByZXN1bHQgPSBDT1BZU0VRX1NVQ0NFU1M7CisJQ29weVNlcVJlc3VsdCByZXN1bHQg PSBDT1BZU0VRX0FMTE9XRUQ7CiAJSGVhcFR1cGxlCXR1cDsKIAlGb3JtX3BnX3NlcXVlbmNlIGxv Y2FsX3NlcTsKIAlMb2dpY2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvX2xvY2FsOwpAQCAtMzI1 LDMyICszNjUsODIgQEAgZ2V0X2FuZF92YWxpZGF0ZV9zZXFfaW5mbyhUdXBsZVRhYmxlU2xvdCAq c2xvdCwgUmVsYXRpb24gKnNlcXVlbmNlX3JlbCwKIH0KIAogLyoKLSAqIEFwcGx5IHJlbW90ZSBz ZXF1ZW5jZSBzdGF0ZSB0byBsb2NhbCBzZXF1ZW5jZSBhbmQgbWFyayBpdCBhcwotICogc3luY2hy b25pemVkIChSRUFEWSkuCisgKiBDaGVjayB3aGV0aGVyIHRoZSB1c2VyIGhhcyByZXF1aXJlZCBw cml2aWxlZ2VzIG9uIHRoZSBzZXF1ZW5jZSBhbmQKKyAqIHdoZXRoZXIgdGhlIHNlcXVlbmNlIGhh cyBkcmlmdGVkLgogICovCiBzdGF0aWMgQ29weVNlcVJlc3VsdAotY29weV9zZXF1ZW5jZShMb2dp Y2FsUmVwU2VxdWVuY2VJbmZvICpzZXFpbmZvLCBPaWQgc2Vxb3duZXIpCit2YWxpZGF0ZV9zZXFz eW5jX3N0YXRlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIFJlbGF0aW9uIHNlcXVl bmNlX3JlbCkKIHsKLQlVc2VyQ29udGV4dCB1Y3h0OwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CisJ T2lkCQkJc2Vxb2lkID0gc2VxaW5mby0+bG9jYWxyZWxpZDsKKworCS8qIFBlcmZvcm0gZHJpZnQg Y2hlY2sgaWYgaXQncyBub3QgdGhlIGluaXRpYWwgc3luYyAqLworCWlmIChzZXFpbmZvLT5yZWxz dGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFkpCisJeworCQlpbnQ2NAkJbG9jYWxfbGFzdF92YWx1 ZTsKKwkJYm9vbAkJbG9jYWxfaXNfY2FsbGVkOworCisJCS8qIEdldCBjdXJyZW50IGxvY2FsIHNl cXVlbmNlIHN0YXRlICovCisJCUdldFNlcXVlbmNlKHNlcXVlbmNlX3JlbCwgJmxvY2FsX2xhc3Rf dmFsdWUsICZsb2NhbF9pc19jYWxsZWQpOworCisJCS8qCisJCSAqIFNraXAgc3luY2hyb25pemF0 aW9uIGlmIHRoZSBjdXJyZW50IHVzZXIgZG9lcyBub3QgaGF2ZSBzdWZmaWNpZW50CisJCSAqIHBy aXZpbGVnZXMgdG8gcmVhZCB0aGUgc2VxdWVuY2UgZGF0YS4KKwkJICovCisJCWlmIChsb2NhbF9s YXN0X3ZhbHVlID09IDApCisJCQlyZXR1cm4gQ09QWVNFUV9JTlNVRkZJQ0lFTlRfUEVSTTsKKwor CQkvKgorCQkgKiBTa2lwIHN5bmNocm9uaXphdGlvbiBpZiB0aGUgc2VxdWVuY2UgaGFzIG5vdCBk cmlmdGVkIGZyb20gdGhlCisJCSAqIHB1Ymxpc2hlcidzIHZhbHVlLgorCQkgKi8KKwkJaWYgKGxv Y2FsX2xhc3RfdmFsdWUgPT0gc2VxaW5mby0+bGFzdF92YWx1ZSAmJgorCQkJbG9jYWxfaXNfY2Fs bGVkID09IHNlcWluZm8tPmlzX2NhbGxlZCkKKwkJCXJldHVybiBDT1BZU0VRX05PX0RSSUZUOwor CX0KKworCS8qIFZlcmlmeSB0aGF0IHRoZSBjdXJyZW50IHVzZXIgY2FuIHVwZGF0ZSB0aGUgc2Vx dWVuY2UgKi8KKwlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayhzZXFvaWQsIEdldFVzZXJJ ZCgpLCBBQ0xfVVBEQVRFKTsKKworCWlmIChhY2xyZXN1bHQgIT0gQUNMQ0hFQ0tfT0spCisJCXJl dHVybiBDT1BZU0VRX0lOU1VGRklDSUVOVF9QRVJNOworCisJcmV0dXJuIENPUFlTRVFfQUxMT1dF RDsKK30KKworLyoKKyAqIEFwcGx5IHJlbW90ZSBzZXF1ZW5jZSBzdGF0ZSB0byBsb2NhbCBzZXF1 ZW5jZS4gSWYgd2UgYXJlIGRvaW5nIHRoaXMKKyAqIGZvciBzZXF1ZW5jZXMgaW4gdGhlIElOSVQg c3RhdGUsIG1vdmUgdGhlbSB0byB0aGUgUkVBRFkgc3RhdGUgb25jZQorICogc3luY2hyb25pemVk LgorICovCitzdGF0aWMgQ29weVNlcVJlc3VsdAorY29weV9zZXF1ZW5jZShMb2dpY2FsUmVwU2Vx dWVuY2VJbmZvICpzZXFpbmZvLCBSZWxhdGlvbiBzZXF1ZW5jZV9yZWwpCit7CisJVXNlckNvbnRl eHQgdWN4dDsKIAlib29sCQlydW5fYXNfb3duZXIgPSBNeVN1YnNjcmlwdGlvbi0+cnVuYXNvd25l cjsKIAlPaWQJCQlzZXFvaWQgPSBzZXFpbmZvLT5sb2NhbHJlbGlkOworCUNvcHlTZXFSZXN1bHQg cmVzdWx0OworCVhMb2dSZWNQdHIJbG9jYWxfcGFnZV9sc247CisKKwkodm9pZCkgR2V0U3Vic2Ny aXB0aW9uUmVsU3RhdGUoTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJICAgUmVsYXRpb25H ZXRSZWxpZChzZXF1ZW5jZV9yZWwpLAorCQkJCQkJCQkgICAmbG9jYWxfcGFnZV9sc24pOwogCiAJ LyoKIAkgKiBJZiB0aGUgdXNlciBkaWQgbm90IG9wdCB0byBydW4gYXMgdGhlIG93bmVyIG9mIHRo ZSBzdWJzY3JpcHRpb24KIAkgKiAoJ3J1bl9hc19vd25lcicpLCB0aGVuIGNvcHkgdGhlIHNlcXVl bmNlIGFzIHRoZSBvd25lciBvZiB0aGUgc2VxdWVuY2UuCiAJICovCiAJaWYgKCFydW5fYXNfb3du ZXIpCi0JCVN3aXRjaFRvVW50cnVzdGVkVXNlcihzZXFvd25lciwgJnVjeHQpOworCQlTd2l0Y2hU b1VudHJ1c3RlZFVzZXIoc2VxdWVuY2VfcmVsLT5yZF9yZWwtPnJlbG93bmVyLCAmdWN4dCk7CiAK LQlhY2xyZXN1bHQgPSBwZ19jbGFzc19hY2xjaGVjayhzZXFvaWQsIEdldFVzZXJJZCgpLCBBQ0xf VVBEQVRFKTsKKwlyZXN1bHQgPSB2YWxpZGF0ZV9zZXFzeW5jX3N0YXRlKHNlcWluZm8sIHNlcXVl bmNlX3JlbCk7CiAKLQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQorCWlmIChyZXN1bHQg IT0gQ09QWVNFUV9BTExPV0VEKQogCXsKIAkJaWYgKCFydW5fYXNfb3duZXIpCiAJCQlSZXN0b3Jl VXNlckNvbnRleHQoJnVjeHQpOwogCi0JCXJldHVybiBDT1BZU0VRX0lOU1VGRklDSUVOVF9QRVJN OworCQlyZXR1cm4gcmVzdWx0OwogCX0KIAogCS8qCkBAIC0zNjgsMTkgKzQ1OCwyNyBAQCBjb3B5 X3NlcXVlbmNlKExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIE9pZCBzZXFvd25lcikK IAogCS8qCiAJICogUmVjb3JkIHRoZSByZW1vdGUgc2VxdWVuY2UncyBMU04gaW4gcGdfc3Vic2Ny aXB0aW9uX3JlbCBhbmQgbWFyayB0aGUKLQkgKiBzZXF1ZW5jZSBhcyBSRUFEWS4KKwkgKiBzZXF1 ZW5jZSBhcyBSRUFEWSBpZiB1cGRhdGluZyBhIHNlcXVlbmNlIHRoYXQgaXMgaW4gSU5JVCBzdGF0 ZS4KIAkgKi8KLQlVcGRhdGVTdWJzY3JpcHRpb25SZWxTdGF0ZShNeVN1YnNjcmlwdGlvbi0+b2lk LCBzZXFvaWQsIFNVQlJFTF9TVEFURV9SRUFEWSwKLQkJCQkJCQkgICBzZXFpbmZvLT5wYWdlX2xz biwgZmFsc2UpOworCWlmIChzZXFpbmZvLT5yZWxzdGF0ZSA9PSBTVUJSRUxfU1RBVEVfSU5JVCB8 fAorCQlzZXFpbmZvLT5wYWdlX2xzbiAhPSBsb2NhbF9wYWdlX2xzbikKKwkJVXBkYXRlU3Vic2Ny aXB0aW9uUmVsU3RhdGUoTXlTdWJzY3JpcHRpb24tPm9pZCwgc2Vxb2lkLCBTVUJSRUxfU1RBVEVf UkVBRFksCisJCQkJCQkJCSAgIHNlcWluZm8tPnBhZ2VfbHNuLCBmYWxzZSk7CiAKIAlyZXR1cm4g Q09QWVNFUV9TVUNDRVNTOwogfQogCiAvKgogICogQ29weSBleGlzdGluZyBkYXRhIG9mIHNlcXVl bmNlcyBmcm9tIHRoZSBwdWJsaXNoZXIuCisgKgorICogSWYgdGhlIHN0YXRlIG9mIHNlcXVlbmNl IGlzIFNVQlJFTF9TVEFURV9SRUFEWSwgb25seSBzeW5jaHJvbml6ZSBzZXF1ZW5jZXMKKyAqIHRo YXQgaGF2ZSBkcmlmdGVkIGZyb20gdGhlaXIgcHVibGlzaGVyIHZhbHVlcy4gT3RoZXJ3aXNlLCBz eW5jaHJvbml6ZSBhbGwKKyAqIHNlcXVlbmNlcy4KKyAqCisgKiBSZXR1cm5zIHRydWUvZmFsc2Ug aWYgYW55IHNlcXVlbmNlcyB3ZXJlIGFjdHVhbGx5IGNvcGllZC4KICAqLwotc3RhdGljIHZvaWQK LWNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKK3N0YXRpYyBib29sCitjb3B5 X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4sIExpc3QgKnNlcWluZm9zKQogewogCWlu dAkJCWN1cl9iYXRjaF9iYXNlX2luZGV4ID0gMDsKIAlpbnQJCQluX3NlcWluZm9zID0gbGlzdF9s ZW5ndGgoc2VxaW5mb3MpOwpAQCAtMzkwLDEzICs0ODgsMTAgQEAgY29weV9zZXF1ZW5jZXMoV2Fs UmVjZWl2ZXJDb25uICpjb25uKQogCVN0cmluZ0luZm8Jc2Vxc3RyID0gbWFrZVN0cmluZ0luZm8o KTsKIAlTdHJpbmdJbmZvCWNtZCA9IG1ha2VTdHJpbmdJbmZvKCk7CiAJTWVtb3J5Q29udGV4dCBv bGRjdHg7CisJYm9vbAkJc2VxdWVuY2VfY29waWVkID0gZmFsc2U7CiAKICNkZWZpbmUgTUFYX1NF UVVFTkNFU19TWU5DX1BFUl9CQVRDSCAxMDAKIAotCWVsb2coREVCVUcxLAotCQkgImxvZ2ljYWwg cmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZvciBzdWJzY3JpcHRpb24gXCIl c1wiIC0gdG90YWwgdW5zeW5jaHJvbml6ZWQ6ICVkIiwKLQkJIE15U3Vic2NyaXB0aW9uLT5uYW1l LCBuX3NlcWluZm9zKTsKLQogCXdoaWxlIChjdXJfYmF0Y2hfYmFzZV9pbmRleCA8IG5fc2VxaW5m b3MpCiAJewogCQlPaWQJCQlzZXFSb3dbUkVNT1RFX1NFUV9DT0xfQ09VTlRdID0ge0lOVDhPSUQs IElOVDhPSUQsCkBAIC00MDYsNiArNTAxLDcgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJD b25uICpjb25uKQogCQlpbnQJCQliYXRjaF9taXNtYXRjaGVkX2NvdW50ID0gMDsKIAkJaW50CQkJ YmF0Y2hfc2tpcHBlZF9jb3VudCA9IDA7CiAJCWludAkJCWJhdGNoX2luc3VmZnBlcm1fY291bnQg PSAwOworCQlpbnQJCQliYXRjaF9ub19kcmlmdCA9IDA7CiAJCWludAkJCWJhdGNoX21pc3Npbmdf Y291bnQ7CiAJCVJlbGF0aW9uCXNlcXVlbmNlX3JlbCA9IE5VTEw7CiAKQEAgLTUwMSw0NiArNTk3 LDUzIEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAkJCX0KIAogCQkJ c3luY19zdGF0dXMgPSBnZXRfYW5kX3ZhbGlkYXRlX3NlcV9pbmZvKHNsb3QsICZzZXF1ZW5jZV9y ZWwsCi0JCQkJCQkJCQkJCQkJJnNlcWluZm8sICZzZXFpZHgpOwotCQkJaWYgKHN5bmNfc3RhdHVz ID09IENPUFlTRVFfU1VDQ0VTUykKLQkJCQlzeW5jX3N0YXR1cyA9IGNvcHlfc2VxdWVuY2Uoc2Vx aW5mbywKLQkJCQkJCQkJCQkJc2VxdWVuY2VfcmVsLT5yZF9yZWwtPnJlbG93bmVyKTsKKwkJCQkJ CQkJCQkJCQkmc2VxaW5mbywgJnNlcWlkeCwgc2VxaW5mb3MpOworCisJCQkvKgorCQkJICogRm9y IHNlcXVlbmNlcyBpbiBJTklUIHN0YXRlLCBhbHdheXMgc3luYy4gT3RoZXJ3aXNlLCBmb3IKKwkJ CSAqIHNlcXVlbmNlcyBpbiBSRUFEWSBzdGF0ZSwgb25seSBzeW5jIGlmIHRoZXJlJ3MgZHJpZnQu CisJCQkgKi8KKwkJCWlmIChzeW5jX3N0YXR1cyA9PSBDT1BZU0VRX0FMTE9XRUQpCisJCQkJc3lu Y19zdGF0dXMgPSBjb3B5X3NlcXVlbmNlKHNlcWluZm8sIHNlcXVlbmNlX3JlbCk7CiAKIAkJCXN3 aXRjaCAoc3luY19zdGF0dXMpCiAJCQl7CiAJCQkJY2FzZSBDT1BZU0VRX1NVQ0NFU1M6CiAJCQkJ CWVsb2coREVCVUcxLAotCQkJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHN5bmNocm9uaXphdGlv biBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiwgc2VxdWVuY2UgXCIlcy4lc1wiIGhhcyBmaW5pc2hl ZCIsCi0JCQkJCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUsIHNlcWluZm8tPm5zcG5hbWUsCi0JCQkJ CQkgc2VxaW5mby0+c2VxbmFtZSk7CisJCQkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gc3luY2hy b25pemF0aW9uIGhhcyB1cGRhdGVkIHNlcXVlbmNlIFwiJXMuJXNcIiBpbiBzdWJzY3JpcHRpb24g XCIlc1wiIiwKKwkJCQkJCSBzZXFpbmZvLT5uc3BuYW1lLCBzZXFpbmZvLT5zZXFuYW1lLCBNeVN1 YnNjcmlwdGlvbi0+bmFtZSk7CiAJCQkJCWJhdGNoX3N1Y2NlZWRlZF9jb3VudCsrOworCQkJCQlz ZXF1ZW5jZV9jb3BpZWQgPSB0cnVlOwogCQkJCQlicmVhazsKKwogCQkJCWNhc2UgQ09QWVNFUV9N SVNNQVRDSDoKIAogCQkJCQkvKgotCQkJCQkgKiBSZW1lbWJlciBtaXNtYXRjaGVkIHNlcXVlbmNl cyBpbiBhIGxvbmctbGl2ZWQgbWVtb3J5Ci0JCQkJCSAqIGNvbnRleHQgc2luY2UgdGhlc2Ugd2ls bCBiZSB1c2VkIGFmdGVyIHRoZSB0cmFuc2FjdGlvbgotCQkJCQkgKiBpcyBjb21taXR0ZWQuCisJ CQkJCSAqIFJlbWVtYmVyIG1pc21hdGNoZWQgc2VxdWVuY2VzIGluIFNlcXVlbmNlU3luY0NvbnRl eHQKKwkJCQkJICogc2luY2UgdGhlc2Ugd2lsbCBiZSB1c2VkIGFmdGVyIHRoZSB0cmFuc2FjdGlv biBpcworCQkJCQkgKiBjb21taXR0ZWQuCiAJCQkJCSAqLwotCQkJCQlvbGRjdHggPSBNZW1vcnlD b250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJCQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKFNlcXVlbmNlU3luY0NvbnRleHQpOwogCQkJCQltaXNtYXRjaGVkX3NlcXNfaWR4 ID0gbGFwcGVuZF9pbnQobWlzbWF0Y2hlZF9zZXFzX2lkeCwKIAkJCQkJCQkJCQkJCQkgIHNlcWlk eCk7CiAJCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCQkJCQliYXRjaF9taXNt YXRjaGVkX2NvdW50Kys7CiAJCQkJCWJyZWFrOworCiAJCQkJY2FzZSBDT1BZU0VRX0lOU1VGRklD SUVOVF9QRVJNOgogCiAJCQkJCS8qCi0JCQkJCSAqIFJlbWVtYmVyIHNlcXVlbmNlcyB3aXRoIGlu c3VmZmljaWVudCBwcml2aWxlZ2VzIGluIGEKLQkJCQkJICogbG9uZy1saXZlZCBtZW1vcnkgY29u dGV4dCBzaW5jZSB0aGVzZSB3aWxsIGJlIHVzZWQKLQkJCQkJICogYWZ0ZXIgdGhlIHRyYW5zYWN0 aW9uIGlzIGNvbW1pdHRlZC4KKwkJCQkJICogUmVtZW1iZXIgc2VxdWVuY2VzIHdpdGggaW5zdWZm aWNpZW50IHByaXZpbGVnZXMgaW4KKwkJCQkJICogU2VxdWVuY2VTeW5jQ29udGV4dCBzaW5jZSB0 aGVzZSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlCisJCQkJCSAqIHRyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZC4KIAkJCQkJICovCi0JCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBs eUNvbnRleHQpOworCQkJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2VxdWVuY2VT eW5jQ29udGV4dCk7CiAJCQkJCWluc3VmZnBlcm1fc2Vxc19pZHggPSBsYXBwZW5kX2ludChpbnN1 ZmZwZXJtX3NlcXNfaWR4LAogCQkJCQkJCQkJCQkJCSAgc2VxaWR4KTsKIAkJCQkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGN0eCk7CiAJCQkJCWJhdGNoX2luc3VmZnBlcm1fY291bnQrKzsKIAkJ CQkJYnJlYWs7CisKIAkJCQljYXNlIENPUFlTRVFfU0tJUFBFRDoKIAogCQkJCQkvKgpAQCAtNTU4 LDYgKzY2MSwxNSBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiAJCQkJ CQliYXRjaF9za2lwcGVkX2NvdW50Kys7CiAJCQkJCX0KIAkJCQkJYnJlYWs7CisKKwkJCQljYXNl IENPUFlTRVFfTk9fRFJJRlQ6CisJCQkJCS8qIE5vdGhpbmcgdG8gZG8gKi8KKwkJCQkJYmF0Y2hf bm9fZHJpZnQrKzsKKwkJCQkJYnJlYWs7CisKKwkJCQlkZWZhdWx0OgorCQkJCQllbG9nKEVSUk9S LCAidW5yZWNvZ25pemVkIFNlcXVlbmNlIHJlcGxpY2F0aW9uIHJlc3VsdDogJWQiLCAoaW50KSBz eW5jX3N0YXR1cyk7CisKIAkJCX0KIAogCQkJaWYgKHNlcXVlbmNlX3JlbCkKQEAgLTU3MiwxNCAr Njg0LDE1IEBAIGNvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAkJYmF0Y2hf bWlzc2luZ19jb3VudCA9IGJhdGNoX3NpemUgLSAoYmF0Y2hfc3VjY2VlZGVkX2NvdW50ICsKIAkJ CQkJCQkJCQkJYmF0Y2hfbWlzbWF0Y2hlZF9jb3VudCArCiAJCQkJCQkJCQkJCWJhdGNoX2luc3Vm ZnBlcm1fY291bnQgKwotCQkJCQkJCQkJCQliYXRjaF9za2lwcGVkX2NvdW50KTsKKwkJCQkJCQkJ CQkJYmF0Y2hfc2tpcHBlZF9jb3VudCArCisJCQkJCQkJCQkJCWJhdGNoX25vX2RyaWZ0KTsKIAog CQllbG9nKERFQlVHMSwKLQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiBzZXF1ZW5jZSBzeW5jaHJv bml6YXRpb24gZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgLSBiYXRjaCAjJWQgPSAlZCBhdHRlbXB0 ZWQsICVkIHN1Y2NlZWRlZCwgJWQgbWlzbWF0Y2hlZCwgJWQgaW5zdWZmaWNpZW50IHBlcm1pc3Np b24sICVkIG1pc3NpbmcgZnJvbSBwdWJsaXNoZXIsICVkIHNraXBwZWQiLAorCQkJICJsb2dpY2Fs IHJlcGxpY2F0aW9uIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbiBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiAtIGJhdGNoICMlZCA9ICVkIGF0dGVtcHRlZCwgJWQgc3VjY2VlZGVkLCAlZCBtaXNtYXRj aGVkLCAlZCBpbnN1ZmZpY2llbnQgcGVybWlzc2lvbiwgJWQgbWlzc2luZyBmcm9tIHB1Ymxpc2hl ciwgJWQgc2tpcHBlZCwgJWQgbm8gZHJpZnQiLAogCQkJIE15U3Vic2NyaXB0aW9uLT5uYW1lLAog CQkJIChjdXJfYmF0Y2hfYmFzZV9pbmRleCAvIE1BWF9TRVFVRU5DRVNfU1lOQ19QRVJfQkFUQ0gp ICsgMSwKIAkJCSBiYXRjaF9zaXplLCBiYXRjaF9zdWNjZWVkZWRfY291bnQsIGJhdGNoX21pc21h dGNoZWRfY291bnQsCi0JCQkgYmF0Y2hfaW5zdWZmcGVybV9jb3VudCwgYmF0Y2hfbWlzc2luZ19j b3VudCwgYmF0Y2hfc2tpcHBlZF9jb3VudCk7CisJCQkgYmF0Y2hfaW5zdWZmcGVybV9jb3VudCwg YmF0Y2hfbWlzc2luZ19jb3VudCwgYmF0Y2hfc2tpcHBlZF9jb3VudCwgYmF0Y2hfbm9fZHJpZnQp OwogCiAJCS8qIENvbW1pdCB0aGlzIGJhdGNoLCBhbmQgcHJlcGFyZSBmb3IgbmV4dCBiYXRjaCAq LwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTYwNyw1MSArNzIwLDU1IEBAIGNv cHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAogCS8qIFJlcG9ydCBtaXNtYXRj aGVzLCBwZXJtaXNzaW9uIGlzc3Vlcywgb3IgbWlzc2luZyBzZXF1ZW5jZXMgKi8KIAlyZXBvcnRf c2VxdWVuY2VfZXJyb3JzKG1pc21hdGNoZWRfc2Vxc19pZHgsIGluc3VmZnBlcm1fc2Vxc19pZHgs Ci0JCQkJCQkgICBtaXNzaW5nX3NlcXNfaWR4KTsKKwkJCQkJCSAgIG1pc3Npbmdfc2Vxc19pZHgs IHNlcWluZm9zKTsKKworCXJldHVybiBzZXF1ZW5jZV9jb3BpZWQ7CiB9CiAKIC8qCiAgKiBJZGVu dGlmaWVzIHNlcXVlbmNlcyB0aGF0IHJlcXVpcmUgc3luY2hyb25pemF0aW9uIGFuZCBpbml0aWF0 ZXMgdGhlCiAgKiBzeW5jaHJvbml6YXRpb24gcHJvY2Vzcy4KKyAqCisgKiBSZXR1cm5zIHRydWUg aWYgc2VxdWVuY2VzIGhhdmUgYmVlbiB1cGRhdGVkLgogICovCi1zdGF0aWMgdm9pZAotTG9naWNh bFJlcFN5bmNTZXF1ZW5jZXModm9pZCkKK3N0YXRpYyBib29sCitMb2dpY2FsUmVwU3luY1NlcXVl bmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiB7Ci0JY2hhcgkgICAqZXJyOwotCWJvb2wJCW11 c3RfdXNlX3Bhc3N3b3JkOwogCVJlbGF0aW9uCXJlbDsKIAlIZWFwVHVwbGUJdHVwOwotCVNjYW5L ZXlEYXRhIHNrZXlbMl07CisJU2NhbktleURhdGEgc2tleVsxXTsKIAlTeXNTY2FuRGVzYyBzY2Fu OwogCU9pZAkJCXN1YmlkID0gTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZDsKLQlTdHJpbmdJbmZv RGF0YSBhcHBfbmFtZTsKKwlib29sCQlzZXF1ZW5jZV9jb3BpZWQgPSBmYWxzZTsKKwlMaXN0CSAg ICpzZXFpbmZvcyA9IE5JTDsKKwlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCUFzc2VydChTZXF1 ZW5jZVN5bmNDb250ZXh0KTsKIAogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKIAlyZWwg PSB0YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7 CiAKKwkvKiBTY2FuIGZvciBhbGwgc2VxdWVuY2VzIGJlbG9uZ2luZyB0byB0aGlzIHN1YnNjcmlw dGlvbiAqLwogCVNjYW5LZXlJbml0KCZza2V5WzBdLAogCQkJCUFudW1fcGdfc3Vic2NyaXB0aW9u X3JlbF9zcnN1YmlkLAogCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKIAkJCQlP YmplY3RJZEdldERhdHVtKHN1YmlkKSk7CiAKLQlTY2FuS2V5SW5pdCgmc2tleVsxXSwKLQkJCQlB bnVtX3BnX3N1YnNjcmlwdGlvbl9yZWxfc3JzdWJzdGF0ZSwKLQkJCQlCVEVxdWFsU3RyYXRlZ3lO dW1iZXIsIEZfQ0hBUkVRLAotCQkJCUNoYXJHZXREYXR1bShTVUJSRUxfU1RBVEVfSU5JVCkpOwot CiAJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihyZWwsIEludmFsaWRPaWQsIGZhbHNlLAotCQkJ CQkJCSAgTlVMTCwgMiwgc2tleSk7CisJCQkJCQkJICBOVUxMLCAxLCBza2V5KTsKKwogCXdoaWxl IChIZWFwVHVwbGVJc1ZhbGlkKHR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQogCXsKIAkJ Rm9ybV9wZ19zdWJzY3JpcHRpb25fcmVsIHN1YnJlbDsKIAkJTG9naWNhbFJlcFNlcXVlbmNlSW5m byAqc2VxOwogCQlSZWxhdGlvbglzZXF1ZW5jZV9yZWw7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4 OworCQljaGFyCQlyZWxzdGF0ZTsKIAogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCXN1 YnJlbCA9IChGb3JtX3BnX3N1YnNjcmlwdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXApOworCQlyZWxz dGF0ZSA9IHN1YnJlbC0+c3JzdWJzdGF0ZTsKIAogCQlzZXF1ZW5jZV9yZWwgPSB0cnlfdGFibGVf b3BlbihzdWJyZWwtPnNycmVsaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCkBAIC02NjYsMTggKzc4 MywxOSBAQCBMb2dpY2FsUmVwU3luY1NlcXVlbmNlcyh2b2lkKQogCQkJY29udGludWU7CiAJCX0K IAorCQlBc3NlcnQocmVsc3RhdGUgPT0gU1VCUkVMX1NUQVRFX0lOSVQgfHwgcmVsc3RhdGUgPT0g U1VCUkVMX1NUQVRFX1JFQURZKTsKKwogCQkvKgogCQkgKiBXb3JrZXIgbmVlZHMgdG8gcHJvY2Vz cyBzZXF1ZW5jZXMgYWNyb3NzIHRyYW5zYWN0aW9uIGJvdW5kYXJ5LCBzbwotCQkgKiBhbGxvY2F0 ZSB0aGVtIHVuZGVyIGxvbmctbGl2ZWQgY29udGV4dC4KKwkJICogYWxsb2NhdGUgdGhlbSB1bmRl ciBTZXF1ZW5jZVN5bmNDb250ZXh0LgogCQkgKi8KLQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3 aXRjaFRvKEFwcGx5Q29udGV4dCk7Ci0KKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRv KFNlcXVlbmNlU3luY0NvbnRleHQpOwogCQlzZXEgPSBwYWxsb2MwX29iamVjdChMb2dpY2FsUmVw U2VxdWVuY2VJbmZvKTsKIAkJc2VxLT5sb2NhbHJlbGlkID0gc3VicmVsLT5zcnJlbGlkOwogCQlz ZXEtPm5zcG5hbWUgPSBnZXRfbmFtZXNwYWNlX25hbWUoUmVsYXRpb25HZXROYW1lc3BhY2Uoc2Vx dWVuY2VfcmVsKSk7CiAJCXNlcS0+c2VxbmFtZSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlv bk5hbWUoc2VxdWVuY2VfcmVsKSk7CisJCXNlcS0+cmVsc3RhdGUgPSByZWxzdGF0ZTsKIAkJc2Vx aW5mb3MgPSBsYXBwZW5kKHNlcWluZm9zLCBzZXEpOwotCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjdHgpOwogCiAJCXRhYmxlX2Nsb3NlKHNlcXVlbmNlX3JlbCwgTm9Mb2NrKTsKQEAgLTY5 MywzNiArODExLDE2IEBAIExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKHZvaWQpCiAJICogRXhpdCBl YXJseSBpZiBubyBjYXRhbG9nIGVudHJpZXMgZm91bmQsIGxpa2VseSBkdWUgdG8gY29uY3VycmVu dCBkcm9wcy4KIAkgKi8KIAlpZiAoIXNlcWluZm9zKQotCQlyZXR1cm47Ci0KLQkvKiBJcyB0aGUg dXNlIG9mIGEgcGFzc3dvcmQgbWFuZGF0b3J5PyAqLwotCW11c3RfdXNlX3Bhc3N3b3JkID0gTXlT dWJzY3JpcHRpb24tPnBhc3N3b3JkcmVxdWlyZWQgJiYKLQkJIU15U3Vic2NyaXB0aW9uLT5vd25l cnN1cGVydXNlcjsKKwkJcmV0dXJuIGZhbHNlOwogCi0JaW5pdFN0cmluZ0luZm8oJmFwcF9uYW1l KTsKLQlhcHBlbmRTdHJpbmdJbmZvKCZhcHBfbmFtZSwgInBnXyV1X3NlcXVlbmNlX3N5bmNfIiBV SU5UNjRfRk9STUFULAotCQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwgR2V0U3lzdGVtSWRlbnRp ZmllcigpKTsKKwkvKiBQcm9jZXNzIHNlcXVlbmNlcyAqLworCXNlcXVlbmNlX2NvcGllZCA9IGNv cHlfc2VxdWVuY2VzKGNvbm4sIHNlcWluZm9zKTsKIAotCS8qCi0JICogRXN0YWJsaXNoIHRoZSBj b25uZWN0aW9uIHRvIHRoZSBwdWJsaXNoZXIgZm9yIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbi4K LQkgKi8KLQlMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID0KLQkJd2FscmN2X2Nvbm5lY3QoTXlTdWJz Y3JpcHRpb24tPmNvbm5pbmZvLCB0cnVlLCB0cnVlLAotCQkJCQkgICBtdXN0X3VzZV9wYXNzd29y ZCwKLQkJCQkJICAgYXBwX25hbWUuZGF0YSwgJmVycik7Ci0JaWYgKExvZ1JlcFdvcmtlcldhbFJj dkNvbm4gPT0gTlVMTCkKLQkJZXJlcG9ydChFUlJPUiwKLQkJCQllcnJjb2RlKEVSUkNPREVfQ09O TkVDVElPTl9GQUlMVVJFKSwKLQkJCQllcnJtc2coInNlcXVlbmNlc3luYyB3b3JrZXIgZm9yIHN1 YnNjcmlwdGlvbiBcIiVzXCIgY291bGQgbm90IGNvbm5lY3QgdG8gdGhlIHB1Ymxpc2hlcjogJXMi LAotCQkJCQkgICBNeVN1YnNjcmlwdGlvbi0+bmFtZSwgZXJyKSk7Ci0KLQlwZnJlZShhcHBfbmFt ZS5kYXRhKTsKLQotCWNvcHlfc2VxdWVuY2VzKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOworCXJl dHVybiBzZXF1ZW5jZV9jb3BpZWQ7CiB9CiAKIC8qCi0gKiBFeGVjdXRlIHRoZSBpbml0aWFsIHN5 bmMgd2l0aCBlcnJvciBoYW5kbGluZy4gRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uLAorICogRXhl Y3V0ZSB0aGUgc2VxdWVuY2Ugc3luYyB3aXRoIGVycm9yIGhhbmRsaW5nLiBEaXNhYmxlIHRoZSBz dWJzY3JpcHRpb24sCiAgKiBpZiByZXF1aXJlZC4KICAqCiAgKiBOb3RlIHRoYXQgd2UgZG9uJ3Qg aGFuZGxlIEZBVEFMIGVycm9ycyB3aGljaCBhcmUgcHJvYmFibHkgYmVjYXVzZSBvZiBzeXN0ZW0K QEAgLTczNSw4ICs4MzMsOTEgQEAgc3RhcnRfc2VxdWVuY2Vfc3luYyh2b2lkKQogCiAJUEdfVFJZ KCk7CiAJewotCQkvKiBDYWxsIGluaXRpYWwgc3luYy4gKi8KLQkJTG9naWNhbFJlcFN5bmNTZXF1 ZW5jZXMoKTsKKwkJY2hhcgkgICAqZXJyOworCQlib29sCQltdXN0X3VzZV9wYXNzd29yZDsKKwkJ U3RyaW5nSW5mb0RhdGEgYXBwX25hbWU7CisKKwkJLyogSXMgdGhlIHVzZSBvZiBhIHBhc3N3b3Jk IG1hbmRhdG9yeT8gKi8KKwkJbXVzdF91c2VfcGFzc3dvcmQgPSBNeVN1YnNjcmlwdGlvbi0+cGFz c3dvcmRyZXF1aXJlZCAmJgorCQkJIU15U3Vic2NyaXB0aW9uLT5vd25lcnN1cGVydXNlcjsKKwor CQlpbml0U3RyaW5nSW5mbygmYXBwX25hbWUpOworCQlhcHBlbmRTdHJpbmdJbmZvKCZhcHBfbmFt ZSwgInBnXyV1X3NlcXVlbmNlX3N5bmNfIiBVSU5UNjRfRk9STUFULAorCQkJCQkJIE15U3Vic2Ny aXB0aW9uLT5vaWQsIEdldFN5c3RlbUlkZW50aWZpZXIoKSk7CisKKwkJLyoKKwkJICogRXN0YWJs aXNoIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBwdWJsaXNoZXIgZm9yIHNlcXVlbmNlCisJCSAqIHN5 bmNocm9uaXphdGlvbi4KKwkJICovCisJCUxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPQorCQkJd2Fs cmN2X2Nvbm5lY3QoTXlTdWJzY3JpcHRpb24tPmNvbm5pbmZvLCB0cnVlLCB0cnVlLAorCQkJCQkJ ICAgbXVzdF91c2VfcGFzc3dvcmQsCisJCQkJCQkgICBhcHBfbmFtZS5kYXRhLCAmZXJyKTsKKwkJ aWYgKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCWVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUpLAorCQkJCQllcnJtc2coInNl cXVlbmNlc3luYyB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgY291bGQgbm90IGNvbm5l Y3QgdG8gdGhlIHB1Ymxpc2hlcjogJXMiLAorCQkJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUs IGVycikpOworCisJCXBmcmVlKGFwcF9uYW1lLmRhdGEpOworCisJCS8qCisJCSAqIEluaXQgdGhl IFNlcXVlbmNlU3luY0NvbnRleHQgd2hpY2ggd2UgY2xlYW4gdXAgYWZ0ZXIgZWFjaCBzZXF1ZW5j ZQorCQkgKiBzeW5jaHJvbml6YXRpb24uCisJCSAqLworCQlTZXF1ZW5jZVN5bmNDb250ZXh0ID0g QWxsb2NTZXRDb250ZXh0Q3JlYXRlKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCQkiU2VxdWVu Y2VTeW5jQ29udGV4dCIsCisJCQkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisK KwkJZm9yICg7OykKKwkJeworCQkJYm9vbAkJc2VxdWVuY2VfY29waWVkID0gZmFsc2U7CisJCQlN ZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkJ LyogUHJvY2VzcyBhbnkgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIHRoYXQgbWlnaHQgaGF2ZSBhY2N1 bXVsYXRlZCAqLworCQkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwkJCW1heWJlX3Jl cmVhZF9zdWJzY3JpcHRpb24oKTsKKworCQkJLyoKKwkJCSAqIFBlcmZvcm0gc2VxdWVuY2Ugc3lu Y2hyb25pemF0aW9uIHVuZGVyIFNlcXVlbmNlU3luY0NvbnRleHQgYW5kCisJCQkgKiByZXNldCBp dCBlYWNoIGN5Y2xlIHRvIGF2b2lkIG1hbnVhbCBtZW1vcnkgbWFuYWdlbWVudC4KKwkJCSAqLwor CQkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFNlcXVlbmNlU3luY0NvbnRleHQpOwor CisJCQkvKgorCQkJICogU3luY2hyb25pemUgYWxsIHNlcXVlbmNlcyAoYm90aCBSRUFEWSBhbmQg SU5JVCBzdGF0ZXMpLgorCQkJICovCisJCQlzZXF1ZW5jZV9jb3BpZWQgPSBMb2dpY2FsUmVwU3lu Y1NlcXVlbmNlcyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKKworCQkJTWVtb3J5Q29udGV4dFJl c2V0KFNlcXVlbmNlU3luY0NvbnRleHQpOworCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0 eCk7CisKKwkJCS8qCisJCQkgKiBBZGp1c3Qgc2xlZXAgaW50ZXJ2YWwgYmFzZWQgb24gd2hldGhl ciBzZXF1ZW5jZXMgd2VyZSBjb3BpZWQKKwkJCSAqIG92ZXIKKwkJCSAqLworCQkJaWYgKHNlcXVl bmNlX2NvcGllZCkKKwkJCXsKKwkJCQlzbGVlcF9tcyA9IFNFUVNZTkNfTUlOX1NMRUVQX01TOwor CQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogRG91YmxlIHRoZSBzbGVlcCB0aW1l LCBidXQgbm90IGJleW9uZCB0aGUgbWF4aW11bSBhbGxvd2FibGUKKwkJCQkgKiB2YWx1ZS4KKwkJ CQkgKi8KKwkJCQlzbGVlcF9tcyA9IE1pbihzbGVlcF9tcyAqIDIsIFNFUVNZTkNfTUFYX1NMRUVQ X01TKTsKKwkJCX0KKworCQkJLyogU2xlZXAgZm9yIHRoZSBjb25maWd1cmVkIGludGVydmFsICov CisJCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkJIFdMX0xBVENIX1NFVCB8IFdM X1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSBzbGVlcF9tcywKKwkJCQkJ CQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfU1RBVEVfQ0hBTkdFKTsKKwkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCX0KIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1dGlscy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9zeW5jdXRpbHMuYwppbmRleCBlZjYxY2EwNDM3ZC4uMjMzYWM3YWU4NzMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zeW5jdXRpbHMuYwpAQCAtMTcy LDcgKzE3Miw5IEBAIFByb2Nlc3NTeW5jaW5nUmVsYXRpb25zKFhMb2dSZWNQdHIgY3VycmVudF9s c24pCiAKIAkJY2FzZSBXT1JLRVJUWVBFX0FQUExZOgogCQkJUHJvY2Vzc1N5bmNpbmdUYWJsZXNG b3JBcHBseShjdXJyZW50X2xzbik7Ci0JCQlQcm9jZXNzU2VxdWVuY2VzRm9yU3luYygpOworCisJ CQkvKiBDaGVjayBpZiBzZXF1ZW5jZSB3b3JrZXIgbmVlZHMgdG8gYmUgc3RhcnRlZCAqLworCQkJ TWF5YmVMYXVuY2hTZXF1ZW5jZVN5bmNXb3JrZXIoKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgV09S S0VSVFlQRV9TRVFVRU5DRVNZTkM6CkBAIC0xOTEsMTMgKzE5MywxMyBAQCBQcm9jZXNzU3luY2lu Z1JlbGF0aW9ucyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogICoKICAqIFRoZSBwZ19zdWJzY3Jp cHRpb25fcmVsIGNhdGFsb2cgaXMgc2hhcmVkIGJ5IHRhYmxlcyBhbmQgc2VxdWVuY2VzLiBDaGFu Z2VzCiAgKiB0byBlaXRoZXIgc2VxdWVuY2VzIG9yIHRhYmxlcyBjYW4gYWZmZWN0IHRoZSB2YWxp ZGl0eSBvZiByZWxhdGlvbiBzdGF0ZXMsIHNvCi0gKiB3ZSBpZGVudGlmeSBub24tUkVBRFkgdGFi bGVzIGFuZCBub24tUkVBRFkgc2VxdWVuY2VzIHRvZ2V0aGVyIHRvIGVuc3VyZQorICogd2UgaWRl bnRpZnkgbm9uLVJFQURZIHRhYmxlcyBhbmQgc2VxdWVuY2VzIChpbiBhbnkgc3RhdGUpIHRvZ2V0 aGVyIHRvIGVuc3VyZQogICogY29uc2lzdGVuY3kuCiAgKgogICogaGFzX3BlbmRpbmdfc3VidGFi bGVzOiB0cnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gaGFzIG9uZSBvciBtb3JlIHRhYmxlcyB0aGF0 CiAgKiBhcmUgbm90IGluIFJFQURZIHN0YXRlLCBvdGhlcndpc2UgZmFsc2UuCiAgKiBoYXNfcGVu ZGluZ19zdWJzZXF1ZW5jZXM6IHRydWUgaWYgdGhlIHN1YnNjcmlwdGlvbiBoYXMgb25lIG9yIG1v cmUgc2VxdWVuY2VzCi0gKiB0aGF0IGFyZSBub3QgaW4gUkVBRFkgc3RhdGUsIG90aGVyd2lzZSBm YWxzZS4KKyAqIChpbiBhbnkgc3RhdGUpLCBvdGhlcndpc2UgZmFsc2UuCiAgKi8KIHZvaWQKIEZl dGNoUmVsYXRpb25TdGF0ZXMoYm9vbCAqaGFzX3BlbmRpbmdfc3VidGFibGVzLApAQCAtMjA1LDIz ICsyMDcsMjIgQEAgRmV0Y2hSZWxhdGlvblN0YXRlcyhib29sICpoYXNfcGVuZGluZ19zdWJ0YWJs ZXMsCiAJCQkJCWJvb2wgKnN0YXJ0ZWRfdHgpCiB7CiAJLyoKLQkgKiBoYXNfc3VidGFibGVzIGFu ZCBoYXNfc3Vic2VxdWVuY2VzX25vbl9yZWFkeSBhcmUgZGVjbGFyZWQgYXMgc3RhdGljLAotCSAq IHNpbmNlIHRoZSBzYW1lIHZhbHVlIGNhbiBiZSB1c2VkIHVudGlsIHRoZSBzeXN0ZW0gdGFibGUg aXMgaW52YWxpZGF0ZWQuCisJICogaGFzX3N1YnRhYmxlcyBhbmQgaGFzX3N1YnNlcXVlbmNlcyBh cmUgZGVjbGFyZWQgYXMgc3RhdGljLCBzaW5jZSB0aGUKKwkgKiBzYW1lIHZhbHVlIGNhbiBiZSB1 c2VkIHVudGlsIHRoZSBzeXN0ZW0gdGFibGUgaXMgaW52YWxpZGF0ZWQuCiAJICovCiAJc3RhdGlj IGJvb2wgaGFzX3N1YnRhYmxlcyA9IGZhbHNlOwotCXN0YXRpYyBib29sIGhhc19zdWJzZXF1ZW5j ZXNfbm9uX3JlYWR5ID0gZmFsc2U7CisJc3RhdGljIGJvb2wgaGFzX3N1YnNlcXVlbmNlcyA9IGZh bHNlOwogCiAJKnN0YXJ0ZWRfdHggPSBmYWxzZTsKLQogCWlmIChyZWxhdGlvbl9zdGF0ZXNfdmFs aWRpdHkgIT0gU1lOQ19SRUxBVElPTlNfU1RBVEVfVkFMSUQpCiAJewogCQlNZW1vcnlDb250ZXh0 IG9sZGN0eDsKIAkJTGlzdAkgICAqcnN0YXRlczsKKwkJTGlzdAkgICAqc2VxX3N0YXRlczsKIAkJ U3Vic2NyaXB0aW9uUmVsU3RhdGUgKnJzdGF0ZTsKIAogCQlyZWxhdGlvbl9zdGF0ZXNfdmFsaWRp dHkgPSBTWU5DX1JFTEFUSU9OU19TVEFURV9SRUJVSUxEX1NUQVJURUQ7Ci0JCWhhc19zdWJzZXF1 ZW5jZXNfbm9uX3JlYWR5ID0gZmFsc2U7Ci0KKwkJaGFzX3N1YnNlcXVlbmNlcyA9IGZhbHNlOwog CQkvKiBDbGVhbiB0aGUgb2xkIGxpc3RzLiAqLwogCQlsaXN0X2ZyZWVfZGVlcCh0YWJsZV9zdGF0 ZXNfbm90X3JlYWR5KTsKIAkJdGFibGVfc3RhdGVzX25vdF9yZWFkeSA9IE5JTDsKQEAgLTIzMSwy NyArMjMyLDI3IEBAIEZldGNoUmVsYXRpb25TdGF0ZXMoYm9vbCAqaGFzX3BlbmRpbmdfc3VidGFi bGVzLAogCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAkJCSpzdGFydGVkX3R4ID0gdHJ1 ZTsKIAkJfQotCi0JCS8qIEZldGNoIHRhYmxlcyBhbmQgc2VxdWVuY2VzIHRoYXQgYXJlIGluIG5v bi1SRUFEWSBzdGF0ZS4gKi8KLQkJcnN0YXRlcyA9IEdldFN1YnNjcmlwdGlvblJlbGF0aW9ucyhN eVN1YnNjcmlwdGlvbi0+b2lkLCB0cnVlLCB0cnVlLAorCQkvKiBGZXRjaCB0YWJsZXMgdGhhdCBh cmUgaW4gbm9uLVJFQURZIHN0YXRlLiAqLworCQlyc3RhdGVzID0gR2V0U3Vic2NyaXB0aW9uUmVs YXRpb25zKE15U3Vic2NyaXB0aW9uLT5vaWQsIHRydWUsIGZhbHNlLAogCQkJCQkJCQkJCSAgIHRy dWUpOwotCisJCS8qIEZldGNoIGFsbCBzZXF1ZW5jZXMgKHJlZ2FyZGxlc3Mgb2Ygc3RhdGUpLiAq LworCQlzZXFfc3RhdGVzID0gR2V0U3Vic2NyaXB0aW9uUmVsYXRpb25zKE15U3Vic2NyaXB0aW9u LT5vaWQsIGZhbHNlLCB0cnVlLAorCQkJCQkJCQkJCQkgIGZhbHNlKTsKIAkJLyogQWxsb2NhdGUg dGhlIHRyYWNraW5nIGluZm8gaW4gYSBwZXJtYW5lbnQgbWVtb3J5IGNvbnRleHQuICovCiAJCW9s ZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNvbnRleHQpOwogCQlmb3Jl YWNoX3B0cihTdWJzY3JpcHRpb25SZWxTdGF0ZSwgc3VicmVsLCByc3RhdGVzKQogCQl7Ci0JCQlp ZiAoZ2V0X3JlbF9yZWxraW5kKHN1YnJlbC0+cmVsaWQpID09IFJFTEtJTkRfU0VRVUVOQ0UpCi0J CQkJaGFzX3N1YnNlcXVlbmNlc19ub25fcmVhZHkgPSB0cnVlOwotCQkJZWxzZQotCQkJewotCQkJ CXJzdGF0ZSA9IHBhbGxvY19vYmplY3QoU3Vic2NyaXB0aW9uUmVsU3RhdGUpOwotCQkJCW1lbWNw eShyc3RhdGUsIHN1YnJlbCwgc2l6ZW9mKFN1YnNjcmlwdGlvblJlbFN0YXRlKSk7Ci0JCQkJdGFi bGVfc3RhdGVzX25vdF9yZWFkeSA9IGxhcHBlbmQodGFibGVfc3RhdGVzX25vdF9yZWFkeSwKLQkJ CQkJCQkJCQkJCSByc3RhdGUpOwotCQkJfQorCQkJcnN0YXRlID0gcGFsbG9jX29iamVjdChTdWJz Y3JpcHRpb25SZWxTdGF0ZSk7CisJCQltZW1jcHkocnN0YXRlLCBzdWJyZWwsIHNpemVvZihTdWJz Y3JpcHRpb25SZWxTdGF0ZSkpOworCQkJdGFibGVfc3RhdGVzX25vdF9yZWFkeSA9IGxhcHBlbmQo dGFibGVfc3RhdGVzX25vdF9yZWFkeSwKKwkJCQkJCQkJCQkJIHJzdGF0ZSk7CiAJCX0KKwkJLyog Q2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZXF1ZW5jZXMuICovCisJCWhhc19zdWJzZXF1ZW5jZXMg PSAoc2VxX3N0YXRlcyAhPSBOSUwpOwogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsK IAorCQlsaXN0X2ZyZWVfZGVlcChzZXFfc3RhdGVzKTsKKwogCQkvKgogCQkgKiBEb2VzIHRoZSBz dWJzY3JpcHRpb24gaGF2ZSB0YWJsZXM/CiAJCSAqCkBAIC0yNzcsNSArMjc4LDUgQEAgRmV0Y2hS ZWxhdGlvblN0YXRlcyhib29sICpoYXNfcGVuZGluZ19zdWJ0YWJsZXMsCiAJCSpoYXNfcGVuZGlu Z19zdWJ0YWJsZXMgPSBoYXNfc3VidGFibGVzOwogCiAJaWYgKGhhc19wZW5kaW5nX3N1YnNlcXVl bmNlcykKLQkJKmhhc19wZW5kaW5nX3N1YnNlcXVlbmNlcyA9IGhhc19zdWJzZXF1ZW5jZXNfbm9u X3JlYWR5OworCQkqaGFzX3BlbmRpbmdfc3Vic2VxdWVuY2VzID0gaGFzX3N1YnNlcXVlbmNlczsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGY5YzRiNDg0 NzU0Li5mOTFjOGY5ZWNkZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtl ci5jCkBAIC01MDk5LDYgKzUwOTksOSBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQp CiAJICogd29ya2VyIHdvbid0IHJlc3RhcnQgaWYgdGhlIHN0cmVhbWluZyBvcHRpb24ncyB2YWx1 ZSBpcyBjaGFuZ2VkIGZyb20KIAkgKiAncGFyYWxsZWwnIHRvIGFueSBvdGhlciB2YWx1ZSBvciB0 aGUgc2VydmVyIGRlY2lkZXMgbm90IHRvIHN0cmVhbSB0aGUKIAkgKiBpbi1wcm9ncmVzcyB0cmFu c2FjdGlvbi4KKwkgKgorCSAqIE5vdGU6IHNvbWUgcGFyYW1ldGVycyBtYXkgbm90IGJlIHJlbGV2 YW50IHRvIHRoZSBzZXF1ZW5jZSBzeW5jIHdvcmtlciwKKwkgKiBidXQgZXhpdCBhbnl3YXkuCiAJ ICovCiAJaWYgKHN0cmNtcChuZXdzdWItPmNvbm5pbmZvLCBNeVN1YnNjcmlwdGlvbi0+Y29ubmlu Zm8pICE9IDAgfHwKIAkJc3RyY21wKG5ld3N1Yi0+bmFtZSwgTXlTdWJzY3JpcHRpb24tPm5hbWUp ICE9IDAgfHwKQEAgLTUxMTQsNiArNTExNywxMCBAQCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9u KHZvaWQpCiAJCQllcmVwb3J0KExPRywKIAkJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9w IGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKIAkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+ bmFtZSkpKTsKKwkJZWxzZSBpZiAoYW1fc2VxdWVuY2VzeW5jX3dvcmtlcigpKQorCQkJZXJlcG9y dChMT0csCisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hy b25pemF0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVz ZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkp OwogCQllbHNlCiAJCQllcmVwb3J0KExPRywKIAkJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IGJlY2F1c2Ug b2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKQEAgLTUxMzIsNiArNTEzOSwxMCBAQCBtYXliZV9yZXJl YWRfc3Vic2NyaXB0aW9uKHZvaWQpCiAJCQllcmVwb3J0KExPRywKIAkJCQkJZXJybXNnKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIG93bmVyJ3Mgc3VwZXJ1c2Vy IHByaXZpbGVnZXMgaGF2ZSBiZWVuIHJldm9rZWQiLAogCQkJCQkJICAgTXlTdWJzY3JpcHRpb24t Pm5hbWUpKTsKKwkJZWxzZSBpZiAoYW1fc2VxdWVuY2VzeW5jX3dvcmtlcigpKQorCQkJZXJlcG9y dChMT0csCisJCQkJCWVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBzZXF1ZW5jZSBzeW5jaHJv bml6YXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNl IHRoZSBzdWJzY3JpcHRpb24gb3duZXIncyBzdXBlcnVzZXIgcHJpdmlsZWdlcyBoYXZlIGJlZW4g cmV2b2tlZCIsCisJCQkJCQkgICBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpOwogCQllbHNlCiAJCQll cmVwb3J0KExPRywKIAkJCQkJZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Ig c3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9u IG93bmVyJ3Mgc3VwZXJ1c2VyIHByaXZpbGVnZXMgaGF2ZSBiZWVuIHJldm9rZWQiLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmggYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaAppbmRleCA1MDI2NDBkMzAxOC4uODY1 NzRiNjkxNjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u X3JlbC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oCkBA IC05Niw2ICs5Niw3IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8KIAlj aGFyCSAgICpzZXFuYW1lOwogCWNoYXIJICAgKm5zcG5hbWU7CiAJT2lkCQkJbG9jYWxyZWxpZDsK KwljaGFyCQlyZWxzdGF0ZTsKIAogCS8qIFNlcXVlbmNlIGluZm9ybWF0aW9uIHJldHJpZXZlZCBm cm9tIHRoZSBwdWJsaXNoZXIgbm9kZSAqLwogCVhMb2dSZWNQdHIJcGFnZV9sc247CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5jZS5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvc2VxdWVuY2UuaAppbmRleCAyYzNjNGEzZjA3NC4uZjAwZWVhOWZiZDEgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvc2VxdWVuY2UuaApAQCAtNDcsNiArNDcsNyBAQCBleHRlcm4gT2JqZWN0QWRkcmVzcyBBbHRl clNlcXVlbmNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJTZXFTdG10ICpzdG10KTsKIGV4dGVy biB2b2lkIFNlcXVlbmNlQ2hhbmdlUGVyc2lzdGVuY2UoT2lkIHJlbGlkLCBjaGFyIG5ld3JlbHBl cnNpc3RlbmNlKTsKIGV4dGVybiB2b2lkIERlbGV0ZVNlcXVlbmNlVHVwbGUoT2lkIHJlbGlkKTsK IGV4dGVybiB2b2lkIFJlc2V0U2VxdWVuY2UoT2lkIHNlcV9yZWxpZCk7CitleHRlcm4gdm9pZCBH ZXRTZXF1ZW5jZShSZWxhdGlvbiBzZXFyZWwsIGludDY0ICpsYXN0X3ZhbHVlLCBib29sICppc19j YWxsZWQpOwogZXh0ZXJuIHZvaWQgU2V0U2VxdWVuY2UoT2lkIHJlbGlkLCBpbnQ2NCBuZXh0LCBi b29sIGlzY2FsbGVkKTsKIGV4dGVybiB2b2lkIFJlc2V0U2VxdWVuY2VDYWNoZXModm9pZCk7CiAK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggNGVjYmRjZmFk YWMuLmE0MWNiMDQ1ZjE5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaApAQCAtMjg2LDcgKzI4Niw3IEBAIGV4dGVybiB2b2lkIFVwZGF0ZVR3b1BoYXNlU3RhdGUo T2lkIHN1Ym9pZCwgY2hhciBuZXdfc3RhdGUpOwogCiBleHRlcm4gdm9pZCBQcm9jZXNzU3luY2lu Z1RhYmxlc0ZvclN5bmMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7CiBleHRlcm4gdm9pZCBQcm9j ZXNzU3luY2luZ1RhYmxlc0ZvckFwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwotZXh0ZXJu IHZvaWQgUHJvY2Vzc1NlcXVlbmNlc0ZvclN5bmModm9pZCk7CitleHRlcm4gdm9pZCBNYXliZUxh dW5jaFNlcXVlbmNlU3luY1dvcmtlcih2b2lkKTsKIAogcGdfbm9yZXR1cm4gZXh0ZXJuIHZvaWQg RmluaXNoU3luY1dvcmtlcih2b2lkKTsKIGV4dGVybiB2b2lkIEludmFsaWRhdGVTeW5jaW5nUmVs U3RhdGVzKERhdHVtIGFyZywgU3lzQ2FjaGVJZGVudGlmaWVyIGNhY2hlaWQsCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfc3RhdHMucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjZfc3RhdHMucGwKaW5kZXggNWQ0NTcwNjBhMDIuLjJmZTIwOWY0NjFmIDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfc3RhdHMucGwKKysrIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDI2X3N0YXRzLnBsCkBAIC0xNiw2ICsxNiw4IEBAICRub2RlX3B1 Ymxpc2hlci0+c3RhcnQ7CiAjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUuCiBteSAkbm9kZV9zdWJz Y3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7CiAk bm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJIm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSAxMCIp OwogJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz Nl9zZXF1ZW5jZXMucGwKaW5kZXggNDcxNzgwYTM1ODUuLjFkODE1MThmZTIyIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwKQEAgLTc1LDggKzc1LDcgQEAgaXMoJHJl c3VsdCwgJzEwMHx0JywKIAogIyMjIyMjIyMjIwogIyMgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBS RUZSRVNIIFBVQkxJQ0FUSU9OIHNob3VsZCBjYXVzZSBzeW5jIG9mIG5ldwotIyBzZXF1ZW5jZXMg b2YgdGhlIHB1Ymxpc2hlciwgYnV0IGNoYW5nZXMgdG8gZXhpc3Rpbmcgc2VxdWVuY2VzIHNob3Vs ZAotIyBub3QgYmUgc3luY2VkLgorIyBzZXF1ZW5jZXMgb2YgdGhlIHB1Ymxpc2hlci4KICMjIyMj IyMjIyMKIAogIyBDcmVhdGUgYSBuZXcgc2VxdWVuY2UgJ3JlZ3Jlc3NfczInLCBhbmQgdXBkYXRl IGV4aXN0aW5nIHNlcXVlbmNlICdyZWdyZXNzX3MxJwpAQCAtODQsOSArODMsNiBAQCAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKIAlDUkVBVEUgU0VRVUVOQ0Ug cmVncmVzc19zMjsKIAlJTlNFUlQgSU5UTyByZWdyZXNzX3NlcV90ZXN0IFNFTEVDVCBuZXh0dmFs KCdyZWdyZXNzX3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOwotCi0JLS0gRXhpc3Rp bmcgc2VxdWVuY2UKLQlJTlNFUlQgSU5UTyByZWdyZXNzX3NlcV90ZXN0IFNFTEVDVCBuZXh0dmFs KCdyZWdyZXNzX3MxJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOwogKSk7CiAKICMgRG8g QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OCkBAIC05NywxOSArOTMs NiBAQCAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogJG5vZGVfc3Vic2Ny aWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQogICBvciBk aWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXpl IGRhdGEiOwogCi0kcmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgcXEoCi0JU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHJlZ3Jlc3NfczE7 Ci0pKTsKLWlzKCRyZXN1bHQsICcyMDB8dCcsICdDaGVjayBzZXF1ZW5jZSB2YWx1ZSBpbiB0aGUg cHVibGlzaGVyJyk7Ci0KLSMgQ2hlY2sgLSBleGlzdGluZyBzZXF1ZW5jZSAoJ3JlZ3Jlc3NfczEn KSBpcyBub3Qgc3luY2VkCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAot CSdwb3N0Z3JlcycsIHFxKAotCVNFTEVDVCBsYXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSByZWdy ZXNzX3MxOwotKSk7Ci1pcygkcmVzdWx0LCAnMTAwfHQnLCAnUkVGUkVTSCBQVUJMSUNBVElPTiB3 aWxsIG5vdCBzeW5jIGV4aXN0aW5nIHNlcXVlbmNlJyk7Ci0KICMgQ2hlY2sgLSBuZXdseSBwdWJs aXNoZWQgc2VxdWVuY2UgKCdyZWdyZXNzX3MyJykgaXMgc3luY2VkCiAkcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKApAQCAtMTE5LDE2ICsxMDIs MTMgQEAgaXMoJHJlc3VsdCwgJzEwMHx0JywKIAknUkVGUkVTSCBQVUJMSUNBVElPTiB3aWxsIHN5 bmMgbmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlJyk7CiAKICMjIyMjIyMjIyMKLSMgVGVzdDogUkVG UkVTSCBTRVFVRU5DRVMgYW5kIFJFRlJFU0ggUFVCTElDQVRJT04gKGNvcHlfZGF0YSA9IGZhbHNl KQotIwotIyAxLiBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggU0VRVUVOQ0VTIHNob3Vs ZCByZS1zeW5jaHJvbml6ZSBhbGwKLSMgICAgZXhpc3Rpbmcgc2VxdWVuY2VzLCBidXQgbm90IHN5 bmNocm9uaXplIG5ld2x5IGFkZGVkIG9uZXMuCi0jIDIuIEFMVEVSIFNVQlNDUklQVElPTiAuLi4g UkVGUkVTSCBQVUJMSUNBVElPTiB3aXRoIChjb3B5X2RhdGEgPSBmYWxzZSkgc2hvdWxkCi0jICAg IGFsc28gbm90IHVwZGF0ZSBzZXF1ZW5jZSB2YWx1ZXMgZm9yIG5ld2x5IGFkZGVkIHNlcXVlbmNl cy4KKyMgVGVzdDoKKyMgMS4gQXV0b21hdGljIHVwZGF0ZSBvZiBleGlzdGluZyBzZXF1ZW5jZSB2 YWx1ZXMKKyMgMi4gTmV3bHkgYWRkZWQgc2VxdWVuY2VzIGFyZSBub3QgYXV0b21hdGljYWxseSB1 cGRhdGVkLgogIyMjIyMjIyMjIwogCi0jIENyZWF0ZSBhIG5ldyBzZXF1ZW5jZSAncmVncmVzc19z MycsIGFuZCB1cGRhdGUgdGhlIGV4aXN0aW5nIHNlcXVlbmNlCi0jICdyZWdyZXNzX3MyJy4KKyMg Q3JlYXRlIGEgbmV3IHNlcXVlbmNlICdyZWdyZXNzX3MzJywgYW5kIHVwZGF0ZSB0aGUgZXhpc3Rp bmcgc2VxdWVuY2VzCisjICdyZWdyZXNzX3MyJyBhbmQgJ3JlZ3Jlc3NfczEnLgogJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXEoCiAJQ1JFQVRFIFNFUVVFTkNFIHJl Z3Jlc3NfczM7CkBAIC0xMzYsNTMgKzExNiwyOCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKIAogCS0tIEV4aXN0aW5nIHNlcXVlbmNlCiAJSU5TRVJUIElOVE8gcmVncmVzc19zZXFfdGVz dCBTRUxFQ1QgbmV4dHZhbCgncmVncmVzc19zMicpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTAw KTsKKwlJTlNFUlQgSU5UTyByZWdyZXNzX3NlcV90ZXN0IFNFTEVDVCBuZXh0dmFsKCdyZWdyZXNz X3MxJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOwogKSk7CiAKLSMgMS4gRG8gQUxURVIg U1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFNFUVVFTkNFUwotJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc19zZXFfc3ViIFJFRlJFU0ggU0VRVUVOQ0VTOwotKSk7Ci0kbm9kZV9zdWJzY3JpYmVy LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCi0gIG9yIGRpZSAi VGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25pemUgZGF0 YSI7Ci0KICMgQ2hlY2sgLSBleGlzdGluZyBzZXF1ZW5jZXMgKCdyZWdyZXNzX3MxJyBhbmQgJ3Jl Z3Jlc3NfczInKSBhcmUgc3luY2VkCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsIHFxKAotCVNFTEVDVCBsYXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJP TSByZWdyZXNzX3MxOwotKSk7Ci1pcygkcmVzdWx0LCAnMjAwfHQnLCAnUkVGUkVTSCBTRVFVRU5D RVMgd2lsbCBzeW5jIGV4aXN0aW5nIHNlcXVlbmNlcycpOwotJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcSgKLQlTRUxFQ1QgbGFzdF92YWx1ZSwg aXNfY2FsbGVkIEZST00gcmVncmVzc19zMjsKLSkpOwotaXMoJHJlc3VsdCwgJzIwMHx0JywgJ1JF RlJFU0ggU0VRVUVOQ0VTIHdpbGwgc3luYyBleGlzdGluZyBzZXF1ZW5jZXMnKTsKIAotIyBDaGVj ayAtIG5ld2x5IHB1Ymxpc2hlZCBzZXF1ZW5jZSAoJ3JlZ3Jlc3NfczMnKSBpcyBub3Qgc3luY2Vk Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFx KAotCVNFTEVDVCBsYXN0X3ZhbHVlLCBpc19jYWxsZWQgRlJPTSByZWdyZXNzX3MzOwotKSk7Ci1p cygkcmVzdWx0LCAnMXxmJywKLQknUkVGUkVTSCBTRVFVRU5DRVMgd2lsbCBub3Qgc3luYyBuZXds eSBwdWJsaXNoZWQgc2VxdWVuY2UnKTsKKyMgUG9sbCB1bnRpbCByZWdyZXNzX3MxIHJlZmxlY3Rz IHRoZSB1cGRhdGVkIHNlcXVlbmNlIHZhbHVlCiskbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5 X3VudGlsKCdwb3N0Z3JlcycsCisgICAgcXEoU0VMRUNUIGxhc3RfdmFsdWUgPSAyMDAgQU5EIGlz X2NhbGxlZCA9ICd0JyBGUk9NIHJlZ3Jlc3NfczE7KSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hp bGUgd2FpdGluZyBmb3IgcmVncmVzc19zMSBzZXF1ZW5jZSB0byBzeW5jIjsKIAotIyAyLiBEbyBB TFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gd2l0aCBjb3B5X2RhdGEg YXMgZmFsc2UKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgcXEoCi0JQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nfc2VxX3N1YiBSRUZSRVNIIFBV QkxJQ0FUSU9OIFdJVEggKGNvcHlfZGF0YSA9IGZhbHNlKTsKLSkpOwotJG5vZGVfc3Vic2NyaWJl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkc3luY2VkX3F1ZXJ5KQotICBvciBkaWUg IlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRvIHN5bmNocm9uaXplIGRh dGEiOworIyBQb2xsIHVudGlsIHJlZ3Jlc3NfczIgcmVmbGVjdHMgdGhlIHVwZGF0ZWQgc2VxdWVu Y2UgdmFsdWUKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywK KyAgICBxcShTRUxFQ1QgbGFzdF92YWx1ZSA9IDIwMCBBTkQgaXNfY2FsbGVkID0gJ3QnIEZST00g cmVncmVzc19zMjspKQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciByZWdy ZXNzX3MyIHNlcXVlbmNlIHRvIHN5bmMiOwogCi0jIENoZWNrIC0gbmV3bHkgcHVibGlzaGVkIHNl cXVlbmNlICgncmVncmVzc19zMycpIGlzIG5vdCBzeW5jZWQgd2l0aCBjb3B5X2RhdGEKLSMgYXMg ZmFsc2UuCisjIENoZWNrIC0gbmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlICgncmVncmVzc19zMycp IGlzIG5vdCBzeW5jZWQKICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJ J3Bvc3RncmVzJywgcXEoCiAJU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHJlZ3Jl c3NfczM7CiApKTsKIGlzKCRyZXN1bHQsICcxfGYnLAotCSdSRUZSRVNIIFBVQkxJQ0FUSU9OIHdp bGwgbm90IHN5bmMgbmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlIHdpdGggY29weV9kYXRhIGFzIGZh bHNlJwotKTsKKwknTmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlcyBhcmUgbm90IHN5bmNlZCBhdXRv bWF0aWNhbGx5Jyk7CiAKICMjIyMjIyMjIyMKICMgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZS RVNIIFBVQkxJQ0FUSU9OIHNob3VsZCByZXBvcnQgYW4gZXJyb3Igd2hlbjoKLS0gCjIuNTEuMS53 aW5kb3dzLjEKCg== --_003_TY4PR01MB1690739DE978BCBD12358478E947DATY4PR01MB16907jp_--