From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 537B7C433EF for ; Tue, 28 Jun 2022 20:30:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D81338E0002; Tue, 28 Jun 2022 16:30:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D32448E0001; Tue, 28 Jun 2022 16:30:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BAB268E0002; Tue, 28 Jun 2022 16:30:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id A6BF38E0001 for ; Tue, 28 Jun 2022 16:30:52 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 733B136B2E for ; Tue, 28 Jun 2022 20:30:52 +0000 (UTC) X-FDA: 79628788344.10.C42B3A4 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam07on2078.outbound.protection.outlook.com [40.107.212.78]) by imf06.hostedemail.com (Postfix) with ESMTP id C2AA0180039 for ; Tue, 28 Jun 2022 20:30:51 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WxsvUVblPRvH4P71rjE0iyu0UO2FD43cOZ2rQrW4UhOwe7Oen+wkCkqY2N+1Q05FG4XX3QaNWYG0n0zj6Kccm8c1i7zcAFSwug43Kk7IFnlsBxU/vM8IU4vxwXV0mHw8gWEP64m4oBMBzYqtDQzbIy+ozvrq6MUPBLEPEjgy5IgYwhVsBEN3OnNppah5VT6S3ggFJ5KZNPgkqRGY6pq7AzJx29zvn8JQMlFq7y0xNnl+SIWp7YKLErl5W/bSGj27sxfWLxOTTFMJ/7Y/np3CxqdUzcKiTv9IG/VMR81sMiMT5VC0/8Z0vj+GxrUHAeUd3LmZDgQ3W/0nvyaamobFtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=neeKWoZVl0bTDHwz0TR0+HTGIzrGWchPz9JLy/CCXZI=; b=CQtkDwwnZ5i2441T1ez41JPCMBAO6Jz2Kl/P6pBcw7GotYdZQDbtHmy9B7iaMPXbTbqavbMXnjOjPSgfEs1FvWb0U2PxANp7Ht9gYARjB9i1ihA1Wgr6YaFTR3bU0M20SSXrTZe5+pnvcgMWpTq349tPvgLuSEcminEa2qrpzQshrTOYRRs3bjEaXtCE+T8RMgk54FgFCpcBl+OIhAWQ27TR6d6y3g7rbJGtatGj3NTB8lG7wc8GjQI1JSwsO/QDvX1jTGWV0iwpWO396GK53LBtdaXkbbsuXaRP969pr+tzjBQ9X6sYKUB/Sm/xNlOnO+FH6uBD3b47Qcfhyltjww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=neeKWoZVl0bTDHwz0TR0+HTGIzrGWchPz9JLy/CCXZI=; b=VS40RaAN6d7FtLUZnBqrkoP6jbZnb+LaGn6Uleul7enUiMD+rDz5MqDNfFDuF6Dy49P+XvZ2Glsw1qrVvRRc4N4GDGHPpNG88ecaZuB+h7svFW3GqwbcgaRsyD1sKR3A6wGF5KNNqGANbk4u6VD4ftuKQZOjmaibmmy6IJh1Kts= Received: from BY3PR05MB8531.namprd05.prod.outlook.com (2603:10b6:a03:3ce::6) by DM6PR05MB6860.namprd05.prod.outlook.com (2603:10b6:5:202::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.11; Tue, 28 Jun 2022 20:30:46 +0000 Received: from BY3PR05MB8531.namprd05.prod.outlook.com ([fe80::a4f8:718a:b2a0:977f]) by BY3PR05MB8531.namprd05.prod.outlook.com ([fe80::a4f8:718a:b2a0:977f%5]) with mapi id 15.20.5395.012; Tue, 28 Jun 2022 20:30:46 +0000 From: Nadav Amit To: Peter Xu CC: Linux MM , Mike Kravetz , Hugh Dickins , Andrew Morton , Axel Rasmussen , David Hildenbrand , Mike Rapoport , Dave Hansen Subject: Re: [PATCH v1 2/5] userfaultfd: introduce access-likely mode for common operations Thread-Topic: [PATCH v1 2/5] userfaultfd: introduce access-likely mode for common operations Thread-Index: AQHYhqiRUk3vhOHs90CD+bXeUTpwQa1do3aAgAAC7YCAAAQpgIAAA9gAgAAh8ACAAApnAIABQviAgAAFQACAAKAMAIADfsaAgACupwCAAUkNgIAAFRcA Date: Tue, 28 Jun 2022 20:30:46 +0000 Message-ID: <9B0B584B-DE1B-48E3-B448-9D6C02DBDD20@vmware.com> References: <18BCC23E-B344-41A8-926D-A49D768485AF@vmware.com> <6EF7D3B4-CF17-407B-A50F-B14D595E99A5@vmware.com> <07B65135-CA6D-4839-BAC0-6D63A94F50C2@vmware.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3696.100.31) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: dfc316a5-2135-4a18-0e64-08da594514cc x-ms-traffictypediagnostic: DM6PR05MB6860:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: d0nVlScaMPm3/umpdsrmJpAUmELRyGnR+9Vqg3dw6TIYR3CJFXuX78Q010qqEjegvODyldHDcG9in3DjmNZOKisrjEq1OGJ/oUgpw3FwLe5DRLFd4NEjrVoVrX3kpum3QpijR3UJe99tg6XOzY/dvepH6BuvoZM8wAHW6assi9thgNd3DfVyIx/k5TiPq6+nU1oNKZ1QUFpexErHXgo5uoMsPch7wauyjCcQ8q7RpEIwpvCMvjiKnvB6418pgcr3rXnp7/WbhIEZciWVjn70aVR+sBrS7s2L8oDgnzYfB0RpwKI2P/s70JECmlsYT1wuZmm5YY6Xuhw016uoAAMUIoArSMmWcfj7+QPInqWTSpvTb3K77lrD1PiZu8WXuWwDYZJoSsuHVSSB/2mjyyJEEDaefV0W1YeW3FX7KZgwn2sgR4sSwqViDbSo6u/mPmdycHUoJ81LmsmPdLqCzxnaL3vUSxOFIUi7JoQVRR7Cr3OLLFogCK679Kjss1L8jKXdDPys9evO6oOSQDRQSHkyoPsVqcMGWUpwmGiobhHebC9x8KkBwgIv8rDl61f2Xe7V+HWbPfL551OrvVfxMe+R3a+ISLv0xMuD/C96II5eVZmh/KhEmZLllGiXReZJQYas+yENGGoWoj4oytBa+lW3HGMbX2YzSQ3Db0gElk2HsfzBu/I4QZbBQklq8wT0qlJYlimI7XVPLLgxGzwadXXVH6TX9wAWv9BQtFAYRI1YjKMEZJ0EfBTiZoyZLEokXr5zjz6hKN8CObIv1EjuFfEkKvJulAeNFIw63zggVX6MU8y5Vzw8mg7IHI1iINFE1tjxV+dQhKAaOObkie3Fr9GRog== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY3PR05MB8531.namprd05.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(39860400002)(136003)(396003)(366004)(376002)(346002)(53546011)(66946007)(8936002)(86362001)(5660300002)(36756003)(6506007)(38070700005)(4326008)(33656002)(41300700001)(6512007)(83380400001)(26005)(66476007)(8676002)(76116006)(66446008)(66556008)(64756008)(122000001)(2616005)(38100700002)(71200400001)(6486002)(6916009)(186003)(478600001)(2906002)(316002)(54906003)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dEI3UUo1OVZmcFlwUEZwVFZ1VTdVUUFBamRqQTlPUGIyK1JmSy9TemU4TmFM?= =?utf-8?B?dEg2ZXUxVEllL3lLaEhXbmdrMmRpWVZNUDEvRUhxZUNtdFNTbGEwdFhKTC8z?= =?utf-8?B?Ylc0R0J1ekJIRDF3M2pRNWZCdDZheERFb3JqMW1oQjhmZlBZZExDRjdzeXBD?= =?utf-8?B?MWxLSFFHdkdtelZqNDRtN0VnWlorMUJYY1kzOS8zZEEvTEpwdnZGK1JXMnVn?= =?utf-8?B?NG93ZW9pYzRHTXJkQzlaZUd1QWlSbldweTlwTmRXaVY2UmZIUHo5cVVEOGdV?= =?utf-8?B?OXdjWjBGYXAyeVB4bml6Mi9hOERCalNmOEYvWmZ6eWNIY20yeFY5WVpsbEN4?= =?utf-8?B?NHFZdXVURVFxbjVObnhLOU44MGFlQkR4a1pjeVQwbXNydXY0MTVZSVNEc3Fs?= =?utf-8?B?OTRqNjl4WDM1ODdReWZDbkJrSzkvWXFXZ0NMQ211YXRKRjVOOUZZL3dzN0Jj?= =?utf-8?B?bHNNMGxNZERXakNFWnZLVmEzM1hDYVBvTjZmM3I1bFpOWWZYeXVQcmVSZTNk?= =?utf-8?B?Mi9UbUx1b0x1WmMxU3pCMHBybW1aM2ltUXZBaEZNUVpPTkF4M0NnQ1ZEeDM2?= =?utf-8?B?OFR5WmZuajl6b1IyNmIyMGRqRzhQNDVpeEtBTmY3eXhQVDdUSG1ycWhjQS9D?= =?utf-8?B?U3VYNkxheW5MWElSS1ZsRXRsZytjK010Q1NwQkN4aHVWKzFDVmtFU3Vxc3hr?= =?utf-8?B?Y1ZIaFJPckpCeHRlYTdHVnpuRm9GS2gvUFM2OHRndUNQTEpoVFMreUdHZGFh?= =?utf-8?B?NWlkUGRYZGlKclNlU25NcDJnakIxOW1iemxqQTcrdzRzUTVoYTBhTnBTRHo1?= =?utf-8?B?M1N4c1JEbks2eFdqUHY0Q0NPdFY3OGErcS9qVFBldVBCUnNCTXpMZzFiNnNv?= =?utf-8?B?Q1kweWVwL3MyNTJRK28xNzRHdGxLNEcvQ29pOGJBcmNGSGJ0R1pNL0lyZWw0?= =?utf-8?B?cXNsS2kwN1VyeFJyb2dEdlc4aW9oaDB4alpMUmNrMGdPTG85TXdaZ3VPKytG?= =?utf-8?B?cTVNSnVqQW9nY0JlUi9YRThDWnAxYk14RDZhZC91ZWFCaG1sQUJIMk8vL3V3?= =?utf-8?B?Wmg5cGxiOGV3YlMxUTVRU3FmR2NWMmNrTTUwdHpiWmpYQjhlSktuMHR0MFh4?= =?utf-8?B?M2ZqQ2NNN2ZTNmtwSGY0eU02ODFNS0RMZkxtZnA0ZHZtQjducHhGZlFXZFJ1?= =?utf-8?B?d3NMcGJxQnFrakZLdDVXd1ZKdzVFOGpSOXVXU2RCbmN6OWZsYVpselcreW9x?= =?utf-8?B?SkxzQlV0R2QveE1oSEpLZXJLb01nUVowSnhwMG9va2J6YTBkQlFKeHAzdGMy?= =?utf-8?B?RXYwalhGTWwzMXBZdnVGTzRWQTJZcDgxa0VaamJOMGVRWTRGak4zR3lPU3Qv?= =?utf-8?B?dGdlazF5eFZGdVF4RnlucXNSbkF1T2lvREpDRG5YNXlWaGhLZW42cU5YSHFB?= =?utf-8?B?WTNoS3Q2YWtxTE1hcGVUSzUwODM3N0Y2U0o2b1ZMOW5EUml4VjRQa2d0bjFC?= =?utf-8?B?alRwRnVSY2pjOE9ydlgwMDQwYklocExqclFTL3REVS9pdnFrbGZRNjROZWhF?= =?utf-8?B?WjRJMXpjRDNUa3ozcG5wL3dsRlk2ckx2RmhsVmJtZ3FRTzJRc3dzNzYxbjdG?= =?utf-8?B?MFJjZTJzUzBBcmk4cTBMNi8yYUtpOWJTQjYwOUV6NEU5K1I2Ylp0ZEdGM1Zv?= =?utf-8?B?L0p2cDhobng4RWRIMWZPQmx3RUR2RUpoRnpFMWhRTldzaVM1Z0d2OW56Ty9R?= =?utf-8?B?Rkg2WFFxSVBUUE12NFAyTUlBUXhHWThZclZ5dWtkTW1wUDZ0ZUxoUWUza3ZD?= =?utf-8?B?WStYUHNOVEdjbTdoenVHczRHMXhEbGNHOHBxdlNZOE5WZmpQeGN6M2d6SGpW?= =?utf-8?B?MU41eVNlcm9UY25YNHdPUXpSNkZ5YnlkeVo4NmdaUFpSendQVGZVZ2VpSDNT?= =?utf-8?B?L3hwU05UZFhBa2N0eWpkYWFTWDNFdm5wdG9LeDZ3QzJxSm9YSmNWMjJMSGt5?= =?utf-8?B?ZUhpY3R4ZTdsdkl3NCtPcEVHMGdwR3REenFwbHR2UUhXVnBYR2k5U0lMY1px?= =?utf-8?B?MmlTTlkyWDI4cko2M1J0eTMrcVR2QmFYdmovMncxOEFCWW9lTlUwTWVyTnh1?= =?utf-8?Q?9TKLo+M6kdZwRPJePwa6Ki8MS?= Content-Type: text/plain; charset="utf-8" Content-ID: <8D245085AD29C4448C66F0BF998261B3@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY3PR05MB8531.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dfc316a5-2135-4a18-0e64-08da594514cc X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jun 2022 20:30:46.2723 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: k6eQkeHK1YPLB/XYLufxBNpfy4hZE/UpBhSsVQ+H+BhsEDawiV9sF8CdhlsC7jDgWfHOte7MBLo7x6QYqB6CAg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR05MB6860 ARC-Authentication-Results: i=2; imf06.hostedemail.com; dkim=pass header.d=vmware.com header.s=selector2 header.b=VS40RaAN; dmarc=pass (policy=quarantine) header.from=vmware.com; spf=none (imf06.hostedemail.com: domain of namit@vmware.com has no SPF policy when checking 40.107.212.78) smtp.mailfrom=namit@vmware.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1656448251; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=neeKWoZVl0bTDHwz0TR0+HTGIzrGWchPz9JLy/CCXZI=; b=tdF1OULhzccCkEKMf4hBGGu6d1jngCI79K/3M7zfrRwRKWogS10n4T33MPEm7CTCf58N1C 1WiFc0R6iH0ETl+txeP9NTnwB13+JJfaU/xOmVm0tY+RqRqBYBUGOOIPi1B8JZTVeup3h/ 4+QkyA7B0vxx8mZWWylOcvYTKh9QdzQ= ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1656448251; a=rsa-sha256; cv=pass; b=jgz5sZOncJ/1RKjRW6P3+cZyhT5ztL7nKC5LVmZ/6FaS+MZTjU1qoA4SyTx3sFh6gb/39H qYgL22lUVZm+6IyI67VcpbSBxB8hlJPhCSDlA0d+EsO/YDmM1Jf0tVXvlN/PIrdj9GaCsA b9E4OU2mgiSl57QLLFXbVNtAIjx5Ywo= X-Stat-Signature: kzh4x6uuhkwmoot58grpre3f1sazszdc X-Rspamd-Queue-Id: C2AA0180039 Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=vmware.com header.s=selector2 header.b=VS40RaAN; dmarc=pass (policy=quarantine) header.from=vmware.com; spf=none (imf06.hostedemail.com: domain of namit@vmware.com has no SPF policy when checking 40.107.212.78) smtp.mailfrom=namit@vmware.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") X-Rspam-User: X-Rspamd-Server: rspam04 X-HE-Tag: 1656448251-640819 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: DQoNCj4gT24gSnVuIDI4LCAyMDIyLCBhdCAxMjoxNSBQTSwgUGV0ZXIgWHUgPHBldGVyeEByZWRo YXQuY29tPiB3cm90ZToNCj4gDQo+IOKaoCBFeHRlcm5hbCBFbWFpbA0KPiANCj4gT24gTW9uLCBK dW4gMjcsIDIwMjIgYXQgMTE6Mzc6MzJQTSArMDAwMCwgTmFkYXYgQW1pdCB3cm90ZToNCj4+IA0K Pj4gQmVzaWRlcyB0aGUgYmVuZWZpdCBvZiBhdm9pZGluZyBhIFRMQiBmbHVzaCwgdGhlcmUgaXMg YWxzbyB0aGUgYmVuZWZpdA0KPj4gb2YgaGF2aW5nIG1vcmUgcHJlY2lzZSBkaXJ0eSB0cmFja2lu Zy4gWW91IGFzc3VtZSBVRkZESU9fQ09OVElOVUUgd2lsbCBiZQ0KPj4gcHJlY2VkZWQgYnkgbWVt b3J5IHdyaXRlIHRvIHRoZSBzaGFyZWQgbWVtb3J5LCBidXQgdGhhdCBkb2VzIG5vdCBoYXZlIHRv DQo+PiBiZSB0aGUgY2FzZS4gU2ltaWxhcmx5LCBpZiBpbiB0aGUgZnV0dXJlIHVzZXJmYXVsdGZk IHdvdWxkIGFsc28gc3VwcG9ydA0KPj4gbWVtb3J5LWJhY2tlZCBwcml2YXRlIG1hcHBpbmdzLCB0 aGF0IGRvZXMgbm90IGhhdmUgdG8gYmUgdGhlIGNhc2UgZWl0aGVyLg0KPiANCj4gQ291bGQgSSBh c2sgd2hhdCdzIHRoZSBub3Qgc3VwcG9ydGVkIHByaXZhdGUgbWFwcGluZyB5b3UncmUgdGFsa2lu ZyBhYm91dA0KPiAoYW5kIEkgdGhpbmsgeW91IG1lYW50ICJmaWxlLWJhY2tlZCIpPyBJIHRob3Vn aHQgYWxsIGtpbmRzIG9mIHByaXZhdGUNCj4gbWFwcGluZ3MgYXJlIHN1cHBvcnRlZCBvbiBhbGwg bW9kZXMgYWxyZWFkeT8NCg0KWWVzLCBJIG1lYW50IGZpbGUtYmFja2VkLiBTZWUgdm1hX2Nhbl91 c2VyZmF1bHQoKSBmb3IgdGhlIHN1cHBvcnRlZA0KdHlwZXMgb2YgbWVtb3J5Og0KDQogIHN0YXRp YyBpbmxpbmUgYm9vbCB2bWFfY2FuX3VzZXJmYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZt X2ZsYWdzKQ0KICB7ICAgICAgIA0KICAgICAgICBpZiAodm1fZmxhZ3MgJiBWTV9VRkZEX01JTk9S KQ0KICAgICAgICAgICAgICAgIHJldHVybiBpc192bV9odWdldGxiX3BhZ2Uodm1hKSB8fCB2bWFf aXNfc2htZW0odm1hKTsNCiAgICAgICAgICAgICAgICANCiNpZm5kZWYgQ09ORklHX1BURV9NQVJL RVJfVUZGRF9XUA0KICAgICAgICAvKg0KICAgICAgICAgKiBJZiB1c2VyIHJlcXVlc3RlZCB1ZmZk LXdwIGJ1dCBub3QgZW5hYmxlZCBwdGUgbWFya2VycyBmb3INCiAgICAgICAgICogdWZmZC13cCwg dGhlbiBzaG1lbSAmIGh1Z2V0bGJmcyBhcmUgbm90IHN1cHBvcnRlZCBidXQgb25seQ0KICAgICAg ICAgKiBhbm9ueW1vdXMuDQogICAgICAgICAqLyAgICAgICAgICAgICANCiAgICAgICAgaWYgKCh2 bV9mbGFncyAmIFZNX1VGRkRfV1ApICYmICF2bWFfaXNfYW5vbnltb3VzKHZtYSkpDQogICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOw0KI2VuZGlmDQogICAgICAgIHJldHVybiB2bWFfaXNfYW5v bnltb3VzKHZtYSkgfHwgaXNfdm1faHVnZXRsYl9wYWdlKHZtYSkgfHwNCiAgICAgICAgICAgIHZt YV9pc19zaG1lbSh2bWEpOw0KICB9DQoNCg0KPiANCj4gVGhhbmtzIGZvciBleHBsYWluaW5nLCBz byB5ZXMgZWl0aGVyIGZhbHNlIHBvc2l0aXZlIG9yIGZhbHNlIG5lZ2F0aXZlIG9uDQo+IHB0ZSBk aXJ0eSBiaXQgY2FuIGJyaW5nIGEgc2lkZSBlZmZlY3Qgb24gdGhpbmdzLCBhbmQgdGhlIHVzZXIg a25vd3MgdGhlDQo+IGJlc3QuIE1ha2VzIHNlbnNlLiBJIHRoaW5rIHdoYXQgSSBvdmVybG9va2Vk IGlzIHRoZSBkb3duc2lkZSBvZiBoYXZpbmcNCj4gYm90aCB3cml0ZT09ZGlydHk9PTEgd2hlbiBp dCBkb2Vzbid0IG5lZWQgdG8uDQo+IA0KPj4gDQo+PiBQdXR0aW5nIGFsbCBvZiB0aGUgYWJvdmUg YXNpZGUsIHRoZXJlIGlzIGEgYnVnIGluIG15IGNvZGUsIGJ1dCB0aGlzDQo+PiBidWcgYWxzbyBw b2ludHMgd2h5IGRpcnR5IHNob3VsZCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseS4gSWYgc29t ZW9uZQ0KPj4gdXNlcyBTT0ZUX0RJUlRZIHdpdGggdXNlcmZhdWx0ZmQsIHRoZW4gbWFya2luZyB0 aGUgUFRFIGFzIGRpcnR5IChhbmQNCj4+IHNvZnQtZGlydHkpIG1pZ2h0IGJlIG1pc2xlYWRpbmcs IGNhdXNpbmcgdW5uZWNlc3NhcnkgdXNlcnNwYWNlIHdyaXRlYmFjaw0KPj4gb2YgbWVtb3J5Lg0K PiANCj4gV2VsbCBJIG5ldmVyIHRob3VnaHQgYW55b25lIHdvdWxkIGJlIHVzaW5nIHNvZnQtZGly dHkgd2l0aCB1ZmZkIGJlY2F1c2UNCj4gbG9naWNhbGx5IHVmZmQtd3Agd2FzIHNvbWVob3cgdHJ5 aW5nIHRvIHJlcGxhY2UgaXQgd2l0aCBhIGJldHRlciBpbnRlcmZhY2UsDQo+IGhvcGVmdWxseS4N Cg0KSSBoYXZlIGhlYXJkIGFib3V0IHNvbWUgd2hvIGRvZXMgKG5vdCBtZSkuIFNvIEkgZG8gbm90 IG1ha2UgaXQgdXAsDQp1bmZvcnR1bmF0ZWx5Lg0KDQo+IA0KPiBJZiB0byB0YWxrIGFib3V0IGl0 LCBJTUhPIHRoZSBtb3N0IGltcG9ydGFudCB0aGluZyBpcyByZWFsbHkgbm90IHRoZSBkaXJ0eQ0K PiBiaXQgYnV0IHRoZSB3cml0ZSBiaXQ6IGV2ZW4gaWYgeW91IGxlYXZlIGJvdGggdGhlIGRpcnR5 IGJpdHMgY2xlYXJlZCAoc28NCj4gdGhlIHVzZXIgc3BlY2lmaWVkICFXUklURV9ISU5UIHRoZW4g d2UgZ3JhbnQgd3JpdGUgYml0IG9ubHkpLCBpdCBtZWFucyB3aGVuDQo+IHRoZSB3cml0ZSBoYXBw ZW5zIGZvciBzdXJlIGRpcnR5IGJpdCB3aWxsIGJlIHNldCBvbiBkZW1hbmQgYnV0IG5vdA0KPiBz b2Z0LWRpcnR5IHNpbmNlIHdlIHdvbid0IGdlbmVyYXRlIGEgcGFnZSBmYXVsdCBhdCBhbGwuIEFG QUlDVCBpdCdsbCBiZSBhDQo+IGZhbHNlIG5lZ2F0aXZlLg0KPiANCj4gVGhlIG9sZCBjb2RlIGlz IHNhZmUgaW4gdGhhdCByZXNwZWN0IG9uIHRoYXQgd2UgYWx3YXlzIHNldCBkaXJ0eSBzbyB3ZSBj YW4NCj4gb25seSBoYXZlIGZhbHNlIHBvc2l0aXZlICh3aGljaCBpcyBhY2NlcHRhYmxlIGluIHRo aXMgY2FzZSkgYnV0IG5vdCBmYWxzZQ0KPiBuZWdhdGl2ZSAod2hpY2ggaXMgbm90KS4NCg0KSSBh Z3JlZSB0aGF0IHRoZSBQVEUgc2hvdWxkIGJlIGxlZnQgUk8gaW4gdGhpcyBjYXNlLiBJIHdhcyBq dXN0IHBvaW50aW5nDQp0aGF0IHRoZSB1c2VyIG1pZ2h0IG5vdCBiZSBhd2FyZSBvZiBzb2Z0LWRp cnR5IGJlaW5nIHVzZWQsIGFuZCB0aGVuIGl0DQptYWtlcyBzZW5zZSB0byB0cmVhdCB0aGUgKGxh Y2sgb2YpIHdyaXRlLWhpbnQgYXBwcm9wcmlhdGVseS4NCg0KSW4gdGhlIGN1cnJlbnQgY29kZSwg d2hlbiBQVEVzIGFyZSB1bmNvbmRpdGlvbmFsbHkgbWFya2VkIGFzIGRpcnR5LCBldmVuDQp3aGVu IHRoZXkgYXJlIHdyaXRlLXByb3RlY3RlZCwgc29mdC1kaXJ0eSB3b3VsZCBwcm9kdWNlIGZhbHNl LXBvc2l0aXZlcy4NCk5vdGhpbmcgd291bGQgYnJlYWssIGJ1dCBpdCBpcyBub3QgZ29vZCBmb3Ig cGVyZm9ybWFuY2UgZWl0aGVyLg0KDQo+IA0KPj4gDQo+PiBTbyBJIGRvIG5lZWQgdG8gZml4IG15 IGNvZGUgc28gaXQgd291bGQgbm90IHdyaXRlLXVucHJvdGVjdCBtZW1vcnkgaWYNCj4+IHNvZnQt ZGlydHkgaXMgZW5hYmxlZCBhbmQgVUZGRF9GTEFHU19XUklURV9MSUtFTFkgaXMgbm90IHByb3Zp ZGVkLiBCdXQNCj4+IEkgdGhpbmsgaXQgZW1waGFzaXplcyB0aGUgYmVuZWZpdCBvZiBoYXZpbmcg VUZGRF9GTEFHU19XUklURV9MSUtFTFkuDQo+IA0KPiBTb3JyeSB0byBzYXkgdGhhdCwgYnV0IHRv IG1lIGl0IHNlZW1zIGEgcHJvb2YgdGhhdCBkaXJ0eSBiaXQgaXMgZXZlbiBtb3JlDQo+IHRyaWNr eSB0aGFuIGFjY2VzcyBiaXQgc28gd2UgbmVlZCB0byBoYXZlIGJldHRlciB0aG91Z2h0cywgZXZl biBpZiB0aGUNCj4gV1JJVEVfTElLRUxZIGhpbnQgc291bmRzIHN0cmFpZ2h0Zm9yd2FyZC4gSSBu b3cgY2FuIGJ1eSBpbiBhbGwgdGhlIHRsYg0KPiBmbHVzaCBwb2ludHMgeW91IGV4cGxhaW5lZCwg YnV0IHN0aWxsIElNSE8gdGhhdCdzIHRvbyBmaW5lIGdyYW51bGUgKHNvbWUNCj4gcmFuZG9tIHB0 ZXMgaW4gYSBiYXRjaGVkIHRsYiByYW5nZSBmbHVzaCBtYXkgbm90IGV2ZW4gbWF0dGVyISkgYW5k IEknbSBqdXN0DQo+IG5haXZlbHkgd29uZGVyaW5nIHdoZXRoZXIgd2UgbmVlZCBtb3JlIHRob3Vn aHRzIGZvciBhbiB1QUJJIHRvIGJlIHByb3Bvc2VkDQo+IGxpa2UgdGhhdC4gSSB3b24ndCBhc2sg Zm9yIHNvbWUgdXNlIGNhc2VzIGFuZCBlc3BlY2lhbGx5IG51bWJlcnMgdG8gcHJvdmUNCj4gYXNz dW1pbmcgSSdtIGFza2luZyB0b28gbXVjaCwgYnV0IHJlYWxseSB0aGF0J2xsIGJlIHZlcnkgcGVy c3Vhc2l2ZSBpZiB3ZQ0KPiBjYW4gZ2V0LiBJJ2Qgbm90IHdvcnJ5IGZvciBBQ0NFU1NfTElLRUxZ IG9uIGl0IGJlY2F1c2UgdGhhdCdzIG11Y2ggbW9yZQ0KPiBzdHJhaWdodGZvcndhcmQgdG8gbWUu DQoNCkxldCBtZSBnZXQgYmFjayB0byB5b3Ugd2l0aCBudW1iZXJzLg0KDQo+IA0KPj4gDQo+Pj4g DQo+Pj4gTWF5YmUgd2l0aCB0aGUgdG8gYmUgcHJvcG9zZWQgUkZDIHBhdGNoIGZvciB0bGIgZmx1 c2ggd2UgY2FuIGtub3cgd2hldGhlcg0KPj4+IHRoYXQgc2hvdWxkIGJlIHNvbWV0aGluZyB3ZSBj YW4gcmVseSBvbi4gSXQnbGwgYWRkIG1vcmUgZGVwZW5kZW5jeSBvbiB0aGlzDQo+Pj4gd29yayB3 aGljaCBJJ20gc29ycnkgdG8gc2F5LiBJdCdzIGp1c3QgdGhhdCBJTUhPIHdlIHNob3VsZCB0aGlu ayBjYXJlZnVsbHkNCj4+PiBmb3IgdGhlIHdyaXRlLWhpbnQgYmVjYXVzZSB0aGlzIGlzIGEgc29s aWQgbmV3IHVBQkkgd2UncmUgdGFsa2luZyBhYm91dC4NCj4+PiANCj4+PiBUaGUgb3RoZXIgb3B0 aW9uIGlzIHdlIGNhbiBpbnRyb2R1Y2UgdGhlIGFjY2VzcyBoaW50IGZpcnN0IGFuZCB0aGluayBt b3JlDQo+Pj4gb24gdGhlIGRpcnR5IG9uZSAod2UgY2FuIGFsd2F5cyBhZGQgaXQgd2hlbiBwcm9w ZXIpLiBXaGF0IGRvIHlvdSB0aGluaz8NCj4+PiBBbHNvLCBEYXZpZCBwbGVhc2UgY2hpbSBpbiBh bnl0aW1lIGlmIEkgbWlzc2VkIHRoZSB3aG9sZSBwb2ludCB3aGVuIHlvdQ0KPj4+IHByb3Bvc2Vk IHRoZSBpZGVhLg0KPj4+IA0KPj4+PiANCj4+Pj4gQnV0IHRoaXMgZGlzY3Vzc2lvbiBtYWRlIG1l IHRoaW5rIHRoYXQgdGhlcmUgYXJlIHR3byBzb21ld2hhdCByZWxhdGVkDQo+Pj4+IG1hdHRlcnMg dGhhdCB3ZSBtYXkgd2FudCB0byBhZGRyZXNzOg0KPj4+PiANCj4+Pj4gMS4gbXdyaXRlcHJvdGVj dF9yYW5nZSgpIHNob3VsZCB1c2UgTU1fQ1BfVFJZX0NIQU5HRV9XUklUQUJMRSB3aGVuICF3cA0K Pj4+PiB0byBwcm9hY3RpdmVseSBtYWtlIGVudHJpZXMgd3JpdGFibGUgYW5kIHNhdmUgLg0KPj4+ IA0KPj4+IEknbSBub3Qgc3VyZSBJJ20gcmlnaHQgaGVyZSwgYnV0IEkgdGhpbmsgRGF2aWQncyBw YXRjaCBzaG91bGQgaGF2ZSBjb3ZlcmVkDQo+Pj4gdGhhdCBjYXNlPyBUaGUgbmV3IGhlbHBlciBv bmx5IGNoZWNrcyBwdGVfdWZmZF93cCgpIGJhc2VkIG9uIG15IG1lbW9yeSwNCj4+PiBhbmQgd2hl biByZXNvbHZpbmcgcGFnZSBmYXVsdHMgdWZmZC13cCBiaXQgc2hvdWxkIGhhdmUgYmVlbiBnb25l LCBzbyBpdA0KPj4+IHNob3VsZCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIG5vcm1hbCBwdGVzLg0K Pj4gDQo+PiBMZXTigJlzIHNlZSB3ZSBnZXQgdG8gdGhlIHNhbWUgcGFnZToNCj4+IA0KPj4gbXdy aXRlcHJvdGVjdF9yYW5nZSgpIGRvZXM6DQo+PiANCj4+IGNoYW5nZV9wcm90ZWN0aW9uKCZ0bGIs IGRzdF92bWEsIHN0YXJ0LCBzdGFydCArIGxlbiwgbmV3cHJvdCwNCj4+IGVuYWJsZV93cCA/IE1N X0NQX1VGRkRfV1AgOiBNTV9DUF9VRkZEX1dQX1JFU09MVkUpDQo+PiANCj4+IEFzIHlvdSBzZWUg bm8gdXNlIG9mIE1NX0NQX1RSWV9DSEFOR0VfV1JJVEFCTEUuDQo+PiANCj4+IEFuZCB0aGVuIGNo YW5nZV9wdGVfcmFuZ2UoKSBkb2VzOg0KPj4gDQo+PiBpZiAoKGNwX2ZsYWdzICYgTU1fQ1BfVFJZ X0NIQU5HRV9XUklUQUJMRSkgJiYNCj4+ICFwdGVfd3JpdGUocHRlbnQpICYmDQo+PiBjYW5fY2hh bmdlX3B0ZV93cml0YWJsZSh2bWEsIGFkZHIsIHB0ZW50KSkNCj4+IHB0ZW50ID0gcHRlX21rd3Jp dGUocHRlbnQpOw0KPj4gDQo+PiBJZiB3ZSBkbyBub3QgcHJvdmlkZSBNTV9DUF9UUllfQ0hBTkdF X1dSSVRBQkxFLCB0aGUgUFRFIHdvdWxkIG5vdCBiZQ0KPj4gd3JpdGFibGUuDQo+PiANCj4+IE5v dyBmb3IgdGhlIHJlY29yZCwgd2UgbWF5IHdhbnQgYW4gYWRkaXRpb25hbCBvcHRpbWl6YXRpb24s IHNvIGlmIGENCj4+IGZhdWx0IGhhbmRsZXIgaXMgd29rZW4gYmVjYXVzZSBhIFBURSBiZWNvbWUg d3JpdGFibGUsIHdlIGRvIG5vdCByZXRyeQ0KPj4gdGhlIHBhZ2UgZmF1bHQgKHNpbmNlIHRoZSBQ VEUgaXMgYWxyZWFkeSB3cml0YWJsZSkuIEl0IGlzIGEgc21hbGwgY2hhbmdlLA0KPj4gYnV0IGxl dOKAmXMgc2VlIGZpcnN0IHdlIGFncmVlIG9uIHRoZSBwYXRjaGVzIHNvIGZhcuKApg0KPiANCj4g QWggSSBzZWUgd2hhdCBJIG1pc3NlZCwgdGhhbmtzLg0KPiANCj4gQW5vdGhlciBvcHRpb24gaXMg d2UgY2FsbCBjYW5fY2hhbmdlX3B0ZV93cml0YWJsZSgpIHNvbWVob3cgaW4gdGhlDQo+IHVucHJv dGVjdCBicmFuY2guDQoNCkkgZG9u4oCZdCB0aGluayB0aGF0IEkgZ290IHRoaXMgb25lLg0KDQp0 bDtkcjogSeKAmWxsIHJ1biBzb21lIG51bWJlcnMgKGFjY2VzcyB3aGVuIFBURS1kaXJ0eS9jbGVh ciksIGFkZHJlc3MgdGhlDQphZm9yZW1lbnRpb25lZCBpc3N1ZXMgYW5kIHNlbmQgdjIuIEJhc2Vk IG9uIHRoZSByZXN1bHRzIHdlIGNhbiBkZWNpZGUNCndoZXRoZXIgaXQgbWFrZXMgc2Vuc2UuDQoN Cg0K