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 28B7CC4332F for ; Thu, 13 Oct 2022 22:53:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 42D626B0074; Thu, 13 Oct 2022 18:53:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3B7C68E0001; Thu, 13 Oct 2022 18:53:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 16BAC6B0078; Thu, 13 Oct 2022 18:53:55 -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 F053C6B0074 for ; Thu, 13 Oct 2022 18:53:54 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id B107BAB049 for ; Thu, 13 Oct 2022 22:53:54 +0000 (UTC) X-FDA: 80017430388.24.11179DD Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) by imf29.hostedemail.com (Postfix) with ESMTP id 287CB120026 for ; Thu, 13 Oct 2022 22:53:53 +0000 (UTC) Received: from pps.filterd (m0044012.ppops.net [127.0.0.1]) by mx0a-00082601.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 29DIXpiD024080; Thu, 13 Oct 2022 15:53:43 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=meta.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=s2048-2021-q4; bh=I3DsmfalthXiUWHV/LI3FtrAV+Brspb0uZRMlgcBCT8=; b=hbuCOvGdmlhaGGdRyemtVAaWIU43YAsChTVwzqrDSL4iP25ShJ+5KhGaLmeLfS14Q3Sw 3QhQqj4iDC7tt7P4oh3V8Y5NWgGUvUU6xb8Ki6ICP9Sl78wDa8JhPVPfsF5A/FiOmgXD Cjr08Y2JjAKViY9Lxum7J37pjfcVS30zHBRUjbd/wMKDbNS2Wz6+WccSsOKVlyRNG1eh W2tmkyg3MwUxq0LNGPlFHkIP53hE6fXzT4q1iHgd6T82izDoBMDrXAxrX4D+HkcX5gZK mt/GyktbzoriTVyCp6LxLaR8hCQSqH5AurL4RHYKemAq+FYMRRbTMdb1srLfFZT1LHFQ Wg== Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2170.outbound.protection.outlook.com [104.47.56.170]) by mx0a-00082601.pphosted.com (PPS) with ESMTPS id 3k6fwyxu4t-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 13 Oct 2022 15:53:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z7aWxVwrxUVCXXaPYzon6/SoGIgUN4VFfEPEkxyfLjT7J4TPDQKvXFT7HMHtqwltsJf+K/SmMSnoDohZq4f6vbI9cgPRqClPdjxDcNY8vW5Q6Iv409V7xXvFFTdjP3DJ+Pxht3asCf3FL9AYVypY7watN3DJ9/gk7TueVX5X9lV5NNGUAi3i89XoBfB6c9E8ClKpDCUN+I3hgSNUeQq0zEvfq6TcOhuKDSXnBp1MR4P3rVRoNaH70y4LssIH0nsNCgRzEGDnGKzE0dcfDipu5n73J5peMK8GyjcseycsTNwTD8v3LB6Sh82o+1TezCpUFGSWyfZoAmTvmtVKYsIkcw== 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=I3DsmfalthXiUWHV/LI3FtrAV+Brspb0uZRMlgcBCT8=; b=Xw/3sY2H37hOJtND9rBMPRDICtQI/K9/0WcoIBJ1hC9f0iGtijb/fesa02/0JhEBmEbChQ4sYWnCYaZC7wbVA8/EdaQBD1oZwQfGuZ08ELt3/qY0iOAm4SJ9bge/91bRH+M6imP5elUU6IxbRQb2wQC0WPcc9j8OaTaY6fDunqmh8pUR32hMvXtJTveKY72cOaClk9PqBI5yNVixmRZhVg39j2fBwuHec/2Qub0ktrRFY80wiIY7rHdw3D4OqodpKshppQwE7wL7aO61g3gSP3oaE6d92v80WGRbki1y5SD/P+5jNw+pceDCX3CK5nQxX4IqH1/r8r3mSMPXwuf16Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=meta.com; dmarc=pass action=none header.from=meta.com; dkim=pass header.d=meta.com; arc=none Received: from CY4PR15MB1734.namprd15.prod.outlook.com (2603:10b6:910:19::14) by DM5PR15MB1433.namprd15.prod.outlook.com (2603:10b6:3:cb::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.15; Thu, 13 Oct 2022 22:53:40 +0000 Received: from CY4PR15MB1734.namprd15.prod.outlook.com ([fe80::fc7c:15c:9a61:e445]) by CY4PR15MB1734.namprd15.prod.outlook.com ([fe80::fc7c:15c:9a61:e445%12]) with mapi id 15.20.5709.015; Thu, 13 Oct 2022 22:53:40 +0000 From: "Alex Zhu (Kernel)" To: "Kirill A. Shutemov" CC: "linux-mm@kvack.org" , Kernel Team , "willy@infradead.org" , "hannes@cmpxchg.org" , "riel@surriel.com" Subject: Re: [PATCH v3 1/3] mm: add thp_utilization metrics to debugfs Thread-Topic: [PATCH v3 1/3] mm: add thp_utilization metrics to debugfs Thread-Index: AQHY3oudUlOqyAUKsUaxh++nk+vvN64MMskAgAC9ZIA= Date: Thu, 13 Oct 2022 22:53:39 +0000 Message-ID: <9891C13C-DC07-4372-B346-C353CE02B205@fb.com> References: <1546999e21a418c2510b3ed02b2b1f76b2b0f5b7.1665614216.git.alexlzhu@fb.com> <20221013113548.65ofywprrjepk2t4@box.shutemov.name> In-Reply-To: <20221013113548.65ofywprrjepk2t4@box.shutemov.name> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CY4PR15MB1734:EE_|DM5PR15MB1433:EE_ x-ms-office365-filtering-correlation-id: a90be55a-6876-4962-2630-08daad6dc558 x-fb-source: Internal x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0HpwQfT7sP/SDDlQGz3MesPdCNLdZO9k/WL/xVVGJcnFV/Sy/jc2aSUdqbAsOvDshQ/gdNlMYbZVqcd/GMFqTsADil3JDr5UKrGwgBLIOjXEDktd6nHbZKxWvgMycmYpu4JDVRF71xfzH6orSFm6drHjlrIGkry5Vqm4LxynMrN3tewvo07qSmhfacRTTTLEKpKHTruCiAh8ZQANzacwwG3KAx9GPS+KKrtDCQ+9DtIl/aXTrcX7xGqnFVPinXBQrbHloIpSExT/MM2l4OLNkImQW0CHg8IocwP5yReqqtzE0/x2u08cEkeGcO9grK20O8kZ9Z6b8PKVBEN7e25CzKeK7CJ6iWdDfqknnF4GFJ6Rkylw+Gjom5f1tcbVQooiwRz4GrTa6FrmW5kzFPHmKnDx78I3n3YW2KZTWprwK5El2opJzK8JuyP5Kd52foJFNS85U2lqHRljwdokFW6E7z83XjUSZtII504VXhVuthUR0g4LrNI2H5PuXofiFy8NjEOumzeo8ka97h/uLE6DSQeG9I8Q9Ado9bg29oy4Jdt4HDHKjJ2j6METTgAhxtTuZnDL+c0KzgzG0iO4y1WrIkxNOdpUoBqguQzjiRJRMpcAZC+dE4mY6c7eGI8ABWIzpL0TddynvBP+yTwQf0hWkf5kslgr4cYV+6BeMKIC9wcgkfL/A2KpugYIeEoxQT3DhBUnM8iguIAgsgfdGIfkM+Kc4QaHcBJLyEoIcjmluUH3ob2H+J6jsoxUFs19b4KVjhJFU0gxziUKOdh1qHdoEA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR15MB1734.namprd15.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(366004)(346002)(136003)(376002)(451199015)(86362001)(186003)(122000001)(6512007)(38070700005)(64756008)(41300700001)(9686003)(66946007)(76116006)(91956017)(66446008)(66476007)(66556008)(6506007)(8676002)(478600001)(4326008)(71200400001)(38100700002)(6486002)(2906002)(54906003)(5660300002)(8936002)(30864003)(83380400001)(6916009)(316002)(36756003)(33656002)(53546011);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dUU4SzRGUG8ycDVNSU9vN3pldGl0WDBkSWRUeWNnbnNCeFAxVmRSbWhyUkZN?= =?utf-8?B?Z1F2L3VqWnRZYmJqSUJ3K0pxekhsRXJHbEtLOXVBeGZKNHZpamVVWUg4R3Vq?= =?utf-8?B?eW5aVDVBNEMwM3JJWmxTRHdnMDM5WC91YTRIMVBOWjBmWXpLUDVxb21oUC92?= =?utf-8?B?OFBnekFCUXdpcGtZT2hGOFltQm5FSW9KeDlIZUxzNi9JWnl2TGVoLzVlZmoz?= =?utf-8?B?Qi9YejJtVmZwSzFWdmRyK2lCRmVSNHlYTVhaWGlVWWNHZnM3Y002V1ZMcUF2?= =?utf-8?B?bS8wZG9TTW5MZkF6THM2TzB3NFlvYU0wU2F0TTNuck9RVVB5SW9TbUVSS0tM?= =?utf-8?B?TDF0MVh6QjZUYkFnSDRYajZYckxXaVppYmg4aDZUYlNhRkpsVWI2K1k4bE1t?= =?utf-8?B?dkpCcSt6dU1ZQVljZXRFWFJHV2RqMG0zcC9xODJ1T3UvV3c4aVN4dGUvMG4w?= =?utf-8?B?ZG9kUkQ4Q0FJcVJJQXM1WjdUN3hKZHFMd21BdG9WQ2NaWTRNNnJWUHc4bGxk?= =?utf-8?B?R1B1Qk5BZ1hLSzZ4M2hQQm5XUVo2WHdvNkxLcE9FZGREREtGNUllMS8xYmtI?= =?utf-8?B?Ymd1a2tOcmdYNWd5U2JNeFZsY05xbGFMT0lGYjFQaDA5RUduS1JXTHc3cXg5?= =?utf-8?B?akt1aDdSSll5RVhDYXVUeGJiTmthYkdhcEdNaWtWZ0VMdHg5bEdzY0kzNUdH?= =?utf-8?B?V0lOcXpGc2ZUMUhPamI1U2VobE5xV0tlKzliQWVnMFFrUTdxNmtVaStSWWRP?= =?utf-8?B?VnFJcXR3SHlPSnNnQ1J4ZWluTXJCMGxJaVo3bVBIZW5IcVdUTlBBbWZDRllx?= =?utf-8?B?QXFjM1BCNHZOQ2JjTXRjMmx4ZGc4cEVKRllIR2FKK3h0QVl2bjBWeHNBQU1a?= =?utf-8?B?d3YwaUZmM01ESWw2Y1BBVEY3Q2F6cjdxdTV0MmxqaU1qdjV4amJyZnF6OUda?= =?utf-8?B?dXh2MTJ4R1lWbUJlRDd5VUxzSVY1M2VmbjR5andhbVMvM1dtNCs3ZFN5eEpm?= =?utf-8?B?ZEdua1BuVmFSYW82R1NQa1pwZ0JzTWZkbE9ib1o3UmdpK3p4NVBRaHoxdkhT?= =?utf-8?B?N0NHRVhDMThONTRLakZ1T1I0WVpVMzRVNlY5cEtGTnQzdkRtelZUVnJma2tz?= =?utf-8?B?RUlrRlhlcjFDUGVscnRLcFVSUWpvblUzMFo1N0ttcCtDOXd3K0FzNmV4VVRp?= =?utf-8?B?ajAwcmJncnZJdHZZTXZxTlFFUklra29qeW8xaGlHeSs4cUhZamtFUUcyV0ZD?= =?utf-8?B?VjU1dXZGOEZGZUhkZHN0dS9ITUZZdG0rOG5Kd2twZDVpak5zeitCZjhvTXp1?= =?utf-8?B?N0pYRGNhY3BwTXE4TnZlZUxFajRiWVVvWlBCTmhQSkFLRmhZekMvcVRNczVO?= =?utf-8?B?a2dRZFY4Zkg2QitNOE1JZFFEL2hwUVBjZFpRL2dWVS9TSGFscC8reWpWbkYr?= =?utf-8?B?cm84QWlWOUg4M2EvOFdvL2RlRDAxR0liaHhxd3Q2U2kyQ1NYQTlWK1RzQW9G?= =?utf-8?B?dFBTL0JaUElHMElkMHQvWG4wVTZNc040MjFDK09pVFNONFQ1a3hURnpycGt0?= =?utf-8?B?elAxaUppTlY1bWZIZENBeEhnemptcVM5eWVwMzQ3V1p6LzVNdjhKSTZSaFdy?= =?utf-8?B?OTFmU1VTTWY4dW9kTVNmNGxBQk5maGlZbTZNNWM3V2lGbEtPRGJnd3Z1QXJI?= =?utf-8?B?QUlQQ05LdkFjckE2emVycjl0cEZHcStlTm02aWwra3p6QmpwV29INXp5RVZl?= =?utf-8?B?cWhlRzBCRE5BbzNkeXNTeWVsRWpCcUtEbjZjTmg3eVp0L0MrQkJmcUpwdVFK?= =?utf-8?B?aitNMGRoaTJpWFczVDh3ODFaUXVpL2I4alg1RXZSSXMyWGpPNW44NGdBdEV3?= =?utf-8?B?eWxIUFNtaW5QbEFaNGdPRzkyVzRoWEFGb0szOTdhaXZFUTBpdVkvQzNMazg2?= =?utf-8?B?V21KT0xMQmVVeWlvOE5jVXcwdEJkUGZROU52LzY1T3BuTWhDVWdMb21vOUtY?= =?utf-8?B?SHhja3hwME9STDNYbjZHaVY2dVJNTDIzSkZUOHU2Zm13eVppdGUwSmZZcDRP?= =?utf-8?B?SUVXSCtKcDdkVlNMbmJwT3BrMEZLTE5WdXZwZ0hSMU5PRjJ6eWlVYVN3aUlK?= =?utf-8?B?MEoxQmlHUFg5MWgzUnNzakdYSmdORlhIWHVML0FUdU5XM3F5N0VMT0MwZ1pQ?= =?utf-8?Q?U+KYhdHy/j7aHagEQ9r8RSE=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: meta.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR15MB1734.namprd15.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a90be55a-6876-4962-2630-08daad6dc558 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Oct 2022 22:53:40.0119 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 8ae927fe-1255-47a7-a2af-5f3a069daaa2 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 14jVS4wGt1LJvBa8OHHEcmIduXjgcXhOQ1EmsPq86d8z4PB9y4wKyI/FsUYCwkcUT4yDfgtd1LPQzV1EXi5ZHQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR15MB1433 X-Proofpoint-ORIG-GUID: oOo2T7ebDVI5aVdN1tGypXkQvJZDAv8Z X-Proofpoint-GUID: oOo2T7ebDVI5aVdN1tGypXkQvJZDAv8Z X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-10-13_08,2022-10-13_01,2022-06-22_01 ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1665701634; a=rsa-sha256; cv=pass; b=iJbCoCO+t3fLu/6vJCdhZj/9H/kpIw3cdCF+l9ACkpPHd6HhuSRi5mPytlzY9OD4jyW/43 WKCMzpFFrrnmF/6DcSFYHWFcaT72e9VjJf2xduG2PW9rS4ZOms1ooohlXTIDPBWta9yzir Y8S2q3daMb1UBRZirTZc4KlFwlUe2wk= ARC-Authentication-Results: i=2; imf29.hostedemail.com; dkim=pass header.d=meta.com header.s=s2048-2021-q4 header.b=hbuCOvGd; spf=pass (imf29.hostedemail.com: domain of "prvs=1285f77479=alexlzhu@meta.com" designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=1285f77479=alexlzhu@meta.com"; dmarc=pass (policy=reject) header.from=meta.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=1665701634; 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=I3DsmfalthXiUWHV/LI3FtrAV+Brspb0uZRMlgcBCT8=; b=WeeInLVsCFh8/zmxzdtiZ0uZgHKrd9nr8GOOXbe6O8f5yZ6nwZHxBBDllYD1cwX6zVYuKQ pinAqBgOVRrMqq/3YG3Kn05outRUB3ATvsOtSYR9NHFH1ulosbsHFOC13iO5qEIgwBcHGn 08J9iEg6QBOw13BcVAsbeT+LStOnLEk= X-Stat-Signature: 51y7idm6ybrzutc6kqtmenuspzuet5ab X-Rspamd-Queue-Id: 287CB120026 X-Rspam-User: X-Rspamd-Server: rspam08 Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=meta.com header.s=s2048-2021-q4 header.b=hbuCOvGd; spf=pass (imf29.hostedemail.com: domain of "prvs=1285f77479=alexlzhu@meta.com" designates 67.231.145.42 as permitted sender) smtp.mailfrom="prvs=1285f77479=alexlzhu@meta.com"; dmarc=pass (policy=reject) header.from=meta.com; arc=pass ("microsoft.com:s=arcselector9901:i=1") X-HE-Tag: 1665701633-919903 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: DQoNCj4gT24gT2N0IDEzLCAyMDIyLCBhdCA0OjM1IEFNLCBLaXJpbGwgQS4gU2h1dGVtb3YgPGtp cmlsbEBzaHV0ZW1vdi5uYW1lPiB3cm90ZToNCj4gDQo+IE9uIFdlZCwgT2N0IDEyLCAyMDIyIGF0 IDAzOjUxOjQ1UE0gLTA3MDAsIGFsZXhsemh1QGZiLmNvbSB3cm90ZToNCj4+IEZyb206IEFsZXhh bmRlciBaaHUgPGFsZXhsemh1QGZiLmNvbT4NCj4+IA0KPj4gVGhpcyBjaGFuZ2UgaW50cm9kdWNl cyBhIHRvb2wgdGhhdCBzY2FucyB0aHJvdWdoIGFsbCBvZiBwaHlzaWNhbA0KPj4gbWVtb3J5IGZv ciBhbm9ueW1vdXMgVEhQcyBhbmQgZ3JvdXBzIHRoZW0gaW50byBidWNrZXRzIGJhc2VkDQo+PiBv biB1dGlsaXphdGlvbi4gSXQgYWxzbyBpbmNsdWRlcyBhbiBpbnRlcmZhY2UgdW5kZXINCj4+IC9z eXMva2VybmVsL2RlYnVnL3RocF91dGlsaXphdGlvbi4NCj4+IA0KPj4gU2FtcGxlIE91dHB1dDoN Cj4+IA0KPj4gVXRpbGl6ZWRbMC01MF06IDEzMzEgNjgwODg0DQo+PiBVdGlsaXplZFs1MS0xMDFd OiA5IDM5ODMNCj4+IFV0aWxpemVkWzEwMi0xNTJdOiAzIDExODcNCj4+IFV0aWxpemVkWzE1My0y MDNdOiAwIDANCj4+IFV0aWxpemVkWzIwNC0yNTVdOiAyIDUzOQ0KPj4gVXRpbGl6ZWRbMjU2LTMw Nl06IDUgMTEzNQ0KPj4gVXRpbGl6ZWRbMzA3LTM1N106IDEgMTkyDQo+PiBVdGlsaXplZFszNTgt NDA4XTogMCAwDQo+PiBVdGlsaXplZFs0MDktNDU5XTogMSA1Nw0KPj4gVXRpbGl6ZWRbNDYwLTUx Ml06IDQwMCAxMw0KPj4gTGFzdCBTY2FuIFRpbWU6IDIyMy45OHMNCj4+IExhc3QgU2NhbiBEdXJh dGlvbjogNzAuNjVzDQo+PiANCj4+IFRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlcmUgYXJlIDEzMzEg VEhQcyB0aGF0IGhhdmUgYmV0d2VlbiAwIGFuZCA1MA0KPj4gdXRpbGl6ZWQgKG5vbiB6ZXJvKSBw YWdlcy4gSW4gdG90YWwgdGhlcmUgYXJlIDY4MDg4NCB6ZXJvIHBhZ2VzIGluDQo+PiB0aGlzIHV0 aWxpemF0aW9uIGJ1Y2tldC4gVEhQcyBpbiB0aGUgWzAtNTBdIGJ1Y2tldCBjb21wb3NlIDc2JSBv ZiB0b3RhbA0KPj4gVEhQcywgYW5kIGFyZSByZXNwb25zaWJsZSBmb3IgOTklIG9mIHRvdGFsIHpl cm8gcGFnZXMgYWNyb3NzIGFsbA0KPj4gVEhQcy4gSW4gb3RoZXIgd29yZHMsIHRoZSBsZWFzdCB1 dGlsaXplZCBUSFBzIGFyZSByZXNwb25zaWJsZSBmb3IgYWxtb3N0DQo+PiBhbGwgb2YgdGhlIG1l bW9yeSB3YXN0ZSB3aGVuIFRIUCBpcyBhbHdheXMgZW5hYmxlZC4gU2ltaWxhciByZXN1bHRzDQo+ PiBoYXZlIGJlZW4gb2JzZXJ2ZWQgYWNyb3NzIHByb2R1Y3Rpb24gd29ya2xvYWRzLg0KPj4gDQo+ PiBUaGUgbGFzdCB0d28gbGluZXMgaW5kaWNhdGUgdGhlIHRpbWVzdGFtcCBhbmQgZHVyYXRpb24g b2YgdGhlIG1vc3QgcmVjZW50DQo+PiBzY2FuIHRocm91Z2ggYWxsIG9mIHBoeXNpY2FsIG1lbW9y eS4gSGVyZSB3ZSBzZWUgdGhhdCB0aGUgbGFzdCBzY2FuDQo+PiBvY2N1cnJlZCAyMjMuOTggc2Vj b25kcyBhZnRlciBib290IHRpbWUgYW5kIHRvb2sgNzAuNjUgc2Vjb25kcy4NCj4+IA0KPj4gVXRp bGl6YXRpb24gb2YgYSBUSFAgaXMgZGVmaW5lZCBhcyB0aGUgcGVyY2VudGFnZSBvZiBub256ZXJv DQo+PiBwYWdlcyBpbiB0aGUgVEhQLiBUaGUgd29ya2VyIHRocmVhZCB3aWxsIHNjYW4gdGhyb3Vn aCBhbGwNCj4+IG9mIHBoeXNpY2FsIG1lbW9yeSBhbmQgb2J0YWluIHV0aWxpemF0aW9uIG9mIGFs bCBhbm9ueW1vdXMNCj4+IFRIUHMuIEl0IHdpbGwgZ2F0aGVyIHRoaXMgaW5mb3JtYXRpb24gYnkg cGVyaW9kaWNhbGx5IHNjYW5uaW5nDQo+PiB0aHJvdWdoIGFsbCBvZiBwaHlzaWNhbCBtZW1vcnkg Zm9yIGFub255bW91cyBUSFBzLCBncm91cCB0aGVtDQo+PiBpbnRvIGJ1Y2tldHMgYmFzZWQgb24g dXRpbGl6YXRpb24sIGFuZCByZXBvcnQgdXRpbGl6YXRpb24NCj4+IGluZm9ybWF0aW9uIHRocm91 Z2ggZGVidWdmcyB1bmRlciAvc3lzL2tlcm5lbC9kZWJ1Zy90aHBfdXRpbGl6YXRpb24uDQo+PiAN Cj4+IFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBaaHUgPGFsZXhsemh1QGZiLmNvbT4NCj4+IC0t LQ0KPj4gdjEgdG8gdjINCj4+IC1yZXZlcnNlZCBvcmRlcmluZyBvZiBpc190cmFuc3BhcmVudF9o dWdlcGFnZSBhbmQgUGFnZUFub24gaW4gaXNfYW5vbl90cmFuc3BhcmVudF9odWdlcGFnZSwgcGFn ZS0+bWFwcGluZyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIHVzZXIgcGFnZXMNCj4+IA0KPj4gUkZD IHRvIHYxDQo+PiAtUmVmYWN0b3JlZCBvdXQgdGhlIGNvZGUgdG8gb2J0YWluIHRoZSB0aHBfdXRp bGl6YXRpb25fYnVja2V0LCBhcyB0aGF0IG5vdyBoYXMgdG8gYmUgdXNlZCBpbiBtdWx0aXBsZSBw bGFjZXMuDQo+PiANCj4+IERvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdHJhbnNodWdlLnJz dCB8ICAgOSArDQo+PiBpbmNsdWRlL2xpbnV4L2h1Z2VfbW0uaCAgICAgICAgICAgICAgICAgICAg fCAgIDMgKw0KPj4gbW0vaHVnZV9tZW1vcnkuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MjAyICsrKysrKysrKysrKysrKysrKysrKw0KPiANCj4gUGxlYXNlLCBjb25zaWRlciBwdXR0aW5n IHRocF9zY2FuIGZ1bmN0aW9uYWxpdHkgaW50byBhIHNlcGFyYXRlIGZpbGUuDQo+IG1tL3RocF9z Y2FuLmMgb3Igc29tZXRoaW5nLg0KDQpJ4oCZbGwgY29uc2lkZXIgaXQuIERvIHlvdSB0aGluayB0 aGlzIGlzIG5lY2Vzc2FyeT8gSXQgaXMgaHVnZSBwYWdlIHJlbGF0ZWQsIGJ1dCBodWdlX21lbW9y eSBoYXMgYSBsb3Qgb2YgY29kZSBhbHJlYWR5LiANCj4gDQo+PiAzIGZpbGVzIGNoYW5nZWQsIDIx NCBpbnNlcnRpb25zKCspDQo+PiANCj4+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FkbWlu LWd1aWRlL21tL3RyYW5zaHVnZS5yc3QgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3Ry YW5zaHVnZS5yc3QNCj4+IGluZGV4IDhlZTc4ZWMyMzJlYi4uMjFkODYzMDNjOTdlIDEwMDY0NA0K Pj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS90cmFuc2h1Z2UucnN0DQo+PiAr KysgYi9Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL3RyYW5zaHVnZS5yc3QNCj4+IEBAIC0z MDQsNiArMzA0LDE1IEBAIFRvIGlkZW50aWZ5IHdoYXQgYXBwbGljYXRpb25zIGFyZSBtYXBwaW5n IGZpbGUgdHJhbnNwYXJlbnQgaHVnZSBwYWdlcywgaXQNCj4+IGlzIG5lY2Vzc2FyeSB0byByZWFk IGBgL3Byb2MvUElEL3NtYXBzYGAgYW5kIGNvdW50IHRoZSBGaWxlSHVnZU1hcHBlZCBmaWVsZHMN Cj4+IGZvciBlYWNoIG1hcHBpbmcuDQo+PiANCj4+ICtUaGUgdXRpbGl6YXRpb24gb2YgdHJhbnNw YXJlbnQgaHVnZXBhZ2VzIGNhbiBiZSB2aWV3ZWQgYnkgcmVhZGluZw0KPj4gK2BgL3N5cy9rZXJu ZWwvZGVidWcvdGhwX3V0aWxpemF0aW9uYGAuIFRoZSB1dGlsaXphdGlvbiBvZiBhIFRIUCBpcyBk ZWZpbmVkDQo+PiArYXMgdGhlIHJhdGlvIG9mIG5vbiB6ZXJvIGZpbGxlZCA0a2IgcGFnZXMgdG8g dGhlIHRvdGFsIG51bWJlciBvZiBwYWdlcyBpbiBhDQo+PiArVEhQLiBUaGUgYnVja2V0cyBhcmUg bGFiZWxsZWQgYnkgdGhlIHJhbmdlIG9mIHRvdGFsIHV0aWxpemVkIDRrYiBwYWdlcyB3aXRoDQo+ PiArb25lIGxpbmUgcGVyIHV0aWxpemF0aW9uIGJ1Y2tldC4gRWFjaCBsaW5lIGNvbnRhaW5zIHRo ZSB0b3RhbCBudW1iZXIgb2YNCj4+ICtUSFBzIGluIHRoYXQgYnVja2V0IGFuZCB0aGUgdG90YWwg bnVtYmVyIG9mIHplcm8gZmlsbGVkIDRrYiBwYWdlcyBzdW1tZWQNCj4+ICtvdmVyIGFsbCBUSFBz IGluIHRoYXQgYnVja2V0LiBUaGUgbGFzdCB0d28gbGluZXMgc2hvdyB0aGUgdGltZXN0YW1wIGFu ZA0KPj4gK2R1cmF0aW9uIHJlc3BlY3RpdmVseSBvZiB0aGUgbW9zdCByZWNlbnQgc2NhbiBvdmVy IGFsbCBvZiBwaHlzaWNhbCBtZW1vcnkuDQo+PiArDQo+IA0KPiBkZWJ1Z2ZzIGFzIGEgcHJpbWFy eSBpbnRlcmZhY2U/IExvb2tzIHdyb25nIHRvIG1lLg0KDQpXaGVyZSB3b3VsZCB5b3UgcmVjb21t ZW5kPyBXZSBoYWQgaW5pdGlhbGx5IHB1dCBpdCB1bmRlciAvcHJvYywgYW5kIHRoZW4gbW92ZWQg dG8gZGVidWdmcy4gDQoNCj4gDQo+PiBOb3RlIHRoYXQgcmVhZGluZyB0aGUgc21hcHMgZmlsZSBp cyBleHBlbnNpdmUgYW5kIHJlYWRpbmcgaXQNCj4+IGZyZXF1ZW50bHkgd2lsbCBpbmN1ciBvdmVy aGVhZC4NCj4+IA0KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaHVnZV9tbS5oIGIvaW5j bHVkZS9saW51eC9odWdlX21tLmgNCj4+IGluZGV4IGExMzQxZmRjZjY2Ni4uMTNhYzdiMmYyOWFl IDEwMDY0NA0KPj4gLS0tIGEvaW5jbHVkZS9saW51eC9odWdlX21tLmgNCj4+ICsrKyBiL2luY2x1 ZGUvbGludXgvaHVnZV9tbS5oDQo+PiBAQCAtMTc4LDYgKzE3OCw5IEBAIGJvb2wgaHVnZXBhZ2Vf dm1hX2NoZWNrKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHZtX2Zs YWdzLA0KPj4gdW5zaWduZWQgbG9uZyB0aHBfZ2V0X3VubWFwcGVkX2FyZWEoc3RydWN0IGZpbGUg KmZpbHAsIHVuc2lnbmVkIGxvbmcgYWRkciwNCj4+IAkJdW5zaWduZWQgbG9uZyBsZW4sIHVuc2ln bmVkIGxvbmcgcGdvZmYsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpOw0KPj4gDQo+PiAraW50IHRocF9u dW1iZXJfdXRpbGl6ZWRfcGFnZXMoc3RydWN0IHBhZ2UgKnBhZ2UpOw0KPj4gK2ludCB0aHBfdXRp bGl6YXRpb25fYnVja2V0KGludCBudW1fdXRpbGl6ZWRfcGFnZXMpOw0KPj4gKw0KPj4gdm9pZCBw cmVwX3RyYW5zaHVnZV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlKTsNCj4+IHZvaWQgZnJlZV90cmFu c2h1Z2VfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSk7DQo+PiANCj4+IGRpZmYgLS1naXQgYS9tbS9o dWdlX21lbW9yeS5jIGIvbW0vaHVnZV9tZW1vcnkuYw0KPj4gaW5kZXggMWNjNGE1ZjQ3OTFlLi4y OWU5N2RmMzdjMjkgMTAwNjQ0DQo+PiAtLS0gYS9tbS9odWdlX21lbW9yeS5jDQo+PiArKysgYi9t bS9odWdlX21lbW9yeS5jDQo+PiBAQCAtNDYsNiArNDYsMTYgQEANCj4+ICNkZWZpbmUgQ1JFQVRF X1RSQUNFX1BPSU5UUw0KPj4gI2luY2x1ZGUgPHRyYWNlL2V2ZW50cy90aHAuaD4NCj4+IA0KPj4g Ky8qDQo+PiArICogVGhlIG51bWJlciBvZiB1dGlsaXphdGlvbiBidWNrZXRzIFRIUHMgd2lsbCBi ZSBncm91cGVkIGluDQo+PiArICogdW5kZXIgL3N5cy9rZXJuZWwvZGVidWcvdGhwX3V0aWxpemF0 aW9uLg0KPj4gKyAqLw0KPj4gKyNkZWZpbmUgVEhQX1VUSUxfQlVDS0VUX05SIDEwDQo+PiArLyoN Cj4+ICsgKiBUaGUgbnVtYmVyIG9mIFBGTnMgKGFuZCBoZW5jZSBodWdlcGFnZXMpIHRvIHNjYW4g dGhyb3VnaCBvbiBlYWNoIHBlcmlvZGljDQo+IA0KPiBQRk5zIGhlcmUgaXMgbWlzbGVhZGluZy4g VGhleSB1c3VhbGx5IHJlZmVyIHRvIGJhc2UtcGFnZXNpemUgZnJhbXMuIEp1c3QNCj4gc2F5IGh1 Z2VwYWdlcy4NCg0KU291bmRzIGdvb2QuIA0KDQo+IA0KPj4gKyAqIHJ1biBvZiB0aGUgc2Nhbm5l ciB0aGF0IGdlbmVyYXRlcyAvc3lzL2tlcm5lbC9kZWJ1Zy90aHBfdXRpbGl6YXRpb24uDQo+PiAr ICovDQo+PiArI2RlZmluZSBUSFBfVVRJTF9TQ0FOX1NJWkUgMjU2DQo+PiAvKg0KPj4gICogQnkg ZGVmYXVsdCwgdHJhbnNwYXJlbnQgaHVnZXBhZ2Ugc3VwcG9ydCBpcyBkaXNhYmxlZCBpbiBvcmRl ciB0byBhdm9pZA0KPj4gICogcmlza2luZyBhbiBpbmNyZWFzZWQgbWVtb3J5IGZvb3RwcmludCBm b3IgYXBwbGljYXRpb25zIHRoYXQgYXJlIG5vdA0KPj4gQEAgLTcxLDYgKzgxLDI1IEBAIHN0YXRp YyBhdG9taWNfdCBodWdlX3plcm9fcmVmY291bnQ7DQo+PiBzdHJ1Y3QgcGFnZSAqaHVnZV96ZXJv X3BhZ2UgX19yZWFkX21vc3RseTsNCj4+IHVuc2lnbmVkIGxvbmcgaHVnZV96ZXJvX3BmbiBfX3Jl YWRfbW9zdGx5ID0gfjBVTDsNCj4+IA0KPj4gK3N0YXRpYyB2b2lkIHRocF91dGlsaXphdGlvbl93 b3JrZm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsNCj4+ICtzdGF0aWMgREVDTEFSRV9ERUxB WUVEX1dPUksodGhwX3V0aWxpemF0aW9uX3dvcmssIHRocF91dGlsaXphdGlvbl93b3JrZm4pOw0K Pj4gKw0KPj4gK3N0cnVjdCB0aHBfc2Nhbl9pbmZvX2J1Y2tldCB7DQo+PiArCWludCBucl90aHBz Ow0KPj4gKwlpbnQgbnJfemVyb19wYWdlczsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCB0aHBf c2Nhbl9pbmZvIHsNCj4+ICsJc3RydWN0IHRocF9zY2FuX2luZm9fYnVja2V0IGJ1Y2tldHNbVEhQ X1VUSUxfQlVDS0VUX05SXTsNCj4+ICsJc3RydWN0IHpvbmUgKnNjYW5fem9uZTsNCj4+ICsJc3Ry dWN0IHRpbWVzcGVjNjQgbGFzdF9zY2FuX2R1cmF0aW9uOw0KPj4gKwlzdHJ1Y3QgdGltZXNwZWM2 NCBsYXN0X3NjYW5fdGltZTsNCj4+ICsJdW5zaWduZWQgbG9uZyBwZm47DQo+PiArfTsNCj4+ICsN Cj4+ICtzdGF0aWMgc3RydWN0IHRocF9zY2FuX2luZm8gdGhwX3NjYW5fZGVidWdmczsNCj4+ICtz dGF0aWMgc3RydWN0IHRocF9zY2FuX2luZm8gdGhwX3NjYW47DQo+IA0KPiBBbnkgZXhwbGFuYXRp b24gd2h5IHRoZXJlIGFyZSB0d28gb2YgdGhlbT8gSXQgaXMgbm90IG9idmlvdXMgdG8gbWUuDQoN ClRoZSByZWFzb24gd2UgaGF2ZSB0d28gaXMgdGhhdCBvbmUgb2YgdGhlbSBpcyB1c2VkIGZvciBk ZWJ1Z2ZzIGlmIOKAmGNhdCAvc3lzL2tlcm5lbC9kZWJ1Zy90aHBfdXRpbGl6YXRpb27igJkgaXMg Y2FsbGVkLiANClRoZSBvdGhlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQg c2Nhbi4gDQo+IA0KPj4gKw0KPj4gYm9vbCBodWdlcGFnZV92bWFfY2hlY2soc3RydWN0IHZtX2Fy ZWFfc3RydWN0ICp2bWEsIHVuc2lnbmVkIGxvbmcgdm1fZmxhZ3MsDQo+PiAJCQlib29sIHNtYXBz LCBib29sIGluX3BmLCBib29sIGVuZm9yY2Vfc3lzZnMpDQo+PiB7DQo+PiBAQCAtNDg1LDYgKzUx NCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IGh1Z2VwYWdlX2luaXQodm9pZCkNCj4+IAlpZiAoZXJy KQ0KPj4gCQlnb3RvIGVycl9zbGFiOw0KPj4gDQo+PiArCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygm dGhwX3V0aWxpemF0aW9uX3dvcmssIEhaKTsNCj4+IAllcnIgPSByZWdpc3Rlcl9zaHJpbmtlcigm aHVnZV96ZXJvX3BhZ2Vfc2hyaW5rZXIsICJ0aHAtemVybyIpOw0KPj4gCWlmIChlcnIpDQo+PiAJ CWdvdG8gZXJyX2h6cF9zaHJpbmtlcjsNCj4+IEBAIC01OTksNiArNjI5LDExIEBAIHN0YXRpYyBp bmxpbmUgYm9vbCBpc190cmFuc3BhcmVudF9odWdlcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkNCj4+ IAkgICAgICAgcGFnZVsxXS5jb21wb3VuZF9kdG9yID09IFRSQU5TSFVHRV9QQUdFX0RUT1I7DQo+ PiB9DQo+PiANCj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgaXNfYW5vbl90cmFuc3BhcmVudF9odWdl cGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkNCj4+ICt7DQo+PiArCXJldHVybiBpc190cmFuc3BhcmVu dF9odWdlcGFnZShwYWdlKSAmJiBQYWdlQW5vbihwYWdlKTsNCj4+ICt9DQo+PiArDQo+PiBzdGF0 aWMgdW5zaWduZWQgbG9uZyBfX3RocF9nZXRfdW5tYXBwZWRfYXJlYShzdHJ1Y3QgZmlsZSAqZmls cCwNCj4+IAkJdW5zaWduZWQgbG9uZyBhZGRyLCB1bnNpZ25lZCBsb25nIGxlbiwNCj4+IAkJbG9m Zl90IG9mZiwgdW5zaWduZWQgbG9uZyBmbGFncywgdW5zaWduZWQgbG9uZyBzaXplKQ0KPj4gQEAg LTY0OSw2ICs2ODQsNDkgQEAgdW5zaWduZWQgbG9uZyB0aHBfZ2V0X3VubWFwcGVkX2FyZWEoc3Ry dWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGxvbmcgYWRkciwNCj4+IH0NCj4+IEVYUE9SVF9TWU1C T0xfR1BMKHRocF9nZXRfdW5tYXBwZWRfYXJlYSk7DQo+PiANCj4+ICtpbnQgdGhwX251bWJlcl91 dGlsaXplZF9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSkNCj4+ICt7DQo+PiArCXN0cnVjdCBmb2xp byAqZm9saW87DQo+PiArCXVuc2lnbmVkIGxvbmcgcGFnZV9vZmZzZXQsIHZhbHVlOw0KPj4gKwlp bnQgdGhwX25yX3V0aWxpemVkX3BhZ2VzID0gSFBBR0VfUE1EX05SOw0KPj4gKwlpbnQgc3RlcF9z aXplID0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpOw0KPj4gKwlib29sIGlzX2FsbF96ZXJvZXM7DQo+ PiArCXZvaWQgKmthZGRyOw0KPj4gKwlpbnQgaTsNCj4+ICsNCj4+ICsJaWYgKCFwYWdlIHx8ICFp c19hbm9uX3RyYW5zcGFyZW50X2h1Z2VwYWdlKHBhZ2UpKQ0KPj4gKwkJcmV0dXJuIC0xOw0KPj4g Kw0KPj4gKwlmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZSk7DQo+PiArCWZvciAoaSA9IDA7IGkgPCBm b2xpb19ucl9wYWdlcyhmb2xpbyk7IGkrKykgew0KPj4gKwkJa2FkZHIgPSBrbWFwX2xvY2FsX2Zv bGlvKGZvbGlvLCBpKTsNCj4+ICsJCWlzX2FsbF96ZXJvZXMgPSB0cnVlOw0KPj4gKwkJZm9yIChw YWdlX29mZnNldCA9IDA7IHBhZ2Vfb2Zmc2V0IDwgUEFHRV9TSVpFOyBwYWdlX29mZnNldCArPSBz dGVwX3NpemUpIHsNCj4+ICsJCQl2YWx1ZSA9ICoodW5zaWduZWQgbG9uZyAqKShrYWRkciArIHBh Z2Vfb2Zmc2V0KTsNCj4+ICsJCQlpZiAodmFsdWUgIT0gMCkgew0KPj4gKwkJCQlpc19hbGxfemVy b2VzID0gZmFsc2U7DQo+PiArCQkJCWJyZWFrOw0KPj4gKwkJCX0NCj4gDQo+IFVobW0uLiBtZW1j aHJfaW52KCk/DQoNCkkgaGFkIGNvbnNpZGVyZWQgdGhhdCBhdCB0aGUgdGltZSBidXQgbWVtY2hy X2ludigpIHVzZWQgaGVyZSB3b3VsZCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIGZpcnN0IG5v bnplcm8gYnl0ZS4gDQpIZXJlIHdlIGFyZSB0cnlpbmcgdG8gZmluZCB0aGUgdXRpbGl6YXRpb24g cGVyY2VudGFnZSBvZiB0aGUgVEhQLiBJIGRvIG5vdCBiZWxpZXZlIG1lbWNocl9pbnYoKSB3b3Vs ZCBiZSBsZXNzIGNvZGUNCmFzIGNvbXBhcmVkIHdoYXQgd2UgZG8gaGVyZS4gDQo+IA0KPj4gKwkJ fQ0KPj4gKwkJaWYgKGlzX2FsbF96ZXJvZXMpDQo+PiArCQkJdGhwX25yX3V0aWxpemVkX3BhZ2Vz LS07DQo+PiArDQo+PiArCQlrdW5tYXBfbG9jYWwoa2FkZHIpOw0KPj4gKwl9DQo+PiArCXJldHVy biB0aHBfbnJfdXRpbGl6ZWRfcGFnZXM7DQo+PiArfQ0KPj4gKw0KPj4gK2ludCB0aHBfdXRpbGl6 YXRpb25fYnVja2V0KGludCBudW1fdXRpbGl6ZWRfcGFnZXMpDQo+PiArew0KPj4gKwlpbnQgYnVj a2V0Ow0KPj4gKw0KPj4gKwlpZiAobnVtX3V0aWxpemVkX3BhZ2VzIDwgMCB8fCBudW1fdXRpbGl6 ZWRfcGFnZXMgPiBIUEFHRV9QTURfTlIpDQo+IA0KPiBTaG91bGRuJ3QgaXQgYmUgV0FSTigpIG9y IHNvbWV0aGluZz8NCj4gDQo+PiArCQlyZXR1cm4gLTE7DQo+IA0KPiA8bmV3bGluZT4NCj4gDQo+ PiArCS8qIEdyb3VwIFRIUHMgaW50byB1dGlsaXphdGlvbiBidWNrZXRzICovDQo+PiArCWJ1Y2tl dCA9IG51bV91dGlsaXplZF9wYWdlcyAqIFRIUF9VVElMX0JVQ0tFVF9OUiAvIEhQQUdFX1BNRF9O UjsNCj4+ICsJcmV0dXJuIG1pbihidWNrZXQsIFRIUF9VVElMX0JVQ0tFVF9OUiAtIDEpOw0KPj4g K30NCj4+ICsNCj4+IHN0YXRpYyB2bV9mYXVsdF90IF9fZG9faHVnZV9wbWRfYW5vbnltb3VzX3Bh Z2Uoc3RydWN0IHZtX2ZhdWx0ICp2bWYsDQo+PiAJCQlzdHJ1Y3QgcGFnZSAqcGFnZSwgZ2ZwX3Qg Z2ZwKQ0KPj4gew0KPj4gQEAgLTMxNzQsNiArMzI1Miw0MiBAQCBzdGF0aWMgaW50IF9faW5pdCBz cGxpdF9odWdlX3BhZ2VzX2RlYnVnZnModm9pZCkNCj4+IAlyZXR1cm4gMDsNCj4+IH0NCj4+IGxh dGVfaW5pdGNhbGwoc3BsaXRfaHVnZV9wYWdlc19kZWJ1Z2ZzKTsNCj4+ICsNCj4+ICtzdGF0aWMg aW50IHRocF91dGlsaXphdGlvbl9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxZiwgdm9pZCAqcG9z KQ0KPj4gK3sNCj4+ICsJaW50IGk7DQo+PiArCWludCBzdGFydDsNCj4+ICsJaW50IGVuZDsNCj4+ ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IFRIUF9VVElMX0JVQ0tFVF9OUjsgaSsrKSB7DQo+PiAr CQlzdGFydCA9IGkgKiBIUEFHRV9QTURfTlIgLyBUSFBfVVRJTF9CVUNLRVRfTlI7DQo+PiArCQll bmQgPSAoaSArIDEgPT0gVEhQX1VUSUxfQlVDS0VUX05SKQ0KPj4gKwkJCSAgID8gSFBBR0VfUE1E X05SDQo+PiArCQkJICAgOiAoKGkgKyAxKSAqIEhQQUdFX1BNRF9OUiAvIFRIUF9VVElMX0JVQ0tF VF9OUiAtIDEpOw0KPj4gKwkJLyogVGhlIGxhc3QgYnVja2V0IHdpbGwgbmVlZCB0byBjb250YWlu IDEwMCAqLw0KPj4gKwkJc2VxX3ByaW50ZihzZXFmLCAiVXRpbGl6ZWRbJWQtJWRdOiAlZCAlZFxu Iiwgc3RhcnQsIGVuZCwNCj4+ICsJCQkgICB0aHBfc2Nhbl9kZWJ1Z2ZzLmJ1Y2tldHNbaV0ubnJf dGhwcywNCj4+ICsJCQkgICB0aHBfc2Nhbl9kZWJ1Z2ZzLmJ1Y2tldHNbaV0ubnJfemVyb19wYWdl cyk7DQo+PiArCX0NCj4gDQo+IDxuZXdsaW5lPiwgYWdhaW4uIEhlcmUgYW5kIGluIG1hbnkgcGxh Y2VzIGJlbG93LiBTZXJpb3VzbHksIHRoZXkgYXJlDQo+IGNoZWFwLiA6UA0KPiANCj4+ICsJc2Vx X3ByaW50ZihzZXFmLCAiTGFzdCBTY2FuIFRpbWU6ICVsdS4lMDJsdXNcbiIsDQo+PiArCQkgICAo dW5zaWduZWQgbG9uZyl0aHBfc2Nhbl9kZWJ1Z2ZzLmxhc3Rfc2Nhbl90aW1lLnR2X3NlYywNCj4+ ICsJCSAgICh0aHBfc2Nhbl9kZWJ1Z2ZzLmxhc3Rfc2Nhbl90aW1lLnR2X25zZWMgLyAoTlNFQ19Q RVJfU0VDIC8gMTAwKSkpOw0KPj4gKw0KPj4gKwlzZXFfcHJpbnRmKHNlcWYsICJMYXN0IFNjYW4g RHVyYXRpb246ICVsdS4lMDJsdXNcbiIsDQo+PiArCQkgICAodW5zaWduZWQgbG9uZyl0aHBfc2Nh bl9kZWJ1Z2ZzLmxhc3Rfc2Nhbl9kdXJhdGlvbi50dl9zZWMsDQo+PiArCQkgICAodGhwX3NjYW5f ZGVidWdmcy5sYXN0X3NjYW5fZHVyYXRpb24udHZfbnNlYyAvIChOU0VDX1BFUl9TRUMgLyAxMDAp KSk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICtERUZJTkVfU0hPV19BVFRSSUJV VEUodGhwX3V0aWxpemF0aW9uKTsNCj4+ICsNCj4+ICtzdGF0aWMgaW50IF9faW5pdCB0aHBfdXRp bGl6YXRpb25fZGVidWdmcyh2b2lkKQ0KPj4gK3sNCj4+ICsJZGVidWdmc19jcmVhdGVfZmlsZSgi dGhwX3V0aWxpemF0aW9uIiwgMDIwMCwgTlVMTCwgTlVMTCwNCj4+ICsJCQkgICAgJnRocF91dGls aXphdGlvbl9mb3BzKTsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gK2xhdGVfaW5pdGNhbGwo dGhwX3V0aWxpemF0aW9uX2RlYnVnZnMpOw0KPj4gI2VuZGlmDQo+PiANCj4+ICNpZmRlZiBDT05G SUdfQVJDSF9FTkFCTEVfVEhQX01JR1JBVElPTg0KPj4gQEAgLTMyNjksMyArMzM4Myw5MSBAQCB2 b2lkIHJlbW92ZV9taWdyYXRpb25fcG1kKHN0cnVjdCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZt dywgc3RydWN0IHBhZ2UgKm5ldykNCj4+IAl0cmFjZV9yZW1vdmVfbWlncmF0aW9uX3BtZChhZGRy ZXNzLCBwbWRfdmFsKHBtZGUpKTsNCj4+IH0NCj4+ICNlbmRpZg0KPj4gKw0KPj4gK3N0YXRpYyB2 b2lkIHRocF9zY2FuX25leHRfem9uZSh2b2lkKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHRpbWVzcGVj NjQgY3VycmVudF90aW1lOw0KPj4gKwlpbnQgaTsNCj4+ICsJYm9vbCB1cGRhdGVfZGVidWdmczsN Cj4+ICsJLyoNCj4+ICsJICogVEhQIHV0aWxpemF0aW9uIHdvcmtlciB0aHJlYWQgaGFzIHJlYWNo ZWQgdGhlIGVuZA0KPj4gKwkgKiBvZiB0aGUgbWVtb3J5IHpvbmUuIFByb2NlZWQgdG8gdGhlIG5l eHQgem9uZS4NCj4+ICsJICovDQo+PiArCXRocF9zY2FuLnNjYW5fem9uZSA9IG5leHRfem9uZSh0 aHBfc2Nhbi5zY2FuX3pvbmUpOw0KPj4gKwl1cGRhdGVfZGVidWdmcyA9ICF0aHBfc2Nhbi5zY2Fu X3pvbmU7DQo+PiArCXRocF9zY2FuLnNjYW5fem9uZSA9IHVwZGF0ZV9kZWJ1Z2ZzID8gKGZpcnN0 X29ubGluZV9wZ2RhdCgpKS0+bm9kZV96b25lcw0KPj4gKwkJCTogdGhwX3NjYW4uc2Nhbl96b25l Ow0KPiANCj4gSSBkb24ndCBmb2xsb3cgd2hhdCBpcyBnb2luZyBvbi4gdGhwX3NjYW4gdnMgdGhw X3NjYW5fZGVidWdmcyBsb29rcw0KPiBjb25mdXNpbmcuDQo+IA0KPj4gKwl0aHBfc2Nhbi5wZm4g PSAodGhwX3NjYW4uc2Nhbl96b25lLT56b25lX3N0YXJ0X3BmbiArIEhQQUdFX1BNRF9OUiAtIDEp DQo+PiArCQkJJiB+KEhQQUdFX1BNRF9TSVpFIC0gMSk7DQo+PiArCWlmICghdXBkYXRlX2RlYnVn ZnMpDQo+PiArCQlyZXR1cm47DQo+PiArCS8qDQo+PiArCSAqIElmIHRoZSB3b3JrZXIgaGFzIHNj YW5uZWQgdGhyb3VnaCBhbGwgb2YgcGh5c2ljYWwNCj4+ICsJICogbWVtb3J5LiBUaGVuIHVwZGF0 ZSBpbmZvcm1hdGlvbiBkaXNwbGF5ZWQgaW4gL3N5cy9rZXJuZWwvZGVidWcvdGhwX3V0aWxpemF0 aW9uDQo+PiArCSAqLw0KPj4gKwlrdGltZV9nZXRfdHM2NCgmY3VycmVudF90aW1lKTsNCj4+ICsJ dGhwX3NjYW5fZGVidWdmcy5sYXN0X3NjYW5fZHVyYXRpb24gPSB0aW1lc3BlYzY0X3N1YihjdXJy ZW50X3RpbWUsDQo+PiArCQkJCQkJCSAgICAgdGhwX3NjYW5fZGVidWdmcy5sYXN0X3NjYW5fdGlt ZSk7DQo+PiArCXRocF9zY2FuX2RlYnVnZnMubGFzdF9zY2FuX3RpbWUgPSBjdXJyZW50X3RpbWU7 DQo+PiArDQo+PiArCWZvciAoaSA9IDA7IGkgPCBUSFBfVVRJTF9CVUNLRVRfTlI7IGkrKykgew0K Pj4gKwkJdGhwX3NjYW5fZGVidWdmcy5idWNrZXRzW2ldLm5yX3RocHMgPSB0aHBfc2Nhbi5idWNr ZXRzW2ldLm5yX3RocHM7DQo+PiArCQl0aHBfc2Nhbl9kZWJ1Z2ZzLmJ1Y2tldHNbaV0ubnJfemVy b19wYWdlcyA9IHRocF9zY2FuLmJ1Y2tldHNbaV0ubnJfemVyb19wYWdlczsNCj4+ICsJCXRocF9z Y2FuLmJ1Y2tldHNbaV0ubnJfdGhwcyA9IDA7DQo+PiArCQl0aHBfc2Nhbi5idWNrZXRzW2ldLm5y X3plcm9fcGFnZXMgPSAwOw0KPj4gKwl9DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHRo cF91dGlsX3NjYW4odW5zaWduZWQgbG9uZyBwZm5fZW5kKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHBh Z2UgKnBhZ2UgPSBOVUxMOw0KPj4gKwlpbnQgYnVja2V0LCBudW1fdXRpbGl6ZWRfcGFnZXMsIGN1 cnJlbnRfcGZuOw0KPj4gKwlpbnQgaTsNCj4+ICsJLyoNCj4+ICsJICogU2NhbiB0aHJvdWdoIGVh Y2ggbWVtb3J5IHpvbmUgaW4gY2h1bmtzIG9mIFRIUF9VVElMX1NDQU5fU0laRQ0KPj4gKwkgKiBQ Rk5zIGV2ZXJ5IHNlY29uZCBsb29raW5nIGZvciBhbm9ueW1vdXMgVEhQcy4NCj4+ICsJICovDQo+ PiArCWZvciAoaSA9IDA7IGkgPCBUSFBfVVRJTF9TQ0FOX1NJWkU7IGkrKykgew0KPj4gKwkJY3Vy cmVudF9wZm4gPSB0aHBfc2Nhbi5wZm47DQo+PiArCQl0aHBfc2Nhbi5wZm4gKz0gSFBBR0VfUE1E X05SOw0KPj4gKwkJaWYgKGN1cnJlbnRfcGZuID49IHBmbl9lbmQpDQo+PiArCQkJcmV0dXJuOw0K Pj4gKw0KPj4gKwkJaWYgKCFwZm5fdmFsaWQoY3VycmVudF9wZm4pKQ0KPj4gKwkJCWNvbnRpbnVl Ow0KPj4gKw0KPj4gKwkJcGFnZSA9IHBmbl90b19wYWdlKGN1cnJlbnRfcGZuKTsNCj4gDQo+IHBm bl92YWxpZCgpICsgcGZuX3RvX3BhZ2UoKSBoYXMgdG8gYmUgcmVwbGFjZWQgdG8gcGZuX3RvX29u bGluZV9wYWdlKCkuDQoNCkFoIGsgdGhhbmtzLiANCj4gDQo+PiArCQludW1fdXRpbGl6ZWRfcGFn ZXMgPSB0aHBfbnVtYmVyX3V0aWxpemVkX3BhZ2VzKHBhZ2UpOw0KPj4gKwkJYnVja2V0ID0gdGhw X3V0aWxpemF0aW9uX2J1Y2tldChudW1fdXRpbGl6ZWRfcGFnZXMpOw0KPj4gKwkJaWYgKGJ1Y2tl dCA8IDApDQo+PiArCQkJY29udGludWU7DQo+PiArDQo+PiArCQl0aHBfc2Nhbi5idWNrZXRzW2J1 Y2tldF0ubnJfdGhwcysrOw0KPj4gKwkJdGhwX3NjYW4uYnVja2V0c1tidWNrZXRdLm5yX3plcm9f cGFnZXMgKz0gKEhQQUdFX1BNRF9OUiAtIG51bV91dGlsaXplZF9wYWdlcyk7DQo+PiArCX0NCj4+ ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgdGhwX3V0aWxpemF0aW9uX3dvcmtmbihzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspDQo+PiArew0KPj4gKwl1bnNpZ25lZCBsb25nIHBmbl9lbmQ7DQo+ PiArDQo+PiArCWlmICghdGhwX3NjYW4uc2Nhbl96b25lKQ0KPj4gKwkJdGhwX3NjYW4uc2Nhbl96 b25lID0gKGZpcnN0X29ubGluZV9wZ2RhdCgpKS0+bm9kZV96b25lczsNCj4+ICsJLyoNCj4+ICsJ ICogV29ya2VyIGZ1bmN0aW9uIHRoYXQgc2NhbnMgdGhyb3VnaCBhbGwgb2YgcGh5c2ljYWwgbWVt b3J5DQo+PiArCSAqIGZvciBhbm9ueW1vdXMgVEhQcy4NCj4+ICsJICovDQo+PiArCXBmbl9lbmQg PSAodGhwX3NjYW4uc2Nhbl96b25lLT56b25lX3N0YXJ0X3BmbiArDQo+PiArCQkJdGhwX3NjYW4u c2Nhbl96b25lLT5zcGFubmVkX3BhZ2VzICsgSFBBR0VfUE1EX05SIC0gMSkNCj4+ICsJCQkmIH4o SFBBR0VfUE1EX1NJWkUgLSAxKTsNCj4+ICsJLyogSWYgd2UgaGF2ZSByZWFjaGVkIHRoZSBlbmQg b2YgdGhlIHpvbmUgb3IgZW5kIG9mIHBoeXNpY2FsIG1lbW9yeQ0KPj4gKwkgKiBtb3ZlIG9uIHRv IHRoZSBuZXh0IHpvbmUuIE90aGVyd2lzZSwgc2NhbiB0aGUgbmV4dCBQRk5zIGluIHRoZQ0KPj4g KwkgKiBjdXJyZW50IHpvbmUuDQo+PiArCSAqLw0KPj4gKwlpZiAoIXBvcHVsYXRlZF96b25lKHRo cF9zY2FuLnNjYW5fem9uZSkgfHwgdGhwX3NjYW4ucGZuID49IHBmbl9lbmQpDQo+PiArCQl0aHBf c2Nhbl9uZXh0X3pvbmUoKTsNCj4+ICsJZWxzZQ0KPj4gKwkJdGhwX3V0aWxfc2NhbihwZm5fZW5k KTsNCj4+ICsNCj4+ICsJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZ0aHBfdXRpbGl6YXRpb25fd29y aywgSFopOw0KPiANCj4gV2h5IEhaPw0KDQpTY2FubmluZyAyNTYgUEZOcyBwZXIgc2Vjb25kIGlz IGp1c3Qgd2hhdCB3ZSBoYXZlIGZvdW5kIHRvIG5vdCBoYXZlIGFueSBub3RpY2VhYmxlIGVmZmVj dCBvbiBvdXIgaG9zdHMuIA0KPiANCj4+ICt9DQo+PiAtLSANCj4+IDIuMzAuMg0KPj4gDQo+PiAN Cj4gDQo+IC0tIA0KPiAgS2lyeWwgU2h1dHNlbWF1IC8gS2lyaWxsIEEuIFNodXRlbW92DQoNCg==