From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F286817C; Mon, 6 Jan 2025 06:58:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=210.61.82.184 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736146695; cv=fail; b=SFF2yFiqnObbE75cjd1mpIwUixgs+U/Op3iS2aDIc7vZu4l8Qwd91XPeiOQJQWSIwfibxs/rzuE708TAOJfEeOjYTIQnaWUFmcQDkJwxbcYm/ZCI49okvTOkaaAJZufydYgepemErXO1fbnE1mOVZ5dDyBbemTnyrBztXU1gcMU= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736146695; c=relaxed/simple; bh=OHnaqbWtPVoaY5yfE+5XTPKfEt4CEExnbrzGiQWk6Y8=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=T3JJQQE2cX1uTKxWmzzLKtX34rhc11C+F39ddraVBW7h5tO3J/pT7QgvyqSHwF/HgttwUl3v1kHzUbKNWou/WXNyLf9TmSbxlrlWxV6Km9QvCeVdAAMiKWYAfbBKLlG79IO4DmkD0xQpY4v3KCC9UVCQnZL3UEyTanVU1fOT3rQ= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=mediatek.com; spf=pass smtp.mailfrom=mediatek.com; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b=Ke1F5Q12; dkim=pass (1024-bit key) header.d=mediateko365.onmicrosoft.com header.i=@mediateko365.onmicrosoft.com header.b=k0183+ih; arc=fail smtp.client-ip=210.61.82.184 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=mediatek.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mediatek.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="Ke1F5Q12"; dkim=pass (1024-bit key) header.d=mediateko365.onmicrosoft.com header.i=@mediateko365.onmicrosoft.com header.b="k0183+ih" X-UUID: 94bffa84cbfb11efbd192953cf12861f-20250106 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=OHnaqbWtPVoaY5yfE+5XTPKfEt4CEExnbrzGiQWk6Y8=; b=Ke1F5Q125g+ucOpTBSXwq0QUVxglY5jdGepFlu8lCB1IRzWL3uOUpAfgCBGLOPMIaRFkc7clPccV6AhCfB8rRwtQ391Ki4G5eO4u9S2KdjXGlBfMJoFg7yow70KVMH69X4R/Ld6Q4at0/TjGllLErK+utfSg1Zw+rohVieRS7mI=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.46,REQID:bfa6307e-cf4b-412a-b38b-f818bbe75976,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:60aa074,CLOUDID:0f0c6c37-e11c-4c1a-89f7-e7a032832c40,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:80|81|82|83|102,TC:nil,Content:0|50, EDM:-3,IP:nil,URL:11|1,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0 ,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_ULN X-UUID: 94bffa84cbfb11efbd192953cf12861f-20250106 Received: from mtkmbs09n2.mediatek.inc [(172.21.101.94)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 668599016; Mon, 06 Jan 2025 14:58:06 +0800 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Mon, 6 Jan 2025 14:58:06 +0800 Received: from APC01-PSA-obe.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Mon, 6 Jan 2025 14:58:05 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TGrs2sa3L6tfUiFsmmiP3cfhI/pIYbQc/KUq3y5KpbsIe5Eq1bVwYQ6iRbQqqnFGKQd9AmAJX/l85pE5M+tInNEOqdEe359tiK4Xs9L5ymTjeIOUXN6fB7dAe5fPyaHEQ9QCbVOKEbmZVdI8bBddG7hjZIO4vt6h5VVtwA4M8GwSjx1HUiopBVX4A5jthNnqpVwLopV+1vHnFN6gYC4tZ8w9wxQaIUNLn63G4IKbESpf0lPV8kC04yI4yfjcNQGwa7OiYOw1xGnWM7dL5nrvKQyHdO38HHOvaPZSPuEETb076SUOr9iaJPUPxt3eci7yBhxrDt0WRfN35s7XflyWhA== 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=OHnaqbWtPVoaY5yfE+5XTPKfEt4CEExnbrzGiQWk6Y8=; b=QBdrqsE4ZvL9HX0QQn600Ep0TQb3//EwtNHmq/W3vpHLQUpxN/1zKrCvG/2dE5gxDsOEtJSF4PxnKgWNiAXAFL4GMLxTIpAm+p8I+Zwubi3TptXX3TVa+KHcJ1V/Yc44V3wtab7aEXpK8n7XYHCABLF/W4zXIJkCw+hpyxKinlOQh+1MHmtPlBBlw6OraBf8oo/w4XAZXq6QONcW41lN9QMiN443zsVE5pmTDkc2lFCylbjD3GjM/3kAcwGk14k4TdMg/Kx1NoxefCGByY5QaLq0X+JJWQBGmii7klAagXQJDi19l2RLl0Y4/E1x1ty1U9380tTP7hI6tiJzCwxdiQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OHnaqbWtPVoaY5yfE+5XTPKfEt4CEExnbrzGiQWk6Y8=; b=k0183+ihzPnYGKCR2QZKnpEvIpLJ22+803AgKNs17rqOeSzxuOEbSCg/tfZ9RIhmAPQdqqBsWOvRqHgIoHuoOOynC2NJQ4v49LEjP0DgwPzwXnvQ3oDApr7Vn7P4r0MdhauDUfkdK6ILAVzoqyRb50iMjt0nQYpEfF5fqkGbAlk= Received: from OSQPR03MB8697.apcprd03.prod.outlook.com (2603:1096:604:292::8) by SI2PR03MB6520.apcprd03.prod.outlook.com (2603:1096:4:1bf::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8314.16; Mon, 6 Jan 2025 06:58:02 +0000 Received: from OSQPR03MB8697.apcprd03.prod.outlook.com ([fe80::133a:a06f:d11e:2c6d]) by OSQPR03MB8697.apcprd03.prod.outlook.com ([fe80::133a:a06f:d11e:2c6d%4]) with mapi id 15.20.8314.015; Mon, 6 Jan 2025 06:58:02 +0000 From: =?utf-8?B?WXVuZmVpIERvbmcgKOiRo+S6kemjnik=?= To: "sebastian.fricke@collabora.com" CC: "linux-kernel@vger.kernel.org" , "linux-mediatek@lists.infradead.org" , "frkoenig@chromium.org" , "stevecho@chromium.org" , "nhebert@chromium.org" , "linux-media@vger.kernel.org" , "devicetree@vger.kernel.org" , "nicolas.dufresne@collabora.com" , "daniel.almeida@collabora.com" , "daniel@ffwll.ch" , Project_Global_Chrome_Upstream_Group , "benjamin.gaignard@collabora.com" , "hverkuil-cisco@xs4all.nl" , "linux-arm-kernel@lists.infradead.org" , "hsinyi@chromium.org" , AngeloGioacchino Del Regno , Nicolas Prado Subject: Re: [PATCH v6 2/3] media: mediatek: vcodec: support extended h264 decode Thread-Topic: [PATCH v6 2/3] media: mediatek: vcodec: support extended h264 decode Thread-Index: AQHbN9YXVSA/mgshXkmE7bOIUpM8wbLhLkIAgChywAA= Date: Mon, 6 Jan 2025 06:58:01 +0000 Message-ID: References: <20241116031616.15656-1-yunfei.dong@mediatek.com> <20241116031616.15656-3-yunfei.dong@mediatek.com> <20241211131702.sfen7wva4qk4ks7n@basti-XPS-13-9310> In-Reply-To: <20241211131702.sfen7wva4qk4ks7n@basti-XPS-13-9310> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OSQPR03MB8697:EE_|SI2PR03MB6520:EE_ x-ms-office365-filtering-correlation-id: acf33ed3-4e54-4dfb-306e-08dd2e1f7656 x-ld-processed: a7687ede-7a6b-4ef6-bace-642f677fbe31,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|366016|376014|7416014|1800799024|7055299003|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?N0ZHWE1kam5vK0FGVnl2Vnc5Vm1lSjd2bUFQT01Wc0FWMDhQVG4zclJkaDhU?= =?utf-8?B?czEya1kwNGdPbkNIdk44UHB4UndrckV2VXlLeVowbFdZSDIwcTkwTDJiQ2wv?= =?utf-8?B?RkZDcDUvMGJrbnYyYXZpQzdGdnltWnJ5cUVHZ3BYVGFXQWJEREo5VnAwNTc3?= =?utf-8?B?Z0h6MHRvdzBBb3daU0FTbDlEaW1ySXJoalJCMWU4emg5U3JhaGM2Ujh3Tlhn?= =?utf-8?B?ZzdqNkQvcFZrQ25TRjkrWTFaQmhSUm9Ha29rOWlHOFZ6VHJTMHN0QVhmK1hI?= =?utf-8?B?ZlJoYlBmdkdUdkxreXlnSmpkRCtXSDVrbWFZV1ZRZ0VCYkpzUEwrem9LdC9F?= =?utf-8?B?OU9SVzBsNEtJR1NlR2VWK3llM2FkZDlnVUw1czVaZmdZQ3puSE1EMk1oNWp1?= =?utf-8?B?enNINmVvWCtXNTdkSEVYTkNmaG5rN3FWRlgxcU5nYzV1Yk5WNjA4Ym5XeDdO?= =?utf-8?B?Rnk2d0c3aUVwY3hSdTN3QWppNU9xKzVWbXJ1S3A3ano2K3E4YXYxZHFncDhO?= =?utf-8?B?SUdhQ3oyU2VRM3NBeTJZOEE1bVJTLzBrWE1wVnpRRGl4eXo4TUowV1BHNCtT?= =?utf-8?B?bUZKYjNoR2p1cU8yKzVNNlhKRWR1b2hSOFkzcVprWm85dnE1NFNGYW5PakEr?= =?utf-8?B?Z01XcStIRlNoYXQvUjRHM09GNXFaZXVhZUJncGx5QU5uRXRNK0wxZ1ZNdWpN?= =?utf-8?B?d2lXYkw5MG1EQ1hrMjlJWVFVZ2FxaHdadjBSekYxWkw2eE0zMVJJejBUckd6?= =?utf-8?B?Q2ZKdzQvQ3BFQnJZS1pvOHYrQ3pTZUovUzkzbDMvTDBQYmdvQWM1bDRiMG1o?= =?utf-8?B?cUd3MEhkWlk4S1RFeVBNWmRCcGtCQkQyK0owd2NaODdkVitHTlhlSXV5VTdw?= =?utf-8?B?ZDJmL1l6c29BZGlxenJkVjMyNVIwSUVUb1U3RUV0Q2h2M0pZemtGOUtvNHlY?= =?utf-8?B?UXY5OTAwTFRIWkhnUlAvY2hQdjB4Y1UxRzFFTTBZdWxTcG1wdFEvRTV2SUR2?= =?utf-8?B?Y1V3L1MzaEROUnFGQXBYUUx0SVhaRXFPSk1DVW1xTmlyTGdRODM2WFcyK2lR?= =?utf-8?B?bDVuaURPMTJGOUxBQnhkYVIxTkFGeFhnYjcvQ2R1cERMRmZLUDJYRzhTMElU?= =?utf-8?B?QXR0L1dSNFYxOXZ0aUM5Q1A4SFpoM05zMHdIaXFwTDlQZkN1enQ4bEZpcnkx?= =?utf-8?B?MjBaMVk0YVl4WFJRMmdkVFZRWndwRWRXaGRzY2pRQjFBUExNVjNIZ3c2UVh3?= =?utf-8?B?b3RBVUVZVGxFT1k3MFFYK0M3NndUSm9xenpKVUx6TUl2ZVN5U1ltWWVOdCsv?= =?utf-8?B?TitjOXRyKzlBNXhZbjZBamVUbW1wSDJ5VTBaM1h2NWZkOXBrQjhGaE94NVFD?= =?utf-8?B?cHM0a1kzZTVXdmdhUE56K241U1VhMUFlQlNyTGRoUndqSjBsd2JvbGluWUFj?= =?utf-8?B?OHNaTEdaS1Z4dldIWnZGUHdjR3hrcTRHUXV0aEk5WVpXRGdFRVlRTFI3TU5m?= =?utf-8?B?ZlBrTWNDMkdqMHBjYXNNVjNpMCtZTmlaakk5ak5ndTUvUmN2OGF5R0VRR0Jt?= =?utf-8?B?bW8zcTE4OW1yQnNCWVgwQngvdUxTYWh0UXJWaXltVElWSnIwOEUxSko4V3Ri?= =?utf-8?B?ZGhPc01uNEQ3U3F1bVlOMUk4OGlWSmlxYzJibVVDLzZoTStxaVRmWmk4Y3pi?= =?utf-8?B?ZlFHNFNzRGY3ZDFvenhCY2NtcTNHdmdlRnVuU0xJNFVySnI4UC83ZUhMUkgz?= =?utf-8?B?bzZJTTlDUXhCT0VoZEM4TDRXRlJXd3lBVVlRTXBLYWVsSCsrZWZ4S0JRbkpa?= =?utf-8?B?eGF6c1JVK1dFbUVNQzl4SDhIYVdvWjFaSXhVczc1VDlDZURjb2JiMWVHVkJP?= =?utf-8?B?QjU1ZzJYM0ovZnlXMndXd1JpaFdRSnJSK0Q4UUFwdEZhR3RxRm91UXY3bHBa?= =?utf-8?B?SWl3WEs4MjZWK0tBdDFsWmNhQ0dFK0xBRWhGUlpUdVMwWFpua3ZGaTFjWjkv?= =?utf-8?B?T2l0ZUZIS1ZBPT0=?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OSQPR03MB8697.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(7416014)(1800799024)(7055299003)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SmtzWEttd0VnSk5WY1ViOHNKRkM5TVhSalZ3eENFbmFyNXZwWlVFM2ZsL2Qy?= =?utf-8?B?ejR2dGorenN6ZE91QTR0OTVTWHd2S2ZlQlcyVzkrcDYyUDJuS3AzcUR4K2F6?= =?utf-8?B?eDZZMEFoaEZWL1I0UDV4RmlFdHROQTYrRkFHMXkxOFBVQWpNZFpEWHdYRGVz?= =?utf-8?B?NVNvWjVvRVpuZ1hnR2lLcDhUWThTd3N4bW8zY2RnRDhreDM0M2wwbEpFSWVP?= =?utf-8?B?U3o1Z296T3B5dVJvdHFKekxyZWJHTE01SFFSQTkxUmdxS3BGZDNBbE9vVE1a?= =?utf-8?B?cUpITEp1Tkc4eHVtNy96MVlaRkZxdXlPRjdJVHZGN1ZuRU0rY3A5Wk1uNjlv?= =?utf-8?B?STgrVlIzT2JGRVRsM1dtamY2ZkZyNnFLdklINkVraCt4YTVmb3c1NUhLUXNr?= =?utf-8?B?SmhBYVBXS2dmQnRWZWo3N1BBM1kxZWZFdUE3c3BsVWlBekVTYXFSOUIrWHpH?= =?utf-8?B?ZDhqa1llMFFSQ3EzMmV6MFdKZzhFNmdZT3BaTm15enI2bnorUGJSbmt0VE5J?= =?utf-8?B?WjI1ZGFUWi9Odi9QKzhZc0NsbCtlbnAwVXNlb3FZMmdSSkpOSndycW43T2pu?= =?utf-8?B?c2FkNWR2SldlWm5ETU94NHdTNUI4TVJ3ZGlSaGlDSzdQTGVyWnR1SXFNbGpW?= =?utf-8?B?NTRjN3Z3ZExsS2xzeHlhMTVLaGx2MmR0aGRETy9xQ3FmT2orUklVY0NUaWlr?= =?utf-8?B?NlUwaS9nM0ZHWkVzVGRNWjh0U1BYL0taSVIyd0tNdC9rdDl6VTFMOE9LdFJJ?= =?utf-8?B?OThxUE5xQWRpWm1RQkJoYmszV2JFcjJMZ3g0MkRrR1ByQnY0eDMralpNNEQy?= =?utf-8?B?aWFLbmxrVVF6MytIbFdEaG00cm1IckhIa0tHNVRXR0ZCdFFJYWpOck5oRGMr?= =?utf-8?B?SGNpTlVWV0lBQkxKYWhIL3cyYk9LZkJVTkI2eTdpRHhkOW9FZUpZQkFkdE1M?= =?utf-8?B?OWxRWW1jeDQwWWdTOHRjNks2cVBlS1c5K1RYSWhnUTNoWWtzTS9HUmtXVWFj?= =?utf-8?B?cjhwdGtTaFlZZDdqMjUxSElSMUpoUEJIV0xrQStMR3ZuUjUyd2lCdWc3WnU3?= =?utf-8?B?azBWRkhYRXdxa2hVbVdFeFFqaW5SR2d3OFExUXVsdlpOZTJCeE1PSkl0eW1O?= =?utf-8?B?Sm1OS0p5NU1wMXRiUDJlcDlQWGtJc21vS0trMnBiVHNkbmtxeDJXT01oczZI?= =?utf-8?B?amhoRWdXMEZjTFFHSTNBSFgyakVEUFB5QjNrNVk2VStydXE4QURLMmNkSHo0?= =?utf-8?B?K2ZpMkdmWFhOU0hLQUJJRzRtdU50eGMyY3RQbW82N3ljbjdPQW1XR0RmVVZm?= =?utf-8?B?YjlEUnJmV2xJaUszcXhQVFFaV1N5dUJBb1I2M2xNMis3YUg3OCtkRWMvK3k3?= =?utf-8?B?dmJFZVBjdlprcUFYaUxqaUVYbVlBalIxbkRZNWJyQkxUR3pzSkRsbDczVStV?= =?utf-8?B?MGpsTWwvaHVhdWtxN3ppR2t4ZEZMU0V6STVremorN0VNSTVXZ0ViSyt2NFZ4?= =?utf-8?B?T3E1cTVqbFpMVEtTbnAvMFhiTHMyd1MyUDZydWZiWXV2UVJhNk03THpZVS81?= =?utf-8?B?Vm9kT0czOXVncEpXVUxGSmNvMDY2cjBXV1IvZDYvL2t0SnhuQUhETjAwNHdi?= =?utf-8?B?VHl6amNlVjJ2MWZvT3kyMFVTTmxJWVRjRk5iNEhvRzNZT1htaUcxbUF3cUcx?= =?utf-8?B?TC9uN2swa1dBR1AyWE5NSVZVaHBaeHYzd0Q0dlJRenhvRTBZYy94bjlZSGM4?= =?utf-8?B?L2dibVI3U3JtZHVRZC9sT0lFSkk5OWNScDZYVTJIV1RUa1ZUQU9tRjg5aGs5?= =?utf-8?B?KytmWHNZNEFHRnZwTUhPZExobXQxQTZKNXh3M1FBT09IQWtlYjR0UkZQTEwv?= =?utf-8?B?NGRuT2lUanVvV3h6OWxwZm1WRDBqZU4vNHlGRXJESjFUUkpBYnYxR3hiMW51?= =?utf-8?B?L1VIUHRFMHFWRW1NcGMzU3NJYnU3VTdnTVluY1BtV2FhbmdMZTJHc1FMSVRm?= =?utf-8?B?NFlwU0R0dlcrZHptZHRoTHlLeHNKZFUzOFc4UDlRUURjNGk3MzR0R3lYdGdj?= =?utf-8?B?cTAvVS9lSUFleWhYbGZibjJuSFMyZkxydmovTGhSczJEY2ZpUHlvN3Mwdmhy?= =?utf-8?B?TS9meFg5djFvQ0swMytGQ2tRRFNzZjQ3TG1vMW1mK0JLNEVMeWtTZ2xOL2pw?= =?utf-8?B?ZUE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <34F17A551620AF40AC4EB86A2B88B83F@apcprd03.prod.outlook.com> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OSQPR03MB8697.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: acf33ed3-4e54-4dfb-306e-08dd2e1f7656 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jan 2025 06:58:02.0124 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: THaUM8avIYOZXRZ+sggN3bEUgIVr/w19PAVHDS+wM0DIcKBNIdQTsTQ96O2ENmneoHm2vT+LKLVOt22eOs2/9xY/3eJUDuNzfhx/QTCeXRs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI2PR03MB6520 X-MTK: N SGkgU2ViYXN0aWFuLA0KDQpUaGFua3MgZm9yIHlvdXIgYWR2aWNlLg0KT24gV2VkLCAyMDI0LTEy LTExIGF0IDE0OjE3ICswMTAwLCBTZWJhc3RpYW4gRnJpY2tlIHdyb3RlOg0KPiBFeHRlcm5hbCBl bWFpbCA6IFBsZWFzZSBkbyBub3QgY2xpY2sgbGlua3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bnRp bA0KPiB5b3UgaGF2ZSB2ZXJpZmllZCB0aGUgc2VuZGVyIG9yIHRoZSBjb250ZW50Lg0KPiANCj4g DQo+IEhleSBZdW5mZWksDQo+IA0KPiBPbiAxNi4xMS4yMDI0IDExOjE2LCBZdW5mZWkgRG9uZyB3 cm90ZToNCj4gPiBUaGUgYWRkcmVzcyBlbmQgb2Ygd29ya2luZyBidWZmZXIgY2FuJ3QgYmUgY2Fs Y3VsYXRlZCBkaXJlY3RseSB3aXRoDQo+ID4gYnVmZmVyDQo+ID4gc2l6ZSBpbiBrZXJuZWwgZm9y IHNvbWUgc3BlY2lhbCBhcmNoaXRlY3R1cmUuIEFkZGluZyBuZXcgZXh0ZW5kDQo+ID4gdnNpX2V4 IHRvDQo+ID4gY2FsY3VsYXRlIHRoZSBhZGRyZXNzIGVuZCBpbiBmaXJtd2FyZS4NCj4gPiBBZGRp bmcgY2FwYWJpbGl0eSB0byBzZXBhcmF0ZSBleHRlbmQgYW5kIG5vbiBleHRlbmQgZHJpdmVyIGZv cg0KPiA+IGRpZmZlcmVudA0KPiA+IHBsYXRmb3JtLg0KPiA+IEF0IGxhc3QsIGhhcmR3YXJlIGNh biBwYXJzZSB0aGUgc3ludGF4IHRvIGdldCBuYWwgaW5mb3JtYXRpb24gaW4NCj4gPiBmaXJtd2Fy ZQ0KPiA+IGZvciBleHRlbmQgYXJjaGl0ZWN0dXJlLCBuZWVkbid0IHRvIHBhcnNlIGl0IGFnYWlu IGluIGtlcm5lbC4NCj4gDQo+IEknZCByZWNvbW1lbmQgY2hhbmdpbmcgdGhpcyB0bzoNCj4gDQo+ IEFkZCBhIG5ldyBleHRlbmRlZCB2c2lfZXh0IHN0cnVjdCBiZXNpZGVzIHRoZSBleGlzdGluZyB2 c2kgc3RydWN0LCB0bw0KPiBlbmFibGUgY2FsY3VsYXRpbmcgdGhlIGVuZCBvZiB0aGUgYWRyZXNz IHJhbmdlIG9mIHRoZSBjdXJyZW50IHdvcmtpbmcNCj4gYnVmZmVyIGZvciBhcmNoaXRlY3R1cmVz LCB3aGVyZSBzaW1wbHkgYWRkaW5nIHRoZSBidWZmZXIgc2l6ZSB0byB0aGUNCj4gc3RhcnQgb2Yg dGhlIGFkZHJlc3MgcmFuZ2UgaXNuJ3Qgc3VmZmljaWVudC4NCj4gQWRkaXRpb25hbGx5LCBvbiBl eHRlbmRlZCBhcmNoaXRlY3R1cmVzLCB0aGUgTkFMIGluZm9ybWF0aW9uIGNhbiBiZQ0KPiBmZXRj aGVkIGRpcmVjdGx5IGZyb20gdGhlIGZpcm13YXJlLCB3aGljaCBhbGxvd3Mgc2tpcHBpbmcgdGhl IHBhcnNpbmcNCj4gc3RlcCB3aXRoaW4gdGhlIGtlcm5lbC4NCj4gDQo+IEFsc28sIHRoaXMgc2Vu dGVuY2U6DQo+ID4gQWRkaW5nIGNhcGFiaWxpdHkgdG8gc2VwYXJhdGUgZXh0ZW5kIGFuZCBub24g ZXh0ZW5kIGRyaXZlciBmb3INCj4gPiBkaWZmZXJlbnQNCj4gPiBwbGF0Zm9ybS4NCj4gDQo+IElz IGEgYml0IGFtYmlnaW91cyBmb3IgbWUgYW5kIGRvZXNuJ3Qgc2VlbSB0byBiZSBzb21ldGhpbmcg d29ydGgNCj4gbWVudGlvbmluZy4gQnV0IG1heWJlIEkgbWlzdW5kZXJzdGFuZCB5b3VyIHBvaW50 IGhlcmUuDQo+IA0KPiA+IA0KPiA+IFNpZ25lZC1vZmYtYnk6IFl1bmZlaSBEb25nIDx5dW5mZWku ZG9uZ0BtZWRpYXRlay5jb20+DQo+ID4gUmV2aWV3ZWQtYnk6IEFuZ2Vsb0dpb2FjY2hpbm8gRGVs IFJlZ25vIDwNCj4gPiBhbmdlbG9naW9hY2NoaW5vLmRlbHJlZ25vQGNvbGxhYm9yYS5jb20+DQo+ ID4gLS0tDQo+ID4gLi4uL3Zjb2RlYy9kZWNvZGVyL210a192Y29kZWNfZGVjX2Rydi5oICAgICAg IHwgICAyICsNCj4gPiAuLi4vZGVjb2Rlci92ZGVjL3ZkZWNfaDI2NF9yZXFfbXVsdGlfaWYuYyAg ICAgfCA1NzUNCj4gPiArKysrKysrKysrKysrKysrLS0NCj4gPiAyIGZpbGVzIGNoYW5nZWQsIDUx OCBpbnNlcnRpb25zKCspLCA1OSBkZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0DQo+ ID4gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9kZWNvZGVyL210a192 Y29kZWNfZGVjX2Rydg0KPiA+IC5oDQo+ID4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlh dGVrL3Zjb2RlYy9kZWNvZGVyL210a192Y29kZWNfZGVjX2Rydg0KPiA+IC5oDQo+ID4gaW5kZXgg YWM1NjhlZDE0ZmEyLi5hMGJiMjM5NjIyMDkgMTAwNjQ0DQo+ID4gLS0tDQo+ID4gYS9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL21lZGlhdGVrL3Zjb2RlYy9kZWNvZGVyL210a192Y29kZWNfZGVjX2Ry dg0KPiA+IC5oDQo+ID4gKysrDQo+ID4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL21lZGlhdGVr L3Zjb2RlYy9kZWNvZGVyL210a192Y29kZWNfZGVjX2Rydg0KPiA+IC5oDQo+ID4gQEAgLTE3LDYg KzE3LDcgQEANCj4gPiANCj4gPiAjZGVmaW5lIElTX1ZERUNfTEFUX0FSQ0goaHdfYXJjaCkgKCho d19hcmNoKSA+PQ0KPiA+IE1US19WREVDX0xBVF9TSU5HTEVfQ09SRSkNCj4gPiAjZGVmaW5lIElT X1ZERUNfSU5ORVJfUkFDSU5HKGNhcGFiaWxpdHkpICgoY2FwYWJpbGl0eSkgJg0KPiA+IE1US19W Q09ERUNfSU5ORVJfUkFDSU5HKQ0KPiA+ICsjZGVmaW5lIElTX1ZERUNfU1VQUE9SVF9FWChjYXBh YmlsaXR5KSAoKGNhcGFiaWxpdHkpICYNCj4gPiBNVEtfVkRFQ19JU19TVVBQT1JUX0VYKQ0KPiAN Cj4gSSdkIHJlY29tbWVuZCBjaGFuZ2luZyB0aGlzIHRvOiBJU19WREVDX1NVUFBPUlRfRVhUIGFz IEVYVCBpcyB3YXkNCj4gbGVzcw0KPiBhbWJpZ2lvdXMgYWNyb255bSBmb3IgZXh0ZW5zaW9uLCBF WCBjb3VsZCBtZWFuIHdheSBtb3JlLg0KPiBZb3UnbGwgc2VlIG1lIG1lbnRpb25pbmcgdGhhdCBi ZWxvdyBhIGNvdXBsZSBvZiB0aW1lcy4NCj4gDQo+ID4gDQo+ID4gZW51bSBtdGtfdmNvZGVjX2Rl Y19jaGlwX25hbWUgew0KPiA+ICAgICAgIE1US19WREVDX0lOVkFMID0gMCwNCj4gPiBAQCAtNDIs NiArNDMsNyBAQCBlbnVtIG10a192ZGVjX2Zvcm1hdF90eXBlcyB7DQo+ID4gICAgICAgTVRLX1ZE RUNfRk9STUFUX0hFVkNfRlJBTUUgPSAweDEwMDAsDQo+ID4gICAgICAgTVRLX1ZDT0RFQ19JTk5F Ul9SQUNJTkcgPSAweDIwMDAwLA0KPiA+ICAgICAgIE1US19WREVDX0lTX1NVUFBPUlRfMTBCSVQg PSAweDQwMDAwLA0KPiA+ICsgICAgICBNVEtfVkRFQ19JU19TVVBQT1JUX0VYID0gMHg4MDAwMCwN Cj4gPiB9Ow0KPiA+IA0KPiA+IC8qDQo+ID4gZGlmZiAtLWdpdA0KPiA+IGEvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvZGVjb2Rlci92ZGVjL3ZkZWNfaDI2NF9yZXENCj4g PiBfbXVsdGlfaWYuYw0KPiA+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29k ZWMvZGVjb2Rlci92ZGVjL3ZkZWNfaDI2NF9yZXENCj4gPiBfbXVsdGlfaWYuYw0KPiA+IGluZGV4 IGFiMTkyY2UwYjg1MS4uYTdkZTk1YjlhN2MwIDEwMDY0NA0KPiA+IC0tLQ0KPiA+IGEvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92Y29kZWMvZGVjb2Rlci92ZGVjL3ZkZWNfaDI2NF9y ZXENCj4gPiBfbXVsdGlfaWYuYw0KPiA+ICsrKw0KPiA+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9y bS9tZWRpYXRlay92Y29kZWMvZGVjb2Rlci92ZGVjL3ZkZWNfaDI2NF9yZXENCj4gPiBfbXVsdGlf aWYuYw0KPiA+IEBAIC0xMjgsNiArMTI4LDgzIEBAIHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2Vfc2hh cmVfaW5mbyB7DQo+ID4gICAgICAgdTE2IG5hbF9pbmZvOw0KPiA+IH07DQo+ID4gDQo+ID4gKy8q DQo+ID4gKyAqIHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2VfbWVtIC0gbWVtb3J5IGFkZHJlc3MgYW5k IHNpemUgKHNoYXJlZA0KPiA+IGludGVyZmFjZSB3aXRoIGZpcm13YXJlKQ0KPiA+ICsgKi8NCj4g PiArc3RydWN0IHZkZWNfaDI2NF9zbGljZV9tZW0gew0KPiA+ICsgICAgICB1bmlvbiB7DQo+ID4g KyAgICAgICAgICAgICAgdTY0IGJ1ZjsNCj4gPiArICAgICAgICAgICAgICB1NjQgZG1hX2FkZHI7 DQo+ID4gKyAgICAgIH07DQo+ID4gKyAgICAgIHVuaW9uIHsNCj4gPiArICAgICAgICAgICAgICBz aXplX3Qgc2l6ZTsNCj4gPiArICAgICAgICAgICAgICB1NjQgZG1hX2FkZHJfZW5kOw0KPiA+ICsg ICAgICB9Ow0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCB2ZGVjX2gy NjRfc2xpY2VfZmIgLSBmcmFtZSBidWZmZXIgZm9yIGRlY29kaW5nIChzaGFyZWQNCj4gPiBpbnRl cmZhY2Ugd2l0aCBmaXJtd2FyZSkNCj4gPiArICoNCj4gPiArICogQHk6ICBjdXJyZW50IHkgYnVm ZmVyIGFkZHJlc3MgaW5mbw0KPiANCj4gQXMgdGhpcyBpcyBhIGRlc2NyaXB0aW9uIEknZCBzYXkg bGV0cyBkZXNjcmliZSBhIGJpdCBtb3JlIGRldGFpbGVkDQo+IGFuZA0KPiByZXdyaXRlIHRoaXMg dG86ICJAeTogY3VycmVudCBsdW1hIGJ1ZmZlciBhZGRyZXNzIGluZm8iDQo+IA0KPiANCj4gPiAr ICogQGM6ICBjdXJyZW50IGMgYnVmZmVyIGFkZHJlc3MgaW5mbw0KPiANCj4gLi4uIGFuZCAiQGM6 IGN1cnJlbnQgY2hyb21hIGJ1ZmZlciBhZGRyZXNzIGluZm8iDQo+IA0KPiA+ICsgKi8NCj4gPiAr c3RydWN0IHZkZWNfaDI2NF9zbGljZV9mYiB7DQo+ID4gKyAgICAgIHN0cnVjdCB2ZGVjX2gyNjRf c2xpY2VfbWVtIHk7DQo+ID4gKyAgICAgIHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2VfbWVtIGM7DQo+ ID4gK307DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IHZkZWNfaDI2NF9zbGljZV9p bmZvX2V4IC0gZXh0ZW5kIGRlY29kZSBpbmZvcm1hdGlvbg0KPiA+IChzaGFyZWQgaW50ZXJmYWNl IHdpdGggZmlybXdhcmUpDQo+IA0KPiBDYW4gd2UgY2FsbCB0aGlzIGFsc28gLi5pbmZvX2V4dCBw bGVhc2U/DQo+IA0KPiA+ICsgKg0KPiA+ICsgKiBAd2RtYV9lbmRfYWRkcl9vZmZzZXQ6ICAgICBv ZmZzZXQgZnJvbSBidWZmZXIgc3RhcnQNCj4gPiArICogQG5hbF9pbmZvOiAgICAgICAgICAgICAg ICAgbmFsIGluZm8gb2YgY3VycmVudCBwaWN0dXJlDQo+ID4gKyAqIEB0aW1lb3V0OiAgICAgICAg ICAgICAgICAgIERlY29kZSB0aW1lb3V0OiAxIHRpbWVvdXQsIDAgbm8NCj4gPiB0aW1lb3V0DQo+ IA0KPiBJJ2QgcmVuYW1lIHRoZSBkZXNjcmlwdGlvbiB0bzogIlRvZ2dsZXMgd2hldGhlciBhIGRl Y29kZSBvcGVyYXRpb24NCj4gY2FuIHRpbWVvdXQiDQo+IFRoZW4gdGhlIGVmZmVjdCBvZiAxIGFu ZCAwIGJlY29tZXMgb2J2aW91cy4NCj4gDQo+ID4gKyAqIEByZXNlcnZlZDogICAgICAgICAgICAg ICAgIHJlc2VydmVkDQo+ID4gKyAqIEB2ZGVjX2ZiX3ZhOiAgICAgICAgICAgICAgIFZERUMgZnJh bWUgYnVmZmVyIHN0cnVjdCB2aXJ0dWFsDQo+ID4gYWRkcmVzcw0KPiA+ICsgKiBAY3JjOiAgICAg ICAgICAgICAgICAgICAgICBVc2VkIHRvIGNoZWNrIHdoZXRoZXIgaGFyZHdhcmUncw0KPiA+IHN0 YXR1cyBpcyByaWdodA0KPiANCj4gSSdkIHJlbmFtZSB0aGlzIHRvOiAiRGlzcGxheXMgdGhlIGhh cmR3YXJlIHN0YXR1cyINCj4gU2F5aW5nIHdoZXRoZXIgYSBzdGF0dXMgaXMgInJpZ2h0IiBpcyBy YXRoZXIgYW1iaWdpb3VzLg0KPiANCj4gPiArICovDQo+ID4gK3N0cnVjdCB2ZGVjX2gyNjRfc2xp Y2VfaW5mb19leCB7DQo+IA0KPiAuLi4gYW5kIHRoaXMgLi4uIGluZm9fZXh0DQo+IA0KPiA+ICsg ICAgICB1NjQgd2RtYV9lbmRfYWRkcl9vZmZzZXQ7DQo+ID4gKyAgICAgIHUxNiBuYWxfaW5mbzsN Cj4gPiArICAgICAgdTE2IHRpbWVvdXQ7DQo+ID4gKyAgICAgIHUzMiByZXNlcnZlZDsNCj4gPiAr ICAgICAgdTY0IHZkZWNfZmJfdmE7DQo+ID4gKyAgICAgIHUzMiBjcmNbOF07DQo+ID4gK307DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogc3RydWN0IHZkZWNfaDI2NF9zbGljZV92c2lfZXggLSBl eHRlbmQgc2hhcmVkIG1lbW9yeSBmb3IgZGVjb2RlDQo+ID4gaW5mb3JtYXRpb24gZXhjaGFuZ2UN Cj4gDQo+IHMvdnNpX2V4L3ZzaV9leHQvDQo+IA0KPiA+ICsgKiAgICAgICAgYmV0d2VlbiBTQ1Ag YW5kIEhvc3QgKHNoYXJlZCBpbnRlcmZhY2Ugd2l0aCBmaXJtd2FyZSkuDQo+ID4gKyAqDQo+ID4g KyAqIEBiczogICAgICAgICAgICAgICBpbnB1dCBidWZmZXIgaW5mbw0KPiA+ICsgKiBAZmI6ICAg ICAgICAgICAgICAgY3VycmVudCB5L2MgYnVmZmVyDQo+ID4gKyAqDQo+ID4gKyAqIEB1YmU6ICAg ICAgICAgICAgICB1YmUgYnVmZmVyDQo+IA0KPiBXaGlsZSB3ZSBhcmUgYXQgaXQgYW5kIHRoaXMg YWNyb255bSBpc24ndCB0ZXJyaWJsZSBzZWxmLWRlc2NyaXB0aXZlDQo+IGNvdWxkIHlvdSB3cml0 ZSBpbiB0aGUgZGVzY3JpcHRpb24gd2hhdCB1YmUgc3RhbmRzIGZvcj8NCkkgY2FuIHJld3JpdGUg dGhlIGRlc2NyaXB0aW9uIHRvOiB1YmUgaXMgYSBidWZmZXIgdXNlZCB0byBzaGFyZSBkYXRlDQpi ZXR3ZWVuIHR3byBoYXJkd2FyZS4NCj4gDQo+ID4gKyAqIEB0cmFuczogICAgICAgICAgICB0cmFu c2NvZGVkIGJ1ZmZlcg0KPiA+ICsgKiBAcm93X2luZm86ICAgICAgICAgcm93IGluZm8gYnVmZmVy DQo+ID4gKyAqIEBlcnJfbWFwOiAgICAgICAgICBlcnIgbWFwIGJ1ZmZlcg0KPiA+ICsgKiBAc2xp Y2VfYmM6ICAgICAgICAgc2xpY2UgYnVmZmVyDQo+ID4gKyAqDQo+ID4gKyAqIEBtdl9idWZfZG1h OiAgICAgICBIVyB3b3JraW5nIG1vdGlvbiB2ZWN0b3IgYnVmZmVyDQo+IA0KPiBIVyB3b3JraW5n IHNvdW5kcyB3ZWlyZCwgZG8geW91IHdhbnQgdG8gc2F5IHRoZSBjdXJyZW50Pw0KPiANCj4gPiAr ICogQGRlYzogICAgICAgICAgICAgIGRlY29kZSBpbmZvcm1hdGlvbiAoQVAtUiwgVlBVLVcpDQo+ ID4gKyAqIEBoMjY0X3NsaWNlX3BhcmFtczogICAgICAgIGRlY29kZSBwYXJhbWV0ZXJzIGZvciBo dyB1c2VkDQo+IA0KPiBzL2ZvciBodyB1c2VkL3VzZWQgZm9yIHRoZSBody8NCj4gDQo+ID4gKyAq Lw0KPiA+ICtzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX3ZzaV9leCB7DQo+IA0KPiBzL3ZzaV9leC92 c2lfZXh0Lw0KPiANCj4gPiArICAgICAgLyogTEFUIGRlYyBhZGRyICovDQo+ID4gKyAgICAgIHN0 cnVjdCB2ZGVjX2gyNjRfc2xpY2VfbWVtIGJzOw0KPiA+ICsgICAgICBzdHJ1Y3QgdmRlY19oMjY0 X3NsaWNlX2ZiIGZiOw0KPiA+ICsNCj4gPiArICAgICAgc3RydWN0IHZkZWNfaDI2NF9zbGljZV9t ZW0gdWJlOw0KPiA+ICsgICAgICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX21lbSB0cmFuczsNCj4g PiArICAgICAgc3RydWN0IHZkZWNfaDI2NF9zbGljZV9tZW0gcm93X2luZm87DQo+ID4gKyAgICAg IHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2VfbWVtIGVycl9tYXA7DQo+ID4gKyAgICAgIHN0cnVjdCB2 ZGVjX2gyNjRfc2xpY2VfbWVtIHNsaWNlX2JjOw0KPiA+ICsNCj4gPiArICAgICAgc3RydWN0IHZk ZWNfaDI2NF9zbGljZV9tZW0gbXZfYnVmX2RtYVtIMjY0X01BWF9NVl9OVU1dOw0KPiA+ICsgICAg ICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX2luZm9fZXggZGVjOw0KPiANCj4gcy9pbmZvX2V4L2lu Zm9fZXh0Lw0KPiANCj4gPiArICAgICAgc3RydWN0IHZkZWNfaDI2NF9zbGljZV9sYXRfZGVjX3Bh cmFtIGgyNjRfc2xpY2VfcGFyYW1zOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAvKioNCj4gPiAgKiBz dHJ1Y3QgdmRlY19oMjY0X3NsaWNlX2luc3QgLSBoMjY0IGRlY29kZXIgaW5zdGFuY2UNCj4gPiAg Kg0KPiA+IEBAIC0xMzgsOCArMjE1LDEwIEBAIHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2Vfc2hhcmVf aW5mbyB7DQo+ID4gICogQHZwdTogICAgICAgICAgICAgIFZQVSBpbnN0YW5jZQ0KPiA+ICAqIEB2 c2k6ICAgICAgICAgICAgICB2c2kgdXNlZCBmb3IgbGF0DQo+ID4gICogQHZzaV9jb3JlOiAgICAg ICAgIHZzaSB1c2VkIGZvciBjb3JlDQo+ID4gLSAqDQo+ID4gLSAqIEB2c2lfY3R4OiAgICAgICAg ICBMb2NhbCBWU0kgZGF0YSBmb3IgdGhpcyBkZWNvZGluZyBjb250ZXh0DQo+ID4gKyAqIEB2c2lf Y3R4OiAgICAgICAgICBMb2NhbCB2c2kgZGF0YSBmb3IgdGhpcyBkZWNvZGluZyBjb250ZXh0DQo+ ID4gKyAqIEB2c2lfZXg6ICAgICAgICAgICBleHRlbmQgdnNpIHVzZWQgZm9yIGxhdA0KPiANCj4g cy92c2lfZXgvdnNpX2V4dC8NCj4gcy9leHRlbmQvZXh0ZW5kZWQvDQo+IA0KPiA+ICsgKiBAdnNp X2NvcmVfZXg6ICAgICAgZXh0ZW5kIHZzaSB1c2VkIGZvciBjb3JlDQo+IA0KPiBzL3ZzaV9jb3Jl X2V4L3ZzaV9jb3JlX2V4dC8NCj4gcy9leHRlbmQvZXh0ZW5kZWQvDQo+IA0KPiA+ICsgKiBAdnNp X2N0eF9leDogICAgICAgTG9jYWwgZXh0ZW5kIHZzaSBkYXRhIGZvciB0aGlzIGRlY29kaW5nDQo+ ID4gY29udGV4dA0KPiANCj4gcy92c2lfY3R4X2V4L3ZzaV9jdHhfZXh0Lw0KPiBzL2V4dGVuZC9l eHRlbmRlZC8NCj4gDQo+IEFsc28geW91IGNhbiBkcm9wIHRoZSB3b3JkIExvY2FsIGFzIHRoYXQg aXMgY2xlYXIgYWxyZWFkeSB3aXRoOg0KPiAiZm9yIHRoaXMgZGVjb2RpbmcgY29udGV4dCINCj4g DQo+ID4gICogQGgyNjRfc2xpY2VfcGFyYW06IHRoZSBwYXJhbWV0ZXJzIHRoYXQgaGFyZHdhcmUg dXNlIHRvIGRlY29kZQ0KPiA+ICAqDQo+ID4gICogQHJlc29sdXRpb25fY2hhbmdlZDpyZXNvbHV0 aW9uIGNoYW5nZWQNCj4gPiBAQCAtMTQ4LDcgKzIyNyw5IEBAIHN0cnVjdCB2ZGVjX2gyNjRfc2xp Y2Vfc2hhcmVfaW5mbyB7DQo+ID4gICoNCj4gPiAgKiBAZHBiOiAgICAgICAgICAgICAgZGVjb2Rl ZCBwaWN0dXJlIGJ1ZmZlciB1c2VkIHRvIHN0b3JlDQo+ID4gcmVmZXJlbmNlDQo+ID4gICogICAg ICAgICAgICAgICAgICAgIGJ1ZmZlciBpbmZvcm1hdGlvbg0KPiA+IC0gKkBpc19maWVsZF9iaXRz dHJlYW06ICAgICAgICBpcyBmaWVsZCBiaXRzdHJlYW0NCj4gPiArICogQGlzX2ZpZWxkX2JpdHN0 cmVhbTogaXMgZmllbGQgYml0c3RyZWFtDQo+IA0KPiBUaGF0IGlzIG5vdCBhIGRlc2NyaXB0aW9u LCB0aGF0IGlzIGEgcmVwZXRpdGlvbiA6KQ0KPiBQbGVhc2UgbWFrZSB0aGlzIGEgYml0IG1vcmUg ZGVzY3JpcHRpdmUuIExpa2UgZG8geW91IGRlc2NyaWJlDQo+IGFueXdoZXJlDQo+IGVsc2UgYWxy ZWFkeSB3aGF0IGEgZmllbGQgYml0c3RyZWFtIGlzIGFuZCBob3cgaXQgZGlmZmVyZW50aWF0ZXMg ZnJvbQ0KPiB0aGUgYWx0ZXJuYXRpdmU/DQo+IA0KYml0c3RyZWFtIGNhbiBiZSBmaWVsZCAvIGZy YW1lIG9yIGFkYXB0IGZpZWxkIGZyYW1lLiBUaGUgZHJpdmVyIG9ubHkNCnN1cHBvcnQgZnJhbWUg ZGVjb2RlLg0KPiA+ICsgKg0KPiA+ICsgKiBAZGVjb2RlOiAgICAgICAgICAgbGF0IGRlY29kZXIg cG9pbnRlciBmb3IgZGlmZmVyZW50DQo+ID4gYXJjaGl0ZWN0dXJlDQo+IA0KPiBzL2FyY2hpdGVj dHVyZS9hcmNoaXRlY3R1cmVzLw0KPiANCj4gPiAgKi8NCj4gPiBzdHJ1Y3QgdmRlY19oMjY0X3Ns aWNlX2luc3Qgew0KPiA+ICAgICAgIHVuc2lnbmVkIGludCBzbGljZV9kZWNfbnVtOw0KPiA+IEBA IC0xNTYsMTAgKzIzNywxOCBAQCBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX2luc3Qgew0KPiA+ICAg ICAgIHN0cnVjdCBtdGtfdmNvZGVjX21lbSBwcmVkX2J1ZjsNCj4gPiAgICAgICBzdHJ1Y3QgbXRr X3Zjb2RlY19tZW0gbXZfYnVmW0gyNjRfTUFYX01WX05VTV07DQo+ID4gICAgICAgc3RydWN0IHZk ZWNfdnB1X2luc3QgdnB1Ow0KPiA+IC0gICAgICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX3ZzaSAq dnNpOw0KPiA+IC0gICAgICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX3ZzaSAqdnNpX2NvcmU7DQo+ ID4gLQ0KPiA+IC0gICAgICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX3ZzaSB2c2lfY3R4Ow0KPiA+ ICsgICAgICB1bmlvbiB7DQo+ID4gKyAgICAgICAgICAgICAgc3RydWN0IHsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2VfdnNpICp2c2k7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX3ZzaSAqdnNpX2NvcmU7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX3ZzaSB2 c2lfY3R4Ow0KPiA+ICsgICAgICAgICAgICAgIH07DQo+ID4gKyAgICAgICAgICAgICAgc3RydWN0 IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2VfdnNp X2V4ICp2c2lfZXg7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmRlY19oMjY0 X3NsaWNlX3ZzaV9leCAqdnNpX2NvcmVfZXg7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgdmRlY19oMjY0X3NsaWNlX3ZzaV9leCB2c2lfY3R4X2V4Ow0KPiANCj4gcy92c2lfZXgv dnNpX2V4dC8NCj4gcy92c2lfY29yZV9leC92c2lfY29yZV9leHQvDQo+IHMvdnNpX2N0eF9leC92 c2lfY3R4X2V4dC8NCj4gDQo+ID4gKyAgICAgICAgICAgICAgfTsNCj4gPiArICAgICAgfTsNCj4g PiAgICAgICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX2xhdF9kZWNfcGFyYW0gaDI2NF9zbGljZV9w YXJhbTsNCj4gPiANCj4gPiAgICAgICB1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbl9jaGFuZ2VkOw0K PiA+IEBAIC0xNjgsNiArMjU3LDkgQEAgc3RydWN0IHZkZWNfaDI2NF9zbGljZV9pbnN0IHsNCj4g PiANCj4gPiAgICAgICBzdHJ1Y3QgdjRsMl9oMjY0X2RwYl9lbnRyeSBkcGJbMTZdOw0KPiA+ICAg ICAgIGJvb2wgaXNfZmllbGRfYml0c3RyZWFtOw0KPiA+ICsNCj4gPiArICAgICAgaW50ICgqZGVj b2RlKSh2b2lkICpoX3ZkZWMsIHN0cnVjdCBtdGtfdmNvZGVjX21lbSAqYnMsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHZkZWNfZmIgKnVudXNlZCwgYm9vbCAqcmVzX2NoZyk7DQo+ ID4gfTsNCj4gPiANCj4gPiBzdGF0aWMgaW50IHZkZWNfaDI2NF9zbGljZV9maWxsX2RlY29kZV9w YXJhbWV0ZXJzKHN0cnVjdA0KPiA+IHZkZWNfaDI2NF9zbGljZV9pbnN0ICppbnN0LA0KPiA+IEBA IC0zODksNjIgKzQ4MSwxNDMgQEAgc3RhdGljIHZvaWQNCj4gPiB2ZGVjX2gyNjRfc2xpY2VfZ2V0 X2Nyb3BfaW5mbyhzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX2luc3QgKmluc3QsDQo+ID4gICAgICAg ICAgICAgICAgICAgICAgY3ItPmxlZnQsIGNyLT50b3AsIGNyLT53aWR0aCwgY3ItPmhlaWdodCk7 DQo+ID4gfQ0KPiA+IA0KPiA+IC1zdGF0aWMgaW50IHZkZWNfaDI2NF9zbGljZV9pbml0KHN0cnVj dCBtdGtfdmNvZGVjX2RlY19jdHggKmN0eCkNCj4gPiArc3RhdGljIHZvaWQgdmRlY19oMjY0X3Ns aWNlX3NldHVwX2xhdF9idWZmZXJfZXgoc3RydWN0DQo+ID4gdmRlY19oMjY0X3NsaWNlX2luc3Qg Kmluc3QsDQo+IA0KPiBzL2J1ZmZlcl9leC9idWZmZXJfZXh0Lw0KPiANCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdA0KPiA+IG10a192Y29k ZWNfbWVtICpicywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCB2ZGVjX2xhdF9idWYNCj4gPiAqbGF0X2J1ZikNCj4gPiB7DQo+ID4gLSAg ICAgIHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2VfaW5zdCAqaW5zdDsNCj4gPiAtICAgICAgaW50IGVy ciwgdnNpX3NpemU7DQo+ID4gKyAgICAgIHN0cnVjdCBtdGtfdmNvZGVjX21lbSAqbWVtOw0KPiA+ ICsgICAgICBpbnQgaTsNCj4gPiANCj4gPiAtICAgICAgaW5zdCA9IGt6YWxsb2Moc2l6ZW9mKCpp bnN0KSwgR0ZQX0tFUk5FTCk7DQo+ID4gLSAgICAgIGlmICghaW5zdCkNCj4gPiAtICAgICAgICAg ICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiArICAgICAgaW5zdC0+dnNpX2V4LT5icy5kbWFfYWRk ciA9ICh1NjQpYnMtPmRtYV9hZGRyOw0KPiA+ICsgICAgICBpbnN0LT52c2lfZXgtPmJzLnNpemUg PSBicy0+c2l6ZTsNCj4gPiANCj4gPiAtICAgICAgaW5zdC0+Y3R4ID0gY3R4Ow0KPiA+ICsgICAg ICBmb3IgKGkgPSAwOyBpIDwgSDI2NF9NQVhfTVZfTlVNOyBpKyspIHsNCj4gPiArICAgICAgICAg ICAgICBtZW0gPSAmaW5zdC0+bXZfYnVmW2ldOw0KPiA+ICsgICAgICAgICAgICAgIGluc3QtPnZz aV9leC0+bXZfYnVmX2RtYVtpXS5kbWFfYWRkciA9IG1lbS0NCj4gPiA+ZG1hX2FkZHI7DQo+IA0K PiBzL3ZzaV9leC92c2lfZXh0Lw0KPiBhbmQgaW4gYWxsIG90aGVyIGNhc2VzIGJlbG93IC4uLg0K PiANCj4gPiArICAgICAgICAgICAgICBpbnN0LT52c2lfZXgtPm12X2J1Zl9kbWFbaV0uc2l6ZSA9 IG1lbS0+c2l6ZTsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBpbnN0LT52c2lfZXgtPnViZS5k bWFfYWRkciA9IGxhdF9idWYtPmN0eC0NCj4gPiA+bXNnX3F1ZXVlLndkbWFfYWRkci5kbWFfYWRk cjsNCj4gPiArICAgICAgaW5zdC0+dnNpX2V4LT51YmUuc2l6ZSA9IGxhdF9idWYtPmN0eC0NCj4g PiA+bXNnX3F1ZXVlLndkbWFfYWRkci5zaXplOw0KPiA+IA0KPiA+IC0gICAgICBpbnN0LT52cHUu aWQgPSBTQ1BfSVBJX1ZERUNfTEFUOw0KPiA+IC0gICAgICBpbnN0LT52cHUuY29yZV9pZCA9IFND UF9JUElfVkRFQ19DT1JFOw0KPiA+IC0gICAgICBpbnN0LT52cHUuY3R4ID0gY3R4Ow0KPiA+IC0g ICAgICBpbnN0LT52cHUuY29kZWNfdHlwZSA9IGN0eC0+Y3VycmVudF9jb2RlYzsNCj4gPiAtICAg ICAgaW5zdC0+dnB1LmNhcHR1cmVfdHlwZSA9IGN0eC0+Y2FwdHVyZV9mb3VyY2M7DQo+ID4gKyAg ICAgIGluc3QtPnZzaV9leC0+cm93X2luZm8uZG1hX2FkZHIgPSAwOw0KPiA+ICsgICAgICBpbnN0 LT52c2lfZXgtPnJvd19pbmZvLnNpemUgPSAwOw0KPiA+IA0KPiA+IC0gICAgICBlcnIgPSB2cHVf ZGVjX2luaXQoJmluc3QtPnZwdSk7DQo+ID4gLSAgICAgIGlmIChlcnIpIHsNCj4gPiAtICAgICAg ICAgICAgICBtdGtfdmRlY19lcnIoY3R4LCAidmRlY19oMjY0IGluaXQgZXJyPSVkIiwgZXJyKTsN Cj4gPiAtICAgICAgICAgICAgICBnb3RvIGVycm9yX2ZyZWVfaW5zdDsNCj4gPiArICAgICAgaW5z dC0+dnNpX2V4LT5lcnJfbWFwLmRtYV9hZGRyID0gbGF0X2J1Zi0NCj4gPiA+d2RtYV9lcnJfYWRk ci5kbWFfYWRkcjsNCj4gPiArICAgICAgaW5zdC0+dnNpX2V4LT5lcnJfbWFwLnNpemUgPSBsYXRf YnVmLT53ZG1hX2Vycl9hZGRyLnNpemU7DQo+ID4gKw0KPiA+ICsgICAgICBpbnN0LT52c2lfZXgt PnNsaWNlX2JjLmRtYV9hZGRyID0gbGF0X2J1Zi0NCj4gPiA+c2xpY2VfYmNfYWRkci5kbWFfYWRk cjsNCj4gPiArICAgICAgaW5zdC0+dnNpX2V4LT5zbGljZV9iYy5zaXplID0gbGF0X2J1Zi0+c2xp Y2VfYmNfYWRkci5zaXplOw0KPiA+ICsNCj4gPiArICAgICAgaW5zdC0+dnNpX2V4LT50cmFucy5k bWFfYWRkcl9lbmQgPSBpbnN0LT5jdHgtDQo+ID4gPm1zZ19xdWV1ZS53ZG1hX3JwdHJfYWRkcjsN Cj4gPiArICAgICAgaW5zdC0+dnNpX2V4LT50cmFucy5kbWFfYWRkciA9IGluc3QtPmN0eC0NCj4g PiA+bXNnX3F1ZXVlLndkbWFfd3B0cl9hZGRyOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg aW50IHZkZWNfaDI2NF9zbGljZV9zZXR1cF9jb3JlX2J1ZmZlcl9leChzdHJ1Y3QNCj4gPiB2ZGVj X2gyNjRfc2xpY2VfaW5zdCAqaW5zdCwNCj4gDQo+IHMvYnVmZmVyX2V4L2J1ZmZlcl9leHQvDQpX aWxsIGZpeCBhbGwuDQo+IA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0DQo+ID4gdmRlY19oMjY0X3NsaWNlX3NoYXJlX2luZm8gKnNoYXJl X2luZm8sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgdmRlY19sYXRfYnVmDQo+ID4gKmxhdF9idWYpDQo+ID4gK3sNCj4gPiArICAgICAg c3RydWN0IG10a192Y29kZWNfbWVtICptZW07DQo+ID4gKyAgICAgIHN0cnVjdCBtdGtfdmNvZGVj X2RlY19jdHggKmN0eCA9IGluc3QtPmN0eDsNCj4gPiArICAgICAgc3RydWN0IHZiMl92NGwyX2J1 ZmZlciAqdmIyX3Y0bDI7DQo+ID4gKyAgICAgIHN0cnVjdCB2ZGVjX2ZiICpmYjsNCj4gPiArICAg ICAgdTY0IHlfZmJfZG1hLCBjX2ZiX2RtYSA9IDA7DQo+ID4gKyAgICAgIGludCBpOw0KPiA+ICsN Cj4gPiArICAgICAgZmIgPSBjdHgtPmRldi0+dmRlY19wZGF0YS0+Z2V0X2NhcF9idWZmZXIoY3R4 KTsNCj4gPiArICAgICAgaWYgKCFmYikgew0KPiA+ICsgICAgICAgICAgICAgIG10a192ZGVjX2Vy cihjdHgsICJmYiBidWZmZXIgaXMgTlVMTCIpOw0KPiANCj4gQSBmcmFtZSBidWZmZXIgYnVmZmVy IHNvdW5kcyBhIGJpdCByZXBldGl0aXZlLCBsZXRzIGp1c3QgY2FsbCBpdA0KPiBmcmFtZQ0KPiBi dWZmZXIuIEFsc28gdGhpcyBlcnJvciBtZXNzYWdlIHRlbGxzIHRoZSB1c2VyIG5vdGhpbmcuIFdo ZW4gSSBsb29rDQo+IGF0DQo+IHRoZSBmdW5jdGlvbiB3aXRoaW4gYG10a192Y29kZWNfZGVjX3N0 YXRlbGVzc2AgaXQgbG9va3MgbGlrZSB0aGUgb25seQ0KPiB3YXkgd2UgZ2V0IGEgTlVMTCBoZXJl IGlzIGlmIGB2NGwyX20ybV9uZXh0X2RzdF9idWZgIHJldHVybnMgbm90aGluZywNCj4gZS5nLiBp ZiB3ZSBkb24ndCBoYXZlIGEgbmV4dCBkZXN0aW5hdGlvbiBidWZmZXIuIENhbiB5b3UgY29uZmly bQ0KPiB0aGlzPw0KPiBJZiB0aGF0IGlzIHRoZSBjYXNlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2Ug d291bGQgYmU6DQo+ICJVbmFibGUgdG8gZ2V0IGEgQ0FQVFVSRSBidWZmZXIsIGJlY2F1c2UgdGhl IENBUFRVUkUgcXVldWUgaXMgZW1wdHkiDQo+IE9yIHNvbWV0aGluZyBhbG9uZyB0aG9zZSBsaW5l cy4NCj4gDQpJIHdpbGwgY2hhbmdlIHRoZSBlcnJvciBtZXNzYWdlLg0KPiA+ICsgICAgICAgICAg ICAgIHJldHVybiAtRUJVU1k7DQo+ID4gICAgICAgfQ0KPiA+IA0KPiA+IC0gICAgICB2c2lfc2l6 ZSA9IHJvdW5kX3VwKHNpemVvZihzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX3ZzaSksDQo+ID4gVkNP REVDX0RFQ19BTElHTkVEXzY0KTsNCj4gPiAtICAgICAgaW5zdC0+dnNpID0gaW5zdC0+dnB1LnZz aTsNCj4gPiAtICAgICAgaW5zdC0+dnNpX2NvcmUgPQ0KPiA+IC0gICAgICAgICAgICAgIChzdHJ1 Y3QgdmRlY19oMjY0X3NsaWNlX3ZzaSAqKSgoKGNoYXIgKilpbnN0LQ0KPiA+ID52cHUudnNpKSAr IHZzaV9zaXplKTsNCj4gPiAtICAgICAgaW5zdC0+cmVzb2x1dGlvbl9jaGFuZ2VkID0gdHJ1ZTsN Cj4gPiAtICAgICAgaW5zdC0+cmVhbGxvY19tdl9idWYgPSB0cnVlOw0KPiA+ICsgICAgICB5X2Zi X2RtYSA9ICh1NjQpZmItPmJhc2VfeS5kbWFfYWRkcjsNCj4gPiArICAgICAgaWYgKGN0eC0+cV9k YXRhW01US19RX0RBVEFfRFNUXS5mbXQtPm51bV9wbGFuZXMgPT0gMSkNCj4gPiArICAgICAgICAg ICAgICBjX2ZiX2RtYSA9DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICB5X2ZiX2RtYSArIGlu c3QtPmN0eC0+cGljaW5mby5idWZfdyAqIGluc3QtDQo+ID4gPmN0eC0+cGljaW5mby5idWZfaDsN Cj4gDQo+IExvb2tzIGxpa2UgaXQgaXMgd29ydGggaXQgdG8gY3JlYXRlIGEgc2VwYXJhdGUgdmFy aWFibGUgZm9yIHBpY2luZm8NCj4gYXMNCj4geW91IHVzZSBpdCBoZXJlIGFuZCBiZWxvdywgc28g dGhhdCB5b3UgY2FuIGRvIGEgYml0IGxlc3MgY29weS1wYXN0ZS4NCj4gDQpXaWxsIGZpeC4NCj4g PiArICAgICAgZWxzZQ0KPiA+ICsgICAgICAgICAgICAgIGNfZmJfZG1hID0gKHU2NClmYi0+YmFz ZV9jLmRtYV9hZGRyOw0KPiA+IA0KPiA+IC0gICAgICBtdGtfdmRlY19kZWJ1ZyhjdHgsICJsYXQg c3RydWN0IHNpemUgPSAlZCwlZCwlZCwlZCB2c2k6DQo+ID4gJWRcbiIsDQo+ID4gLSAgICAgICAg ICAgICAgICAgICAgIChpbnQpc2l6ZW9mKHN0cnVjdCBtdGtfaDI2NF9zcHNfcGFyYW0pLA0KPiA+ IC0gICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihzdHJ1Y3QgbXRrX2gyNjRfcHBzX3Bh cmFtKSwNCj4gPiAtICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2Yoc3RydWN0DQo+ID4g dmRlY19oMjY0X3NsaWNlX2xhdF9kZWNfcGFyYW0pLA0KPiA+IC0gICAgICAgICAgICAgICAgICAg ICAoaW50KXNpemVvZihzdHJ1Y3QgbXRrX2gyNjRfZHBiX2luZm8pLA0KPiA+IC0gICAgICAgICAg ICAgICAgICAgICB2c2lfc2l6ZSk7DQo+ID4gLSAgICAgIG10a192ZGVjX2RlYnVnKGN0eCwgImxh dCBIMjY0IGluc3RhbmNlID4+ICVwLCBjb2RlY190eXBlID0NCj4gPiAweCV4IiwNCj4gPiAtICAg ICAgICAgICAgICAgICAgICAgaW5zdCwgaW5zdC0+dnB1LmNvZGVjX3R5cGUpOw0KPiA+ICsgICAg ICBtdGtfdmRlY19kZWJ1ZyhjdHgsICJbaDI2NC1jb3JlXSB5L2MgYWRkciA9IDB4JWxseCAweCVs bHgiLA0KPiA+IHlfZmJfZG1hLCBjX2ZiX2RtYSk7DQo+ID4gDQo+ID4gLSAgICAgIGN0eC0+ZHJ2 X2hhbmRsZSA9IGluc3Q7DQo+ID4gLSAgICAgIHJldHVybiAwOw0KPiA+ICsgICAgICBpbnN0LT52 c2lfY29yZV9leC0+ZmIueS5kbWFfYWRkciA9IHlfZmJfZG1hOw0KPiANCj4gcy92c2lfY29yZV9l eC92c2lfY29yZV9leHQvDQo+IGFuZCBldmVyeXdoZXJlIGJlbG93IC4uLg0KPiANCj4gPiArICAg ICAgaW5zdC0+dnNpX2NvcmVfZXgtPmZiLnkuc2l6ZSA9IGN0eC0+cGljaW5mby5mYl9zelswXTsN Cj4gPiArICAgICAgaW5zdC0+dnNpX2NvcmVfZXgtPmZiLmMuZG1hX2FkZHIgPSBjX2ZiX2RtYTsN Cj4gPiArICAgICAgaW5zdC0+dnNpX2NvcmVfZXgtPmZiLmMuc2l6ZSA9IGN0eC0+cGljaW5mby5m Yl9zelsxXTsNCj4gPiANCj4gPiAtZXJyb3JfZnJlZV9pbnN0Og0KPiA+IC0gICAgICBrZnJlZShp bnN0KTsNCj4gPiAtICAgICAgcmV0dXJuIGVycjsNCj4gPiArICAgICAgaW5zdC0+dnNpX2NvcmVf ZXgtPmRlYy52ZGVjX2ZiX3ZhID0gKHVuc2lnbmVkIGxvbmcpZmI7DQo+ID4gKyAgICAgIGluc3Qt PnZzaV9jb3JlX2V4LT5kZWMubmFsX2luZm8gPSBzaGFyZV9pbmZvLT5uYWxfaW5mbzsNCj4gPiAr DQo+ID4gKyAgICAgIGluc3QtPnZzaV9jb3JlX2V4LT51YmUuZG1hX2FkZHIgPSBsYXRfYnVmLT5j dHgtDQo+ID4gPm1zZ19xdWV1ZS53ZG1hX2FkZHIuZG1hX2FkZHI7DQo+ID4gKyAgICAgIGluc3Qt PnZzaV9jb3JlX2V4LT51YmUuc2l6ZSA9IGxhdF9idWYtPmN0eC0NCj4gPiA+bXNnX3F1ZXVlLndk bWFfYWRkci5zaXplOw0KPiA+ICsNCj4gPiArICAgICAgaW5zdC0+dnNpX2NvcmVfZXgtPmVycl9t YXAuZG1hX2FkZHIgPSBsYXRfYnVmLQ0KPiA+ID53ZG1hX2Vycl9hZGRyLmRtYV9hZGRyOw0KPiA+ ICsgICAgICBpbnN0LT52c2lfY29yZV9leC0+ZXJyX21hcC5zaXplID0gbGF0X2J1Zi0NCj4gPiA+ d2RtYV9lcnJfYWRkci5zaXplOw0KPiA+ICsNCj4gPiArICAgICAgaW5zdC0+dnNpX2NvcmVfZXgt PnNsaWNlX2JjLmRtYV9hZGRyID0gbGF0X2J1Zi0NCj4gPiA+c2xpY2VfYmNfYWRkci5kbWFfYWRk cjsNCj4gPiArICAgICAgaW5zdC0+dnNpX2NvcmVfZXgtPnNsaWNlX2JjLnNpemUgPSBsYXRfYnVm LQ0KPiA+ID5zbGljZV9iY19hZGRyLnNpemU7DQo+ID4gKw0KPiA+ICsgICAgICBpbnN0LT52c2lf Y29yZV9leC0+cm93X2luZm8uZG1hX2FkZHIgPSAwOw0KPiA+ICsgICAgICBpbnN0LT52c2lfY29y ZV9leC0+cm93X2luZm8uc2l6ZSA9IDA7DQo+ID4gKw0KPiA+ICsgICAgICBpbnN0LT52c2lfY29y ZV9leC0+dHJhbnMuZG1hX2FkZHIgPSBzaGFyZV9pbmZvLT50cmFuc19zdGFydDsNCj4gPiArICAg ICAgaW5zdC0+dnNpX2NvcmVfZXgtPnRyYW5zLmRtYV9hZGRyX2VuZCA9IHNoYXJlX2luZm8tDQo+ ID4gPnRyYW5zX2VuZDsNCj4gPiArDQo+ID4gKyAgICAgIGZvciAoaSA9IDA7IGkgPCBIMjY0X01B WF9NVl9OVU07IGkrKykgew0KPiA+ICsgICAgICAgICAgICAgIG1lbSA9ICZpbnN0LT5tdl9idWZb aV07DQo+ID4gKyAgICAgICAgICAgICAgaW5zdC0+dnNpX2NvcmVfZXgtPm12X2J1Zl9kbWFbaV0u ZG1hX2FkZHIgPSBtZW0tDQo+ID4gPmRtYV9hZGRyOw0KPiA+ICsgICAgICAgICAgICAgIGluc3Qt PnZzaV9jb3JlX2V4LT5tdl9idWZfZG1hW2ldLnNpemUgPSBtZW0tPnNpemU7DQo+ID4gKyAgICAg IH0NCj4gPiArDQo+ID4gKyAgICAgIHZiMl92NGwyID0gdjRsMl9tMm1fbmV4dF9kc3RfYnVmKGN0 eC0+bTJtX2N0eCk7DQo+ID4gKyAgICAgIHY0bDJfbTJtX2J1Zl9jb3B5X21ldGFkYXRhKCZsYXRf YnVmLT50c19pbmZvLCB2YjJfdjRsMiwNCj4gPiB0cnVlKTsNCj4gPiArDQo+ID4gKyAgICAgIHJl dHVybiAwOw0KPiA+IH0NCj4gPiANCj4gPiAtc3RhdGljIHZvaWQgdmRlY19oMjY0X3NsaWNlX2Rl aW5pdCh2b2lkICpoX3ZkZWMpDQo+ID4gK3N0YXRpYyBpbnQgdmRlY19oMjY0X3NsaWNlX2NvcmVf ZGVjb2RlX2V4KHN0cnVjdCB2ZGVjX2xhdF9idWYNCj4gPiAqbGF0X2J1ZikNCj4gDQo+IHMvZGVj b2RlX2V4L2RlY29kZV9leHQvDQo+IA0KPiBObyBubyBubywgSSBkb24ndCBsaWtlIHRoaXMgb3Ig dmRlY19oMjY0X3NsaWNlX2xhdF9kZWNvZGVfZXggeW91DQo+IGJhc2ljYWxseSBqdXN0IGR1cGxp Y2F0ZWQgdGhlIHdob2xlIGRlY29kZSBmdW5jdGlvbiBpbiBib3RoIGNhc2VzIGFuZA0KPiBhZGRl ZCBhIGZldyBleHRlbmRlZCBiaXRzIHRvIHRoZW0uIFVubGVzcyB0aGUgdHdvIHJvdXRpbmVzIGFy ZQ0KPiBzdWJzdGFudGlhbGx5IGRpZmZlcmVudCAod2hpY2ggZnJvbSBteSBwb2ludCBvZiB2aWV3 IHRoZXkgYXJlIG5vdCkNCj4geW91DQo+IHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBjb25kaXRp b25hbCBicmFuY2hlcyBmb3IgdGhlIGV4dGVuZGVkIGJpdHMNCj4gaW50bw0KPiB0aGUgZGVjb2Rl IGZ1bmN0aW9ucy4NCj4gDQo+IEJ1dCBwbGVhc2UgYWxzbyBsb29rIGF0IG15IGdlbmVyYWwgY29t bWVudHMgaW4gdGhlIGZ1bmN0aW9ucywgSSdkDQo+IHN0aWxsDQo+IGxpa2UgdG8ga25vdyB3aHkg dGltZW91dHMgYXJlIGhhbmRsZWQgdGhlIHdheSB0aGV5IGFyZSBhbmQgd2hldGhlcg0KPiB0aGUN Cj4gc3RhdHVzIG9mIGEgZGV2aWNlIGNhbiBiZSBtYWRlIGEgYml0IG1vcmUgb2J2aW91cyB0byB0 aGUgdXNlci4NCj4gDQoxOiBzaW5nbGUgZGVjb2RlIGFuZCBsYXQgc2luZ2xlIGRlY29kZSAobGF0 ICsgY29yZSkgYXJlIGRpZmZlcmVudA0KYXJjaGl0ZWN0dXJlcy4NCjI6IFRoZSB2c2kgaXMgZGlm ZmVyZW50IGZvciBleHRlbmQgYW5kIG5vbiBleHRlbmQsIG5lZWQgdG8gZmlsbA0KZGlmZmVyZW50 IHBhcmFtZXRlcnMgZm9yIHZzaSBhbmQgdnNpX2V4dC4gVGhlcmUgYXJlIG1hbnkgaWYuLi5lbHNl Li4NCnRvIHNlcGFyYXRlIHZzaSBhbmUgdnNpX2V4dCBpZiB0aGUgZHJpdmVyIG9ubHkgdXNlIG9u ZSBmdW5jdGlvbiBjb3JlDQpkZWNvZGVyIGFuZCBvbmUgZnVuY3Rpb24gbGF0IGRlY29kZS4NCj4g PiB7DQo+ID4gLSAgICAgIHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2VfaW5zdCAqaW5zdCA9IGhfdmRl YzsNCj4gPiArICAgICAgaW50IGVyciwgdGltZW91dDsNCj4gPiArICAgICAgc3RydWN0IG10a192 Y29kZWNfZGVjX2N0eCAqY3R4ID0gbGF0X2J1Zi0+Y3R4Ow0KPiA+ICsgICAgICBzdHJ1Y3QgdmRl Y19oMjY0X3NsaWNlX2luc3QgKmluc3QgPSBjdHgtPmRydl9oYW5kbGU7DQo+ID4gKyAgICAgIHN0 cnVjdCB2ZGVjX2gyNjRfc2xpY2Vfc2hhcmVfaW5mbyAqc2hhcmVfaW5mbyA9IGxhdF9idWYtDQo+ ID4gPnByaXZhdGVfZGF0YTsNCj4gPiArICAgICAgc3RydWN0IHZkZWNfdnB1X2luc3QgKnZwdSA9 ICZpbnN0LT52cHU7DQo+ID4gDQo+ID4gLSAgICAgIHZwdV9kZWNfZGVpbml0KCZpbnN0LT52cHUp Ow0KPiA+IC0gICAgICB2ZGVjX2gyNjRfc2xpY2VfZnJlZV9tdl9idWYoaW5zdCk7DQo+ID4gLSAg ICAgIHZkZWNfbXNnX3F1ZXVlX2RlaW5pdCgmaW5zdC0+Y3R4LT5tc2dfcXVldWUsIGluc3QtPmN0 eCk7DQo+ID4gKyAgICAgIG10a192ZGVjX2RlYnVnKGN0eCwgIltoMjY0LWNvcmVdIHZkZWNfaDI2 NCBjb3JlIGRlY29kZSIpOw0KPiANCj4gVGhpcyBsb29rcyBsaWtlIGEgbGVmdCBvdmVyIGRldmVs b3BtZW50IGNvbW1lbnQsIHRoaXMgaXMgbm90IHVzZWZ1bA0KPiBmb3INCj4gZ2VuZXJhbCBkZWJ1 Z2dpbmcgYW5kIHNob3VsZG4ndCBiZSB1cHN0cmVhbWVkLg0KPiANCj4gPiArICAgICAgbWVtY3B5 KCZpbnN0LT52c2lfY29yZV9leC0+aDI2NF9zbGljZV9wYXJhbXMsICZzaGFyZV9pbmZvLQ0KPiA+ ID5oMjY0X3NsaWNlX3BhcmFtcywNCj4gPiArICAgICAgICAgICAgIHNpemVvZihzaGFyZV9pbmZv LT5oMjY0X3NsaWNlX3BhcmFtcykpOw0KPiA+IA0KPiA+IC0gICAgICBrZnJlZShpbnN0KTsNCj4g PiArICAgICAgZXJyID0gdmRlY19oMjY0X3NsaWNlX3NldHVwX2NvcmVfYnVmZmVyX2V4KGluc3Qs IHNoYXJlX2luZm8sDQo+ID4gbGF0X2J1Zik7DQo+IA0KPiBzL2J1ZmZlcl9leC9idWZmZXJfZXh0 Lw0KPiANCj4gPiArICAgICAgaWYgKGVycikNCj4gPiArICAgICAgICAgICAgICBnb3RvIHZkZWNf ZGVjX2VuZDsNCj4gPiArDQo+ID4gKyAgICAgIHZkZWNfaDI2NF9zbGljZV9maWxsX2RlY29kZV9y ZWZsaXN0KGluc3QsICZpbnN0LQ0KPiA+ID52c2lfY29yZV9leC0+aDI2NF9zbGljZV9wYXJhbXMs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlX2lu Zm8pOw0KPiA+ICsgICAgICBlcnIgPSB2cHVfZGVjX2NvcmUodnB1KTsNCj4gPiArICAgICAgaWYg KGVycikgew0KPiA+ICsgICAgICAgICAgICAgIG10a192ZGVjX2VycihjdHgsICJjb3JlIGRlY29k ZSBlcnI9JWQiLCBlcnIpOw0KPiA+ICsgICAgICAgICAgICAgIGdvdG8gdmRlY19kZWNfZW5kOw0K PiA+ICsgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAvKiB3YWl0IGRlY29kZXIgZG9uZSBpbnRl cnJ1cHQgKi8NCj4gPiArICAgICAgdGltZW91dCA9IG10a192Y29kZWNfd2FpdF9mb3JfZG9uZV9j dHgoaW5zdC0+Y3R4LA0KPiA+IE1US19JTlNUX0lSUV9SRUNFSVZFRCwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0FJVF9JTlRSX1RJTUVPVVRfTVMs DQo+ID4gTVRLX1ZERUNfQ09SRSk7DQo+ID4gKyAgICAgIGlmICh0aW1lb3V0KQ0KPiA+ICsgICAg ICAgICAgICAgIG10a192ZGVjX2VycihjdHgsICJjb3JlIGRlY29kZSB0aW1lb3V0OiBwaWNfJWQi LA0KPiA+IGN0eC0+ZGVjb2RlZF9mcmFtZV9jbnQpOw0KPiANCj4gU28gYXMgeW91IGRvbid0IGJh aWwgb3V0IGhlcmUsIGl0IGxvb2tzIGxpa2UgdGhpcyBjb25kaXRpb25hbCBicmFuY2gNCj4gd2ls bCBlbmQgdXAgcmV0dXJuaW5nIDAuIFdoeSBkbyB5b3UgcmV0dXJuIDAgb24gYSB0aW1lb3V0PyBJ c24ndCBhDQo+IHRpbWVvdXQgYSBmYWlsZWQgZGVjb2RlPw0KSWYgY29yZSBkZWNvZGUgdGltZW91 dCwgdGhlIGNvcmUgY2FuIHJlLWRlY29kZSBuZXh0IGZyYW1lLCBtYXkgc2hvdw0KZ2FyYmFnZSBv ciBncmVlbiBwaWN0dXJlLCBpZiBsYXQgZGVjb2RlIHRpbWVvdXQuIEl0J3MgbWVhbiB0aGUgaW5w dXQNCmRhdGEgbXVzdCBiZSBub3QgY29ycmVjdGx5Lg0KPiANCj4gPiArICAgICAgaW5zdC0+dnNp X2NvcmVfZXgtPmRlYy50aW1lb3V0ID0gISF0aW1lb3V0Ow0KPiA+ICsNCj4gPiArICAgICAgdnB1 X2RlY19jb3JlX2VuZCh2cHUpOw0KPiA+ICsgICAgICBtdGtfdmRlY19kZWJ1ZyhjdHgsICJwaWNb JWRdIGNyYzogMHgleCAweCV4IDB4JXggMHgleCAweCV4DQo+ID4gMHgleCAweCV4IDB4JXgiLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICBjdHgtPmRlY29kZWRfZnJhbWVfY250LA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICBpbnN0LT52c2lfY29yZV9leC0+ZGVjLmNyY1swXSwgaW5zdC0N Cj4gPiA+dnNpX2NvcmVfZXgtPmRlYy5jcmNbMV0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IGluc3QtPnZzaV9jb3JlX2V4LT5kZWMuY3JjWzJdLCBpbnN0LQ0KPiA+ID52c2lfY29yZV9leC0+ ZGVjLmNyY1szXSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaW5zdC0+dnNpX2NvcmVfZXgt PmRlYy5jcmNbNF0sIGluc3QtDQo+ID4gPnZzaV9jb3JlX2V4LT5kZWMuY3JjWzVdLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICBpbnN0LT52c2lfY29yZV9leC0+ZGVjLmNyY1s2XSwgaW5zdC0N Cj4gPiA+dnNpX2NvcmVfZXgtPmRlYy5jcmNbN10pOw0KPiANCj4gQ2FuIHlvdSBhZGQgYSBzbWFs bCBjb21tZW50IGFib3ZlIHRoaXMgdGhhdCBleHBsYWlucyB0byB0aGUgdXNlciB3aGF0DQo+IHRo ZXNlIENSQ3MgYXJlIHN1cHBvc2VkIHRvIG1lYW4/DQpjcmMgaXMganVzdCBoYXJkd2FyZSBjaGVj a3N1bWUgdXNlZCBmb3IgZGVidWcsIEkgY2FuIGFkZC4NCj4gDQo+ID4gKw0KPiA+ICt2ZGVjX2Rl Y19lbmQ6DQo+ID4gKyAgICAgIHZkZWNfbXNnX3F1ZXVlX3VwZGF0ZV91YmVfcnB0cigmbGF0X2J1 Zi0+Y3R4LT5tc2dfcXVldWUsDQo+ID4gc2hhcmVfaW5mby0+dHJhbnNfZW5kKTsNCj4gPiArICAg ICAgY3R4LT5kZXYtPnZkZWNfcGRhdGEtPmNhcF90b19kaXNwKGN0eCwgISFlcnIsIGxhdF9idWYt DQo+ID4gPnNyY19idWZfcmVxKTsNCj4gPiArICAgICAgbXRrX3ZkZWNfZGVidWcoY3R4LCAiY29y ZSBkZWNvZGUgZG9uZSBlcnI9JWQiLCBlcnIpOw0KPiA+ICsgICAgICBjdHgtPmRlY29kZWRfZnJh bWVfY250Kys7DQo+ID4gKyAgICAgIHJldHVybiAwOw0KPiA+IH0NCj4gPiANCj4gPiBzdGF0aWMg aW50IHZkZWNfaDI2NF9zbGljZV9jb3JlX2RlY29kZShzdHJ1Y3QgdmRlY19sYXRfYnVmDQo+ID4g KmxhdF9idWYpDQo+ID4gQEAgLTU1OSw2ICs3MzIsMTI3IEBAIHN0YXRpYyB2b2lkIHZkZWNfaDI2 NF9pbnNlcnRfc3RhcnRjb2RlKHN0cnVjdA0KPiA+IG10a192Y29kZWNfZGVjX2RldiAqdmNvZGVj X2RldiwgdW4NCj4gPiAgICAgICAoKmJzX3NpemUpICs9IDQ7DQo+ID4gfQ0KPiA+IA0KPiA+ICtz dGF0aWMgaW50IHZkZWNfaDI2NF9zbGljZV9sYXRfZGVjb2RlX2V4KHZvaWQgKmhfdmRlYywgc3Ry dWN0DQo+ID4gbXRrX3Zjb2RlY19tZW0gKmJzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmRlY19mYiAqZmIsIGJvb2wNCj4gPiAqcmVzX2NoZykN Cj4gPiArew0KPiA+ICsgICAgICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX2luc3QgKmluc3QgPSBo X3ZkZWM7DQo+ID4gKyAgICAgIHN0cnVjdCB2ZGVjX3ZwdV9pbnN0ICp2cHUgPSAmaW5zdC0+dnB1 Ow0KPiA+ICsgICAgICBzdHJ1Y3QgbXRrX3ZpZGVvX2RlY19idWYgKnNyY19idWZfaW5mbzsNCj4g PiArICAgICAgaW50IGVyciwgdGltZW91dCA9IDA7DQo+ID4gKyAgICAgIHVuc2lnbmVkIGludCBk YXRhWzJdOw0KPiA+ICsgICAgICBzdHJ1Y3QgdmRlY19sYXRfYnVmICpsYXRfYnVmOw0KPiA+ICsg ICAgICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX3NoYXJlX2luZm8gKnNoYXJlX2luZm87DQo+ID4g Kw0KPiA+ICsgICAgICBpZiAodmRlY19tc2dfcXVldWVfaW5pdCgmaW5zdC0+Y3R4LT5tc2dfcXVl dWUsIGluc3QtPmN0eCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmRlY19o MjY0X3NsaWNlX2NvcmVfZGVjb2RlX2V4LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2YoKnNoYXJlX2luZm8pKSkNCj4gPiArICAgICAgICAgICAgICByZXR1cm4gLUVO T01FTTsNCj4gPiArDQo+ID4gKyAgICAgIC8qIGJzIE5VTEwgbWVhbnMgZmx1c2ggZGVjb2RlciAq Lw0KPiA+ICsgICAgICBpZiAoIWJzKSB7DQo+ID4gKyAgICAgICAgICAgICAgdmRlY19tc2dfcXVl dWVfd2FpdF9sYXRfYnVmX2Z1bGwoJmluc3QtPmN0eC0NCj4gPiA+bXNnX3F1ZXVlKTsNCj4gPiAr ICAgICAgICAgICAgICByZXR1cm4gdnB1X2RlY19yZXNldCh2cHUpOw0KPiA+ICsgICAgICB9DQo+ ID4gKw0KPiA+ICsgICAgICBpZiAoaW5zdC0+aXNfZmllbGRfYml0c3RyZWFtKQ0KPiA+ICsgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsNCj4gPiArICAgICAgbGF0X2J1ZiA9IHZk ZWNfbXNnX3F1ZXVlX2RxYnVmKCZpbnN0LT5jdHgtDQo+ID4gPm1zZ19xdWV1ZS5sYXRfY3R4KTsN Cj4gPiArICAgICAgaWYgKCFsYXRfYnVmKSB7DQo+ID4gKyAgICAgICAgICAgICAgbXRrX3ZkZWNf ZGVidWcoaW5zdC0+Y3R4LCAiZmFpbGVkIHRvIGdldCBsYXQNCj4gPiBidWZmZXIiKTsNCj4gPiAr ICAgICAgICAgICAgICByZXR1cm4gLUVBR0FJTjsNCj4gPiArICAgICAgfQ0KPiA+ICsgICAgICBz aGFyZV9pbmZvID0gbGF0X2J1Zi0+cHJpdmF0ZV9kYXRhOw0KPiA+ICsgICAgICBzcmNfYnVmX2lu Zm8gPSBjb250YWluZXJfb2YoYnMsIHN0cnVjdCBtdGtfdmlkZW9fZGVjX2J1ZiwNCj4gPiBic19i dWZmZXIpOw0KPiA+ICsNCj4gPiArICAgICAgbGF0X2J1Zi0+c3JjX2J1Zl9yZXEgPSBzcmNfYnVm X2luZm8tDQo+ID4gPm0ybV9idWYudmIudmIyX2J1Zi5yZXFfb2JqLnJlcTsNCj4gPiArICAgICAg djRsMl9tMm1fYnVmX2NvcHlfbWV0YWRhdGEoJnNyY19idWZfaW5mby0+bTJtX2J1Zi52YiwNCj4g PiAmbGF0X2J1Zi0+dHNfaW5mbywgdHJ1ZSk7DQo+ID4gKw0KPiA+ICsgICAgICBlcnIgPSB2ZGVj X2gyNjRfc2xpY2VfZmlsbF9kZWNvZGVfcGFyYW1ldGVycyhpbnN0LA0KPiA+IHNoYXJlX2luZm8s DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZpbnN0LT52c2lfZXgtDQo+ID4gPmgyNjRfc2xpY2VfcGFyYW1zKTsNCj4gPiArICAgICAgaWYg KGVycikNCj4gPiArICAgICAgICAgICAgICBnb3RvIGVycl9mcmVlX2ZiX291dDsNCj4gPiArDQo+ ID4gKyAgICAgIHZkZWNfaDI2NF9pbnNlcnRfc3RhcnRjb2RlKGluc3QtPmN0eC0+ZGV2LCBicy0+ dmEsICZicy0NCj4gPiA+c2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnNoYXJlX2luZm8tDQo+ID4gPmgyNjRfc2xpY2VfcGFyYW1zLnBwcyk7DQo+ID4gKw0KPiA+ ICsgICAgICAqcmVzX2NoZyA9IGluc3QtPnJlc29sdXRpb25fY2hhbmdlZDsNCj4gPiArICAgICAg aWYgKGluc3QtPnJlc29sdXRpb25fY2hhbmdlZCkgew0KPiA+ICsgICAgICAgICAgICAgIG10a192 ZGVjX2RlYnVnKGluc3QtPmN0eCwgIi0gcmVzb2x1dGlvbiBjaGFuZ2VkIC0iKTsNCj4gPiArICAg ICAgICAgICAgICBpZiAoaW5zdC0+cmVhbGxvY19tdl9idWYpIHsNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgIGVyciA9IHZkZWNfaDI2NF9zbGljZV9hbGxvY19tdl9idWYoaW5zdCwNCj4gPiAm aW5zdC0+Y3R4LT5waWNpbmZvKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIGluc3QtPnJl YWxsb2NfbXZfYnVmID0gZmFsc2U7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJy KQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycl9mcmVlX2ZiX291 dDsNCj4gPiArICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICAgaW5zdC0+cmVzb2x1 dGlvbl9jaGFuZ2VkID0gZmFsc2U7DQo+ID4gKyAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgIHZk ZWNfaDI2NF9zbGljZV9zZXR1cF9sYXRfYnVmZmVyX2V4KGluc3QsIGJzLCBsYXRfYnVmKTsNCj4g PiArICAgICAgbXRrX3ZkZWNfZGVidWcoaW5zdC0+Y3R4LCAibGF0OnRyYW5zKDB4JWxseCAweCVs eCkNCj4gPiBlcnI6MHglbGx4IiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaW5zdC0+dnNp X2V4LT51YmUuZG1hX2FkZHIsICh1bnNpZ25lZA0KPiA+IGxvbmcpaW5zdC0+dnNpX2V4LT51YmUu c2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaW5zdC0+dnNpX2V4LT5lcnJfbWFwLmRt YV9hZGRyKTsNCj4gPiArDQo+ID4gKyAgICAgIG10a192ZGVjX2RlYnVnKGluc3QtPmN0eCwgInNs aWNlKDB4JWxseCAweCVseCkgcnBydCgoMHglbGx4DQo+ID4gMHglbGx4KSkiLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICBpbnN0LT52c2lfZXgtPnNsaWNlX2JjLmRtYV9hZGRyLCAodW5zaWdu ZWQNCj4gPiBsb25nKWluc3QtPnZzaV9leC0+c2xpY2VfYmMuc2l6ZSwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgaW5zdC0+dnNpX2V4LT50cmFucy5kbWFfYWRkciwgaW5zdC0+dnNpX2V4LQ0K PiA+ID50cmFucy5kbWFfYWRkcl9lbmQpOw0KPiA+ICsNCj4gPiArICAgICAgZXJyID0gdnB1X2Rl Y19zdGFydCh2cHUsIGRhdGEsIDIpOw0KPiA+ICsgICAgICBpZiAoZXJyKSB7DQo+ID4gKyAgICAg ICAgICAgICAgbXRrX3ZkZWNfZGVidWcoaW5zdC0+Y3R4LCAibGF0IGRlY29kZSBlcnI6ICVkIiwN Cj4gPiBlcnIpOw0KPiA+ICsgICAgICAgICAgICAgIGdvdG8gZXJyX2ZyZWVfZmJfb3V0Ow0KPiA+ ICsgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICBzaGFyZV9pbmZvLT50cmFuc19lbmQgPSBpbnN0 LT5jdHgtDQo+ID4gPm1zZ19xdWV1ZS53ZG1hX2FkZHIuZG1hX2FkZHIgKw0KPiA+ICsgICAgICAg ICAgICAgIGluc3QtPnZzaV9leC0+ZGVjLndkbWFfZW5kX2FkZHJfb2Zmc2V0Ow0KPiA+ICsNCj4g PiArICAgICAgc2hhcmVfaW5mby0+dHJhbnNfc3RhcnQgPSBpbnN0LT5jdHgtDQo+ID4gPm1zZ19x dWV1ZS53ZG1hX3dwdHJfYWRkcjsNCj4gPiArICAgICAgc2hhcmVfaW5mby0+bmFsX2luZm8gPSBp bnN0LT52c2lfZXgtPmRlYy5uYWxfaW5mbzsNCj4gPiArDQo+ID4gKyAgICAgIGlmIChJU19WREVD X0lOTkVSX1JBQ0lORyhpbnN0LT5jdHgtPmRldi0+ZGVjX2NhcGFiaWxpdHkpKSB7DQo+ID4gKyAg ICAgICAgICAgICAgbWVtY3B5KCZzaGFyZV9pbmZvLT5oMjY0X3NsaWNlX3BhcmFtcywgJmluc3Qt DQo+ID4gPnZzaV9leC0+aDI2NF9zbGljZV9wYXJhbXMsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgIHNpemVvZihzaGFyZV9pbmZvLT5oMjY0X3NsaWNlX3BhcmFtcykpOw0KPiA+ICsgICAgICAg ICAgICAgIHZkZWNfbXNnX3F1ZXVlX3FidWYoJmluc3QtPmN0eC0+bXNnX3F1ZXVlLmNvcmVfY3R4 LA0KPiA+IGxhdF9idWYpOw0KPiA+ICsgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAvKiB3YWl0 IGRlY29kZXIgZG9uZSBpbnRlcnJ1cHQgKi8NCj4gPiArICAgICAgdGltZW91dCA9IG10a192Y29k ZWNfd2FpdF9mb3JfZG9uZV9jdHgoaW5zdC0+Y3R4LA0KPiA+IE1US19JTlNUX0lSUV9SRUNFSVZF RCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0FJ VF9JTlRSX1RJTUVPVVRfTVMsDQo+ID4gTVRLX1ZERUNfTEFUMCk7DQo+ID4gKyAgICAgIGlmICh0 aW1lb3V0KQ0KPiA+ICsgICAgICAgICAgICAgIG10a192ZGVjX2VycihpbnN0LT5jdHgsICJsYXQg ZGVjb2RlIHRpbWVvdXQ6DQo+ID4gcGljXyVkIiwgaW5zdC0+c2xpY2VfZGVjX251bSk7DQo+ID4g KyAgICAgIGluc3QtPnZzaV9leC0+ZGVjLnRpbWVvdXQgPSAhIXRpbWVvdXQ7DQo+ID4gKw0KPiA+ ICsgICAgICBlcnIgPSB2cHVfZGVjX2VuZCh2cHUpOw0KPiA+ICsgICAgICBpZiAoZXJyID09IFNM SUNFX0hFQURFUl9GVUxMIHx8IGVyciA9PSBUUkFOU19CVUZGRVJfRlVMTCkgew0KPiA+ICsgICAg ICAgICAgICAgIGlmICghSVNfVkRFQ19JTk5FUl9SQUNJTkcoaW5zdC0+Y3R4LT5kZXYtDQo+ID4g PmRlY19jYXBhYmlsaXR5KSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgIHZkZWNfbXNnX3F1 ZXVlX3FidWYoJmluc3QtPmN0eC0NCj4gPiA+bXNnX3F1ZXVlLmxhdF9jdHgsIGxhdF9idWYpOw0K PiA+ICsgICAgICAgICAgICAgIGluc3QtPnNsaWNlX2RlY19udW0rKzsNCj4gPiArICAgICAgICAg ICAgICBtdGtfdmRlY19lcnIoaW5zdC0+Y3R4LCAibGF0IGRlYyBmYWlsOiBwaWNfJWQNCj4gPiBl cnI6JWQiLCBpbnN0LT5zbGljZV9kZWNfbnVtLCBlcnIpOw0KPiA+ICsgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICBzaGFyZV9pbmZv LT50cmFuc19lbmQgPSBpbnN0LT5jdHgtDQo+ID4gPm1zZ19xdWV1ZS53ZG1hX2FkZHIuZG1hX2Fk ZHIgKw0KPiA+ICsgICAgICAgICAgICAgIGluc3QtPnZzaV9leC0+ZGVjLndkbWFfZW5kX2FkZHJf b2Zmc2V0Ow0KPiA+ICsNCj4gPiArICAgICAgdmRlY19tc2dfcXVldWVfdXBkYXRlX3ViZV93cHRy KCZsYXRfYnVmLT5jdHgtPm1zZ19xdWV1ZSwNCj4gPiBzaGFyZV9pbmZvLT50cmFuc19lbmQpOw0K PiA+ICsNCj4gPiArICAgICAgaWYgKCFJU19WREVDX0lOTkVSX1JBQ0lORyhpbnN0LT5jdHgtPmRl di0+ZGVjX2NhcGFiaWxpdHkpKSB7DQo+ID4gKyAgICAgICAgICAgICAgbWVtY3B5KCZzaGFyZV9p bmZvLT5oMjY0X3NsaWNlX3BhcmFtcywgJmluc3QtDQo+ID4gPnZzaV9leC0+aDI2NF9zbGljZV9w YXJhbXMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzaGFyZV9pbmZvLT5oMjY0 X3NsaWNlX3BhcmFtcykpOw0KPiA+ICsgICAgICAgICAgICAgIHZkZWNfbXNnX3F1ZXVlX3FidWYo Jmluc3QtPmN0eC0+bXNnX3F1ZXVlLmNvcmVfY3R4LA0KPiA+IGxhdF9idWYpOw0KPiA+ICsgICAg ICB9DQo+ID4gKyAgICAgIG10a192ZGVjX2RlYnVnKGluc3QtPmN0eCwgImRlYyBudW06ICVkIGxh dCBjcmM6IDB4JXggMHgleA0KPiA+IDB4JXgiLCBpbnN0LT5zbGljZV9kZWNfbnVtLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICBpbnN0LT52c2lfZXgtPmRlYy5jcmNbMF0sIGluc3QtPnZzaV9l eC0NCj4gPiA+ZGVjLmNyY1sxXSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgaW5zdC0+dnNp X2V4LT5kZWMuY3JjWzJdKTsNCj4gPiArDQo+ID4gKyAgICAgIGluc3QtPnNsaWNlX2RlY19udW0r KzsNCj4gPiArICAgICAgcmV0dXJuIDA7DQo+ID4gK2Vycl9mcmVlX2ZiX291dDoNCj4gPiArICAg ICAgdmRlY19tc2dfcXVldWVfcWJ1ZigmaW5zdC0+Y3R4LT5tc2dfcXVldWUubGF0X2N0eCwgbGF0 X2J1Zik7DQo+ID4gKyAgICAgIG10a192ZGVjX2VycihpbnN0LT5jdHgsICJzbGljZSBkZWMgbnVt YmVyOiAlZCBlcnI6ICVkIiwNCj4gPiBpbnN0LT5zbGljZV9kZWNfbnVtLCBlcnIpOw0KPiA+ICsg ICAgICByZXR1cm4gZXJyOw0KPiA+ICt9DQo+ID4gKw0KPiA+IHN0YXRpYyBpbnQgdmRlY19oMjY0 X3NsaWNlX2xhdF9kZWNvZGUodm9pZCAqaF92ZGVjLCBzdHJ1Y3QNCj4gPiBtdGtfdmNvZGVjX21l bSAqYnMsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZk ZWNfZmIgKmZiLCBib29sDQo+ID4gKnJlc19jaGcpDQo+ID4gew0KPiA+IEBAIC03MDQsMTggKzk5 OCwxNyBAQCBzdGF0aWMgaW50IHZkZWNfaDI2NF9zbGljZV9sYXRfZGVjb2RlKHZvaWQNCj4gPiAq aF92ZGVjLCBzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gKmJzLA0KPiA+ICAgICAgIHJldHVybiBlcnI7 DQo+ID4gfQ0KPiA+IA0KPiA+IC1zdGF0aWMgaW50IHZkZWNfaDI2NF9zbGljZV9zaW5nbGVfZGVj b2RlKHZvaWQgKmhfdmRlYywgc3RydWN0DQo+ID4gbXRrX3Zjb2RlY19tZW0gKmJzLA0KPiA+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmRlY19mYiAqdW51 c2VkLA0KPiA+IGJvb2wgKnJlc19jaGcpDQo+ID4gK3N0YXRpYyBpbnQgdmRlY19oMjY0X3NsaWNl X3NpbmdsZV9kZWNvZGVfZXgodm9pZCAqaF92ZGVjLCBzdHJ1Y3QNCj4gPiBtdGtfdmNvZGVjX21l bSAqYnMsDQo+IA0KPiBzL2RlY29kZV9leC9kZWNvZGVfZXh0Lw0KPiANCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZkZWNfZmIgKnVudXNlZCwN Cj4gPiBib29sICpyZXNfY2hnKQ0KPiA+IHsNCj4gPiAgICAgICBzdHJ1Y3QgdmRlY19oMjY0X3Ns aWNlX2luc3QgKmluc3QgPSBoX3ZkZWM7DQo+ID4gICAgICAgc3RydWN0IHZkZWNfdnB1X2luc3Qg KnZwdSA9ICZpbnN0LT52cHU7DQo+ID4gICAgICAgc3RydWN0IG10a192aWRlb19kZWNfYnVmICpz cmNfYnVmX2luZm8sICpkc3RfYnVmX2luZm87DQo+ID4gICAgICAgc3RydWN0IHZkZWNfZmIgKmZi Ow0KPiA+IC0gICAgICB1bnNpZ25lZCBjaGFyICpidWY7DQo+ID4gICAgICAgdW5zaWduZWQgaW50 IGRhdGFbMl0sIGk7DQo+ID4gICAgICAgdTY0IHlfZmJfZG1hLCBjX2ZiX2RtYTsNCj4gPiAgICAg ICBzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gKm1lbTsNCj4gPiAtICAgICAgaW50IGVyciwgbmFsX3N0 YXJ0X2lkeDsNCj4gPiArICAgICAgaW50IGVycjsNCj4gPiANCj4gPiAgICAgICAvKiBicyBOVUxM IG1lYW5zIGZsdXNoIGRlY29kZXIgKi8NCj4gPiAgICAgICBpZiAoIWJzKQ0KPiA+IEBAIC03MzUs NiArMTAyOCw5NiBAQCBzdGF0aWMgaW50IHZkZWNfaDI2NF9zbGljZV9zaW5nbGVfZGVjb2RlKHZv aWQNCj4gPiAqaF92ZGVjLCBzdHJ1Y3QgbXRrX3Zjb2RlY19tZW0gKmJzDQo+ID4gICAgICAgbXRr X3ZkZWNfZGVidWcoaW5zdC0+Y3R4LCAiW2gyNjQtZGVjXSBbJWRdIHlfZG1hPSVsbHgNCj4gPiBj X2RtYT0lbGx4IiwNCj4gPiAgICAgICAgICAgICAgICAgICAgICBpbnN0LT5jdHgtPmRlY29kZWRf ZnJhbWVfY250LCB5X2ZiX2RtYSwNCj4gPiBjX2ZiX2RtYSk7DQo+ID4gDQo+ID4gKyAgICAgIGlu c3QtPnZzaV9jdHhfZXguYnMuZG1hX2FkZHIgPSAodTY0KWJzLT5kbWFfYWRkcjsNCj4gPiArICAg ICAgaW5zdC0+dnNpX2N0eF9leC5icy5zaXplID0gYnMtPnNpemU7DQo+ID4gKyAgICAgIGluc3Qt PnZzaV9jdHhfZXguZmIueS5kbWFfYWRkciA9IHlfZmJfZG1hOw0KPiA+ICsgICAgICBpbnN0LT52 c2lfY3R4X2V4LmZiLmMuZG1hX2FkZHIgPSBjX2ZiX2RtYTsNCj4gPiArICAgICAgaW5zdC0+dnNp X2N0eF9leC5kZWMudmRlY19mYl92YSA9ICh1NjQpKHVpbnRwdHJfdClmYjsNCj4gPiArDQo+ID4g KyAgICAgIHY0bDJfbTJtX2J1Zl9jb3B5X21ldGFkYXRhKCZzcmNfYnVmX2luZm8tPm0ybV9idWYu dmIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkc3RfYnVmX2luZm8t Pm0ybV9idWYudmIsIHRydWUpOw0KPiA+ICsgICAgICBlcnIgPSBnZXRfdmRlY19zaWdfZGVjb2Rl X3BhcmFtZXRlcnMoaW5zdCk7DQo+ID4gKyAgICAgIGlmIChlcnIpDQo+ID4gKyAgICAgICAgICAg ICAgZ290byBlcnJfZnJlZV9mYl9vdXQ7DQo+ID4gKw0KPiA+ICsgICAgICBtZW1jcHkoJmluc3Qt PnZzaV9jdHhfZXguaDI2NF9zbGljZV9wYXJhbXMsICZpbnN0LQ0KPiA+ID5oMjY0X3NsaWNlX3Bh cmFtLA0KPiA+ICsgICAgICAgICAgICAgc2l6ZW9mKGluc3QtPnZzaV9jdHhfZXguaDI2NF9zbGlj ZV9wYXJhbXMpKTsNCj4gPiArDQo+ID4gKyAgICAgICpyZXNfY2hnID0gaW5zdC0+cmVzb2x1dGlv bl9jaGFuZ2VkOw0KPiA+ICsgICAgICBpZiAoaW5zdC0+cmVzb2x1dGlvbl9jaGFuZ2VkKSB7DQo+ ID4gKyAgICAgICAgICAgICAgbXRrX3ZkZWNfZGVidWcoaW5zdC0+Y3R4LCAiLSByZXNvbHV0aW9u IGNoYW5nZWQgLSIpOw0KPiA+ICsgICAgICAgICAgICAgIGlmIChpbnN0LT5yZWFsbG9jX212X2J1 Zikgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgZXJyID0gdmRlY19oMjY0X3NsaWNlX2Fs bG9jX212X2J1ZihpbnN0LA0KPiA+ICZpbnN0LT5jdHgtPnBpY2luZm8pOw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgaW5zdC0+cmVhbGxvY19tdl9idWYgPSBmYWxzZTsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgIGlmIChlcnIpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdvdG8gZXJyX2ZyZWVfZmJfb3V0Ow0KPiA+ICsgICAgICAgICAgICAgIH0NCj4gPiArICAg ICAgICAgICAgICBpbnN0LT5yZXNvbHV0aW9uX2NoYW5nZWQgPSBmYWxzZTsNCj4gPiArDQo+ID4g KyAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IEgyNjRfTUFYX01WX05VTTsgaSsrKSB7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICBtZW0gPSAmaW5zdC0+bXZfYnVmW2ldOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgaW5zdC0+dnNpX2N0eF9leC5tdl9idWZfZG1hW2ldLmRtYV9h ZGRyID0NCj4gPiBtZW0tPmRtYV9hZGRyOw0KPiA+ICsgICAgICAgICAgICAgIH0NCj4gPiArICAg ICAgfQ0KPiA+ICsNCj4gPiArICAgICAgbWVtY3B5KGluc3QtPnZwdS52c2ksICZpbnN0LT52c2lf Y3R4X2V4LCBzaXplb2YoaW5zdC0NCj4gPiA+dnNpX2N0eF9leCkpOw0KPiA+ICsgICAgICBlcnIg PSB2cHVfZGVjX3N0YXJ0KHZwdSwgZGF0YSwgMik7DQo+ID4gKyAgICAgIGlmIChlcnIpDQo+ID4g KyAgICAgICAgICAgICAgZ290byBlcnJfZnJlZV9mYl9vdXQ7DQo+ID4gKw0KPiA+ICsgICAgICAv KiB3YWl0IGRlY29kZXIgZG9uZSBpbnRlcnJ1cHQgKi8NCj4gPiArICAgICAgZXJyID0gbXRrX3Zj b2RlY193YWl0X2Zvcl9kb25lX2N0eChpbnN0LT5jdHgsDQo+ID4gTVRLX0lOU1RfSVJRX1JFQ0VJ VkVELA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdBSVRf SU5UUl9USU1FT1VUX01TLA0KPiA+IE1US19WREVDX0NPUkUpOw0KPiA+ICsgICAgICBpZiAoZXJy KQ0KPiA+ICsgICAgICAgICAgICAgIG10a192ZGVjX2VycihpbnN0LT5jdHgsICJkZWNvZGUgdGlt ZW91dDogcGljXyVkIiwNCj4gPiBpbnN0LT5jdHgtPmRlY29kZWRfZnJhbWVfY250KTsNCj4gPiAr DQo+ID4gKyAgICAgIGluc3QtPnZzaV9leC0+ZGVjLnRpbWVvdXQgPSAhIWVycjsNCj4gPiArICAg ICAgZXJyID0gdnB1X2RlY19lbmQodnB1KTsNCj4gPiArICAgICAgaWYgKGVycikNCj4gPiArICAg ICAgICAgICAgICBnb3RvIGVycl9mcmVlX2ZiX291dDsNCj4gPiArDQo+ID4gKyAgICAgIG1lbWNw eSgmaW5zdC0+dnNpX2N0eF9leCwgaW5zdC0+dnB1LnZzaSwgc2l6ZW9mKGluc3QtDQo+ID4gPnZz aV9jdHhfZXgpKTsNCj4gPiArICAgICAgbXRrX3ZkZWNfZGVidWcoaW5zdC0+Y3R4LCAicGljWyVk XSBjcmM6IDB4JXggMHgleCAweCV4IDB4JXgNCj4gPiAweCV4IDB4JXggMHgleCAweCV4IiwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgaW5zdC0+Y3R4LT5kZWNvZGVkX2ZyYW1lX2NudCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgaW5zdC0+dnNpX2N0eF9leC5kZWMuY3JjWzBdLCBpbnN0 LQ0KPiA+ID52c2lfY3R4X2V4LmRlYy5jcmNbMV0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg IGluc3QtPnZzaV9jdHhfZXguZGVjLmNyY1syXSwgaW5zdC0NCj4gPiA+dnNpX2N0eF9leC5kZWMu Y3JjWzNdLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpbnN0LT52c2lfY3R4X2V4LmRlYy5j cmNbNF0sIGluc3QtDQo+ID4gPnZzaV9jdHhfZXguZGVjLmNyY1s1XSwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgaW5zdC0+dnNpX2N0eF9leC5kZWMuY3JjWzZdLCBpbnN0LQ0KPiA+ID52c2lf Y3R4X2V4LmRlYy5jcmNbN10pOw0KPiA+ICsNCj4gPiArICAgICAgaW5zdC0+Y3R4LT5kZWNvZGVk X2ZyYW1lX2NudCsrOw0KPiA+ICsgICAgICByZXR1cm4gMDsNCj4gPiArDQo+ID4gK2Vycl9mcmVl X2ZiX291dDoNCj4gPiArICAgICAgbXRrX3ZkZWNfZXJyKGluc3QtPmN0eCwgImRlYyBmcmFtZSBu dW1iZXI6ICVkIGVycjogJWQiLA0KPiA+IGluc3QtPmN0eC0+ZGVjb2RlZF9mcmFtZV9jbnQsIGVy cik7DQo+ID4gKyAgICAgIHJldHVybiBlcnI7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgdmRlY19oMjY0X3NsaWNlX3NpbmdsZV9kZWNvZGUodm9pZCAqaF92ZGVjLCBzdHJ1Y3QNCj4g PiBtdGtfdmNvZGVjX21lbSAqYnMsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCB2ZGVjX2ZiICp1bnVzZWQsDQo+ID4gYm9vbCAqcmVzX2NoZykNCj4g PiArew0KPiA+ICsgICAgICBzdHJ1Y3QgdmRlY19oMjY0X3NsaWNlX2luc3QgKmluc3QgPSBoX3Zk ZWM7DQo+ID4gKyAgICAgIHN0cnVjdCB2ZGVjX3ZwdV9pbnN0ICp2cHUgPSAmaW5zdC0+dnB1Ow0K PiA+ICsgICAgICBzdHJ1Y3QgbXRrX3ZpZGVvX2RlY19idWYgKnNyY19idWZfaW5mbywgKmRzdF9i dWZfaW5mbzsNCj4gPiArICAgICAgc3RydWN0IHZkZWNfZmIgKmZiOw0KPiA+ICsgICAgICB1bnNp Z25lZCBjaGFyICpidWY7DQo+ID4gKyAgICAgIHVuc2lnbmVkIGludCBkYXRhWzJdLCBpOw0KPiA+ ICsgICAgICB1NjQgeV9mYl9kbWEsIGNfZmJfZG1hOw0KPiA+ICsgICAgICBzdHJ1Y3QgbXRrX3Zj b2RlY19tZW0gKm1lbTsNCj4gPiArICAgICAgaW50IGVyciwgbmFsX3N0YXJ0X2lkeDsNCj4gPiAr DQo+ID4gKyAgICAgIC8qIGJzIE5VTEwgbWVhbnMgZmx1c2ggZGVjb2RlciAqLw0KPiA+ICsgICAg ICBpZiAoIWJzKQ0KPiA+ICsgICAgICAgICAgICAgIHJldHVybiB2cHVfZGVjX3Jlc2V0KHZwdSk7 DQo+ID4gKw0KPiA+ICsgICAgICBmYiA9IGluc3QtPmN0eC0+ZGV2LT52ZGVjX3BkYXRhLT5nZXRf Y2FwX2J1ZmZlcihpbnN0LT5jdHgpOw0KPiA+ICsgICAgICBzcmNfYnVmX2luZm8gPSBjb250YWlu ZXJfb2YoYnMsIHN0cnVjdCBtdGtfdmlkZW9fZGVjX2J1ZiwNCj4gPiBic19idWZmZXIpOw0KPiA+ ICsgICAgICBkc3RfYnVmX2luZm8gPSBjb250YWluZXJfb2YoZmIsIHN0cnVjdCBtdGtfdmlkZW9f ZGVjX2J1ZiwNCj4gPiBmcmFtZV9idWZmZXIpOw0KPiA+ICsNCj4gPiArICAgICAgeV9mYl9kbWEg PSBmYiA/ICh1NjQpZmItPmJhc2VfeS5kbWFfYWRkciA6IDA7DQo+ID4gKyAgICAgIGNfZmJfZG1h ID0gZmIgPyAodTY0KWZiLT5iYXNlX2MuZG1hX2FkZHIgOiAwOw0KPiA+ICsgICAgICBtdGtfdmRl Y19kZWJ1ZyhpbnN0LT5jdHgsICJbaDI2NC1kZWNdIFslZF0geV9kbWE9JWxseA0KPiA+IGNfZG1h PSVsbHgiLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBpbnN0LT5jdHgtPmRlY29kZWRfZnJh bWVfY250LCB5X2ZiX2RtYSwNCj4gPiBjX2ZiX2RtYSk7DQo+ID4gKw0KPiA+ICAgICAgIGluc3Qt PnZzaV9jdHguZGVjLmJzX2J1Zl9hZGRyID0gKHU2NClicy0+ZG1hX2FkZHI7DQo+ID4gICAgICAg aW5zdC0+dnNpX2N0eC5kZWMuYnNfYnVmX3NpemUgPSBicy0+c2l6ZTsNCj4gPiAgICAgICBpbnN0 LT52c2lfY3R4LmRlYy55X2ZiX2RtYSA9IHlfZmJfZG1hOw0KPiA+IEBAIC04MDcsMjEgKzExOTAs OTUgQEAgc3RhdGljIGludA0KPiA+IHZkZWNfaDI2NF9zbGljZV9zaW5nbGVfZGVjb2RlKHZvaWQg KmhfdmRlYywgc3RydWN0IG10a192Y29kZWNfbWVtDQo+ID4gKmJzDQo+ID4gICAgICAgcmV0dXJu IGVycjsNCj4gPiB9DQo+ID4gDQo+ID4gK3N0YXRpYyBpbnQgdmRlY19oMjY0X3NsaWNlX2luaXQo c3RydWN0IG10a192Y29kZWNfZGVjX2N0eCAqY3R4KQ0KPiA+ICt7DQo+ID4gKyAgICAgIHN0cnVj dCB2ZGVjX2gyNjRfc2xpY2VfaW5zdCAqaW5zdDsNCj4gPiArICAgICAgaW50IGVyciwgdnNpX3Np emU7DQo+ID4gKyAgICAgIHVuc2lnbmVkIGNoYXIgKnRlbXA7DQo+ID4gKw0KPiA+ICsgICAgICBp bnN0ID0ga3phbGxvYyhzaXplb2YoKmluc3QpLCBHRlBfS0VSTkVMKTsNCj4gPiArICAgICAgaWYg KCFpbnN0KQ0KPiA+ICsgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOw0KPiA+ICsNCj4gPiAr ICAgICAgaW5zdC0+Y3R4ID0gY3R4Ow0KPiA+ICsNCj4gPiArICAgICAgaW5zdC0+dnB1LmlkID0g U0NQX0lQSV9WREVDX0xBVDsNCj4gPiArICAgICAgaW5zdC0+dnB1LmNvcmVfaWQgPSBTQ1BfSVBJ X1ZERUNfQ09SRTsNCj4gPiArICAgICAgaW5zdC0+dnB1LmN0eCA9IGN0eDsNCj4gPiArICAgICAg aW5zdC0+dnB1LmNvZGVjX3R5cGUgPSBjdHgtPmN1cnJlbnRfY29kZWM7DQo+ID4gKyAgICAgIGlu c3QtPnZwdS5jYXB0dXJlX3R5cGUgPSBjdHgtPmNhcHR1cmVfZm91cmNjOw0KPiA+ICsNCj4gPiAr ICAgICAgZXJyID0gdnB1X2RlY19pbml0KCZpbnN0LT52cHUpOw0KPiA+ICsgICAgICBpZiAoZXJy KSB7DQo+ID4gKyAgICAgICAgICAgICAgbXRrX3ZkZWNfZXJyKGN0eCwgInZkZWNfaDI2NCBpbml0 IGVycj0lZCIsIGVycik7DQo+ID4gKyAgICAgICAgICAgICAgZ290byBlcnJvcl9mcmVlX2luc3Q7 DQo+ID4gKyAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgIGlmIChJU19WREVDX1NVUFBPUlRfRVgo Y3R4LT5kZXYtPmRlY19jYXBhYmlsaXR5KSkgew0KPiANCj4gcy9TVVBQT1JUX0VYL1NVUFBPUlRf RVhULw0KPiANCj4gc2FtZSB0cmVhdG1lbnQgZm9yIHRoZSBvdGhlciB2YXJpYWJsZXMgYmVsb3cg ZW5kaW5nIHdpdGggZXgNCj4gDQo+ID4gKyAgICAgICAgICAgICAgdnNpX3NpemUgPSBzaXplb2Yo c3RydWN0IHZkZWNfaDI2NF9zbGljZV92c2lfZXgpOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAg ICB2c2lfc2l6ZSA9IHJvdW5kX3VwKHZzaV9zaXplLA0KPiA+IFZDT0RFQ19ERUNfQUxJR05FRF82 NCk7DQo+ID4gKyAgICAgICAgICAgICAgaW5zdC0+dnNpX2V4ID0gaW5zdC0+dnB1LnZzaTsNCj4g PiArICAgICAgICAgICAgICB0ZW1wID0gKHVuc2lnbmVkIGNoYXIgKilpbnN0LT52c2lfZXg7DQo+ ID4gKyAgICAgICAgICAgICAgaW5zdC0+dnNpX2NvcmVfZXggPSAoc3RydWN0IHZkZWNfaDI2NF9z bGljZV92c2lfZXgNCj4gPiAqKSh0ZW1wICsgdnNpX3NpemUpOw0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgICBpZiAoaW5zdC0+Y3R4LT5kZXYtPnZkZWNfcGRhdGEtPmh3X2FyY2ggPT0NCj4gPiBN VEtfVkRFQ19QVVJFX1NJTkdMRV9DT1JFKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgaW5z dC0+ZGVjb2RlID0NCj4gPiB2ZGVjX2gyNjRfc2xpY2Vfc2luZ2xlX2RlY29kZV9leDsNCj4gPiAr ICAgICAgICAgICAgICBlbHNlDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICBpbnN0LT5kZWNv ZGUgPQ0KPiA+IHZkZWNfaDI2NF9zbGljZV9sYXRfZGVjb2RlX2V4Ow0KPiA+ICsgICAgICB9IGVs c2Ugew0KPiA+ICsgICAgICAgICAgICAgIHZzaV9zaXplID0gc2l6ZW9mKHN0cnVjdCB2ZGVjX2gy NjRfc2xpY2VfdnNpKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgdnNpX3NpemUgPSByb3Vu ZF91cCh2c2lfc2l6ZSwNCj4gPiBWQ09ERUNfREVDX0FMSUdORURfNjQpOw0KPiA+ICsgICAgICAg ICAgICAgIGluc3QtPnZzaSA9IGluc3QtPnZwdS52c2k7DQo+ID4gKyAgICAgICAgICAgICAgdGVt cCA9ICh1bnNpZ25lZCBjaGFyICopaW5zdC0+dnNpOw0KPiA+ICsgICAgICAgICAgICAgIGluc3Qt PnZzaV9jb3JlID0gKHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2VfdnNpICopKHRlbXANCj4gPiArIHZz aV9zaXplKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgaWYgKGluc3QtPmN0eC0+ZGV2LT52 ZGVjX3BkYXRhLT5od19hcmNoID09DQo+ID4gTVRLX1ZERUNfUFVSRV9TSU5HTEVfQ09SRSkNCj4g PiArICAgICAgICAgICAgICAgICAgICAgIGluc3QtPmRlY29kZSA9DQo+ID4gdmRlY19oMjY0X3Ns aWNlX3NpbmdsZV9kZWNvZGU7DQo+ID4gKyAgICAgICAgICAgICAgZWxzZQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgaW5zdC0+ZGVjb2RlID0gdmRlY19oMjY0X3NsaWNlX2xhdF9kZWNvZGU7 DQo+ID4gKyAgICAgIH0NCj4gDQo+IFRoaXMgbG9va3MgYWxsIHNvIGV4dHJlbWVseSBzaW1pbGFy IHRvIG1lIC4uLiBQbGVhc2UgaGVscCBtZSBvdXQNCj4gaGVyZSwNCj4gd2h5IGRvIHdlIG5lZWQg YSB2c2lfY29yZSBhbmQgYSB2c2lfY29yZV9leHQgPyBZb3UgY291bGQgZWFzaWx5DQo+IGFzc2ln bg0KPiB0aGUgc2FtZSB2YWx1ZSB0aGF0IHlvdSBhc3NpZ24gdG8gdnNpX2NvcmVfZXh0IHRvIHZz aV9jb3JlIGluIGNhc2UNCj4gdGhlDQo+IGFyY2hpdGVjdHVyZSBzdXBwb3J0cyB0aGUgZXh0ZW5k ZWQgVlNJLiBTbyB3aHkgZG8geW91IG5lZWQgdG8gaGF2ZSBhDQo+IHRoZQ0KPiB2c2kgc3RydWN0 cyBiZXNpZGVzIHRoZSB2c2lfZXh0IHN0cnVjdHM/DQp2c2kgZXh0ZW5kIGlzIGFkZGVkIG1hbnkg cGFyYW1ldGVycyB0byBzdXBwb3J0IHNvbWUgc3BlY2lhbCBmZWF0dXJlLA0KdnNpX2NvcmUgYW5k IHZzaV9jb3JlX2V4dCBhcmUgYmlnIGRpZmZlcmVudC4NCj4gDQo+ID4gKyAgICAgIGluc3QtPnJl c29sdXRpb25fY2hhbmdlZCA9IHRydWU7DQo+ID4gKyAgICAgIGluc3QtPnJlYWxsb2NfbXZfYnVm ID0gdHJ1ZTsNCj4gPiArDQo+ID4gKyAgICAgIG10a192ZGVjX2RlYnVnKGN0eCwgImxhdCBzdHJ1 Y3Qgc2l6ZSA9ICVkLCVkLCVkLCVkIHZzaToNCj4gPiAlZFxuIiwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgKGludClzaXplb2Yoc3RydWN0IG10a19oMjY0X3Nwc19wYXJhbSksDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKHN0cnVjdCBtdGtfaDI2NF9wcHNfcGFyYW0p LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihzdHJ1Y3QNCj4gPiB2ZGVj X2gyNjRfc2xpY2VfbGF0X2RlY19wYXJhbSksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIChp bnQpc2l6ZW9mKHN0cnVjdCBtdGtfaDI2NF9kcGJfaW5mbyksDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgIHZzaV9zaXplKTsNCj4gPiArICAgICAgbXRrX3ZkZWNfZGVidWcoY3R4LCAibGF0IEgy NjQgaW5zdGFuY2UgPj4gJXAsIGNvZGVjX3R5cGUgPQ0KPiA+IDB4JXgiLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICBpbnN0LCBpbnN0LT52cHUuY29kZWNfdHlwZSk7DQo+ID4gKw0KPiA+ICsg ICAgICBjdHgtPmRydl9oYW5kbGUgPSBpbnN0Ow0KPiA+ICsgICAgICByZXR1cm4gMDsNCj4gPiAr DQo+ID4gK2Vycm9yX2ZyZWVfaW5zdDoNCj4gPiArICAgICAga2ZyZWUoaW5zdCk7DQo+ID4gKyAg ICAgIHJldHVybiBlcnI7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHZkZWNfaDI2 NF9zbGljZV9kZWluaXQodm9pZCAqaF92ZGVjKQ0KPiA+ICt7DQo+ID4gKyAgICAgIHN0cnVjdCB2 ZGVjX2gyNjRfc2xpY2VfaW5zdCAqaW5zdCA9IGhfdmRlYzsNCj4gPiArDQo+ID4gKyAgICAgIHZw dV9kZWNfZGVpbml0KCZpbnN0LT52cHUpOw0KPiA+ICsgICAgICB2ZGVjX2gyNjRfc2xpY2VfZnJl ZV9tdl9idWYoaW5zdCk7DQo+ID4gKyAgICAgIHZkZWNfbXNnX3F1ZXVlX2RlaW5pdCgmaW5zdC0+ Y3R4LT5tc2dfcXVldWUsIGluc3QtPmN0eCk7DQo+ID4gKw0KPiA+ICsgICAgICBrZnJlZShpbnN0 KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiBzdGF0aWMgaW50IHZkZWNfaDI2NF9zbGljZV9kZWNvZGUo dm9pZCAqaF92ZGVjLCBzdHJ1Y3QNCj4gPiBtdGtfdmNvZGVjX21lbSAqYnMsDQo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmRlY19mYiAqdW51c2VkLCBib29sDQo+ ID4gKnJlc19jaGcpDQo+ID4gew0KPiA+ICAgICAgIHN0cnVjdCB2ZGVjX2gyNjRfc2xpY2VfaW5z dCAqaW5zdCA9IGhfdmRlYzsNCj4gPiAtICAgICAgaW50IHJldDsNCj4gPiANCj4gPiAgICAgICBp ZiAoIWhfdmRlYykNCj4gPiAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+IA0KPiA+ IC0gICAgICBpZiAoaW5zdC0+Y3R4LT5kZXYtPnZkZWNfcGRhdGEtPmh3X2FyY2ggPT0NCj4gPiBN VEtfVkRFQ19QVVJFX1NJTkdMRV9DT1JFKQ0KPiA+IC0gICAgICAgICAgICAgIHJldCA9IHZkZWNf aDI2NF9zbGljZV9zaW5nbGVfZGVjb2RlKGhfdmRlYywgYnMsDQo+ID4gdW51c2VkLCByZXNfY2hn KTsNCj4gPiAtICAgICAgZWxzZQ0KPiA+IC0gICAgICAgICAgICAgIHJldCA9IHZkZWNfaDI2NF9z bGljZV9sYXRfZGVjb2RlKGhfdmRlYywgYnMsIHVudXNlZCwNCj4gPiByZXNfY2hnKTsNCj4gPiAt DQo+ID4gLSAgICAgIHJldHVybiByZXQ7DQo+ID4gKyAgICAgIHJldHVybiBpbnN0LT5kZWNvZGUo aF92ZGVjLCBicywgdW51c2VkLCByZXNfY2hnKTsNCj4gDQo+IE9uZSByZWFzb24gbW9yZSB0byB0 cnkgYXZvaWRpbmcgdGhlIHNwbGl0IGludG8gc2VwYXJhdGUgZnVuY3Rpb25zIGZvcg0KPiBleHRl bmRlZCBhbmQgbm9uLWV4dGVuZGVkLCBtb3JlIGNhbGxiYWNrcyBtYWtlIHRoZSBjb2RlIGp1c3Qg aGFyZGVyDQo+IGFuZA0KPiBoYXJkZXIgdG8gbmF2aWdhdGUgYW5kIHVuZGVyc3RhbmQuDQo+IA0K SWYgdGhlIGRyaXZlciBub3QgYWRkIG9uZSBjYWxsYmFjayBmb3IgZWFjaCBhcmNoaXRlY3R1cmUs IG5lZWQgdG8gdXNpbmcNCm1hbnkgY29uZGl0aW9uIHRvIHNlcGFyYXRlIGhlcmUsIGxvb2tzIG11 Y2ggbW9yZSBjb21wbGV4Lg0KDQpCZXN0IFJlZ2FyZHMsDQpZdW5mZWkgRG9uZw0KPiA+IH0NCj4g PiANCj4gPiBzdGF0aWMgaW50IHZkZWNfaDI2NF9zbGljZV9nZXRfcGFyYW0odm9pZCAqaF92ZGVj LCBlbnVtDQo+ID4gdmRlY19nZXRfcGFyYW1fdHlwZSB0eXBlLA0KPiA+IC0tDQo+ID4gMi40Ni4w DQo+ID4gDQo+ID4gDQo+IA0KPiBSZWdhcmRzLA0KPiBTZWJhc3RpYW4gRnJpY2tlDQo=